Советники: New Martin

 

New Martin:

New Martin - советник, который при старте открывает две противоположные позиции. Обработка OnTradeTransaction. При срабатывании Take Profit открывает позицию (ОДНУ) в туже строну. Пересечение двух индикаторов МА - это сигнал к открытию увеличенным лотом позиции.

New Martin crossing

Автор: Vladimir Karputov

 

Версия 1.105: Введены отдельные функции OpenBuy и OpenSell

//+------------------------------------------------------------------+
//| Открытие BUY позиции по символу                                  |
//+------------------------------------------------------------------+
bool OpenBuy(const double lot)
  {
   bool res=false;

   double price=m_symbol.Ask();
   double tp=m_symbol.NormalizePrice(m_symbol.Bid()+InpTP*m_adjusted_point);
   if(m_trade.Buy(lot,m_symbol.Name(),price,0.0,tp))
      if(m_trade.ResultDeal()>0)
         res=true;

   return(res);
  }
//+------------------------------------------------------------------+
//| Открытие SELL позиции по символу                                 |
//+------------------------------------------------------------------+
bool OpenSell(const double lot)
  {
   bool res=false;

   double price=m_symbol.Bid();
   double tp=m_symbol.NormalizePrice(m_symbol.Ask()-InpTP*m_adjusted_point);
   if(m_trade.Sell(lot,m_symbol.Name(),price,0.0,tp))
      if(m_trade.ResultDeal()>0)
         res=true;

   return(res);
  }

Теперь код более читаем.
 

 

Как всегда проблема - что делать с убыточными позициями, которые висят? Вот пример версии 1.105:

1.105

и версия 1.105 с внесением одного небольшого изменения: в OnTradeTransaction (при обнаружении закрытия позиции по TakeProfit) делаем поиск самой убыточной позиции и закрываем эту самую убыточную позицию:

1.105 с внесением одного небольшого изменения: в OnTradeTransaction

Напомню, что одиночные тестирования проводятся исключительно в режиме "Каждый тик на основе реальных тиков".

Оба варианта стартовали с 10000. Какой вариант выбирать - думаю зависит от конкретных целей.

 
есть вариант закрыть все позици при получении тп хотя бы одной из них
 
trader781:
есть вариант закрыть все позици при получении тп хотя бы одной из них

В таком случае может быть так:

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

Как-то не очень. 

 
Vladimir Karputov:

В таком случае может быть так:

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

Как-то не очень. 

у меня такой валяется, но там мартин должен быть 2 минимум + удачный вход

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

8 колен от 0.01 хватает если это не кросс

теория

1) открываются 2 ордера по 0.01 в разную сторону по сигналу

2) если цена проходит нужное расстояние в профит  то доливка с тейком  количество доливок, шаг колена и тейка - с этим можно долго играться

 

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

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Советники: New Martin

Vladimir Karputov, 2017.01.22 19:00

Как всегда проблема - что делать с убыточными позициями, которые висят? Вот пример версии 1.105:

1.105

и версия 1.105 с внесением одного небольшого изменения: в OnTradeTransaction (при обнаружении закрытия позиции по TakeProfit) делаем поиск самой убыточной позиции и закрываем эту самую убыточную позицию:

1.105 с внесением одного небольшого изменения: в OnTradeTransaction

Напомню, что одиночные тестирования проводятся исключительно в режиме "Каждый тик на основе реальных тиков".

Оба варианта стартовали с 10000. Какой вариант выбирать - думаю зависит от конкретных целей.


теперь версия 1.106 

 
Код советника "New Martin" запущен в качестве бесплатного демо-сигнала New Martin.
 

Версия 1.007 - защита от перезапуска терминала:

//---
   if(!RefreshRates())
      return;

   if(m_first)
     {
      //--- защита от перезапуска терминала:
      int total=0;
      for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
         if(m_position.SelectByIndex(i))     // selects the position by index for further access to its properties
            if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
               total++;
      //--- если на торговом счёте уже есть позиции открытые данным экспертом -
      //--- значит инициализируем переменные таким образом, что вроде уже был первый раз
      if(total>0)
        {
         bln_buy=true;
         bln_sell=true;
         m_first=false;
         return;
        }


      if(OpenBuy(InpLot))
         bln_buy=true;
      if(OpenSell(InpLot))
         bln_sell=true;
      m_first=false;
     }
//---


Теперь если терминал был перезапущен или советник был перекомпилирован и при этом на данном торговом счёте советник уже открыл позиции - то с таком случае не будет ситуации "первый запуск". 

 

Версия 1.108 Теперь при пересечении и при TakeProfit если есть прибыльная позиция, то она также закрывается.

Сравните 1.108 (верхние графики) с предыдущей версией 1.107:

New Martin GBPUSD 107 vs 108 

и

New Martin EURUSD 107 vs 108.png 

У версии 1.108 общая прибыль меньше, но также и просадки в сложные периоды меньше раза в два, по сравнению с версией 1.107. 

Причина обращения: