|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Brauche Hilfe
HTML-Code:
Differenz[i] = iBands(NULL,240,BandsPeriod,BandsDeviations,0,PRICE_CLOSE,MODE_UPPER,i) - iBands(NULL,240,BandsPeriod,BandsDeviations,0,PRICE_CLOSE,MODE_LOWER,i); MABuffer[i] = iMAOnArray(Differenz,0,MAPeriod,0,MODE_SMA,i); if(Differenz[i]>MABuffer[i]){ . . .} Kann mir jemand bei diesem Code_Ausschnitt helfen ? Die if_Bedingung wird nie erfüllt, aber was stimmt da nicht ? Ich vermute, dass die iMAOnArray_Funktion nicht richtig berechnet wird. Wenn ich diese paar Zeilen lösche funktioniert der Rest. Hier sollen die Differenz zwischen oberem und unterem Bollinger_Band und ein MovingAverage dieser Differenz miteinander verglichen werden. Die Differenz soll kleiner sein als ihr MA, damit es weitergeht. |
|
|||
Ich habe gerade mit der Print_Funktion den Wert vom Differenz_Buffer ausgegeben.
Dieser beträgt konstant 0. Aber warum ist das so ? Der Differenz_Buffer ist als double_Variable definiert. |
|
|||
Hi,
welche Werte haben die folgenden Parameter: BandsPeriod BandsDeviations Gruss, Hoschie |
|
|||
BandsPeriod = 34
BandsDeviations = 2 Es gab aber noch folgenden Ausgangszustand: Ich hatte diese 2 Buffer nicht als solche in der Init_Funktion definiert, da diese ja auch nicht gezeichnet werden sollten. Nachdem ich sie aber initiiert habe mit SetIndexBuffer(3,DifferenzBuffer); SetIndexBuffer(4,MABuffer); funktionierte es. Vorher waren die ausgegebenen Werte dieser beiden Buffer konstant 0. Mir stellt sich nun aber die Frage, ob denn jedes Array, das nicht einmal gezeichnet werden soll so initiiert werden muss. Ist denn tatsächlich die Gesamtzahl an Arrays auf 8 begrenzt ? |
|
|||
Zitat:
Hallo Biatsch, nur für den IndikatorBuffer kannst du 8 Arrays verwenden. Mehr geht nicht. void IndicatorBuffers( int count) Allocates memory for buffers used for custom indicator calculations. The amount of buffers cannot exceed 8 or be less than the value given in the indicator_buffers property. If custom indicator requires additional buffers for counting, this function must be used for specifying of the total amount of buffers. Nein, du musst es nicht in der init-Methode initieren. Du kannst in der start-Methode mal folgendes versuchen: ArrayResize(MyBuffer5,Bars); ArraySetAsSeries(MyBuffer5,true); Gruss, Hoschie |
|
|||
Moin. So, meine vorherigen Probleme habe ich mitlerweile nachvollzogen und damit beseitigt.
Ich möchte nun, dass meine Indikator Pfeile einzeichnet, die bei einem Long_Signal nach oben und bei einem Short_Signal nach unten gerichtet sind. Ich verstehe diesmal aber nicht, warum alle Pfeile nach oben gerichtet sind, obwohl da ARROWDOWN steht !? Also die Pfeile befinden sich zumindest immer an der richtigen Stelle. Der Code sieht so aus: # PHP-Code:
|
|
|||
Also ich habe jetzt ArrowUp und ArrowDown durch die Pfeilcodes 241 und 242 ersetzt, aber es funktioniert immer noch nicht.
Ich muss auch sagen, dass ich garnicht genau weiß, wozu die einzelnen Objektfunktionen da sind^^ Wie schon erwähnt, werden die Pfeile alle an die richtige Stelle eingezeichnet. Nur die Pfeilart stimmet nicht mit der gewollten überein. Hätte jemand einen Vorschlag, was die Ursache für das Problem sein könnte ? |
|
|||
Hallo,
das sieht mir schwer danach aus, als ob immer Bedingung_1 ausgeführt wird und Bedingung_2 nicht zum Zug kommt. Blockier doch mal zum Test Bedingung_1 und gib Bedingung_2 vor, damit sie auf jeden Fall ausgeführt wird. Gruß naranjoe |
|
|||
Nee,
Die Bedingungen werden beide erfüllt. Außerdem ist die eine Pfeilfarbe rot, die andere blau. Im Chart sind beide Pfeilfarben vertreten und auch an den richtigen Stellen. Beide Bedingungen werden immer korrekt angezeigt. Die Pfeile, die nach unten gerichtet sein sollen, sind aber nach oben gerichtet. |
Lesezeichen |
Stichworte |
code, if bedingung, indikator, mql4, programmierung, programmierung metatrader |
|
|