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

 
ANDREY:

Schön, dass ich Ihnen helfen konnte :=) :=) :=)

Nun zu meinem Code, der wahrscheinlich so schlecht ist, dass es unangenehm ist, darin herumzustochern. Aber sagen Sie mir wenigstens, was der Vorteil meines Codes wäre, wenn ich ein einziges Array (mit den Werten der Preise) dieses Codes in eine Datei geschrieben hätte und dann das Programm es aus dieser Datei lesen und seine Werte in weiteren Berechnungen verwenden würde, mit einem Array von nur 60 Elementen. Was genau in meinem Code wäre optimal?
Danke für Ihre Hilfe.

Es geht nicht um die Qualität des Codes. Ich schaue mir den Code anderer Leute nicht an. Bis auf den, den ich brauche oder in der Agonie eines Anfalls von Nächstenliebe, :=))) aber das passiert immer seltener...

Wenn Sie möchten, können Sie in Worten beschreiben, was als Ergebnis benötigt wird und was Sie dafür getan haben. Dann wird sich zeigen, inwieweit das Problem in die richtige Richtung geht.

 
Alexey Viktorov:

oder in den Qualen eines Mitleidsanfalls :=))) ....

Ich habe gelesen, dass es im Frühjahr zu Rückfällen kommen kann. Ich wünschte, Ihre Remission wäre schon früher vorbei :=))).

Und ich wünschte, deine Angriffe wären so häufig wie möglich..... :=)) :=)))

 
ANDREY:

Danke für den Hinweis. Ich habe bereits mit der Lektüre des Abschnitts FILE OPERATIONS aus dem Lehrbuch von Kovalev begonnen. In der Tat... langsam wird etwas klar. Ich habe verstanden, dass alle von mir getesteten EAs Textdateien mit Barpreisen (die allerdings nicht von meinem Programm erstellt wurden) mit der Erweiterung .cvv im Terminalverzeichnis des Testers lesen.
Mit anderen Worten, Informationen (Daten) von einem beliebigen Programm werden in die Datei geschrieben und diese Daten aus der Datei gelesen, ebenfalls von einem beliebigen Programm. Ich habe den Eindruck, dass in den Dateien große Datenmengen gespeichert werden, deren Speicherung im Programm nicht sinnvoll ist. So etwas wie eine mqh-Datei.
Wenn Sie mir erklären wollen, was Alexey Victorovs Satz bedeutet : ".... Do you want to write .csv and read array....." aus Beitrag mit Bezug auf meinen Code aus Beitrag
. Ich dachte, er meinte die Textdatei .cvv, mit den Barpreisen aus dem Testerverzeichnis. Aber was genau er damit meint, verstehe ich immer noch nicht. Ich schreibe diese .cvv-Dateien nicht, sondern das Programm des Alpari-Händlers... Wie das Programm aus einem Array liest - im Allgemeinen verstehe ich ein wenig ... Sie greift auf eine Zelle eines Arrays über ihre Adresse zu, gelangt in die Zelle und greift auf den Wert der Zelle zu (d.h. liest ihn). Wie kann ein Programm in ein Array hineinlesen, anstatt aus ihm heraus? Das ist ein unauflösbarer Widerspruch .... scheint mir als Laie zu sagen. Aus irgendeinem Grund glaube ich, dass man in ein Array nur bestimmte Werte schreiben kann. Und Sie können nur aus einem Array lesen.

Das Schreiben eines Arrays in binärer Form hat keinen Kovalev. Das Lehrbuch ist von 2009. Es gab nur binfiles. Und die Array-to-Bin-Datei erschien später. Bin-Dateien werden schneller geschrieben und gelesen. Sie haben keine Zeilenvorschübe. Aber sie sind für Menschen nicht lesbar).

 
Valeriy Yastremskiy:

Kowaljow hat keine Aufzeichnungen über eine Zweiergruppe. Das Lehrbuch ist von 2009. Dort gab es nur binfiles. Und Array zu bin-Datei erschien später. Bin-Dateien werden schneller geschrieben und gelesen. Sie haben keine Zeilenvorschübe. Aber sie sind für Menschen nicht lesbar).

Vielen Dank für die Informationen, die für mich neu sind. Und ich verstehe es 50%.... Ich werde mich eingehend mit diesem Thema befassen, wenn ich sicher bin, dass ich es in meinem derzeitigen Entwicklungsstadium brauche.
Im Moment konzentriere ich mich auf meinen kleinen Code , der versucht, das Kursminimum zwischen 2 benachbarten Aufträgen zu finden, die auf einer einminütigen Kerze mit 2 Punkten Unterschied eröffnet wurden, wobei ich nur wenig Zeit und andere Computerressourcen benötige. Hierfür habe ich ein Array erstellt. Einige Leute versuchen mich hier zu überzeugen, dass dieses Array mit einer Funktion in eine Datei geschrieben werden muss und dann eine andere Funktion verwendet werden sollte, um Daten aus der Datei (d.h. aus dem Array) für weitere Berechnungen zu erhalten.

Aber wo wäre es von Vorteil, wenn ich ein einziges Array (mit den Werten der Preise) dieses Codes in eine Datei schreiben würde, und dann würde das Programm es aus dieser Datei lesen und seine Werte in nachfolgenden Berechnungen verwenden? Und das Array würde nur 60 Elemente enthalten. Was genau wäre in meinem Code optimal?

Natürlich im Laufe der Prüfung, Es wird eine Menge solcher Aufträge geben innerhalb der Minutenkerzen, zwischen denen wir das Minimum berechnen müssen, wird es eine Menge davon geben.. Mein Code ist nur eine Illustration einer Idee, die mir gekommen ist.
Alexey Viktorov kann diese Frage nicht beantworten, weil er noch keinen Anfall von Wohltätigkeit hatte .... und er hatte nicht die Qualen und Krämpfe, die damit verbunden waren :=).
Vielleicht haben Sie bereits alle Voraussetzungen geschaffen, um mir zu helfen, weiterzukommen.


Ich danke Ihnen für Ihre Hilfe.

 
ANDREY:

ist es schwierig, den Schöpfer des Grals zu verstehen. Es ist möglich, alle Berechnungen an den Indikator zu übergeben und ein Signal im Expert Advisor zu erhalten.

 
ANDREY:

Vielen Dank für die Informationen, die für mich neu sind. Und ich habe 50% davon verstanden.... Und wenn ich mir sicher bin, dass ich es in diesem Stadium meiner Entwicklung brauche, werde ich dieses Thema gründlich studieren.
Im Moment konzentriere ich mich auf meinen Code , der versucht, das Kursminimum zwischen 2 benachbarten Aufträgen zu finden, die auf einer einminütigen Kerze mit 2 Punkten Unterschied eröffnet wurden, wobei ich nur wenig Zeit und andere Computerressourcen benötige. Hierfür habe ich ein Array erstellt. Einige Leute versuchen hier, mich davon zu überzeugen, dass dieses Array mit einer Funktion in eine Datei geschrieben werden muss und dann eine andere Funktion verwendet werden sollte, um Daten aus der Datei (d. h. aus dem Array) für weitere Berechnungen zu erhalten.

Aber wo wäre es von Vorteil, wenn ich ein einziges Array (mit den Werten der Preise) dieses Codes in eine Datei schreiben würde, und dann würde das Programm es aus dieser Datei lesen und seine Werte in nachfolgenden Berechnungen verwenden? Und das Array würde nur 60 Elemente enthalten. Was genau wäre in meinem Code optimal?

Natürlich, im Laufe der Prüfung, Es wird eine Menge solcher Aufträge geben innerhalb der Minutenleuchter, zwischen denen wir das Minimum berechnen müssen, wird es eine Menge davon geben.. Mein Code ist nur eine Illustration einer Idee, die mir gekommen ist.
Alexej Viktorov kann diese Frage nicht beantworten, da er noch keinen Wohltätigkeitsanschlag erlebt hat .... und er hatte nicht die Qualen und Krämpfe, die damit verbunden waren :=).
Vielleicht haben Sie bereits alle Voraussetzungen geschaffen, um mir zu helfen, weiterzukommen.


Ich danke Ihnen für Ihre Hilfe.

Ich verstehe die Logik überhaupt nicht. Warum sollten Sie ein paar Daten in ein Array schreiben? Sie können sie in Variablen schreiben. Von einem Array spricht man, wenn es viele Variablen desselben Typs gibt. Und wenn es weniger als 5 sind, können Sie sie in Variablen speichern. Warum sollten die im Array gespeicherten Daten in eine Datei geschrieben werden, die später im selben Expert Advisor gelesen werden kann? Sie sind trotzdem verfügbar. Sie werden in die Datei für den Austausch zwischen verschiedenen Expert Advisors oder zur Weiterverarbeitung geschrieben, nicht in diesen EA. Darüber hinaus ist das Array immer global, wenn ich mich nicht irre.

 
ANDREY:

Vielen Dank für die Informationen, die für mich neu sind. Und ich habe 50% davon verstanden.... Und wenn ich mir sicher bin, dass ich es in diesem Stadium meiner Entwicklung brauche, werde ich dieses Thema gründlich studieren.
Im Moment konzentriere ich mich auf meinen Code , der versucht, das Kursminimum zwischen 2 benachbarten Aufträgen zu finden, die auf einer einminütigen Kerze mit 2 Punkten Unterschied eröffnet wurden, wobei ich nur wenig Zeit und andere Computerressourcen benötige. Hierfür habe ich ein Array erstellt. Einige Leute versuchen hier, mich davon zu überzeugen, dass dieses Array mit einer Funktion in eine Datei geschrieben werden muss und dann eine andere Funktion verwendet werden sollte, um Daten aus der Datei (d. h. aus dem Array) für weitere Berechnungen zu erhalten.

Aber wo wäre es von Vorteil, wenn ich ein einziges Array (mit den Werten der Preise) dieses Codes in eine Datei schreiben würde, und dann würde das Programm es aus dieser Datei lesen und seine Werte in nachfolgenden Berechnungen verwenden? Und das Array würde nur 60 Elemente enthalten. Was genau wäre in meinem Code optimal?

Natürlich während der Tests, Es wird eine Menge solcher Aufträge geben innerhalb der Minuten-Candlesticks, zwischen denen wir das Minimum berechnen müssen, wird es eine Menge davon geben.. Mein Code ist nur eine Illustration einer Idee, die mir gekommen ist.
Alexej Viktorov kann diese Frage nicht beantworten, da er noch keinen Wohltätigkeitsanschlag erlebt hat .... und er hatte nicht die Qualen und Krämpfe, die damit verbunden waren :=).
Vielleicht haben Sie bereits alle Voraussetzungen geschaffen, um mir zu helfen, weiterzukommen.


Vielen Dank für die Hilfe.

Der Anfang ist so weit, dass es schwierig ist, im Detail zu antworten... Aber ich werde trotzdem versuchen, mich schlau zu machen...

Wenn ich mich richtig erinnere, müssen Sie feststellen, wann das Tief auf der Kerze, bei der der Auftrag eröffnet wurde, gebildet wurde. Wenn diese Kerze aktuell ist, ist das kein Problem: Wir setzen die kleinere der beiden Zahlen in die Variable ein und tun dies, bis die Kerze geschlossen wird. Aber wenn wir es bestimmen müssen, wenn diese Kerze bereits die 10. ist, dann ist das schon ein Problem für mql4. In mql5 ist das sehr einfach: Kopieren Sie einfach die ausgewählten Zeitticks "von und bis", und das Array wird alles enthalten, was Sie brauchen. Aber für mql4 wurde Ihnen vorgeschlagen, die Ticks in eine Datei zu schreiben, damit Sie später diese Ticks abrufen und dieses Array verwenden können, um festzustellen, ob das Low dieser Kerze niedriger ist als der Mindestwert im Array, was bedeutet, dass das Low vor der Eröffnung der Order lag. Wenn sie gleich sind, bedeutet dies, dass das Low nach der Eröffnung des Auftrags gebildet wurde.

Wie auch immer... wenn der EA funktioniert, genügt es, ihn in einer Variablen zu bestimmen, wie es hier beschrieben ist; es gibt eine Funktion für diesen Zweck, die Sie in der Dokumentation im Abschnitt Mathematische Funktionen nachlesen können; wenn der EA aus irgendeinem Grund nicht funktioniert, wird er keine Ticks aufzeichnen und sie auch nicht erhalten.

 
Alexey Viktorov:

Der Anfang ist so weit weg, dass es schwer ist, im Detail zu antworten... Aber ich werde versuchen, clever zu sein...

Wenn ich mich richtig erinnere, müssen Sie feststellen, wann das Tief der Kerze gebildet wurde, auf der der Auftrag eröffnet wurde. Wenn diese Kerze aktuell ist, ist das kein Problem: Wir setzen die kleinere der beiden Zahlen in die Variable ein und tun dies, bis die Kerze geschlossen wird. Aber wenn wir es bestimmen müssen, wenn diese Kerze bereits die 10. ist, dann ist das schon ein Problem für mql4. In mql5 ist das sehr einfach, man kopiert einfach die Ticks "von und nach" der Zeit und schon ist alles im Array. Aber für mql4 wurde Ihnen vorgeschlagen, die Ticks in eine Datei zu schreiben, damit Sie später diese Ticks abrufen und dieses Array verwenden können, um festzustellen, ob das Low dieser Kerze niedriger ist als der Mindestwert im Array, was bedeutet, dass das Low vor der Eröffnung der Order lag. Wenn sie gleich sind, bedeutet dies, dass das Low nach der Eröffnung des Auftrags gebildet wurde.

Wie auch immer... wenn der EA funktioniert, reicht es aus, ihn in einer Variablen zu speichern, so wie es hier beschrieben ist, es gibt eine Funktion für diesen Zweck, die Sie in der Dokumentation im Abschnitt Mathematische Funktionen nachlesen können.

Vielen Dank für die neuen Informationen zu me...., insbesondere zu den Möglichkeiten von mql4 im Vergleich zu mql5 in diesem Fall. So seltsam es auch erscheinen mag, die von Ihnen beschriebene Aufgabe habe ich selbst gelöst, und die Art und Weise, wie sie gelöst wurde, hat mich durch ihre Originalität und Optimalität überrascht.
Danach stand ich vor einem ähnlichen Problem
Ich wurde aufgefordert, Ticks in eine Datei zu schreiben,

Anstatt Ticks in eine Datei zu schreiben, habe ich einen Code erstellt, der meine Aufgabe löst, ohne Ticks in eine Datei zu schreibenMit diesem Code versuche ich, das Preisminimum zwischen 2 benachbarten Aufträgen zu finden, die bei einer einminütigen Kerze mit einer Differenz von 2 Punkten eröffnet wurden, wobei ich diewenigste Zeit und andere Computerressourcen verwende. Natürlich wird es viele solcher Aufträgeinnerhalb von einminütigen Kerzen geben, zwischen denen wir das Minimum berechnen müssen. Dies ist nur eine Illustration meiner Idee.

Und jetzt interessiert mich die Antwort auf die Frage: Was wäre der Vorteil meines Codes, wenn ich Ticks in eine Datei geschrieben hätte, wie Sie mir geraten haben?Was genau wäre in meinem Code optimal?


Auf diese Frage wurde von Valeriy Yastremskiy Licht, aber ich würde gerne Feedback von jemandem, der mir riet, um Zecken in einer Datei zu setzen hören.
Vielen Dank für die Hilfe.

 
Valeriy Yastremskiy:

Die Logik ist ein wenig unklar. Warum sollten Sie Datenpaare in ein Array schreiben? Sie können sie in Variablen schreiben. Von einem Array spricht man, wenn es viele Variablen desselben Typs gibt. Und wenn es weniger als 5 sind, können Sie sie in Variablen speichern. Warum sollten die im Array gespeicherten Daten in eine Datei geschrieben werden, die später im selben Expert Advisor gelesen werden kann? Sie sind trotzdem verfügbar. Sie werden in die Datei für den Austausch zwischen verschiedenen Expert Advisors oder zur Weiterverarbeitung geschrieben, nicht in diesen EA. Darüber hinaus ist das Array immer global, wenn ich mich nicht irre.

Danke für den Hinweis. Ich stimme zu, manchmal sind es 5 oder weniger Zecken. Aber in einer einminütigen Kerze kann es viel mehr Ticks als Sekunden geben, und ihre Anzahl zwischen benachbarten Aufträgen kann auch viel mehr als 5 betragen.
Ich war besonders erfreut, dass meine Gedanken mit dem hervorgehobenen Rot übereinstimmten. Aber ich war mir unsicher, da erfahrenere Kameraden meine Unsicherheit noch verstärkten.

 
ANDREY:

Vielen Dank für die neuen Informationen zu me...., insbesondere zu den Möglichkeiten von mql4 im Vergleich zu mql5 in diesem Fall. Aber so seltsam es auch klingen mag, ich habe das oben beschriebene Problem selbst gelöst und war von seiner Originalität und Optimalität überrascht .
Dann stand ich vor einem weiteren ähnlichen Problem, das in diesem Beitrag formuliert wurde.

jedem Tick verfolgen. Ich weiß auch, wie man es mit einem Zyklus zum Zeitpunkt X+2 macht. Und wie man es auf einmal zum Zeitpunkt X+2 macht , wie im Fall von iLow undiLowest.
Ich wäre Ihnen sehr dankbar, wenn Sie mir zeigen könnten, wie man das macht.
Danke


Mir wurde geraten, Zecken in einer Datei zu erfassen

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien.

Alle Fragen von Neulingen über MQL4 und MQL5, Hilfe und Diskussion von Algorithmen und Codes

Alexey Viktorov, 2021.04.09 18:33

Sie dürfen. Sie sollten Ihre .bin-Datei mit der Option

uint  FileWriteArray( 
   int          file_handle,         // handle файла 
   const void&  array[],             // массив 
   int          start=0,             // начальный индекс в массиве 
   int          count=WHOLE_ARRAY    // количество элементов 
   );

und lesen

uint  FileReadArray( 
   int    file_handle,               // handle файла 
   void&  array[],                   // массив для записи 
   int    start=0,                   // стартовая позиция для записи в массив 
   int    count=WHOLE_ARRAY          // сколько читать 
   );

Ich habe einen Code erstellt, der mein Problem löst, ohne Ticks in eine Datei zu schreiben.

sie in eine Datei zu schreiben? Wie in meinem Code. Dies ist kein funktionierender Code, sondern soll meine Idee veranschaulichen, wie man das Minimum zwischen zwei benachbarten Aufträgen findet, die auf einer einminütigen Kerze eröffnet wurden
Danke für die Hilfe.

double P[60],Z;
int Tick,x,x1,G,G1,G2,T;

void OnTick()
{
Tick++;

if (OrdersTotal()==1&&Tick<2189)
{
P[x]=Bid;
Print("------------------------P[x]=Bid------------------------=", DoubleToString(P[x],5), "  x ",  x);
x++;
}
if (OrdersTotal()==2&&Tick==2189)
{
x1=x;
x=0;
ArraySort(P,WHOLE_ARRAY,0,MODE_ASCEND);
T=(60-x1);
Print("------------------------МИНИМУМ=------------------------=",DoubleToString(P[T],5), "  Tick ",  Tick, "  x1 ",  x);
}

if (Tick==2176||Tick==2188)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,Ask+300*Point,Ask-100*Point,"300",0);
G2=G;
G=Tick;
}
}

Das bedeutet, dass ich die Preise für jeden Tick direkt in ein Array und nicht in eine Datei geschrieben habe.


Mitdiesem Code versuche ich, das Preisminimum zwischen zwei benachbarten Aufträgen zu finden, die auf einer einminütigen Kerze mit einer Differenz von 2 Punkten eröffnet wurden,wobei ich möglichst wenig Zeit und andere Computerressourcen benötige. Natürlich wird es viele solcher Aufträgeinnerhalb von einminütigen Kerzen geben, zwischen denen wir das Minimum berechnen müssen. Dies ist nur eine Illustration meiner Idee.

Und jetzt interessiert mich die Antwort auf die Frage: Was wäre der Vorteil meines Codes, wenn ich Ticks in eine Datei geschrieben hätte, wie Sie mir geraten haben?Was genau wäre in meinem Code optimal?


Auf diese Frage wurde von Valeriy Yastremskiy Licht, aber ich würde gerne Feedback von jemandem, der mir riet, um Zecken in einer Datei zu setzen hören.
Vielen Dank für die Hilfe.

Um den Versuch, zu helfen, nicht zu strapazieren, ist es besser, die Nachricht "in die Tasche zu stecken" und sie einzufügen, anstatt sie zu verlinken.

Nun zu diesem Problem: Auftrag Nr. 1 wurde eröffnet... zu diesem Zeitpunkt ist Low natürlich niedriger als der Eröffnungskurs des Auftrags. Nun, seien wir ehrlich...

Die Order Nummer 2 wird eröffnet und wir sollten den Preis auf......... kontrollieren, indem wir die mathematische Funktion fmin() benutzen und wieder in die Variable den Wert vor dem Kerzenschluss schreiben. Sobald die Kerze geschlossen ist, hören wir mit der Preiskontrolle auf, wir brauchen sie nicht mehr. Der erhaltene Wert ist der Mindestpreis im Zeitintervall zwischen der Eröffnung der zweiten Order und dem Schließen der Kerze. Oder vielleicht habe ich es falsch verstanden...

Grund der Beschwerde: