Archiv verlassen und diese Seite im Standarddesign anzeigen : Beratung mit etwas MT4-Code erforderlich
hecpkrhlm
18-03-2025 02:50,
yep das funktioniert auch ... ich habe nie gedacht, init auf diese Weise zu verwenden. Vielen Dank
Ich habe den Code (ziemlich) etwas umgeschrieben .. und ich denke, dass es so funktioniert, wie es sollte. Es malt auch für die aktuelle Bar, was ich für eine gute Sache halte. [code] #property indior_separate_window #property indior_level1 0 #property indior_buffers 1 #property indior_color1 Rotes Doppel Buf_0 []; extern int history = 3000; externe int Periode = 14; int i, p; void init () {SetIndexStyle (0, DRAW_LINE); SetIndexBuffer (0, Buf_0); SetIndexLabel (0, MA); IndiorShortName (MA ( Punkt )); SetLevelValue ...
Ich habe den Code (ziemlich) etwas umgeschrieben .. und ich denke, dass es so funktioniert, wie es sollte. Es malt auch für die aktuelle Bar, was ich für eine gute Sache halte. [code] #property indior_separate_window #property indior_level1 0 #property indior_buffers 1 #property indior_color1 Rotes Doppel Buf_0 []; extern int history = 3000; externe int Periode = 14; int i, p; void init () {SetIndexStyle (0, DRAW_LINE); SetIndexBuffer (0, Buf_0); SetIndexLabel (0, MA); IndiorShortName (MA ( Punkt )); SetLevelValue ...
Draco9320
18-03-2025 03:22,
Ich habe den Code (ziemlich) etwas umgeschrieben .. und ich denke, dass es so funktioniert, wie es sollte. Es malt auch für die aktuelle Bar, was ich für eine gute Sache halte. Eingefügter Code #property indior_separate_window #property indior_level1 0 #property indior_buffers 1 #property indior_color1 Rotes Doppel Buf_0 # 91; # 93 ;; extern int history = 3000; externe int Periode = 14; int i, p; void init () {SetIndexStyle (0, DRAW_LINE); SetIndexBuffer (0, Buf_0); SetIndexLabel (0, MA); IndiorShortName (MA ( Punkt )); SetLevelValue (0, 0,0000); while (Bars lt; Verlauf) Schlaf (100); p = Geschichtszeitraum; Buf_0 = 0; für (i = history-1; i gt; = p; i--) Buf_0 = Close # 91; i # 93; - Low # 91; i # 93 ;; Buf_0= Periode; für (i = p-1; i gt; = 0; i -) Buf_0 # 91; i # 93; = (Buf_0 # 91; i 1 # 93; * period - (Close # 91; i period # 93; - Low # 91; i period # 93;) (Close # 91; i # 93; - Low # 91; i # 93;))Periode; } void start () {Buf_0 # 91; 0 # 93; = (Buf_0 # 91; 1 # 93; * period - (Close # 91; period # 93; - Low # 91; period # 93;) (Close # 91; 0 # 93; - Low # 91; 0 # 93.) ;))Zeitraum; }
Draco9320
18-03-2025 03:49,
Antwort gepostet im mql4-Forum
Sieht so aus, als ob es die letzten paar Takte noch immer neu streicht. Denn wenn es später neu kompiliert wird, malt es anders (die letzten Takte).
Antwort gepostet im mql4-Forum
hecpkrhlm
18-03-2025 04:58,
Hallo
Ich habe den folgenden Code, der versucht, einen MA durch Berechnen von Close-Low des aktuellen Balkens zu erstellen. Mein Hauptproblem ist das:
Wenn ich den Innenraum zuerst platziere, wird es fein gezeichnet. Aber danach fängt es an, eine gerade Linie zu zeichnen ... kann nicht wirklich herausfinden, warum.
Ich habe herausgefunden, dass der Fehler die Ursache für die beiden While-Loops ist, die ich bekommen habe, und dies hat mit der variablen Kerze zu tun. Wenn ich die Kerzenvariable in den while-Schleifen durch die Verlaufsvariable ersetze, funktioniert es gut, aber dadurch werden in jedem Takt alle Balken immer wieder neu gestrichen.
Irgendwelche IdeenRatschläge?
Hier ist der Code
Eingefügter Code #include lt; stderror.mqhgt; #include lt; stdlib.mqhgt; #property indior_level1 0 #property indior_separate_window/# property indior_chart_window/Indior wird im Hauptfenster gezeichnet #property indior_buffers 2 #property indior_color1 Weiß/# property indior_color2 Blau/--- Puffer doppelt Buf_0 # 91 ;;/--- Parameter extern int history = 3000; extern bool log_on = false; extern int MAperiod = 14;/extern bool separate_window = true; String build = ver 0.29g-TEST-MA; bool isHistoryLoading; int lastperiod = 0; int init () {isHistoryLoading = true; SetIndexStyle (0, DRAW_LINE, DRAW_SECTION, 2); SetIndexBuffer (0, Buf_0); SetIndexLabel (0, MA); IndiorShortName (MA ( MAperiod ) build); SetLevelValue (0, 0,0000);/Die horizontale Linienebene ist gesetzt return (0); } int deinit () {return (0); } int start () {double ARM = 0, barARM = 0, ASB = 0; doppeltes O, C, H, L; datetime dt, mdt, dt1, dtTemp; int i, j, k, Kerzen, counted_bars;/int btbars = backtest_bars; doppelter Puffer # 91; 10000 # 93 ;; if (isHistoryLoading) {dt = iTime (Symbol (), PERIOD_M1,0); if (dt == 0) {isHistoryLoading = true; return;} isHistoryLoading = false; counted_bars = 0; } else counted_bars = IndiorCounted (); if (candleslt; 0) return (0); kerzen = bars-counted_bars;/Index des ersten nicht gezählten if (candlesgt; history-1)/Wenn zu viele Balken .. {candles = history-1;/..berechneten Betrag berechnen}/********************************* MAIN BEI LOOP **** ************************* while ((ilt; = Kerzen)) {L = niedrig # 91; i # 93 ;; C = schließen # 91 i # 93 ;; ARM = ARM C-L; wlog (ich ändere i # 91; i # 93;); Puffer # i; # 93; = ARM;/Indior in einem separaten Fenster zeichnen wlog (Puffer # 91; i # 93; = Buf_0 # 91; i # 93;); i ; ARM = 0; }/END Jahr int vi = 0; Doppelsumme = 0,0; while (vilt; = Kerzen)/CALCULATE MA {vi ; für (int vk = vi; vklt; vi MAperiod; vk ) {summe = summe Puffer # 91; vk # 93; }/für sum = sumMAperiod; Buf_0 # 91; vi # 93; = Summe;/; Summe = 0; }/während Rückkehr (0); } void wlog (string s) {if (log_on) {Print (s); }}
Powered by vBulletin® Version 4.2.5 Copyright ©2026 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.