Der Code in geschweiften Klammern bezieht sich nicht auf die if-else-Bedingung und wird immer ausgeführt, unabhängig von dem Wert in Value
Oh je, jetzt habe ich mir den ursprünglichen Code noch einmal angesehen, und ich habe mich geirrt. Der Schreibstil ist irgendwie schief - hat mich verwirrt.
trader781: Aber ich habe die Lose verpasst, danke.
Es ist in Ordnung, es zu übersehen, aber es ist nicht in Ordnung, das Fahrtenbuch nicht zu lesen, da steht alles drin, und es steht drin, welche Zeile falsch ist.
trader781: Ich hatte nicht vor, es zu lesen. Es heißt "auf dem Markt zu testen". Meine Produkte werden nie auf dem Markt sein.
Ich spreche von dem Magazin im Testgerät
Hinzugefügt: Montieren Sie den Code in seinen normalen Zustand, überarbeiten Sie ihn, führen Sie ihn dann im Tester aus und lesen Sie die Fehler im Protokoll. Sie geben mir hier Codefragmente.
Ja, Sie haben recht, aber der Code ist so geschrieben, dass mein Vorredner ihn falsch interpretiert hat.
Und zur Kontrolle?
//| TestLogics.mq4 |
//| Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int Value=0; // Количество имеющихся ордеров
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
if(Value>0) Alert("1. Количество ордеров=",Value);
else Alert("2. Это код после else");
{
Alert("3. Ордера отсутствуют");
}
}
//+------------------------------------------------------------------+
Und prüfen?
Oh je, jetzt habe ich mir den ursprünglichen Code noch einmal angesehen, und ich habe mich geirrt. Der Schreibstil ist irgendwie schief - hat mich verwirrt.
Erneut geprüft, das "Extra" entfernt.
DieDivision durch Null hat nichts gebracht.
Erneut geprüft, das "Extra" entfernt.
DieDivision durch Null hat nichts gebracht.
Erneut geprüft, das "Extra" entfernt.
Die Division durch Null ist nicht verschwunden
Denn es wird nicht geprüft, ob der Divisor ungleich 0 ist. Was nützt es, weiteren Code auszuführen, wenn es keine Aufträge und 0 Lots gibt?
Setzen Sie einen Scheck darauf
{
double avg_price=0;
price=0;
bool z=true;
double orderlots=0;
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()==FindLastOType()))
{
price+=OrderOpenPrice()*OrderLots();
orderlots+=OrderLots();
}
}
if(orderlots==0) { return; } // если ничего нет - выходим
avg_price=NormalizeDouble(price / orderlots,Digits);
if(FindLastOType()==OP_BUY) tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);
if(FindLastOType()==OP_SELL) tp=NormalizeDouble(avg_price-TakeProfit*Point(),Digits);
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) &&(OrderType()==FindLastOType()))
z=OrderModify(OrderTicket(),OrderOpenPrice(),0,tp,0);
if (!z)
Print("Ошибка функции модифицирования");
}
}
Setzen Sie einen Scheck darauf
Aber ich habe die Lose verpasst, danke.
Es ist in Ordnung, es zu verpassen, aber es ist nicht in Ordnung,die Zeitschrift nichtzu lesen, denn dort steht alles drin.
Ich hatte nicht vor, es zu lesen. Es heißt 'auf dem Markt zu überprüfen'. Meine Produkte werden nie auf den Markt kommen.
über das Dividieren durch Null.
Was ist mit dem oben genannten?Von dort aus soll es weitergehen.
{
Preis+=OrderOpenPrice()*OrderLots();
orderlots+=OrderLots();
}
}
if(orderlots==0) {return; }// wenn es nichts gibt, exit
avg_price=NormalizeDouble(price / orderslots,Digits);
if(FindLastOType()==OP_BUY) tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);
if(FindLastOType()==OP_SELL) tp=NormalizeDouble(avg_price-TakeProfit*Point(),Digits);
Ich hatte nicht vor, es zu lesen. Es heißt "auf dem Markt zu testen". Meine Produkte werden nie auf dem Markt sein.
Ich spreche von dem Magazin im Testgerät
Hinzugefügt: Montieren Sie den Code in seinen normalen Zustand, überarbeiten Sie ihn, führen Sie ihn dann im Tester aus und lesen Sie die Fehler im Protokoll. Sie geben mir hier Codefragmente.