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.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3822
Beiträge: 36916
Benutzer: 6.071
Aktive Benutzer: 494
Links: 80
Wir begrüßen unseren neuesten Benutzer: Roerich
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 3 Stunden
- Roerich
vor 3 Stunden
- John_Liver...
vor 3 Stunden
- harry1001
vor 19 Stunden
- supadog
vor einem Tag
- POCJonah7

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 105
Gesamt: 107
Team: 0
Team:  
Benutzer:  Domke01, traderdoc
Freunde anzeigen

Empfehlungen

Werbung

Like Tree2Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #31 (permalink)  
Alt 15.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

Hallo Top-SecreT,
habe nun gelesen und verglichen, verglichen und gelesen und an dem kleinen code "geschraubt" und "geschraubt". Nun sollte das Teil auch Dir besser gefallen:

if(OrderSelect(MAGICMA, SELECT_BY_POS)==true)
{
switch(OrderType())
{
case OP_BUY:
if (Bid >= OrderOpenPrice() + 70* Point)
if (!OrderModify(OrderTicket(),OrderOpenPrice(),Order OpenPrice() + 40 * Point, 120 * Point, 0, Blue))
Print("Fehler beim Ändern der Position: ",GetLastError());
break;
case OP_SELL:
if (Ask <= OrderOpenPrice() - 70* Point)
if (!OrderModify(OrderTicket(),OrderOpenPrice(),Order OpenPrice() - 40 * Point, 120 * Point, 0, Red))
Print("Fehler beim Ändern der Position: ",GetLastError());
break;
}
}

Im MetaEditor werden weder Fehler noch Warnungen angezeigt und der EA, in welchem das Teil integriert ist, läßt sich auch öffnen.
Dennnoch werden weder SL noch TP wunschgemäß (code-gemäß) verschoben.
Gib mir wenigstens einen kleinen Tipp, was falsch sein könnte, oder was ggf. noch fehlt.

LG. piptrade
  #32 (permalink)  
Alt 15.04.16
Mitglied
 
Registriert seit: Apr 2016
Beiträge: 45
Top-SecreT befindet sich auf einem aufstrebenden Ast
Standard

Die Parameter von OrderSelect stimmen nicht.
  #33 (permalink)  
Alt 23.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

Bin nochmals tief in mich gegangen und habe versucht jeglichen Hinweis dieses Beitrages nachzuvollziehen. Im Nachhinein sind die ursprünglichen Fehler natürlich offensichtlich und für Materiekenner wahrscheinlich sogar albern!
Mit der Zuversicht, nunmehr die gravierenden "Schwachstellen" beseitigt zu haben, hoffe ich auf Eure Antwort.
Hier der nachgebesserte code:

input int TakeProfit = 100;
input int StopLoss = 250;
//+-----------------------+
int start()
{
if(OrderSelect(TicketNumber,SELECT_BY_TICKET)==tru e)
{
switch(OrderType())
{
case OP_BUY:
if (Bid >= OrderOpenPrice() + 70* Point){
if (!OrderModify(OrderTicket(),OrderOpenPrice(),Order OpenPrice()+40*Point,OrderOpenPrice()+130*Point,0, Blue)){
Print("Fehler beim Ändern der Position: "+GetLastError());
}
}
case OP_SELL:
if (Ask <= OrderOpenPrice() - 70* Point){
if (!OrderModify(OrderTicket(),OrderOpenPrice(),Order OpenPrice()-40*Point,OrderOpenPrice()-130*Point,0,Red)){
Print("Fehler beim Ändern der Position: "+GetLastError());
}
}
}
}
else
Print("OrderSelect has not been able to find the order ", GetLastError());
return(0);
}

Würde mich riesig über Eure Antwort freuen.

LG. piptrade
  #34 (permalink)  
Alt 23.04.16
Mitglied
 
Registriert seit: Apr 2016
Beiträge: 45
Top-SecreT befindet sich auf einem aufstrebenden Ast
Standard

Aus dem Code ist nicht ersichtlich wie deine Variable TicketNumber gefüllt ist
tru e wird zusammen geschrieben (true)
OrderOpenPrice wird auch zusammen geschrieben (hast du jeweils nicht in den OrderModify Anweisungen)
Beim switch fehlt wieder das break.


LG
  #35 (permalink)  
Alt 23.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

Herzlichen Dank für schnelle und kompetente Antwort. Schreibfehler müssen beim Kopieren/Formatieren des Textes entstanden sein, "break" habe ich eingefügt und die Füllung der TicketNumber erfolgt über "#define TicketNumber 12345". Dementsprechend sieht der code jetzt SO aus:

#define TicketNumber 12345
//--- Inputs
input int TakeProfit = 100;
input int StopLoss = 250;
//+-----------------------+
int start()
{
if(OrderSelect(TicketNumber,SELECT_BY_TICKET)==tru e)
{
switch(OrderType())
{
case OP_BUY:
if (Bid >= OrderOpenPrice() + 70* Point){
if (!OrderModify(OrderTicket(),OrderOpenPrice(),Order OpenPrice()+40*Point,OrderOpenPrice()+130*Point,0, Blue)){
Print("Fehler beim Ändern der Position: "+GetLastError());
}
break;
}
case OP_SELL: ..... and so on ......


Sollte der code jetzt tatsächlich 100pro richtig sein ?
Nach dem vielen "Hin und Her", wäre das kaum glauben.

LG

PS.: Die "Tippfehler" entstehen auch jetzt wieder !!!???
  #36 (permalink)  
Alt 23.04.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.873
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

"Sollte der code jetzt tatsächlich 100pro richtig sein ?"

Ich denke, dass er es immer noch noch nicht ist.
U.a. die 70, die zum OrderOpenPrice addiert (subtrahiert) werden, sollen doch sicherlich Pips darstellen. Solltest Du einen 5-DigitBroker benutzen, dann entsprächen die 70 Pips nur noch 7 Pips, denn Point wäre dann 0.00001 oder 0.0001 (z.B. bei JPY-Pärchen). Und 7 Pip sind dann knapp!

D.h. beim 5-DigitBroker muß der EA das erkennen und mit 10 multiplizieren.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #37 (permalink)  
Alt 24.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

Hallo traderdoc,
Du bist wirklich ein treuer Helfer in der Not. Danke für Deine Hinweise zur "70". Diese Anmerkungen zu 4- bzw. 5-DigitBrokern sind schon die heutige Antwort darauf, was ich sicher spätestens morgen gefragt hätte. Vorläufig will ich den code aber für den DAX verwenden, so dass ich glaube, dass die 70 (für 7 pip) richtig sein könnte. - Oder?
Was die sonstige code-Erstellung angeht, - gibt es da noch etwas zu bemängeln oder zu verbessern?
Übrigens ein dickes Lob dafür, dass Du den Hilfesuchenden Stück für Stück durch seinen code begleitest und nicht nur eine fertige Lösung präsentierst. Nur so ist man dazu gezwungen, sich selbst zu befleißigen und so auch wieder etwas dazuzulernen - und das sollte ja Sinn und Zweck der Sache sein ! Also, nochmals ein herzliches Dankeschön und liebe Grüße

piptrade

PS.: Im selben Forum habe ich ein zweites Thema erstellt, mit der Frage zur Arbeit mit Hour und Minutes. Mit dem "get" und der Deklaration habe ich habe ich hier weniger Probleme - jedoch mit der Initialisierung (z.B. "08:30" als input string, der dann mittels double in eine Ziffer gewandelt wird ?) - und mit der Übergabe an das PRG (als zwei getrennte Variablen: 1. Hour, 2. Minute ?) Vielleicht kannst Du mich auch hier ein Stück begleiten?
  #38 (permalink)  
Alt 24.04.16
Mitglied
 
Registriert seit: Apr 2016
Beiträge: 45
Top-SecreT befindet sich auf einem aufstrebenden Ast
Standard

Ich habe immernoch ein Problem mit deiner OrderSelect Funktion
du willst damit eine Position auswählen die laut deinem define eine Ticketnummer von 12345 hat. Gibt es so eine Position? Wenn nicht wird da auch keine ausgewählt und angepasst.
  #39 (permalink)  
Alt 24.04.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.873
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Bei Indices spricht man nicht von Pips, sondern von Punkten. Das wäre die erste Stelle links vom Komma. Keine Ahnung, welchen Wert Point beim DAX hat. Sollten es dann 70 Punkte beim DAX sein, dann müßte ja Point = 1 betragen.

Mittels MarketInfo(Symbol(),MODE_POINT)); bekommst Du das heraus.

traderdoc

PS. Wie @TopSecreT schon schrieb, wird es keine TickerNumber mit dem Wert der MagicNumber geben, also auch keine erfolgreiche Orderselektion.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #40 (permalink)  
Alt 24.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

Beim Ordnen des code ist mir gerade das Gleiche aufgefallen - super !!!, dass Ihr das bestätigt.

Im EA wird global "extern int MagicNumber = 12345;" vergeben. Später wird dann diese "MagicNumber" einmal für die "LongOrder", gleichzeitig aber auch für die "ShortOrder" übernommen.
z.B: "if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true )"
Wenn ich also deklariere "extern int MagicNumber = 12345;" und dann "int LongOrder, ShortOrder;" initiiere, (ich versuche hier erstmals die richtigen Fachbegriffe zu verwenden), müßte der code wahrscheinlich nochmals -SO- verändert werden:

...
if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
{
switch(OrderType())
{ ...
bzw.:
...
if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
{
switch(OrderType())
{ ...

Sind diese Aussagen annähernd richtig und der code damit funktionsfähig?

Und zu den pips, Punkten und Points: 1. DAX = natürlich Punkte ! / 2. Angaben dann aber mit 1 Kommastelle. Wäre dann nicht Point = 10 korrekt?

Durch Eure Hinweise und Anregungen scheint sich "der Nebel so langsam zu lichten". Zumindest hab ich das Gefühl voranzukommen; - Danke, Danke, Danke und
LG piptrade
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, scalper sl, sl, stoploss, stoploss ea, stoploss nachziehen


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 +1. Es ist jetzt 18:58 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 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.
-----------------------------------------------------------------------------------------------------------------------------