記事"MQL5でExpert Advisorを書くための初心者向けステップバイステップガイド"についてのディスカッション - ページ 21

 

こんにちは、

MQL5(そしてFOREX)の初心者ですが、長年のプログラマーです。My_First_EA.mq5ファイルを開いてコンパイルしましたが、Debug関数が 表示されません。例のスクリプトファイルを開くと、Debugオプションが表示されます。また、'OrderSend'の戻り値をチェックする必要があるという警告が表示されました。Debug機能を取得するにはどうすればよいですか?

ルイス

 
louisd:

やあ、みんな、

MQL5(そしてFOREX)の初心者ですが、長年のプログラマーです。My_First_EA.mq5ファイルを開いてコンパイルしましたが、Debug関数が 表示されません。例のスクリプトファイルを開くと、Debugオプションが表示されます。また、'OrderSend'の戻り値をチェックする必要があるという警告が表示されました。デバッグ機能を使用するにはどうすればよいですか?

ルイス

こんにちは、

私自身の問題がわかりました。Expert Advisor Wizard で新しいプロジェクトを作成し、My_First_EA.mq5 ファイルをコピーしたところ、デバッグ機能が使えるようになりました。

ルイ

 
louisd:

やあ、みんな、

私自身の問題がわかりました。Expert Advisor Wizard で新規プロジェクトを作成し、My_First_EA.mq5 ファイルをコピーしたところ、デバッグ機能が表示されました。

ルイス

しかし、「OrderSend should bechecked」警告は修正されましたか?
 
Boobwood:

私は4756エラーが発生しました。2ページ目で解決策を見ましたが、元のコードをチェックしたところ、218行目にZeroMemory(mrequest);がありました。


また、提案された両方の修正を行っても、まだこのエラーが出ます:

ZeroMemory(mrequest);

そしてまた

if(Buy_opened || Sell_opened)

どなたか4756エラーについて教えてください。買い注文ができないようです。

 
Tchuso:

こんにちは:

OrderSend'の戻り値は213行目と259行目をチェックする必要があります。


解決しましたか?

おはようございます、

私も同じことが起こりました。私は両方の操作でこれらの行をこのように置き換えることで解決しました。

if(!OrderSend(mrequest,mresult))
PrintFormat("OrderSend error %d",GetLastError());

助けが必要なら言ってください。

よろしく!

 

私も初めてなので、コメントにあるようにコードを修正したら、エラーが出なくなりました

問題は、ロボットが取引を開始しないことです。

この問題を解決できた人はいますか?


ストラテジーテスターの "Unico "オプションを使っています。


ご協力ありがとうございました。
 


ロボットが注文を オープンしようとしますが、いつもエラーが出ます:


終了:

2020.05.06 20:35:16.141 Core 1 2020.04.20 20:25:00 failed market sell 0.10 EURUSD sl: 1.08965 tp: 1.07665 [Invalid request].


コードをいくつか変更しましたが、うまくいきません:


オリジナル:mrequest.type_filling = "私はドキュメントにある3つの方法でそれを入れています。

 mrequest.action = TRADE_ACTION_DEAL;                                  // 即時注文の実行
         mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // 最新の売値
         mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // ストップ・ロス
         mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // テイクプロフィット
         mrequest.symbol = _Symbol;                                            // 通貨ペア
         mrequest.volume = Lot;                                                 // 取引ロット数
         mrequest.magic = EA_Magic;                                             // 注文マジックナンバー
         mrequest.type = ORDER_TYPE_BUY;                                        // 購入オーダー
         mrequest.type_filling = ORDER_FILLING_RETURN;                             // 注文の実行タイプ
         mrequest.deviation=100;                      
        



Tambien he probado este codigo:

 //--- リクエストと結果の宣言と初期化
               MqlTradeRequest request={0};
               MqlTradeResult  result={0};
            //--- アプリケーション・パラメーター
               request.action   =TRADE_ACTION_DEAL;                     // 事業の種類
               request.symbol   =Symbol();                              // 記号
               request.volume   =0.1;                                   // 0.1ロット分
               request.type     =ORDER_TYPE_BUY;                        // 注文タイプ
               request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // 初値
               request.deviation=5;                                     // 許容価格乖離
               request.magic    =EA_Magic;                          // オーダーの魔法番号

               //--- アプリケーションの送信
               if(!OrderSend(request,result))
               PrintFormat("OrderSend error %d",GetLastError());     // リクエストを送信できなかった場合は、エラーコードを入力する。
               //--- 手術に関する情報
               PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
 
Libni Colina:


ロボットが注文を開こうとするのですが、いつもエラーが出ることに気づきました:


終了:

2020.05.06 20:35:16.141 Core 1 2020.04.20 20:25:00 failed market sell 0.10 EURUSD sl: 1.08965 tp: 1.07665 [Invalid request].


私はコードのいくつかのことを変更しましたが、それは動作しません、私は私が持っているコードを追加します:


元のコード:mrequest.type_filling = "ドキュメントにある3つの方法で入れています。


これをコードの一番上に追加してください:

#include <Trade\Trade.mqh>

そして、オペレーションを開くには次のように入力します:

double volumen= 0.01; // または、お好きな音量で

CTrade m_trade;

m_trade.Buy(volumen); // 購入

m_trade.Sell(volumen); // 販売
 
こんにちは、チュートリアルをありがとうございました。New_Time変数は宣言され、CopyTimes関数で 初期化されましたが、Old_Timeは宣言されましたが、最初は初期化されず、新しいバーがあるかどうかを確認するためにNew_Time変数と比較されました。Old_Timeは空のはずである。うまく説明できたかわからないが、読んでくれてありがとう。
 

こんにちは、


同様に、テストを実行するとエラーコード4756が表示され、"Sell order request could not be completed " と表示されました。

これを解決する方法を教えてください。


ありがとうございます。