Fragen Sie! - Seite 169

 

Offline-Chart-Indikator

Kalenzo:
Es gibt nichts Besonderes, das Sie innerhalb des Indikators codieren müssen. Ziehen Sie den Indikator einfach per Drag & Drop von Nagivator auf den Offline-Chart und er wird funktionieren. Probieren Sie es zuerst mit normalen Daten, die mit Metatrader verfügbar sind, zum Beispiel eurusd. Wenn der Indikator auf eurusd funktioniert und auf NYSE nicht, dann bedeutet das, dass der Indikator etwas falsch zählt und korrigiert werden muss (z.B. muss er vielleicht gerundet werden oder während der Berechnungen werden Fehler wie z.B. Nullteilung erzeugt).

Hallo Kalenzo,

vielen Dank für deine Antwort. Die Indikatoren der MT4-Plattform funktionieren einwandfrei. Es ist ein benutzerdefinierter Indikator, dass eine individuelle codiert, die nicht funktionieren wird. Mir sind im Code die Währungssymbole aufgefallen. Ich habe mich gefragt, ob ich die Symbole von den Währungspaaren GBPUSD auf das NYSE-Symbol ändern muss? Ich wollte auch wissen, wie die Indikatoren funktionieren. Welche Daten in welchem Ordner tun die Indikatoren, ob die Indikatoren, die ursprünglich in der Plattform installiert wurden oder ist Sie einen kostenlosen benutzerdefinierten codierten Indikator herunterladen?

Danke!!

 
winsumloosesum:
Hallo Kalenzo,

Vielen Dank für Ihre Antwort. Die MT4-Plattform Indikatoren funktionieren gut. Es ist ein benutzerdefinierter Indikator, dass eine individuelle codiert, die nicht funktionieren wird. Ich bin in den Code der Währung Symbole bemerkt. Ich habe mich gefragt, ob ich die Symbole von den Währungspaaren GBPUSD auf das NYSE-Symbol ändern muss? Ich wollte auch wissen, wie die Indikatoren funktionieren. Welche Daten in welchem Ordner tun die Indikatoren, ob die Indikatoren, die ursprünglich in der Plattform installiert wurden oder ist Sie einen kostenlosen benutzerdefinierten codierten Indikator herunterladen?

danke!!!

Hallo!

Ja, definitiv müssen Sie Indikator-Code zu überprüfen. Wenn Ihr Indikator ist nicht mit Symbol() Funktion (oder NULL-Wert anstelle von Symbol, wo es benötigt wird), dann ist es das Problem für 100%. Normalerweise transformiert der Indikator die Daten des Charts, an den er angehängt ist, weshalb die ursprünglichen MT4-Indikatoren funktionieren. In benutzerdefinierten Indikatoren können Sie jedoch Daten von anderen Symbolen/Zeitrahmen übernehmen, und dann müssen Sie manuell angeben, welche Daten Sie verwenden möchten. Zum Beispiel können Sie EURUSD als Basis verwenden und auch GBPUSD und USDCHF als weitere Parameter für die Berechnung nutzen.

Sie müssen den Indikatorcode überprüfen und die Symbole in NYSE ändern, die Sie berechnen möchten. Dann wird er gut funktionieren.

 

Nochmals vielen Dank für Ihre Hilfe

Nochmals vielen Dank für Ihre Hilfe.

 

Problem bei der Fehlersuche

Ich schreibe eine grundlegende EA, um das Funktionieren von Indikatoren zu verstehen, aber ich hatte einige Überraschung. Zuerst mit dem Repainting-Indikator und jetzt mit einem sehr einfachen Indikator.

Um die Zahlen zu verstehen, benutze ich eine print()-Funktion, um die Werte im Log-Report während eines Backtests zu drucken. Aber die Druckfunktion scheint den Logdruck zu stören und ich verliere einen großen Teil des Logs. Wenn ich den Druck entferne, ist das Log komplett mit allen Aufträgen!

Irgendeine Idee? Hier ein Auszug aus meinem Code

//----+ SIGNALE FÜR TRADES DEFINIEREN

if (kline[1] < Level_Up) // unter Schwellenwert

if (kline[0] > dline[0]) // Main Over Signal

if (kline[0] > kline[1]) // Main muss nach oben gehen

if (dline[0] > 0 ) { //Signal muss auf Nullniveau bleiben < dline[1]) { // Vorheriger Main unter Signal, so dass wir nach oben gekreuzt haben

BUY_Sign = true;

if (Debug) {

Print ("Longopen K0 ",DoubleToStr(kline[0],Digits)," K1 ",DoubleToStr(kline[1],Digits),

" K2 ",DoubleToStr(kline[2],Digits), "K3 ",DoubleToStr(kline[3],Digits));

Print (" D0 ",DoubleToStr(dline[0],Digits)," D1 ",DoubleToStr(dline[1],Digits)," D2 ",DoubleToStr(dline[2],Digits),

" D3 ",DoubleToStr(dZeile[3],Ziffern));

}

}

Danke für die Hilfe

Marcel

 

Bitte helfen Sie!! Ich bin kein Coder, aber Im versuchen mein Bestes hier. Jeder Ratschlag, warum mein Indikator nicht funktioniert, würde sehr geschätzt werden!!

Vielen Dank im Voraus

#Eigenschaft indicator_separate_window

#Eigenschaft indicator_buffers 4

#Eigenschaft indicator_color1 LimeGreen

#property indicator_color2 FireBrick

#Eigenschaft indicator_color3 Grün

#eigenschaft indicator_color4 Rot

#Eigenschaft indicator_width1 2

#Eigenschaft indicator_width2 2

#Eigenschaft indicator_width3 2

#Eigenschaft indicator_width4 2

//---------------------------------------------------------------------indicator parameters

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalSMA=9;

//---------------------------------------------------------------------indicator buffers

double OsmaBuffer[];

double Spm;

double Smm;

double Spmaks1;

double Spmaks2;

double Smmin1;

double Smmin2;

double nou[];

double ver[];

double OsMAUP[];

double OsMADOWN[];

//+------------------------------------------------------------------+

//| Benutzerdefinierte Indikator-Initialisierungsfunktion |

//+------------------------------------------------------------------+

int init()

{

//--------------------------------------------------------------------2 zusätzliche Puffer werden für die Zählung verwendet.

IndicatorBuffers(4);

//--------------------------------------------------------------------drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexPuffer(0,OsMAUP);

SetIndexStil(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,OsMADOWN);

SetIndexStyle(2,DRAW_ARROW);

SetIndexArrow(2,159);

SetIndexBuffer(2,Spmaks1);

SetIndexStyle(3,DRAW_ARROW);

SetIndexArrow(3,159);

SetIndexBuffer(3,Smmin1);

SetIndexDrawBegin(0,SignalSMA);

IndicatorDigits(Digits+2);

//-------------------------------------------------------------------Name für das Datenfenster und die Bezeichnung des Indikator-Unterfensters

IndicatorShortName("OsMA Marius("+FastEMA+", "+SlowEMA+", "+SignalSMA+")");

//-------------------------------------------------------------------initialization done

return(0);

}

//+------------------------------------------------------------------+

//| Gleitender Durchschnitt des Oszillators |

//+------------------------------------------------------------------+

int start()

{

int limit;

int counted_bars=IndicatorCounted();

//------------------------------------------------------------------- letzte gezählte Balken wird neu gezählt

if(gezählte_Balken>0) gezählte_Balken--;

limit=Balken-gezählt_Balken;

//-------------------------------------------------------------------Main Loop

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

{

OsmaBuffer=iOsMA(NULL,0,FastEMA,SlowEMA,SignalSMA,PRICE_WEIGHTED,i);

nou = OsmaBuffer;

ver = OsmaBuffer;

if(OsmaBuffer > 0)

{

OsMAUP = OsmaBuffer;

OsMADOWN = 0;

}

sonst

{

OsMADOWN = OsmaBuffer;

OsMAUP = 0;

}

//-------------------------------------------------------------------Cross Down

if ((nou0))

{

Spmaks1 = Spmaks2;

if(Spmaks2 > 0)

{

Spmaks2 = 0;

}

}

//-------------------------------------------------------------------Cross Up

if ((nou>0)&&(ver<0))

{

Smmin1 = Smmin2;

if(Smmin2 < 0)

{

Smmin2 = 0;

}

}

//-------------------------------------------------------------------During Swing

if(ver > 0)

{

Spm = ver;

if((nou > ver) || (nou == ver))

{

Spm = nou;

}

if((Spm > Spmaks2) || (Spm == Spmaks2))

{

Spmaks2 = Spm;

}

}

sonst

{

Smm = ver;

if((nou < ver) || (nou == ver))

{

Smm = nou;

}

if((Smm < Smmin2) || (Smm == Smmin2))

{

Smmin2 = Smm;

}

}

}

//--------------------------------------------------------------------done

return(0);

}

//+------------------------------------------------------------------+

 

Wie kann man die Linie zwischen den letzten 20 Balken ziehen?

Ich habe eine Frage!

Ich möchte einen Indikator über den gleitenden Durchschnitt haben.

Er zeichnet immer die Linie zwischen den letzten 20 Balken.

Aber ich weiß nicht, wie ich ihn schreiben soll.

Ich hoffe Sie können mir helfen und einen solchen Indikator anbieten.

Danke vielmals!

 

Frieden an alle,

Ich hoffe, es geht allen gut.

Meine Frage ist eine ziemlich einfache Frage für diejenigen, die im Bereich der Programmierung qualifiziert sind:

Ich hatte eine e.a. professionell für mich erstellt, mit 3 Indikatoren in ihrem Rohzustand. Es handelt sich um ein 4-Strategie-System, das in einer E.A. kodiert ist, wobei die 3 Indikatoren in verschiedenen Kombinationen gehandelt werden. Nur eine kleine Geschichte, aber dieser Teil ist eigentlich irrelevant.

Die 3 Indikatoren verwenden alle jeweils zwei Puffer und die einzige Variable, die sie alle hatten, war "CountBars". Da sie sich in einem Zustand befanden, in dem sie nicht optimierbar waren, da die einzige einstellbare Option "CountBars" war, hatte ich die glänzende Idee, Juriks Algorithmus als eine Art Vorverarbeitung zu verwenden. Auf diese Weise könnte ich den Indikator im Rohzustand belassen, d.h. er reagiert schnell, aber mit einigen "Schluckaufs", während ich einen Glättungsfaktor hinzufüge, der immer noch sehr reaktionsschnell ist und gleichzeitig eine geringe Verzögerung aufweist. Also bat ich ein bekanntes Mitglied dieses Boards, mich bei diesem Teil des Projekts zu unterstützen, was sie auch taten, und zwar ziemlich fehlerfrei, wie ich hinzufügen möchte. Da sie jedoch über ihre Pflicht hinausgingen, wollte ich sie nicht bitten, mir noch mehr Gefallen zu tun, d.h. die neuen geglätteten Jurik-Versionen der gleichen Indikatoren anstelle ihrer rohen Untergebenen einzutauschen.

Trotzdem dachte ich mir: "Das kann doch nicht so schwer sein", und ich dachte, ich wüsste genug, um es selbst zu tun. Ändern Sie einfach die Namen, die in den 3 iCustom Instanzen aufgerufen werden, fügen Sie die neuen Variablen in "extern" Teil sowie unten in der iCustoms Teil, (Jetzt die JRK smthd vers der Indikatoren noch 2 Puffer verwenden, aber sie haben eine zusätzliche Variable, 2 insgesamt: "SmoothLength" und "SmoothPhase". "CountBars" wurde entfernt.) und Voila!! Wenn es nur so einfach wäre. Ich habe diese Dinge getan und es kompiliert, keine Fehler/Warnungen. Wenn ich jedoch versuche, einen Backtest/Vorwärtstest durchzuführen, ist kein Handel möglich.....

Übersehe ich etwas? Für jeden Ratschlag bin ich sehr dankbar.

 

Bizzzzzump!

 
forex_for_life:
Ich wünsche Ihnen alles Gute,

Ich hoffe, es geht allen gut.

Meine Frage ist eine ziemlich einfache Frage für diejenigen, die im Bereich der Programmierung qualifiziert sind:

Ich hatte eine e.a. professionell für mich erstellt, mit 3 Indikatoren in ihrem Rohzustand. Es handelt sich um ein 4-Strategie-System, das in einer E.A. kodiert ist, wobei die 3 Indikatoren in verschiedenen Kombinationen gehandelt werden. Nur eine kleine Geschichte, aber dieser Teil ist eigentlich irrelevant.

Die 3 Indikatoren verwenden alle jeweils zwei Puffer und die einzige Variable, die sie alle hatten, war "CountBars". Da sie sich in einem Zustand befanden, in dem sie nicht optimierbar waren, da die einzige einstellbare Option "CountBars" war, hatte ich die glänzende Idee, Juriks Algorithmus als eine Art Vorverarbeitung zu verwenden. Auf diese Weise könnte ich den Indikator im Rohzustand belassen, d.h. er reagiert schnell, aber mit einigen "Schluckaufs", während ich einen Glättungsfaktor hinzufüge, der immer noch sehr reaktionsschnell ist und gleichzeitig eine geringe Verzögerung aufweist. Also bat ich ein bekanntes Mitglied dieses Forums, mir bei diesem Teil des Projekts zu helfen, was sie auch taten, und zwar ziemlich fehlerfrei, wie ich hinzufügen möchte. Da sie jedoch über ihre Pflicht hinausgingen, wollte ich sie nicht bitten, mir noch mehr Gefallen zu tun, d.h. die neuen geglätteten Jurik-Versionen der gleichen Indikatoren anstelle ihrer rohen Untergebenen einzutauschen.

Trotzdem dachte ich mir: "Das kann doch nicht so schwer sein", und ich dachte, ich wüsste genug, um es selbst zu tun. Ändern Sie einfach die Namen, die in den 3 iCustom Instanzen aufgerufen werden, fügen Sie die neuen Variablen in "extern" Teil sowie unten in der iCustoms Teil, (Jetzt die JRK smthd vers der Indikatoren noch 2 Puffer verwenden, aber sie haben eine zusätzliche Variable, 2 insgesamt: "SmoothLength" und "SmoothPhase". "CountBars" wurde entfernt.) und Voila!! Wenn es nur so einfach wäre. Ich habe diese Dinge getan und es kompiliert, keine Fehler/Warnungen. Allerdings, wenn ich versuche, Backtest/Forward-Test, kein Handel.....

Übersehe ich etwas? Für jeden Ratschlag wären wir Ihnen sehr dankbar.

Hallo Ffl,

Versuchen Sie iCustom(NULL,0," Indikatorname" SmoothLength,SmoothPhase,0,1) für buy und iCustom(NULL,0," Indikatorname" SmoothLength,SmoothPhase,1,1), für sell ändern Sie einfach den "Indikatornamen" in den Indikator, den Sie aufrufen wollen.

 
mrtools:
Hallo Ffl, versuchen Sie iCustom(NULL,0," Indikatorname" SmoothLength,SmoothPhase,0,1) für buy und iCustom(NULL,0," Indikatorname" SmoothLength,SmoothPhase,1,1), für sell ändern Sie einfach den "Indikatornamen" in den Indikator, den Sie aufrufen wollen.

Frieden Mr. T,

Danke für den Hinweis. Ich habe diese Änderungen auf der Grundlage Ihres Vorschlags vorgenommen und E.A. kompiliert immer noch ohne Fehler/Warnungen, platziert aber auch immer noch keine Trades. Ich werde in Kürze einen weiteren Workaround versuchen.....

Grund der Beschwerde: