Asesores Expertos: DoubleMA Crossover EA

 

DoubleMA Crossover EA:

Trailing, órdenes pendientes. Señales de dos indicadores (Moving Average, MA). La negociación se realiza exclusivamente en un determinado período del día.

DoubleMA Crossover EA

Autor: Vladimir Karputov

 
Buenas tardes. ¿Podría decirme de qué es responsable el parámetro BreakOutLevel? ¿Y cómo está implementado el sistema traillin, que tiene tres niveles? No consigo entenderlo. Gracias de antemano.
 
GRS:
Buenas tardes. ¿Podría decirme de qué es responsable el parámetro BreakOutLevel? ¿Y cómo está implementado el sistema traillin, que tiene tres niveles? No consigo entenderlo. Gracias de antemano.

Ya sabes, todos los códigos son un misterio para mí también :)

Cuando tengas dudas, deberías empezar a estudiar el código.

 
Vladimir Karputov:

Sabes, todos los códigos son un misterio para mí también :)

Cuando tienes preguntas, tienes que empezar a estudiar el código.

:))) ¿Podría darme una pista, al menos en BreakOutLevel? Puedo lidiar con trailing mí mismo (eh, el freebie no funcionó).

 
BreakOutLevel- Empezar a operar después de alcanzar el breakout- las palabras parecen claras, pero el significado se escapa.
 
GRS:

:))) Por favor, al menos en BreakOutLevel. Puedo lidiar con trailing mí mismo (eh, el freebie no funcionó).

input ushort               BreakOutLevel     = 45;          // Empezar a operar después de alcanzar la ruptura

Literalmente: "Empezar a operar después de breakout" de tantos puntos.

 
Vladimir Karputov:

Literalmente: "Empezar a operar después de la ruptura" de tantos puntos.

Vladimir, traduje esta frase, ¿qué significa "después de la ruptura"?

 
GRS:

Vladimir, he traducido esta frase, ¿qué significa "después del avance"?

"Avance" implica que hay una línea (nivel) y alguien y algo ha traspasado (cruzado) esa línea (nivel).

 

He mirado el código.

"BreakOutLevel" es la sangría desde el precio actual hasta el precio de la orden pendiente.

Por ejemplo, colocamos "SellStop" al precio"ShortTradeRate", que es igual al precio actual menos la sangría ("BreakOutLevel" se multiplica por el valor de un punto del instrumento, por ejemplo, para EURUSD es algo así como 45*0.00001).

void OpenSellStopOrder()
  {
   double myStopLoss=0,myTakeProfit=0;
   double ShortTradeRate=m_symbol.Bid()-BreakOutLevel*m_adjusted_point;
   if(StopLoss>0)
      myStopLoss=ShortTradeRate+StopLoss*m_adjusted_point;
   if(TakeProfit>0)
      myTakeProfit=ShortTradeRate-TakeProfit*m_adjusted_point;
   if(m_trade.SellStop(lotMM,ShortTradeRate,NULL,
      m_symbol.NormalizePrice(myStopLoss),
      m_symbol.NormalizePrice(myTakeProfit)))
     {
 
Muchas gracias, ya está solucionado.
 
GRS:
Muchas gracias, ahora lo he solucionado.

No siempre es posible renombrar adecuadamente los nombres de las variables, por eso ocurren estos percances.