Alle Inhalte von WOGO
-
Arrow abbilden - MT5
'nen Arrow gibt es so schon, aber halt am 1.1.1970 . Du gibst ja mit dem vorletzen Parameter die Zeit an - und 0 ist halt 1.1.1970. Mach es mit OBJ_LABEL und dem Code 233! Das funktioniert relativ zu den Fensterkoordinaten.
-
Arrow abbilden - MT5
Bei ObjectCreate musst du als ersten Paramter die Chart-ID angeben, also 0 für das aktuelle Chart.
-
Arrow abbilden - MT5
bzw: ObjectCreate(0,ArrowName,OBJ_ARROW,0,0,0,0,0); ObjectSetInteger(0,ArrowName,OBJPROP_ARROWCODE,241);
-
Arrow abbilden - MT5
Du kannst über ObjectCreate mit ObjectType OBJ_ARROW_UP bzw OBJ_ARROW_DOWN Pfeile im Chart platzieren. Der bezieht sich aber auf die Zeit, wandert also mit. Wenn du einen feststehenden Pfeil willst, dann machst du als Object ein Label (OBJ_LABEL) und gibst als Schriftart Wingdings an. Dann kannst du über den Code 241/242 - wie von Vola gezeigt - einen Pfeil mit X-/Y-Koordinate einfügen.
-
Lukas Hablowetz
Der Lukas ist bestimmt ein toller Typ, aber schaut euch mal die süßen Hasen an, die da auf seiner Seite sind. Das sind doch wohl die wahren Stars... Bei dem in der Mitte musste ich gleich an Vola denken.
-
Kerzenzeitpunkt ermitteln
Achso, du willst die Erkennung direkt in einen EA einbauen. Dann geht "indikator_counted" nicht!
-
Kerzenzeitpunkt ermitteln
So wie du das machst wird das nix . Du kannst nicht von rechts nach links im Chart suchen, wenn du eine Erkennung von links nach rechts haben willst. Und dein Problem mit dem Kreuzen kannst du so lösen, wie ich geschrieben hab. Unterschiedliche Pfade für Kreuzen von oben nach unten und unten nach oben. Etwa so: ... double MA_prev; int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); int i=Bars-counted_bars-1; int direction=1; //1:Suche Kreuzen unten => oben //2:Suche Kreuzen oben => unten while(i>=0) { MA_prev=iCustom(...,i+1) if(direction==1) { if(Low[i+1]>MA_prev) { direction=2; ...//hier machst du dein Range-Handling } } else { if(High[i+1]<MA_prev) { direction=1; ...//hier machst du dein Range-Handling } } i--; }
-
Kerzenzeitpunkt ermitteln
Ich hab das hier jetzt nur quer gelesen, aber so wie ich das verstehe, willst du den Zeitpunkt (die Kerze) ermitteln, wenn eine Kerze von unten den MA kreuzt und dann komplett überhalb des MA schliesst und umgekehrt. Wenn dem so ist, dann kannst du das nicht in einer while-Schleife abhandeln. Du brauchst zwei. Eine für den Fall, dass du von unten nach oben kreuzt und eine zweite für von oben nach unten. Beide wären dann if-verknüpft, so dass sie sich gegenseitig ausschliessen. Du musst dir also merken, kommst du von unten oder von oben. Noch ein Tip. Anstelle von iLow(NULL,0,a) kannst du auch einfach Low[a] schreiben. Ferner tust du dich leichter, wenn du den MA in einen Buffer schreibst, dann brauchst du ihn nicht immer 2x (MA_now, MA_prev) berechnen. Warum deine Erkennung einen Versatz hat ist aber anhand des Codes, den du hier postest nicht zu erkennen. Da müsstest du mal mehr zeigen.
-
Frage zu iHighest
Das musst du genauer spezifizieren! Willst du es aus einem Indikator heraus berechnen? Soll es immer die gleiche Zeit, oder nur eine bestimmte Dauer sein? Soll der Bereich einstellbar sein? Aus welchem Timeframe heraus soll die Bestimmung stattfinden? Edit: Vergiss die Fragen wieder! Ich hab deinen anderen Post gesehen. Warum stellst du die selbe Frage eigentlich 2x?
-
Horizontale Bereiche in Indikatorfenster einfärben
Nö, hast du nicht! Wenn du Objekte in einem Indikator verwendest, dann erstellst du diese mit ObjectCreate. Wo du das machst ist abhängig vom Anwendungsfall. In deinem Fall, wo das selbe Rechteck immer im Indikatorfenster sein soll, kannst du das durchaus in der OnInit() machen. Die Anpassung der Eckpunkt des Rechtecks machst du aber nicht mit ObjectMove sondern mit ObjectSet. ObjectMove verschiebt dir dein Rechteck ja nur, d.h. wenn dein Indikator verglichen zum Ursprungsstatus stark ausschlägt, deckst du den kompletten Bereich nicht mehr ab. Probier es einfach mal aus, was der Unterschied der einzelnen Funktionen ist! So findest du auch am einfachsten heraus, wie welche Funktion deinen Anwendungsfall beeinflußt.
-
Horizontale Bereiche in Indikatorfenster einfärben
Hi, ObjectCreate ist hier nicht zielführend. Du musst das Rechteck in OnCalculate mit der ObjectSet-Funktion anpassen, d.h. das rechte Ende auf die Zeit des aktuellen Bars bringen und oberes und unteres Ende auf deinen gewünschten Bereich setzen.
-
Trade erst nach x Kerzen
Fast. Das a++ muss noch ausserhalb der else-Klammer aber sonst sollte es passen.
-
Trade erst nach x Kerzen
Du brauchst diese Funktion nicht. Die ist überflüssig. Sie liefert dir ja nichts anderes zurück als die iCustom-Funktion auch schon (1 oder 2 bei einem Signal). Am Ende der while-Schleife musst du "a" noch hochzählen. Hab ich in meinem Beispiel vergessen. if(IndiValue>SignalSchwelle)... ersetzt du mit einem Vergleich auf 1 bzw. 2 für Long und Short.
-
Trade erst nach x Kerzen
Du kannst bei iCustom einen Shift angeben. So ist es z.B. möglich, dass du in einer Schleife den Indikator über verschiedene Bars abfrägst und dann einfach zählst wie oft deine Bedingung erfüllt war. Etwa so: a=0; cnt=0; Break=false; while (a<2 && !Break) { IndiValue = iCustom(.....,a); if(IndiValue>SignalSchwelle) { cnt++; } else { cnt=0; Break=true; } } if(cnt==2) GoLong=true; ...
-
Linienbeschriftung
Für jede Linie gibt es diese 4 Zeilen im Code: ObjectCreate(MPrefix + "Pivot_Line", OBJ_HLINE, 0, 0, P); ObjectSet(MPrefix + "Pivot_Line", OBJPROP_COLOR, Yellow); ObjectSet(MPrefix + "Pivot_Line", OBJPROP_STYLE, STYLE_SOLID); ObjectSetText(MPrefix + "Pivot_Line","Pivot "+DoubleToStr(P,Digits)); In der 2. Zeile kannst du die Farbe einstellen, in der Dritten die Linienart und in der Vierten die Beschriftung. Wenn du noch die Breite ändern willst, dann fügst du eine zusätzliche "ObjectSet"-Zeile mit der Property "OBJPROP_WIDTH" ein und gibts einen Wert von 1-15 an. Sollte also alles recht einfach zu ändern sein.
-
Indikatorberechnung am Wochenende möglich?
Idee nicht, ich kann dir aber sagen, wie ich das analysieren würde. Stell deinen Chart so ein, dass er nur ein paar Bars anzeigt (z.B. 200) unter Extras - Optionen - Diagramme - Max. Kerzen im Chart. Dann lass dir über "Print" an den entscheidenden Stellen ausgeben, was der Indikator macht. Die Limitierung der Kerzen ist dazu da, dass dir dein Report-Fenster nicht zu sehr zugemüllt wird. Auf diese Weise solltest du relativ einfach rausfinden, woran es scheitert.
-
Indikatorberechnung am Wochenende möglich?
Hm, am Indikator kann das nicht liegen. Dem ist 's egal in welchen TF er gezogen wird. Andere Indikatoren funktionieren?
-
Indikatorberechnung am Wochenende möglich?
Ja, das ist natürlich Unsinn. Dann würde ja ständig alles nochmal berechnet. Mach 's einfach so: if(prev_calculated > 0) bars = rates_total-prev_calculated+1; Trotzdem sollte der Indikator was zeichnen. Hast du ihn 1:1 übernommen?
-
Indikatorberechnung am Wochenende möglich?
Da sind ein paar Fehler drin. Mach's mal so: #property version "1.00" #property strict #property indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 10 #property indicator_buffers 1 #property indicator_plots 1 //--- plot Anzahl #property indicator_label1 "Anzahl" #property indicator_type1 DRAW_LINE #property indicator_color1 clrGreen #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- indicator buffers double Anzahl[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping IndicatorBuffers(1); //<=== SetIndexBuffer(0,Anzahl); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- ArraySetAsSeries(Anzahl,true); ArraySetAsSeries(open,true); ArraySetAsSeries(close,true); int bars = rates_total - 2; if(prev_calculated > 0) bars = prev_calculated-1; //<=== //Anzahl[bars+1]=0; //<=== for(int i = bars; i >= 0; i--) { //wenn Schlusskurs größer vorheriger Schlusskurs, dann Anzahl steigender Kerzen erhöhen if (close[i] > close[i+1]) Anzahl[i] = (Anzahl[i+1]+1); //sonst Zähler zurücksetzen if (close[i] <= close[i+1]) Anzahl[i] = 0; //<=== } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
-
Indikatorberechnung am Wochenende möglich?
Der ATR Indikator berechnet beim ersten Durchlauf alle historischen Bars (prev_calculated==0). Schau dir mal den Code an. Um den Ablauf zu verstehen ist es u.U. hilfreich, wenn du dir folgende Debugausgabe einbaust: Print("Bars = ",Bars,", rates_total = ",rates_total,", prev_calculated = ",prev_calculated);
-
Indikatorberechnung am Wochenende möglich?
Ticks gibt's am Wochenende nicht, da ja der Forexmarkt nicht offen hat. Du kannst aber einen Dummy-EA im Strategietester laufen lassen und deinen Indikator einfach reinziehen. Dann siehst du auch, ob er richtig funktioniert.
-
Empfehlung für Fotobuch
Ich hab kürzlich ein Fotobuch bei Blurb bestellt. Hat den Vorteil, dass, wenn man Lightroom für die Fotobearbeitung/Archiviering verwendet, man direkt aus dem Programm heraus das Buch zusammenstellen kann. Man hat somit ein Programm von RAW-Konvertierung über Bearbeitung bis hin zu Katalogisierung und Bestellung. Blurb ist aber relativ teuer und wenn man Lightroom nicht ohnehin nutzt, dann seh ich auch keinen Vorteil. Meine Frau hat mal über Aldi ein Fotobuch zusammengestellt. Ist günstiger und vom Ergebnis her nicht schlechter. Zudem einfach zu bedienen, entweder direkt online oder per kostenloser Desktop-SW.
-
wer kennt tickstory für MT4?
Hi, ich kenne tickstory nicht! Ein kurzer Blick auf deren Website verrät aber, dass sie lediglich das Prinzip von Birt kopieren. Tickstory liefert wohl auch nur ein Tool, mit dem man Dukascopy Daten runterladen kann. Das geht auch mit den kostenlosen Skripten von Birt. Birt bietet mittlerweile eine Tickdata Suite an, die zwar ein Rundum-Sorglospaket darstellt, allerdings sehr teuer ist (ich glaub $10 pro Monat). Die gleiche Funktionalität erhält man aber auch mit den Skripten von Birt. Nachdem das Tool, das man von tickstory kostenlos runterladen kann die Erweiterung "light" trägt, gehe ich mal davon aus, dass man nach Installation auf die Einschränkungen der SW hingewiesen wird und dann zum super-duper-Sonderpreis die Vollversion erwerben kann. Ach ja, noch was. Die freien Dukascopy Daten beinhalten nur Forex (+Gold/Silber), aber keine CFDs.
-
Zieht euch warm an ...
Sie ist schon voll da. Ob wir davon aber profitieren sei mal dahingestellt... Quelle
-
EA Schutzkonzepte
Wenn du deinem Broker überhaupt nicht traust, dann kannst du deinen Metatrader ja offline, also ohne Verbindung zum Broker, laufen lassen. Die Kurse holst du dir über ein Skript beispielsweise von einem Textfile, das dir eine andere MT4-Instanz bedient. Auch über ein Skript simmulierst du deinem MT4 mit dem EA eingehende Tickdaten, so dass die Start-Funktion regelmässig getriggert wird und die berechneten Signale schreibst du in ein File, über das du mit einer anderen Instanz wiederum die Orders absetzen kannst. Somit ist dein EA vom Broker vollständig isoliert. Alles möglich, wenn's einem den Aufwand wert ist...