ICustom-Funktion - Seite 10

 

Hallo, könnten Sie mir bei der Ausarbeitung dieses Experten helfen.

Basierend auf FreedomBar Indikator...

Wenn das vorhergehende Feld rot schließt -> Verkaufen (Marktpreis) -> Schließen des Handels im nächsten vorhergehenden Feld wechselt zu blau und umgekehrt zu Kaufen (Marktpreis)

Gleiches gilt für Kaufaufträge

TF, tp, sl und trailing stop Optionen wären schön.

Vielen Dank im Voraus

Dateien:
 

Jede Hilfe bitte. Ich lese aus und Indikator in einen EA mit icustom, während Backtest der Trend läuft ganz glücklich, dann aus irgendeinem Grund die icustom Parameter umkehren, so dass mein Trend geht nach oben statt nach unten, obwohl der Indikator zeigt nach unten, nachdem der Handel aktiviert ist i korrigiert sich dann passiert wieder einige Zeit später

 
increase:
Ich bitte um jede Hilfe. Ich lese von einem Indikator in einen EA mit icustom, während Backtest der Trend läuft ganz glücklich, dann aus irgendeinem Grund die icustom Parameter umkehren, so dass mein Trend geht nach oben statt nach unten, obwohl der Indikator zeigt nach unten, nachdem der Handel aktiviert ist i korrigiert sich dann passiert wieder einige Zeit später

mmm so der Indikator scheint das Problem zu sein, es ist SuperTrend volty wie aber ich habe das Problem mit anderen nicht repainting Indikatoren wie FX Sniper Ergodic und Fisher hatte.

Die Herausforderung scheint zu sein, dass es viele Male, wenn der Indikator zeigt in eine Richtung sagen, nach unten, aber der Startpunkt der Bewegung endet niedriger als das Ziel verursacht der Indikator nach unten zu zeigen, aber die Daten liest oben.

Hat jemand einen Indikator, der dies nicht tut, oder eine andere Lösung für dieses Problem?

Bitte sehen Sie das beigefügte Bild

Dateien:
pic.jpg  38 kb
 

iCustom Funktion

hallo an alle... dies ist mein erster Beitrag

ich brauche etwas Hilfe mit dem ea im versuchen zu erstellen. dieses ea wird verwendet werden, um Position auf der Grundlage der Farbe des Indikators zu schließen, aber ich werde die Position manuell öffnen. da ich nicht die decompile Version der Indikator haben, ich denke, icustom ist der Weg zu gehen.

aber wie rufe ich die Funktion auf der Grundlage der Farbe?

Z.B. wenn ich Heikin Ashi_SW benutze und ich möchte die Verkaufsposition schließen, wenn die Farbe blau ist, nachdem der Balken geschlossen wurde und umgekehrt.

Vielen Dank im Voraus

 

ICustom Probleme

Ich habe einen einfachen Custom Indicator ohne Externs namens #TestIndicator, der 8 Puffer mit der Zahl 1.0 füllt, aber wenn ich die Puffer in meinem EA zurückbringe, sind die Pufferergebnisse immer 0. Können Sie mir dabei helfen.

#TestAnzeiger

#property indicator_chart_window

#property indicator_buffers 8

double buf4_up[];

double buf4_down[];

double buf3_up[];

double buf3_down[];

double buf2_up[];

double buf2_down[];

double buf1_up[];

double buf1_down[];

int UniqueNum = 0070;

string shortname = "";

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

//| Custom indicator initialization function |

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

int init()

{

shortname = "#TFX";

IndicatorBuffers(8);

IndicatorShortName(shortname);

//---- indicators

SetIndexBuffer(0,buf4_up);

SetIndexBuffer(1,buf4_down);

SetIndexBuffer(2,buf3_up);

SetIndexBuffer(3,buf3_down);

SetIndexBuffer(4,buf2_up);

SetIndexBuffer(5,buf2_down);

SetIndexBuffer(6,buf1_up);

SetIndexBuffer(7,buf1_down);

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int limit;

int counted_bars = IndicatorCounted();

//---- the last calculated bar will be recalculated

if(counted_bars > 0)

counted_bars--;

limit = Bars - counted_bars - 1;

//---- the main cycle

for(int i = limit; i >= 0; i--)

{

//----

buf4_up=1.0;

buf4_down=1.0;

buf3_up=1.0;

buf3_down=1.0;

buf2_up=1.0;

buf2_down=1.0;

buf1_up=1.0;

buf1_down=1.0;

}

//----

//----

//----

return(0);

}

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

[/CODE]

EA Code

[CODE]

double test4_up[];

double test4_down[];

double test3_up[];

double test3_down[];

double test2_up[];

double test2_down[];

double test1_up[];

double test1_down[];

int UniqueNum = 009;

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

//| expert initialization function |

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

int init()

{

//----

Print("Inside init");

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

Print("Inside deinit");

//----

return(0);

}

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

//| expert start function |

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

int start()

{

//----

Print("Inside start");

int counted_bars=IndicatorCounted();

int y5m=0, y1h=0, y30m=0, y15m=0, yy=0;

int i=0;

int limit=Bars-counted_bars;

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

{

test4_up = iCustom(NULL, 0, "#TestIndicator",0,i);

test4_down = iCustom(NULL, 0, "#TestIndicator",1,i);

}

for(i=0;i<30;i++)

{

Print("Test 4 UP ", test4_up," Bar ",i );

Print("Test 4 DOWN ", test4_down," Bar ",i );

//Print("This is a test");

}

//----

return(0);

}

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

Ergebnisse im Tester

 
Xaun:
Ich habe einen einfachen Custom Indicator ohne Externs namens #TestIndicator, der 8 Puffer mit der Zahl 1.0 füllt, aber wenn ich die Puffer in meinem EA zurückbringe, sind die Pufferergebnisse immer 0. Können Sie mir dabei helfen.

EA-Code

double test4_up[];

double test4_down[];

double test3_up[];

double test3_down[];

double test2_up[];

double test2_down[];

double test1_up[];

double test1_down[];

int UniqueNum = 009;

..

..

...

......

..

int i=0;

int limit=Bars-counted_bars;

ArrayResize(test4_up, limit);

ArrayResize(test4_down, limit);

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

{

test4_up = iCustom(NULL, 0, "#TestIndicator",0,i);

test4_down = iCustom(NULL, 0, "#TestIndicator",1,i);

}

for(i=0;i<30;i++)

{

Print("Test 4 UP ", test4_up," Bar ",i );

Print("Test 4 DOWN ", test4_down," Bar ",i );

//Print("This is a test");

}

//----

return(0);

}

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

]

Möglicherweise müssen Sie die Größe des Arrays in Ihrem EA definieren.

 

Danke

okfar:
Möglicherweise müssen Sie die Größe des Arrays in Ihrem EA definieren.

Danke Okfar. Das war genau das Problem

 

Je nachdem, wie Sie auf Ihre Daten zugreifen, müssen Sie das Array nicht bei jedem Tick neu füllen, genauso wenig wie Sie die Indikatoren neu berechnen müssen.

bool ArraySetAsSeries(double&array[], bool set)Legt die Indizierungsrichtung des Arraysfest. Wenn der Parameter set den Wert TRUE hat, wird das Array in umgekehrter Reihenfolge indiziert, d.h. das letzte Element hat den Index Null. Der Wert FALSE legt eine Standard-Indexierungsreihenfolge fest. Die Funktion gibt den vorherigen Zustand zurück.

 

...

Sie versuchen, Funktionen zu nutzen, die ausschließlich von einem Indikator aus verwendet werden sollen.

IndicatorCounted() hat überhaupt keine Bedeutung, wenn es von einem EA aus aufgerufen wird. Sie gibt immer -1 zurück, wenn sie im EA-Code aufgerufen wird. Versuchen Sie stattdessen, eine Konstante zu verwenden (wie in Ihrer zweiten Schleife) oder Bars (wenn Sie die gesamte Historie haben wollen).

Außerdem sollten Arrays, die innerhalb von EA verwendet werden, eine bestimmte Größe haben, initialisiert werden und die ganze Arbeit machen, die normalerweise Metatrader macht, wenn es um Indikatoren und Puffer innerhalb von Indikatoren geht. EA verfügt nicht über ein Äquivalent zu SetIndexBuffer(), das in Indikatoren verwendet wird. Sie haben nicht initialisierte Arrays in Ihrem EA und nur Metatrader verhindert, dass Ihr EA die Plattform zum Absturz bringt (er gibt in solchen Fällen immer 0 zurück, da der Elementwert, den Sie zu lesen versuchen, nicht existiert, und in der Tat existieren diese Arrays nicht (sie sind nur deklariert, nicht zugewiesen, initialisiert,...))

Grüße

mladen

Xaun:
Ich habe einen einfachen Custom Indicator ohne Externs namens #TestIndicator, der 8 Puffer mit der Zahl 1.0 füllt, aber wenn ich die Puffer in meinem EA zurückbringe, sind die Pufferergebnisse immer 0. Können Sie mir dabei helfen.

#TestAnzeiger

#property indicator_chart_window

#property indicator_buffers 8

double buf4_up[];

double buf4_down[];

double buf3_up[];

double buf3_down[];

double buf2_up[];

double buf2_down[];

double buf1_up[];

double buf1_down[];

int UniqueNum = 0070;

string shortname = "";

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

//| Custom indicator initialization function |

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

int init()

{

shortname = "#TFX";

IndicatorBuffers(8);

IndicatorShortName(shortname);

//---- indicators

SetIndexBuffer(0,buf4_up);

SetIndexBuffer(1,buf4_down);

SetIndexBuffer(2,buf3_up);

SetIndexBuffer(3,buf3_down);

SetIndexBuffer(4,buf2_up);

SetIndexBuffer(5,buf2_down);

SetIndexBuffer(6,buf1_up);

SetIndexBuffer(7,buf1_down);

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int limit;

int counted_bars = IndicatorCounted();

//---- the last calculated bar will be recalculated

if(counted_bars > 0)

counted_bars--;

limit = Bars - counted_bars - 1;

//---- the main cycle

for(int i = limit; i >= 0; i--)

{

//----

buf4_up=1.0;

buf4_down=1.0;

buf3_up=1.0;

buf3_down=1.0;

buf2_up=1.0;

buf2_down=1.0;

buf1_up=1.0;

buf1_down=1.0;

}

//----

//----

//----

return(0);

}

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

[/code]EA Code

[code]

double test4_up[];

double test4_down[];

double test3_up[];

double test3_down[];

double test2_up[];

double test2_down[];

double test1_up[];

double test1_down[];

int UniqueNum = 009;

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

//| expert initialization function |

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

int init()

{

//----

Print("Inside init");

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

Print("Inside deinit");

//----

return(0);

}

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

//| expert start function |

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

int start()

{

//----

Print("Inside start");

int counted_bars=IndicatorCounted();

int y5m=0, y1h=0, y30m=0, y15m=0, yy=0;

int i=0;

int limit=Bars-counted_bars;

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

{

test4_up = iCustom(NULL, 0, "#TestIndicator",0,i);

test4_down = iCustom(NULL, 0, "#TestIndicator",1,i);

}

for(i=0;i<30;i++)

{

Print("Test 4 UP ", test4_up," Bar ",i );

Print("Test 4 DOWN ", test4_down," Bar ",i );

//Print("This is a test");

}

//----

return(0);

}

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

Ergebnisse im Tester...

 

Frage zur Kodierung

Ich habe einen Indikator, der mir sehr gut gefällt und den ich seit ein paar Wochen mit großem Erfolg getestet habe. Gibt es eine Möglichkeit, mit der ich Kauf-/Verkaufsaufträge basierend auf dem Indikator automatisieren kann? Kurz gesagt, es handelt sich um einen kleinen Pfeil, der entweder nach oben oder nach unten zeigt, wenn die Indikatoren, die ich mag, übereinstimmen. Gibt es eine Möglichkeit, dass, wenn der Pfeil auftaucht, ein Auftrag für mich erteilt wird?

Grund der Beschwerde: