![]() |
|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
![]() |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
![]()
Hallo.
Was ist eigentlich der "Relative Vigor Index"? Steht in meinem Indi-Oszi-Buch nicht drin. ![]() Scheint auf den 1. Blick nicht so kompliziert zu sein. Der Schnellste ist aber wohl auch nicht. ![]() ![]() |
|
|||
![]() |
|
|||
![]()
Das schaut leider doch etwas komplizierter aus.
![]() Code:
//RVI 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; |
|
|||
![]() Zitat:
![]() |
|
|||
![]() Zitat:
Was du dann schreibst ist dann aber kein mql4 mehr. Lass Dir mal im Journal die Werte von IL1 und IL2 anzeigen. Das geht mit: Code:
Print ("IL1:",IL1, " / IL2:",IL2); Kann auch nicht, weil -100 Perioden vorwärts denken kann der CCI nicht weil er da noch keinen Kurs hat :-). Falls Du dann doch mql4 Code schreiben solltest findest Du die Definition des iCCI in der Referenz: double iCCI( string symbol, // symbol int timeframe, // timeframe int period, // averaging period int applied_price, // applied price int shift // shift ); Die Funktion iCCI benötigt genau diese 5 Parameter um ein Ergebnis zu liefern. Oder an welcher Stelle meinst Du der Funktion iCCI mitzuteilen über wieviele Perioden sie berechnet werden soll? Mit iCCI deklariest Du keine Linien sondern den Wert des iCCI im angegebenen Bar(shift). Und ob der iCCI <>100/-100 ist prüfst Du dann mit einem Vergleich iCCI()>100 oder iCCI<-100. |
|
|||
![]()
Muss ich mir noch mal genau anschaun.
![]() Jetzt komm ich aber erst mal beim RVI nicht weiter. Eigentlich müsste die Globale Variable soweit richtig sein: Code:
//RVI GV extern string RelVigInd = "Relativ Vigor Index"; extern int ExtRVIPeriod = 10; Code:
//RVI double DN_PLUS = iRVI(ExtRVIPeriod); double DN_MINUS = iRVI(ExtRVIPeriod); Code aus der RVI mq4 Parameter Code:
//---- indicator parameters extern int ExtRVIPeriod=10; Code:
//+------------------------------------------------------------------+ //| Relativ Vigor Index | //+------------------------------------------------------------------+ int start() { int i,j,nLimit,nCountedBars; double dValueUp,dValueDown,dNum,dDeNum; //---- if(Bars<=ExtRVIPeriod+8) return(0); //---- nCountedBars=IndicatorCounted(); //---- check for possible errors if(nCountedBars<0) return(-1); //---- last counted bar will be recounted nLimit=Bars-ExtRVIPeriod-4; if(nCountedBars>ExtRVIPeriod+4) nLimit=Bars-nCountedBars; //---- RVI counted in the 1-st buffer for(i=0; i<=nLimit; i++) { dNum=0.0; dDeNum=0.0; for(j=i; j<i+ExtRVIPeriod; 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) ExtRVIBuffer[i]=dNum/dDeNum; else ExtRVIBuffer[i]=dNum; } //---- signal line counted in the 2-nd buffer nLimit=Bars-ExtRVIPeriod-7; if(nCountedBars>ExtRVIPeriod+8) nLimit=Bars-nCountedBars+1; for(i=0; i<=nLimit; i++) ExtRVISignalBuffer[i]=(ExtRVIBuffer[i]+2*ExtRVIBuffer[i+1]+2*ExtRVIBuffer[i+2]+ExtRVIBuffer[i+3])/6; //---- return(0); } ![]() |
|
|||
![]()
"... Dann die Definitionen nach Start:
Code: //RVI double DN_PLUS = iRVI(ExtRVIPeriod); double DN_MINUS = iRVI(ExtRVIPeriod); Beim Kompilieren heißt es für beide Zeilen "'iRVI' - wrong parameters count Valerius_(CCI_FI_RVI)_Metatrader4_EA.mq4 113 18..." Klar! Da könnte evtl. noch der Index des Bufferspeichers fehlen. Und v.a. auf welcher Kerze soll denn der Indikatorwert berechnet werden? Die fehlen leider immer noch die Basics. Du scheinst auch nicht viel nachgeholt zu haben, denn das mit den Levels des CCI haben wir Dir schon vor einiger Zeit mehrmals!! erklärt, dass die beiden Levelwerte nichts in der Funktion iCCI() zu suchen haben. Das ist auch der Hammer: "//RVI double DN_PLUS = iRVI(ExtRVIPeriod); double DN_MINUS = iRVI(ExtRVIPeriod);" Wie soll denn unterschieden werden zwischen DN_PLUS und DN_MINUS bei identischer Parameterübergabe? traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
||||
![]()
OK, ich fange dann mit EURUSD an, wenn ich den Import hinbekommen habe.
__________________
Is there anybody out there? |
|
|||
![]()
Bekommst Du es hin, Indikatoren etc. in den EA einzubaun? Ich anscheinend nicht.
![]() https://www.amazon.de/Algorithmische.../dp/3732366715 |
![]() |
Lesezeichen |
Stichworte |
ea programmieren, expert advisor programmieren, mql4, programmierung, programmierung metatrader, valerius, valerius ea, valerius expert advisor |
|
|