|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
MA programmieren der früher Signale gibt
Hallo.
Hatte vor längerer Zeit nen Thema geöffnet, mit ner Idee, wie man MAs allgemein wesentlich früher nen Trendwechsel- oder Ende oder was auch immer anzeigen lassen kann. Das Thema ist aber zu. Hab keine Ahnung, obs was bringt, aber die Idee ist eigentlich ganz einfach: 1. Ganz normalen MA deklarieren. Z.B. Code:
double MA_Fa=iMA(Symbol(),TimeFrame,MA_Fast_Period,MA_Fast_Chart_Shift,MA_Fast_Method,PRICE_CLOSE,1); Dieser wird dann einfach durch nen Wert, den man in den GV eintragen kann, geteilt. Z.B. jetzt einfach mal 6. Code:
extern double MA_dividieren_durch = 6.0; Code:
if( MA_Fa < 1.0 ) double Dividierter_MA = MA_Fa * MA_dividieren_durch; if( MA_FA >= 1.0 ) Dividierter_MA = MA_Fa / MA_dividieren_durch; |
|
|||
Zitat:
Außerdem ist der Quellcode kommentiert und wenn Du schon EAs programmierst, dann kannst Du den Indikator auch selber ändern. Ansonsten empfehle ich Dir, die Antwort von Indikator-Trading heranzuziehen. AVT |
|
|||
Tausend Dankeschöns. Das hat mir geholfen. Im Anhang eine von mir etwas vereinfachte Vers. Die Multiplikation konnte raus. War nur wegen Dividieren/Multiplizieren von Werten <1.0 drin. Nebenbei:Es geht nicht um nen Tacho der mehr oder weniger als 100.0km/h anzeigt, sondern um kleiner oder größer als 1.0.
Wie man im Bild (hoffentlich) sehn kann, vollbringt das Ding keine Wunder, scheint aber Seitwärtsbewegungen einigermaßen gut umgehen zu können. Wenn ich irgendwas richtig erkennen kann, scheint es auf kleinere Bewegungen 1 oder 2 Kerzen früher zu reagieren, bei hoher Vola allerdings scheint er sogar manchmal hinterher zu hinken. Vielleicht braucht er auch nur lange, um den Wechsel von Trends in Seitwärtsbewegungen anzuzeigen. Bzw. umgedreht. Anscheinend ist es mit einfachem Teilen der Werte nicht getan. Ich trau mich eigentlich kaum zu fragen. Aber wärs möglich, den Oszi im Anhang um was eigentlich Einfaches zu ergänzen? Eigentlich ganz easy: Zu dem dividierten MA soll die ganze Rechnerei noch mal mit dem Price, auf den der normale MA gelegt wird, gemacht werden. Also das Selbe wie mit dem MA: 1. Ganz normalen Price deklarieren. Z.B. Code:
double Close_Price = iClose(Symbol(),TF,1); Code:
MAval=iMA(_Symbol,_Period,MAperiod,0,MAmethod,MAprice,i); //Hole MA der Kerze if(MAval <1.0)MABuff[i]=MAval*MAdivis; // Wenn MAwert kleiner 1.0: mit Divisor multiplizieren if(MAval>=1.0)MABuff[i]=MAval/MAdivis;// Wenn MAwert größer/gleich 1.0: durch Divisor teilen |
|
|||
Das Problem ist wohl, dass alle MA einfach nur nach unten verschoben werden und dementsprechend manchmal früher und manchmal später als die "originalen" MAs sich überschneiden. So müsste das Ganze wohl eher nen Sinn ergeben, indem sie ihren jeweiligen Verhältnissen zum ClosePrice entsprechend verändert werden:
Code:
extern int MA_Fast_Period=3; extern int MA_Fast_Chart_Shift=0; input ENUM_MA_METHOD MA_Fast_Method=0; extern double MA_Fast_Divi=10.0; extern int MA_Midd_Period=6; extern int MA_Midd_Chart_Shift=0; input ENUM_MA_METHOD MA_Midd_Method=0; extern double MA_Midd_Divi=10.0; extern int MA_Slow_Period=10; extern int MA_Slow_Chart_Shift=0; input ENUM_MA_METHOD MA_Slow_Method=0; extern double MA_Slow_Divi=10.0; double CP1=iClose(Symbol(),TF,1); double MA_Fa=iMA(Symbol(),TF,MA_Fast_Period,MA_Fast_Chart_Shift,MA_Fast_Method,PRICE_CLOSE,1); double MA_Mi=iMA(Symbol(),TF,MA_Midd_Period,MA_Midd_Chart_Shift,MA_Midd_Method,PRICE_CLOSE,1); double MA_Sl=iMA(Symbol(),TF,MA_Slow_Period,MA_Slow_Chart_Shift,MA_Slow_Method,PRICE_CLOSE,1); double CP1pluMAFa = CP1 + MA_Fa; double CP1pluMAMi = CP1 + MA_Mi; double CP1pluMASl = CP1 + MA_Sl; if( CP1pluMAFa<1.0 )double di_Fa = CP1pluMAFa * MA_Fast_Divi; else di_Fa = CP1pluMAFa / MA_Fast_Divi; if( CP1pluMAMi<1.0 )double di_Mi = CP1pluMAMi * MA_Midd_Divi; else di_Mi = CP1pluMAMi / MA_Midd_Divi; if( CP1pluMASl<1.0 )double di_Sl = CP1pluMASl * MA_Slow_Divi; else di_Sl = CP1pluMASl * MA_Slow_Divi; Gute Nacht für heute. |
|
||||
Zitat:
Ich habe das extra nur für DICH deinen MA-Dividieren-Quatsch einfach und simpel an einem Beispiel erklärt, damit vielleicht auch DU verstehen kannst, dass das immer noch SCHWACHSINN ist, den du dir da ausgedacht hast. Aber selbst das war wohl zu kompliziert oder? Also dein Toller EA wozu du sagst: Zitat:
Code:
if( && Bid<CP1_D_Sel) { … } Insgesamt noch weitere Compilerfehler an weiteren sehr schönen stellen |
|
|||
Mir fällt dazu nichts mehr ein. Ich bin nun seit 15 Jahren in einschlägigen Foren unterwegs, programmierte auftragsgemäß hunderte EAs und Indikatoren und habe schon die skurrilsten Handelsstrategien der Kunden umgesetzt. Aber kein Einziger hat mir jemals so einen, gelinde gesagt, Unsinn präsentiert.
Warum der @MA-EA auch immer so renitent gegenüber der Tipps und Hinweisen ist und permanent falsche Schlüsse zieht, entzieht sich meiner Kenntnis. Er tut mir fast schon etwas leid. Wie oft wurde ihm bereits geschrieben, die Nase zunächst in Bücher und fertigen Code zu stecken und dann überrascht er uns immer wieder mit programmtechnischen Stilblüten der besonderen Art. Ich habe leider auch keinen anderen Rat mehr. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Was für skurrile Strategien? Erzähl mal nen paar interessante Geschichten.
Der EA im Anhang oben ist noch nicht fertig. Hab den bloß hoch geladen, damit man besser nach vollziehen kann, wie die MA-Rechnerei im EA ausschaut. Bzw. wie der irgendwann mal funktionieren soll. Gibt doch irgendwie Indikatoren, die MAs nur als Grundlage benutzen, um damit andere Berechnungen zu machen. Die irgendwie Abstände zwischen MAs oder zwischen Letzteren und irgendwelchen Preisen ausrechnen und darstellen. In dem EA oben soll Preis und der dazu gehörige MA addiert werden. Das Ergebnis soll dann durch nen einstellbaren Wert geteilt werden. Theoretisch hätte man dann die typische Glättung des Kurses, aber ohne 3-4 oder noch mehr Kerzen auf Kreuzungen warten zu müssen. Bei 3 normalen MAs sind die meisten Trends schon wieder fast zu Ende, bis sie registriert werden. Im Anhang noch mal der Oszillator. Da müsste lediglich noch mal der ganz normale Kurs drin deklariert werden. double ClosePrice = iClose(...usw. Die Rechnerei müsste ich dann eigentlich selber hin bekommen. |
|
||||
Zitat:
Da helfe ich dir doch gerne: https://docs.mql4.com/series/iclose Jetzt musst du nur noch lesen können... Zitat:
|
|
|||
z.B. immer short und long gleichzeitig. Schon vor Jahren haben mehrere User dir geduldig aufzuzeigen versucht, warum diese Strategie nicht funktioniert.
Oder das, was du hier wieder präsentierst. Einfach nur Blödsinn. Tips, die wirklich was bringen könnten, versuchst du nie umzusetzen. Ich wiederhole mich jetzt: Trend z.B. mit EMA in einer höheren Zeiteinheit bestimmen. Dann in einer kürzeren Zeiteinheit mit irgendeinem Indikator einsteigen, und zwar nur in der Richtung des höheren Trends. TRSI oder MACD funktionieren z.B. nicht schlecht. Wenn du kurzfristig handeln willst, dann nimmst z.B. EMA 200 in 30M oder 1H und TRSI oder MACD oder was auch immer in 5M. Du machst dann natärlich nicht 100 Trades am Tag, dafür ist die Mehrheit positiv. Die Strategie ist ausbaufähig, z.B. den Ausstieg dynamisch suchen, je nach Stärke der Bewegung oder nach Stärke des höheren Trends. Oder, wenn der Trade gut läuft, eine Nachkaufstrategie einbauen etc. etc. Du solltest dich mal auf eine Strategie festlegen und die dann ausbauen. Das bringt eher ein positives Resultat als deine seltsamen Experimente. So, und das wars jetzt wirklich. Wenn du es nicht selbst programmieren kannst, dann gib dem Traderdoc einen Auftrag. Vielleicht (aber nur vielleicht) nimmt er einen Auftrag von dir an. Ich würds nicht machen und meine funktionierenden EA's stehen nicht zum Verkauf |
Lesezeichen |
|
|