assessor especializado - perguntas diversas - página 16

 

Mercado fechado!

#1 - Eu nunca chamo de Button Object por OnTick(), Start(), então é normal?
#2
- Posso me candidatar a Button Object 'ANCHOR_RIGHT_UPPER'?
#3- Então, eu ainda preciso de ajuda para esta preocupação #145, por favor.

Obrigado!

 

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

Sim

#2- Posso aplicar ao objeto Button 'ANCHOR_RIGHT_UPPER'?

Não, o ponto de ancoragem é fixado em ANCHOR_LEFT_UPPER

#3 - Portanto, ainda preciso de ajuda para esta preocupação #145, por favor.

Sim, você está correto - EventSetMillisecondTimer(250)

 
honest_knave:

Sim
Não, o ponto de ancoragem é fixado em ANCHOR_LEFT_UPPER
Sim, você está correto - EventSetMillisecondTimer(250)

Muito apreciado. Muito obrigado, homem.
 

#Contagem de Ordens lucrativas - Abrir

Eu apenas tento obter todas as posições lucrativas para calcular tudo em um só valor.
Isso me dá valores separados.

Eu realmente perdi a cabeça. Tentei poucas maneiras, e pesquisei muito sobre isso, mas nenhum resultado bom.
Por favor, ajude-me, se for possível explicar um pouco mais sobre o cálculo do lucro, muito aprecie.

Espero ter uma boa resposta em breve.

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;
}

Obrigado de antemão.

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

Você está sobrescrevendo o valor da trueprofit em cada iteração do laço, em vez de adicionar ao valor.

Lembre-se disto:

profit = OrderProfit();

foi mudado para isto:

profit_buy += OrderProfit();
Você precisa ser claro entre o que você quer que aconteça em cada iteração do laço (cada ordem) e o que você quer que aconteça após o laço (após ter verificado todas as ordens).
 
honest_knave:
Você precisa ser claro entre o que você quer que aconteça em cada iteração do loop (cada ordem) e o que você quer que aconteça após o loop (depois de ter verificado todas as ordens).

Obrigado por sua resposta rápida.
Talvez eu esteja tão cansado, tão arrependido. ( Só não consigo entender o que eupoderia fazer ).

Preciso descrever um pouco mais minha preocupação ( o quanto eu posso ).
Portanto, eu tenho 2 funções:

  1. Eu uso primeiro deles para a função Button - qual deles quando clico nela todas as posições lucrativas fechará. Até agora, funciona bem. ( Não consigo testá-lo o suficiente - meu corretor está desativado )
  2. Eu uso o segundo deles para a função de Rótulo - que poderia me mostrar todos os valores lucrativos em apenas um objeto de Rótulo. ( Mas eu não posso fazer isso )

Finalmente, gostaria que esta ( meu último código de comentário) função de cálculo do lucro pudesse calcular ambos os tipos de pedidos " OP_SELL e OP_BUY " apenas lucrativos.

Obrigado de antemão.

 

como você está tentando mostrar todos os valores lucrativos em um só rótulo?

Você quer dizer todos os valores adicionados AcountProfit() ou para cada OrderProfit() separado.

Se você precisar de algo como isto:


Por favor, veja este artigo:

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.
 

Obrigado por seu comentário.
Desculpe a confusão.

Não, eu acho que preciso de um pouco diferente.
Vou tentar esclarecer meu problema.

Eu tenho 3 posições para o EURUSD. Duas delas posições lucrativas, uma delas de perda. Portanto, só preciso calcular duas delas, que são lucrativas.
Por exemplo: se cada uma delas for +1,00 ( 2 posições lucrativas = +2,00 ) só preciso obter o valor de todas as posições lucrativas.

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

Eu apenas fiz rapidamente a aba abaixo para me ajudar no que estou tentando dizer. ( no arquivo de imagem abaixo deste comentário )
( inglês não minha língua nativa - às vezes me debato com ela )

Tudo de bom.

Arquivo de imagem do Painel de Comércio

 
double totalprofit=0;

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

#Contagem de Pedidos de Lucro - Fechado

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

Eu resolvo meu problema depois do seu grande código de exemplo.
Grande homem, muito obrigado!



honesto_knave:

Você está sobrescrevendo o valor da trueprofit em cada iteração do laço, em vez de adicionar ao valor.
Lembre-se disto:
Você precisa ser claro entre o que você quer que aconteça em cada iteração do laço (cada ordem) e o que você quer que aconteça após o laço (após ter verificado todas as ordens).

Logo após terminar abaixo do roteiro de código.
Mais uma vez eu verifico seu comentário, então eu sei que você me explica. Mas meu inglês me impede de entendê-lo.

Tudo de bom para cada um de vocês, homens.

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 roteiro de código funcione bem. Se algo estiver errado no código acima, por favor, me avisem.
Obrigado por tudo.