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
Não, eu não me refiro ao que você já escreveu.
Diga-me em palavras - cálculo do lucro para o qual você está interessado em pedidos fechados
- diariamente
- que gera perdas
- último pedido
ou algo mais?
Descreva a série
Uma série de últimos pedidos fechados "por enquanto".
Série de últimos pedidos fechados "por enquanto
Ou seja, você precisa de informações sobre a série de pedidos mais recentemente encerrados, se eu entendi corretamente?
Para implementar esta abordagem, você deve primeiro preencher o conjunto de tickets de pedidos em cada fechamento bem sucedido e depois retirar as informações sobre os pedidos fechados no formulário que você precisa
Você mesmo pode fazer isso?
Tente
return(LastProfit);Comment( LastProfitCL(-1, 0) );
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1, datetime t=0){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
if((op<0||OrderType()==op) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
if(t<=OrderCloseTime()) {
t=OrderCloseTime();
LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}}}}
}
Tente
Comment( LastProfitCL(-1, 0) );
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1, datetime t=0){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
if((op<0||OrderType()==op) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if(t<=OrderCloseTime()) {
t=OrderCloseTime();
LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
return(LastProfit);
}
E se não fechar ao mesmo tempo?
Não é bem assim.
E se você se lembrar ao apresentar o pedido de fechamento, então estará tudo bem.
mas esta linha...
não é necessário.
Ele puxará o total para toda a série
Mas a senhora quer informações mais detalhadas, como eu entendi do primeiro post
E se não fechar ao mesmo tempo?
Então você precisa de informações sobre a última série fechada de pedidos, se eu entendi corretamente?
Para implementar esta abordagem, você deve primeiro criar uma série de tickets de pedidos no fechamento bem sucedido e depois obter informações sobre os pedidos fechados.
Você mesmo pode fazer isso?
Por favor, aconselhe-nos a usar um exemplo.
Isto é
E depois comparar ?
É melhor me dar um exemplo.
Isto é
E depois comparar ?
Não há problema.
Agora a única coisa que falta esclarecer é como devem ser as informações sobre as ordens fechadas da série ?
É uma transferência ou a quantia deve ser dividida por + e - ?
Há um indicador para
i-Profit
Produzlucros atuais para hoje, semana, mês, ano.
Um exemplo melhor seria
Aqui está um exemplo:
GlobalVariableSet(GetGlobalVariableName("LastProfit"), TimeCurrent()); // запомним время закрытия
// здесь код закрытия всех и сразу, нужен цикл, чтоб не выходил с функции до полного закрытия всех
}
O resto da história
//| Возвращает суммарный профит в валюте депозита серии закрытых позиций |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1, datetime t=0){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
if((op<0||OrderType()==op) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
if(t<=OrderCloseTime()) {
t=OrderCloseTime();
LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}}}}
return(LastProfit);
}
//===============================================================================================
//----------------------- Создает и возвращает имя глобальной переменной -----------------------+
//===============================================================================================
string GetGlobalVariableName(string name="", string symb="0") {
if(symb=="0") { symb=Symbol();}
if(!MQLInfoInteger(MQL_TESTER)) {
return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+MQLInfoString(MQL_PROGRAM_NAME)+"_"+name);
} else {
return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+MQLInfoString(MQL_PROGRAM_NAME)+"_tester"+"_"+name);
}}
Conseguimos isso mesmo que reinicializemos o terminal
{
Comment( LastProfitCL(-1, (datetime)GlobalVariableGet(GetGlobalVariableName("LastProfit"))) );
}
Há um indicador para
i-Profit
Produzlucros atuais para hoje, semana, mês, ano.