Сделал советника по системе, предложенной ТС. Протестировал, действительно, система не сливает, но и не показывает устойчивой прибыли.
Отчёт с тестера:
Символ GBPUSD (Great Britain Pound vs US Dollar)
Период День (D1) 2002.04.01 00:00 - 2011.06.10 00:00 (2002.03.30 - 2011.07.20)
Модель Все тики (наиболее точный метод на основе всех наименьших доступных таймфреймов)
Параметры TradeTime=20; Period_MA_1=125; Period_M_1=20; Lots=0.1;
Баров в истории 3165 Смоделировано тиков 45497771 Качество моделирования 90.00%
Ошибки рассогласования графиков 0
Начальный депозит 1000.00
Чистая прибыль 1629.20 Общая прибыль 6021.04 Общий убыток -4391.84
Прибыльность 1.37 Матожидание выигрыша 12.34
Абсолютная просадка 42.98 Максимальная просадка 657.14 (20.25%) Относительная просадка 37.11% (650.62)
Всего сделок 132 Короткие позиции (% выигравших) 59 (57.63%) Длинные позиции (% выигравших) 73 (50.68%)
Прибыльные сделки (% от всех) 71 (53.79%) Убыточные сделки (% от всех) 61 (46.21%)
Самая большая прибыльная сделка 317.92 убыточная сделка -452.74
Средняя прибыльная сделка 84.80 убыточная сделка -72.00
Максимальное количество непрерывных выигрышей (прибыль) 5 (429.00) непрерывных проигрышей (убыток) 4 (-488.88)
Максимальная непрерывная прибыль (число выигрышей) 535.60 (3) непрерывный убыток (число проигрышей) -580.56 (3)
Средний непрерывный выигрыш 2 непрерывный проигрыш 2.
добавлено через 11 минут
Т.о. за почти за 10 лет прибыль составила порядка 150%, т.е. в среднем 15% в год что достаточно мало. Но система не сливает и это уже радует.
Далее приведу кусок кода из советника с критериями входа/выхода:
//---------------------------------------------------------------
// Торговые критерии
int K1, Sit1=2;
if(TradeTime==0) // час предыдущий торговому
PrevHour=24;
else
PrevHour=TradeTime-1;
// проверяем настало ли время для торговли
if(TradeTime==TimeHour(TimeCurrent()))
K1=1;
else
K1=0;
if(PrevHour==TimeHour(TimeCurrent())) //закрываем ранее открытые сделки по истечению суток
Close_All();// функция закрытия ордеров
double MA_1_0, Mom_1_0, Mom_1_1; // Значен. SMA и Momentum
MA_1_0=iMA(NULL,0,Period_MA_1,0,MODE_SMA,PRICE_CLOSE,0); // МА_1_0
Mom_1_0=iMomentum(NULL,0,Period_M_1,PRICE_CLOSE,0); // Мom_1_0
Mom_1_1=iMomentum(NULL,0,Period_M_1,PRICE_CLOSE,1); // Мom_1_1
if(K1==1 && (TimeMinute(TimeCurrent())>=0))
{
if(MA_1_0<iOpen(NULL,0,0) && Mom_1_0<100 && Mom_1_1>100)
// цена выше MA и Mom пересекает сверху вниз 100% на Buy
Sit2=0;
if(MA_1_0>iOpen(NULL,0,0) && Mom_1_0>100 && Mom_1_1<100)
// цена ниже MA и и Mom пересекает снизу вверх 100% на Sell
Sit2=1;
// Формируем сигналы на покупку/продажу/закрытие/открытие
if (Sit2==0)
{
Opn_B=true; // Критерий откр. Buy
}
if (Sit2==1)
{
Opn_S=true; // Критерий откр. Sell
}
}
//---------------------------------------------------------------
Внешние параметры TradeTime=20; Period_MA_1=125; Period_M_1=20; были выбраны именно такими после небольшой оптимизации на котировках за несколько лет.
Lots=0.1; - фиксированный лот.