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)

ralfbenker 14.09.16 21:59

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.

MA-EA 17.09.16 16:02

Liste der Anhänge anzeigen (Anzahl: 2)
Lassen wir den CCI einfach erst mal aussen vor.

Kann Jemand helfen den RVI einzubaun?

Zyr 17.09.16 20:48

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

Der Aufruf in einer if Abfrage wäre dann z.B.:
Code:

if (rviDown(14,1))
{
  print ("RVI Main über 14 Perioden ist für die letzte abgeschlossene Kerze unter dem Signal");
}


ralfbenker 18.09.16 05:07

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

MA-EA 26.09.16 21:58

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

Zitat von ralfbenker (Beitrag 35800)
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);

Ist schon spät, also kurz gesagt: Der CCI wurde aber nicht auf diese
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


traderdoc 26.09.16 23:02

Zitat:

Zitat von MA-EA (Beitrag 35966)
Ist schon spät, also kurz gesagt: Der CCI wurde aber nicht auf diese
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


Nochmals, das sind die 5 Zeilen für den CCI aus der MQL4-Dokumentation:

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

MA-EA 27.09.16 09:41

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

traderdoc 27.09.16 09:59

Zitat:

Zitat von MA-EA (Beitrag 35970)
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. ;)

Da gibt es nichts später herauszufinden. Die Sachlage ist eineindeutig!
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

ralfbenker 27.09.16 11:35

@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 !!

Zyr 27.09.16 14:19

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

Sonst macht dein Code nicht das was du willst.
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.

MA-EA 28.09.16 19:15

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
int i,j,nLimit,nCountedBars;
double dValueUp,dValueDown,dNum,dDeNum;

double DN_PLUS = iRVI(_Symbol,_Period, ExtRVIPeriod, dNum, 1);
double DDN_PLUS = iRVI(_Symbol,_Period, ExtRVIPeriod, dDeNum, 1);

:confused:


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
{
double CCI = iCCI(_Symbol,_Period, InpCCIPeriod, CCI_Price, 1);
double IL1 = iCCI(_Symbol,_Period, CCI_indicator_level1, CCI_Price, 1);//-100
double IL2 = iCCI(_Symbol,_Period, CCI_indicator_level2, CCI_Price, 1);//+100

Die stehen so aber nicht in der MQL des [WIKI]CCI[/WIKI].
Funktioniert das so?

ralfbenker 28.09.16 19:41

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.

traderdoc 28.09.16 20:05

Zitat:

Zitat von MA-EA (Beitrag 35986)
double CCI = iCCI(_Symbol,_Period, InpCCIPeriod, CCI_Price, 1);
double IL1 = iCCI(_Symbol,_Period, CCI_indicator_level1, CCI_Price, 1);//-100
double IL2 = iCCI(_Symbol,_Period, CCI_indicator_level2, CCI_Price, 1);//+100
Funktioniert das so?

Ne, was den CCI auf jeden Fall anbelangt, funktioniert das nach wie vor nicht.
Und das wird auch nicht besser, wenn Du denselben Quatsch das x-te Mal postest.

traderdoc

MA-EA 01.10.16 14:52

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:

ralfbenker 01.10.16 18:08

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.

MA-EA 01.10.16 20:47

Liste der Anhänge anzeigen (Anzahl: 2)
Danke, kapier ich nicht. :rolleyes:

Bitte nicht schimpfen, bin müde und hab Kopfweh. :(

Code:

//RVI GV
extern string RelVigInd = "Relativ Vigor Index";
extern int ExtRVIPeriod = 10;

Code:

//Relativ Vigor Index
double ExtRVIBuffer,ExtRVISignalBuffer,dNum,dDeNum;
double RVI_B = iRVI(_Symbol,_Period, ExtRVIBuffer, dNum, 1);
double RVI_SB = iRVI(_Symbol,_Period, ExtRVISignalBuffer, dDeNum, 1);

Aber irgendwie steht in meinem MQL4 Buch ne Menge Schmarrn. Werd aus
dem Schinken auch nach Stunden
kein bißchen schlauer. :confused:

Fehlermeldungen gibts keine, aber obs funktioniert...

Zyr 02.10.16 00:38

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

RetepM 02.10.16 10:41

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!

traderdoc 02.10.16 11:03

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

Zyr 02.10.16 14:48

Tja anscheinend liest er sich unsere tips nicht mal durch...
Und macht sich nen Spaß draus ein auf auf DAU zu machen....

MA-EA 02.10.16 20:51

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?

Zyr 02.10.16 21:26

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.

MA-EA 02.10.16 22:09

In meinem MQL4 Buch stimmt irgendwie die Hälfte nicht. :confused:
Brauch nen Korrektes. :(

traderdoc 02.10.16 23:29

Zitat:

Zitat von MA-EA (Beitrag 36050)
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?

Ich schrieb ja bereits schon, Du bist ein Paradiesvogel. Ich programmiere nun seit etwa 30 Jahren, aber so einer ist mir wirklich noch nicht über den Weg gelaufen. Man kann Fehler machen, man kann Verständnisprobleme haben, aber man sollte nicht permanent dieselben Fehler machen, zumal Dir bereits dutzendemal die richtige Lösung präsentiert wurde. Denkst Du, wir spinnen uns das alles nur aus. Wenn Deine CCI-Codezeilen aus jenem Buch stammen, dann schmeiße es sofort weg bzw. lass Dir das Geld wiedergeben.

Ü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!!!

MA-EA 03.10.16 13:48

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. :(

ralfbenker 03.10.16 14:40

@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:

An einer Stelle heißt es, man müsse Indis mit mehreren [WIKI]Linien[/WIKI] mit "mode" oder so auslesen.
Es gibt Indikatoren die haben mehrere Linien. Z.B der RVI.

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:

In der darauf folgenden Beschreibungen des [WIKI]RSI[/WIKI] ist dieses Wörtchen aber nicht mehr zu finden.
Eine Frage an Dich: Wieviele Linien hat der RSI oder CCI? Bei mir immer nur eine, also brauche ich hier den Parameter MODE nicht anzugeben.

Mit den Bars das erklär ich dir jetzt aber nicht auch nochmal.

traderdoc 03.10.16 14:43

Zitat:

Zitat von MA-EA (Beitrag 36061)
... 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.

Auch dieser Text zeigt wieder, dass bei Dir Null Grundlagen vorhanden sind. Natürlich hat der Autor hier Recht, denn den Indikatorwert auf der Kerze 0 (also der aktuellen Kerze) zu berechnen, birgt das Risiko, am Ende der Zeit der Kerzenbildung einen ganz anderen Wert vorliegen zu haben. Deshalb berechnet man die Indikatorwerte in der Regel auf der Kerze 1 oder 2, denn dort sollten Konstante oder nahezu konstante Werte vorliegen.

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

MA-EA 04.10.16 18:07

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.

traderdoc 04.10.16 18:29

Zitat:

Zitat von MA-EA (Beitrag 36072)
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.

Auf der einen Seite nervt Deine Lernresistenz, auf der anderen Seite tut es mir schon fast Leid, wenn ich Dich hier so an den Indikatoren rumwursteln sehe. Aber eines kann ich Dir mit Sicherheit sagen, der EA wird nicht besser werden, wenn immer mehr Indikatoren eingebaut werden. Ansonsten ist der Einbau eines Indikators wirklich kein Hit, wenn man die nötigen Variablen kennt, die zur Abfrage der Indikatorwerte notwendig sind. Z.T. sind die Indikatoren in der MQL-Doku beschrieben.
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

MA-EA 05.10.16 17:54

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
Gross Profit:
36.69
Gross Loss:
37.84
Total Net Profit:
-1.15
Profit Factor:
0.97
Absolute Drawdown:
34.63
Maximal Drawdown:34.63 (0.00%)
Relative Drawdown:
0.00% (34.63)
Total Trades:52
Short Positions (won %):
26 (38.46%)
Long Positions (won %):26 (50.00%)
Profit Trades (% of total):
23 (44.23%)
Loss trades (% of total):
29 (55.77%)
Largest
profit trade:6.92 loss trade:-2.69
Average
profit trade:1.60 loss trade:-1.30

Morgen das Ganze noch mal, dann aber mit
Indicator Lines auf 100 und -100.

traderdoc 05.10.16 18:04

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

Zyr 05.10.16 18:56

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.

MA-EA 05.10.16 21:09

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

Zitat von traderdoc (Beitrag 36102)
Was hast Du genau auf 1 gestellt?

IL1 und IL2.
Code:

//CCI GV
extern string ComChIn = "Commodity Channel Index";
extern int InpCCIPeriod = 14;
extern double indicator_level1 = 1.0;
extern double indicator_level2 = 1.0;
input ENUM_APPLIED_PRICE CCI_Price = PRICE_TYPICAL;

Code:

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

Wenn das jetzt auch nicht "richtig" war, dann weiß
ichs echt nicht. :confused:

traderdoc 05.10.16 21:42

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

MA-EA 06.10.16 11:41

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.

MA-EA 06.10.16 16:27

Bitte sagt mir einfach, ob das richtig ist. Wenn nicht,
weiß ich gerade echt nicht weiter. :(
Code:

//RVI GV
extern string RelVigInd = "Relativ Vigor Index";
extern int ExtRVIPeriod = 10;

Code:

//Relativ Vigor Index
double ExtRVIBuffer,ExtRVISignalBuffer;
double RVI = iRVI(_Symbol,_Period, ExtRVIPeriod, ExtRVIBuffer, 1);
double RVI_S = iRVI(_Symbol,_Period, ExtRVIPeriod, ExtRVISignalBuffer, 1);

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);
if (TC>F && TC<T && S<=MS && OP0<=CP1 && CCI<IL1 && RVI<RVI_S) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, Name + " Sell(#" + MagicNumber + ")", MagicNumber, 0, Red);}

Code:

if (OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()){
if((RVI<RVI_S) || (CAA=true && TC>CA) || (CLTF=true && O_P<0.0)) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, DarkBlue);}

if (OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()){
if((RVI>RVI_S) || (CAA=true && TC>CA) || (CLTF=true && O_P<0.0)) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, FireBrick);}}}}


Zyr 06.10.16 19:15

Korrekt:

Code:

//Relativ Vigor Index
double ExtRVIBuffer,ExtRVISignalBuffer;<---- Kannst du streichen
double RVI = iRVI(NULL,0, ExtRVIPeriod, MODE_MAIN, 1);//Liest die RVI Main Linie über "ExtRVIPeriod" Perioden auf dem letzen Bar aus
double RVI_S = iRVI(NULL,0, ExtRVIPeriod, MODE_SIGNAL, 1);//Liest die RVI Signal Linie über "ExtRVIPeriod" Perioden auf dem letzen Bar aus


traderdoc 06.10.16 19:26

Und vorausgesetzt die Variablen IL1 und IL2 werden nun endlich richtig berechnet!

traderdoc

MA-EA 24.11.16 00:24

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

MA-EA 25.11.16 19:14

Z.B. mein Ichimoku Kinko EA. Der Ichi wird mit MODE ausgelesen. Aber der CCI nicht? :confused:

Code:

//Ichimoku
{
double TKS = iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);//9, rot
double KJS = iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,1);//26, blau
double SKS_A = iIchimoku(NULL,0,9,26,52,MODE_SENKOUSPANA,1);//nicht einstellbar
double SKS_B = iIchimoku(NULL,0,9,26,52,MODE_SENKOUSPANB,1);//52
double CKS = iIchimoku(NULL,0,9,26,52,MODE_CHIKOUSPAN,1);//nicht einstellbar
//-------------------------------------------------------------------------------------------------------------

//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
}



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