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