[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 46

 

Si conoce la función para calcular el saldo total de pérdidas de posiciones CERRADAS por SL y el saldo total de operaciones rentables ABIERTAS, por favor escriba.

El cálculo del saldo de las pérdidas debe partir del último valor máximo del depósito

 

¡¡¡Buenas tardes!!! Mi función es maldecir con cuarenta palabrotas - obviamente no sabía mucho, y también olvidé cómo inventarlas

void  SELL { double Price1_SELL= (Bid-Dist*Point) ; double TP1_SELL=Price1_SELL-TP*Point; double SL1_SELL=Price1_SELL+SL*Point;
   
   double  Price2_SELL= (Price1_SELL -Dist*Point) ;double   TP2_SELL=Price2_SELL-TP*Point;double   SL2_SELL=Price2_SELL+SL*Point;
   
   double  Price3_SELL=(Price2_SELL -Dist*Point) ; double  TP3_SELL=Price3_SELL-TP*Point; double  SL3_SELL=Price3_SELL+SL*Point;
   
   double  Price4_SELL= (Price3_SELL -Dist*Point) ; double  TP4_SELL=Price4_SELL-TP*Point; double  SL4_SELL=Price4_SELL+SL*Point;
   
   double  Price5_SELL= (Price4_SELL -Dist*Point) ;double   TP5_SELL=Price5_SELL-TP*Point; double  SL5_SELL=Price5_SELL+SL*Point;}
 
Dimka-novitsek:

¡¡¡Buenas tardes!!! Mi función es maldecir con cuarenta palabrotas - obviamente no sabía mucho, y también olvidé cómo inventarlas


¡Diman! ¡Buenas noches! Necesitas un descanso, no por una función, sino por una tontería que escribiste...

 
Así que dije que no me acordaba. Voy a terminarlo. Pedidos. ¿Qué pasa con el compilador?
 
Dimka-novitsek:
Te digo que no me acuerdo. Lo escribiré. Pedidos. ¿Qué es lo que no le gusta al compilador?

No es así como se escriben las f-i. Lee el libro de texto.

 
¡¡¡Gracias!!! La lectura.
 
А. ¡Las grapas no eran suficientes para ella!
 

Hola, mi Asesor Experto pone stops pendientes. Al comprobar en el probador sólo funciona SELL_STOP, en lugar de BUY_STOP aparece un error Order Send error/ Error opening Buy order:130.

extern int TrailingStop=30;
//-----------------------------------------------------------------------------------------------+
for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELLSTOP &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
              }
           }
         else // go to short position
           {
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
              }
           }
        }
     }

   
   return(0);

¡Ayúdame a encontrar la razón!

 

La razón es la falta de lógica.

for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELLSTOP &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
¿Cómo entenderlo? Si CELLSTOP, ¿qué tiene que ver el BAI?
 
Twilight:

¿Cómo puedo saber si las últimas órdenes 1-2-3 fueron perdedoras?

Y en general, ¿cómo puedo saber cuál fue el último pedido?


Recientemente he escrito una función que, en el caso de la última orden perdedora, devuelve el tipo de esta orden. En otras palabras, si fHistory() == 0, la última orden perdedora fue de Compra, fHistory() == 1, la última orden perdedora fue de Venta. Si queremos hacer un seguimiento de las órdenes rentables, entonces cambie el signo en la línea así: if(OrderProfit() > 0 ).

//+----------------------------------------------------------------------------+
// Прибыльно или убыточно закрылся последний ордер, и возврат типа такого ордера
int fHistory(){
  for(int i=OrdersHistoryTotal(); i >= 0; i--){              // Выборка в истории
     if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true){   // Если есть следующий в истории
        if(OrderMagicNumber()!=magN) continue;               // Ордера не нашего эксперта
        if(OrderProfit() < 0 ) return (OrderType());         // Если убыток по посл.ордеру вернем тип ордера
     }
  }
  return(-1);
}

La variable magN es el orden mágico declarado globalmente.