ICustom-Funktion - Seite 20

 
Jeeves:
Könnte mich jemand von meinem Elend befreien und das untenstehende Material überarbeiten, um die Verwendung des 'Advanced_ADX' Indikators zu ermöglichen? Ich weiß, dass es die Verwendung der Funktion 'icustom' erfordert, aber ich habe keine Ahnung, wie man das macht.

//h1-Daten

double h1adm = iadm(NULL,PERIOD_H1,2,MODE_CLOSE);

//h4-Daten

double h4adx = iadx(NULL,PERIOD_H4,2,MODE_CLOSE);

//d1 Daten

double d1adx = iadx(NULL,PERIOD_D1,2,MODE_CLOSE);

//Farbe definieren

Farbe color_h1, color_h4, color_d1;

//String definieren

string arrow_h1, arrow_h4, arrow_d1;

//h1 Aufwärtstrend

if (h1adx < Bid ) { color_h1 = ColorUpGood; }

//h1 Abwärtstrend

wenn (h1adx > Bid ) { color_h1 = ColorDownGood; }

//h4 Aufwärtstrend

if (h4adx < Bid ) { color_h4 = ColorUpGood; }

//h4 Abwärtstrend

wenn (h4adx > Bid ) { color_h4 = ColorDownGood; }

//d1 Aufwärtstrend

if (d1adx < Bid ) { color_d1 = ColorUpGood; }

//d1 Abwärtstrend

if (d1adx > Bid ) { color_d1 = ColorDownGood; }

Verwenden Sie etwas wie dieses :

double h1adp=iADX(NULL,PERIOD_H1,ADXPeriod,PRICE_CLOSE,MODE_PLUSDI, 0);

double h1adm=iADX(NULL,PERIOD_H1,ADXPeriod,PRICE_CLOSE,MODE_MINUSDI,0);

if (h1adp > h1adm ) { color_h1 = ColorUpGood; }

if (h1adp < h1adm ) { color_h1 = ColorDownGood; }

und machen Sie das für alle Zeitrahmen, die Sie testen wollen (Sie könnten die 0 am Ende durch eine andere Zahl ersetzen - 0 => aktueller Balken, 1 => erster geschlossener Balken und so weiter)

 

Programmierung Probleme 2 Fragen pls Hilfe (Log-Dateien)(Custom Indicator/ Standard Ind

Hallo ich hoffe ich finde jemanden der mir helfen kann dieses Problem zu lösen, ich wäre sehr dankbar dafür

  • Ausgangssituation:
  • Wir haben einen Multikanal-Filterindikator entwickelt, der auf den Berechnungen verschiedener Standardindikatoren von Metatrader basiert.

    Dieser Indikator sollte in unserem Expert Advisor verwendet werden. Die Herausforderung ist,

    dass alle Berechnungen, die auf diesen Standardindikatoren basieren, bei jedem Tick unzählige Log-Einträge verursachen.

    Dadurch werden unsere Trades verzögert.

    Ist es möglich, die Log-Einträge zu vermeiden?

  • Unser Versuch, das Problem zu lösen:

Wir haben benutzerdefinierte Indikatoren wie die Standardindikatoren programmiert. Wir haben versucht, die von den verschiedenen Indikatoren verwendete Standardkursberechnung zu ändern. Aber das bringt nicht das gewünschte Ergebnis.

Bei Verwendung der Standard-Kursberechnung liefert der Standard-Indikator das gleiche Ergebnis wie der benutzerdefinierte Indikator. Aber eine Änderung der Kursberechnung

zu Unterschieden zwischen dem benutzerdefinierten Indikator und dem entsprechenden Standardindikator führen?

Ist es möglich, benutzerdefinierte Indikatoren zu erhalten, die sich genau wie die Standardindikatoren verhalten (unabhängig davon, welche Kursberechnung gewählt wird)?

 
spongebozz:
Hallo, ich hoffe, ich kann jemanden finden, der mir bei der Lösung dieses Problems helfen kann, ich wäre sehr dankbar
  • Ausgangssituation:
  • Wir haben einen Multikanal-Filterindikator entwickelt, der auf den Berechnungen verschiedener Standardindikatoren aus Metatrader basiert.

    Dieser Indikator sollte in unserem Expert Advisor eingesetzt werden. Die Herausforderung ist,

    dass alle Berechnungen, die auf diesen Standardindikatoren basieren, bei jedem Tick unzählige Log-Einträge verursachen.

    Dadurch werden unsere Trades verzögert.

    Ist es möglich, die Log-Einträge zu vermeiden?

  • Unser Versuch, das Problem zu lösen:

Wir haben benutzerdefinierte Indikatoren wie die Standardindikatoren programmiert. Wir haben versucht, die von den verschiedenen Indikatoren verwendete Standardkursberechnung zu ändern. Aber das bringt nicht das gewünschte Ergebnis.

Bei Verwendung der Standard-Kursberechnung liefert der Standard-Indikator das gleiche Ergebnis wie der benutzerdefinierte Indikator. Aber eine Änderung der Kursberechnung

zu Unterschieden in Bezug auf den benutzerdefinierten Indikator und den entsprechenden Standardindikator?

Ist es möglich, benutzerdefinierte Indikatoren zu erhalten, die sich genau wie die Standardindikatoren verhalten (unabhängig davon, welche Kursberechnung gewählt wurde)?

Hallo Spongebozz,

Dies ist für den ersten Teil Ihrer Fragen... bezüglich der zu großen Protokolle und der Verlangsamung Ihres Systems...

Die Protokolle werden höchstwahrscheinlich von PRINT-Anweisungen erstellt... zu viele davon... entweder in Ihren EAs und/oder Ihren Indikatoren...

Sie können die PRINT-Anweisungen entfernen oder ausblenden, indem Sie 2 rechte (//) Schrägstriche vor jede PRINT-Anweisung setzen, die Sie nicht in das Protokoll drucken möchten.

Beispiel:

// Print("Dies ist ein Beispiel"); Das // löscht die Codezeile und druckt nicht in das Protokoll...

Wenn Sie... ALLE... PRINT-Anweisungen ausblenden wollen... können Sie eine Suche/Ersetzung durchführen...

Suchen: Drucken

Ersetzen: // Drucken

Der Typ des Indikators - Standard oder benutzerdefiniert - sollte keine Rolle spielen...

Es ist nur wichtig, wenn es viele PRINT-Anweisungen gibt, die Sie entfernen oder ausblenden müssen...

Und später können Sie jederzeit zurückgehen und die gewünschten PRINT-Anweisungen ausblenden... und die anderen ausblenden oder ganz löschen.

Ich hoffe, das hilft Ihnen,

Robert

 

Hallo Leute!

Ich mache einen EA für binäre Optionen und wollen "Signale" von einem Indikator in meinem EA empfangen werden. Wie Sie wahrscheinlich wissen, binäre Optionen nur ein PUT oder ein CALL, so dass ich iCustom, um nur auf meinen Indikator zu hören und die Puts und Calls in meinem EA. Macht das Sinn?

Also, was muss ich tun?

In der indi muss ich nur etwas wie dieses setzen:

// PUT

if (AlignsForAput == true){

PutBuffer[] = 1;

}

// CALL

if (AlignsForAcall == true){

CallBuffer[] = 1;

}

PutBuffer[] = 0;

CallBuffer[] = 0;

Bitte helfen Sie mir, ein gutes Beispiel zu schreiben, wie man dies funktioniert. Was muss ich schreiben und WO muss ich es schreiben?

Vielen Dank!

 

Ich wäre wirklich dankbar, wenn jemand ein einfaches Beispiel schreiben könnte, wie der Indi-Code und der EA-Code aussehen sollten! Bitte siehe oben über meine Frage.

 
SantaClaus:
Ich wäre wirklich dankbar, wenn jemand ein einfaches Beispiel dafür schreiben könnte, wie der Indi-Code und der EA-Code aussehen sollten! Siehe oben zu meiner Frage.

Für Indikatoren siehe dies: https: //www.mql5.com/en/forum/173032 und dies https://www.mql5.com/en/forum/173054

Für EAs siehe dies: https: //www.mql5.com/en/forum/173136 und dies: https: //www.mql5.com/en/forum/173171

 

Sie sagen mir also, dass es gute Beispiele gibt, wie man iCustom für den oben genannten Zweck verwenden kann?

 
SantaClaus:
Sie wollen mir also sagen, dass es dort gute Beispiele gibt, wie man iCustom für den oben genannten Zweck verwenden kann?

Ja, das ist genau das, was ich sage (Sie fragten nach "ein einfaches Beispiel, wie der indi-Code und der EA-Code aussehen sollte" - diese Threads können Ihnen helfen)

 
mladen:
Ja, das ist genau das, was ich sage (Sie fragten nach "ein einfaches Beispiel, wie der indi-Code und der EA-Code aussehen sollte" - diese Threads können Ihnen helfen)

Nope, keiner der Links erklärt, wie ich iCustom verwenden, wie ich in meiner ersten Frage möchte.

 
SantaClaus:
Nein, keiner der Links erklärt, wie ich iCustom verwende, wie ich es in meiner ersten Frage möchte.

Sie posten in einem Thread, in dem ausführlich erklärt wird, wie man iCostom() verwendet (Sie müssen nur auf die erste Seite dieses Threads gehen), und Sie können nicht herausfinden, wie man das macht?

Hier ist eine kurze Version :

_________________________

iCustom

Berechnet den angegebenen benutzerdefinierten Indikator und gibt seinen Wert zurück.

[TABLE] double iCustom(

string symbol, // Symbol

int Zeitrahmen, // Zeitrahmen

string name, // Pfad/Name des kompilierten Programms für den benutzerdefinierten Indikator

... // Eingabeparameter für den benutzerdefinierten Indikator (falls erforderlich)

int mode, // Zeilenindex

int shift// Verschiebung

);[/TD]

[/TR]

[/TABLE]

Parameter

Symbol

Name des Symbols, für dessen Daten der Indikator berechnet wird. NULL bedeutet das aktuelle Symbol.

Zeitrahmen

Zeitrahmen. Kann einer der Aufzählungswerte von ENUM_TIMEFRAMES sein. 0 bedeutet den aktuellen Chart-Zeitrahmen.

Name

Name des kompilierten Programms des benutzerdefinierten Indikators, relativ zum Stammverzeichnis der Indikatoren (MQL4/Indicators/). Befindet sich der Indikator in einem Unterverzeichnis, z.B. in MQL4/Indicators/Examples, muss sein Name als"Examples\\indicator_name" angegeben werden (ein doppelter Backslash "\\" muss als Trennzeichen anstelle eines einzelnen angegeben werden).

...

Benutzerdefinierte Indikator-Eingabe-Parameter, getrennt durch Kommas.

Die übergebenen Parameter und ihre Reihenfolge müssen mit der Deklarationsreihenfolge und dem Typ der externen Variablen des benutzerdefinierten Indikators übereinstimmen. Wenn die Werte der Eingabeparameter nicht angegeben sind, werden die Standardwerte verwendet.

Modus

Zeilenindex. Kann von 0 bis 7 sein und muss mit dem Index übereinstimmen, der beim Aufruf der Funktion SetIndexBuffer() angegeben wurde.

Verschiebung

Index des Wertes, der aus dem Indikatorpuffer entnommen wurde (Verschiebung relativ zum aktuellen Balken um die angegebene Anzahl von Perioden zurück).

Zurückgegebener Wert

Numerischer Wert des angegebenen benutzerdefinierten Indikators. Der benutzerdefinierte Indikator muss kompiliert sein (*.EX4-Datei) und sich im Verzeichnis terminal_directory\MQL4\Indicators\ befinden.

Beispiel:

[TABLE]

[TR]

[TD] double val=iCustom(NULL,0,"SampleInd",13,1,0); [/TABLE]

_________________________

PS: Der "Zeilenindex. Can be from 0 to 7" ist der Fehler, den Metatrader immer noch in seiner Dokumentation hat (es sollte "Line index. Can be from 0 to 511" sein), aber solange sie ihre Dokumentation nicht offiziell ändern, werde ich mich an ihre Definition der iCustom() Funktion halten

Viel Spaß beim Kodieren