Comprobar: ¿qué he hecho mal? - página 2

 
Natalya Smirnova #:

Como estoy escribiendo para opciones binarias he hecho las cosas un poco diferentes:


¿Esto sería probablemente correcto?

Este es el problema
Hay 2 líneas en el terminal para 1 orden


Y para la orden que fue colocada por el Asesor Experto, Profit == 0

 
Natalya Smirnova #:

Creo que este es el problema
Hay 2 líneas en el terminal para 1 orden


Y en la orden que ha sido colocada por el Asesor Experto, Profit == 0

¿dónde has encontrado un precio por debajo de cero - muéstrame una captura de pantalla?

No se ve en esta captura de pantalla

 
Alexey Viktorov #:

Ya te han aconsejado sobre todo el algoritmo, no quiero interferir y ni siquiera he mirado tu código y los mismos consejos... Pero esto

me llamó la atención. Así que mi pregunta es: ¿No es más fácil y más legible utilizar el operador de conmutación

Creo que es más fácil de leer y entender. Quizá también funcione un poco más rápido.
¿Tal vez en lugar de la función utilizar sólo la matriz de volumen[n]?
Aunque, si se paga por cada línea de código, mejor dejarlo así :))
 
Nikolai Semko #:
¿Quizás en lugar de una función se utilice un array volumen[n]?
Aunque si se paga por cada línea de código, es mejor mantenerlo así :))

Tal vez sea así... Estoy de acuerdo.

 
Renat Akhtyamov #:

¿Dónde has encontrado un precio inferior a cero, muéstrame una captura de pantalla?

No hay nada de eso en esta captura de pantalla.


Estoy tratando de obtener OrderProfit() - da 0

aquí es una confirmación encontrado beneficio -0,01 como sale de esa línea adicional

 
Alexey Viktorov #:

Tal vez sea así... Estoy de acuerdo.

No me pagan, es para mí y para mi desarrollo personal. Después del trabajo, es interesante hacer una búsqueda del grial
 

No entiendo el precio negativo, todavía no está ahí.

contar el beneficio total así (extracto)

Lo que necesita está resaltado

   for(i=0;i<OrdersHistoryTotal();i++)

   {

      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))

      {

         if(OrderType()==ORDER_TYPE_BALANCE && OrderCloseTime()>startDate)Withdrawal=Withdrawal+OrderProfit()+OrderCommission()+OrderSwap();

         if((OrderType()==ORDER_TYPE_BUY || OrderType()==ORDER_TYPE_SELL))

         {

            if(OrderCloseTime()>iTime(Symbol(),PERIOD_D1,0))hystCurrDay=hystCurrDay+OrderProfit()+OrderCommission()+OrderSwap();

            if(OrderCloseTime()<iTime(Symbol(),PERIOD_D1,0) && OrderCloseTime()>iTime(Symbol(),PERIOD_D1,1))hystPrevDay=hystPrevDay+OrderProfit()+OrderCommission()+OrderSwap();

         }

      }

   }



 
Natalya Smirnova #:
No me pagan, es para mí y para mi desarrollo personal. Después del trabajo, es interesante hacer una búsqueda del grial

No me hagas caso. Sólo yo y Nikolay estamos teniendo una pequeña reunión...

La esencia de su problema: dado que OrderProfit() en el corretaje de divisas no da ningún valor real, tiene que definir una orden cerrada positiva/negativamente como la diferencia entre el precio de cierre y el precio de apertura de la orden. Ya se le ha hablado de esto

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

¿Comprobar qué he hecho mal?

Renat Akhtyamov, 2021.12.21 09:27

no entienden la lógica que hay detrás

¿Cómo es posible?

bool profit = false;
         if(OrderClosePrice() > 0)
            profit = true;

         bool loss = false;
         if(OrderClosePrice() < 0)
            loss = true;

¿cómo el precio de cierre de la orden puede ser inferior a cero?

la orden de COMPRA estará en la posición positiva si el precio de cierre es mayor que el de apertura

aquí está la condición de una compra plus (excluyendo las comisiones y el canje):

OrderClosePrice() > OrderOpenPrice()
Si es al revés, eso es un punto negativo

 
Natalya Smirnova #:
No me pagan tanto por mí y por mi autodesarrollo. Después del trabajo, es divertido ir a la búsqueda del grial.

Sí, Natalia - eso era sólo un meme de la serie "Cuando te pagan por una línea de código".

Ese es el tipo de humor que tienen los programadores.


En tu caso no necesitas una función.

double SelectVolume(int n)

Sólo tienes que formar las variables Volumen1 ... Las variables Volumen10 deben formarse inicialmente como un array volumen[10]
y luego referirse a sus elementos volumen[n] por el índice n.
No te preocupes - casi todos los programadores han pasado por esto.
Lo principal es que te guste mucho la programación. Puedo sentirlo.
Entonces llegarás lejos.

 
Estoy de acuerdo. ¡¡¡La programación realmente apesta y es muy a largo plazo!!!
No todo el mundo acaba con un granizo....
Razón de la queja: