MetaTrader 4 Build 529 ベータ版リリース、新コンパイラー搭載 - ページ 126

 
Wahoo:


物理的な意味は、EAの入力パラメータに文字列として入力されたシンボルが取引可能かどうかを確認することです。MT5で同じコードが動作します。

お渡ししたコードはあくまで一例です。ちょっと違うけど、意味は変わらない。

P.S. テスターのエラー138は?

コード

結果

チェックする。

if (OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0) {
   Print("ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+digits);
   }
原因を見ようとしないのはなぜ?
 
Renat:
合格結果は無駄で廃棄されたということです。


翻訳ありがとうございました。翻訳に苦労して、理解できなかった...。

しかし、古いビルドでは最適化に約3時間かかり、約2000の収益性の高いEAパラメータを見つけることができます。新しいビルドは、最初は半分あるいはそれ以下の時間、正常に最適化され、有益なパラメータを見つけ、その後突然中断して最適化を終了します。

繰り返しになりますが、この奇妙な最適化の動作については、1ヶ月ほど前に書きました。 修正されたようです。今、私は同じ問題を抱えています。

 
artmedia70:

チェックする。

原因を見抜けずにいるのはなぜ?


邪魔なものは何もない。

void OnTick()
  {
   if(OrdersTotal()==0)
     {
      string SYMBOL=Symbol();
      int digits=(int)SymbolInfoInteger(SYMBOL,SYMBOL_DIGITS);
      MqlTick lasttick={0};
      if(!SymbolInfoTick(SYMBOL,lasttick))
         return;
      double ask=lasttick.ask;
      double bid=lasttick.bid;

      if(OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0) 
        {
         Print("ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+(string)digits);
        }
     }
  }

 
Metacquotesへの質問: なぜiVolumeの タイプをdoubleから ulongに変更したのですか?なぜ、1つのテクニカル指標だけ種類を変える必要があったのか?なぜ、そのままではダメだったのか。
 
Wahoo:


邪魔なものは何もない。


とにかく、ここからが本番です。SymbolInfoTickは まだ少し曲がっているようです(履歴からではなく、本当の最終価格をコピーしているようです)。

void OnTick()
  {
   if(OrdersTotal()==0)
     {
      string SYMBOL=Symbol();
      int digits=(int)SymbolInfoInteger(SYMBOL,SYMBOL_DIGITS);
      MqlTick lasttick={0};
      if(!SymbolInfoTick(SYMBOL,lasttick))
         return;
      double ask=lasttick.ask;
      double bid=lasttick.bid;

      if(OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0)
        {
         Print(SYMBOL+" ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+(string)digits);
         if(OrderSend(Symbol(),OP_BUY,0.1,NormalizeDouble(Ask,Digits),100,0,0,"Test",0,0,CLR_NONE)>0)
            Print("Opened using Ask ="+DoubleToStr(Ask,Digits));
        }

      //=== Final Check
      SymbolInfoTick(SYMBOL,lasttick);
      Print("Ask: "+(string)Ask+"  lastick.ask: "+(string)lasttick.ask);

     }
  }

結果

 
MT5との互換性のため、ボリュームを変更する必要がありました。MT4の内部バーが5と同じになりました。
 
Renat:
MT5との互換性のために、Volumeを変更する必要がありました。これでMT4の内部バーが5と同じになりました。

あなたのデモ口座でのテスト結果と、例えば私のクライアントがテストしているアルパリ口座でのテスト結果に強い食い違いがあるのは、これが理由であるはずがない。

以前は、相場が違っても、1つのEAがアカウントによってこれほど全く違うパフォーマンスを発揮することはなかったのです。さて、ビジュアルモードでは、あるテストではポジションが明らかにプラスかマイナスであることがわかるが、別のテストでは全く逆の状況であることがわかる。

 
すべてのログとの不一致を細かく見ていく必要があります。一般的な見方では結論が出せない、つまり詳細が必要なのです。
 
Renat:
すべてのログとの不一致を細かく見ていく必要があります。一般的な見解では結論は出せない。 つまり、詳細が必要なのだ。
なるほど、後で詳しく説明します。今は、アルゴリズムを正しく理解することが主な議題です。
 
MT 560、ME 881。また、ServiceDeskに記載されている、アップデートの際に一旦クローズしたように見える古いバグの復活についてです。