2添付ファイルこんにちは、
私はゼロ除算エラーで少し問題を抱えています。
私は本当に練習のためだけに簡単なEAに取り組んでいます、
それはエラーなしでコンパイルしました、しかし私がegyテスターでそれを試みたとき私はジャーナルでゼロ除算エラーを得続けました。
Getlasterrorに、コード内の行を示すエラーが発生した場所を印刷する手順を追加しました。
添付からわかるように
The very last line before the Start return I put if(GetLastError()gt;0) Print(Line 137);
そしてスタート後1行目になった
if(GetLastError()gt; 0)印刷(53行目);これがエラーが発生した場所です。
つまり、returnキーを押してもエラーは発生しませんでしたが、Startの直後にはエラーが発生しました。
言い換えれば、私のコードの範囲外です。これはどのように起こりますか?
それはegyテスターの問題なのか、それとも私は愚かなことをしたことがありますか。
前もって感謝します
挿入コード// --------------------------------------------- --------------------- /| HigherHi LowerLo.mq4 |/|キース|/| http://www.metaquotes.net |/ ----------------------------------------------- ------------------- #property copyright Keith #property link http://www.metaquotes.net/---入力パラメータextern int MagicNumber = 1; extern int StopLoss = 50。 extern int TakeProfit = 100; extern int DecimalPip = 4。 extern int MaxSlippage = 5。 extern double RiskPerTrade = 1;ダブルピップ。/ ----------------------------------------------- ------------------- /|エキスパート初期化機能|/ ----------------------------------------------- ------------------- int init(){//----/Pip decimalを計算します。int decimal = 4; Pip = 1; for(int a = 1; alt; = DecimalPip; a ){Pip = Pip * 0.1;/---- return(0);/ -------------------------------------------------- -------------------- /|エキスパート非初期化関数// ----------------------------------------------- ------------------- int deinit(){//----/---- return(0);/ -------------------------------------------------- -------------------- /|エキスパートスタート機能|/ ----------------------------------------------- ------------------- int start(){//---- if(GetLastError()gt; 0)印刷する(53行目)。 if(高#91; 1#93; gt;高#91; 2#93;低#91; 1#93; gt;低#91; 2#93;)//Buyシグナル文字列Signal = Buy; if(GetLastError()gt; 0)印刷(57行目); if(High#91; 1#93; lt; High#91; 2#93; Low#91; 1#93; lt; Low#91; 2#93;)//売りシグナルSignal =売り; if(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の場合、現在の取引なし//------------- -------------------新しい貿易を配置しますか? if(GetLastError()gt; 0)印刷する(76行目)。 if(STicket == 0 BTicket == 0)//取引はオープンしていません{if(Signal == Buy){double ask = MarketInfo(Symbol()、MODE_ASK);}/現在の売り価格を2倍にするStopLoss =売り - StopLoss * Pip; double TakeProfit = Ask TakeProfit * Pip; if(GetLastError()gt; 0)印刷する(86行目)。/---------------- LotSizeを計算し、ブローカーによって許容される最小値を超えていることを確認しますdouble Step = MarketInfo(Symbol()、MODE_LOTSTEP);ダブルLossLot = MathAbs(Ask-StopLoss)/MarketInfo(Symbol()、MODE_TICKSIZE)* MarketInfo(Symbol()、MODE_TICKVALUE); int Lot = AccountEquity()* RiskPerTrade100LossLotStep; double LotSize = Lot * Step; if(LotSize lt; MarketInfo(Symbol()、MODE_MINLOT))Alert(ロットサイズが小さすぎて取引できない)。それ以外の場合OrderSend(Symbol()、OP_BUY、LotSize、Ask、MaxSlippage *ピップ/ポイント、ストップロス、テイクプロフィット*ピップ、NULL、MagicNumber、0,0); if(Signal ==売り){double bid = MarketInfo(Symbol()、MODE_BID);}/現在の入札価格を取得するStopLoss = Bid StopLoss * Pip; TakeProfit = Bid - TakeProfit * Pip; if(GetLastError()gt; 0)印刷(行106)。/---------------- LotSizeを計算し、(GetLastError()gt; 0)の場合にブローカーが許容する最小値を超えていることを確認します(行108)。ステップ= MarketInfo(Symbol()、MODE_LOTSTEP); LossLot = MathAbs(入札ストップロス)/MarketInfo(Symbol()、MODE_TICKSIZE)* MarketInfo(Symbol()、MODE_TICKVALUE); Lot = AccountEquity()* RiskPerTrade100LossLotStep; LotSize =ロット*ステップif(LotSize lt; MarketInfo(Symbol()、MODE_MINLOT))Alert(ロットサイズが小さすぎて取引できない)。そうでなければOrderSend(Symbol()、OP_SELL、LotSize、Bid、MaxSlippage *ピップ/ポイント、ストップロス、テイクプロフィット*ピップ、NULL、MagicNumber、0,0); if(GetLastError()gt; 0)印刷(121行目);/---------------------(Signal == Buy STicketgt; 0)//売り売り取引が閉じる必要がある場合は、取引を閉じる必要があるかどうかを確認してください{OrderSelect(STicket) 、SELECT_BY_TICKET); OrderClose(STicket、OrderLots()、MarketInfo(OrderSymbol()、MODE_ASK)、50、バイオレット); if(Signal == Sell BTicketgt; 0)//バイトレードをオープンする必要があります{OrderSelect(BTicket、SELECT_BY_TICKET);} OrderClose(BTicket、OrderLots()、MarketInfo(OrderSymbol()、MODE_BID)、50、バイオレット); if(GetLastError()gt; 0)印刷(137行目);/---- return(0);/ -------------------------------------------------- --------------------
https://www.forexgroove.com/attachme...8495297788.mq4
https://www.forexgroove.com/cryptocu...notifiion.html