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