void start()
{
double tickvalue = MarketInfo(Symbol(), MODE_TICKVALUE);
double profitbuy, profitsell;
for(int i = OrdersTotal()-1; i >= 0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS)) continue;
if(OrderSymbol()!=Symbol() || OrderType() >= 2) continue;
if(OrderType() == 0)
profitbuy +=((Bid - OrderOpenPrice())/Point*tickvalue*OrderLots())+OrderCommission()+OrderSwap();
if(OrderType() == 1)
profitsell+=((OrderOpenPrice() - Ask)/Point*tickvalue*OrderLots())+OrderCommission()+OrderSwap();
}
Comment(profitbuy+profitsell);
}
В чем прикол, не могу правильно рассчитать суммарный профит для всех ордеров по одной паре, в терминале пишет одно, а у меня получается другое?
Итак, мои домыслы, своп в терминале нужно нормализовать обязательно, там точность больше двух бывает - это проверил, но как нормализовать - для каждого ордера или суммарно? Непонятно в общем...
Я уже всяко перепробовал, минимальная разница доходила до 0.02 центов, но это все равно не то, что нужно.
Вопрос, как мне мой код подогнать под работу функции - AccountProfit()?
Ho capito cosa vuoi dire, sto contando male? Mi spiego: ho dei trade aperti solo su una coppia, eseguo questo script su questa coppia e il risultato è diverso da quello restituito dalla funzione account profit. La soluzione proposta da voi non mi soddisfa, perché invece di asc e bid metterò i nuovi dati, è chiaro?
Vedere https://www.mql5.com/ru/code/10653
Ah, capisco cosa vuoi dire, sto contando male?
No, intendevo
Вопрос, как мне мой код подогнать под работу функции - AccountProfit()?Sembra essere ben spiegato lì.
E prova a normalizzare l'espressione (OrderOpenPrice() - Ask)/Point in un intero.
No, intendevo
Sembra essere ben spiegato lì.
E provate a normalizzare l'espressione (OrderOpenPrice() - Ask)/Point in un intero
Cosa non funziona? Dov'è la discrepanza?
O è il mio allarme che è congelato e il tuo che non lo è?
E lei, ha fatto i conti?Cosa non funziona? Dov'è la discrepanza?
Ho scambiato la domanda e l'offerta, e ora è così:
Così va meglio :)))