Советники: MACD and SAR

 

MACD and SAR:

Советник анализирует четыре показателя:

  1. значение главной линии MACD на баре #1 (macd_main_1)
  2. значение сигнальной линии MACD на баре #1 (macd_signal_1)
  3. значение индикатора SAR на баре #1 (sar_1) относительно цены Bid (m_symbol.Bid())

Эти показатели сведены в базовую формулы сигналов для Buy и Sell:

bool open_buy        = (macd_main_1>macd_signal_1 && macd_signal_1<0 && sar_1<m_symbol.Bid());
   bool open_sell       = (macd_main_1<macd_signal_1 && macd_signal_1>0 && sar_1>m_symbol.Bid());

Но у Вас есть возможность оптимизировать значения знаков < и > в любой части формулы. Для этого для каждого знака < и > вводятся свои переменные (InpMoreLessBuy_1, InpMoreLessBuy_2, InpMoreLessBuy_3, InpMoreLessSell_1, InpMoreLessSell_2, InpMoreLessSell_3). С этими переменными базовая формула преобразовывается к виду:

bool open_buy=    (InpMoreLessBuy_1   ? macd_main_1>macd_signal_1      : macd_main_1<macd_signal_1) && 
                  (!InpMoreLessBuy_2  ? macd_signal_1 < 0              : macd_signal_1 > 0 ) &&
                  (!InpMoreLessBuy_3  ? sar_1         < m_symbol.Bid() : sar_1         > m_symbol.Bid() );
   bool open_sell=(!InpMoreLessSell_1 ? macd_main_1<macd_signal_1      : macd_main_1>macd_signal_1) && 
                  (InpMoreLessSell_2  ? macd_signal_1 > 0              : macd_signal_1 < 0 ) &&
                  (InpMoreLessSell_3  ? sar_1         > m_symbol.Bid() : sar_1         < m_symbol.Bid() );

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

При оптимизации формулы имеет также смысл оптимизировать и количество позиций:

MACD and SAR optimization

Автор: Vladimir Karputov