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: 38784
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 einem Tag
- justme177
vor 2 Tagen
- DanielF
vor 5 Tagen
- haschmat
vor 5 Tagen
- jayhouse

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 57
Gesamt: 58
Team: 0
Team:  
Benutzer:  MA-EA
Freunde anzeigen

Empfehlungen

Like Tree5Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 27.03.18
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 23
sill3000 befindet sich auf einem aufstrebenden Ast
Standard automatisch Werte auslesen anhand der vertikalen Linie

Hallo zusammen, ich benötige Hilfe.

Ich lege von Hand eine vertikale, gelbe und einer Breite von 5 Linie in das Chart
rein zufällig. Das ist sozusagen mein Startpunkt.

1.Jetzt benötige ich den Open,Close,High und Low Wert der Kerze, der unterhalb der o.g. Linie ist.

2. Dann will ich das Chart entweder in die Vergangenheit oder in der Zukunft
betrachten. Bzw. wie bewege ich diese o.g. Linie nach links und rechts ?

Ich habe da mal etwas vorbereitet:

#property copyright ""
#property link "https://www.mql5.com"
#property version "1.00"
#property strict

extern ENUM_LINE_STYLE Linien_Stil=STYLE_SOLID;
extern color Farbe_Linie=Yellow;
extern int Breite=5;
double Preis;

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---

//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---

}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
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))
{
Preis=ObjectGet(akt_Objekt,OBJPROP_PRICE1);
Print("Preis : ",DoubleToStr(Preis,Digits));
}
}//Ende for(int i=0; i<ObjectsTotal();i++)
}//Ende OnTick()

Kann mir das evtl. jemand helfen ? Im Voraus Besten Dank
  #2 (permalink)  
Alt 27.03.18
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sill3000 Beitrag anzeigen
1.Jetzt benötige ich den Open,Close,High und Low Wert der Kerze, der unterhalb der o.g. Linie ist.

2. Dann will ich das Chart entweder in die Vergangenheit oder in der Zukunft
betrachten. Bzw. wie bewege ich diese o.g. Linie nach links und rechts ?
Zu 1: Eine vertikale Linie hat als Koordinate ja ebend die Zeit. Da musst du einfach nur ihre Koordinate nehmen und die
Werte abfragen:
Code:
iOpen(0,0,iBarShift(0,0,KOORDINATE,0));
Zu 2: Manuell kannst du sie einfach im Chart verschieben, meinst du im Code?

"OBJPROP_PRICE1" kannst du bei einer vertikalen Linie schlecht abfragen!
Deine Bedingungen sind bischen umständlich. Arbeite doch mit etwas eindeutigem, wie dem Namen.
sill3000 likes this.
  #3 (permalink)  
Alt 27.03.18
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 23
sill3000 befindet sich auf einem aufstrebenden Ast
Standard

Zu 1: Eine vertikale Linie hat als Koordinate ja ebend die Zeit. Da musst du einfach nur ihre Koordinate nehmen und die
Werte abfragen:

Und welche Funktionen nehme ich dazu, um die Werte abzufragen.

Zu 2: Manuell kannst du sie einfach im Chart verschieben, meinst du im Code?

Ich möchte den z.B. Close-Wert nehmen unter der gelben Linie und dann
vergleichen, mit den anderen Werten sozusagen ein scannen der Kerzen.
  #4 (permalink)  
Alt 27.03.18
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sill3000 Beitrag anzeigen
Und welche Funktionen nehme ich dazu, um die Werte abzufragen.
Habe ich dir doch gepostet...
Für Open, Close, High und Low nimmst du die Funktionen mit einem "i" davor.
Deren letzter Parameter ist der Index der gewünschten Kerze,
welchen du mit der Funktion "iBarShift()" ermitteln kannst.

Zitat:
Zitat von sill3000 Beitrag anzeigen
Ich möchte den z.B. Close-Wert nehmen unter der gelben Linie und dann
vergleichen, mit den anderen Werten sozusagen ein scannen der Kerzen.
Und was willst du da verschieben? Eine vertikale Linie nach oben und unten???
sill3000 likes this.
  #5 (permalink)  
Alt 27.03.18
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 23
sill3000 befindet sich auf einem aufstrebenden Ast
Standard

Habe ich dir doch gepostet...
Für Open, Close, High und Low nimmst du die Funktionen mit einem "i" davor.
Deren letzter Parameter ist der Index der gewünschten Kerze,
welchen du mit der Funktion "iBarShift()" ermitteln kannst.

Und dann ersetzte ich nur iBarShift() und wie bekomme ich den z.B. Openkurs der Kerze "iOpen" ??

Und was willst du da verschieben? Eine vertikale Linie nach oben und unten???

Ich will das Chart abscannen von links nach rechts, basierend von der "gelben Linie". Das weiss ich auch noch nicht, wie das fkt. !
  #6 (permalink)  
Alt 27.03.18
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sill3000 Beitrag anzeigen
Und dann ersetzte ich nur iBarShift() und wie bekomme ich den z.B. Openkurs der Kerze "iOpen" ??
Du hast ja eine vertikale Linie erstellt. Deren Koordinate ist die Zeit. "iBarShift()" wandelt die Zeit in den entsprechenden Kerzen-Index um.

Was soll denn "iOpen" für eine Kerze sein? "iOpen" ist eine FUNKTION!
Die ganzen Kurse bekommst du ebend durch besagte Funktionen.

Zitat:
Zitat von sill3000 Beitrag anzeigen
Ich will das Chart abscannen von links nach rechts, basierend von der "gelben Linie". Das weiss ich auch noch nicht, wie das fkt. !
Von Hand, oder willst du von jeder Kerze entsprechende Kurse "abscannen"? Verstehe grad nicht, was du da verschieben willst...
sill3000 likes this.
  #7 (permalink)  
Alt 27.03.18
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 23
sill3000 befindet sich auf einem aufstrebenden Ast
Standard

Du hast ja eine vertikale Linie erstellt. Deren Koordinate ist die Zeit. "iBarShift()" wandelt die Zeit in den entsprechenden Kerzen-Index um.

Was soll denn "iOpen" für eine Kerze sein? "iOpen" ist eine FUNKTION!
Die ganzen Kurse bekommst du ebend durch besagte Funktionen.


Und das Anwenden der besagten Funktionen ist eben das Problem.
Was schreibe ich wohin, auf was muss ich achten ?

Von Hand, oder willst du von jeder Kerze entsprechende Kurse "abscannen"? Verstehe grad nicht, was du da verschieben willst...

Die gelbe Linie gebe ich vor, ich klicke sie ins Chart und dann soll z.B. eine neue vertikale Linie erscheinen, bei der ich optisch erkennen kann, jetzt ist der Kurs beispielsweise 20 Pips weniger und es erscheint eine schwarze Linie.
Nur für optische Zwecke

Das soll dann automatisch passieren !
  #8 (permalink)  
Alt 28.03.18
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 23
sill3000 befindet sich auf einem aufstrebenden Ast
Standard

Habe jetzt mal einen Ansatz,mit Hilfe von "next user", der auch mal teilweise mein Problem löst.

Hier ist der Quellcode:

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);
}
}//Ende for(int i=0; i<ObjectsTotal();i++)
}//Ende OnTick()


Hier wird geprüft, ist es eine gelbe vertikale Linie mit der Breite von 5 und dem richtigen Style auf dem Chart.

Dann wird gesucht und die datetime-Variable "date" übergibt das Datum und nun wird der Open-Kurs der Kerze angezeigt.


Frage: Ich will jetzt das Chart absuchen, bis der Open-Kurs z.B. 40 Pips kleiner ist als die "gelbe vert. Linie" und dann soll dort eine "blaue vert. Linie" erscheinen ?

Im Voraus besten Dank
  #9 (permalink)  
Alt 28.03.18
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Hi sill3000,

die ganzen Abfragen sind doch ein wenig unkomfortabel. Wieso nutzt du nicht z.B. den Objektnamen, um sie anzusprechen?

=== === === === === === === === === === === ===

Ok, fassen wir deine Angaben mal zusammen...
  • Du erstellst im Chart eine vertikale, gelbe Linie.
  • Die ist dann sozusagen die Basis deiner weiteren Vorhaben.
  • Von ihr ausgehend sollen jetzt alle Folgekerzen überprüft werden, bis der (Open)Kurs einer Kerze xx Pips über/unter
    dem (Open)Kurs der Kerze der gelben Linie ist. Diese Kerze soll dann mit einer anderen, vertikalen Linie markiert werden.

Im Startpost schreibst du in Punkt 2, das du z.B. Vergangenheit oder Zukunft betrachten willst. Ist damit gemeint,
das du die gelbe Linie manuell verschieben möchtest, um den Prüfungsbereich zu verändern?
  #10 (permalink)  
Alt 28.03.18
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 23
sill3000 befindet sich auf einem aufstrebenden Ast
Standard

Die erste vertikale gelbe Linie, wird von Hand ins Chart gesetzt
und ist der Startwert für das Programm und bleibt stehen.

1. Das Programm erkennt, wo steht die gelbe Linie und welcher Eröffnungskurs hat die dazugehörige Kerze.

Wenn jetzt der Chart links neben der gelben Linie durchsucht wird, dann eine blaue Linie, wenn der Kerzenkurs z.B. 10 Pips unter dem Eröffnungskurs ist oder eine rote Linie, bei einer weiteren Unterschreitung.

Aber alles sollte abhängig sein von der gelben Linie.

2. Die Hauptfrage: Wie scanne ich den Chart links oder rechts der gelben Linie.
Angehängte Grafiken
Dateityp: jpg gelbe vertikale Linie.jpg (180,4 KB, 8x aufgerufen)
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, programmierung mql4, variblen, vertikale linie, werte vertikale line


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 12:27 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.
-----------------------------------------------------------------------------------------------------------------------------