MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 506

 
Вадим Мотеюнас:
https://www.mql5.com/ru/docs/basis/operators
 
ArturR:

1.はい、コードにゼロバーのケースがあります、今どのケースがテストされたか確認する可能性はありません、今夜確認します。

2.チャートにコメントを出力して確認したところ、macd、High、Lowは値を取得しましたが、min(max)priceは対応する値を取得できませんでした。

これらの変数がどのように宣言されているかを確認する必要がありますね。関数に入るたびにゼロにリセットされるローカル変数 ではないかという疑いもあります。その結果、彼らが価値観を持っている瞬間は、単に見る時間がないだけなのです。値を見るには、ログの内容を見てください。何しろ、コードにPrintがあるのですから。

 

こんにちは。私は、1000行のcsvファイルから、Nフィールドからパラメータのマッチを選択し、見つかったレコードの他のフィールドから任意のタイプの値を返す必要があるタスクを持っています。ファイルを見ながらトレードの判断をする専門家がいるのかどうか教えてください。ありがとうございます。

 
mwwm:

こんにちは。私は、1000行のcsvファイルから、Nフィールドからパラメータのマッチを選択し、見つかったレコードの他のフィールドから任意のタイプの値を返す必要があるタスクを持っています。ファイルを見ながらトレードの判断をする専門家がいるのかどうか教えてください。ありがとうございます。

おそらく、コードベースでニュースと連動するものを探す必要があるのでしょう。

 
Ihor Herasko:

単に見る時間がないだけです。数値を見るには、ログブックの中身を見てください。何しろ、コードにPrintがあるのですから。

はい、そうです、ありがとうございます )この記録は、日記の他のゴミの中にあって、私は気がつかなかった。回答してくれた皆さん、本当にありがとうございました!これからも掃除を続けます)

 
値が次のロジックに対応するようにインデックスバーを計算する方法:グラフM30の現在の期間、および関数(MTF)と呼ばれる指標のタイムフレーム= H1、インデックスバー5、バーH1を閉じての事実、すなわち場合、グラフM5の現在の期間、および関数(MTF)と呼ばれる指標のタイムフレーム= H1、インデックスバー3、インデックスバー4、チャート M15、の現在の期間、関数と呼ばれる指標。
 
lil_lil:
どのようなバーインデックスの計算は、値が次のロジックに対応するように、行う必要があります:チャート M15の現在の期間と 関数(MTF)と呼ばれるインジケータタイムフレーム= H1、バー5のインデックス、すなわちバーH1を閉じての事実、チャートM30の現在の期間と関数(MTF)と呼ばれるインジケータタイムフレーム= H1、次にバー3のインデックスは、チャートM5の現在の期間と関数(MTF)と呼ばれるインジケータタイムフレーム= M15、バー4のインデックスは、場合。

ここでの間違いは、ロジックそのものにある。現在のTFはM15で、形成されたH1バーに対応する最後のM15バーは1、あるいは2、3、4となる可能性があるが、それ以上はない。例えば、現在の時刻は10時6分です。10時15分には、H1を形成した最後のM15バーのインデックスが2、10時30分には3、10時45分には4となり、状況は変化します。

数学的な計算は、ここではあまり役に立ちません。チャート上で対応するバーを探す必要があります。アルゴリズムは以下の通りです。

  1. ゼロバーH1の開放時間を決定する。(iTime)
  2. H1ゼロバーの開始時間に対応する、現在の時間枠の最初のバーのインデックスを特定する。(iBarShift)
  3. 見つかったバーインデックスに1を加算する。

 
Ihor Herasko:

ここでの間違いは、ロジックそのものにある。現在のTFはM15で、形成されたH1バーに対応する最後のM15バーは1、あるいは2、3、4となる可能性があるが、それ以上はない。例えば、現在の時刻は10時6分です。10時15分には、H1を形成した最後のM15バーのインデックスが2、10時30分には3、10時45分には4となり、状況は変化します。

数学的な計算は、ここではあまり役に立ちません。チャート上で対応するバーを探す必要があります。アルゴリズムは以下の通りです。

  1. ゼロバーH1の開放時間を決定する。(iTime)
  2. H1ゼロバーの開始時間に対応する、現在の時間枠の最初のバーのインデックスを特定する。(iBarShift)
  3. 見つかったバーインデックスに1を加算する。

このインジケータは、条件付きでH1という上位タイムフレームのゼロバーで、それぞれM15という現在のタイムフレームの4本すべてのバーについて描画します。そのため、H1終値にシグナルがあるかどうかを知るために、M15にインデックス5が必要なのです。きっと、高値圏と現値圏の組み合わせのバリエーションごとに条件をたくさん書かなくて済むように、この指数を算出することが可能なのでしょう。

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if(TimeFrame == PERIOD_H1&&Period()==M15) timef = 5;//timef = 4;

   if(TimeFrame == PERIOD_H1&&Period()==M30) timef = 3;//timef = 2;


Ajk=NormalizeDouble(iCustom(NULL,0,"Ajk",TimeFrame,4,i+timef),Digits);
 
lil_lil:

このインディケータは、上位のタイムフレーム(通常はH1)のゼロバーで、現在のタイムフレーム(M15)のすべての4つのバーの間にそれぞれ描画します。

それは、現在のタイムフレームのバーが1本、2本、3本と小さくなる可能性があるということです。つまり、常に4本のバーで読みが表示されるわけではありません。4本足で表示されるのは、ゼロバーH1に相当する現在のTFの最後のバーだけです。この問題の定式化では、ゼロバーH1に対応する現在のTFの最初のバーを見つけることだけが必要です。

int nCurTFBarIndex = iBarShift(NULL, 0, iTime(NULL, PEPRIOD_H1, 0));

そして、現在のTFのゼロバーから始まり、nCurTFBarIndexを含むまでのデータが表示されます。

そのため、H1の終値でシグナルが残っているかどうかを知るために、特にM15のTFでインデックス5が必要なのです。きっと、この指標を計算することで、上位と下位の組み合わせのバリエーションごとに、たくさんの条件を書かなくて済むようになるのでしょう。

どのTFからシグナルを取得するのか:現在のものから、H1から、または混合バージョンから?H1からだけなら、最後に形成されたバーが常にインデックス1を持っているので、何も探す必要はありません。

 
Ihor Herasko:

どのTFから信号を取得していますか:電流、H1、または混合バージョン?H1からだけなら、最後に形成されたバーが常にインデックス1を持っているので、何も探す必要はありません。

MTFインジケーターの外部設定にH1を入れて、M15チャートに貼り付けています。信号が4小節分点滅します。H1バーが閉じると信号は点滅せず、M15では4バーで信号の点滅が停止します。それぞれМ1に置くと、60小節で点滅が停止します。設定で選択した期間と、インジケータを取り付けた期間のチャートによってNが変化するように、指数i+Nを計算する必要があります。

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if(TimeFrame == PERIOD_H1&&Period()==M15) N = 5;// ВОЗМОЖНО НУЖНО N = 4;

   if(TimeFrame == PERIOD_H1&&Period()==M1) N = 61;//А ЗДЕСЬ ВОЗМОЖНО N = 60;