GarF1eld писал(а) # :
MT4用のiBarShiftに似た機能が懐かしいです。どうすればいいか教えてください。
そして、私が理解する限り、あなたはTime[10]の代わりにCopyTimeを使用する必要がありますか?
ibarshiftのアナログです。
int iBarOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false )
Time[]のアナローグ。
Time( int i )
他にもたくさんあるので、重宝しそうです。
double iHigh(string symbol,int tf,int ind) double High( int i ) double iLow(string symbol,int tf,int ind) double Low( int i ) double iClose(string symbol,int tf,int ind) double Close( int i ) double iOpen(string symbol,int tf,int ind) double Open( int i ) double HighOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false ) double LowOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false ) double CloseOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false ) double OpenOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false ) string SPeriod(ENUM_TIMEFRAMES tf) //символьное представление периода datetime iTime( const string symbol, int tf, int ind ) //+------------------------------------------------------------------+ //| Аналог Bars(), не требует предварительной синхронизации истории | //| Вход : symbol - символ в терминале | //| timeframe - таймфрейм | //| Выход : нет | //| Прим. : нет | //+------------------------------------------------------------------+ int BarsSinh( string symbol,ENUM_TIMEFRAMES timeframe ) //+------------------------------------------------------------------+ //| Произвести синхронизацию таймсерии с историей | //| Вход : symbol - символ в терминале | //| tf - таймфрейм | //| Выход : нет | //| Прим. : нет | //+------------------------------------------------------------------+ void SynhronizeSeries( string symbol, ENUM_TIMEFRAMES tf ) //+------------------------------------------------------------------+ //| Проверить наличие истории на дату start_date, если остуствует, | //| то произвести попытку загрузки | //| Вход : symbol - символ в терминале | //| period - таймфрейм | //| start_date - дата проверки истории | //| Выход : код результата выполнения операции подробнее | //| см. https://www.mql5.com/ru/docs/series/timeseries_access | //| Прим. : нет | //+------------------------------------------------------------------+ int CheckLoadHistory(string symbol,ENUM_TIMEFRAMES period,datetime start_date) //+------------------------------------------------------------------+ //| возвращает строкое значение периода | //+------------------------------------------------------------------+ string GetPeriodName(ENUM_TIMEFRAMES period)
ファイル:
common.mqh
22 kb
もし興味がある人がいれば、私は代替案を見つけた。
int iBarShiftFast(string symbol, ENUM_TIMEFRAMES timeframe, datetime time) { datetime lastBar; SeriesInfoInteger(symbol, timeframe, SERIES_LASTBAR_DATE, lastBar); return(Bars(symbol, timeframe, time, lastBar) - 1); }
私の測定によると、CopyTime バリアントと比較した加速度は2倍から7倍です(入力データに依存します)。ご意見・ご感想・バグがありましたら、投稿してください。
marketeer:
もし興味がある人がいれば、私は代替案を見つけた。
私の測定によると、CopyTimeバリアントと比較した加速度は2倍から7倍です(入力データに依存します)。ご意見・ご感想・バグがありましたら、お書きください。
ありがとうございます。試してみます。
というか、今はこれが正しいやり方なのかもしれません。
int bar = Bars(0, 0, barTime_last, TimeCurrent());
Roffild:
というか、今はこっちの方が正しいかもしれませんね。
int bar = Bars(0, 0, barTime_last, TimeCurrent());
さらに高速かつ正確に(最初のパラメータはNULLでなければならず、0では動作しない)。
int bar = Bars(NULL, 0, t, 32000000000);
不必要にTimeCurrent()関数を実行する必要がないため
32000000000は、現在の瞬間からではなく、ほぼ3000の瞬間から です
Nikolai Semko:
さらに高速かつ正確に(最初のパラメータはNULLでなければならず、0では動作しない)。
不必要にTimeCurrent()関数を実行する必要がないため
32000000000は、現在の瞬間からではなく、ほぼ3000の瞬間から です
また、-1についてはどうでしょうか。今が大事なとき...
Denis:
1はどうでしょうか?重要なポイントなのですが...。
何の話かわからないんだけど?1はどうでしょうか?重要なポイントなのですが...。
説明する。
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
MT4用のiBarShiftに 似た機能が懐かしいです。どうすればいいか教えてください。
そして、私が理解する限り、あなたはTime[10]の代わりにCopyTimeを使用する必要がありますか?