Open Forex4you Account

Server รัน EA 1000 / ปี

สั่งชื้อคู่มือการโปรแรกม MQL4

Author Topic: ช่วยแก้เรื่องจุดหน่อยครับ  (Read 13870 times)

pal

  • Newbie
  • *
  • Posts: 37
ช่วยแก้เรื่องจุดหน่อยครับ
« on: สิงหาคม 23, 2010, 09:50:14 am »
คือผมต้องการลบจุดออกจากชื่อไฟล์

string ls_96 = "n" + Symbol();
   int li_104 = Period() * gi_140;
   int l_digits_108 = Digits;
   l_file_0 = FileOpenHistory(ls_96 + li_104 + ".hst", FILE_BIN|FILE_WRITE);

ปกติใน demo จะไม่มีปัญหา เพราะ file ที่ได้คือ n+symbol  เช่น nEURUSD1.hst
แต่ Real fx open ดันเพิ่มจุดขึ้นมาอีกให้ปวดหัว เป็น nEURUSD.1.hst

ทำยังไงจุดหน้า 1 ถึงจะหายไปครับ เพราะจะเอาไปใช้กับ โปรแกรมอื่น ต้องใช้แบบนี้ nEURUSD1.hst เท่านั้น
ถ้าไปแก้ตรงอื่นจะยากเพราะต้องไปแก้ที่ Dll เลย

รบกวนเซียนหน่อยครับ  ;D

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ช่วยแก้เรื่องจุดหน่อยครับ
« Reply #1 on: สิงหาคม 23, 2010, 12:56:39 pm »
string ls_96 = "n" + Symbol();
string substr=StringSubstr(ls_96 , 0, 6); int li_104 = Period() * gi_140;
   int l_digits_108 = Digits;
   l_file_0 = FileOpenHistory(substr + li_104 + ".hst", FILE_BIN|FILE_WRITE);

pal

  • Newbie
  • *
  • Posts: 37
Re: ช่วยแก้เรื่องจุดหน่อยครับ
« Reply #2 on: สิงหาคม 23, 2010, 04:10:50 pm »
ขอบคุณมากครับ
string substr=StringSubstr(ls_96 , 0, 6); ผมแก้ 6 เป็น 7แล้วได้ชื่อ file ตามที่ต้องการแล้ว = nEURUSD1.hst
โปรแกรมเปิดได้แล้ว แต่เจอปัญหาใหม่ ข้อมูลไม่ยอม update ครับ
string ls_96 = "n" + Symbol();
   string substr=StringSubstr(ls_96 , 0, 7);
   int li_104 = Period() * gi_140;
   int l_digits_108 = Digits;
   l_file_0 = FileOpenHistory(substr + li_104 + ".hst", FILE_BIN|FILE_WRITE);
   if (l_file_0 >= 0) {
      ls_88 = "(C)opyright 2003, MetaQuotes Software Corp.";
      FileWriteInteger(l_file_0, li_84, LONG_VALUE);
      FileWriteString(l_file_0, ls_88, 64);
      FileWriteString(l_file_0, ls_96, 12);
      FileWriteInteger(l_file_0, li_104, LONG_VALUE);
      FileWriteInteger(l_file_0, l_digits_108, LONG_VALUE);
      FileWriteInteger(l_file_0, 0, LONG_VALUE);
      FileWriteInteger(l_file_0, 0, LONG_VALUE);
      FileWriteArray(l_file_0, lia_112, 0, 13);
      li_24 = 60 * li_104;
      li_8 = Bars - 1;
      l_open_28 = Open[li_8];
      l_low_36 = Low[li_8];
      l_high_44 = High[li_8];
      ld_60 = Volume[li_8];
      li_12 = Time[li_8] / li_24;
      li_12 *= li_24;
      for (int li_4 = li_8 - 1; li_4 >= 0; li_4--) {
         l_time_16 = Time[li_4];
         if (li_4 == 0)
            if (RefreshRates()) li_4 = iBarShift(NULL, 0, l_time_16);
         if (l_time_16 >= li_12 + li_24 || li_4 == 0) {
            if (li_4 == 0 && l_time_16 < li_12 + li_24) {
               ld_60 += Volume[0];
               if (Low[0] < l_low_36) l_low_36 = Low[0];
               if (High[0] > l_high_44) l_high_44 = High[0];
               l_close_52 = Close[0];
            }
            li_20 = FileTell(l_file_0);
            l_volume_68 = Volume[li_4];
            FileWriteInteger(l_file_0, li_12, LONG_VALUE);
            FileWriteDouble(l_file_0, l_open_28, DOUBLE_VALUE);
            FileWriteDouble(l_file_0, l_low_36, DOUBLE_VALUE);
            FileWriteDouble(l_file_0, l_high_44, DOUBLE_VALUE);
            FileWriteDouble(l_file_0, l_close_52, DOUBLE_VALUE);
            FileWriteDouble(l_file_0, ld_60, DOUBLE_VALUE);
            FileFlush(l_file_0);
            l_count_80++;
            if (l_time_16 >= li_12 + li_24) {
               li_12 = l_time_16 / li_24;
               li_12 *= li_24;
               l_open_28 = Open[li_4];
               l_low_36 = Low[li_4];
               l_high_44 = High[li_4];
               l_close_52 = Close[li_4];
               ld_60 = l_volume_68;
            }
         } else {
            ld_60 += Volume[li_4];
            if (Low[li_4] < l_low_36) l_low_36 = Low[li_4];
            if (High[li_4] > l_high_44) l_high_44 = High[li_4];
            l_close_52 = Close[li_4];
         }
      }
      FileFlush(l_file_0);
      FileClose(l_file_0);
ผมลองแทนที่    ls_96 ด้วย substr ตรง
 FileWriteString(l_file_0, ls_96, 12);
ก็ไม่ได้ครับ
รบกวนอีกหน่อยนะครับ  ;D

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ช่วยแก้เรื่องจุดหน่อยครับ
« Reply #3 on: สิงหาคม 23, 2010, 04:38:54 pm »
ต้องแทนที่ งแทนที่    ls_96 ด้วย substr ตรง
 FileWriteString(l_file_0, ls_96, 12);
ถูกแล้วครับแต่ปัญหาคือผมไม่รู้ค่า  if (l_file_0 >= 0)  ; ง่ามาจากไหนที่ไม่เห็นเพราะเงือนไขเป็นเท็จก็ได้ครับ

pal

  • Newbie
  • *
  • Posts: 37
Re: ช่วยแก้เรื่องจุดหน่อยครับ
« Reply #4 on: สิงหาคม 23, 2010, 05:01:29 pm »
ขอบคุณครับ ตอบเร็วจัง
เอา file ไปเลยแล้วกัน
แต่ก็แปลก ผมไม่เข้าใจ ตอนที่ยังไม่ได้แก้อะไรใช้กับ demo ได้ ไม่มีปัญหา
พอแก้เรื่องชื่อ file กลับ เห็นไฟล์ แต่ไม่ update ข้อมูล เหมือนไม่ยอม refresh ข้อมูล
รบกวนอีกหน่อยนะครับ

ขอบคุณครับ  ;D

« Last Edit: สิงหาคม 23, 2010, 06:44:17 pm by pal »

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ช่วยแก้เรื่องจุดหน่อยครับ
« Reply #5 on: สิงหาคม 24, 2010, 08:32:44 pm »
ทดสอบ EA ไม่ได้ไม่มี DLL

pal

  • Newbie
  • *
  • Posts: 37
Re: ช่วยแก้เรื่องจุดหน่อยครับ
« Reply #6 on: สิงหาคม 25, 2010, 05:51:16 am »
ตัวนี้เอาไว้ feed ข้อมูลให้กับ neuroshell ครับ

ขอบคุณครับ  ;)

admin

  • Administrator
  • Hero Member
  • *****
  • Posts: 2386
Re: ช่วยแก้เรื่องจุดหน่อยครับ
« Reply #7 on: สิงหาคม 26, 2010, 02:54:26 am »
ผมแก้ตรงที่คุณ pal จะแก้มันก็ update นะครับผมใช้กราฟ 1 นาทีนั่งเฝ้าอยู่ก็ได้ไฟล์ nEURUSD1.hst ออกมานะครับขนาดไฟล์จะเปลี่ยนทุกๆๆ 1 นาทีลองเอาไปดูครับถ้าทำงานจะ print >>  ที่ช่อง expert ครับ

pal

  • Newbie
  • *
  • Posts: 37
Re: ช่วยแก้เรื่องจุดหน่อยครับ
« Reply #8 on: สิงหาคม 26, 2010, 06:31:51 am »
 คือใน Neuroshell กราฟไม่เดินเลยครับ ค้างอยู่แบบเดิม
ผมไม่แน่ใจเหมือนกันว่าเกิดอะไร พอใช้แบบเดิมใน demo กลับวิ่งปกติ
ใน Real ของ fxopen กลับ ไม่ได้ สงสัย ผมลองเปลี่ยน broke จะง่ายกว่ามั้งครับ

ยังไงก็ขอบคุณมากครับ  ;D