[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 995

 
Hallo alle, beraten, wenn es möglich ist (wenn der Preis steigt, bleibt der Auftrag offen, aber wenn der Preis in 2 Punkte gefallen ist, schließen Sie den Auftrag) beraten, wie man es richtig tun
if (iMomentum(NULL,0,-2,PRICE_HIGH,0)) 
      {
      OrderClose(OrderTicket(),OrderLots(),0,Bid,Violet);
 
artmedia70:

Ich kann es nicht herausfinden... Warum müssen Sie in der Funktion zur Definition von Handelskriterien den durchschnittlichen Spread über eine Anzahl von n Balken der Historie berechnen?

Wenn Sie Funktionen aus dem britischen Lehrbuch verwenden wollen, wäre es sinnvoller, dies in der Funktion Events() zu tun.

Das ist alles. Schauen Sie sich an, wie SK vorschlägt, die Änderung des StopLevels des Brokers zu verfolgen. Was hindert Sie daran, auf genau dieselbe Weise die Veränderung der Streuung zu verfolgen und, wenn es eine gibt, den nächsten Wert in das Array einzugeben. Nun, und beim Füllen des Arrays berechnen seine "durchschnittliche Temperatur im Krankenhaus" (c) SK ...

Die Idee ist, dass es zu verschiedenen Zeiten des Tages unterschiedliche Spreads gibt und manchmal wird mein Handelssystem bei einem durchschnittlichen Spread von sagen wir 12 Punkten erfolgreich handeln, und bei einem Spread von 6 Punkten wird es verlieren und umgekehrt, wenn ich es auf einen Spread von 6 einstelle, wird es bei einem Spread von 12 verlieren, d.h. die Niveaus der schwebenden Aufträge hängen von diesem Parameter ab, ich werde alle meine Ideen später posten, aber jetzt muss ich etwas schrittweise tun, und ich bin auch auf das Freeze-Niveau gestoßen, was bedeutet Wenn ich eine Order mit einem Take und einem Stop eröffne und sie im Markt ist, ist sie um 100 Pips im Plus im fünfstelligen Bereich und der Take war ursprünglich bei 150 Pips, aber jetzt ist sie im Plus, Ich kann keinen Stop-Loss oder Take-Profit setzen, wenn ich Stop-Loss und Take-Take gesetzt habe und der Preis sich in der Nähe der Gewinnzone befindet, kann ich keinen Stop-Loss oder Take-Profit setzen. Das System funktionierte korrekt, ich gab einen Umkehrbefehl, aber das Terminal schlug fehl und der Preis fiel, ohne eine Verkaufsposition und ohne eine Kaufposition einzunehmen.

Wie bekämpft man sie?

 
ex_kalibur:

Die Idee ist, dass zu verschiedenen Zeiten des Tages gibt es unterschiedliche Spreads, und es passiert, dass mit einem durchschnittlichen Spread, mein Handelssystem wird erfolgreich bei einem Spread von, sagen wir, 12 Punkte zu handeln, und bei einem Spread von 6 Punkten wird es Geld verlieren. Wenn ich den Spread für 6 dann bei 12 Punkten einstellen wird es Geld verlieren, Dh dieser Parameter hängt von den Ebenen der ausstehenden Aufträge, ich werde den gesamten Plan später posten, aber jetzt habe ich etwas Schritt für Schritt zu tun, nicht um die Leute lachen, Wenn ich eine Order mit einem Take und einem Stop eröffne und sie im Markt ist, ist sie um 100 Pips im Plus im fünfstelligen Bereich und der Take war ursprünglich bei 150 Pips, aber jetzt ist sie im Plus, Ich kann keinen Stop-Loss oder Take-Profit setzen, wenn ich Stop-Loss und Take-Take setze, und wenn der Preis in der Nähe der Zone ist, kann ich den Stop-Loss oder Take-Profit nicht schließen. Das System funktionierte korrekt, ich gab einen Umkehrbefehl, aber das Terminal schlug fehl und der Preis fiel, ohne eine Verkaufsposition und ohne eine Kaufposition einzunehmen.

Wie kann ich sie bekämpfen?

Klingt, als ob Sie hier richtig sind...
 
Ich programmiere erst seit drei Tagen und kann nicht herausfinden, wie ich den Trailing-Stop-Teil des Programms schreiben soll.

Das Problem ist, dass alles funktioniert, ABER! es bewegt den Stop-Loss sowohl auf die eine Seite und auf die andere, was sollte ich hinzufügen, so dass es den Stop-Loss nur auf die Seite des offenen Handels bewegt!

Hier ist grundsätzlich meine:

if (Ticket> 0)
{
if (Opn_B == true)
{
SL = Ask - TS*Point;
Ticket= OrderModify(Ticket,Price,SL,TP,0);
}
if (Opn_S == true)
{
SL = Ask + TS*Point;
Ticket= OrderModify(Ticket,Price,SL,TP,0);
}
}
 

ex_kalibur danke für die Inbox, ich werde dir mal eine E-Mail schicken.

 
ZahvatkiN:

ex_kalibur danke für die Inbox, ich werde dir mal eine E-Mail schicken.

Wie bitte?
 

Guten Abend!

Können Sie mir sagen, wie ich Daten aus einem Diagramm(Indikatorwerte) aus Metatrader 4 nach Exel exportieren kann?

Ich würde mich freuen, Hilfe und Tipps zu bekommen :)

 
Drucken wird Ihnen helfen :)
 

Liebe artmedia70, ich bin sehr dankbar, dass Sie aktiv in diesem Thread helfen, die folgenden Schriften sind vor allem an Sie gerichtet, aber wenn es mehr Profis, bitte nicht vorbei gehen und helfen, es stellte sich heraus, wie in einem Märchen, je weiter in den Wald die mehr Brennholz, als Folge der Wicklung ich eine Wand getroffen, und ich brauche wirklich Hilfe, ich hoffe, dass diese Strategie umgesetzt werden und viele Anfänger werden Erfahrungen in einer konsequenten und effektiven Programmierung zu gewinnen

Das Problem ist folgendes:

1. die Variablen "Niedrig" und "Hoch" zu finden (der Prozess der Suche nach den beiden Variablen bleibt unterschiedlich)

2. es ist notwendig, den durchschnittlichen Spread für die letzten N Ticks zu berechnen (die Variable N in der externen)

3. unter der Annahme Hoch - Niedrig > als die durchschnittliche Spreizung in k Teilen der Kanalbreite (z. B. 2/3 oder mindestens 1/3 der Kanalbreite)

(4) Sobald diese Bedingungen erfüllt sind, werden die ausstehenden Aufträge erteilt:

- über der Linie Hoch - Verkaufen

- unter dem Strich Niedrig - Bucht

Die Aufträge werden über das Raster an beide Seiten vergeben:

*Der nächstgelegene Verkaufsauftrag entspricht dem Mindestvolumen und wird nach Möglichkeit auf dem Niveau des Hochs platziert,

* Der nächste Auftrag wird in einem Abstand von High + einer bestimmten Anzahl von Punkten erteilt (zum Beispiel: High + (High - Low))

* Die Gesamtzahl der Aufträge sollte in einer externen Variablen festgelegt werden, in diesem Fall hat jeder Auftrag nicht das gleiche Volumen (z.B. der erste 0,1, der zweite 0,2, der dritte 0,3 usw. Hier gehen wir von verschiedenen Methoden der Erhöhung der Volumina in arithmetischer Progression oder in geometrischer Progression aus, wir werden hier später entscheiden, bzw. dieser Block sollte zu einer separaten Funktion gemacht werden)

* StopLoss wird wie folgt ausgesetzt: in den externen Einstellungen geben wir den gewünschten SL an, dann entspricht der erste SL (es ist der kleinste) dem StopLoss (aus den Einstellungen), jeder nachfolgende StopLoss entspricht dem gleichen Wert wie der erste (für 0,1 = 60 Punkte, für 0,2 = 40 Punkte), d.h. im Falle des Auslösens eines StopLoss bei der kleinsten Order werden alle Orders auf einmal geschlossen

* Take Profit ist gleich (High -Low)* Punkt + Eröffnungskurs

*Marktabschlussbedingungen:

offene Bucht.

Wenn die Order im Gewinn ist, das High-Niveau sich geändert hat und niedriger als der vorherige Wert geworden ist, Bid>= High, StopLewel erlaubt das Schließen der Order, dann werden alle offenen Orders des Typs Bay geschlossen, beginnend mit dem größten Volumen unseres Instruments

*Bedingungen für die Öffnung je nach Markt:

wenn Bay ==0, und gleichzeitig Bid < Low und gleichzeitig Ask < High + durchschnittlicher Spread, dann eröffnen wir mit dem minimal erlaubten Volumen und löschen die Pending Order dieses Typs mit dem minimalen Volumen (wenn die Bedingungen es erlauben)

Wenn während des Handels eine neue schwebende Order mit einem größeren Wert als die erste eröffnet und zum gleichen Schlusskurs geschlossen wird, eröffnen wir eine neue schwebende Order mit dem gleichen Volumen zum gleichen Kurs, der geschlossen wurde (wenn die Bedingungen es erlauben), und wenn es nicht möglich ist, eine schwebende Order zu platzieren, und nachdem die letzte Order geschlossen wurde, kreuzt der Kurs wieder den Eröffnungskurs der letzten geschlossenen Order, dann

wir gehen mit dem gleichen Volumen und zum gleichen Preis mit + Slippage zurück auf den Markt

* Nachdem der erste Auftrag (es ist der Auftrag mit dem Mindestvolumen) geschlossen wurde, werden alle ausstehenden Kaufaufträge gelöscht, es wird davon ausgegangen, dass es keine weiteren offenen Aufträge mehr geben sollte, dann wird der Auftrag neu berechnet und das Raster wird neu geworfen.

* Die ganze Zeit über werden offene Aufträge für die entgegengesetzte Auftragsart berechnet bzw. es wird ein Gitter mit der entgegengesetzten Auftragsart geworfen.

* Die Eröffnung von Gegenaufträgen ist nicht erlaubt, solange der erste Auftrag (mit dem Mindestvolumen) offen ist.

5. Berechnung des Losvolumens, das in den Einstellungen entweder fest oder prozentual erlaubt ist:

Wenn alle Aufträge ein festes Volumen haben - alle Aufträge mit einem festen Volumen

-mit fest - das Gesamtvolumen aller Aufträge im Falle der Schließung des Gitters (der Serie) durch einen Stop-Loss, sollte den zulässigen Verlust in % nicht überschreiten.

werden die Volumina in der Reihenfolge berechnet, dass das maximale Volumen das am weitesten vom aktuellen Kurs entfernte und mit dem minimalen Stoploss ist und die dem Kurs am nächsten liegenden Volumina die minimalen sind (

Die Beispielserien 0.1\0.2\0.3\0.4\0.5 sehen wie folgt aus - wenn wir genug Geld haben und der %-Wert es erlaubt, in dieser Reihenfolge zu öffnen

Serie 0.1\0.1\0.1\0.2\0.3 - in diesem Fall haben wir nicht genug Geld für die ganze Serie

6. Block zur Berechnung der Mindesteinlage

*hier erfolgt die Berechnung des möglichen Maximalverlustes auf der Grundlage der Werte der Variablen High,Low es wird davon ausgegangen, dass alle schwebenden Orders eröffnet werden und bei Stop Loss geschlossen werden, dementsprechend sollte der angegebene Verlust einen gewissen Prozentsatz der Einlage ausmachen, worüber der Trader nach den Berechnungen eine Meldung erhält:

"Bei dem gewählten Risikoprozentsatz erleiden Sie einen Verlust von ..., wenn die Aufträge durch einen Stop-Loss geschlossen werden",

oder "es ist nicht genug Geld vorhanden, um eine Stop-Serie zu implementieren, der Expert Advisor funktioniert nicht".

7. Ich habe nur eine Funktion: Ich möchte den Überblick über die Ereignisse behalten, informativ, ich möchte Fehler sehen, als ob sie in einem Buch stünden.

8. und wahrscheinlich die letzte, irgendeine "Schaltfläche" oder eine spezielle Funktion, die, wenn Sie darauf klicken (oder die Einstellungen ändern), alle ausstehenden Aufträge des entgegengesetzten Typs von der Eröffnung (wenn der Markt ist kaufen, dann alle entfernt werden) gelöscht werden, und der Experte arbeitet, bis die Serie geschlossen ist

Ich möchte Sie bitten, ein Programm nach der Buchstruktur https://book.mql4.com/ru/build/index zu schreiben .

um dies in diesem Beitrag zu tun, werde ich alle Dateien aus dem Buch anhängen, und in jeder dieser Dateien wird die Arbeit beginnen, nach Abschluss jeder einzelnen Datei wird gespeichert und auch an die Öffentlichkeit, nach Abschluss der Codierung Programm wird auch auf diesem Forum veröffentlicht werden

Ich warne Sie gleich, dass diese Idee ist ausschließlich kognitiven, pädagogischen Charakter, und garantiert nicht, dass nach Abschluss der Experte profitabel sein wird, betrifft es alle Polypen, die Tage und Stunden auf der Suche nach Grals zu verbringen, und wollen einen anderen Arsch ein Igel )))) zerquetschen

Mein persönliches Ziel bei Abschluss der Programmierung ist es, zu lernen, in dieser Struktur zu programmieren, d.h. mit allen Regeln: Kommentare, einzelne Funktionen, externe Dateien, Arbeit mit den Bibliotheken und so weiter.

 

Die 1. Stufe ist sehr wichtig, ich denke, sie ist sogar grundlegend, es ist eine korrekt formulierte Aufgabenstellung, zugänglich, so dass der Programmierer versteht, was von ihm verlangt wird

Ich warte also auf Kommentare zu meiner Skizze, lass uns eine korrekte ToR schreiben und dann geht's los

Grund der Beschwerde: