Asesores Expertos: New Martin

 

New Martin:

New Martin - asesor que abre dos posiciones opuestas al iniciarse. Procesamiento de OnTradeTransaction. Al activarse el Take Profit se abre una posición (UNA) en la misma dirección. El cruce de dos indicadores МА será la señal de apertura de la posición con un lote aumentado.

New Martin crossing

Autor: Vladimir Karputov

 

Versión 1.105: Introducidas funciones separadas OpenBuy y OpenSell

//+------------------------------------------------------------------+
//| Apertura de la posición BUY por símbolo|
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Abrir una posición de VENTA por símbolo|
//+------------------------------------------------------------------+
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);
  }

Ahora el código es más legible.

 

Como siempre el problema es ¿qué hacer con las posiciones no rentables que quedan colgadas? He aquí un ejemplo de la versión 1.105:

1.105

y la versión 1.105 con un pequeño cambio: en OnTradeTransaction (cuando se detecta el cierre de una posición TakeProfit) buscamos la posición más no rentable y cerramos esta posición más no rentable:

1.105 con un pequeño cambio: En OnTradeTransaction

Permítame recordarle que las pruebas individuales se realizan exclusivamente en el modo"Cada Tick Basado en Tick Real".

Ambas variantes comenzaron en 10000. Qué variante elegir - creo que depende de sus objetivos específicos.

 
existe la opción de cerrar todas las posiciones cuando al menos una de ellas recibe un disparo
 
trader781:
hay una opción para cerrar todas las posiciones cuando al menos una de ellas recibe un tp

En este caso puede ser así

la primera salida - dos posiciones multidireccionales, una de ellas recibe TakeProfit y cerramos todas (es decir, cerramos la posición restante - la no rentable). Como resultado, tomamos ganancias en TakeProfit y al mismo tiempo una pérdida en la segunda posición.

Eso no suena muy bien.

 
Vladimir Karputov:

En este caso puede ser así

primero empezamos - dos posiciones multidireccionales, una obtiene TakeProfit y cerramos todas (es decir, cerramos la restante - la no rentable). Como resultado, tomamos ganancias en TakeProfit y al mismo tiempo una pérdida en la segunda posición.

Eso no es muy bueno.

Tengo uno de estos, pero no martin debe ser de 2 mínimo + entrada con éxito.

El problema principal es encontrar una entrada donde la suma de las entradas exitosas debe más de la mitad de la suma de las no exitosas.

8 rodillas de 0,01 es suficiente si no es una cruz.

teoría

1) se abren 2 órdenes de 0.01 cada una en diferentes direcciones sobre la señal

2) si el precio pasa la distancia requerida al beneficio, entonces una recarga con una toma, el número de recargas, el paso de la rodilla y la toma - se puede jugar con esto durante mucho tiempo.

 

He decidido dejar la segunda opción (... con un pequeño cambio: en OnTradeTransaction (cuando se detecta el cierre de una posición por TakeProfit) buscamos la posición más no rentable y cerramos esta posición más no rentable ...):

Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading

Asesores Expertos: Nuevo Martin

Vladimir Karputov, 2017.01.22 19:00

Como siempre el problema - ¿qué hacer con las posiciones no rentables que cuelgan? Aquí hay un ejemplo de la versión 1.105:

1.105

y la versión 1.105 con un pequeño cambio: en OnTradeTransaction (cuando se detecta el cierre de la posición TakeProfit) buscamos la posición más no rentable y cerramos esta posición más no rentable:

1.105 con un pequeño cambio: En OnTradeTransaction

Permítame recordarle que las pruebas individuales se realizan exclusivamente en el modo"Cada Tick Basado en Tick Real".

Ambas variantes comenzaron en 10000. Qué variante elegir - creo que depende de sus objetivos específicos.


ahora versión 1.106

 
El código de asesor de New Martin se lanza como una señal de demostración gratuita de New Martin.
 

Versión 1.007 - protección contra el reinicio del terminal:

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

   if(m_first)
     {
      //--- protección contra el reinicio del terminal:
      int total=0;
      for(int i=PositionsTotal()-1;i>=0;i--) // devuelve el número de posiciones abiertas
         if(m_position.SelectByIndex(i))     // selecciona la posición por índice para acceder posteriormente a sus propiedades
            if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
               total++;
      //--- si ya hay posiciones abiertas por este Asesor Experto en la cuenta de trading -
      //--- así que inicializamos las variables de tal manera que parece que ya ha sido la primera vez.
      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;
     }
//---


Ahora si el terminal ha sido reiniciado o el EA ha sido recompilado y el EA ya ha abierto posiciones en la cuenta de trading dada, no habrá una situación de "primera ejecución".

 

Versión 1.108 Ahora en el cruce y en el TakeProfit si hay una posición rentable, también se cierra.

Compare 1.108 (gráficos superiores) con la versión anterior 1.107:

Nuevo Martin GBPUSD 107 vs 108

и

Nuevo Martin EURUSD 107 vs 108.png

La versión 1.108 tiene un beneficio total menor, pero también los drawdowns en periodos difíciles son el doble de pequeños comparados con la versión 1.107.

 
Maestro, ¿puedes hacerlo funcionar para MQ4?