Nützliche Funktionen von KimIV - Seite 106

 
vvg:


Ich wollte diese Funktion verwenden, bin aber auf folgende Situation gestoßen: Wenn ein neues Extremum auftaucht, ändert sich das Preisniveau nicht sofort, sondern bleibt eine Zeit lang gleich. Das stört mich beim Testen. Wie lässt sich das Problem beheben?

Bitte liefern Sie die entsprechenden Belege: Symbol, Datum, Uhrzeit, Preis. Ich möchte Ihre Situationwiederholen .
 
KimIV:
vvg:


Ich wollte diese Funktion verwenden, sah mich aber mit folgender Situation konfrontiert: Wenn ein neues Extremum auftaucht, ändert sich das Preisniveau nicht sofort, sondern bleibt eine Zeit lang gleich.

Es behindert die Prüfung. Wie lässt sich das Problem beheben?

Bitte liefern Sie die entsprechenden Belege: Symbol, Datum, Uhrzeit, Preis. Ich möchte Ihre Situation wiederholen .
Guten Abend, ich habe einen Code an meinen EA angehängt, der es ihm erlaubt, in einem bestimmten Zeitraum zu handeln, aber der EA handelt weiter, obwohl er während der Kompilierung keine Fehler hatte! Ich kann den Handel nicht von der Marktvolatilität abhängig machen (offene Geschäfte, wenn die Volatilität höher als 50 ist)! Könnten Sie mir bitte zeigen, wie man das macht, denn ich bin schon ganz erschöpft! Vielen Dank im Voraus!!!!
Dateien:
dmx.mq4  3 kb
 

Warum haben Sie Ihre Funktion in die globalen Variablen aufgenommen?

// Expert Advisor vom Handel mit C und OP abhalten
if ( (Stunde()==20 && Minute()>=59) && (Stunde()==08 && Minute()>=59) )
Rückkehr;

Sie muss beim Start platziert werden! Wenn die Schleife von Anfang an läuft, sieht sie wahrscheinlich die falsche Bedingung und verlässt das System, ohne Positionen zu öffnen. Das sollte Ihnen helfen.


Dateien:
dmx_1.mq4  3 kb
 
LLIAMAH:

Warum haben Sie Ihre Funktion in die globalen Variablen aufgenommen?

// Expert Advisor vom Handel mit C und OP abhalten
if ( (Stunde()==20 && Minute()>=59) && (Stunde()==08 && Minute()>=59) )
Rückkehr;

Sie muss beim Start platziert werden! Wenn die Schleife von Anfang an läuft, sieht sie wahrscheinlich die falsche Bedingung und verlässt das System, ohne Positionen zu öffnen. Das sollte Ihnen helfen.


Danke, aber leider keine Änderung
 
dimas7469:
Danke, aber leider keine Änderung.

if ( (Hour()==20 && Minute()>=59) && (Hour()==08 && Minute()>=59) ) 
return;

Ich verstehe...

if (Hour()>=21 || Hour()<=9) 
return;

So sollte es auch sein.
Kein Grund, etwas zu verkomplizieren, was vereinfacht werden kann...

 
todem:
wozu das apersand am Ende von "double&" dient
Dies bedeutet, dass ein in EA-Variablen deklariertes Array per Referenz an die Funktion übergeben wird. Nach der Rückkehr von der Funktion enthält dieses Array die Werte, die diese Funktion in es geschrieben hat.
 
Guten Tag. Liebe KimIV. Ihr e-News-Lucky$ EA öffnet Stop-Orders. Können Sie die Limits wieder öffnen? Ich bin kein Experte für Computerprogrammierung :)), deshalb bitte ich Sie um Hilfe. Ich würde mich freuen.
Dateien:
 

Wie man es macht:

Wenn Bedingung 1 erfüllt ist, wird sie nicht erneut geprüft, und Bedingung 2 wird bei den nächsten Ticks geprüft usw.?

static bool Val_max, Cl_dn, Val_min; //static or global
                                        |
//+------------------------------------------------------------------+
int start()
  {
   int j;
   double bid;                                         
   bid=Bid;                                    // Текущая цена продажи
   string
   Symb=Symbol();                               // Название фин.инстр.
double Value_max=1.0000;
double Value_min=0.9980;
double Open_1=Open[1];
double Close_1=Close[1];
//----

//--------------------------------------------------------------- 4 --

double Val=iCustom(NULL, 0, "Название Польз. Индикатора",0,0);   // Присваиваем пер. Val значение польз. индикатора
if (Условие1)
{
 Val_max=true;                  // 
 Alert("Значение инд. >= Value_max (исп. 1-е усл.)");
}
if (Условие2)
{
 Cl_dn=true;
 Alert("1 бар закрылся падением (исп. 2-е усл.)");
}
if (Условие3 && Cl_dn==true)
{
 Val_min=true;
 Alert("Значение инд. <= Value_min (исп. 3-е усл.)");
}
if (Val_max==true && Cl_dn==true && Val_min==true)
  {
   for (j = 0; j < OrdersTotal(); j++)
    {
     OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol() == Symbol())
      {
      if (OrderType() == OP_SELL) return(0);
      }
    }
   
   OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble(Bid,Digits),2,Bid+400*Point,Bid-400*Point,"",3,Red);  // Открытие SELL
   Val_max=false; Cl_dn=false; Val_min=false;
  }

//----
   return(0);
  }
 
Können Sie mir sagen, ob es ein Skript im Thema gibt, das alle offenen Aufträge schließt, wenn der Gesamtgewinn von n Pips erreicht ist?
 

Hallo Igor. Ich verwende Ihre Funktion IniFiles.mqh, sie ist perfekt für meine Zwecke. Ich danke Ihnen vielmals.

Haben Sie (bereit und willens zu kaufen)))) das gleiche, aber für die Arbeit mit Excel? Ich habe mehrere Optionen ausprobiert, wie diese https://www.mql5.com/ru/code. Beim Lesen aus einer Zelldatei wird jedoch bei jedem Tick die Datei explizit auf dem Desktop geöffnet. Ist es möglich, Zelldaten wie in IniFiles programmatisch zu lesen? Ich brauche dies, um Daten aus einem Quick DDE zu lesen.

Grund der Beschwerde: