Cálculo do lucro de pedidos fechados "HELP - página 3 123456789 Novo comentário Renat Akhtyamov 2016.12.11 16:19 #21 Vitaly Muzichenko: Não se encaixa, não há informações durante 10 anos.Também não é a mesma coisa para você.A variável t mudará e você estará aghtung.Tem que ser memorizado antes de você começar a fechar a sériecolor ProfitColor;datetime t;// START // //t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров if(LastProfitCL(-1)<0) ProfitColor=Red; if(LastProfitCL(-1)>0) ProfitColor=LimeGreen; if(LastProfitCL(-1)==0)ProfitColor=DarkGray; ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0); ObjectSet("Last Profit", OBJPROP_CORNER, 1); ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5); ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15); ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(LastProfitCL(-1),2)),10,"Arial",ProfitColor);// END START ////+----------------------------------------------------------------------------+//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |//+----------------------------------------------------------------------------+double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция) double LastProfit=0; for(i=OrdersHistoryTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) { if (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue; if (op<0 || OrderType()==op) { if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); } } return(LastProfit); } Profit calculation of closed Quaisquer perguntas de recém-chegados Como codificar? Vitaly Muzichenko 2016.12.11 16:24 #22 Renat Akhtyamov: Também não é a mesma coisa para você.A variável t mudará e você ficará horrorizado.Ela tem que ser memorizada antes do fechamento da série.Você já tentou? É memorizado antes do fechamento, no momento o sinal para fechar. Alekseu Fedotov 2016.12.11 16:25 #23 Vitaly Muzichenko: Não é adequado, não há informações durante 10 anos.Lucro atual, , toda a história.A propósito, ele pode ser ajustado para qualquer data e hora. [Excluído] 2016.12.11 16:26 #24 Vitaly Muzichenko: TenteComment( 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);}O lucro se lembra de cada novo, mas depois algo conta desconhecido. Na captura de tela nº 3 deve ser 4, e não 190 Renat Akhtyamov 2016.12.11 16:28 #25 Vitaly Muzichenko: Você já tentou? Lembra-se antes de fechar, no momento em que o sinal de fechamento é recebido Basta ler o código. [Excluído] 2016.12.11 16:37 #26 Isso também, 190if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); Vitaly Muzichenko 2016.12.11 16:39 #27 Natashe4ka: O lucro se lembra de cada novo, mas depois algo conta desconhecido. Na tela nº 3 deve ser 4, não 190Aqui está o código, ele funciona bem para mim, mas talvez porque a série esteja fechada corretamente Arquivos anexados: info.mq4 9 kb Renat Akhtyamov 2016.12.11 16:40 #28 Natashe4ka: Assim também 190if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();Onde está localizada a ordem de fechamento dos pedidos?Você escreveu a variável t ali dentro?t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров [Excluído] 2016.12.11 16:42 #29 Renat Akhtyamov: Onde está localizada a ordem de fechamento dos pedidos?Você já escreveu a variável t aí dentro? t=TimeCurrent();//local no bloco de sinal para fechamento de uma série de pedidosEstá tudo lá, é claro.if(t<=OrderCloseTime()) { t=OrderCloseTime();if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); Renat Akhtyamov 2016.12.11 16:48 #30 Natashe4ka: Está tudo aí, é claro.if(t<=OrderCloseTime()) { t=OrderCloseTime();if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();Não, esta linha é removida. Este já é um cálculo de lucro, não vai funcionar dessa forma. Onde o comando para fechar no código - lá, mas não em tal linhaLeia acima. 123456789 Novo comentário
Não se encaixa, não há informações durante 10 anos.
Também não é a mesma coisa para você.
A variável t mudará e você estará aghtung.
Tem que ser memorizado antes de você começar a fechar a série
color ProfitColor;
datetime t;
// START //
//t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров
if(LastProfitCL(-1)<0) ProfitColor=Red;
if(LastProfitCL(-1)>0) ProfitColor=LimeGreen;
if(LastProfitCL(-1)==0)ProfitColor=DarkGray;
ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15);
ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(LastProfitCL(-1),2)),10,"Arial",ProfitColor);
// END START //
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(i=OrdersHistoryTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue;
if (op<0 || OrderType()==op)
{
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
return(LastProfit);
}
Também não é a mesma coisa para você.
A variável t mudará e você ficará horrorizado.
Ela tem que ser memorizada antes do fechamento da série.
Você já tentou?
É memorizado antes do fechamento, no momento o sinal para fechar.
Não é adequado, não há informações durante 10 anos.
Lucro atual, , toda a história.
A propósito, ele pode ser ajustado para qualquer data e hora.
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();
}}}}
}
O lucro se lembra de cada novo, mas depois algo conta desconhecido. Na captura de tela nº 3 deve ser 4, e não 190
Você já tentou?
Lembra-se antes de fechar, no momento em que o sinal de fechamento é recebido
Isso também, 190
O lucro se lembra de cada novo, mas depois algo conta desconhecido. Na tela nº 3 deve ser 4, não 190
Aqui está o código, ele funciona bem para mim, mas talvez porque a série esteja fechada corretamente
Assim também 190
Onde está localizada a ordem de fechamento dos pedidos?
Você escreveu a variável t ali dentro?
Onde está localizada a ordem de fechamento dos pedidos?
Você já escreveu a variável t aí dentro?
t=TimeCurrent();//local no bloco de sinal para fechamento de uma série de pedidosEstá tudo lá, é claro.
t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
Está tudo aí, é claro.
t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
Não, esta linha é removida. Este já é um cálculo de lucro, não vai funcionar dessa forma.
Onde o comando para fechar no código - lá, mas não em tal linha
Leia acima.