|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
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. |
|
|||
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) { return iRVI (NULL, 0, period, MODE_MAIN, shift) < iRVI (NULL, 0, period, MODE_SIGNAL, shift); } Code:
if (rviDown(14,1)) { print ("RVI Main über 14 Perioden ist für die letzte abgeschlossene Kerze unter dem Signal"); } |
|
|||
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); |
|
|||
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 extern string ComChaIn = "Commodity Channel Index"; extern int InpCCIPeriod = 14; extern double indicator_level1 = -100.0; extern double indicator_level2 = 100.0; input ENUM_APPLIED_PRICE CCI_Price = PRICE_TYPICAL; Code:
//CCI { 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 |
|
|||
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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
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. |
|
|||
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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
@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 () { return CCI < IndicatorLevel1; } bool IL2 () { return CCI > IndikatorLevel2; } 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. |
Lesezeichen |
Stichworte |
ea programmieren, expert advisor programmieren, mql4, programmierung, programmierung metatrader, valerius, valerius ea, valerius expert advisor |
|
|