Если нужно, чтобы нижняя граница рассчитывалась по bid
#define PRICECHANNEL_LOW_PRICE bid // bid/ask/last для Low бара #include <fxsaber\PriceChannel\PriceChannel.mqh>
// Пример работы библиотеки PriceChannel на 10-секундных барах: ТФ = S10. input int inPeriod = 23; // Период канала input int NumBar = 12; // Номер бара, данные которого будем выводить #include <fxsaber\PriceChannel\PriceChannel.mqh> // https://www.mql5.com/ru/code/23418 PRICECHANNEL PriceChannel(inPeriod); // Создали PriceChannel, длительность бара совпадает с баром чарта. void OnInit() { PriceChannel.SetBarInterval(10); // Считаем 10-секундные бары: ТФ = S10. OnTick(); } #define TOSTRING(A) #A + " = " = (string)(A) + "\n" void OnTick() { static const datetime StartTime = TimeCurrent(); PriceChannel.NewTick(); // Пробросили тик в канал const MqlTick Tick = PriceChannel[NumBar]; // Получили High и Low соответствующего S10-бара const string Str = "Duration = " + TimeToString(TimeCurrent() - StartTime, TIME_SECONDS) + "\n\n" + "Length of the timeframe = " + (string)PriceChannel.GetBarInterval() + " seconds\n" + "PriceChannel's period = " + (string)PriceChannel.GetPeriod() + " bars\n\n" + "Highest[" + (string)PriceChannel.GetPeriod() + "] = " + DoubleToString(PriceChannel.GetHigh(), _Digits) + "\n" + "Lowest[" + (string)PriceChannel.GetPeriod() + "] = " + DoubleToString(PriceChannel.GetLow(), _Digits) + "\n\n" + // Можно посчитать канал и не заданного периода "Highest[" + (string)inPeriod + "] = " + DoubleToString(PriceChannel.GetHigh(inPeriod), _Digits) + "\n" + "Lowest[" + (string)inPeriod + "] = " + DoubleToString(PriceChannel.GetHigh(inPeriod), _Digits) + "\n\n" + // Соответствующие значения S10-бара "High[" + (string)NumBar + "] = " + DoubleToString(Tick.bid, _Digits) + "\n" + "Low[" + (string)NumBar + "] = " + DoubleToString(Tick.ask, _Digits); PriceChannel.SetPeriod((PriceChannel.GetPeriod() + 1) % 100); // Можно изменять период канала Comment(Str); }
Проверил под MT4 на советнике с адаптивными периодами PriceChannels.
Время одиночного прогона без библиотеки
755160 tick events (17243 bars, 756161 bar states) processed in 0:00:04.868 (total time 0:00:05.008)
С библиотекой
755160 tick events (17243 bars, 756161 bar states) processed in 0:00:02.293 (total time 0:00:02.434)
В остальном все идентично.
Т.е. даже в MT4 Оптимизация может происходить в два раза быстрее. Ускорение получилось бонусом, делалось не для этого.
Нет планов добавить построение баров по числу тиков и по проторгованному объему?
Aleksey Vyazmikin:
Нет планов добавить построение баров по числу тиков и по проторгованному объему?
Нет планов добавить построение баров по числу тиков и по проторгованному объему?
Каких-либо планов по этой библиотеке нет.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
PriceChannel:
Ценовой канал произвольной длительности (таймфрейм) бара.
Автор: fxsaber