Wieso funktioniert Shift nicht. Der Parameter Shift ist der Bar für die du den CCI berechnen willst. 0 ist der aktuelle Bar, 1 der Bar davor usw.
Die 5 Zeilen-Liste ist keine Liste sondern die Definition der Funktion iCCI. Wenn du deinen Editor aufmachst und oben auf Hilfe klickst kommst du unter anderem zur MQL4-Referenz. Da gibst Du iCCI als Suchbegriff ein und findest ne Beschreibung der Funktion. Oder du klickst in deinem Code mit der Maus auf die Funktion iCCI (oder was auch immer dir unklar ist) und drückst F1. Dann geht ein Fenster auf und du bist sofort auf der Funktion/Beschreibung die du suchst. |
Liste der Anhänge anzeigen (Anzahl: 2)
Lassen wir den CCI einfach erst mal aussen vor.
Kann Jemand helfen den RVI einzubaun? |
RVI Refernce
Bsp. RVI Main unter RVI Signal Code:
bool rviDown (int period, int shift) Code:
if (rviDown(14,1)) |
Da gibt's keinen Unterschied zur Funktion iCCI(). Die Verwendung der Funktion iRVI() funktioniert genauso.
double iRVI( string symbol, // symbol int timeframe, // timeframe int period, // averaging period int mode, // line index int shift // shift ); Beispiel: Willst du den RVI für den aktuellen Chart im aktuellen Timeframe über 10 Perioden berechnen sieht das für den aktuellen Bar 0 so aus: double val=iRVI(NULL,0,10,MODE_MAIN,0); |
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
5-Zeilen Weise eingebaut. Sondern es werden die einzelnen Elemente, die Funktionen extra aufgerufen. Kanns nicht genau erklären, aber er wird in meinen EA anders eingefügt als mit Deinen 5 Zeilen. Deswegen ist das schon richtig: Code:
//CCI GV Code:
//CCI |
Zitat:
double iCCI( string symbol, // symbol int timeframe, // timeframe int period, // averaging period int applied_price, // applied price int shift // shift ); Ich habe mal den 3. Parameter fett markiert. In der Doku steht da int period // averaging period D.h. period steht für die Periodenangabe des Indikators, also die Anzahl der Kerzen, die in die Vergangenheit betrachtet werden sollen. 1. Ist Deine Periode nicht 100 und auch nicht -100 2. Gibt es keine!!!!!! negativen Perioden (schon daran müsstest Du erkennen, dass Du auf dem Holzweg bist) Mit double CCI = iCCI(_Symbol,_Period, InpCCIPeriod, CCI_Price, 1); wurden alle 5 Parameter (Zeilen) richtig angegeben. Aber ich (wir) verstehe(n) nicht, warum Du es nicht begreifen willst, dass für periode nicht die Indikatorlevels eingegeben werden dürfen? In Summe sind Deine Programmzeilen bzgl. double IL1 und double IL2 nach wie vor falsch und damit werden auch falsche Ergebnisse weiterverarbeitet. traderdoc |
Ok, wie gesagt:Vergessen wir das einfach. Ich werds später
rausfinden. Bitte lassen wir den CCI erst mal aussen vor. Bitte helft mir jetzt, den RVI einzubauen. Bitte Bitte Bitte! :rolleyes: Für Euch Progger muss es doch immer interessant sein, an EAs zu basteln. ;) |
Zitat:
Den RVI baust Du ein, wie die Zeile des CCI bzgl. double CCI. Das wirst Du aber nur erfolgreich bewältigen, wenn die Grundlagen bei Dir angekommen sind. Und wie man aus Deinem letzten Post erlesen kann, sind die noch nicht angekommen. Deine Vorgehensweise und Renitenz schreckt aber inzwischen alle Programmierer ab. Und wer ernsthaft programmiert, der bastelt nicht. traderdoc |
@MA-EA was ist da so schwer zu verstehen. Diese "vermeintlichen" 5 Zeilen sind nur eine Zeile im Programmcode:
double iRVI( string symbol, // symbol int timeframe, // timeframe int period, // averaging period int mode, // line index int shift // shift ); Dies ist nichts weiter als die Beschreibung der Funktion iRVI mit der Erläuterung der erforderlichen Parameter. Im Programmcode schreibt man das dann natürlich so: double iRVI(symbol,timeframe,period,mode,shift); und genauso geht das bei der Funktion iCCI. In der mql-Referenz ist auch genau festgelgt, an welcher Stelle welche Variable stehen muss !! |
@MA-EA
Die Zeilen double IL1 und double IL2 mußt du ersetzen Mit z.B.: Code:
bool IL1 () Die Levels sind nicht Bestandteil der Rückgabe iCCI(...) iCCI gibt nur den Datentyp double auf Grundlage der von dir übergebenen Variblen zurück. Bei einer Period die in der Zukunft liegt (Periodenwerte < 0) ist es nichts. Das selbe wirst du mit iRVI haben deshalb ist es wichtig zu verstehen was hier passiert. |
Liste der Anhänge anzeigen (Anzahl: 1)
Fehlermeldungen zum RVI sind weg. Allerdings hab ich doch Zweifel, dass
das so funktioniert: Code:
//Relativ Vigor Index Ausserdem musste ich die [WIKI]CCI[/WIKI] Lines umbenennnen, weil sie sonst genauso heißen wie die des Williams Percent Range: Code:
//Commodity Channel Index Funktioniert das so? |
Nö ist nicht richtig, der Quatsch mit den indicator_levels ist ja immer noch drin.
Wenn Du das mit den Leveln beim iWPR genauso machst wird das wieder Murks. Beim iRVI ist der vierte Parameter (dNum/dDENum) laut Referenz vom Datentyp int und nicht double. Außerdem scheinen die Werte von dNum/dDeNum (Anzahl der Perioden über die der WPR berechnet werden soll) nicht definiert zu sein. Nochmal langsam: bei Funktionen in mql sind die Parameter in Klammern von der Bedeutung her immer eindeutig festgelegt, auch die Reihenfolge ist genau festgelegt !!! iCCI(Parameter1,Parameter2,Parameter3,Parameter4,P arameter5); Auch wenn Du in Deinem EA den Parameter3 mit indicator_level benennst liest der EA das IMMER als Periode über die der CCI berechnet werden soll. Das ist von den Entwicklern so definiert und nicht durch Variablennamen änderbar !!! Dafür gibts ja die mql-Referenz in der man das nachlesen kann. Deine Variable IL2 berechnet den CCI über 100 Perioden und IL1 liefert Mist weil -100 Perioden gibts beim CCI nicht. Lass dir die Variablen doch einfach mal mit Print im Journal ausgeben dann siehst Du das. |
Zitat:
Und das wird auch nicht besser, wenn Du denselben Quatsch das x-te Mal postest. traderdoc |
Hallo.
Ne Frage zum allgemeinen Verständnis. Wenn der EA sozusagen seine Bedingungen aus der MQL der Indis holen soll, dann rechnet er ja eigentlich nicht selber, sondern fragt den Indi sozusagen nach dem Ergebnis. Weiß nicht, wie ichs sonst sagen soll. :rolleyes: Er gibt dem Indi die Parameter vor, lässt sich die Ergebnisse sagen und prüft ob Ein/Ausstiegs- Bedingungen erfüllt sind. Soweit ich das verstanden habe. :confused: Um die Antworten zu erhalten, muss er natürlich entsprechende Ergebnisse mit den richtigen Begriffen abfragen. Also wenn er z.B. nen MA berechnen lässt, gibt er sozusagen seine MA-Parameter und Einstellungen an die MA MQL weiter. Er fragt dann sozusagen "welchen Wert hat nen Simple MA Bar1, wenn er im Chart H1 auf 10 Perioden gelegt wird." Jetzt mal als blödes Beispiel. :rolleyes: Der Indi berechnet alles und antwortet z.B. mit "857.489 Pips". In den Open/Close Bedingungen checkt der EA dann, ob die Bedingungen für Ein/Ausstieg gegeben sind. Der EA selber benutzt keine Formeln, nur die Stichwörter, nach denen er den Indi abfragt. Hab ich das richtig geschnallt? :confused: |
Na so ähnlich. iCCI oder iRVI sind Funktionen die dir den Indikatorwert für einen bestimmten Bar berechnen.
Mal ein einfaches Beispiel: b=4 a=Quatratwurzel(4) - Hab kein Quatratwurzelzeichen auf der Tastatur Das würde man in mql4 dann so schreiben: double b=4; double a=sqrt(b); Das Ergebnis wäre dann 2, a hätte somit den Wert 2 angenommen. Die Berechnung der Indikatoren ist genauso Beispiel: Die Variable ma10 soll den einfachen gleitenden Durchschnitt der letzten 19 Perioden des aktuellen Charts im aktuellen Timeframe für Bar Nummer 1 erhalten: double ma10=iMA(NULL,0,19,0,MODE_SMA,PRICE_CLOSE,1); Nachdem diese Programmzeile durchlaufen ist, ist in der Variablen ma10 der GD von Bar 1 enthalten. Dabei hat jede Variable/Zahl in der Klammer eine eineindeutige Bedeutung !!! Man kann die Variablen/Bezeichner in der Klammer nur in dieser Reihenfolge angeben. In diesem Fall hätten die Zahlen in der Klammer folgende Bedeutung: 1. NULL - Das Währungssymbol (NULL bedeutet das Aktuelle auf dem Chart) 2. 0 - diese null steht für das Timeframe - 0 bedeutet aktuelles TF) 3. 19 - Anzahl der Perioden über die der GD berechnet werden soll) 4. 0 - Anzahl der Perioden um die der GD verschoben werden soll 5. MODE_SMA - Art der Durchschnittsbildung(Simpel/Smooth etc.) 6. PRICE_CLOSE - der Preis der für die Berechnung herangezogen werden soll 7. 1 - die Barnummer für die der GD berechnet werden soll Und genauso funktioniert das bei der Berechnung des iCCI oder iRVI. Jede Variable hat an einer bestimmten Stelle in der Klammer eine bestimmte Funktion. Deshalb ist dies hier eben falsch: double IL2 = iCCI(_Symbol,_Period, CCI_indicator_level2, CCI_Price, 1);//+100 Die Variable indicator_level2 steht an der Stelle, wo iCCI die Anzahl der Perioden über die der CCI berechnet wird erwartet. Und so wird der Wert des CCI vollkommen falsch berechnet. Hoffe, das hat Dir ein bischen geholfen. |
Liste der Anhänge anzeigen (Anzahl: 2)
Danke, kapier ich nicht. :rolleyes:
Bitte nicht schimpfen, bin müde und hab Kopfweh. :( Code:
//RVI GV Code:
//Relativ Vigor Index dem Schinken auch nach Stunden kein bißchen schlauer. :confused: Fehlermeldungen gibts keine, aber obs funktioniert... |
Jeder Indikator erbt die externen Parameter Symbol, Timeframe und Mode, Shift. Deshalbbraucht man diese auch nicht mit in den deklarationsteil aufnehmen, dort stehen also nur die vom Programmierer zusätzlich benötigten externen Parameter. Zu erkennen an extern oder input.
Wenn also ein Indikator in seinem Code nur stehen hat: extern int period = 10; So muss der aufruf mit Indikator (Symbol, Timeframe, period, Mode, Shift) erfolgen. Da die ersten beiden und der letzte Parameter von der "Superklasse" kommen. Mode ist hier dann die Angabe auf welchen Buffer zugegriffen werden soll, tritt aber nur auf wenn der Indikator mehr als einen Wert ermittelt z.b. RVI oder MACD etc.pp. Dein Levels aus dem CCI sind keine externen Parameter und als solche auch nicht gekennzeichnet! Gruß Zyr |
Ich bewundere Eure Geduld. Der gute MA-EA kämpft anscheinend an vielen Fronten. Lest mal hier:
Neuer Valerius Metatrader 4 EA Es war spät und Kopfschmerzen hatte er da auch! |
Jo, das ist der Hammer:
"Ok, wie gesagt:Vergessen wir das einfach. Ich werds später rausfinden. Bitte lassen wir den CCI erst mal aussen vor. Bitte helft mir jetzt, den RVI einzubauen. Bitte Bitte Bitte! Für Euch Progger muss es doch immer interessant sein, an EAs zu basteln." Dieses Post von @Valerius alias @MA-EA habe ich doch vor Kurzem auch hier genauso verfasst gelesen. In diesem Thread des Aktienboards stehen noch andere Posts 1:1 drin und wurden hier einfach hineinkopiert. @MA-EA, ich muß schon sagen, so ein Paradiesvogel ist an mir schon lange nicht mehr vorbeigeflogen. traderdoc |
Tja anscheinend liest er sich unsere tips nicht mal durch...
Und macht sich nen Spaß draus ein auf auf DAU zu machen.... |
Da hilfreiche Antworten rar gesät sind, bleibt
mir ja nix übrig, als auch beim AB um Hilfe zu bitten. :rolleyes: IL1 und IL2 legen den Wert der oberen und unteren Linie des CCI fest. Nicht ihre Periode. Die wird mit der Ziffer am Ende definiert. Nach dem Muster funktionieren alle meine EAs. Nicht nach irgendwelchen Funktionsbeschreibungen in irgendwelchen Hilfe-Dateien. ;) Können wir jetzt bitte mit dem RVI weitermachen? |
Sorry, können wir von meiner Seite aus nicht. Wenn dein EA so arbeitet wie er soll trotz fehlerhaften Code bzw. falsch angewendeten Funktionen, weil die Funktionsbeschreibungen ja irrelevant sind. Was willst du dann von uns? Du machst doch eh dein Ding und ignorierst unsere versuche dir das bei zu erklären.
Belege lieber irgendein Anfängerkurs für Programmierung. Wenn du die grundlegenden paradigmen kennst, klappt es vielleicht auch mit dem Verständnis. |
In meinem MQL4 Buch stimmt irgendwie die Hälfte nicht. :confused:
Brauch nen Korrektes. :( |
Zitat:
Übrigens die Ziffer am Ende ist nicht die Periode, sondern das Shift!, also die Kerze auf der der Indikatorwert berechnet werden soll. Grundkurs belegen! und hier nicht immer so klug rumschwatzen. traderdoc PS. Weitermachen sollten wir erst, wenn Du das richtig verstanden hast. Ich schrieb auch bereits, dass es keine negativen (-100) Perioden gibt!!! |
Mein Schinken über mql4 hat anscheinend nicht nur Rechtschreib- sondern vor allem inhaltliche, logische Fehler. An einer Stelle heißt es, man müsse Indis mit mehreren [WIKI]Linien[/WIKI] mit "mode" oder so auslesen. In der darauf folgenden Beschreibungen des [WIKI]RSI[/WIKI] ist dieses Wörtchen aber nicht mehr zu finden. Vor allem sucht man das, was man eigentlich wissen will, immer vergeblich. Z.B. im [WIKI]RSI[/WIKI] soll ein Buy bei:D über 30 entstehen. Jetzt soll man entsprechende Order-Bedingung irgendwie für [WIKI]Bar[/WIKI] 1 und 0 eintragen. Etwas später heißt es dann, dass Bar0 ja hin und her geht und man deswegen [WIKI]Bar[/WIKI] 1 und [WIKI]Bar[/WIKI] 2 in die Buy Bedingung eintragen soll. :eek: Entweder verarscht der Einen oder die Schreiberlinge haben noch weniger Ahnung vom Proggen als ich. :rolleyes: Werd den Schrott dann mal bei ebay einstellen, in der Hoffnung, wenigstens noch 1/3 des Preises wieder rein zu bekommen. :(
|
@MA_EA:
Schreib du doch mal nen Buch über mql. Das wird bestimmt nen Bestseller. Im Ernst, das was in deinem Buch steht scheint jetzt nicht wirklich falsch zu sein. Du hast nur wieder Deine eigene Interpretation der Dinge und verstehst nicht was da steht. Beispiel Zitat:
Willst Du die Hauptlinie Bar0 auslesen machst Du das mit MODE_MAIN, also double val=iRVI(NULL,0,10,MODE_MAIN,0); Willst Du die Signallinie auslesen verwendest Du MODE_SIGNAL, also double val=iRVI(NULL,0,10,MODE_SIGNAL,0); Welche Indikatoren mit welchen Modes ausgelesen werden können findest Du in der MQL-Hilfedatei. Bei allen Standardindikatoren mit mehreren Linien(Ichimoku,ADX,Bollinger,Stoch,MACD..) gibt es festgelegte MODES zum Auslesen der Linien. Zitat:
Mit den Bars das erklär ich dir jetzt aber nicht auch nochmal. |
Zitat:
Also, erspare Dir Dein permanentes Kopfweh und uns diese unnötigen Posts, die hier nur Kraft, Zeit und Platz kosten. Nimm Dir fertige EAs oder Indikatoren und gehe die Zeile für Zeile durch. Du musst wirklich verstehen, was da gemacht wurde. Ansonsten gibt es eine gute MQL-Dokumentation und ein überaus großes Forum dazu. traderdoc |
Ja, aber erst rät er einem zu Bar 0, dann zu Bar 1 oder was weiß ich...
Egal, es scheint hier eh kein Interesse zu geben. Die grobe Richtung steht (jedenfalls für mich) fest: 1. Commodity Channel Index (Bestätigung) 2. Fractals (Bestätigung) 3. Relativ Vigor Index (Signale) 4. Stochastic Oszillator (Signale) Ggf. kann der ein oder andere Indi noch mit rein, bzw. evtl. welche raus. Falls doch Jemand an nem entsprechenden Free EA Interesse hat, an dem er selber mit bauen kann, dann möge er mir bitte helfen, die aufgezählten Indis in nen EA einzubaun. Ansonsten Tschüss. |
Zitat:
Ob Bar 0, 1 oder 2 hängt erstens vom Tradingsystem ab und zweitens von der persönlichen Vorliebe, ob man eben "ganz schnell" sein will und damit Bar 0 benutzt, oder ob man eben eher auf die "ruhige" Tour geht und Bar x benutzt. Z.B. das Kreuzen zweier MAs würde ich nur mittels Bar1 und 2 realisieren. Na ja und das mangelnde Interesse hast Du hier selbst vergeigt. Wer permanent (bis jetzt!) die Tips ignoriert, den CCI richtig zu berechnen, der kann doch nicht darauf bauen, weiterhin Support zu bekommen. Also denke mal bitte über Deine Kommunikationsstrategie nach. Ich glaube, da ist noch erheblicher Optimierungsbedarf und v.a. ein erheblicher Lernbedarf bzgl. MQL traderdoc |
Hallo.
Hab bis eben den CCI heute ganz allein Forex traden lassen von 8 bis 17:37 Uhr. Indicator Lines 1 und 2 Euren Wünschen entsprechend auf 1 gestellt. Hier die Bilanz von heute: Code:
Closed Trade P/L:-1.15 Indicator Lines auf 100 und -100. |
Was hast Du genau auf 1 gestellt? Code!
Und nicht unseren Wünschen nach, sondern den Erfordernissen einer korrekten Programmierung nach! Das ist ein ganz großer Unterschied. traderdoc |
Und keiner hat gesagt das du die CCI Periode auf 1 setzen sollst. Wir haben dir versucht zu erklären, dass da wo du deine Level einsetzt die CCI Periode erwartet wird.
Um es mal mit der Vertragsmodell zu erklären: Die Funktion iCCI ist ein Dienstleistunger und er erwatet für seine Dienstleistungen korrekte Informationen. Im gegenzug sichert er dir als Client dafür zu eine 100% ige Antwort zu liefern. Was denkst bekommst du hier vom Apotheker wenn du ihm statt Euro Rubel in die Hand drückst? Bestimmt wirst du dann eben kein Aspirin bekommen, denn er erwartet die Bezahlung in Euro. |
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Code:
//CCI GV Code:
//CCI ichs echt nicht. :confused: |
Jo, ist natürlich wieder falsch!! Da kommt die Periode rein! Eine Periode!!!!!! über wieviele Kerzen der Indikator berechnet werden soll. Mann, was gibt es daran nicht zu verstehen? D.h. dort kommt genau diese Variable rein - InpCCIPeriod
Und da diese Zeile bereits existiert: double CCI_B1 = iCCI(_Symbol,_Period, InpCCIPeriod, CCI_Price, 1); braucht nun nur noch der Vergleich mit den Linien 100 und -100 geschrieben werden: extern double indicator_level1 = -100; extern double indicator_level2 = 100; if (CCI_B1 > indicator_level2) //Buy if (CCI_B1 < indicator_level1) //Sell So und jetzt setze das endlich in Deinem Code so um. traderdoc |
Ich glaub mein MQL Buch ist echt fürn Ar... :mad:
Danke für Eure Geduld. :rolleyes: Allerdings würd ich schon gerne den Wert der Linien in den GV festlegen können. |
Bitte sagt mir einfach, ob das richtig ist. Wenn nicht,
weiß ich gerade echt nicht weiter. :( Code:
//RVI GV Code:
//Relativ Vigor Index Code:
if (TC>F && TC<T && S<=MS && OP0>=CP1 && CCI>IL2 && RVI>RVI_S) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, Name + " Buy(#" + MagicNumber + ")", MagicNumber, 0, Blue); Code:
if (OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()){ |
Korrekt:
Code:
//Relativ Vigor Index |
Und vorausgesetzt die Variablen IL1 und IL2 werden nun endlich richtig berechnet!
traderdoc |
Liste der Anhänge anzeigen (Anzahl: 1)
Also muss man bei mehreren Zeilen auf jeden Fall Mode benutzen? Aber ich könnte schwören, dass es auch ohne ging. :confused:
Was ich überhaupt nicht kapiere, ist, dass im Strategietester der CCI 2 Fenster hat. Einmal die richtige Perioden-Glättung von 14. Dann noch mal (nicht - sondern +)100. :eek: https://charts.mql5.com/13/255/eurus...kers-ltd-3.png |
Z.B. mein Ichimoku Kinko EA. Der Ichi wird mit MODE ausgelesen. Aber der CCI nicht? :confused:
Code:
//Ichimoku |
Alle Zeitangaben in WEZ +2. Es ist jetzt 22:37 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