Wie programmiert man? - Seite 7

 

Meines Erachtens ist es am besten/einfachsten, wenn Sie, wie Sie gesagt haben, den vorherigen Balken betrachten. Vielleicht kommen Sie zu spät, vielleicht auch nicht. Ich meine Folgendes:

Die Funktion Start() verarbeitet jeden Tick. MT4 verarbeitet von Haus aus nur die Zeit nach einem Tick. Das bedeutet, dass ein neuer Balken nicht vor dem ersten Tick dieses neuen Balkens auf Ihrem Chart erscheint. Wenn Sie sich also dem Ende eines Balkens nähern und Ihr Alarm nach jedem Tick ausgelöst wird (die lästige Methode), erhalten Sie einen Alarm beim letzten Tick des Balkens. Wenn Sie den vorherigen Balken für Ihren Alarm heranziehen (die nicht lästige Art), erhalten Sie einen Alarm beim ersten Tick des neuen Balkens.

Während der Stunden mit viel Marktaktivität kann der erste Tick des neuen Balkens also unmittelbar nach dem Schließen des vorherigen Balkens erfolgen (basierend auf der Zeit). In ruhigen Marktzeiten kann es 20-30 Sekunden dauern, bis ein neuer Tick eintrifft, und MT 4 zeigt Ihnen den neuen Balken erst an, wenn Sie den ersten Tick erhalten.

Ich hoffe, das ist klar.

Keris

 

Benötige Hilfe bei der Programmierung der "Volatility Stop Entry Technique".

Der Volatilitätsstopp berechnet die Volatilität anhand der durchschnittlichen Spanne des Kursbalkens. Sie wird berechnet, indem die durchschnittliche Spanne mit einer Konstante multipliziert wird. Der Wert wird zum niedrigsten Schlusskurs addiert, wenn Sie short sind, und vom höchsten Schlusskurs subtrahiert, wenn Sie long sind:

Range = (Range x (N - 1) + High - Low / N)

Short = Niedrigster Schlusskurs + Range x C

Long = Höchster Schlusskurs - Range x C

Der Volatilitäts-Stopp wird am besten in Märkten mit starken Trends eingesetzt. Es handelt sich um eine ausgezeichnete Einstiegstechnik, die in den meisten Fällen einem gültigen Trendlinienbruch oder Kanalausbruch überlegen ist. Der Reverse Stop dient auch zur Quantifizierung des Risikos in Bezug auf die Volatilität. Die Konstanten sollten zwischen 2,5 und 4,0 gehalten werden.

Ich habe keine persönlichen Erfahrungen mit diesem Indikator, aber ich habe darüber in dem Buch "Fibonacci Ratios with Pattern Recognition" gelesen.

Ich würde mich sehr freuen, wenn jemand diesen Indikator programmieren könnte.

Dateien:
v.s..bmp  962 kb
 
 

Igorad, vielen Dank, der Volty Channel Stop war genau das, wonach ich gesucht habe.

 

Bitte helfen Sie mit diesem Code...

Ich versuche, den Mechanismus des LSMA_in_color Indikators zu verstehen, den ich an anderer Stelle in diesem Forum gefunden habe. Der folgende Code setzt die Farbe der Liniensegmente des Indikators basierend auf den Werten in wt[]:

//========== COLOR CODING ===========================================

ExtMapBuffer3[shift] = wt[shift]; //yellow

ExtMapBuffer2[shift] = wt[shift]; //blue

ExtMapBuffer1[shift] = wt[shift]; //red

if (wt[shift+1] > wt[shift])

{

ExtMapBuffer2[shift] = EMPTY_VALUE; //turn blue off

Print ("red ",wt[shift+1]," ",wt[shift]);

}

else if (wt[shift+1] < wt[shift])

{

ExtMapBuffer1[shift] = EMPTY_VALUE; //turn red off

Print ("blue ",wt[shift+1]," ",wt[shift]);

}

else

{

ExtMapBuffer1[shift]=EMPTY_VALUE; //turn red off;

ExtMapBuffer2[shift]=EMPTY_VALUE; //turn blue off;

Print ("yellow ",wt[shift+1]," ",wt[shift]);

}

Ich habe Print()-Funktionen hinzugefügt, damit ich sehen kann, wie die tatsächlichen Werte in den drei Farbbedingungen - rot, gelb und blau - sind. Es scheint, dass die gelbe Bedingung nur dann eintritt, wenn wt[shift] == wt[shift+1] ist, aber aus irgendeinem Grund zeigt das Protokoll, wenn ich es ausführe, dass es nie die gelbe Bedingung eintritt. Jeder Protokolleintrag ist entweder rot oder blau. Im Diagramm treten eindeutig gelbe Bedingungen auf - jedes Mal, wenn es von rot zu blau oder von blau zu rot wechselt, geht es zwischendurch in gelb über... Warum werden die gelben Zustände nicht in das Protokoll geschrieben?

Wenn ich mir das Protokoll ansehe, sehe ich auch Fälle, in denen wt[shift] identisch mit wt[shift+1] ist, aber als rote Bedingung gedruckt wird. Wie kann das passieren, wenn die rote Bedingung erfordert, dass wt[shift+1] > wt[shift] ist?

Für jede Hilfe wäre ich dankbar

 

Jawohl, jede Hilfe ist willkommen.....

 

im ein echter Noob am Code, aber sieht aus wie gelb ist immer auf und entweder rot oder blau wird oben auf sie gesetzt oder jsut ersetzt es, es sei denn seine sogar in diesem Fall nichts wird oben auf gelb gezeichnet. so weit wie es noch rot, wenn sie sogar dunno sind

 

Code zur Überprüfung, ob der letzte [geschlossene] Handel ein Gewinn oder Verlust war...

Gibt es eine Methode in mql4, um zu prüfen, ob der letzte Handel einen Gewinn oder einen Verlust ergab, nachdem er geschlossen wurde?

Ich versuche OrderSelect() und OrderProfit() mit der HistoryTotal() unter Verwendung eines Arrays... aber OrderProfit scheint sich auf die 'offene Order' zu beziehen, so dass es mir nicht die gewünschten Ergebnisse liefert.

Im Durchschnitt hat mein System 5 aufeinanderfolgende Gewinne, zu 1 verlieren. Was ich tun möchte, ist, nach einem verlustreichen Handel, ich möchte die Anzahl der verwendeten Lose zu erhöhen, wie die Chancen sind der nächste Handel nach ihm wird ein Gewinn sein.

Ich muss daher überprüfen, was der letzte geschlossene Handel ergab, bevor ich die Anzahl der Lose ändere.

Für jede Hilfe wäre ich dankbar...

 
fxdk:
Gibt es in mql4 eine Methode, um zu überprüfen, ob der letzte Handel zu Gewinn oder Verlust geführt hat, nachdem er geschlossen wurde?

Ich versuche OrderSelect() und OrderProfit() mit der HistoryTotal() mit einem Array.. aber die OrderProfit scheint sich auf die "offene Bestellung", so dass es nicht geben mir die Ergebnisse im wollen.

Im Durchschnitt hat mein System 5 aufeinanderfolgende Gewinne, zu 1 verlieren. Was ich tun möchte, ist, nach einem verlustreichen Handel, ich möchte die Anzahl der verwendeten Lose zu erhöhen, wie die Chancen sind der nächste Handel nach ihm wird ein Gewinn sein.

Ich muss also prüfen, was der letzte geschlossene Handel ergeben hat, bevor ich die Anzahl der Lots ändere.

Für jede Hilfe wäre ich dankbar...

fxdk,

um den Gewinn des letzten geschlossenen Auftrags zu überprüfen, verwenden Sie diesen Code:

int total = HistoryTotal();

OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY);

Alert(OrderProfit()); //Dies ist der Gewinn oder Verlust der letzten geschlossenen Order

 
codersguru:
fxdk,

Um den Gewinn des letzten geschlossenen Auftrags zu überprüfen, verwenden Sie diesen Code:

int total = HistoryTotal();

OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY);

Alert(OrderProfit()); //Das ist der letzte geschlossene Auftrag Gewinn oder Verlust

Ich denke, dass dies nicht immer richtig ist. Ich hatte eine Diskussion mit Slawa darüber, und es scheint, dass HISTORY, wie TRADE, nicht immer nach Datum sortiert sind und von der Sortierkolonne abhängen, die Sie auf der Terminal-Registerkarte verwenden. Es ist also sicherer, die gesamte (!) Historie zu durchsuchen und die Abschlussdaten zu vergleichen; dann merkt man sich das letzte Datum, so dass man beim nächsten Mal nicht die ganze Reihe durchsuchen muss.

Grund der Beschwerde: