Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Hilfe für meine horizontalen Linien (http://www.expert-advisor.com/forum/showthread.php?t=6054)

Neueinsteiger 21.03.18 22:02

Hilfe für meine horizontalen Linien
 
Liste der Anhänge anzeigen (Anzahl: 1)
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

next user 22.03.18 05:14

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

RetepM 22.03.18 15:53

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ß

Neueinsteiger 23.03.18 09:46

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.


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:38 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum