[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 332

 
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?
 
fore-x:
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.

 
Roger:

No, intendevo

Sembra essere ben spiegato lì.

E provate a normalizzare l'espressione (OrderOpenPrice() - Ask)/Point in un intero

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)
      Alert(
            OrderTicket(),"   ",
            NormalizeDouble(OrderCommission()+OrderSwap(),2),"   ",
            NormalizeDouble(NormalizeDouble((Bid - OrderOpenPrice())/Point,0)*tickvalue*NormalizeDouble(OrderLots(),2),2)
           );
           
    if(OrderType() == 1)
      Alert(
            OrderTicket(),"   ",
            NormalizeDouble(OrderCommission()+OrderSwap(),2),"   ",
            NormalizeDouble(NormalizeDouble((OrderOpenPrice() - Ask)/Point,0)*tickvalue*NormalizeDouble(OrderLots(),2),2)
           );
    }
  }

Не получается, но хоть со спредом вопрос отпал!
 
Cosa non funziona? Dov'è la discrepanza?
 
Roger:
Cosa non funziona? Dov'è la discrepanza?


O è il mio allarme che è congelato e il tuo che non lo è?
 
fore-x:


E lei, ha fatto i conti?
Stai suggerendo che dovrei anche montare un consulente veloce e iniziare a controllare? Beh, licenziami, preferisco farlo virtualmente.
 
Roger:
Cosa non funziona? Dov'è la discrepanza?

Ho scambiato la domanda e l'offerta, e ora è così:


Così va meglio :)))

 
Quale valuta?