Без кода помочь смогут только телепаты - а сейчас, как назло, все телепаты в отпуске.
Нашел причину. По какой то причине не происходит пересчет индикаторов в Ontick( не выдает количество пересчитанных баров) . Может нужно обновлять котировки.
Все равно спасибо. Стал умнее. Узнал где логи пишутся.
Конвертировал простой индикатор с MQL4 -> MQL5, но на последних нескольких барах нет сигнала. Помогите пожалуйста найти причину. Исходный код и результат в аттаче. Конвертированный еще и сюда вложу.
#property indicator_chart_window#property indicator_plots4#property indicator_buffers4#property indicator_color1 PaleVioletRed
#property indicator_color2 DeepSkyBlue
#property indicator_color3 Red
#property indicator_color4 LimeGreen
inputint dist2 = 21; // Distance#2inputint dist1 = 14; // Distance#1double b1[];
double b2[];
double b3[];
double b4[];
int handle_atr;
int min_rates_total;
double atr[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit() {
SetIndexBuffer(0,b1,INDICATOR_DATA);
SetIndexBuffer(1,b2,INDICATOR_DATA);
SetIndexBuffer(2,b3,INDICATOR_DATA);
SetIndexBuffer(3,b4,INDICATOR_DATA);
ArraySetAsSeries(b1,true);
ArraySetAsSeries(b2,true);
ArraySetAsSeries(b3,true);
ArraySetAsSeries(b4,true);
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(2,PLOT_DRAW_TYPE,DRAW_ARROW);
PlotIndexSetInteger(3,PLOT_DRAW_TYPE,DRAW_ARROW);
PlotIndexSetInteger(2,PLOT_ARROW,159);
PlotIndexSetInteger(3,PLOT_ARROW,159);
ResetLastError();
handle_atr = iATR(NULL,PERIOD_CURRENT,50);
if(handle_atr==INVALID_HANDLE) {
Print(" *** ATR handle was unable to create. Error ",GetLastError());
returnINIT_FAILED;
}
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetString(0,PLOT_LABEL,"SuperSignals Upper");
PlotIndexSetString(1,PLOT_LABEL,"SuperSignals Lower");
PlotIndexSetString(2,PLOT_LABEL,"SuperSignals Sell");
PlotIndexSetString(3,PLOT_LABEL,"SuperSignals Buy");
returnINIT_SUCCEEDED;
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &High[],
constdouble &Low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[]) {
int counted_bars=prev_calculated;
int i,limit;
ArraySetAsSeries(Low,true);
ArraySetAsSeries(High,true);
if(counted_bars<0) return0;
if(counted_bars>0) counted_bars--;
limit=rates_total-counted_bars;
limit=MathMax(limit,dist1);
limit=MathMax(limit,dist2);
for (i = limit-1; i >= 0; i--) {
int hhb1 = ArrayMaximum(High,i-dist1/2,dist1);
int llb1 = ArrayMinimum(Low, i-dist1/2,dist1);
int hhb = ArrayMaximum(High,MathMax(0,i-dist2/2),dist2);
int llb = ArrayMinimum(Low, MathMax(0,i-dist2/2),dist2);
b1[i] = EMPTY_VALUE;
b2[i] = EMPTY_VALUE;
b3[i] = EMPTY_VALUE;
b4[i] = EMPTY_VALUE;
ArraySetAsSeries(atr,true);
int copied=CopyBuffer(handle_atr,0,0,limit,atr);
if (copied<=0) Print(" *** ATR failed to copy.");
double tr = atr[i];
b1[i] = High[hhb];
b2[i] = Low[llb];
if (i==hhb1) b3[i] = High[hhb1]+tr/2;
if (i==llb1) b4[i] = Low[llb1] -tr/2;
}
return rates_total;
}
//+------------------------------------------------------------------+
Конвертировал простой индикатор с MQL4 -> MQL5, но на последних нескольких барах нет сигнала. Помогите пожалуйста найти причину. Исходный код и результат в аттаче. Конвертированный еще и сюда вложу.
Результат.
Вроде как виновником может быть что-то не логично сделанное между платформами
Обратите внимание на разные входные параметры
МТ4
ArrayMaximum
Ищет в одномерном числовом массиве максимальный элемент.
intArrayMaximum(
constvoid& array[], // массив для поискаint count=WHOLE_ARRAY, // количество проверяемыхint start=0// с какого индекса начинаем поиск
);
МТ5
ArrayMaximum
Ищет максимальный элемент в первом измерении многомерного числового массива.
intArrayMaximum(
constvoid& array[], // массив для поискаint start=0, // с какого индекса начинаем поискint count=WHOLE_ARRAY// количество проверяемых
);
Привет всем! Друзья,возникли проблемы с подключением к серверу и есть необходимость протестить индюк.Но не могу обновить данные. Кто может,скиньте пожалуйста историю М1 RTS-12.20 за последние 2-е недели или больше.Заранее спасибо!
Здравствуйте. Советник выставляет отложенные ордера по уровням. В условиях присутствует цены аск и бид, соответственно, для ордеров на покупку и продажу. Если пишу :
в тестере выставляются отложенные ордера, как на покупку, так и на продажу. Если пишу:
ask = m_symbol.Ask();
bid = m_symbol.Bid();
выставляются ордера только на покупку. Ордера на продажу не выставляются, записи в журнале, на этот счет, отсутствуют. Меня вполне устраивает и первый вариант, но все же интересно, в чем причина.
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
Без кода помочь смогут только телепаты - а сейчас, как назло, все телепаты в отпуске.
Нашел причину. По какой то причине не происходит пересчет индикаторов в Ontick( не выдает количество пересчитанных баров) . Может нужно обновлять котировки.
Все равно спасибо. Стал умнее. Узнал где логи пишутся.
Конвертировал простой индикатор с MQL4 -> MQL5, но на последних нескольких барах нет сигнала. Помогите пожалуйста найти причину. Исходный код и результат в аттаче. Конвертированный еще и сюда вложу.
Результат.
Конвертировал простой индикатор с MQL4 -> MQL5, но на последних нескольких барах нет сигнала. Помогите пожалуйста найти причину. Исходный код и результат в аттаче. Конвертированный еще и сюда вложу.
Результат.
Вроде как виновником может быть что-то не логично сделанное между платформами
Обратите внимание на разные входные параметры
МТ4
МТ5
Вроде как виновником может быть что-то не логично сделанное между платформами
Обратите внимание на разные входные параметры
МТ4
МТ5
Спасибо, Виталий.
В этом месте порядок переменных правильный, я их поменял местами при конвертации. Да и в MQL4 версии были функции iHighest / iLowest.
Тут что-то другое. Уже всю голову сломал.
Здравия всем.
Есть свечной индикатор, тиковый, ни к какому ТФ не привязан. Свеча в индикаторе может появиться в любой момент.
Вопрос в том, как из советника узнать о появлении этой свечи?
Я пробовал добавить в индикатор дополнительный буфер
в который при появлении новой свечи пишу 1.
Беда в том, что в окне Обзора данных этот буфер не появился, а значит и считать его значение из советника нельзя.
Как быть?
Здравия всем.
Есть свечной индикатор, тиковый, ни к какому ТФ не привязан. Свеча в индикаторе может появиться в любой момент.
Вопрос в том, как из советника узнать о появлении этой свечи?
Я пробовал добавить в индикатор дополнительный буфер
в который при появлении новой свечи пишу 1.
Беда в том, что в окне Обзора данных этот буфер не появился, а значит и считать его значение из советника нельзя.
Как быть?
Добавить построение
Добавить построение
Спасибо.
Здравствуйте. Советник выставляет отложенные ордера по уровням. В условиях присутствует цены аск и бид, соответственно, для ордеров на покупку и продажу. Если пишу :
в тестере выставляются отложенные ордера, как на покупку, так и на продажу. Если пишу:
выставляются ордера только на покупку. Ордера на продажу не выставляются, записи в журнале, на этот счет, отсутствуют. Меня вполне устраивает и первый вариант, но все же интересно, в чем причина.