Процесс разработки системы Ubzen - страница 4

 
sakis:


Мне интересны обе системы, они должны продавать, когда рынок меняет направление.

Если вы сделаете простое пересечение между 3WLMA и 100SMA на 30-минутном графике EUR/USD до 150 пунктов и выйдете, когда пересечение произойдет не по SL, то в итоге вы получите чрезвычайно прибыльную систему, которую я использую.

прибыльная система, которую я использую в течение некоторого времени, посмотрите на результаты и напишите мне обратно с 13% ничьей.

Эта система (пересечение 3LWMA 100SMA) не работает на EURUSD H1, H4 и дневном графике.
 
zzuegg:
Эта система (кросс 3LWMA 100SMA) не работает на EURUSD H1,H4 и дневном графике

привет zzuegg я знаю что она работает на 30мин графике и работает только на евро мин графике просто поставьте систему самостоятельно без macd
 

sakis:

hi zzuegg i know that,

он работает на 30-минутном графике и работает только в евро

просто поставьте систему без macd.
 
sakis:


иногда системы работают лучше в реальной торговле, чем в автоматической, потому что из-за человеческого глаза вы никогда не входите в консолидацию до 6-го тика.

шанели и до того, как произойдет толчок, а также

так же как вы никогда не принимаете контртрендовое движение до перекрытия волн, сопровождаемого всплеском проскакивания канала.

Также вы никогда не берете прорывы, когда происходит 3-е или 4-е движение за короткий период в 1-2 дня и с высокими значениями тиков, потому что это означает, что цены находятся в сильных руках.

Так что нам нужны фильтры для того, чтобы регулировать этот человеческий глаз.

 

Хорошо, вот плохой период, о котором я говорил. Теперь я собираюсь прогнать это в обратном порядке, по 1 году за раз. 2009, 2008 и т.д.

Вот результаты за год:

2010--Max-DD= 6.47____Rel-DD= 6.47____Net_Profit=4588____Factor=2.48
2009--Max-DD=26.76____Rel-DD=26.76____Net_Profit=-380____Factor=0.94
2008--Max-DD=19.79____Rel-DD=19.79____Net_Profit=1096____Factor=1.20
2007--Max-DD= 7.10____Rel-DD= 7.10____Net_Profit=1506____Factor=1.62
2006--Max-DD=20.46____Rel-DD=20.46____Net_Profit=-1612____Factor=0.63
2005--Max-DD= 8.79____Rel-DD= 8.79____Net_Profit= -23____Factor=0.99

2005----------------

2006-----------------

2007-----------------

2008--------------

2009 ------------------

2010----------------

Пара наблюдений.

1) Система имеет тенденцию проигрывать в ряду, а не случайным образом большую часть времени. Z-Score из статьи может помочь в этом.

Это помогает понять, почему профессиональные трейдеры стремятся к 20-30% прибыли в год.

 

На данный момент я могу работать только с периодом до 2005 года, потому что я использую данные Fxdd, найденные здесь. Причина, по которой я использую эти данные, заключается в том, что Fxdd закрывается на выходные, как и мой брокер, и по умолчанию имеет разрывы на выходные. Кроме того, их временные настройки ближе к настройкам моего брокера. Я могу протестировать на данных 2000-2005 годов , если у меня будет время. Открытие недели у них начинается в среду, и они работают 6 дней в неделю.

Единственный период, который я просмотрел визуально, это период с января по март 2010 г. Мое лучшее предположение заключается в том, что эта система проигрывает последовательно, потому что она находится в узких или очень волатильных диапазонах. Но это относится только к 2008 году, и даже если у вас мало опыта в изучении графиков, вы можете предположить, что это может быть как-то связано с мировым финансовым кризисом, и рынки в то время могли двигаться с большим страхом.

Итак, что же делать дальше?

-Принять результаты (например, убыточный год - это нормально), рассчитать наши Келли и не жадничать?

-Продолжать двигаться вперед, используя больше статистического анализа, например, Z-Score. Но даже если я получу подтверждение о корреляции между потерями, что тогда? Возможно, мне все равно придется прибегнуть к другим методам фильтрации данных, как показано ниже.

-Посмотреть на эту вещь в визуальном режиме во время плохих периодов и попытаться избежать того, что ее убивает? Недостатком является то, что это может привести к подгонке кривых ... если слишком много прошлых знаний избегать используется только для того, чтобы обратный тест выглядел хорошо.

-Применить некоторые фильтры Blind, такие как диапазон, волатильность, время, объем и т.д.? Недостатком здесь является то, что фильтры ограничивают количество сделок. Пример: торговля в 1 направлении за раз или удержание длинных трендов - это фильтры, о которых большинство людей не подозревают, что они действуют как фильтры. Моя единственная проблема с этой системой заключается в том, что она недостаточно активна, чтобы превратить $1,000 в счастье в течение разумного времени, чтобы сделать большинство людей счастливыми. Но это можно преодолеть, добавив на счет другие стабильные системы.

-Последний, но наименее любимый вариант: Изменить систему еще немного. Пример:

a) Скальп по направлению - Недостаток: нам понадобятся тиковые данные. Могут ли твердые принципы ММ работать с такими дополнениями?

б) Пирамида по направлению - добавляем лоты, когда цена идет в нашу сторону - недостаток: как мы их закроем, когда цена пойдет против нас?

c) Dollar cost Averaging - добавление через временные интервалы, но до тейк-профита. Недостаток - не учитывается ситуация.

d) Сетка - добавлять в том же размере, когда позиция проходит фиксированное расстояние против нас - Недостаток, приводит к перевернутому вниз RRR, и ММ не может за ним угнаться.

д) Мартингейл/прогрессия (ха.ха.ха.ха.ха) на любом из вышеперечисленных методов. Для тех, кто хочет превратить маленький счет в большой, это может показаться привлекательным. Недостаток, определенно не может следовать правильному ММ.

Лично я склоняюсь к тому, чтобы назвать это тем, чем оно является, и двигаться дальше с ММ.

Я хотел бы узнать мнение других, так как другие могут подумать: "Нет уж, я потребую чего-то получше".

 
ubzen:

На данный момент я могу работать только с периодом до 2005 года, потому что я использую данные Fxdd, найденные здесь. Причина, по которой я использую эти данные, заключается в том, что Fxdd закрывается на выходные, как и мой брокер, и по умолчанию имеет разрывы на выходные. Кроме того, их временные настройки ближе к настройкам моего брокера. Я могу протестировать на данных 2000-2005 годов , если у меня будет время. Открытие недели у них начинается в среду, и они работают 6 дней в неделю.

Единственный период, который я просмотрел визуально, это период с января по март 2010 г. Мое лучшее предположение заключается в том, что эта система проигрывает последовательно, потому что она находится в узких или очень волатильных диапазонах. Но это относится только к 2008 году, и даже если у вас мало опыта в изучении графиков, вы можете предположить, что это может быть связано с мировым финансовым кризисом, и рынки в то время могли двигаться с большим страхом.

Итак, что же делать дальше?

-Принять результаты (например, убыточный год - это нормально), рассчитать наши Келли и не жадничать?

-Продолжать двигаться вперед, используя больше статистического анализа, например, Z-Score. Но даже если я получу подтверждение о корреляции между потерями, что тогда? Возможно, мне все равно придется прибегнуть к другим методам фильтрации данных, как показано ниже.

-Посмотреть на эту вещь в визуальном режиме во время плохих периодов и попытаться избежать того, что ее убивает? Недостатком является то, что это может привести к подгонке кривых ... если слишком много прошлых знаний избегать используется только для того, чтобы обратный тест выглядел хорошо.

-Применить некоторые фильтры Blind, такие как диапазон, волатильность, время, объем и т.д.? Недостатком здесь является то, что фильтры ограничивают количество сделок. Пример: торговля в 1 направлении за раз или удержание длинных трендов - это фильтры, о которых большинство людей не подозревают, что они действуют как фильтры. Моя единственная проблема с этой системой заключается в том, что она недостаточно активна, чтобы превратить $1,000 в счастье в течение разумного времени, чтобы сделать большинство людей счастливыми. Но это можно преодолеть, добавив на счет другие стабильные системы.

-Последний, но наименее любимый вариант: Изменить систему еще немного. Пример:

a) Скальп по направлению - Недостаток: нам понадобятся тиковые данные. Могут ли твердые принципы ММ работать с такими дополнениями?

б) Пирамида по направлению - добавляем лоты, когда цена идет в нашу сторону - недостаток: как мы их закроем, когда цена пойдет против нас?

c) Dollar cost Averaging - добавление через временные интервалы, но до тейк-профита. Недостаток - не учитывается ситуация.

d) Сетка - добавлять в том же размере, когда позиция проходит фиксированное расстояние против нас - Недостаток, приводит к перевернутому вниз RRR, и ММ не может за ним угнаться.

д) Мартингейл/прогрессия (ха.ха.ха.ха.ха) на любом из вышеперечисленных методов. Для тех, кто хочет превратить маленький счет в большой, это может показаться привлекательным. Недостаток, определенно не может следовать правильному ММ.

Лично я склоняюсь к тому, чтобы назвать это тем, чем оно является, и двигаться дальше с ММ.

Я хотел бы узнать мнение других, так как другие могут считать, что "Нет, не пойдет, я потребую чего-то лучшего".


Привет,

Пирамидинг по направлениям кажется мощным, именно это и делает моя версия. Я пирамидирую со вторичными сделками.

К сожалению, MAE показывает нам, что усреднение в этой стратегии может не работать, я говорю "к сожалению", потому что мне это нравится ;)


Но у меня есть еще один вопрос к Филиппу.

В вашем скрипте вы исследуете время между открытием и закрытием ордера, но, как показывает ваша диаграмма, вы также должны исследовать время до и после открытия/закрытия, чтобы получить обзор и правильный расчет MAE/MFE? Я нахожусь на неправильном пути?

 
zzuegg:

Но у меня есть еще один вопрос к Филиппу.

В вашем сценарии вы исследуете время между открытием и закрытием ордера, но, как показывает ваша диаграмма, вы также должны исследовать время до и после открытия/закрытия, чтобы получить обзор и правильный расчет MAE/MFE? Я нахожусь на неправильном пути?


Правильно. По каждой отдельной сделке вы должны вычислить, было ли время до MAE первым или последним по отношению к времени до MFE. Сделки, в которых MAE наступает раньше MFE, называются "Тип 1". Сделки, в которых MFE наступает раньше MAE, называются "Тип 2".

Простой метрикой для выражения способности вашей стратегии к прогнозированию рынка является простое отношение числа сделок типа 1 к общему числу сделок и умножение на 100%. Скажем, у вас есть 100 сделок за год, 90 из них оказываются сделками типа 1, а 10 - типа 2. Таким образом, ваш "коэффициент успешности прогнозирования" составляет 90/100 x 100% = 90%.

Стратегии с лучшим коэффициентом предсказания рынка на ближайшую перспективу более желательны, чем стратегии, которые не могут правильно предсказать направление рынка на ближайшую перспективу. (по всем очевидным причинам)
 

Хорошо, это понятно, но следует ли также разрешить, чтобы TimeToMAE, реальный по отношению к опентайму, был нагативным и положительным? Положительный tToMAE, если вы вошли в сделку слишком рано, и отрицательный, если вы вошли слишком поздно. Конечно, усреднение значений может привести к идеальной стратегии, поэтому вы также должны посмотреть на StdDev от tToMAE.

Насколько я вижу, вы не допускаете отрицательных tToMAE.

Введя переменные WatchBarsBeforeOpen и WatchBarsAfterClose, я думаю, что преодолел эту проблему. Обратите внимание, что это все еще ранняя работа. tToMAE и tToMFE указаны в минутах настолько точно, насколько позволяет используемый таймфрейм.

Анализы пока не включены, только исходные данные.

//+------------------------------------------------------------------+
//|                                      AdvancedReport_03_04_11.mq4 |
//|                                                           zzuegg |
//|                                       when-money-makes-money.com |
//+------------------------------------------------------------------+
#property copyright "zzuegg"
#property link      "when-money-makes-money.com"

extern int WatchBarsBeforeOpen=10;
extern int WatchBarsAfterClose=10;
extern int WatchPeriod=0;

int ticket[];
int mae[];
int mae.time[];
int mfe[];
int mfe.time[];
int mfee[];
int profit[];
int missed[];

void reportTrade(int trade){
   OrderSelect(trade,SELECT_BY_TICKET,MODE_HISTORY);
   int start   =(iBarShift(OrderSymbol(),WatchPeriod,OrderOpenTime(),false) +WatchBarsBeforeOpen)+1;
   int end     =iBarShift(OrderSymbol(),WatchPeriod,OrderCloseTime(),false) -WatchBarsAfterClose;
   int highest =iHighest (OrderSymbol(),WatchPeriod,MODE_HIGH,(start-end)+1,end);
   int lowest  =iLowest  (OrderSymbol(),WatchPeriod,MODE_LOW,(start-end)+1,end);
  // Print(OrderTicket()+"  "+start+"  "+end+"  "+highest+"  "+lowest);
   ArrayResize(ticket,ArraySize(ticket)+1);   
   ArrayResize(mae,ArraySize(mae)+1);
   ArrayResize(mae.time,ArraySize(mae.time)+1);
   ArrayResize(mfe,ArraySize(mfe)+1);
   ArrayResize(mfe.time,ArraySize(mfe.time)+1);
   ArrayResize(mfee,ArraySize(mfee)+1);
   ArrayResize(profit,ArraySize(profit)+1);
   ArrayResize(missed,ArraySize(missed)+1);
   
   //Print(TimeMinute(OrderOpenTime())+"  "+TimeMinute(OrderCloseTime())+"  "+TimeMinute(iTime(OrderSymbol(),WatchPeriod,lowest))+"  "+TimeMinute(iTime(OrderSymbol(),WatchPeriod,highest)));
   ticket[ArraySize(ticket)-1]            =OrderTicket();
   switch(OrderType()){
      case OP_BUY:{
         mae[ArraySize(mae)-1]            =(OrderOpenPrice()-iLow(OrderSymbol(),WatchPeriod,lowest))/MarketInfo(OrderSymbol(),MODE_POINT);
         mae.time[ArraySize(mae.time)-1]  =(OrderOpenTime()-iTime(OrderSymbol(),WatchPeriod,lowest))/60;
         mfe[ArraySize(mae)-1]            =(iHigh(OrderSymbol(),WatchPeriod,highest)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
         mfe.time[ArraySize(mae.time)-1]  =(OrderOpenTime()-iTime(OrderSymbol(),WatchPeriod,highest))/60;
         profit[ArraySize(profit)-1]      =(OrderClosePrice()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
         missed[ArraySize(missed)-1]      =(mae[ArraySize(mae)-1]+mfe[ArraySize(mfe)-1])-profit[ArraySize(profit)-1];
         mfee[ArraySize(mfee)-1]          =(mfe[ArraySize(mfe)-1])-profit[ArraySize(profit)-1];
      break;
      }
      case OP_SELL:{
         mae[ArraySize(mae)-1]            =(iHigh(OrderSymbol(),WatchPeriod,highest)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
         mae.time[ArraySize(mae.time)-1]  =(OrderOpenTime()-iTime(OrderSymbol(),WatchPeriod,highest))/60;
         mfe[ArraySize(mae)-1]            =(OrderOpenPrice()-iLow(OrderSymbol(),WatchPeriod,lowest))/MarketInfo(OrderSymbol(),MODE_POINT);
         mfe.time[ArraySize(mae.time)-1]  =(OrderOpenTime()-iTime(OrderSymbol(),WatchPeriod,lowest))/60;
         profit[ArraySize(profit)-1]      =(OrderOpenPrice()-OrderClosePrice())/MarketInfo(OrderSymbol(),MODE_POINT);
         missed[ArraySize(missed)-1]      =(mae[ArraySize(mae)-1]+mfe[ArraySize(mfe)-1])-profit[ArraySize(profit)-1]; 
         mfee[ArraySize(mfee)-1]          =(mfe[ArraySize(mfe)-1])-profit[ArraySize(profit)-1];      
      break;
      }
   }  
}

void writeCSV(string EA.name,string EA.parameter=""){
   int hnd=FileOpen(EA.name+"-"+EA.parameter+".csv",FILE_CSV | FILE_WRITE,";");
   FileWrite(hnd,"Ticket","MAE","TimeToMAE","MFE","TimeToMFE","MFEE","Profit","Missed");
   for(int i=0;i<ArraySize(mae);i++){
      FileWrite(hnd,ticket[i],mae[i],mae.time[i],mfe[i],mfe.time[i],mfee[i],profit[i],missed[i]);
   }
   FileClose(hnd);
}


void AdvancedReport.doStatistics(string EA.name,string EA.parameters="",int EA.limitMagicNumber=-1){
   for(int i=0;i<OrdersHistoryTotal();i++){
      OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(OrderMagicNumber()==EA.limitMagicNumber || EA.limitMagicNumber==-1){
         reportTrade(OrderTicket());
      }
   }
   
   
   writeCSV(EA.name,EA.parameters);
}
 
ubzen:

Хорошо, вот плохой период, о котором я говорил. Теперь я собираюсь прогнать это в обратном порядке, по 1 году за раз. 2009, 2008 и т.д.

Вот результаты за год:

2010--Max-DD= 6.47____Rel-DD= 6.47____Net_Profit=4588____Factor=2.48
2009--Max-DD=26.76____Rel-DD=26.76____Net_Profit=-380____Factor=0.94
2008--Max-DD=19.79____Rel-DD=19.79____Net_Profit=1096____Factor=1.20
2007--Max-DD= 7.10____Rel-DD= 7.10____Net_Profit=1506____Factor=1.62
2006--Max-DD=20.46____Rel-DD=20.46____Net_Profit=-1612____Factor=0.63
2005--Max-DD= 8.79____Rel-DD= 8.79____Net_Profit= -23____Factor=0.99

2005----------------

2006-----------------

2007-----------------

2008--------------

2009 ------------------

2010----------------

Пара наблюдений.

1) Система имеет тенденцию проигрывать в ряду, а не случайным образом большую часть времени. Z-Score из статьи может помочь в этом.

Это подчеркивает, почему профессиональные трейдеры стремятся к 20-30% прибыли в год.



Когда у вас есть данные о рентабельности инвестиций, охватывающие месяцы и годы, тогда у вас есть данные, необходимые для оценки риска разорения в будущем.

http://www.futuresmag.com/Issues/2009/August2009/Pages/Minimizing-your-risk-of-ruin.aspx

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

Z-коэффициенты не предсказывают будущие результаты, так как они зависят от временного ряда. Z-коэффициент 2009 года имеет отношение к 2011 году только в том случае, если активность рыночных цен в 2011 году по сути повторяет 2009 год.

Z-score - это интересная статистика для оценки, но она не добавляет ценности или понимания того, как ваша стратегия будет работать в будущем. Не зря CTA, управляющие деньгами, Morningstar и т.д. не отслеживают и не отчитываются по Z-score для профессионально управляемых счетов. Это бесполезная метрика успеха.

Однако вычисление риска разорения и медианной просадки - это то, что делают профессионалы, и не только в индустрии Форекс.

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

Профессионалы также проводят бэктесты на различных исторических рыночных ставках. В некоторых случаях они используют методы Монте-Карло для создания полностью фиктивных рыночных данных, которые статистически эквивалентны реальным рыночным данным, просто чтобы подкрепить свои бэктесты.

Просто пища для размышлений, возможно, вы знаете обо всем этом и имеете свои собственные, не менее веские причины для выбора альтернативных методов анализа.