Hilfe bei der Codierung - Seite 287

 
airquest:
Hallo, ich versuche, den höchsten und niedrigsten Wert für x Perioden der Hauptlinie einer Stochastik in einem Puffer zu extrahieren. Ich habe irgendwo gelesen, dass ich ein Array mit den Werten erstellen muss, aber das funktioniert nicht. Bis jetzt bin ich mit diesem Code nicht weitergekommen. Mache ich das richtig, kann mir jemand dabei helfen? Herzlichen Dank. Mit freundlichen Grüßen.

double num_array[1]={iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,CustomPeriod)};

int gmax=ArrayMaximum(num_array[1],WHOLE_ARRAY,0);

int gmin=ArrayMinimum(num_array[1],WHOLE_ARRAY,0);

MinBuffer=gmin;

MaxBuffer=gmax;

Es ist ok, ich fand die Antwort... Puffern der iStochastic, Setzen der Werte in eine Serie mit ArraySetAsSeries, dann ArrayMaximum der Serie .

 
airquest:
Es ist ok, ich habe die Antwort gefunden... Puffern der iStochastic, Setzen der Werte in eine Serie mit ArraySetAsSeries, dann ArrayMaximum der Serie machen.

ersetzen

ArrayMaximum(num_array[1],WHOLE_ARRAY,0);

ArrayMinimum(num_array[1],WHOLE_ARRAY,0);

mit

ArrayMaximum(num_array,WHOLE_ARRAY,0);

ArrayMinimum(num_array,WHOLE_ARRAY,0);

 
zigflip:
sorry, mein Fehler, habe sie verwechselt, während ich noch die richtige Version benutzte! blöde metaquotes für die Änderung alles

Sie sind nicht der Einzige, der diese Erfahrung gemacht hat.

Das ist alles andere als benutzerfreundlich

 

Hallo Coders & Crackers,

Ich benötige Ihr Fachwissen, um einen ZigZag on Close Indikator zu modifizieren (beigefügt).

Ich brauche ein ZigZag auf Open stattdessen (gleiche Basis-Einstellungen). Alert auf neue Kerze offen wäre eine nette Note (wenn möglich).

Sehr geschätzt, danke!

Dateien:
 
razo:
Hallo Coders & Crackers,

Benötige Ihr Fachwissen bei der Änderung eines ZigZag on Close Indikators (beigefügt).

Ich brauche ein ZigZag auf Open stattdessen (gleiche Basiseinstellungen). Alert auf neue Kerze offen wäre eine nette Note (wenn möglich).

Sehr geschätzt, danke!

Hallo Razo, dies ist der Zigzag Open.

Dateien:
 

Hallo alle Gurus,

Ich habe ein Problem mit iCustom mit dem folgenden Indikator als Anhang... #VQ Bars.

Könnte mir jemand BITTE zeigen, wie man den Wert für den folgenden Puffer extrahiert....DIR[]

Ich verwende den folgenden Code, um den Puffer zu extrahieren... aber es wird kein Wert zurückgegeben....

double dir=iCustom(NULL,PERIOD_M1, "#VQ bars",4,0);

Könnte bitte jemand einen Blick auf diese Angelegenheit werfen...

Ihre Hilfe und Assistenten werden sehr geschätzt.....

#property indicator_chart_window

#Eigenschaft indicator_buffers 2

#property indicator_color1 Grün

#eigenschaft indicator_color2 Rot

#Eigenschaft indicator_width1 2

#eigenschaft indicator_width2 2

extern int Länge = 5;

extern int Methode = 3;

extern int Glättung = 1;

extern int Filter = 5;

extern bool Steady = false;

double VQ[];

double SumVQ[];

double DIR[];

double UpBuffer[];

double DnBuffer[];

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

int init()

{

IndicatorBuffers(5);

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexPuffer(0,UpPuffer);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,DnBuffer);

SetIndexBuffer(2,SumVQ);

SetIndexBuffer(3,VQ);

SetIndexBuffer(4,DIR);

if (Länge < 2) Länge = 2;

if (Methode < 0) Methode = 0;

wenn (Methode > 3) Methode = 3;

if (Glättung < 0) Glättung = 0;

if (Filter < 0) Filter = 0;

string short_name = "VQ | "+ Länge + " , " +

Methode + " , " + Glättung + " , " + Filter + " | ";

IndicatorShortName(short_name);

SetIndexEmptyValue(0, 0.0);

SetIndexEmptyValue(1, 0.0);

SetIndexEmptyValue(2, 0.0);

SetIndexLeerWert(3, 0,0);

return(0);

}

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

int start()

{

double MH = 0, ML = 0, MO = 0, MC = 0, MC1 = 0;

int i, j, limit, counted_bars=IndicatorCounted();

//---- Prüfung auf mögliche Fehler

if(gezählte_Balken<0) return(-1);

//---- zuletzt gezählte Balken werden neu gezählt

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

//----

if(gezählte_Balken<1) i=Balken-Länge-1;

sonst i=Balken-gezählte_Balken;

if(gezählte_Balken<1)

{

j=Bars-Length-1;

SumVQ[j + 1] = Close[j + 1];

}

while (i >= 0)

{

MH = iMA(NULL,0,Länge,0,Methode,PRICE_HIGH,i);

ML = iMA(NULL,0,Länge,0,Methode,PRICE_LOW,i);

MO = iMA(NULL,0,Länge,0,Methode,PRICE_OPEN,i);

MC = iMA(NULL,0,Länge,0,Methode,PREIS_SCHLIESSEN,i);

MC1 = iMA(NULL,0,Länge,0,Methode,PREIS_SCHLIESSEN,i+Glättung);

if (Steady==true)

{

MC=iMA(NULL,0,Länge,0,Methode,PRICE_MEDIAN,i);

MC1=iMA(NULL,0,Länge,0,Methode,PREIS_MITTEL,i+Glättung);

}

if((MH - ML)>0)

VQ = MathAbs(((MC - MC1) / MathMax(MH - ML, MathMax(MH - MC1, MC1 - ML)) + (MC - MO) / (MH - ML)) * 0,5) * ((MC - MC1 + (MC - MO)) * 0.5);

SummeVQ = SummeVQ + VQ;

wenn (Filter > 0)

wenn (MathAbs(SumVQ - SumVQ) < Filter * Punkt)

SumVQ = SumVQ;

i--;

}

if(gezählte_Balken<1)

Grenze=Balken-Länge-1;

sonst limit=Balken-gezählte_Balken;

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

{

wenn (SumVQ > SumVQ) DIR = 1;

wenn (SumVQ < SumVQ) DIR = -1;

wenn (SumVQ== SumVQ) DIR = DIR;

wenn (DIR > 0)

{

UpBuffer = High;

DnBuffer = Low;

}

sonst

wenn (DIR < 0)

{

DnBuffer = High;

UpBuffer = Low;

}

}

return(0);

}

 
12BPRO:
Hallo alle Gurus,

Ich habe ein Problem mit iCustom mit dem folgenden Indikator als Anhang... #VQ Bars.

Könnte mir jemand BITTE zeigen, wie man den Wert für den folgenden Puffer extrahiert....DIR[]

Ich verwende den folgenden Code, um den Puffer zu extrahieren... aber es wird kein Wert zurückgegeben....

double dir=iCustom(NULL,PERIOD_M1, "#VQ bars",4,0);

Könnte bitte jemand einen Blick auf diese Angelegenheit werfen...

Ihre Hilfe und Assistenten ist sehr geschätzt.....

Alles scheint in Ordnung zu sein

Ich füge die #vq-Balken sowie einen Testindikator bei, der diese Werte verwendet und die richtigen Werte anzeigt

vq_bars.mq4

_test_vq.mq4

Dateien:
vq_bars.mq4  3 kb
_test_vq.mq4  1 kb
 
mladen:
Es scheint alles in Ordnung zu sein. Ich füge die #vq-Balken sowie einen Testindikator bei, der diese Werte verwendet, und er zeigt die richtigen Werte an.

vq_bars.mq4

_test_vq.mq4

Wow... Danke Sir MLADEN....

Das Seltsamste ist passiert... der Code funktioniert nicht bei meinem Indikator... kann das Fehlerprotokoll nicht öffnen....

aber ich habe ihn mit den #VQ-Balken getestet und er funktioniert einwandfrei....

Ich habe ein paar Stunden damit verschwendet....

Was soll ich sagen.... Owe you one....SIR.... for clearing this thing up for me.....

Dies ist mein #VQ.....

Es hat den Wert, aber wenn ich das iCustom im EA aufrufe, hat es keinen Wert.... was soll ich sagen.... dummes Ding....

Dateien:
gbpjpy_test.jpg  123 kb
my_vq.jpg  48 kb
 

Sehr geehrter Herr MLADEN,

Könnten Sie sich BITTE meinen Indikator #VQ.... ansehen... Ich habe ein paar Zeilen gelöscht, die ich nicht benutze.... und ein paar Alerts hinzugefügt....

Möglicherweise ist das die Ursache für das Problem, dass ich den Puffer im EA über iCustom.... nicht aufrufen kann.

Ihre HILFE wird wieder einmal sehr geschätzt.....

Mit freundlichen Grüßen

AZRUL.......

#property indicator_chart_window

#property indicator_buffers 2

#eigenschaft indicator_color1 Grün

#Eigenschaft indicator_color2 Rot

#Eigenschaft indicator_width1 2

#Eigenschaft indicator_width2 2

extern int Länge = 5;

extern int Methode = 3;

extern int Glättung = 1;

extern double Filter = 0.5;

extern bool Steady = False;

externer String SoundGbp = "news.wav";

externer string SoundEur = "news.wav";

extern bool PopupAlert = true;

extern bool SendPushNotification = false;

extern bool SoundAlert = true;

int lastAlert=3;

double VQ[];

double SumVQ[];

double DIR[];

double UpBuffer[];

double DnBuffer[];

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

int init()

{

IndicatorBuffers(5);

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexPuffer(0,UpPuffer);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,DnBuffer);

SetIndexBuffer(2,SumVQ);

SetIndexBuffer(3,VQ);

SetIndexBuffer(4,DIR);

if (Länge < 2) Länge = 2;

if (Methode < 0) Methode = 0;

wenn (Methode > 3) Methode = 3;

if (Glättung < 0) Glättung = 0;

if (Filter < 0) Filter = 0;

string short_name = "VQ | "+ Länge + " , " +

Methode + " , " + Glättung + " , " + Filter + " | ";

IndicatorShortName(short_name);

SetIndexEmptyValue(0, 0.0);

SetIndexEmptyValue(1, 0.0);

SetIndexEmptyValue(2, 0.0);

SetIndexLeerWert(3, 0,0);

return(0);

}

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

int start()

{

int i, limit, counted_bars=IndicatorCounted();

//---- Prüfung auf mögliche Fehler

if(gezählte_Balken<0) return(-1);

//---- zuletzt gezählte Balken werden neu gezählt

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

//----

if(gezählte_Balken<1) i=Balken-Länge;

sonst i=Balken-gezählte_Balken;

if(gezählte_Balken<1)

while (i >= 0)

{

VQ = iCustom(NULL,0, "#pollan indy",0,i+1);

SummeVQ= iCustom(NULL,0, "#pollan indy",1,i+1);

//if (Filter > 0)

//if (MathAbs(VQ - SumVQ) < Filter)

//VQ = SumVQ;

i--;

}

if(gezählte_Balken<1)

Grenze=Balken-Länge-1;

sonst limit=Balken-gezählte_Balken;

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

{

//wenn (VQ > SumVQ) DIR = 1;

wenn ((VQ+VQ) > (SumVQ+SumVQ))

DIR = 1;

wenn ((VQ+VQ) < (SumVQ+SumVQ))

DIR = -1;

wenn ((VQ+VQ) == (SumVQ+SumVQ))

DIR = DIR;

wenn (DIR > 0)

{

UpBuffer = High;

DnPuffer = Niedrig;

}

sonst

wenn (DIR < 0)

{

DnBuffer = High;

UpBuffer = Low;

}

if ((DIR > 0) && (DIR > 0))

{

CheckForAlerts(OP_BUY);//ALERT BUY

}

if ((DIR < 0) && (DIR < 0))

{

CheckForAlerts(OP_SELL);//ALERT SELL

}

}

double vq1=iCustom(NULL,0, "#pollan indy",0,i+1);

double svq1=iCustom(NULL,0, "#pollan indy",1,i+1);

double vq2=iCustom(NULL,0, "#pollan indy",0,i+2);

double svq2=iCustom(NULL,0, "#pollan indy",1,i+2);

double vq3=iCustom(NULL,0, "#pollan indy",0,i+3);

double svq3=iCustom(NULL,0, "#pollan indy",1,i+3);

double dir1=DIR;

double dir2=DIR;

double dir3=DIR;

double vq0= (vq1 + vq2);

double svq0= (svq1 + svq2);

string VQ0_Teks=DoubleToStr(vq0,6);

Zeichenfolge VQS0_Teks=DoubleToStr(svq0,6);

Zeichenfolge VQ1_Teks=DoubleToStr(vq1,6);

Zeichenfolge VQS1_Teks=DoubleToStr(svq1,6);

Zeichenfolge VQ2_Teks=DoubleToStr(vq2,6);

Zeichenfolge VQS2_Teks=DoubleToStr(svq2,6);

Zeichenfolge VQ3_Teks=DoubleToStr(vq3,6);

Zeichenfolge VQS3_Teks=DoubleToStr(svq3,6);

string dir1_Teks=DoubleToStr(dir1,6);

string dir2_Teks=DoubleToStr(dir2,6);

string dir3_Teks=DoubleToStr(dir3,6);

string h =

" Blau" + " " + VQ0_Teks+ " " + " Rot" + " " + VQS0_Teks + "\n" +

" Blau" + " " + VQ1_Teks+ " " + " Rot" + " " + VQS1_Teks + "\n" +

" Blau" + " " + VQ2_Teks+ " " + " Rot" + " " + VQS2_Teks + "\n" +

" Blau" + " " + VQ3_Teks+ " " + " Rot" + " " + VQS3_Teks + "\n" + "\n" +

" DIR1" + " " + dir1_Teks+" " + "DIR2" + " " + dir2_Teks + " " +"DIR3" + " " + dir3_Teks;

Kommentar(h);

return(0);

}

//--------------------------------------------------------------

void CheckForAlerts(int type)

{

//ALERTS:

static datetime lastAlertTime=0;

if (lastAlertTime != iTime(NULL,0,0)) {

if (type==OP_BUY && lastAlert!=2) { //BUY

doAlerts("Pollan BAR UP "+Symbol()+" (tf: "+Periode()+")",SoundEur);

lastAlert=2;

lastAlertTime=iTime(NULL,0,0);

}

if (type==OP_SELL && lastAlert!=1) { //SELL

doAlerts("Pollan BAR DOWN "+Symbol()+" (tf: "+Periode()+")",SoundGbp);

lastAlert=1;

lastAlertTime=iTime(NULL,0,0);

}

}///if (lastAlertTime != iTime(NULL,0,0) {

//end ALERTS

}

//--------------------------------------------------------------

void doAlerts(string sMsg,string SoundFile) {

if(PopupAlert) Alert(sMsg);

if(SoundAlert) PlaySound(SoundFile);

if(SendPushNotification) SendNotification(sMsg);

}

DANKE........

 
12BPRO:
Sehr geehrter Herr MLADEN,

Könnten Sie sich BITTE meinen Indikator #VQ.... ansehen... Ich habe ein paar Zeilen gelöscht, die ich nicht benutze.... und ein paar Alerts hinzugefügt....

Möglicherweise ist das die Ursache für das Problem, dass der Puffer im EA über iCustom.... nicht aufgerufen werden kann.

Ihre HILFE wird wieder einmal sehr geschätzt.....

Mit freundlichen Grüßen

AZRUL.......

#property indicator_chart_window

#property indicator_buffers 2

#eigenschaft indicator_color1 Grün

#Eigenschaft indicator_color2 Rot

#Eigenschaft indicator_width1 2

#Eigenschaft indicator_width2 2

extern int Länge = 5;

extern int Methode = 3;

extern int Glättung = 1;

extern double Filter = 0.5;

extern bool Steady = False;

externer String SoundGbp = "news.wav";

externer string SoundEur = "news.wav";

extern bool PopupAlert = true;

extern bool SendPushNotification = false;

extern bool SoundAlert = true;

int lastAlert=3;

double VQ[];

double SumVQ[];

double DIR[];

double UpBuffer[];

double DnBuffer[];

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

int init()

{

IndicatorBuffers(5);

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexPuffer(0,UpPuffer);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,DnBuffer);

SetIndexBuffer(2,SumVQ);

SetIndexBuffer(3,VQ);

SetIndexBuffer(4,DIR);

if (Länge < 2) Länge = 2;

if (Methode < 0) Methode = 0;

wenn (Methode > 3) Methode = 3;

if (Glättung < 0) Glättung = 0;

if (Filter < 0) Filter = 0;

string short_name = "VQ | "+ Länge + " , " +

Methode + " , " + Glättung + " , " + Filter + " | ";

IndicatorShortName(short_name);

SetIndexEmptyValue(0, 0.0);

SetIndexEmptyValue(1, 0.0);

SetIndexEmptyValue(2, 0.0);

SetIndexLeerWert(3, 0,0);

return(0);

}

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

int start()

{

int i, limit, counted_bars=IndicatorCounted();

//---- Prüfung auf mögliche Fehler

if(gezählte_Balken<0) return(-1);

//---- zuletzt gezählte Balken werden neu gezählt

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

//----

if(gezählte_Balken<1) i=Balken-Länge;

sonst i=Balken-gezählte_Balken;

if(gezählte_Balken<1)

while (i >= 0)

{

VQ = iCustom(NULL,0, "#pollan indy",0,i+1);

SummeVQ= iCustom(NULL,0, "#pollan indy",1,i+1);

//if (Filter > 0)

//if (MathAbs(VQ - SumVQ) < Filter)

//VQ = SumVQ;

i--;

}

if(gezählte_Balken<1)

Grenze=Balken-Länge-1;

sonst limit=Balken-gezählte_Balken;

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

{

//wenn (VQ > SumVQ) DIR = 1;

wenn ((VQ+VQ) > (SumVQ+SumVQ))

DIR = 1;

wenn ((VQ+VQ) < (SumVQ+SumVQ))

DIR = -1;

wenn ((VQ+VQ) == (SumVQ+SumVQ))

DIR = DIR;

wenn (DIR > 0)

{

UpBuffer = High;

DnPuffer = Niedrig;

}

sonst

wenn (DIR < 0)

{

DnBuffer = High;

UpBuffer = Low;

}

if ((DIR > 0) && (DIR > 0))

{

CheckForAlerts(OP_BUY);//ALERT BUY

}

if ((DIR < 0) && (DIR < 0))

{

CheckForAlerts(OP_SELL);//ALERT SELL

}

}

double vq1=iCustom(NULL,0, "#pollan indy",0,i+1);

double svq1=iCustom(NULL,0, "#pollan indy",1,i+1);

double vq2=iCustom(NULL,0, "#pollan indy",0,i+2);

double svq2=iCustom(NULL,0, "#pollan indy",1,i+2);

double vq3=iCustom(NULL,0, "#pollan indy",0,i+3);

double svq3=iCustom(NULL,0, "#pollan indy",1,i+3);

double dir1=DIR;

double dir2=DIR;

double dir3=DIR;

double vq0= (vq1 + vq2);

double svq0= (svq1 + svq2);

string VQ0_Teks=DoubleToStr(vq0,6);

Zeichenfolge VQS0_Teks=DoubleToStr(svq0,6);

Zeichenfolge VQ1_Teks=DoubleToStr(vq1,6);

Zeichenfolge VQS1_Teks=DoubleToStr(svq1,6);

Zeichenfolge VQ2_Teks=DoubleToStr(vq2,6);

Zeichenfolge VQS2_Teks=DoubleToStr(svq2,6);

Zeichenfolge VQ3_Teks=DoubleToStr(vq3,6);

Zeichenfolge VQS3_Teks=DoubleToStr(svq3,6);

string dir1_Teks=DoubleToStr(dir1,6);

string dir2_Teks=DoubleToStr(dir2,6);

string dir3_Teks=DoubleToStr(dir3,6);

string h =

" Blau" + " " + VQ0_Teks+ " " + " Rot" + " " + VQS0_Teks + "\n" +

" Blau" + " " + VQ1_Teks+ " " + " Rot" + " " + VQS1_Teks + "\n" +

" Blau" + " " + VQ2_Teks+ " " + " Rot" + " " + VQS2_Teks + "\n" +

" Blau" + " " + VQ3_Teks+ " " + " Rot" + " " + VQS3_Teks + "\n" + "\n" +

" DIR1" + " " + dir1_Teks+" " + "DIR2" + " " + dir2_Teks + " " +"DIR3" + " " + dir3_Teks;

Kommentar(h);

return(0);

}

//--------------------------------------------------------------

void CheckForAlerts(int type)

{

//ALERTS:

static datetime lastAlertTime=0;

if (lastAlertTime != iTime(NULL,0,0)) {

if (type==OP_BUY && lastAlert!=2) { //BUY

doAlerts("Pollan BAR UP "+Symbol()+" (tf: "+Periode()+")",SoundEur);

lastAlert=2;

lastAlertTime=iTime(NULL,0,0);

}

if (type==OP_SELL && lastAlert!=1) { //SELL

doAlerts("Pollan BAR DOWN "+Symbol()+" (tf: "+Periode()+")",SoundGbp);

lastAlert=1;

lastAlertTime=iTime(NULL,0,0);

}

}///if (lastAlertTime != iTime(NULL,0,0) {

//end ALERTS

}

//--------------------------------------------------------------

void doAlerts(string sMsg,string SoundFile) {

if(PopupAlert) Alert(sMsg);

if(SoundAlert) PlaySound(SoundFile);

if(SendPushNotification) SendNotification(sMsg);

}

DANKE........

Du hast es geändert, um "#pollan indy" zu verwenden.

Ich habe keine Ahnung, was dieser Indikator macht (wenn er wie die anderen "pollan"-Indikatoren ist, dann malt er sich neu und das kann Ihre Probleme verursachen, aber ich mache jetzt nur ein Ratespiel)