ปัญหาเกี่ยวกับการเขียนโค้ดตัวแปรท้องถิ่นและตัวแปร global บน mql4
Results 1 to 10 of 10

Thread: ปัญหาเกี่ยวกับการเขียนโค้ดตัวแปรท้องถิ่นและตัวแปร global บน mql4

  1. #1
    2 ไฟล์แนบ Hi,
    ฉันสวยใหม่เพื่อ mql4 ฉันได้ทำ ok แต่เมื่อเร็ว ๆ นี้ฉันได้รับสมบูรณ์นิ่งงันโดยปัญหาที่ฉันได้ทำงานเป็น ฉันมีรหัส ea ง่ายซึ่งทำงานได้ดีเมื่อฉันประกาศตัวแปรท้องถิ่นสำหรับ buyorder
    int buyorder = OrderSend (Symbol (), OP_BUY, LotSize, สอบถาม, 3,0,0, NULL, MagicNumber, 0, สีเขียว);

    ถ้า (buyordergt; 0)
    OrderModify (buyorder, OrderOpenPrice () BSL, BTP, 0, CLR_NONE);

    แต่ถ้าฉันประกาศ buyorder เป็นตัวแปรส่วนกลาง (และเอา int) ไม่ทำงาน มันก็ทำให้การปรับเปลี่ยนคำสั่ง infinitum สำหรับชีวิตของฉันฉันไม่เข้าใจว่าเหตุใดจึงควรเกิดขึ้นเนื่องจากตัวแปรระดับโลกควรสามารถใช้งานได้ทุกที่ในโปรแกรมและค่าควรสามารถเปลี่ยนแปลงได้ ฉันสามารถติดกับตัวแปรท้องถิ่น แต่ฉันต้องการขยาย ea เพื่อให้คำสั่งซื้อหลายและใช้ต่อท้ายหยุด etc และฉันจะต้องใช้ตัวแปรทั่วโลก ฉันได้รวม ea ไว้ด้านล่างแล้ว รุ่นแรก (ตัวแปรท้องถิ่น) ทำงานที่สอง (ทั่วโลก) ไม่ ถ้าใครสามารถช่วยฉันได้ว่าจะชื่นชมเพื่อที่ฉันได้ใช้เวลาอย่างแท้จริงวันพยายามที่จะทำงานออก PS นอกจากนี้ยังใช้กับตัวแปร sellorder
    ขอบคุณ

    https://www.thaitradeforex.com/attac...1727520325.mq4

    https://www.thaitradeforex.com/attac...1081469781.mq4

  2. #2

    Quote Originally Posted by ;
    สวัสดีฉันสวยใหม่เพื่อ mql4 ฉันได้ทำ ok แต่เมื่อเร็ว ๆ นี้ฉันได้รับสมบูรณ์นิ่งงันโดยปัญหาที่ฉันได้ทำงานเป็น สำหรับชีวิตของฉันฉันไม่สามารถเข้าใจว่าทำไมนี้ ...
    เริ่มต้นด้วยการแสดงการเยื้องที่ถูกต้องของโค้ด การจัดรูปแบบน่าสงสารมาก
    https://en.wikipedia.org/wiki/Indent_styleจากนั้นล้อมรอบคำสั่ง ifblocks ทั้งหมดในวงเล็บปีกกา {} จากนั้นคุณจะเห็นว่าคุณกำลังใช้ตัวแปร undefineduninitialized ในหนึ่งในโปรแกรม คอมไพเลอร์ไม่ควรคอมไพล์สำเร็จ หรือว่าตัวแปรไม่ได้รับการอัพเดตในเวอร์ชันอื่น ฉันยังต้องการแนะนำตัวแปรท้องถิ่นทั้งหมดที่ด้านบนของแต่ละฟังก์ชันและใช้เครื่องหมายวงเล็บปีกกาเพื่อใส่บล็อกทั้งหมด ที่อาจจะได้ให้ข้อเสนอแนะผ่านทางเรียบเรียงว่ามีบางอย่างผิดพลาด TLDR: การจัดรูปแบบรหัสแย่ การจัดทำรายงาน if ถ้าไม่มีวงเล็บปีกกา การประกาศตัวแปรแบบอินไลน์การรวบรวมคอมไพเลอร์ในการอนุมัติรหัสที่ไม่ถูกต้อง รหัสไม่ทำงานตามที่คาดไว้

  3. #3
    เมื่อคุณประกาศตัวแปรภายในเครื่องจะใช้ได้เฉพาะในช่วงหนึ่งอินสแตนซ์ที่เริ่มต้น {} เท่านั้น ทุกครั้งที่เริ่มทำงาน {} จะเรียกใช้ตัวแปรใหม่อีกครั้ง มองไปที่โค้ดของคุณตัวแปร ”ซื้อ” จะเรียกเฉพาะเมื่อไม่มีการสั่งซื้อแบบเปิดในสถานที่และมีการเปิดคำสั่งซื้อใหม่ ถ้าคำสั่งมีอยู่แล้วตัวแปร buyorder จะถูกเลี่ยงโดยงบ if และไม่ได้รับการประกาศดังนั้นจึงไม่สามารถเรียกใช้คำสั่งแก้ไขได้ เช่นถ้า buyorder ไม่ได้รับการเรียกใช้แล้ว buyorder ยังคงไม่ได้ประกาศหรือมีค่าเป็นศูนย์หรือเป็นโมฆะเนื่องจาก buyorder gt; 0 เป็นเท็จ ดังนั้นจึงไม่มีการปรับเปลี่ยนคำสั่งซื้อ ในทางกลับกันถ้าคุณประกาศตัวแปรส่วนกลางแล้ว buyorder จะเก็บค่าไว้และรหัสที่เขียนไว้จะพยายามแก้ไขในแต่ละครั้งตามที่ buyorder gt; 0 เป็นจริง หวังว่านี่จะช่วย Fred ได้

  4. #4
    ขอบคุณ Fred, Xaphod ขอบคุณเพื่อให้ง่ายต่อการทำผิดพลาดกับรหัสนี้! แน่นอนจะพยายามทำให้โค้ดมีความชัดเจนมากขึ้น ขอขอบคุณอีกครั้งสำหรับข้อมูลของคุณ!

  5. #5

    Quote Originally Posted by ;
    ขอขอบคุณเฟร็ดขอบคุณ, ง่ายที่จะทำผิดพลาดกับรหัสนี้! แน่นอนจะพยายามทำให้โค้ดมีความชัดเจนมากขึ้น ขอขอบคุณอีกครั้งสำหรับข้อมูลของคุณ!
    คุณควรโทร OrderModify เพียงครั้งเดียวหลังจาก OrderSend ไม่ว่า buyorder จะเป็นท้องถิ่นหรือทั่วโลก ท้องถิ่นเป็นที่นิยมกว่า รหัสแทรก int buyorder = 0; ถ้า (OpenOrdersThisPair (Symbol ()) == 0) {buyorder = OrderSend (Symbol (), OP_BUY, LotSize, สอบถาม, 3,0,0, NULL, MagicNumber, 0, สีเขียว ); if (buyordergt; 0) {orderModify (buyorder, OrderOpenPrice (), bsl, btp, 0, CLR_NONE); }}}

  6. #6

    Quote Originally Posted by ;
    ฉันไม่เข้าใจว่าเหตุใดจึงควรเกิดขึ้นเนื่องจากตัวแปรส่วนกลางควรสามารถใช้งานได้ทุกที่
    นั่นคือปัญหาที่แน่นอน เป็นประเด็นที่กำหนดขอบเขต ในทั้งสองกรณีงบ if (lt; buyordersellordergt; gt; 0) อยู่ในขอบเขตที่ไม่ถูกต้อง; กับความแตกต่างว่าขอบเขตของ buyordersellorder เปลี่ยนแปลงไปกับตัวอย่างทำให้เกิดผลร้ายในตัวอย่างที่สอง ดูตัวอย่างโค้ด Xaphod สำหรับการกำหนดขอบเขตที่เหมาะสม ถ้าฉันอาจถามว่าคุณใช้ภาษาอะไรในการเข้ารหัส

  7. #7

    Quote Originally Posted by ;
    {quote} นั่นคือปัญหาที่แน่นอน เป็นประเด็นที่กำหนดขอบเขต ในทั้งสองกรณีงบ if (lt; buyordersellordergt; gt; 0) อยู่ในขอบเขตที่ไม่ถูกต้อง; กับความแตกต่างว่าขอบเขตของ buyordersellorder เปลี่ยนแปลงไปกับตัวอย่างทำให้เกิดผลร้ายในตัวอย่างที่สอง ดูตัวอย่างโค้ด Xaphod สำหรับการกำหนดขอบเขตที่เหมาะสม ถ้าฉันอาจถามว่าคุณใช้ภาษาอะไรในการเข้ารหัส
    สวัสดีหิน! ที่จริงฉันไม่ทราบวิธีการโปรแกรมฉันได้อ่านมากและเดินผ่านหนังสือ mql4. ฉันเข้าใจจากตัวอย่างข้างต้นที่ฉันทำผิด แต่ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดยกำหนดขอบเขต ขอบคุณ!

  8. #8

    Quote Originally Posted by ;
    {quote} สวัสดี! ที่จริงฉันไม่ทราบวิธีการโปรแกรมฉันได้อ่านมากและเดินผ่านหนังสือ mql4. ฉันเข้าใจจากตัวอย่างข้างต้นที่ฉันทำผิด แต่ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดยกำหนดขอบเขต ขอบคุณ!
    ฉันหมายถึงขอบเขตบริบท:
    https://en.wikipedia.org/wiki/Scope_(computer_science) ถ้างบที่ตรวจสอบคำสั่งซื้อสั่งซื้อขายถูกวางในบริบทที่ไม่ถูกต้องตามที่อยู่ในบริบท (ขอบเขต) ของอื่น ๆ (ด้านนอก) ถ้างบ

  9. #9
    สวัสดีเนื่องจากสามารถมองเห็นความแตกต่างระหว่างตัวแปรส่วนกลางและโลคัลได้ว่าตัวแปรส่วนกลางสามารถใช้งานได้มากกว่าอีเอในครั้งเดียวในการถ่ายโอนข้อมูลระหว่างอีเอและตัวบ่งชี้ตัวแปรท้องถิ่นจึงเป็นที่รู้จักกันโดยอีเอประกาศในตัวมัน ฉันหวังว่าคุณจะพบว่ามีประโยชน์

  10. #10

    Quote Originally Posted by ;
    สวัสดีเนื่องจากสามารถมองเห็นความแตกต่างระหว่างตัวแปรส่วนกลางและโลคัลได้ว่าตัวแปรส่วนกลางสามารถใช้งานได้มากกว่าอีเอในครั้งเดียวในการถ่ายโอนข้อมูลระหว่างอีเอและตัวบ่งชี้ตัวแปรท้องถิ่นจึงเป็นที่รู้จักกันโดยอีเอประกาศในตัวมัน ฉันหวังว่าคุณจะพบว่ามีประโยชน์
    คำศัพท์เป็นสิ่งที่โชคร้ายและอาจสร้างความสับสนแก่บางคนได้ คุณกำลังอ้างถึง Global Variable ของเครื่องลูกข่าย บทความก่อนหน้านี้หมายถึงตัวแปร globalscope ซึ่งสามารถใช้ได้เฉพาะใน EA ฯลฯ ที่มีการประกาศ

การขออนุญาตโพส

  • ห้ามโพสข้อความใหม่
  • ห้ามโพสตอบ
  • ห้ามแนบไฟล์
  • ห้ามแก้ไขโพส
  •  
  • รหัส BB เปิด
  • Smilies ปิด
  • รหัส [IMG] เปิด
  • รหัส [VIDEO] เปิด
  • รหัส HTML ปิด
นโยบาย Cookie
นโยบาย Cookie: เว็บไซต์ thaitradeforex มีการใช้ cookies และสำหรับการดำเนินการเยี่ยมชมเว็บไซต์ ท่านได้ยอมรับในสิ่งนี้ สำหรับข้อมูลเพิ่มเติมโปรดอ่าน 'Cookie Disclosure'.