Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43261
Benutzer: 7.224
Aktive Benutzer: 74
Links: 84
Wir begrüßen unseren neuesten Benutzer: Sundaytrader
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 17 Stunden
- Sundaytrad...
vor einem Tag
- TS_6
vor 3 Tagen
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 363
Gesamt: 363
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 07.08.17
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 105
Lena befindet sich auf einem aufstrebenden Ast
Standard

Da gab es im Code doch noch einen ganz üblen Bug der im Testmodus nicht aufgefallen ist. Man muss noch eine Startpunkt definieren, ab wo der höchste und tiefste Wert ermittelt werden soll. Im Programm wird ja immer ab 1 dem ersten Bar gezählt. Das passt auch, sofern man immer genau am Tageswechsel den EA startet. Ansonsten sieht das Ergebnis nämlich sehr katastrophal aus.

Ich habe es so gelöst. Ich ermittel die Bars des aktuellen Tages mit: int Bars(...
Diese addiere ich dann zum Startparameter hinzu.
  #12 (permalink)  
Alt 08.08.17
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 240
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Hi,
Wenn Du wirklich nur die "Daily"-Werte für Deine Trendlinien brauchst, kannst Du das ganz einfach mit iTime(NULL,PERIOD_D1,1) und dazu passend iHigh(NULL,PERIOD_D1,1) . Beachte aber, dass wenn eine der beiden Bars beträchtlich größer ist als die andere und die beiden eng aneinander liegen, bekommst Du Trendlinien mit einer sehr großen Steigung!

z.B. so was:

ObjectCreate(objName1, OBJ_TREND, 0, iTime(NULL,PERIOD_D1,14),iHigh(NULL,PERIOD_D1,14), iTime(NULL,PERIOD_D1,1), iHigh(NULL,PERIOD_D1,1));
ObjectCreate(objName2, OBJ_TREND, 0, iTime(NULL,PERIOD_D1,14),iLow(NULL,PERIOD_D1,14), iTime(NULL,PERIOD_D1,1), iLow(NULL,PERIOD_D1,1));

und dann vielleicht noch so was:
ObjectSet(objName1, OBJPROP_RAY, true);
ObjectSet(objName1, OBJPROP_COLOR,ColorUpperLine);
ObjectSet(objName1,OBJPROP_STYLE,STYLE_SOLID);
ObjectSet(objName1,OBJPROP_WIDTH,1);
  #13 (permalink)  
Alt 11.08.17
Mitglied
 
Registriert seit: Nov 2015
Beiträge: 136
Adlerauge befindet sich auf einem aufstrebenden Ast
Standard

Vorsicht mit der Funktion ObjectGetValueByShift().

Diese liefert bei Kanälen teilweise falsche Werte (sie hat mir regelmässig für den Ankerpunkt der Parallel-Linie einen negativen Wert mit 5 Vorkomma-Stellen errechnet - kann nicht sein!)
Bei Trendlinien ist mir noch kein Fehler aufgefallen, aber ich benutze sie vorsichtshalber gar nicht mehr, sondern benutze für die lineare Interpolation eine eigene Funktion.
  #14 (permalink)  
Alt 12.08.17
Mitglied
 
Registriert seit: Nov 2015
Beiträge: 136
Adlerauge befindet sich auf einem aufstrebenden Ast
Standard

Hallo Lena,
ich habe mal meinen Trendlinien-Zeichner an Deine Vortages-Wünsche angepasst... siehe Anhang
Er arbeitet mit 2 ineinander verschachtelten For-Schleifen, wobei die 2. For-Schleife nur dazu dient, den Ausgangs-Punkt gegebenenfalls vom Vortages-Tief bzw. -Hoch nachzurücken. Das kann teilweise dazu führen, dass eine bereits gebrochene Trendlinie gezeichnet wird.
Die Linien werden gezeichnet, wenn Du in den Chart klickst.
Ich hoffe, das kommt dem nahe, was Du suchst....))
Angehängte Dateien
Dateityp: mq4 Trendlinie_nachgerückt_ab_Vortag.mq4 (14,5 KB, 6x aufgerufen)
  #15 (permalink)  
Alt 12.08.17
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Hi Adlerauge,

mal ne kleine Anmerkung zu folgendem Codeteil
Code:
if(StringFind("obere Trendlinie " + IntegerToString(I_ZR), IntegerToString(I_ZR), 0))
   ObjectDelete("obere Trendlinie " + IntegerToString(I_ZR));

ObjectCreate(NULL,"obere Trendlinie " + IntegerToString(I_ZR), OBJ_TREND, 0, date_time_1, d_preis_1, date_time_2, d_preis_2);
1. Wenn I_ZR z.B. 2 ist, so sieht deine Abfrage so aus:
- Prüfe im String "obere Trendlinie 2", ob der String "2" vorhanden ist.
- Deine Abfrage liefert also absolut immer TRUE. Denke nicht, das das so gemeint war, oder?
- Außerdem ist die Abfrage auch sonst nicht gut formuliert, denn die Funktion StringFind(...) liefert -1, wenn der Suchstring nicht gefunden wurde.
Jetzt ist es aber so, das 0 als false, alles ungleich 0 (also auch -1) als true interpretiert wird. Somit ist deine Abfrage TRUE, wenn der Suchstring gefunden wurde,
und ebenfalls TRUE, wenn er nicht gefunden wurde.
2. Um das schon vorhandene Objekt zu löschen sollte eine vorherige Abfrage mit der Funktion ObjectFind(...) durchgeführt werden.
StringFind(...) hat hier weder echten Bezug zum Objektnamen, noch ist sie hier sinnvoll angewendet.


Das nur mal kurz am Rande...
  #16 (permalink)  
Alt 12.08.17
Mitglied
 
Registriert seit: Nov 2015
Beiträge: 136
Adlerauge befindet sich auf einem aufstrebenden Ast
Standard

Hi next_user
ups,
da hast du Recht, die Zeile mit dem Stringfind ist beim Zurechtkürzen meines eigentlichen Codes aus Versehen stehen geblieben - die kann hier zurecht raus (schadet aber auch nicht)
ObjectDelete sollte aber drinstehen.
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, programmierung mql4, trendlinie, trendlinien


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 11:43 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------