[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 489

 
DOCTORS:


Ich schätze, meine Gehirnfunktionen haben sich nach den Feiertagen teilweise verschlechtert, was sich in einem geringen Maß an Selbstberichterstattung niederschlägt :(

Der Punkt ist ein wenig anders:

1. Sobald der Expert Advisor startet, weise ich einer Variablen den Anfangswert der Einlage zu (ich suche nach einer Zuweisungsfunktion, obwohl ich sie natürlich auch manuell in den Anfangseinstellungen vorgeben kann, aber man hat mir schon meine schlechten Programmierkenntnisse vorgeworfen, aber ich möchte es so machen, wie es ein Weißer macht).

2. Da mein System schlau ist und nur mit einem Los arbeitet, ist der Anfangswert des Loses (sagen wir) 1,0 ...

3. und die wichtigste Frage - ich will nach jedem profitablen Handel, die Kaution wurde mit dem Original verglichen, und wenn der neue Wert (sagen wir) war mehr als 30%, ändere ich die Losgröße Wert um 0,1, dh 1,0 +0,1, und so weiter ständig (klar die Nuance, die ständig den alten Wert der Variable zu ändern, und wieder die Zuweisung Betreiber der variablen Wert der Kaution).

Jedenfalls ist es so.


In der Bibliothek finden Sie Volume Management Tools von I. Kim und andere Versionen, einschließlich der Lehrbuchversion, die ich Ihnen gegeben habe - wenn Sie verstehen, wie sie funktionieren, wird es nicht schwer sein, Ihre eigenen zu erstellen, was genau das ist, was Sie brauchen... So ist das nun einmal. Ohne geht's nicht - Üben und Lösen typischer Probleme - IMHO vor allem. Sehen Sie sich den Trailer an - Kapitalmanagement-Funktionen von Igor Kim.
Dateien:
b-lots.mqh  3 kb
 
sss2019:

Ist der Dateideskriptor beim erfolgreichen Öffnen immer größer als Null?

Bitte prüfen Sie, ob die Logik in diesem Code, der die Datei zum Schreiben öffnet

falsch, und wer würde eine Datei schließen, nachdem sie angelegt wurde, wenn es keine gibt?

und in diesem Fall gibt das Terminal einen Fehler beim Öffnen der Datei aus. Daher ist es besser, das Vorhandensein der Datei mit dem Flag FILE_CSV|FILE_READ zu überprüfen.

 
FAQ:

falsch, und wer schließt die Datei, nachdem sie angelegt wurde, wenn es keine Datei gibt?

Und dann wird das Terminal in diesem Fall einen Fehler beim Öffnen anzeigen, also ist es besser, mit dem Flag FILE_CSV|FILE_READ nach einer Datei zu suchen, in diesem Fall wird das Terminal schweigen, wenn es keine Datei gibt


Nun, sie ist da. Wenn die Datei geöffnet war

  if(Handle >0)
  FileClose(Handle);

Ich habe einen Datensatz in die Datei eingefügt, aber das Trennzeichen am Ende wird nicht hinzugefügt, obwohl das Lernprogramm sagt, dass es automatisch hinzugefügt wird.

FileWrite(Handle,"Pair, Min, Max, Open, Close, Moment");
 

Und wenn er nicht vorhanden war, erstellen Sie ihn und schließen ihn nicht. oder wenn Sie einen zusätzlichen Abschluss haben (unten im Code)

Was das Trennzeichen betrifft, so ist es unabhängig davon, mit welchem Trennzeichen Sie die Datei öffnen (anstatt sie zu erstellen), dasselbe

 


Hehe, das ist ein Themen-Avatar. :)

2 Roman - Danke, wir werden uns das ansehen.

 

FAQ:

Und wenn es nicht da war, erstellen Sie es und schließen es nicht. oder dann, wenn Sie eine zusätzliche schließen (unten im Code) haben

das Trennzeichen - egal, mit welchem Trennzeichen Sie die Datei öffnen (Sie erstellen es nicht), es wird dasselbe sein


Warum es also überflüssig ist, verstehe ich nicht, wenn ich es nicht sofort schließe, dann schließe ich es später. Bitte zeigen Sie mir ein Beispiel, wie man es richtig öffnet und schließt.

 
Wie kann ich erreichen, dass das Alert-Signal im Indikator nur einmal für den aktuellen Balken erscheint? Ich habe versucht, eine Variable zu erstellen, und solange diese Variable den Wert 0 hat, ist das Signal erlaubt, sobald das Signal ertönt, nimmt die Variable den Wert 1 an. Aber es funktioniert nicht.
 
sss2019:
Wie kann ich erreichen, dass das Alert-Signal im Indikator nur einmal für den aktuellen Balken erscheint? Ich habe versucht, eine Variable zu erstellen, und solange diese Variable den Wert 0 hat, ist das Signal erlaubt, sobald das Signal ertönt, nimmt die Variable den Wert 1 an. Aber es funktioniert nicht.

https://docs.mql4.com/ru/basis/variables/static
 
sss2019:
Wie kann ich erreichen, dass das Alarmsignal im Indikator nur einmal für den aktuellen Balken erscheint? Ich habe versucht, eine Variable zu erstellen, und solange diese Variable den Wert 0 hat, ist das Signal erlaubt, sobald das Signal ertönt, nimmt die Variable den Wert 1 an. Aber es funktioniert nicht.
Dateien:
 
sss2019:
Wie kann ich erreichen, dass der Alert im Indikator nur einmal im aktuellen Takt erscheint? Ich habe versucht, eine Variable zu erstellen, und solange diese Variable den Wert 0 hat, ist das Signal erlaubt. Sobald das Signal ausgelöst wurde, nimmt die Variable den Wert 1 an. Aber es funktioniert nicht.


Normalerweise erstelle ich eine Variable LastBarAlert und schreibe Time[0] in diese Variable, wenn der Alarm ausgelöst wird.

Und dann elementar, Alert wird angezeigt, wenn LastBarAlert!=Time[0]

if (Signal && LastBarAlert!=Time[0]){
  Alert('Signal detected');
  LastBarAlert=Time[0];
}
Grund der Beschwerde: