|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
extern ENUM_LINE_STYLE Linien_Stil=STYLE_SOLID;
extern color Farbe_Linie=Yellow; extern int Breite=5; void OnTick() { for(int i=0;i<ObjectsTotal();i++) { string akt_Objekt = ObjectName(i); if((ObjectType(akt_Objekt) == OBJ_VLINE)&&(ObjectGet(akt_Objekt,OBJPROP_SELECTED ) == FALSE)&&(ObjectGet(akt_Objekt,OBJPROP_COLOR) == Farbe_Linie)&&(ObjectGet(akt_Objekt,OBJPROP_STYLE) == Linien_Stil)&&(ObjectGet(akt_Objekt,OBJPROP_WIDTH) == Breite)) { datetime date=(datetime)(ObjectGet(akt_Objekt, OBJPROP_TIME1)); double Eroeffnungskurs=iOpen(0,0,iBarShift(0,0,date,0)); Print("Eröffnungskurs der gelben Linie: ",Eroeffnungskurs); //datetime date2=(datetime)(ObjectGet(akt_Objekt, OBJPROP_TIME1)); //Print("Eröffnungskurs der gelben Linie+1: ",date2); //int Startwert=date; //Print("Eröffnungskurs der gelben Linie+1: ",Startwert); //Print("Openwert: ",Open[Startwert]); } }//Ende for(int i=0; i<ObjectsTotal();i++) }//Ende OnTick() Das ist mein Programm bis jetzt: Es wird die vertikale Linie abgefragt, aber jetzt weiss ich nicht wie ich die Werte links und rechts der vert. Linie überprüfe? Geändert von sill3000 (28.03.18 um 12:47 Uhr) |
|
|||
Zitat:
Prinzipielles Vorgehen: 1. Ermittlung der Zeit der gelben Linie 2. Umrechnung dieser Zeit in den Index des entsprechenden Kerze mit iBarShift() und dann 3. Code:
//candle soll die Variable für den Kerzenindex der gelben Linie sein int links = 20; //Angabe der Anzahl von Kerzen, die nach links gecheckt werden sollen for (int i = candle; i <= candle+links; i++) { double open = iOpen(NULL, 0, i); ... ... } for (int i = candle; i == 0; i--) { //oder i > 0, wenn die akt. Kerze nicht mitgenommen werden soll double open = iOpen(NULL, 0, i); ... ... }
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Danke traderdoc für diese extrem gute Hilfestellung.
Jetzt habe ich aber noch ein anderes Problem, die Syntax wie ich anhand von der Zeit, eine "HotPink" vertikale und der Breite von 5 Linie zeichne. Mein erster Entwurf sieht folgendermassen aus. #define PRICE_LINE1 "Hot Pink" Print("Current bar time für rechts der gelben Linie: ",iTime(0,0,a)); Die Zeit wird korrekt ausgegeben. Mit Datum und Zeit. Aber die Linie will nicht auf dem Bildschirm erscheinen Hier mein erster NICHT-funktionierender Entwurf: ObjectCreate(PRICE_LINE1, OBJ_VLINE, 0, 0, 0); ObjectSet(PRICE_LINE1,OBJPROP_WIDTH,5); ObjectSet(PRICE_LINE1, OBJPROP_COLOR, HotPink); ObjectSet(PRICE_LINE1, OBJPROP_PRICE1,iTime(0,0,a)) Danke schonmal im Voraus |
|
|||
Als erstes würde ich mal schreiben:
ObjectSet(PRICE_LINE1, OBJPROP_TIME1,iTime(0,0,a)); traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Vielen, vielen Dank, jetzt klappt es.
Danke traderdoc : |
|
|||
keine 2 Linienarten werden angezeigt
Hallo zusammen,
ich habe ein Problem, mit dem ich nicht weiterkomme. Die vertikalen Linien werden hervorragend angezeigt. Siehe angehängte JPG's. Aber leider nur getrennt voneinander. Wie schaffe ich es, die beiden Linienarten auf ein Chart zu legen. Fkt. void navy_Linie_zeichnen(int Pos,int a) { ObjectCreate(a, OBJ_VLINE, 0, 0, 0); ObjectSet(a,OBJPROP_WIDTH,5); ObjectSet(a, OBJPROP_COLOR, Navy); ObjectSet(a, OBJPROP_PRICE1,Pos); ObjectSet(a,OBJPROP_STYLE,Linien_Stil); ObjectSet(a, OBJPROP_TIME1,iTime(0,0,Pos)); } void light_salmon_Linie_zeichnen(int Pos,int f) { ObjectCreate(f, OBJ_VLINE, 0, 0, 0); ObjectSet(f,OBJPROP_WIDTH,5); ObjectSet(f, OBJPROP_COLOR, LightSalmon); ObjectSet(f, OBJPROP_PRICE1,Pos); ObjectSet(f,OBJPROP_STYLE,Linien_Stil); ObjectSet(f, OBJPROP_TIME1,iTime(0,0,Pos)); } So werden die Linien aufgerufen: for(int a=0;a<100;a++) { navy_Linie_zeichnen(navy[a],a); light_salmon_Linie_zeichnen(light_salmon[a],a); } Aber es erscheint immer nur eine Farbe, nie beide zusammen. Werden die irgendwie überschrieben ? Im Voraus besten Dank Gruss sill3000 |
|
|||
Ja klar!, weil beide farbigen Linien denselben Objektnamen haben.
Wenn man sich über F1 an die vorgegebenen Strukturen der Funktionen hält, dann kann man solche Fehler nahezu ausschließen. Die relevante Funktionsstruktur sieht dann so aus: bool ObjectCreate( string object_name, // object name ENUM_OBJECT object_type, // object type int sub_window, // window index datetime time1, // time of the first anchor point double price1, // price of the first anchor point datetime time2=0, // time of the second anchor point double price2=0, // price of the second anchor point datetime time3=0, // time of the third anchor point double price3=0 // price of the third anchor point ); Und dabei sind hier v.a. die ersten 5 Parameter existentiell! traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Stichworte |
mql4, programmierung, programmierung metatrader, programmierung mql4, variblen, vertikale linie, werte vertikale line |
|
|