mt4R สำหรับ MQL4 ใหม่

0
(0)
ชื่อ:
mt4R สำหรับ MQL4 ใหม่
ผู้เขียน: มิคลี่ (2014.02.06 15:31)
คะแนน: 10
ดาวน์โหลดแล้ว: 324
ดาวน์โหลด:
mt4R for new MQL4 1
mt4R-1.4.0-SNAPSHOT-b7.zip (152.0 Kb)
mt4R for new MQL4 2 00_README.txt (303 ไบต์)

คำอธิบาย:

เอ็มทีโฟร์อาร์, สร้างสรรค์โดย Bernd Kreuss และจัดจำหน่าย ที่นี่, ทำงานไม่ถูกต้องกับ MQL4 ใหม่.

ฉันแก้ไข dll และไฟล์รวมเพื่อรองรับ MQL4 ใหม่.

รุ่นล่าสุด:

คุณสามารถรับเวอร์ชันล่าสุดได้จาก GitHub เผยแพร่. (เนื่องจากการอัพเดตไทม์แลคโดยการกลั่นกรอง, ไบนารีที่แนบมาอาจเก่ากว่ารุ่นล่าสุดที่ GitHub)

Changelog อยู่ที่ CHANGES.md และ GitHub มุ่งมั่น.

อัพเดทประวัติ:

กุมภาพันธ์ 10, 2014: v1.4.0-b7: เพิ่มตัวอย่างผู้เชี่ยวชาญ: Arb-O-Mat และ Trend-O-Mat(GitHub#5).

กุมภาพันธ์ 9, 2014: v1.4.0-b6: แก้ไขข้อบกพร่องของ RGetBool/RGetInteger(Github#4).

กุมภาพันธ์ 9, 2014: v1.4.0-b5: แก้ไขข้อบกพร่องของ RAssignString(Github#3).

กุมภาพันธ์ 9, 2014: v1.4.0-b4: แก้ไขข้อบกพร่องของ RAssignStringVector(GitHub#1), และอัปเดตหมายเลขเวอร์ชันรองในฮาร์ดโค้ด DLL.

กุมภาพันธ์ 7, 2014: v1.4.0-b1: เปลี่ยนการเข้ารหัสไฟล์ MQL เป็น UTF-16

กุมภาพันธ์ 6, 2014: v1.4.0-b0: ภาพรวมเริ่มต้น

แหล่งที่มา:

ซอร์สโค้ดถูกแจกจ่ายที่ a สาขาของที่เก็บ GitHub ของฉัน.

บันทึก:

  • การทดสอบไม่เพียงพอ
  • ฉันแค่ยืนยันว่ามันทำงานได้ดีกับ R-3.0.2 บน Windows 2012 R2.
  • ประสิทธิภาพอาจแย่ลงเล็กน้อย, เนื่องจากสตริงกว้างในอาร์กิวเมนต์จะถูกแปลงเป็นสตริง ansi เสมอ.
11 ความคิดเห็น: 1 2 หากต้องการโพสต์ความคิดเห็นใหม่, โปรด เข้าสู่ระบบ หรือ ลงทะเบียน

ขอบคุณสำหรับการทำงานที่ดีของคุณ!

อย่างไรก็ตาม, แผนภูมิ R ที่สร้างโดย Arbomat ดูเหมือนจะมาและไปในเสี้ยววินาทีในขณะที่โหลด EA. อะไรเป็นเหตุผล?

แผนภูมิ R ที่สร้างโดย Trendomat นั้นดูดี. I'm using the same PC and the same MT4.

อีกด้วย, บางครั้งข้อความนี้ปรากฏในแท็บผู้เชี่ยวชาญ:

mt4R for new MQL4 3

13.02.2014 23:41 เคล็บ

ที.เจ.แมคโคลวิน:
งานที่ยอดเยี่ยม! ขอบคุณสำหรับการแก้ไขทันที🙂 !!!

อีกสองสิ่ง:

  • RGetInteger: การแสดงออก: PChar ควรเป็น PWideChar และผลลัพธ์ต่อมา := TRคอนโซล(ฮันเดล).รับจำนวนเต็ม(WideStringToString(การแสดงออก, CP_ACP))
  • RGetBool: เช่นเดียวกับด้านบน 🙂

อีกครั้ง, ขอบคุณมาก !

Great thank you and I'm sorry about terrible porting quality...

I've fixed RGetBoo/RGetInteger bug at v1.4.0-SNAPSHOT-b6.

 

แก้ไข: คราวหน้าฉันจะเปิดปัญหาที่ repo ของคุณ ถ้าคุณไม่ว่าอะไร. ฉันไม่ต้องการสแปมส่วนความคิดเห็นที่นี่ ;)

 

I'll welcome for iissue from you if you feel to report something about this!

08.02.2014 21:08 มิคลี่

งานที่ยอดเยี่ยม! ขอบคุณสำหรับการแก้ไขทันที🙂 !!!

อีกสองสิ่ง:

  • RGetInteger: การแสดงออก: PChar ควรเป็น PWideChar และผลลัพธ์ต่อมา := TRคอนโซล(ฮันเดล).รับจำนวนเต็ม(WideStringToString(การแสดงออก, CP_ACP))
  • RGetBool: เช่นเดียวกับด้านบน 🙂

อีกครั้ง, ขอบคุณมาก !

แก้ไข: คราวหน้าฉันจะเปิดปัญหาที่ repo ของคุณ ถ้าคุณไม่ว่าอะไร. I don't want to spam the comments section here 😉

ที.เจ.แมคโคลวิน:
ขอบคุณสำหรับการแก้ไข! ใช้งานได้ดี! จำเป็นต้องมีการเปลี่ยนแปลงเล็กน้อยเพิ่มเติม:
// assign string to variable given by name
procedure RAssignString(ฮันเดล: ลองอินท์; ตัวแปร: พีไวด์ชาร์; AVมูลค่า: พชร (ควรเป็น PWideChar ด้วย?)); stdcall;
begin
  if isValid(ฮันเดล) then
    TRConsole(ฮันเดล).กำหนดสตริง(WideStringToString(ตัวแปร, CP_ACP), WideStringToString(AVมูลค่า, CP_ACP));
จบ;

ขอบคุณสำหรับรายงานข้อผิดพลาด, I've fixed at v1.4.0-SNAPSHOT-b5.

โปรดอัปเดต dll และไฟล์รวม, เนื่องจากหมายเลขเวอร์ชันย่อยเปลี่ยนไปจากก่อนหน้า b3.

08.02.2014 20:09 มิคลี่

ที.เจ.แมคโคลวิน:
มันล้มเหลวเมื่อพยายามดำเนินการ
รฟ("ครั้ง",ครั้ง);

ขอบคุณสำหรับรายงานข้อบกพร่องของคุณ!

จากการสอบสวน, การประมวลผลอาร์เรย์ใน RAssingStringVector ไม่ถูกพอร์ตไปยัง MQL4 ใหม่อย่างถูกต้อง.

I've updated the DLL, ดังนั้นโปรดรับเวอร์ชันล่าสุดจาก GitHub.

ในเวอร์ชั่นนี้, หมายเลขเวอร์ชันรอง DLL-hardcoded อัปเดตเป็น 4, ดังนั้นโปรดคัดลอก MQL4/Include/mt4R.mqh ด้วย.

08.02.2014 19:54 มิคลี่

ขอบคุณสำหรับการแก้ไข! ใช้งานได้ดี! จำเป็นต้องมีการเปลี่ยนแปลงเล็กน้อยเพิ่มเติม:

// assign string to variable given by name
procedure RAssignString(ฮันเดล: ลองอินท์; ตัวแปร: พีไวด์ชาร์; AVมูลค่า: พชร (ควรเป็น PWideChar ด้วย?)); stdcall;
begin
  if isValid(ฮันเดล) then
    TRConsole(ฮันเดล).กำหนดสตริง(WideStringToString(ตัวแปร, CP_ACP), WideStringToString(AVมูลค่า, CP_ACP));
จบ;

กำปั้นทั้งหมด: ขอบคุณมากสำหรับการพอร์ตไปยังเวอร์ชันใหม่! งานที่ยอดเยี่ยม!

อย่างไรก็ตาม, I've encountered a problem. ดูสคริปต์ง่ายๆ นี้:

//+------------------------------------------------------------------+
//|                                                  TestNewMt4R.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#ลิขสิทธิ์ทรัพย์สิน ""
#ลิงค์คุณสมบัติ      ""
#รุ่นคุณสมบัติ   "1.00"
#property strict

#include <mt4R.mqh>

#กำหนด RPATH "ง:/ไฟล์โปรแกรม/R/R-3.0.2/bin/i386/Rterm.exe --no-save"
#กำหนด RDEBUG 2

สตริงครั้ง[1000];
//+------------------------------------------------------------------+
//| ฟังก์ชันเริ่มต้นโปรแกรมสคริปต์                                    |
//+------------------------------------------------------------------+
เป็นโมฆะ OnStart()
  {
   สตาร์ทอาร์(RPATH,RDEBUG);
   สำหรับ(int i = 0; ฉัน<1000; ฉัน ++)
     {
      ครั้ง[ฉัน]=TimeToString(ไอไทม์(เครื่องหมาย(),ระยะเวลา(),ฉัน),TIME_DATE|TIME_SECONDS);
     }
   รฟ("ครั้ง",ครั้ง);
   อาร์เอ็กซ์("ก()");
   สต็อปอาร์();  
  }
//+------------------------------------------------------------------+

มันล้มเหลวเมื่อพยายามดำเนินการ

รฟ("ครั้ง",ครั้ง);

And I don't know why. ฉันคิดว่าปัญหาอาจเป็นปัญหาที่คุณพูดถึงเกี่ยวกับสตริง. อย่างไรก็ตาม, ฉันไม่สามารถแก้ไขได้ด้วยตัวเอง ดังนั้นความช่วยเหลือจึงเป็นที่ชื่นชมอย่างมาก.

ขอบคุณ!

แก้ไข:

ฉันตรวจสอบ DebugView และดูเหมือนว่าการจัดการสตริงทั้งหมดจะใช้งานไม่ได้, เช่น.,

เป็นโมฆะ OnStart()
  {
   สตาร์ทอาร์(RPATH,RDEBUG);
   การทดสอบสตริง = "นี่คือการทดสอบการคัดลอกสตริง";

   อาร์เอส("rString", ทดสอบสตริง);

   อาร์เอ็กซ์("ก()");
   สต็อปอาร์();
  }

ผลลัพธ์ใน:

Wrong copy of string

ขอบคุณสำหรับคำอธิบาย, และการอัพเดท!
07.02.2014 08:57 FXEZ

FXEZ:
คุณสามารถระบุการเปลี่ยนแปลงที่จำเป็นในการอัปเดต dll? I wasn't aware that dlls need to be changed to fit MQL5's format. คุณมีลิงค์ใด ๆ เกี่ยวกับเรื่องนี้?

สตริง ใน MQL4 ใหม่ไม่ใช่อาร์เรย์ของ ถ่าน แต่อาร์เรย์ของ wchar_t.

หากอินดิเคเตอร์/สคริปต์/EA ตัวเก่าของคุณทำงานบน MT4 build509 หรือรุ่นก่อนหน้า สตริง และส่งผ่านไปยังฟังก์ชัน DLL, คุณต้องเปลี่ยนฟังก์ชันเป็น wchar_t รุ่น.

ตัวอย่างเช่น, ถ้ามันใช้ ShellExecuteก, เปลี่ยนเป็น ShellExecuteW.

ขออภัยหาก dll ที่คุณใช้ไม่มีให้ wchar_t ฟังก์ชันเวอร์ชันเช่น mt4R.dll, คุณต้องแก้ไขการใช้งาน DLL, หรือแปลง สตริง ไปยังอาร์เรย์ของ ถ่าน โดย WideCharToMultiByte Win32API.

บันทึก: I haven't tried WideCharToMultiByte ยังอยู่ใน MQL4 ใหม่, so I don't know you can use WideCharToMultiByte โดยไม่มีหรือมีปัญหาใดๆ.

ที่ สร้าง 600 หัวข้อการเปิดตัว, มีกล่าวไว้ดังนี้:

การเปลี่ยนแปลงในภาษา MQL4

  • ตอนนี้สตริงจะแสดงในรูปแบบ Unicode, แม้ว่าจะอยู่ในรูปแบบ ANSI (ไบต์เดียว) ก่อน. ที่ควรพิจารณาหากโปรแกรมใช้ DLLs และส่งผ่านตัวแปรสตริงไปยังโปรแกรมเหล่านั้น. เมื่อเรียกใช้ฟังก์ชัน Windows API, ควรใช้ฟังก์ชันเหล่านี้ในเวอร์ชัน Unicode.
07.02.2014 07:07 มิคลี่

อาคุชเนียร์:
ขอบคุณสำหรับการสนับสนุนของคุณ.

It's nice to know somebody takes care about useful projects.

ขอแสดงความนับถืออย่างสูง

คุณสามารถระบุการเปลี่ยนแปลงที่จำเป็นในการอัปเดต dll? I wasn't aware that dlls need to be changed to fit MQL5's format. คุณมีลิงค์ใด ๆ เกี่ยวกับเรื่องนี้?

โพสต์นี้มีประโยชน์เพียงใด?

คลิกที่ดาวเพื่อให้คะแนน!

คะแนนเฉลี่ย 0 / 5. นับคะแนนเสียง: 0

ยังไม่มีคะแนนโหวต! เป็นคนแรกที่ให้คะแนนโพสต์นี้.

ขออภัยที่โพสต์นี้ไม่มีประโยชน์สำหรับคุณ!

ให้เราปรับปรุงโพสต์นี้!

บอกเราว่าเราจะปรับปรุงโพสต์นี้ได้อย่างไร?



ผู้เขียน: ทีมงาน Forex Wiki
เราคือทีมผู้ซื้อขาย Forex ที่มีประสบการณ์สูง [2000-2023] ที่อุทิศตนเพื่อใช้ชีวิตในแบบของเรา. วัตถุประสงค์หลักของเราคือการได้รับอิสรภาพทางการเงินและอิสรภาพ, และเราได้ติดตามการศึกษาด้วยตนเองและได้รับประสบการณ์ที่กว้างขวางในตลาด Forex เพื่อเป็นหนทางในการบรรลุวิถีชีวิตที่ยั่งยืนด้วยตนเอง.