Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 679

 
Artyom Trishkin:

Ich danke Ihnen.

 
Guten Tag, bitte helfen Sie mir bei einer Frage zu einer einfachen Schleife.
Der Kern der Schleife besteht darin, dass die Variable I um eins erhöht wird.
Der Wert wird gedruckt.
Die Schleife selbst:

for (int i=0; i<100000;i++)
{
Print("I =",i);
if(i>3000)
{
Print("I =",i);
Pause;
}

Das Problem ist, dass, wenn die Zahl in der Bedingung if(i>3000) ist etwa größer als 100 (in meinem Fall dreitausend),
dann gibt der Ausdruck unterschiedliche Werte aus. Ständig.
Ich will damit sagen, dass die Schleife wie folgt aussieht
for (int i=0; i<100000;i++)
{
Print("I =",i);
if(i>100)
{
Print("I =",i);
Pause;
}

Der Ausdruck im Prüfgerät zeigt den Wert I = 0, dann 1, dann 2, dann 3, dann 4,... und so weiter bis 100.
Aber wenn die Bedingung zum Beispiel if(i>3000) lautet, zeigt Print den Wert an, da... Ich weiß nicht einmal, wie ich es richtig ausdrücken soll...
aus einer einzigen Zahl, z. B. 2895, und fügt dann eine hinzu!

Hier ist ein Beispiel dafür, wie es aussehen könnte:

wenn i > 100

100


wenn i >3000

3000



Wo liegt das Problem? Ich kämpfe schon den ganzen Tag damit und kann es nicht herausfinden(((( Bitte helfen Sie mir!







 
eflaer:
Was ist das Problem? Ich kämpfe schon den ganzen Tag damit und kann es nicht herausfinden(((( Bitte helfen Sie mir!

öffnen Sie die Protokolldatei, es gibt einen vollständigen Bericht

 
Taras Slobodyanik:

Öffnen Sie die Protokolldatei, es gibt einen vollständigen Bericht

Danke, habe die Logdatei geöffnet, in der Tat beginnen alle Countdowns mit null................, warum steht nicht alles im Logbuch?

Wie bekomme ich es hin, dass alles im Protokoll auftaucht? Ich brauche den gesamten Zeitablauf, ich suche nach einem Fehler im Algorithmus.

 
Es ist einfach nicht bequem, jedes Mal eine 7+GB große txt-Protokolldatei zu öffnen.......
 
eflaer:

Danke, habe die Logdatei geöffnet, in der Tat beginnen alle Countdowns mit null................, warum steht nicht alles im Logbuch?

Wie bekomme ich es hin, dass alles im Protokoll angezeigt wird? Ich brauche die gesamte Zeitleiste, ich suche nach einem Fehler im Algorithmus.

Da die Protokollierung und die Arbeit mit grafischen Objekten viele Ressourcen (Zeit) beansprucht, ist MT dafür optimiert und kann einen Teil des Protokolls "schlucken", aber den Skriptkörper selbst schnell ausführen

Sleep(120) nach Print()einfügen.


eflaer:
Es ist nicht bequem, jedes Mal die 7+GB große Protokolldatei txt zu öffnen.......

Löschen Sie die Protokolldatei regelmäßig, sie wird nach Datum aufgezeichnet. Wenn Sie heute nur Experimente hineinschreiben, warum brauchen Sie dann eine so große Datei?

 
Ich danke Ihnen vielmals! Wirklich hilfreich! Ich werde weiter nach dem Fehler suchen...
 
Vitali Vakulin:
Hallo.Ich möchte einen Drawdown von 10 % festlegen, damit mein Expert Advisor im Falle eines Drawdowns keine neuen Orders eröffnet, sondern nur die offenen Orders auf TP aufholt und nur die Mittelwertbildung öffnet. Dies wird mir helfen, nicht in einen großen Drawdown zu geraten, wenn ich mit mehreren Paaren handle. Ich verstehe die Arbeit der Funktion und wünschte, ich könnte sie umsetzen.

Leute, bitte helft mir.

 

Guten Abend.

Erste Versuche , einen EA zu schreiben. Können Sie mir bitte sagen, warum mein Expert Advisor nur Kaufen öffnet? Wo liegt der Fehler?

extern double volume     = 0.05;   // Volume
extern int    stopLoss   = 1;      // StopLoss
extern int    takeProfit = 3;      // TakeProfit
extern int    slippage  = 10;          // Slippage
extern int    Period_bars  = 100;    // Period
extern int    magic      = 321;    // Magic
extern int    ATR_Period = 50;      // ATR Period

datetime newCandle;
double ABS_High=0;
double ABS_Low=1000000;

int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+

void OnDeinit(const int reason)
  {
//---
 

  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick()
  {

        double TD_Close=Close[1];

        double ATR=iATR(Symbol(),Period(),ATR_Period,0);

        double bsl=NormalizeDouble(Ask-(stopLoss*ATR),_Digits);

        double btp=NormalizeDouble(Ask+(takeProfit*ATR),_Digits); 

        double ssl=NormalizeDouble(Bid+(stopLoss*ATR),_Digits);

        double stp=NormalizeDouble(Bid-(takeProfit*ATR),_Digits); 

        for (int i=2; i<=Period_bars; i++)
        {
                if (Period_bars<=Bars-1)
                {
                        if (ABS_High<High[i]) ABS_High=High[i];
                        if (ABS_Low>Low[i]) ABS_Low=Low[i];
                }

                break;
        }

        if (TD_Close>ABS_High)
        {
                if (OrdersTotal () < 1 && newCandle != Time[0]) int tiket=OrderSend(Symbol(),OP_BUY,volume,Ask,slippage,bsl,btp,"Система пробоя открыла ордер BUY ",magic,0);

                else newCandle = Time[0];
        }
        else
        if (TD_Close<ABS_Low)
        {
                if (OrdersTotal () < 1 && newCandle != Time[0]) int tiket=OrderSend(Symbol(),OP_SELL,volume,Bid,slippage,ssl,stp,"Система пробоя открыла ордер SELL ",magic,0);
                else newCandle = Time[0];
        }
}

 
Andrey.Sabitov:

Guten Abend.

Erste Versuche , einen EA zu schreiben. Können Sie mir bitte sagen, warum mein Expert Advisor nur Kaufen öffnet? Wo liegt der Fehler?



Fügen Sie den Code sorgfältiger ein :-)

Ich kann nicht sehen, wo ABS_High geändert wird, es scheint konstant 0 zu sein und die TD_Close>ABS_High Bedingung ist immer korrekt

Grund der Beschwerde: