Wie fügt man den Indikatorcode in den Expertadvisor-Code ein?

[Gelöscht]  

wie ich oben erwähnt, möchte ich ea mit stochastischen Kodierung zu machen.

das Problem ist, wie man Indikator-Code in ea hinzufügen?

 
albert_lim83:

das Problem ist, wie man Indikator-Code in ea hinzufügen?

Mit gewissen Einschränkungen schon, aber mit iCustom ist es viel einfacher.

Aber wenn Sie es wirklich wollen: Übertragen eines Indikatorcodes in einen Expert Advisor Code. Indikator-Struktur - MQL4 Artikel

 

Für Stochastic wird iCustom nicht benötigt

double iStochastic( string symbol, int timeframe, int %Kperiod, int %Dperiod, int slowing, int method, int price_field, int mode, int shift)
Berechnet den Stochastik-Oszillator und gibt seinen Wert zurück.
Parameter:
symbol - Symbol, dessen Daten zur Berechnung des Indikators verwendet werden sollen. NULL bedeutet das aktuelle Symbol.
Zeitrahmen - Zeitrahmen. Es kann ein beliebiger Wert aus der Timeframe-Aufzählung sein. 0 bedeutet den aktuellen Chart-Zeitrahmen.
%KPeriode - %K-Linien-Periode.
%Dperiod - %DZeitraum.
Verlangsamung - Wert der Verlangsamung.
Methode - MA-Methode. Es kann ein beliebigerAufzählungswert derMethode MovingAverage sein.
preis_feld - Preisfeld-Parameter. Kann einer der folgenden Werte sein: 0 - Low/High oder 1 - Close/Close.
Modus - Index der Indikatorlinie. Kann ein beliebiger Aufzählungswert der Indikatorlinienbezeichner sein.
Verschiebung - Index des aus dem Indikatorpuffer entnommenen Wertes (Verschiebung gegenüber dem aktuellen Balken um die angegebene Anzahl von Perioden).
Beispiel:
 if(iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0)) return(0);
Eine Menge Codierungshilfe ist hier zu finden Alphabetischer Index von MQL4 Funktionen https://www.mql5.com/en/forum/122679

[Gelöscht]  

wie über das Hinzufügen rvi Indikator in ea?

auch mit dem gleichen Code wie die Art und Weise Hinzufügen von Stochastik?

 
Lesen Sie die Dokumentation
 
albert_lim83:

wie über das Hinzufügen rvi Indikator in ea?

auch mit dem gleichen Code wie die Art und Weise Hinzufügen von Stochastik?


iCustom() oder iRVI()

 
albert_lim83:

wie über das Hinzufügen rvi Indikator in ea?

auch mit dem gleichen Code wie die Art und Weise Hinzufügen stochastic ?


  1. Ausführliche Erklärung von iCustom - MQL4 forum
[Gelöscht]  

Ich versuche, den RVI-Indikator in den Escape-EA einzufügen, aber es schlägt fehl...

es zeigt

Ausdruck im globalen Bereich nicht erlaubt

Funktionsdefinition unerwartet

unausgewogene Klammern

Wie kann ich diesen Fehler beheben?

[Gelöscht]  

hier der Code, den ich heute morgen gemacht habe.

Kann mir jemand helfen, es zu beheben?


//+------------------------------------------------------------------+
int init()
{
//---- Zuweisung von Indikatorpuffern
SetIndexPuffer(0,Puffer);
SetIndexPuffer(1,SignalPuffer);
//---- Indikatorzeile
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
//---- Zeichnungseinstellungen
SetIndexDrawBegin(0,RVIPeriod+3);
SetIndexZeichenBeginn(1,RVIPeriode+7);
//---- Name für das Datenfenster und die Bezeichnung des Indikatorunterfensters
IndicatorShortName("RVI("+RVIPeriod+")");
SetIndexLabel(0, "RVI");
SetIndexLabel(1, "RVIS");
//---- Initialisierung abgeschlossen
return(0);
}
{
double bid =MarketInfo(Symbol(),MODE_BID); // Abfrage des Wertes von Bid
double ask =MarketInfo(Symbol(),MODE_ASK); // Abfrage des Wertes von Ask
double point =MarketInfo(Symbol(),MODE_POINT);//Abfrage nach Point
return; // Beenden von start()
if(KontoFreierRahmen()<100)
Print("Wir haben kein Geld. Freie Marge = ", AccountFreeMargin());
return(0);
}

int start()
{
{
int i,j,nLimit,nCountedBars;
double dValueUp,dValueDown,dNum,dDeNum;
//----
if(Bars<=RVIPeriod+8) return(0);
//----
nCountedBars=IndicatorCounted();
//---- Prüfung auf mögliche Fehler
if(nCountedBars<0) return(-1);
//---- zuletzt gezählte Balken wird neu gezählt
nLimit=Balken-RVIPeriode-4;
if(nGezählteZeichen>RVIPeriod+4)
nLimit=Balken-nGezählteBalken;
//---- RVI im 1. Puffer gezählt
for(i=0; i<=nLimit; i++)
{
dNum=0.0;
dDeNum=0,0;
for(j=i; j<i+RVIPeriod; j++)

{
dValueUp=((Close[j]-Open[j])+2*(Close[j+1]-Open[j+1])+2*(Close[j+2]-Open[j+2])+(Close[j+3]-Open[j+3]))/6;
dValueDown=((High[j]-Low[j])+2*(High[j+1]-Low[j+1])+2*(High[j+2]-Low[j+2])+(High[j+3]-Low[j+3]))/6;
dNum+=dValueUp;
dDeNum+=dValueDown;
}
if(dDeNum!=0.0)
Puffer[i]=dNum/dDeNum;
sonst
Buffer[i]=dNum;
}
//---- Signalleitung im 2-ten Puffer gezählt
nLimit=Bars-RVIPeriod-7;
if(nGezählteZeichen>RVIPeriod+8)
nLimit=Bars-nCountedBars+1;
for(i=0; i<=nLimit; i++)
SignalBuffer[i]=(Buffer[i]+2*Buffer[i+1]+2*Buffer[i+2]+Buffer[i+3])/6;
//----
return(0);
}
{
OrderSend(Symbol,LotSize,Ask,StopLoss,TakeProfit,0,0);
if (Close<i)
OpenBuy();
return(0);

OrderSend(Symbol,LotSize,Bid,StopLoss,TakeProfit,0,0);
wenn (Close>i)
OpenSell();
return(0);
}


double GetSizeLot() { return(LotSize); }
double GetTakeProfitBuy() { return(Ask+TakeProfit*Point); }
double GetTakeProfitSell() { return(Bid-TakeProfit*Point); }
double GetStopLossBuy() { return(Bid-StopLoss*Point); }
double GetStopLossSell() { return(Ask+StopLoss*Point); }
string GetCommentForOrder() { return();}

return(0); }

 

Bevor Sie etwas posten, lesen Sie bitte einige der anderen Threads... dann hätten Sie zahlreiche Anfragen wie diese gesehen:

Bitte benutzen Sie dies, um den Code zu posten . . das macht es einfacher zu lesen.

 
albert_lim83:

Hier der Code, den ich heute morgen gemacht habe.

jemand kann mir helfen, es zu beheben?

Sie können keinen Indikator-Code in einem EA verwenden ... lesen Sie den Thread, zu dem ich einen Link gepostet habe. Sie müssen die gleiche Anzahl von { und } haben auch die gleiche Anzahl von ( und ). . . habe ich nicht schon einmal gesagt, dass diese ? https://www.mql5.com/en/forum/139447 Ich denke, Sie nicht die Mühe machen, von anderen Beiträgen zu lernen ?