![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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)
Sim
Não, o ponto de ancoragem é fixado em ANCHOR_LEFT_UPPER
Sim, você está correto - EventSetMillisecondTimer(250)
#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.
{
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.
Você está sobrescrevendo o valor da trueprofit em cada iteração do laço, em vez de adicionar ao valor.
Lembre-se disto:
foi mudado para isto:
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:
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
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.
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.
// in your orderselect loop put
if(OrderProfit()>0)
{
totalprofit=totalprofit+OrderProfit();
}
#Contagem de Pedidos de Lucro - Fechado
{
totalprofit=totalprofit+OrderProfit();
}
Eu resolvo meu problema depois do seu grande código de exemplo.
Grande homem, muito obrigado!
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.
{
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.