PROFIからSUPER PROFIへの質問-1. - ページ 43

 
fxsaber:

理解できない。もし、データベースの中で何かが変わったとしたら、それを知るには、以前の状態と比較するしかない。

対応するデータベースの各要素を比較することができます。あるいは、それらからハッシュを計算し、ハッシュを比較することも可能です。

端末はすでにこの変更について知っています(OnTrade)。だからこそ、自分の機能で知りたい。

 
fxsaber:

特にMT4では、time_mscのステップ変化が1000msとなるため、関連性が高い。

残念、今のところ私が知っている最もシンプルなオプションが使えなくなる。

 
Andrey Khatimlianskii:

端末はすでにこの変更について知っています(OnTrade)。だからこそ、自分の機能で知りたい。

MT4にはトレードイベントがありません。

 
fxsaber:

MT4でトレードイベントが発生しない。

ただ、MKLにルーティングされていないだけです。端末は、タイマーで取引リストを更新しない。

 
Andrey Khatimlianskii:

ただ、MCLに配線されて いないだけなんです。端末は、タイマーで取引リストを更新しない。

したがって、検証を通じてのみ。

 
Andrey Khatimlianskii:

1.関数呼び出しが前の呼び出しと同じティックにあることを知るための最も安価な方法は何ですか?

時間(TimeCurrent)は、理論的にはSymbolInfoTickからms単位の時間で、変わらないことがあります。

ビッドタイム、アスクタイム、msタイムを比較すると、かなり高額になります。

Expert Advisor 自体で制御を整理することは提案せず、普遍的な独立した機能を取得したい。


トレーディング業務に関しても 同じ疑問があります。注文/ポジションのリスト(オープンレベル、SL、TPを含む)に、前回実行時から何か変化があったことを知るにはどうしたらよいでしょうか。

OnTradeに何かフラグを立てる(終わったらリセットする)のが一番安上がりな方法ですね。

しかし、やはり、普遍的な解決策が欲しいところです。


誰かアイデアはありませんか?

そうですね。

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   int count = 0;
   if ( A ) some_func( count );
   if ( B ) some_func( count );
   if ( C ) some_func( count );
}
//+------------------------------------------------------------------+
void some_func( int& count )
{
   if( count++ > 0 )
      return;
      
   // recalculate only once on each tick
}
//+------------------------------------------------------------------+
 
Koldun Zloy:

なるほど。

ありがとうございます。

アンドレイ・ハチムリアンスキー

EA本体で制御を整理するという選択肢は提案しない、普遍的な独立した機能が欲しい。

 
Andrey Khatimlianskii:

ありがとうございます。

まだ提案されていないので、私ならどこを掘るかというと、最後のPostMessageの時刻を調べるとか、多分ナンセンスだと思います、私はそこまでApiに詳しくないですから。

 
Aleksey Mavrin:

最後のPostMessageの時刻を確認するとか、多分ナンセンスだと思います、Apiのことはそんなに詳しくないので。

はい、ナンセンスに見えますが)

試していただきありがとうございます。

 
Andrey Khatimlianskii:

EA自体でコントロールしないと非現実的。

そればかりか、必要ない。要求された関数はEAで呼び出されます。つまり、EAでは基本的に同じ制御を行いますが、侵襲性が低いだけです