Вопрос по мультивалютному советнику - страница 6

 

Ну это не сюда претензии.

Вы словно только сейчас первый раз правила увидели.... Этот вопрос уже обсуждался - в первых ветках по чемпионату - см. гл. страничку

 

Провожу тестирование и оптимизацию советника на Metaquotes истории. Сначала работал на 208 билде (инсталяция для Альпари) - нужны контр точки, а в 209 их нет. Потом советника с теми значениями параметров и на той же истории, таким же образом закачанной с Metaquotes, провёл тестирование в билде 209 (инсталяция Metaquotes). Результаты отличаются очень значительно. Также отличается количество баров в истории и кол-во смоделированных тиков при одинаковом качестве тестирования. Подскажите плз причина в разном алгоритме работы тестеров билдов 208 и 209 или возможно настройки для символов (спред, своп, залог, уровни стопов и т.п.) в одном случае берутся Альпаришные, во втором - Метаквотовские? Или причина в чём-то другом? И как сделать правильно тестирование и оптимизацию на данных на Метаквотес - истории имея билд 208 от Альпари? Где можно скачать 208 билд (инсталяцию Метаквотов)?

ЗЫ Историю закачивал по рецепту Renat'а 'Automated Trading Championship 2007: распространенные ошибки в экспертах' предварительно удалив все .hst - файлы.

Strategy Tester Report
worker
MetaQuotes-Demo (Build 208)


Символ EURUSD (Euro vs US Dollar)
Период 15 Минут (M15) 1999.01.05 13:00 - 2007.09.07 22:45
Модель Все тики (на основе всех наименьших доступных периодов с фрактальной интерполяцией каждого тика)
Параметры
Баров в истории 215177 Смоделировано тиков 13375536 Качество моделирования 89.96%
Начальный депозит 10000.00
Чистая прибыль 3484.57 Общая прибыль 14828.81 Общий убыток -11344.24
Прибыльность 1.31 Матожидание выигрыша 7.20
Абсолютная просадка 896.44 Максимальная просадка 1255.96 (12.12%) Относительная просадка 12.12% (1255.96)
Всего сделок 484 Короткие позиции (% выигравших) 249 (47.79%) Длинные позиции (% выигравших) 235 (52.77%)
Прибыльные сделки (% от всех) 243 (50.21%) Убыточные сделки (% от всех) 241 (49.79%)
Самая большая прибыльная сделка 426.34 убыточная сделка -99.96
Средняя прибыльная сделка 61.02 убыточная сделка -47.07
Максимальное количество непрерывных выигрышей (прибыль) 6 (466.42) непрерывных проигрышей (убыток) 7 (-275.39)
Максимальная непрерывная прибыль (число выигрышей) 653.20 (4) непрерывный убыток (число проигрышей) -286.62 (3)
Средний непрерывный выигрыш 2 непрерывный проигрыш 2

Strategy Tester Report
worker
MetaQuotes-Demo (Build 209)


Символ EURUSD (Euro vs US Dollar)
Период 15 Минут (M15) 1999.01.05 13:00 - 2007.09.07 22:45 (1970.01.01 - 2007.09.08)
Модель Все тики (на основе всех наименьших доступных периодов с фрактальной интерполяцией каждого тика)
Параметры
Баров в истории 215437 Смоделировано тиков 15419309 Качество моделирования 89.96%
Начальный депозит 10000.00
Чистая прибыль 1882.77 Общая прибыль 13653.61 Общий убыток -11770.84
Прибыльность 1.16 Матожидание выигрыша 3.82
Абсолютная просадка 896.21 Максимальная просадка 1331.85 (12.52%) Относительная просадка 12.52% (1331.85)
Всего сделок 493 Короткие позиции (% выигравших) 263 (48.67%) Длинные позиции (% выигравших) 230 (51.30%)
Прибыльные сделки (% от всех) 246 (49.90%) Убыточные сделки (% от всех) 247 (50.10%)
Самая большая прибыльная сделка 426.34 убыточная сделка -99.96
Средняя прибыльная сделка 55.50 убыточная сделка -47.66
Максимальное количество непрерывных выигрышей (прибыль) 6 (466.42) непрерывных проигрышей (убыток) 7 (-275.39)
Максимальная непрерывная прибыль (число выигрышей) 522.72 (3) непрерывный убыток (число проигрышей) -318.74 (5)
Средний непрерывный выигрыш 2 непрерывный проигрыш 2

 

Видимо, дело в самой подаче котировок. Например, чуть отличаются цены открытия/закрытия баров у разных исторических версий и, значит, ход цены внутри бара будет смоделирован чуть иначе! А со стопами =40/50 это уже будет оказывать влияние.

Кроме того, не совсем понятно, - Вы делали тест оба раза на мт4 Альпари? (С разными котировками)

Или второй раз на мт4 MQ? Возможно, там спреды разные. А для 500 сделок - уже 1 пипс - это "-500"

И свопы - тоже самое...

 
rid:

Видимо, дело в самой подаче котировок. Например, чуть отличаются цены открытия/закрытия баров у разных исторических версий и, значит, ход цены внутри бара будет смоделирован чуть иначе! А со стопами =40/50 это уже будет оказывать влияние.

Кроме того, не совсем понятно, - Вы делали тест оба раза на мт4 Альпари? (С разными котировками)

Или второй раз на мт4 MQ? Возможно, там спреды разные. А для 500 сделок - уже 1 пипс - это "-500"

И свопы - тоже самое...


Какая тут подача? Котировки закачаны в оба терминала из Хистори центра Метаквотесов. Первый терминал создан из инсталяции Альпари (билд 208), второй - из инсталяции Метаквотесов (билд 209). Оба по очереди были залогинены на тестовый (выданный Метаквотесами для участия в чемпионате) счёт и закачаны котировки по рецепту от Рената. Первые около 300 сделок идут почти 1:1 (что подтверждает идентичность котировок, спредов, свопов...), потом вразнобой (см. стейты). Озадачивает одинаковое качество моделирование :(

И ещё удивительно: эксперт не сложный, использует только один встроенный индикатор и на данных Альпари показывает в 2-3 раза лучшие результаты, чем на данных Метаквотс Хистори центара. И накакая оптимизация не позволяет даже приблизиться к результатам Альпари. Это при том, что при торговле постоянным 0.1 лотом МОЖ порядка 35, ПФ=2.5, сделки длятся порой по нескольку дней, т.е. ТС явно не пипсовочная/скальперская.

Файлы:
test.zip  278 kb
 

Я могу предположить ещё вот что.

У меня бывали проблемы с историей тоже, когда я один терминал МТ4 залогинил на разные ДЦ. Сначала вроде всё нормально. А потом я, видно, что-то где-то нажал/недоглядел и у меня куски истории одного ДЦ стали (по одной и той же паре) пролезать в историю другого. Не знаю почему. Или куски вообще стали выпадать. В конечном итоге всё так перепуталось к ..., что я зарекся логинить на одном терминале счета разных ДЦ.

Теперь у меня четыре мт4 стоят в копме от разных ДЦ, но зато проблему с этой путаницей я снял! Попробуйте так же сделать.

P.S Ёще заметил. Есть такой ДЦ Мастерфорекс.(не сочтите за рекламу - к слову...) . Так на его котировках мои советники почему-то показывают на истории отличные результаты. А на Лайте или Альпари - с теми же параметрами и качеством - несколько хуже.

 
rid:

Я могу предположить ещё вот что.

У меня бывали проблемы с историей тоже, когда я один терминал МТ4 залогинил на разные ДЦ. Сначала вроде всё нормально. А потом я, видно, что-то где-то нажал/недоглядел и у меня куски истории одного ДЦ стали (по одной и той же паре) пролезать в историю другого. Не знаю почему. Или куски вообще стали выпадать. В конечном итоге всё так перепуталось к ..., что я зарекся логинить на одном терминале счета разных ДЦ.

Теперь у меня четыре мт4 стоят в копме от разных ДЦ, но зато проблему с этой путаницей я снял! Попробуйте так же сделать.


Спасибо, но эта проблема мне известна. Выше писАл, что взял чистые инсталяции, установил, удалил все .hst файлы, залогинил каждый из двух терминалов только на один, выданный Метаквотесами счёт, остальные ДЦ вообще удалил из папки config, так что путаницы никакой быть не могло и чужим кускам истории взяться неоткуда. А чисто тестеровский терминал Альпари, на котором были ранее получены в 2-3 раза более лучшие результаты,  вообще ни разу не логинился ни к одному ДЦ ни к одному счёту. Туда загружены .hst файлы с Альпари.
 
Остался открытым вопрос почему указывается одинаковое качество моделирования при разном количестве баров и смоделированных тиков? А также где гарантия что в папке downloads с бОльшим объёмом история без пропусков? Получается, количественной оценке качества моделирования, выдаваемой тестером, нельзя доверять?
 

Доверять нельзя никому!

Думаю, что на количество (число) баров тестер не реагирует.

А что касается оценки качаства, - то видно, колич. оценка качества производиться по таким критериям : - насколько полно заполнен тестируемый тф минутными котировками внутри. Если заполнен полностью - то =90%. Если не полностью, - то качество меньше.

А вот у меня по фую и киви получились (при закачке) необьяснимые провалы по котировкам (с сент. по окт./нояб 2006) по всем тф. Но тестер этого не замечает и выдает=90% , т.к. все остальные бары на любом тф. полностью заполнены минутками.

А то, что баров не хватает - тестер не видит.

Может и у вас не хватает недели-другой истории где-то. Отсюда и разница.

Z

 

Опять встал острый вопрос по мультивалютному советнику. Возникла необходимость заставить одну из пар работать в режиме по ценам открытия! В статьях нашел пример такой конструкции. Вставил сначала в одиночную версию. Всё заработало.

int start()
//ждем открытия нового бара. Если появл. новый бар - проверяем возможность сделки
 {if(Time[0] == prevtime) 
       return(0);
   prevtime = Time[0];

После чего вставил в мульти валютный советник аналогичным образом. И все пары заработали по ценам открытия. Но мне не нужно - чтобы все. Нужно чтобы - только одна - вторая пара. Сделал вот так:

Заявил в глобальных - static int prevtime = 0;

ЗАДАЕМ ВНЕШНИЕ ПАРАМЕТРЫ ПО КАЖДОЙ ПАРЕ
 static int prevtime = 0;
int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }
 
int start()
  {  
 int Orders=OrdersTotal ();     //получаем кол-во открытых ордеров
if (Orders<3)                 //если  открытых ордеров <3
  { 
if (выключатель 1 вкл) {РАСЧЕТ ИНДЮКОВ И ОТКРЫВАЕМ ПЕРВУЮ ПАРУ } 
if (выключатель 2 вкл) 
{
if(Time[0] == prevtime) 
       return(0);
   prevtime = Time[0]; 
 
РАСЧЕТ ИНДЮКОВ И ОТКРЫВАЕМ ВТОРУЮ ПАРУ } 
  }
//========================================================================
for (int x=0; x<OrdersTotal(); x++)                                             {
    if (OrderSelect(x, SELECT_BY_POS, MODE_TRADES)) 
{       
if (UseTrailing 1) - ТРЕЙЛИНГ ПЕРВОЙ ПАРЫ
... ... ...
if (UseTrailing 2) - Трейлинг второй пары
}
//======================================================================
   return(0);
  }

Кроме этого после каждого тикета второй пары вставил :

ticket=OrderSend("EURUSD", OP_BUY,Lots,_ask ,3,_bid-SL_long*_point,
                       _ask +TP_long*_point,"M_4",MagicEURUSD,0,CLR_NONE);
 
                        Sleep(30000);
                       if(ticket < 0)   {
                           prevtime = Time[1];
                         }

Ничего не получается! Советник продолжает работать по второй паре по все тикам!

Пробовал и другую конструкцию. Вот такую -

bool isNewBar=false;
if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; }
//-------------------------------------------------------
 
if (isNewBar) {

Предварительно задав переменные:

int         ExpertBars;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
ExpertBars = Bars;
//----------------
   return(0);

Но .... та же история. Когда вставляю в начало - то все пары работают по ценам открытия. Но когда хочу применить для одной пары - никак не получается! Мучаюсь третий день...

Буду рад любым советам и рекомендациям....

 
rid:
Имена, выделяемые ME красным, относятся к инструменту, к которому прикреплён советник. Попробуйте вместо Time[], использовать iTime().
Причина обращения: