[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 616

 
Dimka-novitsek:
Guten Abend, der Trailing-Stop funktioniert sofort nach der Auftragserteilung. Und es sollte nur funktionieren, wenn die Bestellung mit dem Ticket-Token in die Historie wandert, und zwar strikt nach TakeProfit.

Aber wenn Ihre Historie nicht leer ist, werden Sie mit ziemlicher Sicherheit einen Auftrag finden, der genau bei Take Profit? ausgelöst wurde. Offensichtlich suchen Sie nicht in der Historie nach einem bei TP abgeschlossenen Auftrag, sondern Sie prüfen in der Historie, wie der gewünschte Auftrag abgeschlossen wurde und ob er überhaupt abgeschlossen wurde. Das ist es, was Sie überprüfen müssen. Warum überprüfen Sie genau, wie hoch der Schlusskurs Ihres Auftrags ist? Drei Optionen - 1. Schlusskurs==0 - wenn die Order marktgängig ist, ist sie nicht in der Historie (OrderSelect() gibt false zurück) 2.
AuftragGewinnermittlung()
-- der Auftrag wurde zum Stoppkurs geschlossen, 3.
BestellungGewinnmitnahme()
-- der Auftrag wurde nicht zum Stopp geschlossen.
 

rigonich

Wieder fünfundzwanzig. Ich fragte ganz konkret, ob ich den richtigen ersten Schritt gemacht hatte. Sie haben nicht auf eine direkte Frage geantwortet, Sie haben kein einziges Wort zum Thema gesagt.

Ja, natürlich lese ich ein Lehrbuch, aber da ich einen Beruf habe, der nichts mit Programmierung zu tun hat, ist es klar, dass ich einen klaren, einfachen, konkreten Algorithmus verlange. Wie schwer ist es zu verstehen? Wenn Sie es schwierig finden, in der Sache zu antworten, warum machen Sie sich dann die Mühe? Gehen Sie einfach weg.

Und als Anmerkung: Sie haben keine Ahnung, wie viele Menschen ich treffe, die ich als Allgemeinmediziner als dumm bezeichnen kann. Es ist schwer vorstellbar, dass Erwachsene grundlegende Fragen über ihre eigene Gesundheit nicht verstehen. Wenn ich auf jeden so reagiere wie Sie, dann bin ich als Spezialist wertlos. Schlafen Sie gut.

_______________

Bitte - jemand E-Mail an mich neroy(dog)mail.ru, die stumpf nehmen die EA-Code und fügen Sie in dem, was Sie brauchen, an der richtigen Stelle kann.

 
xant:

rigonich

Wieder fünfundzwanzig. Ich fragte ganz konkret, ob ich den richtigen ersten Schritt gemacht hatte. Sie haben nicht auf eine direkte Frage geantwortet, Sie haben kein einziges Wort zum Thema gesagt.

Ja, natürlich lese ich ein Lehrbuch, aber da ich einen Beruf habe, der nichts mit Programmierung zu tun hat, ist es klar, dass ich einen klaren, einfachen, konkreten Algorithmus verlange. Wie schwer kann es sein, das zu verstehen? Wenn Sie es schwierig finden, in der Sache zu antworten, warum machen Sie sich dann die Mühe? Gehen Sie einfach weg.

Und als Anmerkung: Sie haben keine Ahnung, wie viele Menschen ich treffe, die ich als Allgemeinmediziner als dumm bezeichnen kann. Es ist schwer vorstellbar, dass Erwachsene grundlegende Fragen über ihre eigene Gesundheit nicht verstehen. Wenn ich auf jeden so reagiere wie Sie, bin ich als Spezialist wertlos. Schlafen Sie gut.

_______________

Bitte - jemand E-Mail an mich neroy(dog)mail.ru, die stumpf nehmen die EA-Code und fügen Sie in dem, was Sie brauchen, an der richtigen Stelle kann.


Sie haben nicht darum gebeten, Ihren EA zu nehmen und den erforderlichen Code einzufügen, Sie haben den EA-Code nicht gepostet, zuerst haben Sie um Hilfe gebeten, um das Problem des Datenverlustes beim Ausschalten des EA zu lösen, als Sie das getan haben, haben Sie denjenigen beleidigt, der Ihnen geholfen hat, dann haben Sie gefragt, ob Sie den "ersten Schritt" richtig gemacht haben, und als Ihnen gesagt wurde, dass es falsch war und Sie auf bestimmte Fehler hingewiesen wurden, haben Sie wieder diejenigen beleidigt, die Ihnen helfen, also nehme ich an, dass niemand sonst das tun möchte.

P.S. Ich kann mir keinen einfacheren und klareren Algorithmus vorstellen, als zwei fertige Funktionen zu nehmen, sie in meinen EA zu kopieren und einen Aufruf der einen am Anfang des Init und den anderen am Ende des Starts zu platzieren.

 
rigonich:

Es handelt sich um Ihren Code, der teilweise von jemand anderem korrigiert wurde.


mein Code hat keine Fehler ergeben. Aber auch das hat keine Ergebnisse gebracht.

Und sein Code hat nicht einmal funktioniert, weil 24 Fehler....

aber ich hatte die Idee ... und jetzt funktioniert es.

 

Der Compiler ist natürlich unmenschlich. Jetzt weiß ich nicht mehr, warum der Fehler angezeigt wird

'(' - Funktionsdefinition unerwartet G:\Program_Files_2\MT4-demo\experts\3.mq4 (139, 14)

während dieser Expert Advisor funktionierte wie ein Charme gestern, aber heute habe ich gerade eine lange IF in mehrere kurze wenn geöffnet....

Es stellte sich heraus, dass ich ein Anführungszeichen über ein KILLOMETRE übersehen hatte, ab dem der Compiler den Fehler anzeigte! Außerdem schwieg er über das Anführungszeichen, er war mit der FUNKTION nicht zufrieden, sehen Sie....:((((((((

 

rigonich

Ich könnte Ihnen Punkt für Punkt auf jedes Ihrer Worte antworten, aber ich sehe keinen Sinn mehr darin. Wenn jemand stur ist, hat es keinen Sinn, etwas zu erklären. Die Frage war, wie man sich organisieren sollte. Als Sie dann den Hinweis gaben, dass globale Variablen besser sind als das Schreiben in eine Datei, kam die Frage auf, wie man es richtig macht. Dann gab Ihr nervöser Mitunterzeichner einen Code ein, wobei er keine Gelegenheit ausließ, einen Witz zu machen. Es ist ganz einfach: Ein Teil des Codes geht in den Initialisierungsblock, ein Teil des Blocks geht in den Haupt-EA-Block.

Dies ist der Inhalt des Initialisierungsblocks:

 void fGet_MineGV (string fs_PrefName = "") // префикс имени переменной
     {
        string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
        if (GlobalVariableCheck (ls_Name)) SUA = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
        if (GlobalVariableCheck (ls_Name)) SUA1 = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
        if (GlobalVariableCheck (ls_Name)) BUA = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
        if (GlobalVariableCheck (ls_Name)) BUA1 = GlobalVariableGet (ls_Name);
     }

Dies ist der Inhalt des Hauptblocks

 void fSave_MineGV (string fs_PrefName = "") // префикс имени переменной
{
 static datetime ldt_NewBar;
 datetime ldaTBeginBar = iTime (Symbol(), 1, 0)
 //---- Сохраняемся в начале каждой минуты
 if (ldt_NewBar == ldaTBeginBar) return;
 ldt_NewBar = ldaTBeginBar;
 //---- Сохраняем поочереди значения каждой переменной
 string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
 GlobalVariableSet (ls_Name, SUA);
 ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
 GlobalVariableSet (ls_Name, SUA1);
 ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
 GlobalVariableSet (ls_Name, BUA);
 ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
  GlobalVariableSet (ls_Name, BUA1);
}

Wie Sie sehen können, habe ich die Variablen umbenannt.

Also fügte ich nacheinander den zweiten Teil des Codes ein, beginnend unmittelbar nach der Variablenberechnung und bis zum Ende des Startblocks, wobei ich versuchte, ihn vor der letzten geschweiften Klammer einzufügen.

Nach Ihrer hochprofessionellen Erklärung zu urteilen, hätte ich genau das tun sollen, denn es ist für jeden Anfänger klar. Ihrer Meinung nach sollte es funktionieren. Aber das ist nicht der Fall. Das ist das Beste, was ich bisher erreicht habe:

8 error(s), 0 warning(s)        
 

konnte die richtige Funktion in der Bibliothek nicht finden

TakeProfit-Größe der letzten geschlossenen Position.

Vielleicht hat jemand eine?

 

Sind solche Ketten erlaubt?

if ( (A==1 && B==2) && (C==2 || D==3) && E==4)

d.h. sowohl AND als auch OR in einer Zeile?

 
 lottamer:

Sind solche Ketten erlaubt?

if ( (A==1 && B==2) && (C==2 || D==3) && E==4)

d.h. sowohl AND als auch OR in einer Zeile?


Die Antwort ist ja. Sind bestimmte Sprachen nicht erlaubt? Müssen sie alles auf Konjunktiv und Disjunktiv-Normalformen reduzieren?
 
lottamer:

konnte die Funktion nicht in der Bibliothek finden

Die Gewinngröße der zuletzt geschlossenen Position.

Vielleicht hat jemand eine?


Schreiben Sie es selbst - es gibt 1 einzige Schleife. Versuchen Sie einfach, es zu tun. Und wenn Sie scheitern, zeigen Sie uns den Code Ihrer Schleife - wir werden Ihnen helfen.