[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 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()?

 
Ich verstehe, was Sie meinen. Zähle ich falsch? Ich erkläre es Ihnen: Ich habe nur für ein Paar Geschäfte eröffnet, führe das Skript für dieses Paar aus und erhalte ein anderes Ergebnis als das, das von der Funktion Account Profit zurückgegeben wird. Die von Ihnen vorgeschlagene Lösung passt mir nicht, denn anstelle von asc und bid werde ich die neuen Daten eingeben, ist das klar?
 
fore-x:
Verstehe, was Sie meinen. Zähle ich falsch?

Nein, ich meinte

Вопрос, как мне мой код подогнать под работу функции - AccountProfit()?

Es scheint dort gut erklärt zu sein.

Und versuchen Sie, den Ausdruck (OrderOpenPrice() - Ask)/Point auf eine ganze Zahl zu normalisieren.

 
Roger:

Nein, ich meinte

Es scheint dort gut erklärt zu sein.

Und versuchen Sie, den Ausdruck (OrderOpenPrice() - Ask)/Point auf eine ganze Zahl zu normalisieren

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)
           );
    }
  }

Не получается, но хоть со спредом вопрос отпал!
 
Was klappt nicht? Wo liegt die Diskrepanz?
 
Roger:
Was klappt nicht? Wo liegt die Diskrepanz?


Oder ist nur mein Alarm eingefroren und Ihrer nicht?
 
fore-x:


Und du, hat es sich ausgezahlt?
Wollen Sie damit sagen, dass ich auch einen schnellen Berater erstellen und ihn überprüfen sollte? Nun, feuern Sie mich, ich würde es lieber virtuell tun.
 
Roger:
Was funktioniert nicht? Wo liegt die Diskrepanz?

Ich habe Angebot und Nachfrage vertauscht, und jetzt sieht es so aus:


So ist es besser :)))

 
Welche Währung?
Grund der Beschwerde: