Metatrader 5で動作しないアドバイザーは1つもありません。 - ページ 7

 

そして、ここに原因がある。

10030

trade_retcode_invalid_fill

未対応の残高注文の実行タイプが 指定された

すでに述べたとおりです。

 
Karputov Vladimir:

そして、ここに原因がある。

10030

trade_retcode_invalid_fill

未対応の残高注文の実行タイプが 指定された

は、すでに述べたとおりです。


実行形式をどうするか?ORDER_FILLING_RETURN
 
だから、正しいORDER_FILLING_は、RETURNにFOGがあるかも しれない...。私もMT5で試しましたが、取引中にコードが少しでも干渉すると100ドル損してしまいました。新しいコードも私の機能を追加するまでデモでは動きませんでした。そういう設計になっているのかもしれませんね.何のために...?MT5で始めたものの、ずいぶん前にMT5を放棄してしまいました。
 
chipo:
だから、正しいORDER_FILLING_は、RETURNにFOGがあるかも しれない...。私もMT5で試しましたが、取引中にコードが少しでも干渉すると100ドル損してしまいました。新しいコードも私の機能を追加するまでデモでは動きませんでした。そういう設計になっているのかもしれませんね.何のために...?MT5を始めたものの、ずいぶん前に断念しました。信頼性が高く、使いやすそうだったので...。
1標準のExpert Advisorには、ORDER_FILLING-ORDER_FOK- FOKの行は存在しません。
 
すべての標準EAは標準ライブラリで 構築されているため、ライブラリを編集する必要があります。
 
Alexander Bereznyak:
すべての標準的なEAは、標準的なライブラリの 上に構築されているため、ライブラリは修正する必要があります

標準ライブラリを編集する必要はない - これは間違ったアプローチです。EAを新しい名前で保存して、コードを少し変えればいいのです。例えば、Moving Averages.mq5をMoving Averages1.mq5という新しい名前で保存します。

ヘッダーに、このEAがORDER_FILLING_RETURN実行ポリシーを使用しているという説明を追加 します。

#property version   "1.00"
#property description "Политика исполнения: ORDER_FILLING_RETURN"
#include <Trade\Trade.mqh>

を追加し、ポジションのクローズとオープンの関数に1行のコードを追加 します。

//+------------------------------------------------------------------+
//| Check for open position conditions                               |
//+------------------------------------------------------------------+
void CheckForOpen(void)
  {
   .
   .
   .
//--- additional checking
   if(signal!=WRONG_VALUE)
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
         if(Bars(_Symbol,_Period)>100)
           {
            CTrade trade;
            trade.SetTypeFilling(ORDER_FILLING_RETURN);
            trade.PositionOpen(_Symbol,signal,TradeSizeOptimized(),
                               SymbolInfoDouble(_Symbol,signal==ORDER_TYPE_SELL ? SYMBOL_BID:SYMBOL_ASK),
                               0,0);
           }
//---
  }
//+------------------------------------------------------------------+
//| Check for close position conditions                              |
//+------------------------------------------------------------------+
void CheckForClose(void)
  {
   .
   .
   .
//--- additional checking
   if(signal)
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
         if(Bars(_Symbol,_Period)>100)
           {
            CTrade trade;
            trade.SetTypeFilling(ORDER_FILLING_RETURN);
            trade.PositionClose(_Symbol,3);
           }
//---
  }
 
Karputov Vladimir:

標準ライブラリを編集する必要はない - これは間違ったアプローチです。EAを新しい名前で保存して、コードを少し変えればいいのです。例えば、Moving Averages.mq5をMoving Averages1.mq5という新しい名前で保存します。

ヘッダーに、このEAがORDER_FILLING_RETURN実行ポリシーを使用しているという説明を追加 します。

を追加し、ポジションのクローズとオープンを行うコードを1行 追加します。

素晴らしいすべてがうまくいく。お疲れ様でした!説明もありがとうございました。
 
トピックは削除されないのでしょうか?将来的に必要になるかもしれないので :)