Wie programmiert man? - Seite 282

 
gilben:
Ich bin auf der Suche nach einer Lösung, um die Algorithmen der Indikatoren auf ein Array von Preisen anzuwenden.

in MQL4 einige Indikatoren hat diese Funktion, wie zum Beispiel: iCCIOnArray, iBandsOnArray...

Aber Indikatoren wie der ADX haben keine solche Funktion.

Hat jemand eine Idee, wie ich die Indikatorberechnung auf ein vordefiniertes Array (nicht vom Kursserver) anwenden kann?

[lang=pl]Wenn Sie wissen, wie gegebene Indikator ist calutaded können Sie alles machen:)

Bitte erklären Sie genauer, was genau Sie brauchen

Vielen Dank!

Grzesiek[/lang]

 

...

ADX verwendet den so genanntenatrue range(Max(High,PreviousClose)-Min(Low,PreviousClose) und das ist die Grundlage der ADX Berechnung

Wegen der High, Low und Close-Werte erforderlich ist, kann es nicht auf ein Array angewendet werden, Im Allgemeinen, wenn Sie sehen, dass es einen Preis erforderlich ist, dann sollte der Indikator auf ein Array anwendbar sein. Wenn es keinen Preis-Parameter gibt, dann kann er mit ziemlicher Sicherheit nicht auf ein Array angewandt werden (unter der Annahme, dass der Indikator in erster Linie mit Preisen arbeitet)

 
g.pociejewski:
[lang=pl]Wenn Sie wissen, wie der gegebene Indikator kalutiert wird, können Sie alles machen:)

Bitte erklären Sie genauer, was genau Sie benötigen.

Vielen Dank,

Grzesiek[/lang]

Vielen Dank Grzesiek.

Ich habe nach einer guten Lösung gesucht. Letztendlich ist die beste Lösung, den Indi-Code in den Experten-Code einzubetten.

Wie auch immer, wenn mir niemand einen anderen Weg zeigt, werde ich es auf diese Weise anwenden.

 

Haben Sie eine Quelldatei? *.ex4-Datei ist kompiliert, so dass Sie keinen Zugang zum Quellcode haben.

Mit freundlichen Grüßen

 

anfordern

mladen:
Stern821

Probieren Sie dies aus

________________________

Einige Erklärungen: Ich habe die von Ihnen geposteten Indikatoren nicht verwendet, sondern diese erstellt (der in Ihrem Beitrag angehängte Indikator trägt meinen Namen, aber diese Version ist nicht von mir, aber das ist nicht der einzige Grund, warum ich diesen Indikator nicht verwendet habe). ...

Grüße

Mladen

hallo Mladen

ist es möglich, den stc EA für einen HMA color nrp-indi und High-low trend indi anzupassen?...

ich habe einen Pseudocode geschrieben (* kann gar nicht coden... *):

************************************************************

Externals:

Lot#

Zeitraum für die HMA

???.

.....................

wiederholen:

erhalte die Zickzack-Punkt-Farbe (Bar Close);

Ermitteln der HMA-Trendfarbe (Balkenschluss);

----------------------------------------------------------------

// öffnen verkaufen

wenn letzter Zigzag-Punkt = blau && HMA-Trend = rot -> SELL-Ticket eröffnen (nur einmal pro HMA-Trendfarbe)

wenn Verkauf nicht möglich-> 3 mal wiederholen

wenn kein Erfolg Alarm & Email: couldn't open sell for symbol,TF, time;

sonst

// Kauf eröffnen

wenn letzter Zigzag-Punkt = rot && HMA Trend = blau -> BUY Ticket eröffnen (nur einmal pro HMA Trendfarbe)

wenn Kauf nicht möglich-> 3 mal erneut versuchen

wenn kein Erfolg Alarm & Email: couldn't open buy for symbol,TF, time;

-------------------------------------------------------------------

wenn HMA-Trend ( rot ) nach blau wechselt -> schließen, verkaufen, 10 Sek. warten ;

wenn HMA-Trend ( blau ) nach rot wechselt -> Kauf schließen, 10 Sek. warten;

-------------------------------------------------------------------

schließe alle Trades am Freitag um 12:00h AM (GMT)...

****************************************************************

ich weiß, dass es einige Verluste geben wird, aber das stört mich nicht...

ich will keine SLs ...

Grüße

Cado

hma_color_nrp.ex4high_-_low_trend.mq4

Dateien:
 

ATR + MA & Bandbreite + MA

[lang=it]Hallo, ich brauche einen benutzerdefinierten Indikator, der in einem separaten Fenster die ATR und den gleitenden Durchschnitt berechnet und das Gleiche für die Bandbreite. Ich habe den Code in mql4 und ich habe mit der IMAONARRAY für die Berechnung der MA, aber der Indikator don ' t Arbeit..kann jemand mir helfen???

Dies ist einer der teo Codes...

Danke

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Red

//---- input parameters

extern int AtrPeriod=14;

//---- buffers

double AtrBuffer[];

double TempBuffer[];

double MaBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

string short_name;

//---- 1 additional buffer used for counting.

IndicatorBuffers(2);

//---- indicator line

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,AtrBuffer);

SetIndexBuffer(1,TempBuffer);

SetIndexStyle(2,DRAW_LINE);

SetIndexBuffer(2,MaBuffer);

//---- name for DataWindow and indicator subwindow label

short_name="ATR("+AtrPeriod+")";

IndicatorShortName(short_name);

SetIndexLabel(0,short_name);

//----

SetIndexDrawBegin(0,AtrPeriod);

//----

return(0);

}

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

//| Average True Range |

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

int start()

{

int i,counted_bars=IndicatorCounted();

//----

if(Bars<=AtrPeriod) return(0);

//---- initial zero

if(counted_bars<1)

for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;

//----

i=Bars-counted_bars-1;

while(i>=0)

{

double high=High;

double low =Low;

if(i==Bars-1) TempBuffer=high-low;

else

{

double prevclose=Close;

TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);

}

i--;

}

//----

if(counted_bars>0) counted_bars--;

int limit=Bars-counted_bars;

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

AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);

//----

double MyArray[];

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

ArrayResize( MyArray, limit);

ArraySetAsSeries(MyArray,true);

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

{

MyArray = AtrBuffer;

}

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

{

MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);

}

//----

return(0);

}

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

[/lang]

 

...

Probieren Sie es jetzt aus

k3rn3l:
[lang=it]Hallo, ich brauche einen benutzerdefinierten Indikator, der in einem separaten Fenster, schreiben atr und gleitenden Durchschnitt berechnen auf sie und die gleiche Sache für Bandbreite. Ich habe den Code in mql4 gemacht und ich habe mit dem IMAONARRAY für die Berechnung der MA, aber der Indikator don ' t Arbeit..kann jemand mir helfen?

Dies ist einer der Teo-Codes...

Danke

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Red

//---- input parameters

extern int AtrPeriod=14;

//---- buffers

double AtrBuffer[];

double TempBuffer[];

double MaBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

string short_name;

//---- 1 additional buffer used for counting.

IndicatorBuffers(2);

//---- indicator line

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,AtrBuffer);

SetIndexBuffer(1,TempBuffer);

SetIndexStyle(2,DRAW_LINE);

SetIndexBuffer(2,MaBuffer);

//---- name for DataWindow and indicator subwindow label

short_name="ATR("+AtrPeriod+")";

IndicatorShortName(short_name);

SetIndexLabel(0,short_name);

//----

SetIndexDrawBegin(0,AtrPeriod);

//----

return(0);

}

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

//| Average True Range |

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

int start()

{

int i,counted_bars=IndicatorCounted();

//----

if(Bars<=AtrPeriod) return(0);

//---- initial zero

if(counted_bars<1)

for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;

//----

i=Bars-counted_bars-1;

while(i>=0)

{

double high=High;

double low =Low;

if(i==Bars-1) TempBuffer=high-low;

else

{

double prevclose=Close;

TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);

}

i--;

}

//----

if(counted_bars>0) counted_bars--;

int limit=Bars-counted_bars;

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

AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);

//----

double MyArray[];

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

ArrayResize( MyArray, limit);

ArraySetAsSeries(MyArray,true);

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

{

MyArray = AtrBuffer;

}

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

{

MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);

}

//----

return(0);

}

//+------------------------------------------------------------------+
[/lang]
Dateien:
atr__ma.mq4  2 kb
 

[lang=tr]Hallo Kann mir jemand helfen, diese Formel im Metatrader Code zu erstellen

(dies ist in metastock Formel:)

Q1:=Input("PERIOD",1,1000,3);

Q2:=Input("PERIOD",0.001,100,1);

Q3:=Q2/100;

Q4:=Bewegung( Typisch(),Q1,E) ;

Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));

Q5

[/lang]

 

...

Interessant

Das Einzige, was Sie für verschiedene Zeitrahmen anpassen müssen, ist der Prozentsatz. 1% scheint eine gute Wahl für einen 4-Stunden-Chart zu sein, aber hier ist ein Beispiel für einen 15-Minuten-Chart mit 0,5% anstelle des Standardwertes 1%

PS: Ich habe keine Ahnung, wie der ursprüngliche Name lautet, also habe ich ihn so genannt, wie er ist.

Mit freundlichen Grüßen

mladen

cedid:
[lang=tr]Hi Kann mir jemand helfen, diese Formel im Metatrader Code zu erstellen

(dies ist in der Metastock-Formel:)

Q1:=Input("PERIOD",1,1000,3);

Q2:=Input("PERIOD",0.001,100,1);

Q3:=Q2/100;

Q4:=Bewegung( Typisch(),Q1,E) ;

Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));

Q5

[/lang]
Dateien:
levels.gif  22 kb
 
mladen:
Interessant:

Das Einzige, was Sie für verschiedene Zeitrahmen anpassen müssen, ist der Prozentsatz. 1% scheint eine gute Wahl für ein 4-Stunden-Diagramm zu sein, aber hier ist ein Beispiel für ein 15-Minuten-Diagramm mit 0,5% anstelle des Standardwerts von 1%

PS: Ich habe keine Ahnung, wie der ursprüngliche Name lautet, also habe ich ihn so genannt

Grüße

mladen

[lang=tr]danke mladen ich werde es versuchen, ich denke es wird funktionieren [/lang]