ゼロ除算エラーコーディングの難問
Results 1 to 4 of 4

Thread: ゼロ除算エラーコーディングの難問

  1. #1
    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

  2. #2
    こんにちはGumraiさん、あなたの変数に問題があります。1.ピップで距離を指定するためにStopLossとTakeProfitを使用します、そしてあなたはこれらの距離に基づいてレベルを指定するために全く同じ変数名を使用します。 extern int TakeProfit = 100; double StopLoss = Ask - StopLoss * Pip; double TakeProfit = Ask TakeProfit * Pip;ダブルアスク= MarketInfo(Symbol()、MODE_ASK); 3。 double StopLoss = Ask - StopLoss * Pip; askはAskと同じではありません - あなたの場合はそうですが、そうすると余分な変数は必要ありません:-) 3. OrderSend(Symbol()、OP_BUY、LotSize、Ask、MaxSlippage * PipPoint、StopLoss、TakeProfit * Pip、NULL、MagicNumber、0,0);ここではpip乗数を使用します。これは、ポイント1の変数を修正する場合は必要ありません。これらを修正すると、ゼロ除算エラーはなくなります。お役に立てれば、

  3. #3
    私はこの問題を解決しました。 2014年1月1日の午前0時(GMT)別のトピックでソリューションを掲載します。すべてがあります。

  4. #4
    Quote Originally Posted by ;
    こんにちは、あなたの変数に問題があります:1.ピップで距離を指定するためにStopLossとTakeProfitを使用します、そしてあなたはこれらの距離に基づいてレベルを指定するために全く同じ変数名を使用します:extern int StopLoss = 50; extern int TakeProfit = 100; double StopLoss = Ask - StopLoss * Pip; double TakeProfit = Ask TakeProfit * Pip;ダブルアスク= MarketInfo(Symbol()、MODE_ASK); 3。 double StopLoss = Ask - StopLoss * Pip; askはAskと同じではありません - あなたの場合はそうですが、そうすると余分な変数は必要なくなります…
    どうもありがとうございました
    コード内のグローバル変数を修正することを私にばかげています。今日は貴重なレッスンを学びました。ありがとう

投稿権限

  • Youma新しいスレッドを投稿しない
  • Youmaは返信しない
  • あなたは添付ファイルを投稿しないかもしれない
  • Youma Notedityourposts
  •  
  • スマイリーはオンです
  • スマイリーはオンです
  • [IMG]コードがオンです
  • [VIDEO]コードがオンです
  • HTMLコードがオフです
This website uses cookies
We use cookies to store session information to facilitate remembering your login information, to allow you to save website preferences, to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners.