Wie programmiert man? - Seite 270

 

IndicatorCounted und Synchronisierung des Indikatorpuffers.

Hallo,

Meine Frage ist über die Verschiebung des Puffers in benutzerdefinierten Indikator. Ich fragte in einem anderen Forum, aber ohne Erfolg.

Z.B.:

Code:

#define MAX_LOOK_BACK 5

#property indicator_minimum 0

#property indicator_maximum 100

#property indicator_color1 DodgerBlue

#property indicator_separate_window

double rsiBuf[];

int start()

{

int limit;

int counted_bars = IndicatorCounted();

//---- check for possible errors

if(counted_bars < 0)

return(-1);

//---- the last counted bar will be recounted

if(counted_bars > 0)

counted_bars--;

limit=Bars-counted_bars;

//---- main loop

Print("indicator limit: ", limit);

if(MAX_LOOK_BACK < limit)

limit = MAX_LOOK_BACK;

//Calculate from right to left

for(int i = 0; i < limit; i++)

{

rsiBuf = iRSI(Symbol(), NULL, 14, PRICE_CLOSE, i);

}

}

Während der Indikator läuft, werden die letzten RSI-Werte der letzten 5 Bars berechnet. (Ich habe ein MAXLOOK_BACK maximalen Wert für einfache Tests) Wenn zum Beispiel in einer Situation, die Grenze==2 (und Grenze==2 passiert viel in meinen Tests beim Aufruf über iCustom in einem EA), dann wird es berechnen bar 0 und bar 1 Werte und schreiben in RSI[0] und RSI[1] jeweils und wird nicht berühren den Rest des Puffers. Jeder benutzerdefinierte Indikator, den ich gesehen habe, ist auf diese Weise geschrieben. Sollten wir den Puffer nicht verschieben, wenn das Limit < MAX_LOOK_BACK ist, da es den RSI[0] und RSI[1] überschreibt, aber die vorherigen Werte dieser Elemente sollten in RSI[2] und RSI[3] sein, habe ich Recht?

Zur Veranschaulichung:

Tick=0 AND limit = 5 ==> RSI[0] = 33.33 RSI[1] =44,44 RSI[2]=55,55 RSI[3]=66,66 RSI[4] = 77.77

Nehmen wir nun an, dass die letzten 2 RSI-Werte 88,88 und 99,99 sind und das Array wie folgt aussehen wird:

Tick=1 AND limit = 2 ==> RSI[0] = 88,88 RSI[1] =99.99 RSI[2]=55,55 RSI[3]=66,66 RSI[4] = 77.77

ABER sollte es nicht so sein:

Tick=1 AND limit = 2 ==> RSI[0] = 88,88 RSI[1] =99.99 RSI[2]=33,33 RSI[3]=44,44 RSI[4] = 55.55

Wenn 2 neue Balken kommen, sollten wir dann nicht die Werte der vorherigen Balken um 2 verschieben? previousWarum sind alle Indikatoren so geschrieben und es gibt keine Verschiebung der Werte. Und warum sie Trendlinien korrekt zeichnen.

 

Ich arbeite an einem EA, der das Keltner-Band verwendet, um eine Position zu beenden (sowohl für Gewinn und Verlust) jedoch jedes Mal, wenn ich Durchschnitt nach unten mit 2 Lose der EA ignoriert den ersten Eintrag. Gibt es eine Lösung für diese BESIDES Eingabe mit einem neuen Chart? Vielen Dank

Dateien:
 
mezarashii:
Ich arbeite an einem EA, der das Keltner-Band verwendet, um eine Position zu beenden (sowohl für Gewinn und Verlust) jedoch jedes Mal, wenn ich Durchschnitt nach unten mit 2 Lose der EA ignoriert den ersten Eintrag. Gibt es eine Lösung für diese BESIDES Eingabe mit einem neuen Diagramm? Vielen Dank

Posten Sie den EA hier.

 

Der Programmierer hat mir den Quellcode noch nicht zur Verfügung gestellt, aber ich hoffe, dass er für sich selbst nützlich sein wird. Jedes Feedback ist sehr willkommen.

Dateien:
 

Bedingtes Löschen in der Schwebe

Ich bin auf der Suche nach einem Skript oder Code zum bedingten Löschen in der Schwebe.

Im Grunde möchte ich in der Lage sein, auszuführen:

IF Ask ist 200MA H1

Alle schwebenden Aufträge unterhalb der 200MA offen/lebendig halten

Irgendwelche Ideen?

 
 
 

Wöchentliche Eröffnungskurse für 10 Paare gleichzeitig abrufen

Hallo, ich bin neu bei MT4. Ich versuche, meine Technik zu automatisieren, indem ich ein Skript schreibe, um gleichzeitig auf die wöchentlichen Eröffnungskurse von 10 Paaren zuzugreifen. Ich kann keinen einzelnen EA oder ein Skript verwenden, um auf ein Wochenchart einzeln zuzugreifen. Kann mir jemand einen Rat geben, wie ich das am besten machen kann? Vielen Dank .....

 
novalight:
Hallo, ich bin neu bei MT4. Ich versuche, meine Technik zu automatisieren, indem ich ein Skript schreibe, um auf die wöchentlichen Eröffnungskurse von 10 Paaren gleichzeitig zuzugreifen. Ich kann keinen einzelnen EA oder ein Skript verwenden, um auf ein Wochenchart einzeln zuzugreifen. Kann mir jemand einen Rat geben, wie ich das am besten machen kann? Vielen Dank .....

Hallo,

Sie müssen die Funktion iOpen kombinieren.

Nehmen wir zum Beispiel an, dass Sie in einem Kommentar die offenen Kurse von gbpusd, eurusd und usdjpy anzeigen möchten

dann würde das Codeschnipsel wie folgt aussehen:

double openPair1 = iOpen("EURUSD",PERIOD_W1,0);

double openPair2 = iOpen("GBPUSD",PERIOD_W1,0);

double openPair3 = iOpen("USDJPY",PERIOD_W1,0);

Comment("EURUSD weekly open: "+openPair1+\nGBPUSD weekly open: "+openPair1+"\nUSDJPY weekly open: "+openPair1);

 

Ich ziehe es vor, die Paare als Eingabe zusammen mit 2 zusätzlichen Eingaben zu haben.

Die Präfix- und Suffix-Eingaben vermeiden den Ärger, wenn Makler dem Basis-Paar-Namen etwas hinzufügen.

externer string pair_preffix = "";

extern string pair_suffix = ""; // Eingabe m für IBFX-Mini-Konten

extern string pair1 = "EURUSD;

externer string pair2 = "GBPUSD";

externer string pair3 = "USDJPY";

string meinPaar1, meinPaar2, meinPaar3;

int init()

{

myPair1 = pair_prefix + pair1 + pair_suffix;

myPair2 = pair_prefix + pair2 + pair_suffix;

myPair3 = pair_prefix + pair3 + pair_suffix;

return(0);

}

int start()

{

double openPair1 = iOpen(meinPaar1, PERIOD_W1,0);

double openPair2 = iOpen(meinPaar2, PERIOD_W1,0);

double openPair3 = iOpen(meinPaar3, PERIOD_W1,0);

Comment(pair1 + "weekly open: "+openPair1+"\n" + pair2 + " weekly open: "+openPair2+"\n" + pair3 " " weekly open: "+openPair3);

}

Natürlich würde ich dafür Arrays verwenden, wenn ich 10 Paare verwende.

Robert Hill alias MrPip

Grund der Beschwerde: