Boris.45: Добрый день, уважаемые трейдеры! Помогите пожалуйста начинающему программисту. С использованием фракталов для нескольких таймфреймов написал кусок программы по поиску скользящих каналов (СК) Боришпольца, начал писать алгоритмы принятия решений по открытию позиций. Столкнулся с ситуацией, когда на быстро растущих трендах временой интервал торговли составляет всего от одного до двух баров. Здесь сама ситуация подсказывает: в блоке поиска и вычисления параметров СК надо работать на выбранных таймфреймах , а решение о выставлении ордеров или открытии позиций надо делать на очень мелких таймфреймах. Подскажите,пожалуйста, такой момент: как оформить программу так, чтобы блок вычисления параметров СК работал только на выбранных таймфреймах, например, на Н1 и Н4, а блок решения о выставлении ордеров работал на таймфрейме М1. В статьях решения этого вопроса не нашел.
Спасибо за внимание.
От фракталов достаточно далёк, но вот соображения общего порядка. Можно попробовать таким простейшим образом: создать индикатор, который вычисляет "параметры СК" на Н4. И пусть эксперт на каждом тике опрашивает этот индикатор и принимает решения о выставлении ордеров.
#property indicator_label1 "LINE"#property indicator_type1 DRAW_LINE#property indicator_color1 clrGold#property indicator_style1 STYLE_SOLID#property indicator_width1 2inputint period = 10; //Период усреденияinputbool USE_LIMIT= false; //вкл/выкл лимитирование//Заключается в ограничении максимального изменения значения индикатораinputdouble use_limit= 0.00005; //Величина//на которую максимально может измениться индикаторdouble Buffer[];
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnInit()
{
SetIndexBuffer(0,Buffer,INDICATOR_DATA);
//PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constint begin,
constdouble &price[])
{
//--- вычисления значений индикатора//--- calculate the indicator valuesint start=0;
//--- если расчет уже производился на предыдущем запуске OnCalculate//--- if the calculation is made on a previous run of OnCalculateif(prev_calculated>0) start=prev_calculated-1; // установим начало расчетов с предпослденего бара -- Set the start of the penultimate bar calculations//--- заполняем индикаторный буфер значениями//--- fill indicator buffer valuesfor(int i=start;i<rates_total;i++)
{
Buffer[0]=price[0];
double delta=(price[i]-Buffer[i])/period;
if(USE_LIMIT && delta>use_limit)
{
delta=use_limit;
}
if(USE_LIMIT && delta<-use_limit)
{
delta=-use_limit;
}
Buffer[i+1]=Buffer[i]+delta;
}
//--- вернем значение prev_calculated для следующего вызова функции//--- return the value for the next call of prev_calculated functionreturn(rates_total);
}
//+------------------------------------------------------------------+
Для тестирования: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization
Для торговли в режиме текущего времени пока не нашёл справки - попробуйте просто открыть и закрыть позицию на демо-счете.
Спасибо за внимание.
Для тестирования: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization
Для торговли в режиме текущего времени пока не нашёл справки - попробуйте просто открыть и закрыть позицию на демо-счете.
Спасибо!Попробую!
Но мне как раз нужен он для визуализации на демо-счете)
Если не получится на демо-счете - пишите.
Но мне как раз нужен он для визуализации на демо-счете)
Из истории мышкой на чарт можно вытащить (с шифтом - все).
!!! С контролом сбросит настройки чарта.Что не так в коде?
На графике все норм, в тестере вылезает ошибка Array Out Of Range
Что не так в коде?
На графике все норм, в тестере вылезает ошибка Array Out Of Range
Цикл идет до i<rates_total.Далее есть Buffer[ i+1] .
Buffer[rates_total] .Нет такого.Последний индекс rates_total-1.
Что не так в коде?
На графике все норм, в тестере вылезает ошибка Array Out Of Range
Buffer[i+1] === +1 не делается проверка на выход за массивЦикл идет до i<rates_total.Далее есть Buffer[ i+1] .
Buffer[rates_total] .Нет такого.Последний индекс rates_total-1.
Изменил на это
i<rates_total-1Вроде бы работает