asesor experto - preguntas varias - página 16

 

¡Mercado cerrado!

#1 - Nunca llamo al Objeto Botón por OnTick(), Start(), ¿es normal?
#2
- ¿Puedo aplicar al objeto botón 'ANCHOR_RIGHT_UPPER'?
#3- Entonces, todavía necesito ayuda para mi esta preocupación #145, por favor.

¡Gracias!

 

#1 - I never call Button Object by OnTick(), Start(), so is it normal?

#2- ¿Puedo aplicar al objeto botón 'ANCHOR_RIGHT_UPPER'?

No, el punto de anclaje está fijado en ANCHOR_LEFT_UPPER

#3 - Así que, todavía necesito ayuda para mi esta preocupación #145, por favor.

Sí, tienes razón - EventSetMillisecondTimer(250)

 
honest_knave:


No, el punto de anclaje está fijado en ANCHOR_LEFT_UPPER
Sí, tiene razón - EventSetMillisecondTimer(250)

Te lo agradezco mucho. Muchas gracias hombre.
 

#Cuento de Órdenes de Beneficio - Abierto

Sólo trato de obtener todas las posiciones rentables para calcular todo en un valor.
Me da valores por separado.

Realmente perdí la cabeza. He intentado algunas maneras, y la investigación mucho sobre él, pero no hay buenos resultados.
Por favor, ayúdenme, si es posible explicar un poco más sobre el cálculo de beneficios, se lo agradezco mucho.

Espero obtener una buena respuesta pronto.

void profitcalcfnc()
{
    double trueprofit = 0;
    for ( int i = OrdersTotal() - 1; i >= 0; i-- )
    {
        if  ( ! OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) ) continue;
        if  ( closeothers == false && OrderSymbol() != Symbol() ) continue;
        trueprofit = OrderProfit() + OrderSwap() + OrderCommission();
        if  ( trueprofit >= 0 )
        {
            Print( "Profit: ", trueprofit );
            ObjectSetString  ( 0, "all profit counting object", OBJPROP_TEXT, DoubleToString( trueprofit, 2 ) );
        }
    }
    //---
    return;
}

Gracias de antemano.

 
trueprofit = OrderProfit() + OrderSwap() + OrderCommission();

Estás sobrescribiendo el valor de trueprofit en cada iteración del bucle, en lugar de añadirlo al valor.

Recuerde esto:

profit = OrderProfit();

se cambió por esto:

profit_buy += OrderProfit();
Tienes que tener claro lo que quieres que ocurra en cada iteración del bucle (cada orden) y lo que quieres que ocurra después del bucle (después de haber comprobado todas las órdenes).
 
honest_knave:
Tienes que tener claro lo que quieres que ocurra en cada iteración del bucle (cada orden) y lo que quieres que ocurra después del bucle (después de comprobar todas las órdenes).

Gracias por tu rápida respuesta.
Tal vez estoy muy cansado, lo siento. ( Sólo que no puedo entender lo quepodría hacer. )

Necesito describir un poco más mi preocupación ( cuanto puedo ).
Entonces, tengo 2 funciones:

  1. Yo uso el primero de ellos para la función de botón - que cuando hago clic en él todas las posiciones rentables se cerrará. Hasta ahora funciona bien. ( No puedo probarlo lo suficiente - mi broker tiene desactivadas las operaciones )
  2. Utilizo el segundo de ellos para la función de la etiqueta - que podría mostrarme todos los valores rentables en un solo objeto de la etiqueta. ( Pero no puedo hacerlo )

Por último, me gustaría que este ( mi último comentario de código ) función de cálculo de beneficios podría calcular ambos tipos de órdenes " OP_SELL y OP_BUY " sólo rentable.

Gracias de antemano.

 

¿Cómo está tratando de mostrar todos los valores rentables en una etiqueta?

¿Te refieres a todos los AcountProfit() sumados o a cada OrderProfit() por separado?

Si usted necesita algo como esto:


Por favor, consulte este artículo:

https://www.mql5.com/en/articles/2723

Graphical Interfaces X: Updates for Easy And Fast Library (Build 3)
Graphical Interfaces X: Updates for Easy And Fast Library (Build 3)
  • 2016.10.17
  • Anatoli Kazharski
  • www.mql5.com
The next version of the Easy And Fast library (version 3) is presented in this article. Fixed certain flaws and added new features. More details further in the article.
 

Gracias por su comentario.
Lo siento por la confusión.

No, creo que necesito algo diferente a esto.
Voy a tratar de aclarar mi problema.

Tengo 3 posiciones para EURUSD. Dos de ellos posiciones rentables, uno de ellos posición de la pérdida. Así que sólo necesito para calcular dos de ellos que es que son rentables.
Por ejemplo: si cada una de ellas +1.00 ( 2 posiciones rentables = +2.00 ) sólo necesito obtener el valor de todas las posiciones rentables.

Print( "Profit: ", 2.00 ); // absolutely no separately - I just need - could adds profitable values 1.00 + 1.00 = 2.00

Acabo de hacer rápidamente la pestaña de abajo para ayudarme en lo que estoy tratando de decir. ( en la parte inferior de este comentario archivo de imagen )
( El inglés no es mi lengua materna - a veces tengo problemas con él )

Todo lo mejor.

Archivo de imagen de la pestaña del panel de comercio

 
double totalprofit=0;

// in your orderselect loop put
if(OrderProfit()>0)
{
  totalprofit=totalprofit+OrderProfit();
}
 

#Cuento de Órdenes de Beneficio - Cerrado

Marco vd Heijden:
if(OrderProfit()>0)
{
  totalprofit=totalprofit+OrderProfit();
}

Resuelvo mi problema después de su gran código de ejemplo.
¡Gran hombre, muchas gracias!



honest_knave:

Estás sobrescribiendo el valor de trueprofit en cada iteración del bucle, en lugar de añadirlo al valor.
Recuerda esto:
Tienes que tener claro lo que quieres que pase en cada iteración del bucle (cada orden) y lo que quieres que pase después del bucle (después de haber comprobado todas las órdenes).

Justo después de terminar el código script de abajo.
Una vez más compruebo tu comentario, entonces sé que me lo explicas. Pero mi inglés impide entenderlo.

Todo lo mejor para cada uno de ustedes.

void calc()
{
    double trueprofit  = 0;
    double totalprofit = 0;

    for ( int i = OrdersTotal() - 1; i >= 0; i-- )
    {
        if  ( ! OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) ) continue;
        if  ( closeothers != true && OrderSymbol() != Symbol() ) continue;

        trueprofit = OrderProfit() + OrderSwap() + OrderCommission();
        if  ( trueprofit >= 0 )
        {
            totalprofit += OrderProfit() + OrderSwap() + OrderCommission();
            Print( "Profit: ", DoubleToString( totalprofit, 2 ) );
            ObjectSetString  ( 0, _Checkthisout_name_Label, OBJPROP_TEXT, "Total Profit: " + DoubleToString( totalprofit, 2 ) );
        }
    }
    //---
    return;
}

Espero que este código funcione bien. Si algo está mal en el código anterior, por favor hágamelo saber.
Gracias por todo.