質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MQL

MQL(Meta Quotes Language)は、Meta Trader4(MT4)で用いられるプログラミング用語です。MQLによりEAやインジケーターの作成が可能。C言語で書かれているため、C言語の知識があれば簡単に扱うことができます。

Q&A

解決済

1回答

2894閲覧

MQL5 特定の時間に一回だけ判定する

Fetherion

総合スコア60

MQL

MQL(Meta Quotes Language)は、Meta Trader4(MT4)で用いられるプログラミング用語です。MQLによりEAやインジケーターの作成が可能。C言語で書かれているため、C言語の知識があれば簡単に扱うことができます。

0グッド

1クリップ

投稿2020/08/27 09:43

###やりたいこと
0. 指定した時間になったら
0. 乱数を生成してPrint

とりあえずざっくりこれだけです。

###やってみたこと

MQL

1int select_hour = 10; // 判定に使いたい時間 2 3int OnInit() 4 { 5 MathSrand(GetTickCount()); 6 return(INIT_SUCCEEDED); 7 } 8 9void OnTick() 10 { 11 datetime tm = TimeCurrent(); 12 MqlDateTime stm; 13 TimeToStruct(tm, stm); 14 15 if(select_hour == StringToInteger(stm.hour)) 16 { 17 int rand_index = MathRand() % 2 + 1; 18 Print(rand_index); 19 } 20 }

というコードを書いてみました。
過去参照のデバックってのをすると、10時代に1又は2がひたすらprintされているような状況。

###次にやりたいこと
指定した時間に一回しかしなくていいんです。
そこで、とりあえず細かく10:00:00みたいな感じにしたらどうかな?って思って

MQL

1int select_hour = 10; 2int select_min = 00; 3int select_sec = 00; 4 5if( 6 select_hour == stm.hour && 7 select_min == stm.min && 8 select.sec == stm.sec 9) { 10 int rand_index = MathRand() % 2 + 1; 11 Print(rand_index); 12}

という感じで遠回りかもですが、書いてみましたが、、、、
一日の10:00:00っていうのが代替2~3個くらいある感じで、、、、
これだと表示が3回ずつとかなんですよね。

そうじゃなくて、
2020.08.04 10:00:00 1
2020.08.05 10:00:00 2
みたいな感じで10時の足の始値のタイミングだけやりたいのですが、ここからあと一つ、、、その判定の出し方はどのようになりますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

MQL

1datetime time_limit = 0; 2 3if(select_hour == stm.hour && select_min == stm.min && time_limit < tm) 4{ 5 time_limit = tm + 120; 6}

こういう感じでできました。

投稿2020/08/28 01:40

Fetherion

総合スコア60

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問