2017.01.13 10:00:03.210 Trades 'xxxxx': sell limit 1.00 MXI-6.17 at 2300.75
2017.01.13 10:00:03.216 Trades 'xxxxx': accepted buy limit 1.00 MXI-6.17 at 2230.15
2017.01.13 10:00:03.218 Trades 'xxxxx': accepted sell limit 1.00 MXI-6.17 at 2300.75
2017.01.13 10:00:03.219 Trades 'xxxxx': failed buy limit 1.00 MXI-6.17 at 2230.15 [Market closed]
2017.01.13 10:00:03.220 Trades 'xxxxx': failed sell limit 1.00 MXI-6.17 at 2300.75 [Market closed]
添加物
注文を 出す前に取引時間を確認します
//+------------------------------------------------------------------+
//| Expert Check traiding time function |
//+------------------------------------------------------------------+
bool CheckTradingTime(MqlDateTime &tick_time)
{
datetime lk_time = TimeCurrent(tick_time);
if ( ( tick_time.day_of_week == int(FirstDay)) ||
( tick_time.day_of_week == int(SecondDay)))//выходные
{
return(false);
}
#ifdef DEBUG
if ((tick_time.hour >= 0) && (tick_time.hour < 6)) // DEBUG 6-00
{
return(false);
}
#else
if ((tick_time.hour >= 0) && (tick_time.hour < 10))
{
return(false);
}
#endif
// 13 * 3600 + 59 * 60 + 30 = 50370 - 13:59:30
// 14 * 3600 = 50400 - 14:00:00
// 14 * 3600 + 30 = 50430 - 14:00:30
// 14 * 3600 + 60 = 50460 - 14:01:00
// 18 * 3600 + 44 * 60 + 30 = 67470 - 18:44:30
// 18 * 3600 + 45 * 60 = 67500 - 18:45:00
// 18 * 3600 + 45 * 60 + 30 = 67530 - 18:45:30
// 18 * 3600 + 46 * 60 = 67560 - 18:46:00
// 19 * 3600 = 68400 - 19:00:00
// 19 * 3600 + 60 = 68460 - 19:01:00
// 23 * 3600 + 49 * 60 + 30 = 85770 - 23:49:30
// 23 * 3600 + 50 * 60 = 85800 - 23:50:00
// 23 * 3600 + 50 * 60 + 30 = 85830 - 23:50:30
// 23 * 3600 + 51 * 60 = 85860 - 23:51:00
//---
ulong trade_time = tick_time.hour * 3600 + tick_time.min * 60 + tick_time.sec;
//--- //10:00:02
if(((trade_time >= time_st_mon) && (trade_time < 50370)) ||
((trade_time >= time_st_day) && (trade_time < 67470)) ||
((trade_time >= time_st_evn) && (trade_time < 85770)))
{
return(true);
}
return(false);
}
ulong time_st_mon = GetStringTime(TimeStMon);
{
int k = 0;
string s_sec, s_min, s_hour;
int str_size = StringLen(a_string);
//---
if(str_size != 8) return(0);
//---
for(int i = str_size - 1; i >= 0; i--)
{
ushort let_symbol = StringGetCharacter(a_string, i);
if(let_symbol == ':')
{
k++;
switch(k)
{
case 1:
s_sec = StringSubstr(a_string, i + 1, str_size - i - 1);
break;
case 2:
s_min = StringSubstr(a_string, i + 1, str_size - i - 4);
s_hour = StringSubstr(a_string, 0, i);
break;
}
//---
}
}
if(k != 2) return(0);
ulong t_sec = ulong(StringToInteger(s_sec));
ulong t_min = ulong(StringToInteger(s_min)) * 60;
ulong t_hour = ulong(StringToInteger(s_hour)) * 3600;
//---
return(t_hour + t_min + t_sec);
}
あなたたちは開発者だ!
端末の時刻とExchangeの時刻を同期させるのはいつですか?
2017.01.13 10:00:03.969 Trades 'xxxxx': sell limit 1.00 ED-6.17 at 1.0813
2017.01.13 10:00:03.975 Trades 'xxxxx': accepted buy limit 2.00 ED-6.17 at 1.0642
2017.01.13 10:00:03.975 Trades 'xxxxx': accepted sell limit 1.00 ED-6.17 at 1.0813
2017.01.13 10:00:03.978 Trades 'xxxxx': failed buy limit 2.00 ED-6.17 at 1.0642 [Market closed]
2017.01.13 10:00:03.979 Trades 'xxxxx': failed sell limit 1.00 ED-6.17 at 1.0813 [Market closed]
取引所とブローカー、どちらが世界の時間に唾を吐きかけ、自分たちの時間を設定するのかを理解する必要があるのです。既得権益のためか、ただのバカか。
ワールドタイムと同じ時間を持つ人は?
世の中の時間に唾をつけて、自分たちの時間を決めているのは、証券取引所かブローカーか、それを見極めなければなりません。私利私欲のためか、それとも単なるバカからか。
ワールドタイムと同じ時間を持つ人は?
そう、世界時間のことは忘れて、同じ時間にモスクワ証券取引所で取引するのです。
というのも、取引所から来る見積もりは、ブローカーのせいではなく、開発者のせいだからです。
は時間を持つので、最後の既知の見積もりの時刻を使うべきです。
取引所(サーバーではない)の既知の時刻と、ターミナル
タイムカレント
TimeCurrentは、TERMINALではなく、SERVERの時刻を 返します。
ここから「足が伸びる」のでしょう。
そうです、世界よ、私たちはモスクワ取引所で取引しているのです、取引所の時間にしたがって。
というのも、取引所から来る見積もりは、ブローカーのせいではなく、開発者のせいだからです。
は時間があるため、最終的に判明した見積もり時刻を
取引所(サーバーではない)の既知の時刻と、ターミナル
タイムカレント
TimeCurrentは、取引所ではなく、サーバーの時刻を返します!
それゆえ、おそらく「足が伸びる」のでしょう。
また、サーバーがモスクワで、取引所がブラジルにある場合、それはあり得るのでしょうか?
サーバーがどこだろうと関係ない!
気配値(というか気配値のTIME)は、現在のTRADE時間です。
によって追加されました。
今、何が起こっているかというと
MT5サーバーは、気配値の時刻に関係なく、単に端末に気配値を送信します。
プレマーケットがあるため、サーバーの時刻と気配値の時刻が同期していない。
EAが注文を出し、端末がそれを確認し、サーバーが時刻を照合することで
サーバーはあらゆる場所で時間を確認し、約3秒の誤差で注文を再調整します!!!!
引用(というか引用TIME)は、現在のTIMEです。
これはストックタイムです。
サーバーの時刻は端末に全く転送されない:TimeLocal == TimeTradeServer.
私も、この問題にはうんざりしています。それについては、フォーラムで何度も紹介されています。みんな自分なりに解決しているのですが、正解が見えてきません。どのように修正するかを決め、開発者に働きかけることが必要である。
さて、時間を取得するための3つの機能があります(記憶が正しいかどうか)です。
TimeLocal==TimeTradeServer、コンピュータの時間。
TimeTradeServer ==無価値な機能 です。
TimeCurrent==最後の引用の時刻。
為替時刻を追加するか、TimeTradeServerを投げ出すか、代わりに現在の為替時刻を渡すか、TimeExchange型を追加 する必要が あります。
そして、時間に追われることなく、具体的なデータを端末に取り込むことができればベストです。
- 新しいアプリケーションを載せることができる。
- 注文を削除することができます。
- 取引は可能です。
なぜか今の端末にはそのような機能はありません。
Нужно добавить время биржы, выкинуть TimeTradeServer или вместо него передавать текущее время биржи, или добавить типа TimeExchange.
私たちの取引所ではまだ選択肢にない。他の取引所はどうか知らない。
10:00、10:03、10:05など、好きな時間に取引を開始します。
どうやら、起きてコーヒーを飲むとスイッチが入るらしい))。

- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
あなたたちは開発者だ!
端末の時刻とExchangeの時刻を同期させるのはいつですか?
2017.01.13 10:00:03.969 Trades 'xxxxx': sell limit 1.00 ED-6.17 at 1.0813
2017.01.13 10:00:03.975 Trades 'xxxxx': accepted buy limit 2.00 ED-6.17 at 1.0642
2017.01.13 10:00:03.975 Trades 'xxxxx': accepted sell limit 1.00 ED-6.17 at 1.0813
2017.01.13 10:00:03.978 Trades 'xxxxx': failed buy limit 2.00 ED-6.17 at 1.0642 [Market closed]
2017.01.13 10:00:03.979 Trades 'xxxxx': failed sell limit 1.00 ED-6.17 at 1.0813 [Market closed]