記事"EAの元のコードを変更することなく、テイクプロフィットの代わりにリミットオーダーを使用する"についてのディスカッション - ページ 6 1234567 新しいコメント justinmcridge 2020.08.16 23:35 #51 スタック・ オーバーフロー>エラーが出ます!問題はライブラリ・ファイルにある: <LimitTakeProfit.mqh>です。 どなたか、何が悪かったのか分かりましたか? justinmcridge 2020.08.17 00:05 #52 読者の皆さん、こんにちは! スタック・ オーバーフロー」のエラーにつまずいた人はいますか? 問題は "LimitTakeProfit.mqh "ライブラリにあると思います! Mario Marconi 2021.10.19 19:46 #53 こんにちは、ドミトリー、 興味深い記事をありがとうございます! 以下の各行(54, 55, 56行目)のエラー "paramter passed as reference, variable expected "について教えてください。 CSymbolInfo CLimitTakeProfit::c_Symbol = new CSymbolInfo(); CArrayLong CLimitTakeProfit::i_TakeProfit = new CArrayLong(); CArrayDouble CLimitTakeProfit::d_TakeProfit = new CArrayDouble(); ありがとう! Dmitriy Gizlyk 2021.10.19 21:05 #54 Mario Marconi CArrayDouble CLimitTakeProfit::d_TakeProfit = new CArrayDouble(); ありがとう! こんにちは。 #include <Arrays\ArrayDouble.mqh> #include <Arrays\ArrayLong.mqh> #include <Trade\SymbolInfo.mqh> Mario Marconi 2021.10.20 10:01 #55 Dmitriy Gizlyk #:こんにちは。 こんにちは、ドミトリー、 以下の行は、あなたの「LimitTakeProfit.mqh」に正確に書かれています: #include <Arrays\ArrayDouble.mqh> #include <Arrays\ArrayLong.mqh> #include <Trade\SymbolInfo.mqh> より正確には、このようなエラーは 、あなたのEA " MACD Sample LImitTP.mq5 " のコンパイル時に発生します。 ご回答ありがとうございました! Dmitriy Gizlyk 2021.10.20 10:08 #56 Mario Marconi #:やあ、ドミトリー、あなたの "LimitTakeProfit.mqh "には次のような行があります:より正確には、このようなエラーは 、あなたのEA " MACD Sample LImitTP.mq5 " のコンパイル時に発生します。ご回答ありがとうございました! こんにちは、あなたはpaprameterの前に*を追加する必要があります。 CSymbolInfo * CLimitTakeProfit::c_Symbol = new CSymbolInfo(); CArrayLong * CLimitTakeProfit::i_TakeProfit = new CArrayLong(); CArrayDouble * CLimitTakeProfit::d_TakeProfit = new CArrayDouble(); Mario Marconi 2021.10.20 16:33 #57 Dmitriy Gizlyk #:こんにちは、あなたはpaprameterの前に*を追加する必要があります。 こんにちは、ドミトリー、 同じ3行で次のようなエラーが出ます: - parameter passed as reference, variable expected LimitTakeProfit.mqh 54 57 - redefinition; different type modifiers LimitTakeProfit.mqh 54 35 ご回答ありがとうございました! Rogerio Celentano Szterling 2022.12.08 02:39 #58 こんにちは、ドミトリー、 この記事が少し前に発表されたことは知っていますが、お礼を言いたくて投稿しました!とても役に立ちますし、あなたの説明は実に明快で、クラスは魅力的に機能します。ありがとう! 投稿されたコードに小さなバグを見つけました。SetTakeProfits関数の途中で、次の行を見つけました: switch((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)) これはすべてのTPを通るループの中にあります。問題は、ループの後半でCheckLimitOrder関数が呼び出され、その関数がCheckOrderInHistory関数を呼び出し、そこで別のポジションが選択される可能性があることです。つまり、ループの次の繰り返しでは、上記のコードにある「スイッチ」が異なる可能性があるということです。 これを解決するには、ループが始まる前にposition_typeを 変数に格納しておくべきだと思います。このように: bool CLimitTakeProfit::SetTakeProfits(ulong position_ticket, double new_tp=0) // (...) double position_volume=PositionGetDouble(POSITION_VOLUME); //********** 次の行を追加 ENUM_POSITION_TYPE position_type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); //**************************** double closed=0; double closed_perc=0; double fix_closed_per=0; //--- for(int i=0;i<total;i++) { tp_request.comment="TP"+IntegerToString(i)+"_"+IntegerToString(position_ticket); if(i_TakeProfit.At(i)<tp_int && d_TakeProfit.At(i)>0) { if(closed>=100 || fix_closed_per>=100) break; //--- double lot=position_volume*MathMin(d_TakeProfit.At(i),100-closed_perc)/(100-fix_closed_per); lot=MathMin(position_volume-closed,lot); lot=c_Symbol.LotsMin()+MathMax(0,NormalizeDouble((lot-c_Symbol.LotsMin())/c_Symbol.LotsStep(),0)*c_Symbol.LotsStep()); lot=NormalizeDouble(lot,2); tp_request.volume=lot; //********** 次の行を修正する //switch((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)) switch(position_type) //******************************* { case POSITION_TYPE_BUY: tp_request.type=ORDER_TYPE_SELL_LIMIT; tp_request.price=c_Symbol.NormalizePrice(open_price+i_TakeProfit.At(i)*c_Symbol.Point()); // (...) ご理解いただけたでしょうか?素晴らしい仕事をありがとう! Marcel Cardoso 2023.08.09 16:01 #59 皆さん、こんにちは! 無効な有効期限]の問題があるのですが、どなたか直し方をご存じですか? Alison Rossete 2023.12.26 20:23 #60 こんにちは。 LimitTakeProfitでEAをテストしたところ、以下のエラーメッセージが返ってきました。 取引要求構造と共に 有効期限を追加してみましたが、効果がありません。 どなたか助けてください。 モデレーターによる機械翻訳 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
読者の皆さん、こんにちは!
スタック・ オーバーフロー」のエラーにつまずいた人はいますか?
問題は "LimitTakeProfit.mqh "ライブラリにあると思います!
こんにちは、ドミトリー、
興味深い記事をありがとうございます!
以下の各行(54, 55, 56行目)のエラー "paramter passed as reference, variable expected "について教えてください。
CSymbolInfo CLimitTakeProfit::c_Symbol = new CSymbolInfo();
CArrayLong CLimitTakeProfit::i_TakeProfit = new CArrayLong();
CArrayDouble CLimitTakeProfit::d_TakeProfit = new CArrayDouble();
ありがとう!
ありがとう!
こんにちは。
こんにちは。
こんにちは、ドミトリー、
以下の行は、あなたの「LimitTakeProfit.mqh」に正確に書かれています:
より正確には、このようなエラーは 、あなたのEA " MACD Sample LImitTP.mq5 " のコンパイル時に発生します。
ご回答ありがとうございました!
やあ、ドミトリー、
あなたの "LimitTakeProfit.mqh "には次のような行があります:
より正確には、このようなエラーは 、あなたのEA " MACD Sample LImitTP.mq5 " のコンパイル時に発生します。
ご回答ありがとうございました!
こんにちは、あなたはpaprameterの前に*を追加する必要があります。
こんにちは、あなたはpaprameterの前に*を追加する必要があります。
こんにちは、ドミトリー、
同じ3行で次のようなエラーが出ます:
- parameter passed as reference, variable expected LimitTakeProfit.mqh 54 57
- redefinition; different type modifiers LimitTakeProfit.mqh 54 35
ご回答ありがとうございました!
こんにちは、ドミトリー、
この記事が少し前に発表されたことは知っていますが、お礼を言いたくて投稿しました!とても役に立ちますし、あなたの説明は実に明快で、クラスは魅力的に機能します。ありがとう!
投稿されたコードに小さなバグを見つけました。SetTakeProfits関数の途中で、次の行を見つけました:
これはすべてのTPを通るループの中にあります。問題は、ループの後半でCheckLimitOrder関数が呼び出され、その関数がCheckOrderInHistory関数を呼び出し、そこで別のポジションが選択される可能性があることです。つまり、ループの次の繰り返しでは、上記のコードにある「スイッチ」が異なる可能性があるということです。
これを解決するには、ループが始まる前にposition_typeを 変数に格納しておくべきだと思います。このように:
ご理解いただけたでしょうか?素晴らしい仕事をありがとう!
皆さん、こんにちは!
無効な有効期限]の問題があるのですが、どなたか直し方をご存じですか?
こんにちは。
LimitTakeProfitでEAをテストしたところ、以下のエラーメッセージが返ってきました。
取引要求構造と共に 有効期限を追加してみましたが、効果がありません。
どなたか助けてください。
モデレーターによる機械翻訳