ข้อผิดพลาดการเข้ารหัส Zero Divide ปริศนา
Results 1 to 4 of 4

Thread: ข้อผิดพลาดการเข้ารหัส Zero Divide ปริศนา

  1. #1
    2 ไฟล์แนบสวัสดี

    ฉันมีปัญหาเล็กน้อยกับข้อผิดพลาดหารศูนย์
    ฉันกำลังทำงานกับ EA ง่ายๆเพื่อฝึกซ้อมจริงๆ
    มันรวบรวมโดยไม่มีข้อผิดพลาด แต่เมื่อฉันลองในเครื่องทดสอบ egy ฉันยังคงได้รับข้อผิดพลาดการแบ่งศูนย์ในวารสาร
    ฉันเพิ่ม Getlasterror พร้อมคำแนะนำในการพิมพ์เมื่อเกิดข้อผิดพลาดในการแสดงบรรทัดในรหัส
    ตามที่คุณเห็นจากไฟล์แนบ
    The very last line before the Start return I put if(GetLastError()gt;0) Print(Line 137);
    และฉันลงเอยที่บรรทัดแรกหลังจากเริ่ม
    if(GetLastError()gt;0) Print(Line 53); and this is where the error has occured.
    นั่นหมายความว่าไม่มีข้อผิดพลาดเมื่อกดปุ่มย้อนกลับ แต่ทันทีหลังจากเริ่มมีข้อผิดพลาด
    กล่าวอีกนัยหนึ่งนอกรหัสของฉัน! สิ่งนี้จะเกิดขึ้นได้อย่างไร?
    เป็นปัญหากับตัวทดสอบ egy หรือฉันทำอะไรที่โง่
    ขอบคุณล่วงหน้า


    ใส่รหัส/ --------------------------------------------- --------------------- /| สูงกว่าสวัสดี LowerLo.mq4 |/| คี ธ |/| http://www.metaquotes.net |/ ----------------------------------------------- ------------------- #property ลิขสิทธิ์ Keith #property link http://www.metaquotes.net/--- พารามิเตอร์อินพุตภายนอก int MagicNumber = 1; exL int StopLoss = 50; extern int TakeProfit = 100; extern int DecimalPip = 4; ภายนอก exS MaxSlippage = 5; ภายนอกคู่ RiskPerTrade = 1; Pip สองครั้ง;/ ----------------------------------------------- ------------------- /| ฟังก์ชั่นเริ่มต้นผู้เชี่ยวชาญ/ ----------------------------------------------- ------------------- int init () {//----/คำนวณ Pip pip int decimal decimal = 4; พิพ = 1; สำหรับ (int a = 1; alt; = DecimalPip; a ) {Pip = Pip * 0.1; }/---- return (0); }/ ---------------------------------------------- -------------------- /| ฟังก์ชั่นผู้เชี่ยวชาญ/ ----------------------------------------------- ------------------- int deinit () {//----/---- return (0); }/ ---------------------------------------------- -------------------- /| ฟังก์ชันเริ่มผู้เชี่ยวชาญ/ ----------------------------------------------- ------------------- int start () {//---- ถ้า (GetLastError () gt; 0) พิมพ์ (บรรทัด 53); ถ้า (สูง # 91; 1 # 93; gt; สูง # 91; 2 # 93 ต่ำ # 91; 1 # 93; gt; ต่ำ # 91; 2 # 93;)/ซื้อสัญญาณสตริง = ซื้อ; ถ้า (GetLastError () gt; 0) พิมพ์ (บรรทัดที่ 57); ถ้า (สูง # 91; 1 # 93; lt; สูง # 91; 2 # 93 ต่ำ # 91; 1 # 93; lt; ต่ำ # 91; 2 # 93;)/ขายสัญญาณ = ขาย; ถ้า (GetLastError () gt; 0) พิมพ์ (บรรทัดที่ 61);/---------------------------------- ตรวจสอบว่าการซื้อขายเปิดอยู่กับคู่ปัจจุบัน int STicket = 0 ; int BTicket = 0; สำหรับ (int x = OrdersTotal () - 1; xgt; = 0; x--) {OrderSelect (x, SELECT_BY_POS, MODE_TRADES); if (OrderType () lt; = OP_SELL OrderMagicNumber () == MagicNumber) STicket = OrderTicket (); if (OrderType () lt; = OP_BUY OrderMagicNumber () == MagicNumber) BTicket = OrderTicket (); }/----- ถ้า STicket gt; 0, ขายการค้าที่เปิดอยู่แล้ว, ถ้า BTicket gt; 0 ซื้อการค้าที่เปิดอยู่, ถ้าทั้ง 0, ไม่มีการค้าปัจจุบัน/------------- ------------------- ทำการค้าใหม่? ถ้า (GetLastError () gt; 0) พิมพ์ (บรรทัดที่ 76); if (STicket == 0 BTicket == 0)/ไม่มีการเปิดการซื้อขาย {ถ้า (สัญญาณ == ซื้อ) {double Ask = MarketInfo (Symbol (), MODE_ASK);/รับราคาเสนอขายปัจจุบัน Double StopLoss = Ask - StopLoss * Pip; double TakeProfit = Ask TakeProfit * Pip; ถ้า (GetLastError () gt; 0) พิมพ์ (บรรทัดที่ 86);/---------------- คำนวณ LotSize และตรวจสอบว่ามากกว่าขั้นต่ำที่อนุญาตโดยนายหน้าสองขั้นตอน = MarketInfo (Symbol (), MODE_LOTSTEP); สองLossLot = MathAbs (Ask- StopLoss)MarketInfo (Symbol (), MODE_TICKSIZE) * MarketInfo (Symbol (), MODE_TICKVALUE); int Lot = AccountEquity () * RiskPerTrade100LossLotขั้นตอน; Double LotSize = Lot * ขั้นตอน; if (LotSize lt; MarketInfo (Symbol (), MODE_MINLOT)) การแจ้งเตือน (Lotsize นั้นเล็กเกินไปสำหรับการซื้อขาย); อื่น OrderSend (Symbol (), OP_BUY, LotSize, Ask, MaxSlippage * PipPoint, StopLoss, TakeProfit * Pip, NULL, MagicNumber, 0,0) } if (สัญญาณ == ขาย) {double bid = MarketInfo (Symbol (), MODE_BID);/รับราคาเสนอซื้อปัจจุบัน StopLoss = เสนอราคา StopLoss * Pip; TakeProfit = Bid ​​-TakeProfit * Pip; ถ้า (GetLastError () gt; 0) พิมพ์ (บรรทัด 106);/---------------- คำนวณ LotSize และตรวจสอบว่ามากกว่าโบรกเกอร์ขั้นต่ำที่อนุญาตถ้า (GetLastError () gt; 0) พิมพ์ (บรรทัดที่ 108); ขั้นตอนที่ = MarketInfo (Symbol (), MODE_LOTSTEP); LossLot = MathAbs (Bid- StopLoss)MarketInfo (Symbol (), MODE_TICKSIZE) * MarketInfo (Symbol (), MODE_TICKVALUE); มาก = AccountEquity () * RiskPerTrade100LossLotขั้นตอน; LotSize = ขั้นตอน * Lot; if (LotSize lt; MarketInfo (Symbol (), MODE_MINLOT)) การแจ้งเตือน (Lotsize นั้นเล็กเกินไปสำหรับการซื้อขาย); อื่น OrderSend (Symbol (), OP_SELL, LotSize, Bid, MaxSlippage * PipPoint, StopLoss, TakeProfit * Pip, NULL, MagicNumber, 0,0); }} if (GetLastError () gt; 0) พิมพ์ (บรรทัดที่ 121);/--------------------- ตรวจสอบว่าจำเป็นต้องปิดการซื้อขายหรือไม่ (สัญญาณ == ซื้อ STicketgt; 0)/เปิดการปิดการขายความต้องการทางการค้า {OrderSelect (STicket , SELECT_BY_TICKET); OrderClose (STicket, OrderLots (), MarketInfo (OrderSymbol (), MODE_ASK), 50, สีม่วง); } if (Signal == ขาย BTicketgt; 0)/เปิดการปิดการซื้อขายความต้องการซื้อ {OrderSelect (BTicket, SELECT_BY_TICKET); OrderClose (BTicket, OrderLots (), MarketInfo (OrderSymbol (), MODE_BID), 50, สีม่วง); } if (GetLastError () gt; 0) พิมพ์ (บรรทัดที่ 137);/---- คืน (0); }/ ---------------------------------------------- --------------------
    https://www.thaitradeforex.com/attac...8495297788.mq4

    https://www.thaitradeforex.com/crypt...notifiion.html

  2. #2
    สวัสดี Gumrai มีปัญหากับตัวแปรของคุณ: 1. ในอินพุตที่คุณใช้ StopLoss และ TakeProfit เพื่อระบุระยะทางใน pips จากนั้นคุณใช้ชื่อตัวแปรเดียวกันที่แน่นอนเพื่อระบุระดับตามระยะทางเหล่านี้: extern int StopLoss = 50 extern int TakeProfit = 100; double StopLoss = Ask - StopLoss * Pip; double TakeProfit = Ask TakeProfit * Pip; 2. double Ask = MarketInfo (Symbol (), MODE_ASK); double StopLoss = Ask - StopLoss * Pip; ถามไม่เหมือนถาม - แม้ว่าในกรณีของคุณมันเป็น แต่แล้วคุณจะไม่ต้องการตัวแปรพิเศษฉันเดา :-) 3. OrderSend (Symbol (), OP_BUY, LotSize, Ask, MaxSlippage * PipPoint, StopLoss, TakeProfit * Pip, NULL, MagicNumber, 0,0); คุณใช้ตัวคูณ pip ที่นี่ซึ่งคุณไม่ต้องการถ้าคุณแก้ไขตัวแปรในจุดที่ 1 เมื่อฉันแก้ไขสิ่งเหล่านี้ข้อผิดพลาดการแบ่งศูนย์จะหายไป หวังว่าจะช่วยได้

  3. #3
    Quote Originally Posted by ;
    สวัสดีมีปัญหากับตัวแปรของคุณ: 1. ในอินพุตที่คุณใช้ StopLoss และ TakeProfit เพื่อระบุระยะห่างใน pips จากนั้นคุณใช้ชื่อตัวแปรเดียวกันที่แน่นอนเพื่อระบุระดับตามระยะทางเหล่านี้: extern int StopLoss = 50; extern int TakeProfit = 100; double StopLoss = Ask - StopLoss * Pip; double TakeProfit = Ask TakeProfit * Pip; 2. double Ask = MarketInfo (Symbol (), MODE_ASK); double StopLoss = Ask - StopLoss * Pip; ถามไม่เหมือนถาม - แม้ว่าในกรณีของคุณมันเป็น แต่แล้วคุณจะไม่ต้องการตัวแปรพิเศษ ...
    ขอบคุณมากสำหรับสิ่งนั้น
    ฉันโง่ที่จะแก้ไขตัวแปรทั่วโลกในรหัส วันนี้ฉันได้เรียนรู้บทเรียนที่มีค่าแล้วขอบคุณคุณ

  4. #4
    ฉันแก้ปัญหานี้แล้ว ในวันที่ 1 มกราคม 2014 เวลา 00:00 GMT ฉันจะโพสต์คำตอบในหัวข้อแยกต่างหาก จะมีทั้งหมด

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

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