Советники: CyberiaTrader - страница 3

 

Тестирую на демо в MoneyRain на M1 EURUSD постоянно сливает.Может кто нибудь посоветует насчёт параметров.Спасибо.

 
Если коротко:
1. На манирейне не работает пипсовка из-за низких объемов и антипипсовочных фильтров котировок. Ее нужно отключить (она в основном и сливает)
2. Отключите динамический стоп-лосс и установите статический со значением не менее 15, но слишком большое значение нивелирует всю эффективность системы. - динамический стоп-лосс можно использовать только на умеренных рынках или на флете (прохождение через критические новости с динамическим стоп-лоссом может убить ваш депозит. По умолчанию включен динамический стоп-лосс для работы на инструментах с умеренной волатильностью ( скорее всего его последствия вы и наблюдаете при скачке котировок по евродоллару или доллару-иене, которое началось позавчера после выхода новостей ).
3. !!!Не проходите с механической торговлей через критические новости рынка!!!. (загрузка графика работы в совеника есть только в коммерческой версии. На этой версии вам будет необходимо выводить инструмент из игры вручную).
... достаточно много других особенностей у этого брокера, в том числе разброс котировок, иногда достигающий 20 пунктов в сравнении с котировками у других брокеров, что они собственно сами и признают.
4. Один из важнейших параметров для успешной работы системы - объемы. У брокеров с небольшими объемами эффективность системы снижается.
 
DIM2006:

Тестирую на демо в MoneyRain на M1 EURUSD постоянно сливает.Может кто нибудь посоветует насчёт параметров.Спасибо.


Не только у тебя и не только на MoneyRain. У меня сливает на MIG, при чём стабильно и не взирая ни на какие параметры. Только в самом дремучем флете, когда ширина коридора максимум 25 пипсов этот советник может не сливать, а приносить какую то прибыль. Но стоит только цене вылезти хоть немного в ту или в другую сторону за границы канала, как начинается слив... И это вообще говоря не удивительно. Вчера от нефиг делать решил покапаться в коде. Смеялся долго. Кто то там назвал авторов хорошими программистами и математиками... Помоему школьники пишут лучше. Я уже молчу о стиле, хрен с ним, молчу о полусотне глобальных переменных, которые зачастую дублируют или блокируют друг друга, на там просто элементарные вещи делаются через задницу, извиняюсь за мой английский. Ну и это не самое страшное, как говорится не важно на сколько криво сделано, главное чтобы хорошо работало. Да только и тут проблема. Я начал ковырять несколько функций, на которых основана практически вся логика. Честно говоря самой логики, с точки зрения даже простого трейдера, я там не нашёл. Нашёл лишь кучу вопросов, на которые врядли ответят даже сами авторы. Вам тут пытаются рассказать, что этот советник работает на "торможении неправильных сделок", на вероятностях и так далее, что в последние месяцы изменилась волотильность рынка... Чушь собачья. Не знаю что у них в коммерческой версии, но если там та же логика, что и здесь, то бедные люди, кто это приобрёл. Чтобы не быть голословным приведу куски кода этих самых функций. Свои коменты я выделю в тексте маркером. Коменты авторов оставил без изменения, как естественно и сам текст кода.

Ну это так, мелочь, просто сделано через... то самое место, а так работает.
int init()
  {
   AccountStatus();   
   GetMarketInfo();
   ModelingPeriod = ValuePeriod * ValuesPeriodCount; // Период моделирования в минутах 
   if (ValuePeriod != 0 )                                                              
       ModelingBars = ModelingPeriod / ValuePeriod; // Количество шагов в периоде       
       // Вах, маладэц, вах харашо сказал! Это наверно чтобы всех врагов запутать. Штирлиц млин. А по русски нельзя быдо напмсать
       // ModelingBars = ValuesPeriodCount; ? Обязазательно нужно громоздить всё это?       
   CalculateSpread();
   return(0);
  }
Это пожалуй одна из самых важных функций, к ней обращаются из очень большого количества мест в программе. В связи с этим я не смог удержаться чтобы не ковырнуть. Лучше бы я этого не делал. Так была хоть надежда на логику программы.. Но тут и она умерла.
//+------------------------------------------------------------------+
//| Принимаем решение                                                |
//+------------------------------------------------------------------+
int CalculatePossibility (int shift)
  {
   DecisionValue = iClose( Symbol(), PERIOD_M1, ValuePeriod * shift) - 
                   iOpen( Symbol(), PERIOD_M1, ValuePeriod * shift);
   PrevDecisionValue = iClose( Symbol(), PERIOD_M1, ValuePeriod * (shift+1)) - 
                       iOpen( Symbol(), PERIOD_M1, ValuePeriod * (shift+1));
   SellPossibility = 0;
   BuyPossibility = 0;
   UndefinedPossibility = 0;
   if(DecisionValue != 0) // Если решение не определенно.  Как раз когда оно определено!!!
     {
       if(DecisionValue > 0) // Если решение в пользу продажи.  на самом деле если Close[i] > Open[i]. Каким образом это 
                             // свидетельствует о продаже?
         {
           // Подозрение на вероятность продажи
           if(PrevDecisionValue < 0) // Подтверждение решения в пользу продажи.  на самом деле если Close[i+1] < Open[i+1]. 
                                     // Какое подтверждение?? На основании чего??? Что может подтвердить или опровергнуть медвежий бар,
                                     // предшествующий бычьему? Где тут вообще хоть какая то логика??? 
             {
               Decision = DECISION_SELL;
               BuyPossibility = 0;
               SellPossibility = DecisionValue; // То есть SellPossibility = Close[i]-Open[i]
               UndefinedPossibility = 0;
             }
           else  // Иначе решение не определено. На самом деле тут речь идёт о ситуации, когда предыдущий и текущий бары бычьи. 
                 // Странно почему не определено решение в данной ситуации.
             {
               Decision = DECISION_UNKNOWN;
               UndefinedPossibility = DecisionValue; // То есть UndefinedPossibility = Close[i]-Open[i]
               BuyPossibility = 0;
               SellPossibility = 0;
             }
         }
       else // Если решение в пользу покупки. На самом деле если Close[i] < Open[i]. т.е. текуший бар - бычий. Каким образом это свидетельствует о 
            // покупке??
         {
           if(PrevDecisionValue > 0) // Подтверждение решения в пользу продажи. На самом деле если Close[i+1] > Open[i+1]. Какое подтверждение это даёт??
                                     // На основании чего это является подтверждением???  Что может подтвердить или опровергнуть бычий бар,
                                     // предшествующий медвежьему? Где тут вообще хоть какая то логика??? 
             {
               Decision = DECISION_BUY;
               SellPossibility = 0;
               UndefinedPossibility = 0;
               BuyPossibility = -1 * DecisionValue; // То есть BuyPossibility = Open[i]-Close[i]
             } 
           else  // Решение не определено . На самом деле тут речь идёт о ситуации, когда текуший и предыдущий бар - медвежие
                 // Странно почему не определено решение в таком случае.
             {
               Decision = DECISION_UNKNOWN;
               UndefinedPossibility = -1 * DecisionValue; // То есть UndefinedPossibility = Open[i]-Close[i]
               SellPossibility = 0;
               BuyPossibility = 0;
             }
         }
     }
   else // Вот тут как раз и есть случай, когда решение не определено, хотя тут тоже возникает вопрос: почему, если текуший бар является доджем,
        // решение не определено? Ведь мы даже не смотрим что было до этого бара. 
     {
       Decision = DECISION_UNKNOWN;
       UndefinedPossibility = 0;
       SellPossibility = 0;
       BuyPossibility = 0;
     }
   return (Decision);
  }
//+------------------------------------------------------------------+
//| Вычисляем статистику вероятностей                                |
//+------------------------------------------------------------------+
int CalculatePossibilityStat()
  {
   int i;
   BuySucPossibilityCount = 0;
   SellSucPossibilityCount = 0;
   UndefinedSucPossibilityCount = 0;
//----
   BuyPossibilityCount = 0;
   SellPossibilityCount = 0;
   UndefinedPossibilityCount = 0;
   // Вычисляем средние значения вероятности
   BuySucPossibilityMid = 0;
   SellSucPossibilityMid = 0;
   UndefinedSucPossibilityMid = 0;
   BuyPossibilityQuality = 0;
   SellPossibilityQuality = 0;
   UndefinedPossibilityQuality = 0;
   PossibilityQuality = 0;
//----
   BuySucPossibilityQuality = 0;
   SellSucPossibilityQuality = 0;
   UndefinedSucPossibilityQuality = 0;
   PossibilitySucQuality = 0;
   for( i = 0 ; i < ModelingBars ; i ++ )
     {
       // Вычисляем решение для данного интервала
       CalculatePossibility (i);
       // Если решение для значения i - продавать         
       if(Decision == DECISION_SELL )
           SellPossibilityQuality ++;           
       // Если решение для значения i - покупать
       if(Decision == DECISION_BUY )
           BuyPossibilityQuality ++;           
       // Если решение для значения i - не определено
       if(Decision == DECISION_UNKNOWN )
           UndefinedPossibilityQuality ++;           
       // Те же оценки для успешных ситуаций                 
         //
       if((BuyPossibility > Spread) || (SellPossibility > Spread) || 
          (UndefinedPossibility > Spread))
         {
           if(Decision == DECISION_SELL)
               SellSucPossibilityQuality ++;                     
           if(Decision == DECISION_BUY)
               BuySucPossibilityQuality ++;
           if(Decision == DECISION_UNKNOWN )
               UndefinedSucPossibilityQuality ++;                   
         }  
       // Вычисляем средние вероятности событий
       // Вероятности покупки 
       BuyPossibilityMid *= BuyPossibilityCount;
       BuyPossibilityCount ++;
       BuyPossibilityMid += BuyPossibility;
       if(BuyPossibilityCount != 0 ) // Гыыыыы ! :))) Класс. Нет, я преклоняю колени перед этой логикой! 2 строки назад сделали BuyPossibilityCount ++;
                                     // при чём без каких либо условий, то есть BuyPossibilityCount ++ выполняется ВСЕГДА, а теперь вот очень
                                     // интересуемся, а не равна ли переменная BuyPossibilityCount нулю, то есть начальному состоянию...
                                     // Ну типа защитиа от деления на 0 :)) Жжоте!!
           BuyPossibilityMid /= BuyPossibilityCount;
       else
           BuyPossibilityMid = 0;
       // Вероятности продажи
       SellPossibilityMid *= SellPossibilityCount;
       SellPossibilityCount ++;
       SellPossibilityMid += SellPossibility;
       if(SellPossibilityCount != 0 ) // Ну тут та же байда, что и выше... 
           SellPossibilityMid /= SellPossibilityCount;
       else
           SellPossibilityMid = 0;
       // Вероятности неопределенного состояния
       UndefinedPossibilityMid *= UndefinedPossibilityCount;
       UndefinedPossibilityCount ++;
       UndefinedPossibilityMid += UndefinedPossibility;
       if(UndefinedPossibilityCount != 0) // Ну тут та же байда, что и выше... 
           UndefinedPossibilityMid /= UndefinedPossibilityCount;
       else
           UndefinedPossibilityMid = 0;
           
       // А теперь вопрос на засыпку: А чем отличаются друг от друга переменные  BuyPossibilityCount, SellPossibilityCount, UndefinedPossibilityCount, 
       // если при КАЖДОЙ итерации цикла КАЖДАЯ из этих переменных УВЕЛИЧИВАЕТСЯ НА 1 НЕЗАВИСИМО НИ ОТ КАКИХ УСЛОВИЙ ?    
       // Чтобы долго не чесали репу, помогу с ответом: НИЧЕМ НЕ ОТЛИЧАЮТСЯ.Значения всех этих переменных в конце каждой итерации будет ВСЕГДА одинаковым.
       // Почему же в таком случае не использовать, скажем, тот же счётчик цикла, - i? Там где надо умножать, умножаем на i, там где надо делить,
       // делим на i+1 и не надо кучу переменных и тупых проверок деления на 0. В связи с вышесказанным возникает другой вопрос: А что мы собственно 
       // вычисляем делением, скажем BuyPossibilityMid на число пройденных итераций вот в такой строке BuyPossibilityMid /= BuyPossibilityCount; ?
       // Ответ весьма не тривиален- хрен знает что мы этим вычисляем, но только это однозначно не среднее значение BuyPossibility! 
       
       // Вычисляем средние вероятности успешных событий
       if(BuyPossibility > Spread) // Вона как! Слава яйцам хоть тут условие допёрли поставить. Прогресс на лицо. 
         {
           BuySucPossibilityMid *= BuySucPossibilityCount;
           BuySucPossibilityCount ++;
           BuySucPossibilityMid += BuyPossibility;
           if(BuySucPossibilityCount != 0)
               BuySucPossibilityMid /= BuySucPossibilityCount;
           else
               BuySucPossibilityMid = 0;
         }
       if(SellPossibility > Spread)
         {
           SellSucPossibilityMid *= SellSucPossibilityCount;
           SellSucPossibilityCount ++;                 
           SellSucPossibilityMid += SellPossibility;
           if (SellSucPossibilityCount != 0)
              SellSucPossibilityMid /= SellSucPossibilityCount;
              else
                 SellSucPossibilityMid = 0;
         }
       if(UndefinedPossibility > Spread)
         {
           UndefinedSucPossibilityMid *= UndefinedSucPossibilityCount;
           UndefinedSucPossibilityCount ++;                 
           UndefinedSucPossibilityMid += UndefinedPossibility;
           if(UndefinedSucPossibilityCount != 0)
               UndefinedSucPossibilityMid /= UndefinedSucPossibilityCount;
           else
               UndefinedSucPossibilityMid = 0;
         }
     }
   if((UndefinedPossibilityQuality + SellPossibilityQuality + BuyPossibilityQuality)!= 0)
       PossibilityQuality = (SellPossibilityQuality + BuyPossibilityQuality) / 
       (UndefinedPossibilityQuality + SellPossibilityQuality + BuyPossibilityQuality); // Эко завернул. А почему тогда не использовать вместо 
        // громоздкого (UndefinedPossibilityQuality + SellPossibilityQuality + BuyPossibilityQuality) простое значение переменной ModelingBars. 
        // Сумма этих трёх всегда будет равна количеству итераций цикла, то есть после выхода из цикла это будет ModelingBars, так как ровно столько
        // итераций было проделано. 
   else             
       PossibilityQuality = 0;
   // Качество для успешных ситуаций
   if((UndefinedSucPossibilityQuality + SellSucPossibilityQuality + 
      BuySucPossibilityQuality)!= 0)          
       PossibilitySucQuality = (SellSucPossibilityQuality + BuySucPossibilityQuality) / 
                                (UndefinedSucPossibilityQuality + SellSucPossibilityQuality + 
                                BuySucPossibilityQuality);
   else             
       PossibilitySucQuality = 0;
   return (0);
  }

Не имею ничего личного против авторов, просто не смог сдержаться, когда начал копаться в коде и увидел последние сообщения.  Извиняюсь за весь мой сарказм, но коль уж выставили что то на всеобщее обозрение, да ещё с такой претенциозностью, будьте готовы выслушивать критику. Больше всего меня зацепили даже не мелкие ошибки, а сама логика. Вот объясните мне ради Б-га, почему если предыдущий бар бычий, а текущий медвежий, это должно свидетельствовать в пользу продажи, да и вообще в пользу или против чего либо? И почему когда оба бара однонаправлены (оба бычьи или оба медвежьи), то решение не определено? Откуда вообще возникла такая интересная статистика, на основании которой вы потроили логику? Честно говоря я впервые вижу такое, да думаю не только я. Заранее спасибо за ответ.
 
Итак по порядку:

1. "Вах" - это не по русски - учите русский.
2. Уменьшение периода моделирования свидетельствует о скорой перемене тренда.
3. Предыдущий вектор должен быть противоположным (учите теорию хаоса).
4. Система построена по теории хаоса, не пришивайте сюда термины "бычьи" или "медвежьи".
5. Решение не определено если предыдущий и настоящий векторы совпадают.
6. Проверка делителей при операциях деления как раз свидетельствует о профессионализме, а не об обратном.
7. Основное отношение теории вероятности - "вероятность наступления события равна отношению положительных исходов к количеству всех исходов." Если это для Вас сложно, то увы
8. Качество моделирования и банальный счетчик (который используется для вычисления средних значений) меют не одно и то же значение. Переменные, хранящие качество моделирования содержат не значение счетчика, а количество значений по локальной смене тренда, которые описала система моделирования. Чем большее количество смен тренда описала модель хаоса, тем более лучший период моделирования выбран.
9. Направления "бычий и медвежий тренд" проверяются в торможении а не в моделировании. Если Вы увидели например явно бычий тренд с огромным "подтверждением" направления и покупаете на его вершине, остается только пожелать Вам удачи... ))))

Соглашусь только с тем, что проверка деления на ноль в данном случае избыточна. Причина, по которой мы ее вставили и оставили - ошибки терминала, выдающее сообщение "деление на ноль". После того как мы вставили эту проверку, ошибка исчезла, но отладка отладка в MQL4 показала, что в операциях деления ноль не встречается.

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

Спасибо что потратили время, только жаль что зря.
 

Хаос и управление хаосом

Не секрет, что нет ничего более организованного, чем хаос. Многие ученые и простые люди пытаются найти ответ на вопрос: «как научиться управлять хаосом и извлекать из него прибыль». Ответ на этот вопрос лежит у всех перед глазами на графиках движения котировок финансовых инструментов. Для того чтобы научиться управлять хаосом требуется его понять.

Основные постулаты хаоса

Для того чтобы научиться управлять хаосом требуется выделить его основные постулаты:

1. Любое движение хаоса в одном направлении изменится на противоположное.

2. Для того чтобы описать хаос в будущем требуется встать на текущее состояние хаоса и посмотреть его историю в прошлом. Если Вы находитесь на подъеме – значит будет спуск.

3. Ответ на вопрос, когда произойдет изменение направления хаоса, хранится в самом хаосе.

Почему хаос борется с теми, кто пытается за ним следовать

Ответ на этот вопрос заложен в основных постулатах хаоса, которые мы выделили в предыдущем разделе: любое движение хаоса в одном направлении изменится на противоположное. Тех, кто пытается следовать за хаосом, он сбросит с силой, превышающей силу его движения в предыдущем направлении. Сила, хаоса превышает силу его обратной реакции потому, что хаос выявляет свое движение после того как оно началось, и те кто стали вместе с ним по направлению неминуемо будут разочарованы его обратной силой, поскольку не знают когда это произойдет. Таким образом, чтобы победить хаос достаточно знать когда он изменит направление до того, как это произошло.

Когда хаос меняет направление

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

Теперь рассмотрим что такое изменение амплитуды графика. На первый взгляд это совершенно не поддается описанию, но это ошибочное мнение. Изменяя масштаб рассмотрения хаоса вы можете увидеть четкие и практически одинаковые амплитуды периодов. Достаточно наглядно это можно наблюдать переключая периоды отображения графиков в MetaTrader-е (в этом, на мой взгляд одной из самых удобных рабочих средств, есть недостаток - фиксированные периоды отображения, что, на мой взгляд, является аналитической ошибкой проектирования, затрудняющей визуальный анализ). Таким образом, изменение периодичности котировок, что мы наблюдали на меньших периодах, является ничем иным, как реакцией хаоса на других периодах. Эти уровни амплитуд трейдеры видят каждый день в виде линий поддержки и сопротивлений, не задумываясь с научной точки зрения чем они являются. Таким образом, чтобы узнать когда хаос изменит направление, мы должны посмотреть на него в другом измерении – во времени. Таким образом мы находим ответ на вопрос – когда произойдет изменение направления хаоса.

Строим систему описания хаоса

Теперь чтобы научиться побеждать хаос, попробуем построить систему его моделирования. Описанных выше принципов вполне достаточно чтобы выполнить эту задачу, тем более что у нас на вооружении такой мощный инструмент как информационные технологии, который как нельзя кстати подходит для такой задачи. Большинство трейдеров анализируют состояние рынка на часовых периодах и выше. Мы рассмотрим эту задачу с другой точки зрения. Анализируя хаос, мы будем двигаться с наименьшего периода в сторону его увеличения и будем искать наилучшие периоды хаоса в соответствии с нашей теорией.

Начать нужно с самого элементарного – потикового графика. Большинство значений тиковой статистики в единицу времени лежит в пределах спреда, а соответственно нам это не интересно, здесь нет прибыли. Увеличивая период анализа, мы получим значения хаоса, выходящие за его пределы – это и есть наша потенциальная прибыль. Но если мы получили хорошую статистику по моделированию на этом периоде, это не значит что на других периодах она не будет улучшаться. Увеличивая период моделирования, мы уменьшаем частоту сделок в единицу времени. Таким образом мы решаем тривиальную задачу – найти наилучшее качество моделирования в единицу времени. С точки зрения программирования это сделать несложно.

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

Строим торговую систему

Имея в запасе все вышеперечисленное, построить торговую систему несложно. Строить ее мы будем не с целью получить прибыль, а с целью – не проиграть. Давайте определим основные составляющие нашей торговой системы:

1. Система моделирования хаоса, построенная на основе теории вероятностей.

Цель этой системы – выдавать сигналы входа в рынок и соответственно прогнозировать моменты выходы из рынка

2. Система управления ордерами для ведения торговли (здесь нет ничего сложного)

4. Система управления рисками (средствами). Достаточно важная составляющая успеха, но в этой статье мы ее рассматривать не будем.

5. Система торможения некорректных сделок. Очень важная составляющая любой торговой системы – на ней мы остановимся поподробнее в следующем разделе.

Система торможения неправильных сделок - самая важная составляющая

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

Система моделирования рынка, генерирующая торговые сигналы сама по себе будет малоэффективной, если не учесть такую важную составляющую как торможение некорректных сделок. Именно торможение неправильных сделок дает прибыль от автоматической торговли. Разрабатывая механическую торговую систему, Вы должны уделить особое и самое интенсивное внимание системе торможения, при чем должны совершенствовать ее постоянно – от этого зависит Ваш успех. Однако совершенствование системы торможения может зайти слишком далеко, и Ваша система перестанет торговать, обеспечив тем самым свою задачу – сохранность средств. Эта тема особенно важна и требует отдельного рассмотрения, что я надеюсь сделаю в своей следующей статье.

 
Вижу бесполезно. Ладно, ещё раз.
1) ДВА БАРА НЕ ОПРЕДЕЛЯЮТ ТРЕНД.
2) Смена направленсти 2 соседних баров с "бычьего" на "медвежий" или наоборот НЕ ОПРЕДЕЛЯЮТ СМЕНУ ТРЕНДА.
3) Восходящим ("Бычьим") трендом называется последовательнось возврастающих локальных минимумов (впадин) цен. То есть для определения восходящего тренда необходимо хотя бы 2 локальных минимума, а для их образования нужно гораздо больше баров, чем 2.
4) Нисходящим ("Медвежьим") трендом называется последовательность снижающихся локальных максимумов ( вершин) цен. То есть, для определения нисходящего тренда необходимо как минимум два локальных максимума, а для их образования нужно гораздо больше чем 2.

Это всё азбучные истины для каждого трейдера. Увы, вам, судя по всему, они не известны. Вы продолжаете утверждать, что смена направленности двух соседних баров это то же самое, что смена тренда.
8. Качество моделирования и банальный счетчик (который используется для вычисления средних значений) меют не одно и то же значение. Переменные, хранящие качество моделирования содержат не значение счетчика, а количество значений по локальной смене тренда, которые описала система моделирования. Чем большее количество смен тренда описала модель хаоса, тем более лучший период моделирования выбран.

Эта переменная будет хранить не количестов смен тренда, а количество смен направленности ДВУХ СОСЕДНИХ БАРОВ. По вашему это одно и то же? Если для вас это одно и то же, то дальнейшее обсуждение данной модели можно на этом и закончить.
Я не зря спрашивал вас о том, на основании чего смену баров с одного вида на другой вы считаете подтверждением какого то направления движения цены. В ответ вы налили тут огромную кучу воды, без каких либо конкретных вещей и уж тем более доказательств. Вот ваши объяснения:
3. Предыдущий вектор должен быть противоположным (учите теорию хаоса).
4. Система построена по теории хаоса, не пришивайте сюда термины "бычьи" или "медвежьи".
5. Решение не определено если предыдущий и настоящий векторы совпадают.

Весьма аргументированно... За то, что после этого вы написали большую кучу текста, с объяснением теории хаоса и применением его в вашей модели хочу выразить благодарность. Это конечно ни в коей мерене объяснило саму модель, но тем не менее. С теорией хаоса я знаком исключительно поверхностно из книги Билла Вильямса "Торговый Хаос." Так вот, основным постулатом там было утверждение История не повторяется. Вы же строите свою модель на основе исторических данных и пытаетесь на основании них "спрогнозировать" поведение хаоса. Не кажется ли это противоречием самой теории? Кроме того, в той же модели Билла Вильямса были учтены такие вещи как объёмы (точнее их изменение), расоложения закрытия от открытия баров ( в какой трети баро было открытие и в какой закрытие) и так далее. Вы же используете для вашей модели просто 2 соседних бара, без какого бы то ни было анализа хотя бы их размеров и расположения друг относительно друга ( то, что вообще говоря использует "свечной" анализ). Вам абсолютно всё равно сколько баров подряд было в одном направлении, их размер, тиковый объём, количество локальных минимумов и максимумов на исследуемом промежутке времени, и даже в какую сторону в течение этого времени двигалась цена (то есть тренд) . Всё, что вас интересует, это количество смен баров с закрытых вверх на закрытые вниз. По вашему чем чаще происходит смена баров внутри исследуемого периода, тем больше это указывает на какое то направление. Даже самый начинающий трейдер вам скажет, что чем чаще сменяются направления баров, тем больше это свидетельствует о переходе во флет, а не является характеристикой направленного движения. Кстати, может быть это и является причиной, по которой ваша модель работает во флете, особенно дремучем, и сливает при мало мальском направленном движении. Именно поэтому я и назвал вашу модель необоснованной и задал те вопросы в коментах к функции CalculatePossibility.

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

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

1. "Вах" - это не по русски - учите русский

Слова парашют, дивергенция, хеджирование, протеже, гламур, волатильность, атташе и оооочень большое множество других слов имеют совершенно не русские корни, однако мы свободно ими пользуемся. Если хотите запретить использование того же слова Вах, запретите использование и всех остальных слов, пришедших в русский из других языков. Вот тогда и посмотрим как зазвучит ваша речь. Хотите потягаться в лингвистике, - милости прошу, а нет, - учите русский. :))

2. Уменьшение периода моделирования свидетельствует о скорой перемене тренда.

Вот это надо действительно перевести на русский. Вы сами то поняли, что сказали? О перемене тренда (как скорого, так и отдалённого) может свидетельствовать ТОЛЬКО сама перемена направления ценового движения. Тренду абсолютно глубоко безразлично в каких периодах мы строим модель, да и вообще всё наше моделирование ему безразлично. Как я уже сказал, свидетельствром смены тренда может быть только само сменение тренда и ничего более.

7. Основное отношение теории вероятности - "вероятность наступления события равна отношению положительных исходов к количеству всех исходов

Абсолютно согласен и нигде не утверждал обратного. Смею лишь заметить, что переменные типа BuyPossibility, BuyPossibilityMid и тому подобные содержат вовсе не вероятности. Хотябы по той простой причине, что вероятность всегда меньше единицы, эти же переменные зачастую гораздо больше.

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

 
RavenHeart писал(а):
Вижу бесполезно.
Ладно, ещё раз.
1) ДВА БАРА НЕ ОПРЕДЕЛЯЮТ ТРЕНД.

- Да, не определяют. Они определяют моменты его смены.

2) Смена направленсти 2 соседних баров с "бычьего" на "медвежий" или наоборот НЕ ОПРЕДЕЛЯЮТ СМЕНУ ТРЕНДА.

- (ладно, будем с бычими и медвежьими пытаться вам объяснить) Величина средней амплитуды бычих и медвежьих баров определяет тренд.

3) Восходящим ("Бычьим") трендом называется последовательнось возврастающих локальных минимумов (впадин) цен. То есть для определения восходящего тренда необходимо хотя бы 2 локальных минимума, а для их образования нужно гораздо больше баров, чем 2.

- ( полностью согласен - а теперь включаем мозг: почему локальные минимумы возрастают? - именно потому что амплитуда бычих баров больше медвежьих...)

4) Нисходящим ("Медвежьим") трендом называется последовательность снижающихся локальных максимумов ( вершин) цен. То есть, для определения нисходящего тренда необходимо как минимум два локальных максимума, а для их образования нужно гораздо больше чем 2.

- (см то же самое для предыдущего утверждения)

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

- :))) нет, я этого не утверждаю. Наоборот - если два соседних бара одинаковы по направлению, это говорит что система моделирования не описала этот случай, а соответственно это не есть точка входа.

8. Качество моделирования и банальный счетчик (который используется для вычисления средних значений) меют не одно и то же значение. Переменные, хранящие качество моделирования содержат не значение счетчика, а количество значений по локальной смене тренда, которые описала система моделирования. Чем большее количество смен тренда описала модель хаоса, тем более лучший период моделирования выбран.

Эта переменная будет хранить не количестов смен тренда, а количество смен направленности
ДВУХ СОСЕДНИХ БАРОВ. По вашему это одно и то же? Если для вас это одно и то же, то дальнейшее обсуждение данной модели можно на этом и закончить.

- Действительно. Чем большее количество смен амплитуд описала система моделирования - тем она лучше. Посмотрите на индикатор ZigZag. Здесь система моделирования похожа на нее но есть отличия: ZigZag рисует максимум или минимум после того как он произошел, мы - ДО чтобы определить точку входа. Но если как вы говорите тренд "бычий" или "медвежий" ( о чем говорит величина средней амплитуды бычих или медвежьих баров на моделируемом интервале которые ну никак не превышают единицу поскольку содержат отклонения этой величины в пунктах и уже после умноженные на качество моделирования соответствующих направлений для получения в последствии численного значения вероятности совершения покупки или продажи)

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

3. Предыдущий вектор должен быть противоположным (учите теорию хаоса).
4. Система построена по теории хаоса, не пришивайте сюда термины "бычьи" или "медвежьи".
5. Решение не определено если предыдущий и настоящий векторы совпадают.

- никакой воды. Включите ShowSuitablePeriod, ShowStat, ShowDecision и узрейте что (1) период моделирования меняется (2) вероятности событий ну никак не больше единицы (3) на бычих трендах система ищет минимумы для покупки, поскольку работает с коротким стопом ( ну и для медвежьих наоборот соответственно ). После совершения сделки ожидает прибыль в размере средней величины вероятности В ПУНКТАХ


Весьма аргументированно... За то, что после этого вы написали большую кучу текста, с объяснением теории хаоса и применением его в вашей модели хочу выразить благодарность. Это конечно ни в коей мерене объяснило саму модель, но тем не менее. С теорией хаоса я знаком исключительно поверхностно из книги Билла Вильямса "Торговый Хаос." Так вот, основным постулатом там было утверждение История не повторяется. Вы же строите свою модель на основе исторических данных и пытаетесь на основании них "спрогнозировать" поведение хаоса. Не кажется ли это противоречием самой теории? Кроме того, в той же модели Билла Вильямса были учтены такие вещи как объёмы (точнее их изменение), расоложения закрытия от открытия баров ( в какой трети баро было открытие и в какой закрытие) и так далее. Вы же используете для вашей модели просто 2 соседних бара, без какого бы то ни было анализа хотя бы их размеров и расположения друг относительно друга ( то, что вообще говоря использует "свечной" анализ). Вам абсолютно всё равно сколько баров подряд было в одном направлении, их размер, тиковый объём, количество локальных минимумов и максимумов на исследуемом промежутке времени, и даже в какую сторону в течение этого времени двигалась цена (то есть тренд) . Всё, что вас интересует, это количество смен баров с закрытых вверх на закрытые вниз. По вашему чем чаще происходит смена баров внутри исследуемого периода, тем больше это указывает на какое то направление. Даже самый начинающий трейдер вам скажет, что чем чаще сменяются направления баров, тем больше это свидетельствует о переходе во флет, а не является характеристикой направленного движения. Кстати, может быть это и является причиной, по которой ваша модель работает во флете, особенно дремучем, и сливает при мало мальском направленном движении. Именно поэтому я и назвал вашу модель необоснованной и задал те вопросы в коментах к функции CalculatePossibility.

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

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

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

- вам настолько понравились два однонаправленных бара и в комментарии кода вы указали что "как раз решение определено". Ни в коем случае оно в этой ситуации не определено!!!

1. "Вах" - это не по русски - учите русский

Слова парашют, дивергенция, хеджирование, протеже, гламур, волатильность, атташе и оооочень большое множество других слов имеют совершенно не русские корни, однако мы свободно ими пользуемся. Если хотите запретить использование того же слова Вах, запретите использование и всех остальных слов, пришедших в русский из других языков. Вот тогда и посмотрим как зазвучит ваша речь. Хотите потягаться в лингвистике, - милости прошу, а нет, - учите русский. :))

- если обсуждать, то давайте только по русски без оскорблений в наш адрес если вы до конца пока не разобрались

2. Уменьшение периода моделирования свидетельствует о скорой перемене тренда.

Вот это надо действительно перевести на русский. Вы сами то поняли, что сказали? О перемене тренда (как скорого, так и отдалённого) может свидетельствовать ТОЛЬКО сама перемена направления ценового движения. Тренду абсолютно глубоко безразлично в каких периодах мы строим модель, да и вообще всё наше моделирование ему безразлично. Как я уже сказал, свидетельствром смены тренда может быть только само сменение тренда и ничего более.

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

7. Основное отношение теории вероятности - "вероятность наступления события равна отношению положительных исходов к количеству всех исходов

Абсолютно согласен и нигде не утверждал обратного. Смею лишь заметить, что переменные типа BuyPossibility, BuyPossibilityMid и тому подобные содержат вовсе не вероятности. Хотябы по той простой причине, что вероятность всегда меньше единицы, эти же переменные зачастую гораздо больше.

- блин, ну включите Вы пожалуйста ShowStat=true и посмотрите на значения этих переменных. Они содержат числовую величину отклонения в пунктах по символу и никак не могут быть больше единицы. (Хватит сотрясать воздух своими догадками!!!)

На последок хочу сказать, что мои утврждения подтверждены практикой, ваши же, только теорией, при чём весьма туманной.



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

- сливать он может только по причине короткого стопа, с которым вы проходите через новости. Я в самом начале указал, что с механикой через экономические новости проходить нельзя!!! В коммерческую версию загружается график выхода новостей, что позволяет избегать подобных ситуаций. Разборки рынка на фибах - тоже отдельный разговор, но механика очень часто выходит из этих ситуаций с плюсом за счет увеличения амплитуды в битвах быков и медведей. Динамический стоп помогает системе автоматически подстраиваться под волатильность рынка, но может врезать по депозиту при проходе через новости с этой включенной функцией, о чем мы постоянно предупреждаем!

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

Спасибо хоть на этом. Я в самом начале сказал что CyberiaTrader - рабочий инструмент, но никак не грааль! Он требует относительного постоянного сопровождения, наподобие ежедневной загрузки графика новостей и других вещей, позволяющих успешно применять его в повседневной работе. Он не является полностью автоматической системой! А вам спасибо что вы хотябы начали пытаться действительно обсуждать.
 
2 RavenHeart
<<<Смеялся долго. Кто то там назвал авторов хорошими программистами и математиками...>>>

Именно, использую эти разработки вот уже более полугода. Ты наверное протестил ее в течение недели - угадал?
Исходники у тебя есть, если ты хочешь что-то доказать, внеси правки сюда или опубликуй свое решение, и если они улучшат эту систему или твоя система дадст результат лучше, признаю что был неправ. Эффективность этой системы сильно зависит от объемов - в этом есть ее недостаток, признаю. За февраль-март эта штука принесла мне доход больше чем я парился несколько лет до этого. С мая по июнь у меня был относительный слив, но всеравно в плюсе пока, что собственно и подтверждает зависимость от объемов. Сейчас я торгую попеременно автоматикой и руками.

P.S.: "на соревновании по забиванию гвоздей в дерево головой победил чукча, но он был дисквалифицирован за то, что забивал гвозди другой стороной".
 
Knocker я извиняюсь за нескромный вопрос.С каким брокером Вы работаете?Если можно поделитесь настройками советника.Спасибо.
 
DIM2006:
Knocker я извиняюсь за нескромный вопрос.С каким брокером Вы работаете?Если можно поделитесь настройками советника.Спасибо.

МТС немного постарее чем тут наворочено
CyberiaTrader (commercial edition) - релиз августа 2005 г. (брал сначала релиз, потом исходники, кое-какие фичи дописвыал под себя, кое что поубирал. Основную математику я не трогал. Если беглым взглядом, она не изменилась).
Сейчас брокер - MIG:
RunPipsator=true ставлю очень редко (почти не использую), только когда рынок спокойный. При этом отключаю динамический стоп-лосс (пркатически не использую его вообще, так безопаснее ).
Пипсер запускаю редко со статик-стопом со смещением в 7-9 пунктов(помоему тут по умолчанию стоит тоже 7). 7 - когда все совсем спокойно, 9 - когда волатильность повыше (смотрю по стандартным индикаторам объемов MT).
CyberiaLogic никогда не отключаю вообще, и вам не советую. (всегда стоит true).
Не использую одновременно пипсатор и логическую торговлю (EnableLogicTrading). Либо одно, либо другое, но никак не вместе. Вместе они друг-другу мешают, увеличивают просадку.
Обычную торговлю (EnableLogicTrading = true, BlockPipsator = true) веду со смещением статик-стопа не менее 15 пунктов, но не более 20. (У меня этот параметр по другому называется. Здесь это помоему StaticStopLoss, у меня стоит обычно 16-17).
MoneyTrain у меня вообще нет. Насколько я знаю эта штука пока экспериментальная, говорят прибыльная но опасная (для ловли ГЭП на новостях), ничего не могу сказать по этому поводу.
ТаймКонтрол у меня с новой Pro-версии (кусок кода вставил сам, сложного там ничего нет). Очень полезная штука, без нее было бы тяжело. Просто заливаю в нее график выхода всяких засад и сплю спокойно.
"Тормоз" также с новой Pro версии. (тот что тут я бы назвал "без тормозов" вообще. Фигачит как сумасшедшая, моя версия делает за день сделок раз в 5 меньше, но надежнее).
Теневого стопа у меня тоже нет - все стопы реальные (в миге в отличии от российских кидальных брокеров этой фигней пока не страдают).
Поскольку мозгов читать новости у этой штуки еще нет, иногда помогаю блокировками нежелательных сделок (BlockSell = true, BlockBuy = true)

Если коротко: пипсер и логика работают отдельно. Стопы - статик со смещением 7 и 16 соответственно (меняю сам)
Здесь на сайте в параметрах по умолчанию включен баг - статик стоп в 7 пунктов для пипсера, а по умолчанию врублена логика. Не удивительно что кое-кто сливает (головой то тоже надо немного думать).

Вот собственно и вся примудрость.
Причина обращения: