初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 866

 
Aleksey Vyazmikin:

OK、思考のビジュアライゼーションに移行する :)

白はリクエストしている場所、黄色は取得すべきバータイムです。

これならわかりやすいですか?そうでない場合は、質問して明確にしてください。

Alexeyさん、上の投稿でREVEALタスクのリクエストをされていますが...。

"上のタイムフレームの選択されたバーを参照する、現在のタイムフレームの最後のバーの日付が必要 です。

これでいいですか?"

だから、本当に必要なものがわかりにくいんです。

前回のリクエストについて - 回答しました -https://www.mql5.com/ru/forum/6343/page869#comment_7537714.

最後の「思考の可視化」であれば、上位TFのバーの開始時刻を0シフトして尋ねるだけです。

よくわからないのですが、何が問題なのでしょうか?

Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2018.05.23
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...
 
Kirill Belousov:

Alexeyさん、上の投稿でRETURNタスクのリクエストをされていますが...。

"上のタイムフレームの選択されたバーを参照する、現在のタイムフレームの最後のバーの日付が必要 です。

これでいいですか?"

だから、本当に必要なものがわかりにくいんです。

前回のリクエストについて - 回答しました -https://www.mql5.com/ru/forum/6343/page869#comment_7537714.

最後の「思考の可視化」であれば、上位TFのバーの開始時刻を0シフトして尋ねるだけです。

よくわからないのですが、何が問題だったのでしょうか?

すみません、お返事を見逃していました。

キリル・ベローゾフ

あなたの要望を正しく理解したのであれば

1. 上位TFの必要なバーの終了時刻を決定する。

それができないんです!

キリル・ベローゾフ

後者で "思考の可視化で "その後、単に0のオフセットと上部TFのバーのオープン時間を要求する場合。

よくわからないのですが、何が問題なのでしょうか?

そのようにリクエストすると、10:00となり、23:49という時間が必要なのです

 
Aleksey Vyazmikin:

OK、思考のビジュアライゼーションに移行する :)

白はリクエストしている場所、黄色は取得すべきバータイムを示しています。

これならわかりやすいですか?そうでない場合は、質問して明確にしてください。

質問です。

10:30に、M5チャートで23:45の時刻の期間H1のバーの数を取得する必要があります。

うまくいったかな?

 
Alexey Viktorov:

質問です。

10:30に、M5チャートの23:45の時刻を持つH1期間のバー番号を取得する必要があります。

ちゃんと理解できたかな?

私はこの場合、時間 23:45を取得 する必要があります(実際には、私はM5ではなく、M1の現在のTFを持っていますが、それは重要ではありません) - それは、上記のTFの最後のバーの構造における現在のTFの最後のバーの時間です。チャート上のシフトはH1が1バーですが、別のシフトがあるかもしれません、例えば11時に情報を取得する必要があるとします、つまりシフトは2になりますね。

 
Aleksey Vyazmikin:

すみません、お返事を見逃していました。

それができないんです!

それをリクエストすると10:00になるので、23:49のタイムを出す必要があるんです

1. 高いTFに必要なシフト(バー)を定義します。- このバーの開始と終了の間の時間は(私が理解する限り)、その中の下位TFからのバーを分析しているのです。

2.開館時間を取得する

3.オープニングタイムに、このTFの継続時間(秒)を追加する。- すなわち、このようにしてメジャーTFのバーの終値を得ることになる。

ジュニアTFの継続時間(M1なら60秒)を引く - これがシニアTFの構造におけるジュニアTFの最後の小節の開始時間である。計算された時間をもとに、このバーのシフトを求めます。(メジャーTFのバーのクローズ時間から2~3秒を引き、この時間が指すジュニアTFのバーを見つけるだけでよい)。クエリが厳密でない場合、突然ジュニアTFの最後のバーが存在しない場合、(要求された時間から)左側の最も近い利用可能なバーを取得するだけです。

 
Kirill Belousov:

1.高いTFに必要なシフト(バー)を決定する。- このバーの開始と終了の間の時間は、(私が理解しているように)あなたは、その中の下位TFからのバーを分析しているのです。

2.開館時間を取得する

3.このTFの秒単位の継続時間をオープニングタイムに 追加する。- すなわち、このようにしてメジャーTFのバーの終値を得ることになる。

ジュニアTFの継続時間(M1なら60秒)を引く - これがシニアTFの構造におけるジュニアTFの最後の小節の開始時間である。計算された時間をもとに、このバーのシフトを求めます。(メジャーTFのバーのクローズ時間から2~3秒を引き、この時間が指すジュニアTFのバーを見つけるだけでよい)。要求が厳密でない場合、最も若い時間枠の最後のバーがない場合に備えて、(要求された時間から)左側に最も近い利用可能なバーを取得するだけです。

信じられないかもしれませんが、1時間前に同じようなアルゴリズムを紙に書いてみたんです!」。でも、ちょっと面倒なので、もっと簡単な方法があるのではと思いました。

ポイント4だけはうまくいかないかもしれません。私のチェックは逆に、状況が標準的でない場合は、バーが範囲外になるまで時間を循環させる必要があります。

 
このトピックに関連しないコメントは、「MQL4 MT4 MetaTrader 4初心者からの質問」に移動しました。
 

構造体の配列を宣言 したいのですが、構造体がコンストラクタを持つことができることをどこかで見るまでは問題ありませんでしたが...。

コンストラクタで構造体の配列を宣言するには?(このコンストラクタを取り除く方法は知っています)

が機能します。

struct MyStruct
  {
   int               arr[];
   int               size;
                     MyStruct(int sz){ if(ArrayResize(arr,sz)>0) size=sz; else Print(__FUNCTION__,"Ошибка инициализации массива"); }
                    ~MyStruct(){ ArrayFree(arr); size = -1; }
  };
//+------------------------------------------------------------------+
MyStruct cluster(100);

は機能しないが、機能させたい。

struct MyStruct
  {
   int               arr[];
   int               size;
                     MyStruct(int sz){ if(ArrayResize(arr,sz)>0) size=sz; else Print(__FUNCTION__,"Ошибка инициализации массива"); }
                    ~MyStruct(){ ArrayFree(arr); size = -1; }
  };
//+------------------------------------------------------------------+
MyStruct cluster(100)[47];
 

悪い解決策です。構造体の代わりにクラスを使用するのがよいでしょう。同じですが、ポインターで作業することができます。

class MyClass : 
  {
   public:
   int               arr[];
   int               size;
                     MyStruct(int sz){ if(ArrayResize(arr,sz)>0) size=sz; else Print(__FUNCTION__,"Ошибка инициализации массива"); }
                    ~MyStruct(){ ArrayFree(arr); size = -1; } // этого не надо
  };
//+------------------------------------------------------------------+
MyClass * cluster[47];

for(int n = 0; n < 47; n++)
        cluster[n] = new MyClass;

ブラウザで書いたから、失敗したとは思わないけど。1時間ほど駆け足になりました。

 
人前に変数を出すのは気が引けるけど、時間がないんだよね。
理由: