if(iOpen(Symbol(),PERIOD_D1,0)!=open) { if(TimeHour(open)==0) { Alert("New Day !!"); } open=iOpen(Symbol(),PERIOD_D1,0); // assign new value every hour }
ビールを何杯か飲んだので、その考えがわかると思いますが、あらゆる点で間違っていると思います。
オープンはタイムに置き換えなければならないと思います。
iTime(
あるいは、そうすることもできるかもしれません。
if(TimeHour(TimeCurrent())==0) { Alert("NEw DAy m8"); }
iTime( Symbol(), PERIOD_D1, 0 ) // this code gives me Hour 00:00 - but actually D1 time should show Hour 01:00 | this mean my broker shows absolutely wrong Hour for period PERIOD_D1 // But I need to write code to get first H1 bar Time of the day ( e.g: if first H1 bar 00:00 or 01:00 or ... ) instead of PERIOD_D1 // But I really struggle to write code for get today first H1 time
Q: How can I keep only Hour 1 in below outcome, please? ( Actually I found how can I keep only " 1 " from below outcome - but I need professional method, please ) ( e.g: result: 2017.02.2701:00:00 - But I need to keep only:1 ).
2017.00.0000:00:00.000 Custom Indicator EURUSD,M5: Bar Time: 2017.02.2701:00:00
Period_Look=iTime(Symbol(),PERIOD_W1,0); // actually I need PERIOD_D1 - but did not work correctly - I still need to see first Hour of Monday for test. Period_Shift=iBarShift(Symbol(),PERIOD_H4,Period_Look); Period_Time=iTime(Symbol(),PERIOD_H4,Period_Shift-1);
その日の最初のバーは、TimeHour()がカウントを開始した後の最初のバーであるべきです。
それはもちろん、M1、M5、M15などのすべての新しいバーを開始する何かの最初のバーとなります。
私はすぐにそれを試してみます、また、私はこの問題に取り組んでいます。
どうもありがとうございました。
私はまだフォーラムを読み、研究し、私は同様のフォーラムを見つけることができますが、私が望むものを正確に見つけることができません。(多分私は彼らのコードスタイルまたは...を理解していない)。
私はすぐにスクリーンショットを作成し、私はあなたが私を明確に理解するのに役立つことを願っています。
事前にありがとうございます。
open=iOpen(Symbol(),PERIOD_D1,0);
// put in ontick
if(iOpen(Symbol(),PERIOD_D1,0)!=open)
{
if(TimeHour(open)==0)
{
Alert("New Day !!");
}
open=iOpen(Symbol(),PERIOD_D1,0); // assign new value every hour
}
ビールを何杯か飲んだので、その考えがわかると思いますが、あらゆる点で間違っていると思います。
オープンはタイムに置き換えなければならないと思います。
あるいは、そうすることもできるかもしれません。
{
Alert("NEw DAy m8");
}
私はビールを数杯飲んだので、私はあなたがアイデアを得ることを願っています......それはすべての可能な方法で間違っていると確信しています。
ps. 他のスレッドはどうなったのでしょうか?または多分あなたはさえすることができます。
( 私はコードソースのセクションで私の問題を説明しようとしました )
// this code gives me Hour 00:00 - but actually D1 time should show Hour 01:00 | this mean my broker shows absolutely wrong Hour for period PERIOD_D1
// But I need to write code to get first H1 bar Time of the day ( e.g: if first H1 bar 00:00 or 01:00 or ... ) instead of PERIOD_D1
// But I really struggle to write code for get today first H1 time
---
P.S
なぜ私がサブトピックを開けないか考えていますか?
私はまだそれに取り組んでいます。私はフォーラムで解決策を見つけることができます。今、それはまた少しゆっくりと良い行っています。
さらに。
トレードパネル EAを書き始めたとき、4つの機能スクリプトを書く必要があると思いました。 売る、買う、すべての注文を閉じる、EXIT(削除)EAです。
しかし、このEAが3,000行を超えた今、私は多くのアイデアを得ることができました。
それでも、あと10個くらいは書けそうな気がする。
また、私のトレードパネルEAが完成したら、私がどのようにトレードパネルEA用のスクリプトを書き始めたか、ちょっとした物語を書くかもしれませんね。(まだ完成していないのですが、誰が見ても「すごい!」と思うはずです。うわー、すごい!」と言うでしょう。と言われると思います。)
---
マルコ さん、ありがとうございます。
皆さん(私のコメントに返信してくださった方々)、本当にありがとうございました。
#property show_inputs
#define HOUR 3600
#define DAY 86400
extern int local_offset = 1; // local time offset from broker (hours)
void OnStart()
{
local_offset*=HOUR;
int D1_shift = (TimeCurrent()%DAY > local_offset) ? 0 : 1;
datetime broker_midnight = iTime(_Symbol,PERIOD_D1,D1_shift);
datetime local_midnight = broker_midnight + local_offset;
int M5_shift = iBarShift(_Symbol,PERIOD_M5,local_midnight);
datetime M5_time = iTime(_Symbol,PERIOD_M5,M5_shift);
double M5_open = iOpen(_Symbol,PERIOD_M5,M5_shift);
printf("M5_time: %s M5_open: %f", TimeToString(M5_time),M5_open);
}
あなたの素晴らしい例をありがとうございます。
たぶん、私は時間があれば、私は明日、ビデオ/画像で説明しようと思います。
私はこの問題について一生懸命研究しています。
( また、私は google seo でこのキーワードのように検索します (seoでは今のところ役に立たないコメント です): site:mql4.com | site:mql5.com first bar of the day )
ローカル > ブローカーの時間オフセットを自動的に 検出する方法をお探しですか? 例:+1時間
手動で 設定する場合(ローカル時間ではなく、別のタイムゾーンを使用したい場合もあるので、この方がよいでしょう)、上記の私のスクリプトのような手順を踏んでください。
1.ブローカー時間の深夜を取得する(iTimeを使用するか、計算によって)。
2.オフセット設定により、現地の深夜に変換する。
3.3.選択したタイムフレームで正しいバーを取得するために、iBarShiftを通してローカルの深夜0時を入れます。
ローカル>ブローカー時間のオフセットを自動的に 検出する方法をお探しですか? 例:+1時間
手動で 設定する場合(ローカル時間ではなく、まったく別のタイムゾーンを使用したい場合もあるので、この方がよいでしょう)、上記の私のスクリプトと同じ手順で行います:
1. ブローカー時間の深夜を取得(iTimeまたは計算で)
2.オフセット設定により、ローカルな真夜中に変換する
3.3. ローカルな真夜中をiBarShiftに通して、選択したタイムフレームで正しいバーを取得する。
私が自動的に...する方法を探していること - あなたは絶対に私を正しく理解しています。
私はいくつかの重要な 指標を持っている(自作 - 別のフォーラムで助けた)私は手動方法を選択した場合 - 私は彼らの設定を変更することができます...それは長い道のりです - 私はとても怠惰です。
多分私は解決策を見つけた(この時点でそれが動作しているように見える - 私はすでに正しい時間を得るために2つの異なるブローカーを試してみました)。
私は質問が経験の不足から来ることを信じる。
Q: How can I keep only Hour 1 in below outcome, please?
( Actually I found how can I keep only " 1 " from below outcome - but I need professional method, please )
( e.g: result: 2017.02.2701:00:00 - But I need to keep only:1 ).
本当にありがとうございました。
( 私がどのように解決策を見つけたかを共有します。- もし、あなたが助けてくれなかったら、私は解決策を見つけることができません - もう一つの感謝。)
私はちょうど下のコードを探していました。
しかし、私はまだそれをテストする必要があります。
Period_Shift=iBarShift(Symbol(),PERIOD_H4,Period_Look);
Period_Time=iTime(Symbol(),PERIOD_H4,Period_Shift-1);
GMT_Offset=(Period_Time-iTime(Symbol(),PERIOD_W1,0)-PeriodSeconds(PERIOD_D1))/PeriodSeconds(PERIOD_H1); // result: 1
もし上記のコードが正しくない場合は、私に教えてください。
どうもありがとうございました。
もし、パターンをスキャンしていて、それが形成されたら、トリガーはタイムスタンプに関係なく作動します。
つまり、トリガーは異なるブローカーで複数のタイムスタンプを持つことができますが、トリガーの正確な瞬間はすべてのブローカーでほぼ同じになります。
正確ではありませんが、十分に近いです。