MQL4 как инструмент трейдера, или Advanced Technical Analysis

12 июля 2006, 09:12
Andrey Opeyda
3
1 811

    Торговля на рынке - это в первую очередь расчет вероятностей. А поговорка «лень – двигатель прогресса» раскрывает все краски расцвета технических индикаторов и торговых систем. И получается, что большой процент начинающих трейдеров изучают уже готовые теории торговли. Но, к сожалению или к счастью, не все законы движения рынка ещё открыты, а инструменты для анализа ценовых движений в основном существуют в виде тех самых реализованных технических индикаторов, математических и статистических пакетов. Огромное спасибо Билу Вильямсу за его вклад в теорию движения рынков. Но, наверное, не следует останавливаться на достигнутом.

    Зададим себе вопрос: «Свечи какого цвета преобладают на часовом графике EURUSD?» Можно начать считать сначала чёрные свечи, попутно записывая каждую новую сотню в блокнот, потом белые. А можно накидать десять строчек кода, которые всё это сделают. В принципе всё логично и ничего особенного тут нет. И всё же найдём ответ на поставленный  вопрос. Для начала упростим себе идентификацию цвета свечи:

bool isBlack(int shift)
  {
    if(Open[shift] > Close[shift])
        return (true);
    return (false);
  }
//+------------------------------------------------------------------+
bool isWhite(int shift)
  {
    if(Open[shift] < Close[shift]) 
        return (true);
    return (false);
  }
//+------------------------------------------------------------------+

    Используя уже написанный код, продолжим эксперимент.

//EXAMPLE 1
      //Calculate black and white candles
      double BlackCandlesCount = 0;
      double WhiteCandlesCount = 0;
      double BProbability = 0;
 
      for(int i = 0; i < Bars - 1; i++)
        {
          if(isBlack(i) == true)
              BlackCandlesCount++;
 
          if(isWhite(i) == true)
              WhiteCandlesCount++;
        }
      
      BProbability = BlackCandlesCount / Bars;

    Интересный и вполне предсказуемый результат: 52,5426% из 16000 свечей белые. Имея под руками компилятор MQL4 можем заодно решить один из вопросов периодичности свечей. Например, если закрылась чёрная свеча, то какова вероятность формирования белой. Конечно же, это зависит от неимоверно большого количества факторов, но обратимся к статистике.

//EXAMPLE 2
      //Calculate seqences of 1st order
      //BW means after black going white candle     
      double BW = 0;
      double WB = 0;
      double BB = 0;
      double WW = 0;
       
      for(i = Bars; i > 0; i--)
        {
         if(isBlack(i) && isWhite(i-1)) 
             BW++;           
         if(isWhite(i) && isBlack(i-1)) 
             WB++;
         if(isBlack(i) && isBlack(i-1)) 
             BB++;            
         if(isWhite(i) && isWhite(i-1)) 
             WW++;
        }

     Полученный результат:
     - Белая затем Чёрная - 23,64 %
     - Чёрная затем Белая - 23,67 %
     - Белая затем Белая - 21,14 %
     - Чёрная затем Чёрная - 20,85 %

    Как видим вероятность возникновения свечи того-же цвета немного меньше, чем противоположного.

    Используя MQL4 и обладая историческими данными, трейдер может проводить более сложные исследования рынка. Построение гистограмм предусмотрено терминалом. Используем эту возможность для построения распределения цвета свечи в зависимости от значений индикаторов WPR и RSI.

//EXAMPLE 3.1
      //Build histogram by RSI
      //RSI min/max - 0/100
      
      double RSIHistogramBlack[100];
      double RSIHistogramWhite[100];
      
      for(i = Bars; i > 0; i--)
        {
          int rsi_val = iRSI(NULL,0,12,PRICE_CLOSE,i);
          if(isWhite(i))
              RSIHistogramWhite[rsi_val]++;
          if(isBlack(i))
              RSIHistogramBlack[rsi_val]++;
        }
      for(i = 0; i < 100; i++)
        {
          ExtMapBuffer1[i] = RSIHistogramBlack[i];
          ExtMapBuffer2[i] = -RSIHistogramWhite[i];
        }
 
//EXAMPLE 3.2
      //Build histogram by %R
      //%R min/max - 0/-100

      double WPRHistogramBlack[100];
      double WPRHistogramWhite[100];
      
      for(i = Bars; i > 0; i--)
        {
          int wpr_val = iWPR(NULL,0,12,i);
          int idx = MathAbs(wpr_val);
          if (isWhite(i))
              WPRHistogramWhite[idx]++;
          if (isBlack(i))
              WPRHistogramBlack[idx]++;
        }






    Но объективней бы было, вместо подсчета чёрных и белых свечей вести статистику прибыльных и убыточных сделок с разными значениями StopLoss и TakeProfit, для чего удобно будет использовать нижеприведенную процедуру:

int TestOrder(int shift, int barscount, int spread, int tp, int sl, int operation)
 {
   double open_price = Close[shift];
   
   if (operation == OP_BUY)
      open_price  = open_price + (Point * spread);
      
   if (operation == OP_SELL)
      open_price  = open_price - (Point * spread);
      
   
   for (int i = 0; i<barscount; i++)
    {
      if (operation == OP_BUY)
       {
         //sl
         if (Low[shift-i] <= open_price - (Point * sl) )
            return (MODE_STOPLOSS);
         //tp            
         if (High[shift-i] >= open_price + (Point * tp) )
            return (MODE_TAKEPROFIT);            
       }
      
      if (operation == OP_SELL)
       {
         //sl
         if (High[shift-i] >= open_price + (Point * sl) )
            return (MODE_STOPLOSS);
         //tp            
         if (Low[shift-i] <= open_price - (Point * tp) )
            return (MODE_TAKEPROFIT);            
       }
      
    }  
   return (MODE_EXPIRATION);   
 }

    Уверен – результаты вас удивят. Ещё больше удивят Карты Кохонена, Гауссово Распределение, Коофициент Хёрста. В принципе, удивительных вещей предостаточно. Главное не забывать суть и смысл торговли.

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


Прикрепленные файлы |
instrument.mq4 (5.02 KB)
Сергей Ковалев
Сергей Ковалев | 12 июл 2006 в 11:53

Меня заинтересовала тема.

Хорошо было бы привести практические примеры исследований: что от чего зависит и какая от этого знания польза трейдеру.
Хотелось бы узнать какие выводы делает автор, найдена ли кореляция между какими-то характеристиками свечного графика и той или иной стратегией торговли. Особенно интересны "удивительные" результаты. В чём они выражаются?

Andrey Opeyda
Andrey Opeyda | 13 июл 2006 в 09:23
SK. писал(а):

Меня заинтересовала тема.

Хорошо было бы привести практические примеры исследований: что от чего зависит и какая от этого знания польза трейдеру.
Хотелось бы узнать какие выводы делает автор, найдена ли кореляция между какими-то характеристиками свечного графика и той или иной стратегией торговли. Особенно интересны "удивительные" результаты. В чём они выражаются?

Очень интересными есть гисторграммы распределиния %R RSI и Stochastic осциляторов. Однозначно видно что вероятность прибыльных сделок сползает вниз или вверх в зависимости от текущего значения индикаторов. Можно также построить 3D гистограмму, что я бы хотел реализовать болеше всего. Суть такова, по Х и У осям например %R и RSI (эти индикаторы исключительно в ознакомительных целях, ну это ясно в принципе.), вот, а по Z!!! распределение по прибыльности на длинных и/или коротких сделках. Результатом теоретически должна быть чють ли не карта рынка (прошу прощения за столь большую гиперболу :). А в идеале ИМХО, по оси Х должен быть индикатор наличия/отсутствия тренда, а по У.... ну уж на выбор. Потому что в зависимости от тренда, эффективность сигнал/шум индикаторов меняется. А используя вот такую несложную 3D гистограмму, мы бы наочно видели, что где как и по чём. Орентировались бы по вероятности.

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

или не так....

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

Ах.. ну да. Свечи тоже исключительно в ознакомительных целях. Смысл ведь не в подсчёте свечей, а в возможности сделать это. Попробую себя же и процетировать "Можно начать считать сначала чёрные свечи, попутно записывая каждую новую сотню в блокнот, потом белые. А можно накидать десять строчек кода, которые всё это сделают." И всё это благодяря использованию в данном случае MQL
Roma
Roma | 31 мар 2010 в 11:54
гдето когдато какуюто систему видел, но забыл где и какую, но приерно помню. чтото вроде "какие свечи преобладают в последние 20 дней туда открываемся" или чтото типа того. эх, найти бы. там чисто на вероятности всё
Генетические алгоритмы в MetaTrader 4. Сравнение с прямым перебором оптимизатора Генетические алгоритмы в MetaTrader 4. Сравнение с прямым перебором оптимизатора

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

Синхронизация работы экспертов, скриптов и индикаторов Синхронизация работы экспертов, скриптов и индикаторов

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

Использование крешлогов для отладки собственных dll Использование крешлогов для отладки собственных dll

25-30% всех крешлогов, поступающих от пользователей, возникают в результате ошибок выполнения функций, импортируемых из пользовательских dll.

Многократный пересчет нулевого бара в некоторых индикаторах Многократный пересчет нулевого бара в некоторых индикаторах

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