boolFact_1 = false; // Глобальная перемен.boolFact_2 = false; // Глобальная перемен.//--------------------------------------------------------------------intstart()// Спец. функция start{// Локальная перемен.if(Fact_2==true)//Если сообщение уже..return; //..было, то выходимif(Mas_Tip[0]+1)Fact_1 = true; // Произошло событие 1return; // Выход из start()}//--------------------------------------------------------------------// Пользовательс. ф-ия{// СообщениеFact_2 = true; // Произошло событие 2return; // Выход из польз.ф-ии
まあ、私のローカルタイムはサーバータイムより1時間長いのですが。
では、この数値のどこがわかりにくいのか、説明していただけますか?
この値には何の混乱もなく、正しいのですが、そういう話ではないのです。
特に金曜日の問題は、あなたの現地 時間がブローカーの時間よりX時間長い場合は関係ありません。
しかし、あなたのローカルコンピュータ上でブローカーとの間に+1ではなく、-1時間の差がある場合を想像してみてください。
そして、このシンプルな条件があります。
この場合
1.ブローカーは金曜日の最初のティック、例えば今日のティックは、2014.11.07 00:00の時刻を持っています。
2.1970年01 月01日00:00から当該ティックまでの経過秒数、すなわち2014.11.07 00:00を 取る。
3. 1970年01 月01日00:00から2014年11月06 日21:30までの 経過秒数を取る(ローカルPCの時刻を取るので昨日の日付になる、刻んだ時点では金曜日ではなく6日目の木曜日、より正確には2014.11.06 23:00 で1時間差となる)。
ほら、ポイント2の方がポイント3より秒数が大きい。
StringToTime() 関数がブローカーのサーバーから日付を取得する場合、すべてが計画通りに動作し、時間が21:30を 超えた後、金曜日に印刷がポップアップ することになりますが、これは、最初の金曜日のティックがコードで指定した印刷を実行することを意味します。
こんにちは。
こんなタスクがあるんです。(ティックに添付することができません)。
保留中の注文がトリガーされた場合{then...}。
私のEAでは、Terminal.mqhを使って注文の計算をしています。
ターミナル // Mas_Tip[0]オープン 買い
// 買い注文の数が1つ 増えた場合
if (Mas_Tip[0]+1)
{
機能
}
すべてがうまくいく。しかし、次のティックごとにトリガーされます。
このケースをダニに付けるには?そして、前のティックと現在のティックの値を比較します。
ハイライトされた行を私たちの言語に翻訳してもらえますか?あるべき姿と、この行を実行したときに得られるもの...。
//買い注文の数が1つ増えたら...
{
機能 例:他の注文をオープンまたはクローズする...
}
こうでなくちゃいけないif (Mas_Tip[0]+1)if (Mas_Tip[0] >Mas_Tip[1]) // CellよりBuy注文が 多い場合に行うことができる。保留中のものを開く、など。
ポイントは、次のティックでこのデータが再び真になることです。
//買い注文の数が1つ増えたら...
{
機能 例:他の注文をオープンまたはクローズする...
}
if (Mas_Tip[0]+1)
ifの括弧内にはbool、つまりtrueかfalseを指定する必要があります。
ここでは、明らかにintである。それは整数です。
もちろん、trueは1、falseは0です(私の勘違いでなければ)。でも、やっぱりおかしい。Mas_Tip[0] は何を返すのですか?
if (Mas_Tip[0]+1)
の括弧内のifはbool、すなわちtrueかfalseでなければならない。
しかし、ここでは明らかにintである。それは整数です。
もちろん、trueは1、falseは0です(私の勘違いでなければ)。でも、やっぱりおかしい。Mas_Tip[0] は何を返すのですか?
買いの未決済注文の数。
//買い注文の数が1つ増えたら...
{
機能 例:他の注文をオープンまたはクローズする...
}
いや、それがいいんだろう。実はそうではないんです。配列Mas_Tip[0]に何らかの値があり、それが0より大きい場合、条件if(Mas_Tip[0])が真となる。そして、この値に1を足すと、未決済注文の数が-1になることはありえないので、常に真となるのです。
いや、それがいいんだろう。実は、そうではないんです。配列Mas_Tip[0]に何らかの値があり、それが0より大きい場合、条件if(Mas_Tip[0])は既に真となる。そして、この値に1を足すと、未決済注文の数が-1になることはありえないので、常に真となるのです。
こんな風にやってみました
}
一過性のものであることがわかります。
if (Mas_Tip[0]+1)
の括弧内のifはbool、すなわちtrueかfalseでなければならない。
しかし、ここでは明らかにintである。それは整数です。
もちろん、trueは1、falseは0です(私の勘違いでなければ)。でも、やっぱりおかしい。Mas_Tip[0] は何を返すのですか?
falseは0、0でない場合はtrueとなります。
この行を試してみてください
コンパイラは精度が 落ちる可能性があると警告するかもしれませんが、動作はします。Mas_Tip[0] を破棄することができます。
イベントの取得方法A Buyがオープンしました。
Mas_Tip[0] を破棄することができます。
イベントの取得方法A Buyがオープンしました。