Там шесть хендлов с одного индикатора на трех таймфреймах.
И смещение снимаемого значения, уже заложено. Копировал с них по одному значению.
А запутался используя три хендла одного индикатора на трех таймфреймах и копируя с них интервал возможного смещения.
Если за один раз нужно получать значение индикатора более чем с одного бара - нужно копировать значения в массив. На примере iATR:
//+------------------------------------------------------------------+//| Get value of buffers for the iATR |//+------------------------------------------------------------------+double iATRGet(constint index)
{
double ATR[1];
//--- reset error code ResetLastError();
//--- fill a part of the iATR array with values from the indicator buffer that has 0 index if(CopyBuffer(handle_iATR,0,index,1,ATR)<0)
{
//--- if the copying fails, tell the error code PrintFormat("Failed to copy data from the iATR indicator, error code %d",GetLastError());
//--- quit with zero result - it means that the indicator is considered as not calculated return(0.0);
}
return(ATR[0]);
}
//+------------------------------------------------------------------+//| Get value of buffers for the iATR in the array |//+------------------------------------------------------------------+bool iATRGetArray(constint start_pos,constint count,double &arr_buffer[])
{
bool result=true;
if(!ArrayIsDynamic(arr_buffer))
{
Print("This a no dynamic array!");
return(false);
}
ArrayFree(arr_buffer);
int buffer_num=0; // indicator buffer number //--- reset error code ResetLastError();
//--- fill a part of the iATRBuffer array with values from the indicator buffer that has 0 index int copied=CopyBuffer(handle_iATR,buffer_num,start_pos,count,arr_buffer);
if(copied!=count)
{
//--- if the copying fails, tell the error code PrintFormat("Failed to copy data from the iATR indicator, error code %d",GetLastError());
//--- quit with zero result - it means that the indicator is considered as not calculated return(false);
}
//---return(result);
}
Да, похоже ошибка была, что массивы в которые копировал оставил динамическими. :(
Проверю.
Я копирую только в динамические массивы! Причём, перед копированием, принудительно делаю ArrayFree. Со статическими были косяки. С тех пор только динамические.
Я копирую только в динамические массивы! Причём, перед копированием, принудительно делаю ArrayFree. Со статическими были косяки. С тех пор только динамические.
ERROR: так всё таки копируете ОДНО значение или ДВЕСТИ?
//--- Используя функцию CopyBuffer, мы копируем по 1 последних новых значения индикаторов в динамические массивыif(CopyBuffer(Handle_4P72_L0_1,0,0,200,line1_L0)<0// || CopyBuffer(Handle_4P72_L0_2,0,0,1,line2_L0)<0 || CopyBuffer(SMA_Handle_00,0,0,1,SMA_L0)<0
|| CopyBuffer(Handle_4P72_L1_1,0,0,200,line1_L1)<0// || CopyBuffer(Handle_4P72_L1_2,0,0,1,line2_L1)<0 || CopyBuffer(SMA_Handle_01,0,0,1,SMA_L1)<0
|| CopyBuffer(Handle_4P72_L2_1,0,0,200,line1_L2)<0// || CopyBuffer(Handle_4P72_L2_2,0,0,1,line2_L2)<0 || CopyBuffer(SMA_Handle_02,0,0,1,SMA_L2)<0
|| CopyTime(_Symbol,_Period,0,1,New_Time)<0)
Если готовы для биржи под МТ5 делать роботов, могу начать подкидывать идеи. Моделирую условия в ТС-Лабе, но торговать хотелось бы ими на МТ5 в авторежиме.
Если проблем с тестом нет, опишу логику торговли. Первый будет, вероятно, вот этот.
Как только остаётся "Seconds before closing the signal candle" секунд до закрытия текущей свечи, вычисляем средний размер "Number of candles for calculating the average candle size" свеч. Если текущая свеча превышает средний размер на "Current candle: excess body size, percent" процентов - открываем позицию объёмом "Lots" и выставляем отложенный лимитный ордер объёмом "Lots" * "Multiplication factor" от цены открытия позиции на расстоянии "Pending limit level: percent of the height of the current candle" в процентах от высоты сигнальной свечи.
Вроде правильно?
Нужно время чтобы вспомнить, что я там навоял :) А тут как специально, сквозняки и как результат - простуда. И зло берёт и одновременно смешно: летом схватить температуру и простудиться :)
Нужно время чтобы вспомнить, что я там навоял :) А тут как специально, сквозняки и как результат - простуда. И зло берёт и одновременно смешно: летом схватить температуру и простудиться :)
Я копирую только в динамические массивы! Причём, перед копированием, принудительно делаю ArrayFree. Со статическими были косяки. С тех пор только динамические.
Да ладно.. У меня и со статическими нет забот. Хотя, смотря о чём речь. В индюках да, лучше динамические, если нет желания буфером управлять и ловить косяки. А так в совах разницы нет никакой, на самом деле.
Там шесть хендлов с одного индикатора на трех таймфреймах.
И смещение снимаемого значения, уже заложено. Копировал с них по одному значению.
А запутался используя три хендла одного индикатора на трех таймфреймах и копируя с них интервал возможного смещения.
Если за один раз нужно получать значение индикатора более чем с одного бара - нужно копировать значения в массив. На примере iATR:
Если за один раз нужно получать значение индикатора более чем с одного бара - нужно копировать значения в массив. На примере iATR:
Да, похоже ошибка была, что массивы в которые копировал оставил динамическими. :(
Проверю.
Да, похоже ошибка была, что массивы в которые копировал оставил динамическими. :(
Проверю.
Я копирую только в динамические массивы! Причём, перед копированием, принудительно делаю ArrayFree. Со статическими были косяки. С тех пор только динамические.
Я копирую только в динамические массивы! Причём, перед копированием, принудительно делаю ArrayFree. Со статическими были косяки. С тех пор только динамические.
Понял. Ошибка не здесь.
Вот эксперт который не пошел.
Понял. Ошибка не здесь.
Вот эксперт который не пошел.
ERROR: так всё таки копируете ОДНО значение или ДВЕСТИ?
ERROR: так всё таки копируете ОДНО значение или ДВЕСТИ?
В этом эксперте (он отличается датой) я пробовал три хендла и двести значений.
Если готовы для биржи под МТ5 делать роботов, могу начать подкидывать идеи. Моделирую условия в ТС-Лабе, но торговать хотелось бы ими на МТ5 в авторежиме.
Если проблем с тестом нет, опишу логику торговли. Первый будет, вероятно, вот этот.
#55
Начну небольшими порциями.
Как только остаётся "Seconds before closing the signal candle" секунд до закрытия текущей свечи, вычисляем средний размер "Number of candles for calculating the average candle size" свеч. Если текущая свеча превышает средний размер на "Current candle: excess body size, percent" процентов - открываем позицию объёмом "Lots" и выставляем отложенный лимитный ордер объёмом "Lots" * "Multiplication factor" от цены открытия позиции на расстоянии "Pending limit level: percent of the height of the current candle" в процентах от высоты сигнальной свечи.
Вроде правильно?
Нужно время чтобы вспомнить, что я там навоял :) А тут как специально, сквозняки и как результат - простуда. И зло берёт и одновременно смешно: летом схватить температуру и простудиться :)
Нужно время чтобы вспомнить, что я там навоял :) А тут как специально, сквозняки и как результат - простуда. И зло берёт и одновременно смешно: летом схватить температуру и простудиться :)
Поправляйтесь.
Я копирую только в динамические массивы! Причём, перед копированием, принудительно делаю ArrayFree. Со статическими были косяки. С тех пор только динамические.
Да ладно.. У меня и со статическими нет забот. Хотя, смотря о чём речь. В индюках да, лучше динамические, если нет желания буфером управлять и ловить косяки. А так в совах разницы нет никакой, на самом деле.