AUTOMATED TRADING CHAMPIONSHIP 2007! - страница 10

 
rsi:
А как будет осуществляться предварительное тестирование многовалютных экспертов?

Можно сразу заложить в эксперта возможность тестирования , например , я сделал так:

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  int PeriodCounter=2,SymbolCounter=1,trendOnTF;
  string ComString;
  int tf;
//----
   if (IsTesting())
      {
      Print("Прошли проверку на IsTesting");
      for (int indexCount=TestingIndexPeriod;indexCount<=6;indexCount++)
         {
         if (isNewBar(TestingIndexSymbol,indexCount)) 
            {
            Print("Вызовем трейлинг");
            if (OrdersTotal()>0) CheckOrdersForTrailing();            
            trendOnTF=TrendByWPR(TestingIndexSymbol,indexCount);
            TrendOnSymbol[TestingIndexSymbol,indexCount]=trendOnTF;
            GatorTrend[TestingIndexSymbol,indexCount]=iCustom(GetSymbolString(TestingIndexSymbol),PeriodNumber(indexCount),"NRTR_GATOR",40,2,false,7,0);
            NRTR_Trend[TestingIndexSymbol,indexCount]=iCustom(GetSymbolString(TestingIndexSymbol),PeriodNumber(indexCount),"NRTR_GATOR",40,2,false,6,1);
            Complextrend[TestingIndexSymbol,indexCount]=(TrendOnSymbol[TestingIndexSymbol,indexCount]+GatorTrend[TestingIndexSymbol,indexCount]+NRTR_Trend[TestingIndexSymbol,indexCount])/3.0;
            ComString="";
            for (tf=indexCount;tf<7;tf++)
               {
               ComString=ComString+StringConcatenate("Period ",PeriodNumber(tf),"M  Complextrend=",Complextrend[TestingIndexSymbol,tf],"n");
            }
            Comment(ComString);   
            Print("Trend on ",GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter),"M=",trendOnTF);
            }
         }
      }
   else
      {
      for (SymbolCounter=1;SymbolCounter<13;SymbolCounter++)
         {
         for (PeriodCounter=2;PeriodCounter<=6;PeriodCounter++)
            {
            if (isNewBar(SymbolCounter,PeriodCounter))
               {
               if (OrdersTotal()>0) CheckOrdersForTrailing();            
               trendOnTF=TrendByWPR(SymbolCounter,PeriodCounter);
               TrendOnSymbol[SymbolCounter,PeriodCounter]=trendOnTF;
               GatorTrend[SymbolCounter,PeriodCounter]=iCustom(GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter),"NRTR_GATOR",40,2,false,7,0);
               NRTR_Trend[SymbolCounter,PeriodCounter]=iCustom(GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter),"NRTR_GATOR",40,2,false,6,1);
               Complextrend[SymbolCounter,PeriodCounter]=(TrendOnSymbol[SymbolCounter,PeriodCounter]+GatorTrend[SymbolCounter,PeriodCounter]+NRTR_Trend[SymbolCounter,PeriodCounter])/3.0;
               if (Symbol()==GetSymbolString(SymbolCounter))
                  {
                  ComString="";
                  for (tf=2;tf<7;tf++)
                     {
                     ComString=ComString+StringConcatenate("Period ",PeriodNumber(tf),"M  Z_trend=",TrendOnSymbol[SymbolCounter,tf],"  G_trend=",
                     GatorTrend[SymbolCounter,tf],"  N_trend=",NRTR_Trend[SymbolCounter,tf],"n");
                     }
                  Comment(ComString);   
               //Print("Trend on ",GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter),"M=",trendOnTF);
                  }
               } 
            }
         }
      }
   
   ArrayInitialize(TPvsSL,0.0);
   ArrayInitialize(BestTPvsSLSymbol,0);
   ArrayInitialize(BestTPvsSLPeriod,0);
   if (TrendExist())
      {
      if (OrdersTotal()<MaxOpenedOrders) TryOpenOrder();
      else TryCloseOrder();
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Rosh:
rsi писал (а):
А как будет осуществляться предварительное тестирование многовалютных экспертов?

Можно сразу заложить в эксперта возможность тестирования , например , я сделал так:

...
Спасибо за код. Постараюсь разобраться, но 1) описание бы не помешало (прошу прощения за наглость), 2) по-моему это не решает поставленный вопрос системно. Я имею ввиду, что надо тогда в условия конкурса (может быть рекомендательно) включить для многовалютных экспертов требование на добавку этого кода в свою программу - чтобы организаторы могли провести предварительное тестирование эксперта перед чемпионатом. Так?
 
Грубо говоря - мультивалютный эксперт должен допускать бектест на каждом инструменте и на каждом фрейме, по которым он заявлен.
Если бек-тест - то работаем только на символе Symbol() и периоде Period(). Если в он-лайне - работаем по всем заложенным в алгоритм инструментам.
 
Reshetov писал (а):
Mathemat писал (а):

8. Входной взнос $100: ....А тут собрали разношерстную толпу, лишь бы участники пару строк кода смогли скомпилировать.


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

Вот и результаты.
Результат нормальный учитывая, что чемпионат проводился впервые.
Для этого сейчас и обговаривается вопрос о правилах будущего чемпионата.

Понятно, что не каждый пожелает платить взнос, а кто-то не сможет. Возможно, как раз, один такой из разношерстной толпы и обойдет супер-пупер программистов. Так зачем ограничивать возможность людей на участие в конкурсе.
Тем более, что правила будут,вероятно, обновленные, учитывающие все, или многие, недостатки прошлого чемпионата
плюс новые ограничения и требования.
Все идет к тому, что побеждать должен советник с заложенной в него прибылной стратегией и правильным
управлением капитала, а не только лишь агрессивным управлением капитала.
 
alexnau писал (а):

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

alexnau, ты реально считаешь, что организаторы, получив один только ex4 (это допускается), смогут грамотно решить вопрос о прибыльности стратегии и правильном управлении капитала? А что если советник будет слегка сливать на тестируемом участке? Значит - отметается?

Ограничения и требования должны быть разумными и нелегко обходимыми. Скажем, ограничение в минимум 10 сделок - легко обходится. Значит, оно неразумно.

Предварительное тестирование на истории, на мой взгляд, нужно только для проверки соответствия формальным требованиям, уже описанным в Правилах-2006 (см. III. Программы Экспертов (Expert Advisors)).

Однако оценка адекватности советника организаторами с точки зрения прибыльности и ММ на истории - тухлая задача: в советник можно впихнуть какие угодно заранее заготовленные исторические сигналы и выдавать их тестеру при isTesting() == true. Пример - сигналы ZigZag: на истории они идеальны! Есть, кстати, один таинственный пункт в Правилах Чемпионата-2006, который затрудняет такую подделку:

7. Кардинальные различия в поведении эксперта во время предварительной проверки и при работе в ходе Чемпионата повлечет за собой дисквалификацию.

Были ли прецеденты, господа организаторы Чемпионата-2006? Если не было, то как вы эти различия определяете?

Так что, пожалуй, придется смириться с тем, что исключить все явно авантюрные советники на этапе приема советников организаторам не удастся. Зато можно убрать большинство радикальным способом - небольшой входной таксой, скажем, в $30, которая отдается обратно только тогда, когда советник закончит чемпионат с некоторым положительным результатом. Народу будет поменьше, но качество советников должно резко вырасти: какой смысл отдавать $30 с советником от sashken или Zonker?

Предлагаю такой список требований:

- Плата за вход $30, с возвращением только при окончательном результате не менее начального капитала + $30
- маржин-колл во время чемпионата не менее 70%; при маржин-колле - немедленная дисквалификация
- все формальные требования Чемпионата-2006 (см. III. Программы Экспертов (Expert Advisors)).

Торговые условия:

- начальный капитал - $500 (если это слишком жесткое условие, то тогда $1000)
- минимальный размер лотов 0.1 и никаких ограничений по максимальному лоту, количеству и размерам одновременно открытых позиций (с отложками).

Никаких ограничений по:

- прибыльности на истории
- ММ на истории
- TP/SL
- количеству сделок в течение Чемпионата
- пропорции Залог/Эквити.
 
Mathemat:
- Плата за вход $30, с возвращением только при окончательном результате не менее начального капитала + $30
Вцелом, лично я согласен с тем, чтобы хорошо бы чтобы участие было платным. Вступительные взносы существуют на соревнованиях практически во всех видах спорта. Идея возврата денег уже выглядит, опять же для меня лично, несколько спорно.
Но главное, почему это не произойдёт никогда - техническая сторона вопроса. Спроцессить все эти платежи - это такой геморой, что он ничем не окупится. Особенно, если вспомнить, что далеко не все потенциальные участники живут на территории бСССР, т.е. приём платежей в нормальных деньгах с кредиток отдельно, разные суррогатные деньги отдельно. А разрешение на ведение ритэйловой деятельности с кредитными картами?... И весь этот гимор на голову организаторов вместо того, чтобы заниматься тем чем они умеют.

Ну и зачем платить 30$ за зонкера. А затем, чтобы поставить их два - один вверх, другой - вниз. 60 баков смешные деньги, когда на кону 40 штук, а ведь зонкер был близок к тому чтобы победить, чертовски близок.
 
Хорошо, можно и не возвращать плату за вход, не ахти какие деньги. Зато хоть какой-то стимул к созданию приличного ЕА...

А вот отбраковка экспертов по сигналам - задача на засыпку.

Запрет на множественные регистрации с одного IP очень легко обходится, если автор располагает хотя бы двумя компами с разными IP. Так что если ему захочется выслать два или больше разных экспертов с разных IP, он это сделает, и организаторы этого не заметят. Реальные проблемы у него могут возникнуть только тогда, когда хотя бы два его творения будут в лидерах, а организаторы захотят взять у авторов лидеров интервью.

Честно говоря, я не считаю это нечестной игрой: если автор выставит два разных эксперта, которые в итоге станут призерами, то - хвала автору! Другое дело, что это не соответствует самой традиции подобных соревнований. Сам я не намерен так делать :)

Касательно "зеркальных" экспертов а ля Zonker's EuroBull или EuroBear. Можно, например, ввести дополнительную проверку экспертов с неестественно высокой корреляцией сигналов. Крайне сомнительно, чтобы разные авторы могли независимо друг от друга сделать совпадающие по сигналам эксперты. Значит, либо сделали не сами (нашли в инете), либо поделились друг с другом, либо это просто один автор. В первом случае это с высокой вероятностью плохой эксперт, а во втором и третьем это нечестная игра.

Организаторы, скажем, могут потребовать исходники этих экспертов, компилирующиеся в точно такие же ex4, как высланные организаторам. В случае отказа предоставления кода или кода, компилирующегося в другой ex4, - дисквалификация без возвращения входной платы и занесение IP в черный список Чемпионатов. Если же "правильные" коды высланы, а их логики совпадают, - дисквалификация всех кроме одного по принципу "орел-решка". Сомневаюсь, что такие действия затронут авторов, выславших одного разумного и профитного эксперта.

P.S. А вообще для солидности можно ввести квалификационный тур - скажем, на месяц. Эксперты с определенным заранее результатом по итогам квалификации проходят в основной тур. И затем основной тур - на два-три месяца, с тем же советником. Да, есть вероятность, что пройдут экстремалы. Но большинство явно сливающих, не менее 70%, - не пройдут.
 
NRTR_GATOR Indicator ?
 
Mathemat:
alexnau писал (а):

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

alexnau, ты реально считаешь, что организаторы, получив один только ex4 (это допускается), смогут грамотно решить вопрос о прибыльности стратегии и правильном управлении капитала? А что если советник будет слегка сливать на тестируемом участке? Значит - отметается?
Mathemat я высказал мнение о том, что на следующем Чемпионате качество выставляемых советников должно улучшиться, а то,
что организаторы должны "грамотно решить вопрос о прибыльности стратегии и правильном управлении капитала" на основании
тестирования ex4 у меня и мысли не было.