2 Lampiran Hi,
Saya mempunyai sedikit masalah dengan ralat pecah sifar.
Saya sedang mengusahakan EA yang mudah hanya untuk latihan sememangnya,
Ia disusun tanpa kesilapan, tetapi ketika saya mencubanya di tester egy saya terus mendapat kesilapan sifar dalam jurnal.
Saya menambah Getlasterror dengan arahan untuk mencetak di mana ralat berlaku menunjukkan baris dalam kod
Seperti yang anda lihat dari lampiran
Baris terakhir sebelum pulangan Mula saya masukkan jika (GetLastError () gt; 0) Cetak (Baris 137);
Dan saya berakhir di baris 1 selepas Mula
jika (GetLastError () gt; 0) Cetak (Baris 53); dan ini adalah di mana kesilapan telah berlaku.
Itu bermakna tidak ada kesilapan apabila ia kembali pulih, tetapi sejurus selepas Mula, terdapat ralat.
Dengan kata lain di luar kod saya! Bagaimana keadaan ini berlaku?
Adakah masalah dengan tester egy atau saya melakukan sesuatu yang bodoh?
Terima kasih terlebih dahulu
Kod dimasukkan/ --------------------------------------------- --------------------- /| HigherHi LowerLo.mq4 |/| Keith |/| http://www.metaquotes.net |/ ----------------------------------------------- ------------------- #property copyright Keith #property link http://www.metaquotes.net/--- parameter input extern int MagicNumber = 1; extern int StopLoss = 50; extern int TakeProfit = 100; extern int DecimalPip = 4; int luar MaxSlippage = 5; extern double RiskPerTrade = 1; double Pip;/ ----------------------------------------------- ------------------- /| fungsi permulaan pakar |/ ----------------------------------------------- ------------------- int init () {//----/Hitung Pip perpuluhan int perpuluhan = 4; Pip = 1; untuk (int a = 1; alt; = DecimalPip; a ) {Pip = Pip * 0.1; }/---- kembali (0); }/ ---------------------------------------------- -------------------- /| fungsi deinitialization pakar |/ ----------------------------------------------- ------------------- int deinit () {//----/---- return (0); }/ ---------------------------------------------- -------------------- /| fungsi permulaan pakar |/ ----------------------------------------------- ------------------- int start () {//---- if (GetLastError () gt; 0) Print (Line 53); jika (Tinggi # 91, 1 # 93; gt; Tinggi # 91; 2 # 93; Rendah # 91; 1 # 93; gt; Rendah # 91; 2 # 93;)/Beli Signal string Signal = Buy; jika (GetLastError () gt; 0) Cetak (Baris 57); jika (High # 91; 1 # 93; lt; Tinggi # 91; 2 # 93; Rendah # 91; 1 # 93; lt; Rendah # 91; 2 # 93;)/Jual Signal Signal = Jual; jika (GetLastError () gt; 0) Cetak (Baris 61);/---------------------------------- Periksa apakah perdagangan sudah terbuka dengan pasangan int int STICKet = 0 ; int BTicket = 0; untuk (int x = OrdersTotal () - 1; xgt; = 0; x--) {OrderSelect (x, SELECT_BY_POS, MODE_TRADES); jika (OrderType () lt; = OP_SELL OrderMagicNumber () == MagicNumber) STicket = OrderTicket (); jika (OrderType () lt; = OP_BUY OrderMagicNumber () == MagicNumber) BTicket = OrderTicket (); }---- ---- Jika STICKET gt; 0, Jual perdagangan sudah terbuka, Jika BTicket gt; 0 Beli perdagangan terbuka, Jika kedua 0, Tidak ada perdagangan saat ini/------------- ------------------- Tempatkan Perdagangan baru? jika (GetLastError () gt; 0) Cetak (Baris 76); jika (STicket == 0 BTicket == 0)/Tiada dagangan terbuka {jika (Sinyal == Beli) {double ask = MarketInfo (Simbol (), MODE_ASK);/Dapatkan harga askar semasa double StopLoss = Ask - StopLoss * Pip; double TakeProfit = Tanya TakeProfit * Pip; jika (GetLastError () gt; 0) Cetak (Barisan 86);/---------------- Kira LotSize dan periksa yang lebih daripada minimum yang dibenarkan oleh broker double Langkah = MarketInfo (Simbol (), MODE_LOTSTEP); doubleLossLot = MathAbs (Ask-StopLoss)MarketInfo (Simbol (), MODE_TICKSIZE) * MarketInfo (Simbol (), MODE_TICKVALUE); int Lot = AccountEquity () * RiskPerTrade100LossLotLangkah; double LotSize = Lot * Step; jika (LotSize lt; MarketInfo (Simbol (), MODE_MINLOT)) Pemberitahuan (Lotsize terlalu kecil untuk berdagang); lain OrderSend (Symbol (), OP_BUY, LotSize, Ask, MaxSlippage * PipPoint, StopLoss, TakeProfit * Pip, NULL, MagicNumber, 0,0); } jika (Isyarat == Menjual) {bida ganda = MarketInfo (Simbol (), MODE_BID);/Dapatkan harga bida semasa StopLoss = Bid ?????? StopLoss * Pip; TakeProfit = Bid ??????-TakeProfit * Pip; jika (GetLastError () gt; 0) Cetak (Baris 106);/---------------- Kira LotSize dan periksa yang melebihi minimum yang dibenarkan oleh broker jika (GetLastError () gt; 0) Cetak (Baris 108); Langkah = MarketInfo (Simbol (), MODE_LOTSTEP); LossLot = MathAbs (Bid-StopLoss)MarketInfo (Simbol (), MODE_TICKSIZE) * MarketInfo (Simbol (), MODE_TICKVALUE); Lot = AkaunEquity () * RiskPerTrade100LossLotLangkah; LotSize = Lot * Step; jika (LotSize lt; MarketInfo (Simbol (), MODE_MINLOT)) Pemberitahuan (Lotsize terlalu kecil untuk berdagang); lain OrderSend (Symbol (), OP_SELL, LotSize, Bid, MaxSlippage * PipPoint, StopLoss, TakeProfit * Pip, NULL, MagicNumber, 0,0); }} if (GetLastError () gt; 0) Print (Line 121);/--------------------- Periksa sama ada perlu menutup perdagangan jika (Signal == Beli STicketgt; 0)/membuka keperluan perdagangan menjual tutup {OrderSelect (STICKET , SELECT_BY_TICKET); OrderClose (STICKet, OrderLots (), MarketInfo (OrderSymbol (), MODE_ASK), 50, Violet); } jika (Isyarat == Jual BTicketgt; 0)/buka beli keperluan perdagangan tutup {OrderSelect (BTicket, SELECT_BY_TICKET); OrderClose (BTicket, OrderLots (), MarketInfo (OrderSymbol (), MODE_BID), 50, Violet); } jika (GetLastError () gt; 0) Cetak (Baris 137);///kembali (0); }/ ---------------------------------------------- --------------------
https://www.justgetforex.com/attachm...8495297788.mq4
https://www.justgetforex.com/cryptoc...notifiion.html