3ヶ月前に書いたEAが、今はストラテジーテストを通過できないが、2~3ヶ月前はうまく動作していた! - ページ 2

 
angevoyageur:
この行を追加する場所を言うことができるように、あなたのコードを表示します。

Bonsoir Angevoyageur。

これが私のコードです。2つの部分はonTickセクションで分離されています。

ありがとうございます。

Vivaldie


      MqlTick latest_price;      // To be used for getting recent/latest price quotes
      MqlTradeRequest mrequest;  // To be used for sending our trade requests
      MqlTradeResult mresult;    // To be used to get our trade results
      MqlRates mrate[];          // To be used to store the prices, volumes and spread of each bar
      ZeroMemory(mrequest);      // Initialization of mrequest structure
   if(ConditionDICrossMain = -1)
     {
      if(Buy_opened)
        {
         return;    // Don't open a new Buy Position
        }
      mrequest.action = TRADE_ACTION_DEAL;                                  // immediate order execution
      mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // latest ask price
      mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
      mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
      mrequest.symbol = _Symbol;                                            // currency pair
      mrequest.volume = Lot;                                                 // number of lots to trade
      mrequest.magic = EA_Magic;                                             // Order Magic Number
      mrequest.type = ORDER_TYPE_BUY;                                        // Buy Order
      mrequest.type_filling = ORDER_FILLING_FOK;                             // Order execution type
      mrequest.deviation=100;                                                // Deviation from current price
      //--- send order
        
      OrderSend(mrequest,mresult);
      // get the result code
      if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
        {
         Alert("A Buy order has been successfully placed with Ticket#:",mresult.order,"!!");
        }
      else
        {
         Alert("The Buy order request could not be COMPLETE -error:",GetLastError());
         ResetLastError();           
         return;
        }
     }
 
このページでは、エラーがACCOUNTセクションにあることがわかります。別のMT5と別のアカウントで試してみましたが、同じメッセージが表示されました。
 
Vivaldi:

Bonsoir Angevoyageur。

これが私のコードです。2つの部分はonTickセクションで分離されています。

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

Vivaldie


  • エラーがあるとき、mresult.retcodeの値は何ですか?
  • STP、TKPの値は何ですか?
  • OrderSendはboolを返したので、返された値もチェック する必要があります。
  • 2つの部分の間に何があるのかわからないので、"mrequest.action=TRADE_ACTION_DEAL" の直前に ZeroMemory(mrequest) を置くとよいでしょう。
 

ログにメッセージはなく、問題はストップロスに 起因すると書かれています。

0にするとうまくいくのですが : )

 
Vivaldi:

ログにメッセージはなく、問題はストップロスに 起因すると書かれています。

0にするとうまくいくのですが : )

ストップレベル(SLとTP)については、取引しているシンボルのSTOP_LEVELSの値を考慮する必要があります。このトピックを 参照してください。
 
angevoyageur:
  • エラー発生時のmresult.retcodeの値は?
  • STP、TKPの値は何ですか?
  • OrderSendはboolを返しますので、返された値もチェックする必要があります。
  • 2つの部分の間に何があるのかわからないので、"mrequest.action=TRADE_ACTION_DEAL" の直前に ZeroMemory(mrequest) を置くとよいでしょう。


Ange 今、私はそれを動作させることができます :) 問題はSTP変数に起因していました。

NormalizeDouble氏のために、(int 型ではなく)double 型の宣言を変更する必要があります。

ありがとうございます。

double STP, TKP;
 

エラーメッセージを解決するために、変数宣言を変更しましたが、解決しませんでした。問題はSTPとTKPの変数が0なので、sl = tpになってしまうことです。

 

を追加する必要があるのでしょうか?

ZeroMemory(request);

は、ビルド975(x86)のバグでしょうか?

最近、ストラテジーテスト中に4756のエラーに 遭遇し、上記の行を追加したら直りました。

 
k.doras:

を追加する必要があるのでしょうか?

は、ビルド975(x86)のバグでしょうか?

最近、ストラテジーテスト中に4756のエラーに 遭遇し、上記の行を追加したら直りました。

この行は必須です(またはリクエスト構造の初期化に相当します)。
 

ハイ

send order work indemo account but in real account don't work(2014.11.30 18:21:00.062 55 (اخابر,D1) BuyA: error 4756, retcode = 10006).

{
//--- prepare the request
   MqlTradeRequest request;
   MqlTradeResult  result;
   MqlTradeCheckResult check;
   ZeroMemory(request);
   ZeroMemory(result);
   ZeroMemory(check);
   request.action=5;
   request.symbol=_Symbol;
   request.volume=1000.00;
   request.price=2652.000;
   request.stoplimit=2652.000;
   request.sl=0;
   request.tp=0;
   request.type=6;
   request.type_filling=2;
   request.type_time=0;
   request.expiration=0;
   request.magic=0;
   request.comment="";

   if(!OrderSend(request,result))
     {
      Print(__FUNCTION__,": error ",GetLastError(),", retcode = ",result.retcode);
     }
//---


Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Structure of Request Check Results
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Structure of Request Check Results
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Structure of Request Check Results - Reference on algorithmic/automated trading language for MetaTrader 5