Trailing Stops y Trailing Profit - página 3

 
deVries:


Gracias por las correcciones.

Si estamos usando count=count-1; entonces no hay necesidad de usar el bucle 'for' que estaba tratando de aclarar dos post atrás

Y alguna vez merece la pena intentarlo. ¡Como ahora que he corregido algunos errores por mi cuenta y me ha dado un gran placer!

Gracias una vez más. La parte de Take Profit está funcionando hasta ahora como se esperaba.

 
Arav007:


Gracias por las correcciones.

Si estamos usando count=count-1; entonces no hay necesidad de usar el bucle 'for' que estaba tratando de aclarar dos post atrás

Y alguna vez vale la pena intentarlo. ¡Como ahora que he corregido algunos errores por mi cuenta y me ha dado un gran placer!

Gracias una vez más. La parte de Take Profit está funcionando hasta ahora como se esperaba.


sigue probando y leyendo los códigos que veas y aprenderás mucho,

usted puede hacer un montón de aprendizaje

si tratas de entender y explorar las cosas

con las pruebas y la creación en su propia cuenta de prueba 'demo'

 
deVries:


sigue probando y leyendo los códigos que veas y aprenderás mucho,

puedes hacer tú mismo mucho aprendizaje

si tratas de entender y explorar las cosas

con las pruebas y creándolas en tu propia cuenta de pruebas 'demo'


Sí estoy tratando de entender lo que estoy recibiendo.

Ahora para la parte de 'Stop Loss Trailing' he pensado algo.

La condición para iniciar el bucle de 'Trailing Stop':

if(OrdersTotal()>0){

for(cnt=Total de Órdenes()-1;cnt>=0;cnt--)

{

Trailing Stops;

}

}

Ahora lo que estaba pensando es que este bucle se ejecutará tantas veces como el número de órdenes abiertas totales. Y mi objetivo es 'No Trail' Stops para la última/tercera orden.

Así que si detengo el bucle en la 'Segunda' orden, ¿cómo sería?

for(cnt=OrdersTotal()-1;cnt>0;cnt--)

 
Arav007:


Sí estoy tratando de entender lo que estoy recibiendo.

Ahora para la parte de 'Stop Loss Trailing' he pensado algo.

La condición para iniciar el bucle de 'Trailing Stop':

if(OrdersTotal()>0){

for(cnt=Total de Órdenes()-1;cnt>=0;cnt--)

{

Trailing Stops;

}

}

Ahora lo que estaba pensando es que este bucle se ejecutará tantas veces como el número de órdenes abiertas totales. Y mi objetivo es 'No Trail' Stops para la última/tercera orden.

Así que si detengo el bucle en la 'Segunda' orden, ¿cómo sería?

for(cnt=OrdersTotal()-1;cnt>0;cnt--)


encontrar el símbolo correcto y el número mágico correcto

entonces es una operación de tu EA ahora comprueba si Bid/Ask está a xx pips de la ordenenprice()

haz un poco de búsqueda aquí y encontrarás ejemplos que puedes usar

 
deVries:


encuentre el símbolo correcto y el número mágico correcto

entonces es una operación de tu EA ahora comprueba si Bid/Ask está a xx pips de distancia de orderopenprice()

haz un poco de búsqueda aquí y encontrarás ejemplos que puedes usar


Tengo la parte de comprobación y la condicional.

 if(OrdersTotal()>0){



        for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

        

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){

sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

                

                if(OrderType()==OP_BUY){

                

                        if(Ask> NormalizeDouble(OrderOpenPrice()+TrailingStart* vPoint,Digits)

                        && tStopLoss < NormalizeDouble(Bid-(TrailingStop+TrailingStep)*vPoint,Digits)){

 tStopLoss = NormalizeDouble(Bid-TrailingStop*vPoint,Digits); 

}

}

Pero aquí no estoy entendiendo cómo distinguir entre las operaciones. La función 'Trailing Stop' se llama al inicio del programa.

 

*Después de alcanzar un cierto límite de ganancias, digamos 10 pips, el Stop Loss se moverá a 5 pips. Ahora bien, si esa operación retrocede a 5 pips, entonces "Dos Tercios" de la operación serán cerrados.

*El tercio restante seguirá funcionando y no se aplicará el "Trailing Stop".

Tienes tres operaciones, ¿cómo quieres manejar las tres operaciones?

¿para que se haga como usted quería?

o cual tiene que ser modificada, después de ciertas ganancias...

 
deVries:

*Después de alcanzar un cierto límite de ganancias, digamos 10 pips, el Stop Loss se moverá a 5 pips. Ahora bien, si esa operación retrocede a 5 pips, entonces "Dos Tercios" de la operación serán cerrados.

*El tercio restante seguirá funcionando y no se aplicará el "Trailing Stop".

Tienes tres operaciones, ¿cómo quieres manejar las tres operaciones?

¿para que se haga como usted quería?

o cual tiene que ser modificada, después de cierta ganancia...


Para simplificar el asunto decidí ir con "tres" operaciones separadas del mismo lote, por lo que si dos de ellas se cierran, "dos tercios" de las operaciones totales (lotes) se cerrarán.

Y el comercio restante (un tercio) seguirá funcionando, es decir, que 'Trailing Stop' no se aplicará para él.

El Stop Loss se moverá a ciertos pips de ganancia para las dos primeras operaciones, pero para la tercera, no se moverá.

 
Arav007:


Para simplificar el asunto decidí ir con "tres" operaciones separadas del mismo lote, por lo que si dos de ellas se cierran, "dos tercios" de las operaciones totales (lotes) se cerrarán.

Y la operación restante (un tercio) seguirá funcionando, es decir, no se aplicará el "Trailing Stop".

El Stop Loss se moverá a unos determinados pips de beneficio para las dos primeras operaciones, pero para la tercera no se moverá.


Hay que utilizar algunas funciones para hacer la modificación correctamente

en este momento tienes que comprobar de alguna manera una forma de seleccionar una operación que tienes que modificar

revise las funciones aquí Trade Functions y vea si puede seleccionar la operación 1

 
deVries:


Tienes que usar algunas funciones para que la modificación se haga bien

en este momento tienes que comprobar de alguna manera una forma de seleccionar un comercio que tienes que modificar

compruebe las funciones aquí Trade Functions y vea si puede seleccionar el comercio 1


¿Se puede comparar el número de índice con el número de ticket?

   if (count==3) 

    {

  SellOrder_1=OrderSend(Symbol() , iOrderType_Sell , LotSize,OpenPrice,Slippage ,dStopLossPrice ,dTakeProfitPrice_1 , "Sell Order",MagicNumber , 0,Red);

                

    if (SellOrder_1>0) //Checking if the order was opened or not

      { 

      sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Sell order 1 sent successfully. Ticket=" + SellOrder_1;

      Sell_Order_Ticket_1=SellOrder_1;

      count = count - 1; 

      }

     else {

          iLastError = GetLastError();                               

          sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Error sending sell order 1. Error code=" + ErrorDescription(iLastError);



} 

} 

//Trailing Stop Function 

if(OrdersTotal()>0){

//

        for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

        

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){

                sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

                

                if(OrderType()==OP_BUY){

if (cnt==Sell_Order_Ticket_1){

Proceed to Next 

} 

Por favor, refiérase a las partes de Color Blocked arriba.

Gracias

 
Arav007:


¿Se puede comparar el número de índice con el número de ticket?

Por favor, consulte las partes de Color Blocked arriba.

Gracias


for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

el total de sus pedidos es de 3 operaciones

haga esto

//for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

for(cnt= 3 -1;cnt>=0;cnt--)
   {
   Print ("cnt =  ",cnt);
   }

¿que lees si abres el Terminal y miras los Expertos?

¿tendrá Sell_Order_Ticket_1 el mismo valor que cnt?

si es así puedes probarme que es...

Si no, ¿por qué no?

Razón de la queja: