[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 478

 
abolk:

el enlace https://www.mql5.com/ru/code tiene un almacén lleno de similares

has dado un enlace a toda una sección enorme )))

Eso es gracioso.

 

¡Buenas tardes!

Pido ayuda, ya me he suicidado, ¡¡¡no puedo resolverlo!!! Necesito, que en el logro +20 p., SL de la orden se reordenó en el precio de apertura, es decir, la función da a cabo 77

 for(i=(OrdersTotal()-1); i>=0; i--) // перебор ордеров 
         { 
       if (!OrderSelect(i, SELECT_BY_POS))
      {
         continue;
      }

      if (OrderSymbol()!=Instr||OrderMagicNumber()!=MN)
          continue;
      if(OrderStopLoss()==OrderOpenPrice())
            break;    
       if (   OrderProfit()>=(MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub)        ) 
   return(77);
                  
           }
   

No consigo que funcione.

 
demlin:

Necesito que el SL de la orden se reajuste al precio de apertura cuando alcance +20 pips, es decir, la función muestra 77

20 p no se calcula así, hay que utilizar la función OrderOpenPrice() y compararla con el precio actual, es decir, cuando la orden alcanza un beneficio positivo o nulo, probablemente quiera que el resultado sea 77, es decir

for(i=(OrdersTotal()-1); i>=0; i--) // перебор ордеров 
         { 
            if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;
            if (OrderSymbol()!=Instr||OrderMagicNumber()!=MN)  continue;
            if(OrderStopLoss()==OrderOpenPrice()) break;    
            if ( OrderProfit()>=0)) return(77);
           }
la función OrderProfit() devuelve el beneficio de la orden en la moneda del depósito, no en pips
 
Me podéis decir si es posible que un EA obtenga los datos del indicador (de los que permiten hacerlo) de otro indicador. No he encontrado una oportunidad así en los tipos de precios.
 
IgorM:

20p no se calcula de esta manera, tienes que usar la función OrderOpenPrice() y compararla con el precio actual, aparentemente quieres que el resultado 77 sea devuelto cuando la orden alcance un beneficio positivo o cero, entonces se ve así:

la función OrderProfit() devuelve el beneficio de la orden en la moneda del depósito, no en pips

Eso es más o menos lo que pensaba, no calculo 20 pips, se fijan en la variable Bezub. Intento comparar el beneficio actual de la orden en la moneda de depósito (OrderProfit()) y los 20 puntos requeridos en la moneda de depósito ((MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub)
 
demlin:
Eso es más o menos lo que pensaba, no estoy calculando 20 p. Se fijan en la variable Bezub. Estoy tratando de comparar el beneficio actual de la orden en la moneda de depósito (OrderProfit()) y el nivel requerido de 20 p en la moneda de depósito ((MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub)

entonces se olvidó de tener en cuenta el precio actual y cuántos pips se ha movido el precio desde que se colocó la orden:

(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub

ZZZEROXXX:
Por favor, aconsejen si puedo obtener los datos del indicador (los que lo permiten) de otro indicador. No encontré tal oportunidad en los tipos de precios.

iCustom()

https://book.mql4.com/ru/samples/shared
 
IgorM:

entonces se olvidó de tener en cuenta el precio actual y cuántos pips se ha movido el precio desde que se colocó la orden:

(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub


Probé su esquema. La alerta da un valor de (OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub de -0,033. ¡Aunque hay 21 peniques en el beneficio! ¿Es esto normal?
 
demlin:
Probado su esquema. Se genera una alerta para (OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub valores -0.033. ¡Aunque hay 21 peniques de beneficio! ¿Es esto normal?

Lo siento, estoy escribiendo sin comprobarlo, me he equivocado aquí, debería funcionar así:

Venta:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lote/Punto

Compra: (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lote/punto

 
IgorM:

Lo siento, estoy escribiendo sin comprobarlo, me he equivocado aquí, debería funcionar así:

Venta:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lote/Punto

Compra: (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lote/punto

Eso tampoco son cifras bonitas todavía. No creo que se trate de la fórmula. La expresión (MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub) da básicamente 20 para el euro. El punto está en algún lugar del bucle for
 
IgorM:

Lo siento, estoy escribiendo sin comprobarlo, me he equivocado aquí, debería funcionar así:

Venta:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lote/Punto

Compra: (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lote/punto

Eso tampoco son cifras bonitas todavía. No creo que se trate de la fórmula. La expresión (MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub) da básicamente 20 para el EURUSD. Está en algún lugar del bucle for