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

 
Igor Makanu:

Ihr Beispiel enthält viele Fehler

sollte es geben:

hier sind die Preise nicht normalisiert OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-SL*Point,Bid+TP*Point,"Mein Auftrag",MagicNumber,0,clrGreen);

Hier verstehe ich die Logik nicht, warum OnTick() verlassen werden sollte, wenn die Bedingung falsch ist.

wir sollten wahrscheinlich die Schleife fortsetzenund nur die Anzahl der Bestellungen zählen

Ihr Beispiel ist von der Logik her sehr einfach und es wäre schwierig, es für andere Aufgaben zu ändern... Vielleicht will er ein wenig nachhaken.

Es ist noch früh)))) Es wird eine Menge auf einmal sein. Das ist nicht sehr sinnvoll))))) Und so ja, natürlich nach Berechnungen für alle, dass Sendeauftrag Normalisierung notwendig ist))))

Da die Bedingung von Auftrag, wenn es keine Aufträge auf dem aktuellen Instrument mit unserer Magie, stellen wir den Auftrag. Und dann erreicht die Bedingung den Auftrag erst, wenn er geschlossen wird.

PS mag den Zustand nicht, wenn nicht.

 

Guten Tag, können Sie mir sagen, wie man den Ausdruck

string sym=(symbol==NULL ? Symbol() : symbol);
 
Galim_V:

Seien Sie gegrüßt, können Sie mir sagen, wie man diesen Ausdruck richtig liest?

Wennsymbol leer ist, wird der Wert des aktuellen Symbols an die Variable sym zurückgegeben, und wenn es nicht leer ist, wird der Wert an die Variable sym zurückgegeben

 
Vladimir Pastushak:

Wenn die Variable symbol leer ist, wird der Wert des aktuellen Diagrammsymbols an die Variable sym zurückgegeben, und wenn sie nicht leer ist, wird ihr Wert an die Variable sym übergeben

Ich danke Ihnen!

 
Galim_V:

Seien Sie gegrüßt, können Sie mir sagen, wie man diesen Ausdruck richtig liest?

Er lautet: Weisen Sie Symbol() der Variablen zu, wenn Symbol NULL ist, andernfalls weisen Sie Symbol der Variablen zu.

Die Entsprechung dieses Eintrags

string sym;
if(symbol == NULL)
sym = Symbol();
else
sym = symbol;
Der einzige Unterschied ist die Anzahl der Zeilen.
 
Alexey Viktorov:

Liest sich wie folgt: Weisen Sie Symbol() eine Variable zu, wenn Symbol NULL ist, ansonsten weisen Sie Symbol einen Wert zu.

Äquivalent zu diesem Eintrag

Der einzige Unterschied ist die Anzahl der Zeilen.

Ich danke Ihnen!

 
Valeriy Yastremskiy:

Was dann, zum Beispiel, haben Sie ein Fenster offen nicht Eurobucks, aber Eurofunt, vergleichen Sie das Symbol der ausgewählten Reihenfolge mit Eurobucks, wenn wahr, dann gibt es einen Auftrag auf Eurobucks, und wenn unsere Magie, dann von der Onstart-Funktion zurückkehren, und wenn nicht, dann setzen wir einen Auftrag auf Eurobucks, aber Kloz, High, Asc, Bid haben Sie für Eurofunt. wird ein Fehler bei der Eröffnung von Aufträgen, weil Angebot und Nachfrage für diese instuents sind unterschiedlich. Und Symbol() gibt das Symbol des aktuellen Fensters zurück und es tritt kein Fehler auf.

Verwenden Sie die Vorlage aus dem Meta-Editor. Oben links gibt es eine Schaltfläche Neu. Die Funktion OnStart wird immer noch verwendet, aber das ist nicht richtig, und OnStart ist für Skripte. Die richtige Vorlage.

Der richtige Code. Ihr Bestellkommentar fehlt, und der Magier ist in Ihrem Code nicht berücksichtigt. In den Warnungen zur Eröffnungszeile beachten Sie Implizite Typkonvertierung einer Zahl in einen String!!!

Ja, es funktioniert so, wie es sollte. Danke!!!

Ich wusste nicht, dass es so wichtig ist, eine Vorlage zu verwenden. OnStart in der Tat. Ich hatte die Grundstruktur falsch verstanden. Nun, das werde ich jetzt wissen.

 
Alexey Belyakov:

Ja, es funktioniert so, wie es sollte. Danke! (Lacht)

Ich wusste nicht, dass es so wichtig ist, eine Vorlage zu verwenden. OnStart, in der Tat. Ich hatte die Grundstruktur falsch verstanden. Nun, das werde ich jetzt wissen.

Nun, und alles, was Sie in die Funktionen der Arbeit mit Aufträgen setzen, sollte normalisiert werden. Wenn dem Dezimalpunkt 6 Ziffern folgen, wird die Bestellung nicht aufgegeben und es wird ein Fehler erzeugt.

Suchen Sie das Thema mit "Nur nützliche Funktionen von KimIV" oder schlagen Sie es in KodoBase nach.

Igor Makanu schrieb über weitere Fehler. Und die Funktionen von Kim sind für den Anfang wirklich nützlich. Die Kommentare sind eindeutig.

 

Bitte um Hilfe. Warum ergibt der Test einen Fehler - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30: array out of range in '123456.mq4' (59,13)"" ????


#property link "2020, Grey".

#property link "uirnP0215@mail.ru"

#Eigenschaft Version "1.00"

#Eigenschaft streng


Eingabe von Doppellosen = 0,01;

Eingabe int Magic = 1546;



double ibufUP[];

double ibufDN[];


//+------------------------------------------------------------------+

Experteninitialisierungsfunktion //|

//+------------------------------------------------------------------+

int OnInit()

{


return(INIT_SUCCEEDED);

}

//+------------------------------------------------------------------+

//| Experten-Deinitialisierungsfunktion |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

{

//---


}

//+------------------------------------------------------------------+

//| Experten-Tick-Funktion |

//+------------------------------------------------------------------+

void OnTick()

{

CountFractals();

if(ibufUP[3]>0)

{

if(!OrderSend(Symbol(), OP_SELL, lots, Bid, 30, 0, 0, "", Magic, 0, clrRed))

Print("Verkaufsauftrag konnte nicht geöffnet werden");

}

if(ibufDN[3]>0)

{

if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, "", Magic, 0, clrGreen))

Print(" Kaufauftrag konnte nicht geöffnet werden");

}



}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

void CountFractals()

{

for(int i=150; i>=0; i--)

{

ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i);

ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i);

}

}

//+------------------------------------------------------------------+



 
Madmas:

Bitte um Hilfe. Warum ergibt der Test einen Fehler - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30: array out of range in '123456.mq4' (59,13)"" ????


#property link "2020, Grey".

#property link "uirnP0215@mail.ru"

#Eigenschaft Version "1.00"

#Eigenschaft streng


Eingabe von Doppellosen = 0,01;

Eingabe int Magic = 1546;



double ibufUP[];

double ibufDN[];


//+------------------------------------------------------------------+

Experteninitialisierungsfunktion //|

//+------------------------------------------------------------------+

int OnInit()

{


return(INIT_SUCCEEDED);

}

//+------------------------------------------------------------------+

//| Experten-Deinitialisierungsfunktion |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

{

//---


}

//+------------------------------------------------------------------+

//| Experten-Tick-Funktion |

//+------------------------------------------------------------------+

void OnTick()

{

CountFractals();

if(ibufUP[3]>0)

{

if(!OrderSend(Symbol(), OP_SELL, lots, Bid, 30, 0, 0, "", Magic, 0, clrRed))

Print("Verkaufsauftrag konnte nicht geöffnet werden");

}

if(ibufDN[3]>0)

{

if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, "", Magic, 0, clrGreen))

Print(" Kaufauftrag konnte nicht geöffnet werden");

}



}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

void CountFractals()

{

for(int i=150; i>=0; i--)

{

ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i);

ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i);

}

}

//+------------------------------------------------------------------+



Fügen Sie zunächst einen Dekrementzähler in der FunktionCountFractals hinzu.