Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools  
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4099
Beiträge: 38851
Benutzer: 6.387
Aktive Benutzer: 216
Links: 80
Wir begrüßen unseren neuesten Benutzer: Oppus International
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 18:12).
Neue Benutzer:
vor einem Tag
- Oppus...
vor 2 Tagen
- justme177
vor 2 Tagen
- DanielF
vor 5 Tagen
- haschmat
vor 6 Tagen
- jayhouse

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 64
Gesamt: 66
Team: 0
Team:  
Benutzer:  fxnoob, MA-EA
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 21.03.18
Neues Mitglied
 
Registriert seit: Mar 2018
Beiträge: 14
Neueinsteiger befindet sich auf einem aufstrebenden Ast
Standard Hilfe für meine horizontalen Linien

Hallo an die Profis,

ich habe es dank Traderdoc und next user nun als blutiger Neueinsteiger geschafft zwei horizontale Linien zu zaubern. Und das sieht bei mir dann so aus:




void OnTick()
{





// finde den hoechsten Preis fuer 30 Kerzen
double HighestPrice =High[iHighest(NULL,0,MODE_HIGH,30,0)];

// Erstelle ein Linien-Objekt fuer Hoechstpreis
ObjectCreate("ObereLinie", OBJ_HLINE , 0,Time[0],Open[0]);

// Setze die Objektfarbe
ObjectSet("ObereLinie", OBJPROP_COLOR, Gold);

// Setze Linienbreite
ObjectSet("ObereLinie", OBJPROP_WIDTH, 3);

// Setze Objektpreis
ObjectSet("ObereLinie", OBJPROP_PRICE1, HighestPrice);

// finde den niedrigsten Preis fuer 30 Kerzen
double LowestPrice =Low[iLowest(NULL,0,MODE_LOW,30,0)];

// Erstelle ein Linien-Objekt fuer Niedrigstpreis
ObjectCreate("UntereLinie", OBJ_HLINE , 0,Time[0],Open[0]);

// Setze die Objektfarbe
ObjectSet("UntereLinie", OBJPROP_COLOR, Gold);

// Setze Linienbreite
ObjectSet("UntereLinie", OBJPROP_WIDTH, 3);

// Setze Objektpreis
ObjectSet("UntereLinie", OBJPROP_PRICE1, LowestPrice);




ABER - ich will die beiden horizontalen Linien unabhängig nach oben bzw. unten bewegen können. Derzeit beziehen sich die Linien ja immer auf die letzten 30 Kerzen und bilden dann den entsprechenden Abstand - aber genau das will ich nicht - wie ist es möglich oder was muß ich ändern, damit der Abstand der beiden Linien nicht durch die letzten 30 Kerzen gebildet wird, sondern das ich die beiden Linien so verschieben kann das der Abstand z.B. 15 oder 20 oder 30 Punkte beträgt - also ich muß irgendwie von den 30 Kerzen wegkommen und den Abstand der beiden Linien über den Kurs bestimmen

Vielen Dank für Eure Hilfe

Neueinsteiger
Angehängte Grafiken
Dateityp: jpg IMG_0855.JPG (22,2 KB, 5x aufgerufen)
  #2 (permalink)  
Alt 22.03.18
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Hi Neueinsteiger,

erstmal kurz ein paar Tipps:
  • Wenn du einen Beitrag verfasst, kannst du mit dem Doppelkreuz(Raute)-Zeichen Code etwas besser formatiert einfügen.
  • Wenn du unter Windows bist, kannst du mit der Druck/Drucken-Taste auf der Tastatur einen Screenshot machen, den du
    dann in einem Bildbearbeitungsprogramm (Paint in Windows) mit STR+V einfügen kannst.
  • Für Objekteigenschaften würde ich nicht "ObjectSet()", sondern die spezielleren, umfangreicheren Funktionen
    • ObjectSetInteger(): Für Ganzzahlige (Integer) Werte wie z.B. Farbe, Breite, X & Y-Koordinaten ect.
    • ObjectSetDouble(): Für Gleitpunktwerte (Double) wie z.B. Preiskoordinate, Winkel ect.
    • ObjectSetString(): Für Textwerte (String) wie z.B. Objektname, Objektbeschreibung, Schriftart ect.
    verwenden. Genaueres findest du hier.
  • Eine horizontale Linie hat nur eine Koordinate, nähmlich den Preis. Somit solltest du bei deinen "ObjectCreate()" die Zeitkoordinate,
    bei dir "Time[0]", mit einer einfachen "0" ersetzen.
  • Neben dem Setzen der Koordinaten mit "ObjectSet...()" wie du es machst, kann man die Koordinaten auch direkt beim Erstellen
    des Objekts angeben, so spart man bischen Code und muss die Koordinaten nicht direkt nach Erstellung ändern.
    In deinem Fall könntest du die Variablen "HighestPrice / LowestPrice" direkt in "ObjectCreate()" anstatt der Angabe "Open[0]" verwenden.

Mit den obigen Punkten würde dein Code dann so aussehen:
Code:
// finde den hoechsten Preis fuer 30 Kerzen
double HighestPrice = High[iHighest(NULL,0,MODE_HIGH,30,0)];

// Erstelle ein Linien-Objekt fuer Hoechstpreis
ObjectCreate("ObereLinie",OBJ_HLINE,0,0,HighestPrice);

// Setze die Objektfarbe
ObjectSetInteger(0,"ObereLinie",OBJPROP_COLOR,clrGold);

// Setze Linienbreite
ObjectSetInteger(0,"ObereLinie",OBJPROP_WIDTH, 3);

// finde den niedrigsten Preis fuer 30 Kerzen
double LowestPrice = Low[iLowest(NULL,0,MODE_LOW,30,0)];

// Erstelle ein Linien-Objekt fuer Niedrigstpreis
ObjectCreate("UntereLinie",OBJ_HLINE,0,0,LowestPrice);

// Setze die Objektfarbe
ObjectSetInteger(0,"UntereLinie",OBJPROP_COLOR,clrGold);

// Setze Linienbreite
ObjectSetInteger(0,"UntereLinie",OBJPROP_WIDTH,3);
=== === === === === === === === === === === ===

Zitat:
Zitat von Neueinsteiger Beitrag anzeigen
ABER - ich will die beiden horizontalen Linien unabhängig nach oben bzw. unten bewegen können.
Üblicherweise kannst du auf ein Objekt doppelklicken. Dann erscheint am Objekt ein kleines Rechteck, was die "Selektierung markiert".
Wenn du jetzt auf das Objekt klickst und die Maustaste hälst, so kannst du das Objekt frei verschieben.

Zitat:
Zitat von Neueinsteiger Beitrag anzeigen
... und den Abstand der beiden Linien über den Kurs bestimmen
Wenn du damit meinst, das du die Linien im EA mit dem Kurs verschieben willst (und nicht selbst per Hand), dann kannst du
die Funktion "ObjektMove()" aufrufen.
  #3 (permalink)  
Alt 22.03.18
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 168
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Hi,
richtig (in alle Richtungen) bewegen kannst Du die Linien, wenn Du Trendlinien benutzt.
z.B.
ObjectCreate("ObereLinie", OBJ_TREND, 0, Time[30],High[iHighest(NULL,0,MODE_HIGH,30,1)], Time[1], High[iHighest(NULL,0,MODE_HIGH,30,1)]);

Bevor Du sie mit der Maus anfasst und verschiebst, musst Du die Linie natürlich per Doppelklick aktivieren :-)

Gruß
  #4 (permalink)  
Alt 23.03.18
Neues Mitglied
 
Registriert seit: Mar 2018
Beiträge: 14
Neueinsteiger befindet sich auf einem aufstrebenden Ast
Smile Danke an...

next user und RetepM

es ist zwar mühsam, aber ich komme langsam vorwärts - vllt schaffe ich es ja bis zum 65. Geburtstag die Programmierei zu lernen - bin ehrlich - ist für so en alten Sack nicht so ganz einfach - aber wie heißt es : GEHT NICHT - GIBT'S NICHT

nochmal herzlichen Dank

werde mich bei weiteren Problemen und Fragen vertrauensvoll an Euch wenden :-)

und

werde jetzt am WE den nächsten Schritt versuchen - auf jeden Fall kann ich die LInien jetzt verschieben und z.B. eine Range von 25 oder 38 Punkten bilden.

Geändert von Neueinsteiger (23.03.18 um 11:07 Uhr)
Thema geschlossen

Lesezeichen

Stichworte
chart, horizoontale linien, linien, mql4, programmierung, programmierung metatrader, programmierung mql4, zeichnen


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:57 Uhr.


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