Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Neuer Valerius Metatrader 4 EA (http://www.expert-advisor.com/forum/showthread.php?t=5159)

MA-EA 08.09.16 14:43

Neuer Valerius Metatrader 4 EA
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo.

Leider sind gleitende Durchschnitte ja nicht gerade das Gelbe vom Ei. :rolleyes:
Deswegen will ich mich ans Werk machen, und einen komplett neuen
EA für den MT4 basteln. Und Ihr dürft mir gerne Alle helfen. :D Als
Dankeschön gibts unser Werk völlig kostenlos hier zum Download.

Hauptsächlich soll er komplett selbständig intraday mit Forex, vielleicht mal mit CFDs traden. Wenns nach mir geht, werden von 8 bis ca. 16:22 Long & und Short Orders geöffnet. Alle, die um 17:37 noch offen sind, werden genau dann geschlossen, ob im + oder -. Max Spread derzeit
40 Pipen.

Ich möchte einfach die klassischen Indis und Oszillatoren des MT4
einbauen. Und zwar die, die leicht zu verstehen und zu programmieren
sind, möglichst eindeutige Signale und Infos liefern, und möglichst keine Verzögerung haben. Welche im Einzelnen weiß ich aber noch nicht. Muss mich erst mal gründlich mit Allen befassen. :rolleyes:

Bis jetzt sind nur die Einstiegssignale des Commodity Channel Index drin.

CCI>0.0: Buy
CCI<0.0: Sell

Aktien Andy 08.09.16 17:17

Moin ;)

Prima Idee, wäre gern dabei

Da ich erst einmal checken muss, was der EA macht, habe ich ihn mal geladen.....beim kompilieren kommen mehrere Fehlermeldungen

Zeilen 102, 103, 112 und 115....je 2 Meldungen:
1-'&&' - operand expected
2- return value of 'OrderSend' should be checked

Gruß

Andreas

MA-EA 08.09.16 18:22

Liste der Anhänge anzeigen (Anzahl: 1)
Danke fürs Interesse.

Der ist noch lange nicht fertig, hab noch nicht mal richtig angefangen. Die Vers. im Anhang müsste keine Fehler mehr vorbringen. Wär dankbar, wenn man damit schon mal ein paar Tests machen könnte. ;)

MA-EA 08.09.16 20:20

Liste der Anhänge anzeigen (Anzahl: 1)
Hab jetzt mal grob ein paar Indis angeschaut. Ist gar nicht so einfach,
fürs Daytrading einen zu finden. Nächste Station wäre erst mal den Force Index einzubaun. :rolleyes:

MA-EA 09.09.16 09:02

Liste der Anhänge anzeigen (Anzahl: 1)
Hallo.

Vergesst die Vers. oben mit dem CCI. War nix. Im Anhang eine, die besser funktionieren müsste. Hab allerdings gerade keine Zeit und musste mich beeilen. :rolleyes:

Aktien Andy 09.09.16 12:07

Moin ;)

Gerne teste ich die verschiedenen Versionen. Ich habe im Moment nur das Problem, dass ich über Tickstory Lite keine Tickdaten mehr bekomme. Ich kann also nur mit den Daten aus dem Metatrader 4 testen; diese gehen bekanntermaßen nicht so weit zurück und sind eben auch keine Tickdaten.
Wäre gut, wenn Du mir schreiben könntest, welches Paar und / oder Indicies Du in welchem Timeframe über welchen Zeitraum benötigst; ggf. kann ich dann über einen VPS die Daten laden und sie auf meinen PC überspielen.

Schönes Wochenende!

Andreas

MA-EA 09.09.16 17:20

Hab immer nur FX getestet/getradet. Und davon nur die, die nen Spread von unter 40 und bei JFD 0.07 Euro Kommission hatten. Seit einiger Zeit sind es nur noch 0.06 Euro für alle WP. Ich trade im Demo und Live immer im 1H.

CCI Einstellungen:

1H
CCI:14, Price Typical (weiß nicht, ob Weighted besser ist)
Linien:100/-100

CCI>100 (obere Linie): Buy
CCI<0.0:Close

CCI<-100 (untere Linie): Sell
CCI>0.0:Close

Teste den CCI alleine seit heute vormittag im Demo, schaut gar nicht mal schlecht aus. Aber ganz alleine wird er fürs Trading nicht reichen, scheint aber ganz gut zu sein, um Einstiegssignale zu bestätigen. Werd aber nächste Woche noch mehr testen.

MA-EA 09.09.16 20:46

Liste der Anhänge anzeigen (Anzahl: 3)
Abend.

Hab versucht, den Force Index einzubaun. Gibt auch keine Fehlermeldung.
Allerdings kam mir das Ganze zu einfach vor.
Ob das richtig ist?

Globale Variablen:
Code:

//Force Index GV
extern string ForIn = "Force Index";
extern int ExtForcePeriod = 13;
extern int ExtForceMAMethod = 0;
extern string Method = "SMA:0; EMA:1; SMMA;2; LWMA:3";
extern int ExtForceAppliedPrice = 0;

Deklaration nach Start
Code:

//Force Index
//Buy/Sell when FI >/< 0.0
double FI = iMA(NULL,0,ExtForcePeriod,0,ExtForceMAMethod,ExtForceAppliedPrice,i)-iMA(NULL,0,ExtForcePeriod,0,ExtForceMAMethod,ExtForceAppliedPrice,i+1);

Code:

//Open Trade
if (!IsInvested){
if (TC>F && TC<T && S<=MS && CP1!=CP2 && CCI>IL2 && FI>0.0) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 0, Blue);
if (TC>F && TC<T && S<=MS && CP1!=CP2 && CCI<IL1 && FI<0.0) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 0, Red);}

Wie der CCI scheint er eher zur Bestätigung der Signale als zum
selbständigen Traden gut zu sein.

Im Anhang noch mal extra ne Version ohne FI, nur mit CCI.
Und die Quelldatei des FI-Oszillator + CCI_FI_EA.

ralfbenker 09.09.16 20:53

jetzt geht der Spass mit den indicator_levels wieder los.
Hatten wir das nicht schon mal in nem anderen Thread ?

@MA_EA
iCCI() ist eine Funktion der du Parameter übergibst. Der dritte Parameter in der Klammer ist immer die Anzahl der Perioden über die der CCI berechnet wird. An diese Stelle schreibst Du dann 100 Perioden oder -100 Perioden .

Dein Indikatorlevel wird also durch die Funktion iCCI als Anzahl der Perioden interpretiert.

MA-EA 09.09.16 21:16

Der Tag war hart, also kurz:

Bei der Dekla des GDs ist das wohl so.

Bei der Dekla der Linien gehts da aber nicht um Perioden, sondern um ihre Größe.

Code:

//CCI
{//Buy/Sell when CCI >/< 0.0
double CCI = iCCI(_Symbol,_Period, InpCCIPeriod, CCI_Price, 1);
double IL1 = iCCI(_Symbol,_Period, indicator_level1, CCI_Price, 1);//-100
double IL2 = iCCI(_Symbol,_Period, indicator_level2, CCI_Price, 1);//+100


MA-EA 09.09.16 22:09

Hallo.

Was ist eigentlich der "Relative Vigor Index"? Steht in meinem Indi-Oszi-Buch nicht drin. :confused:

Scheint auf den 1. Blick nicht so kompliziert zu sein. Der Schnellste ist aber wohl auch nicht. :(

https://charts.mql5.com/12/442/nzdch...rokers-ltd.png

MA-EA 09.09.16 22:14

https://www.mql5.com/de/code/8035

MA-EA 10.09.16 00:48

Liste der Anhänge anzeigen (Anzahl: 1)
Das schaut leider doch etwas komplizierter aus. :confused:
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;

Edit:5 Fehler beim Kompilieren

Aktien Andy 10.09.16 09:49

Moin ;)

Habe nun ein anderes Programm zum Laden der Tickdaten. Ich muss nur noch sehen, wie ich das in den MT4 bekomme.

Ich melde mich, wenn ich das hinbekommen habe, dann kannst Du mir sagen, welches Währungspaar ich zum Testen nehmen soll.

Ich habe Zugriff auf die üblichen Forex-Majors, Forex-Exotics, Gold, Silber, Kupfer, Platin, Palladium sowie Brent Oil und WTI Light Oil. Dazu auch noch 17 Indicies (DAX, Stoxx50, Dow etc.)

Gruß

Andreas

MA-EA 10.09.16 13:03

Zitat:

Zitat von Aktien Andy (Beitrag 35705)
Ich melde mich, wenn ich das hinbekommen habe, dann kannst Du mir sagen, welches Währungspaar ich zum Testen nehmen soll.

Am Besten Alles. :D Ich brauch eh noch ne Weile.

ralfbenker 10.09.16 14:53

Zitat:

Zitat von MA-EA (Beitrag 35699)
Der Tag war hart, also kurz:

Bei der Dekla des GDs ist das wohl so.

Bei der Dekla der Linien gehts da aber nicht um Perioden, sondern um ihre Größe.

Code:

//CCI
{//Buy/Sell when CCI >/< 0.0
double CCI = iCCI(_Symbol,_Period, InpCCIPeriod, CCI_Price, 1);
double IL1 = iCCI(_Symbol,_Period, indicator_level1, CCI_Price, 1);//-100
double IL2 = iCCI(_Symbol,_Period, indicator_level2, CCI_Price, 1);//+100


@MA-EA:
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);
Du wirst feststellen, dass IL1 immer 0 ist und sich nie ändert!!!
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.

MA-EA 10.09.16 15:43

Muss ich mir noch mal genau anschaun. :confused:

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;

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"

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);
  }

Komm gerade gar nicht klar. :confused:

traderdoc 10.09.16 17:40

"... 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

Aktien Andy 10.09.16 18:00

Zitat:

Zitat von MA-EA (Beitrag 35708)
Am Besten Alles. :D Ich brauch eh noch ne Weile.

OK, ich fange dann mit EURUSD an, wenn ich den Import hinbekommen habe.

MA-EA 10.09.16 21:50

Bekommst Du es hin, Indikatoren etc. in den EA einzubaun? Ich anscheinend nicht. :( In meinem MQL Buch steht irgendwas von "Mode" und was weiß ich Alles, was kein Mensch kapiert.

https://www.amazon.de/Algorithmische.../dp/3732366715

traderdoc 10.09.16 22:10

Das würde Dir auch gelingen, wenn Du die nötige Routine dazu hättest. Bis dahin ist es aber wie immer ein langer Weg. Diese Aufgabe, die Du Dir gestellt hast, ist einfach zu kompliziert. Setze doch erst einmal einfachere Aufgaben um.
Und wie gesagt, solange in die iCCI()-Funktion die Levels eingebaut werden, wird das eben nichts.

traderdoc

Aktien Andy 11.09.16 09:15

Zitat:

Zitat von MA-EA (Beitrag 35714)
Bekommst Du es hin, Indikatoren etc. in den EA einzubaun? Ich anscheinend nicht. :( In meinem MQL Buch steht irgendwas von "Mode" und was weiß ich Alles, was kein Mensch kapiert.

https://www.amazon.de/Algorithmische.../dp/3732366715

...wenn ich proggen könnte, hätte ich viele Probleme nicht!
Nein, ich habe keine Ahnung.

Zyr 11.09.16 14:48

Wenn du dir nicht sicher bis welche Variablen i die Klammern der Funktionen kommen schau dir die Dokumentation auf der Website an. Dort siehst du dann auch ein Beispiel aufruf der Funktion.

Ich würde aber entfehlen erstmal einfache Basics des Programmierens zu lernen.
Für mql reicht da imparative Programmierung für den Anfang.

Also was sind Typen, Variablen, Konstanten, for-schleife, while schleife, do while schleife, if abfrage, Funktionen, Prozeduren , arrays, listen, sets etc. pp.

MA-EA 12.09.16 19:39

Liste der Anhänge anzeigen (Anzahl: 1)
Kann mir Jemand nen gutes MQL 4 Buch empfehlen? Aber es muss auf deutsch sein.

Im Anhang erst mal mein CCI FI EA. Hoffe es ist Alles richtig. :rolleyes:

traderdoc 12.09.16 22:03

Zitat:

Zitat von MA-EA (Beitrag 35726)
Kann mir Jemand nen gutes MQL 4 Buch empfehlen? Aber es muss auf deutsch sein.

Im Anhang erst mal mein CCI FI EA. Hoffe es ist Alles richtig. :rolleyes:

Ne, ist natürlich nicht alles richtig. Ich habe mir nur die iCCI()-Funktion angesehen. Und was sehe ich,

double CCI = iCCI(_Symbol,_Period, InpCCIPeriod, CCI_Price, 1);
double IL1 = iCCI(_Symbol,_Period, indicator_level1, CCI_Price, 1);//-100
double IL2 = iCCI(_Symbol,_Period, indicator_level2, CCI_Price, 1);//+100

Fast unglaublich dieses Renitenz. Wie oft haben wir geschrieben, dass die zweite und die dritte iCCI()-Funktion falsch!! geschrieben wurde. Die Level haben in dieser Funktion nichts zu suchen! Wie oft sollen wir das noch schreiben?
Wenn dann müsste CCI direkt mit den Levels verglichen werden!

So nun nochmal zur Funktion iCCI():

double iCCI(
string symbol, // symbol
int timeframe, // timeframe
int period, // averaging period
int applied_price, // applied price
int shift // shift
);
D.h. die dritte Variable ist die Periode und nicht!! das Level. Mehr gibt es dazu nicht zu schreiben. Und solange Du das nicht verstehst, wird Dein Programm immer falsche Ergebnisse liefern.

So, nun habe ich aber wirklich das allerletzte Mal etwas zu diesem Unsinn geschrieben. Ich meine, Fehler machen wir alle, da will ich mich auch gar nicht ausnehmen, aber Deine Lernresistenz ist schon was Besonderes.

traderdoc

MA-EA 13.09.16 00:06

Testet den EA bitte einfach mal, dann werden wir sehn, dass das mit
dem CCI korrekt ist.

inp CCI Period:Glättungsfaktor des MA, wie bei iMA.
L1/L2:-100 und +100 Linie.

Bei allen steht die Kerze, mit der gerechnet werden soll, ganz hinten.
Wie bei allen anderen Indis auch.

Ausserdem werden Bars und Glättungsparameter immer mit int angegeben. Jedenfalls bis ich was Anderes erfunden habe. :cool: :D

traderdoc 13.09.16 07:40

Unglaublich!

MA-EA 13.09.16 10:14

Liste der Anhänge anzeigen (Anzahl: 1)
Wenn Ihr die neueste Version testet, dann bitte "Close loss Trades
fast" auf "false" stellen. Sofern die in diesem Anhang nicht schon entsprechend ist. Sonst spinnt das Teil rum. :confused:

ralfbenker 13.09.16 15:55

Zitat:

Zitat von MA-EA (Beitrag 35730)

Ausserdem werden Bars und Glättungsparameter immer mit int angegeben. Jedenfalls bis ich was Anderes erfunden habe. :cool: :D

cool - hab ich noch nicht gewusst dass Glättungsparameter vom Datentyp int sind. Dachte immer dass das was in der mql Referenz steht richtig ist. Von Glättungsparametern hab ich da nix gefunden.

Da müssen die Entwicker von mql ja getrieft haben als sie die Beschreibung verfasst haben.

Naja, ich werde mal bei meinen EA's zum glätten weiterhin die Funktionen MathRound() oder round() benutzen.

traderdoc 13.09.16 20:06

Zitat:

Zitat von MA-EA (Beitrag 35733)
Wenn Ihr die neueste Version testet, dann bitte "Close loss Trades
fast" auf "false" stellen. Sofern die in diesem Anhang nicht schon entsprechend ist. Sonst spinnt das Teil rum. :confused:

Nach wie vor falsch! D.h. jegliche Testergebnisse entsprechen nicht der Realität.

traderdoc

MA-EA 13.09.16 20:35

Liste der Anhänge anzeigen (Anzahl: 1)
Wenn mein CCI so falsch ist, warum hat der EA dann heute im Demo
rund 30 € Gewinn gemacht? Obwohl tatsächlich die Ausstiegs-Bedingungen ungünstig geproggt waren.

Mit der Version im Anhang müsste es besser laufen.

ralfbenker 13.09.16 21:31

Nur weil der EA heute mal Gewinn gemacht hat muss die Einstiegsbedingung ja nicht unbedingt richtig programmiert sein.

Hast Du Dir mal die Werte von IL1_B1 oder IL1_B0 mit Print() anzeigen lassen.
Beide Variablen sind immer NULL !!!

somit musst Du in Zeile 123 nicht schreiben CCI_B1<IL1_B1
Sondern könntest auch schreiben CCI_B1< 0
Statt CCI_B0<IL1_B0 geht dann auch CCI_B0<0.

Dasselbe ist in Zeile 135 CCI_B1>IL1_B1 kannst Du ersetzen mit CCI_B1>0


Dein EA wird dasselbe Ergebnis liefern im Backtest aber nicht das tun was du denkst was er tut :-)
Hast Du eigentlich nen System nach dem Du die geschweiften Klammern setzt oder machst Du das nach Zufallsprinzip solange bis keine Fehlermeldungen erscheinen ?
Sorry, Du musst das Sprachkonzept lernen sonst wird das nie was.

traderdoc 13.09.16 21:52

Zitat:

Zitat von ralfbenker (Beitrag 35740)
Nur weil der EA heute mal Gewinn gemacht hat muss die Einstiegsbedingung ja nicht unbedingt richtig programmiert sein.

Hast Du Dir mal die Werte von IL1_B1 oder IL1_B0 mit Print() anzeigen lassen.
Beide Variablen sind immer NULL !!!

Hast Du eigentlich nen System nach dem Du die geschweiften Klammern setzt oder machst Du das nach Zufallsprinzip solange bis keine Fehlermeldungen erscheinen ?
Sorry, Du musst das Sprachkonzept lernen sonst wird das nie was.

Ja, davon rede ich schon die ganze Zeit!!
Aber der Junge ist einfach lernresistent.

traderdoc

traderdoc 13.09.16 22:30

Ach so, was ich noch dazu ergänzen wollte:

Das ist ne richtig logische Logik: "Der EA hat heute Gewinn gemacht, da muß er ja richtig programmiert sein".

Was es aber nicht auch alles gibt.

traderdoc

MA-EA 13.09.16 22:40

Kollegen...

Sorry, ich hab keinen Bock, jetzt noch mal Alles zu erklären. ;)
Also macht einfach folgendes Experiment: Kompiliert den EA,
den ich heute zuletzt hoch geladen hab. Dann testet ihn mal mit
"Indicator Line"s 100 u. -100. Dann noch mal mit "Period" 1 und 1. Oder was Ihr Euch da gedacht habt.

Dann helft mir bitte mit dem Einbau des Relativ Vigor Index. Wenn
wir uns beim CCI nicht einig werden, kann zur Not der RVI dessen Job
übernehmen.

Viel Spaß und gute Nacht. :cool:

traderdoc 13.09.16 23:14

Zitat:

Zitat von MA-EA (Beitrag 35745)
Kollegen...

Sorry, ich hab keinen Bock, jetzt noch mal Alles zu erklären. ;)
Also macht einfach folgendes Experiment: Kompiliert den EA,
den ich heute zuletzt hoch geladen hab. Dann testet ihn mal mit
"Indicator Line"s 100 u. -100. Dann noch mal mit "Period" 1 und 1. Oder was Ihr Euch da gedacht habt.

Dann helft mir bitte mit dem Einbau des Relativ Vigor Index. Wenn
wir uns beim CCI nicht einig werden, kann zur Not der RVI dessen Job
übernehmen.

Viel Spaß und gute Nacht. :cool:

Du brauchst es nicht zum 100. mal erklären. Damit wird es auch nicht besser.

Diese Zeile ist richtig, weil die dritte Variable eine Indikatorperiode ist!!!
double CCI_B0 = iCCI(_Symbol,_Period, InpCCIPeriod, CCI_Price, 0);

In dieser Zeile steht als Indikatorperiode eine -100. Erstens können Perioden nur positiv sein, ansonsten setzt der Compiler dafür eine 0 ein und damit ist das Ergebnis IL1_B0 immer!!!!!!!! 0.
double IL1_B0 = iCCI(_Symbol,_Period, indicator_level1, CCI_Price, 0);//-100

In dieser Zeile wird zwar für IL_2B0 ein Wert errechnet, weil die dritte Variable positiv ist, aber mit der Periode 100 soll da sicherlich nicht gerechnet werden, d.h. der errechnete Wert bezieht sich auf die letzten 100!!! Kerzen.
double IL2_B0 = iCCI(_Symbol,_Period, indicator_level2, CCI_Price, 0);//+100

So, also wenn Du nun immer noch nicht Deinen fatalen Denkfehler erkannt hast, dann kann Dir keiner mehr helfen. Und das hat nichts mit "nicht Bock haben" zu tun und auch nicht mit "nicht einig werden". Das hat was mit einer simplen, aber korrekten Programmierung zu tun.
Alles andere ist Murks, Ausprobiererei, Nonsens.

traderdoc

MA-EA 14.09.16 09:32

Liste der Anhänge anzeigen (Anzahl: 2)
Ok, wisst Ihr was? Wir (bzw. Ihr) lassen den CCI einfach raus. ;) Stattdessen
verwenden wir einfach den Relativ Vigor Index. Weiß aber nicht so
richtig, wie einbaun. :confused:

traderdoc 14.09.16 10:35

Ich habe ja nun schon wirklich unzähligen Usern programmtechnisch geholfen, den richtigen Weg zu finden. So auch in Deinem Fall, nur mit dem Unterschied alle! anderen haben die Tips und Hinweise dankend angenommen, sofort umgesetzt und nicht vor lauter Trotz das Handtuch hingeschmissen.
Das ist definitiv der falsche Weg, weil Du so nicht weiter kommen wirst. Das, was hier passiert ist, wird symptomatisch weiterbestehen. Eingebaute Fehler, die nicht sofort sichtbar sind, wie der mit dem iCCI(), werden dann nicht erkannt und könnten sich ggf. sehr negativ auswirken.

traderdoc

ralfbenker 14.09.16 18:48

Kann ich nur bestätigen. Ob iCCI(), iRVI(), iRSI() oder wie die Indikatorfunktionen alle heißen- deren Verwendung ist immer gleich. Und wenn das mit iCCI zu kompliziert für dich ist wird das mit iRVI auch nicht besser.

Programmieren kann man lernen. Aber nur mit probieren ohne Verständnis wird das nichts.

MA-EA 14.09.16 19:16

Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von ralfbenker (Beitrag 35758)
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.

Shift funktioniert nicht. Darf ich fragen, wo Du die 5-Zeilen Liste
her hast? Ich jedenfalls hab in der Quelldatei nur diese
Parameter gefunden:
Code:

extern int InpCCIPeriod = 14;
extern double indicator_level1 = -100.0;
extern double indicator_level2 = 100.0;
input ENUM_APPLIED_PRICE CCI_Price = PRICE_TYPICAL;

Der Rest bezieht sich wohl auf diese MA-Quelldatei. S. Anhang.

Wenn ich das richtig verstehe, wird der CCI hier nicht als
Funktion benutzt, sondern nur abgefragt. Bin aber Voll-Noob. :rolleyes:


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:35 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum