[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 209

 
polycomp:
これが関数で、オブジェクトはグラフ上に表示される長方形です。

ファイル:
 
polycomp:


ファイル:
 
見てみないとわからない、時間がかかる。
 
polycomp:
再初期化後にコードの動作が異なる理由として考えられるのは、MT4における静的変数の初期化の特殊性です。isNewBar()関数では、このような変数を使用します。一次初期化時 BarTime = 0.さらに再初期化すると、この変数には以前の値(0ではない)が格納されます。この仮定を確認するために、BarTime変数をグローバルにして、コードがどのように動くかを確認します。
 
polycomp:
alsu:

まず、Printでライブラリ関数が全く呼び出されないかどうかを知るために、何かをプリントアウトします。

グラフィカルなオブジェクトは、ライブラリ関数で作成されます。インジケータを最初に呼び出した後、オブジェクトが作成され、ターミナルウィンドウに表示されます。

再度呼び出すとオブジェクトのリストに存在しないことから、何らかの理由でインジケータを再計算する際に外部関数が動作していないと考えられ、この件に関してはターミナルは沈黙を守っています。

オッケーです。間接記号の代わりに、インジケータに(" この関数の呼び出し")と表示すれば、この関数が呼び出されたかどうかがすぐに分かる。

傲慢にならないほうがいい、そうすればエラーは早く見つかる)

 
polycomp:



一般的に、あなたの問題は、ほとんどの場合、関数

bool isNewBar()
{
  static datetime BarTime;  
   bool res=false;
    
   if (BarTime!=Time[0]) 
      {
         BarTime=Time[0];  
         res=true;
      } 
   return(res);
}

問題は、再初期化の際に静態がリセットされないので、再起動すると、BarTimeは常に前回カウントした最後のバーの時間に等しく、つまり、新しいローソクが 到着するまでisNewBar()は偽になることです。ライブラリからmqhインルダに関数を移動し、init()で明示的にBarTime=0をゼロにするのが良いだろう。

これは、コードを一目見ただけなので、私が間違っていてもあまり厳しく判断しないでください。

 
polycomp:



まず、ライブラリから次の行を削除することから始めます。

#property library

ライブラリではなく、インクルードファイルを使っているため

 
alsu:

私の記憶では、保留中の注文を設定するときに、この時間を特に覚えておく必要があります。オーダーへのコメントで直接記憶させることができます(特殊な変態としてマジコンでも可:)。
ありがとうございました。
 

QUESTION 1.

このアイデアをどうコード化するか。

注文を保留して おきながら、保留した注文の設定価格とTF60ローソク足の始値が一致した場合にのみ 成行 注文に変更する場合。

質問2.

このアイデアをどうコード化するか。

もし、保留中の注文が成行注文に変換された場合、10分後に、成行注文に変換された前の保留中の注文と 同じ 値: 始値 終値数量を 持つ別の保留中の注文を設定する必要があります。

ありがとうございます。

 
alsu:

オッケーです。間接的な記号で判断するのではなく、Print ("call of such and such function") とインジケータそのものを入力すれば、それが呼び出されたかどうかがすぐにわかるかもしれません。

過信は禁物で、そうすればエラーは早く発見されるでしょう)。

alsu:

そして、一般的には、あなたの問題は、ほとんどの場合、関数

再初期化する際に静的情報をゼロにしないため、再起動時にBarTimeは常に前回カウントした最後のバーの時間と同じになり、つまり新しいローソクが到着するまでisNewBar()は偽となります。ライブラリからmqhインルダに関数を移動し、init()で明示的にBarTime=0をゼロにした方が良いと思います。

これは、コードを一目見ただけなので、私が間違っていてもあまり厳しく判断しないでください。


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

ライブラリからisNewBar()を削除し、インジケータファイルに配置しました。すべてが時計のように正確に動いています。