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: 3824
Beiträge: 36908
Benutzer: 6.076
Aktive Benutzer: 496
Links: 80
Wir begrüßen unseren neuesten Benutzer: Spitzmaus
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor einer Stunde
- Spitzmaus
vor 3 Stunden
- juleslesqu...
vor einem Tag
- hmf44
vor einem Tag
- Crossa
vor einem Tag
- snatshit

Onlineuser
'Wer ist online' anzeigen Benutzer: 3
Gäste: 45
Gesamt: 48
Team: 0
Team:  
Benutzer:  Domke01, Spitzmaus, traderdoc
Freunde anzeigen

Empfehlungen

Werbung

Like Tree2Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 07.06.16
Mitglied
 
Registriert seit: Sep 2013
Beiträge: 31
dieter23 befindet sich auf einem aufstrebenden Ast
Standard Kerzenwechsel

Hallo,
1. wie kann ich einen Kerzenwechsel d.h. long Kerze nach short Kerze u. umgekehrt abfragen.

2. nach Eröffnen eines Trades soll nach z.B. 4 Kerzen die Position wieder geschlossen werden.

Bitte um Hilfe.
Gruß Dieter
  #2 (permalink)  
Alt 07.06.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

zu1.)
Long- zu Short-Kerze:

if (Close[2] > Open[2] && Close[1] < Open[1])

Short- zu Long-Kerze:

if (Close[2] < Open[2] && Close[1] > Open[1])

zu 2.)
if (Time[0] > OrderOpenTime() + 4*Period()*60)

traderdoc
ralfbenker and asfranz like this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 08.06.16
Mitglied
 
Registriert seit: Sep 2013
Beiträge: 31
dieter23 befindet sich auf einem aufstrebenden Ast
Standard

Danke für die schnelle Antwort
LG
Dieter
  #4 (permalink)  
Alt 08.06.16
Mitglied
 
Registriert seit: Sep 2013
Beiträge: 31
dieter23 befindet sich auf einem aufstrebenden Ast
Standard

Hab mal versucht das Schließen der Order in den Ea einzubauen. Klappt leider nicht.Wo ist der Fehler?


extern int StopLoss=50;
extern int TakeProfit=50;

//+------------------------------------------------------------------+

void start()
{
double SL,TP;
int i,Total;
int Dig=MarketInfo(Symbol(),MODE_DIGITS);
int order_ticket;
//+------------------------------------------------------------------+

Total=OrdersTotal();
if(Total>0)
{
for(i=Total-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true)
{
if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderStopLoss()==0 && OrderTakeProfit()==0)
{


if(StopLoss>0)SL=OrderOpenPrice()+StopLoss*Point;e lse SL=0;
if(TakeProfit>0)TP=OrderOpenPrice()-TakeProfit*Point;else TP=0;
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(SL,Dig),NormalizeDouble(TP,Dig),0,CLR_NON E);
if (Time[0] > OrderOpenTime() + 2*Period()*60)

OrderClose(OrderTicket(),0.1,Bid,3,0);
return(0);


}
if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderStopLoss()==0 && OrderTakeProfit()==0)
{
if(StopLoss>0)SL=OrderOpenPrice()-StopLoss*Point;else SL=0;
if(TakeProfit>0)TP=OrderOpenPrice()+TakeProfit*Poi nt;else TP=0;
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(SL,Dig),NormalizeDouble(TP,Dig),0,CLR_NON E);
if (Time[0] > OrderOpenTime() + 2*Period()*60)

OrderClose(OrderTicket(),0.1,Ask,3,0);
return(0);

}
}
}
}
}
  #5 (permalink)  
Alt 08.06.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

"Klappt leider nicht" ist zwar das Endergebnis Deiner Beobachtung, mit der man aber manchmal sehr wenig anfangen kann. In diesem Falle ist der Fehler offensichtlich, dass bei OrderClose() die BuyOrder mit dem Bid und die SellOrder mit dem Ask geschlossen werden muß! Vorausgesetzt die Lotgröße beträgt tatsächlich 0.1.

Also, wenn irgendwas nicht klappt, dann gibt es in der Regel auch eine Fehlermeldung des MT4 im Terminal unter Reiter "Expert". Und in diesem Falle bin ich mir sicher, dass da stand: INVALID_PRICE.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #6 (permalink)  
Alt 08.06.16
Mitglied
 
Registriert seit: Sep 2013
Beiträge: 31
dieter23 befindet sich auf einem aufstrebenden Ast
Standard

habe Bid und Ask getauscht, Order wird nicht beendet, läuft einfach weiter .
Beim Kompilieren erscheint keine Fehlermeldung nur Warnings.
Gruß
Dieter
  #7 (permalink)  
Alt 08.06.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Nein, ich meine nicht beim Compilieren, sondern wenn der EA im Chart läuft, werden alle Fehlermeldungen im Terminal unter dem Reiter "Expert" aufgelistet. Wenn der EA also zum erwarteten Zeitpunkt nicht schließt könnte da eine Meldung stehen.

Und dann nimm bitte zum Schreiben des Codes den Button # über dem Textfeld. Den Code kann man dann viel besser lesen.

Desweiteren wird der EA dann die Orders nicht schließen, weil über

if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderStopLoss()==0 && OrderTakeProfit()==0)

in diesen Teil nur eingesprungen wird, wenn auch tatsächlich SL und TP 0 sind. Das aber darunter der SL und TP in der Order gesetzt werden, würde beim nächsten Tick nicht mehr die Bedingung erfüllt sein und damit würde die Zeile

OrderClose(OrderTicket(),0.1,Bid,3,0);

nicht durchlaufen werden - also auch kein Close.

Es macht sich gut, immer an bestimmten Stellen ein Print("Irgendetwas"); einzufügen. Dann sieht man im Reiter Expert des Terminals nämlich, wo der EA langgelaufen ist und wo eben nicht.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #8 (permalink)  
Alt 08.06.16
Mitglied
 
Registriert seit: Sep 2013
Beiträge: 31
dieter23 befindet sich auf einem aufstrebenden Ast
Standard

ok, hat geklappt. Jetzt noch Punkt 1. Umkehrkerze einbauen. Wo kann man die Abfrage am besten einbauen?
Danke im vorraus
Dieter
  #9 (permalink)  
Alt 08.06.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Am Anfang mittels:

Code:
//global datetime OldBar; deklarieren
if (OldBar != Time[0]) {
   //Abfrage und evtl. Aktion oder Variablensetzung zur späteren Verarbeitung
   OldBar = Time[0]
}
Diese if-Abfrage wird nur einmal am Anfang der Kerze durchlaufen.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #10 (permalink)  
Alt 08.06.16
Mitglied
 
Registriert seit: Sep 2013
Beiträge: 31
dieter23 befindet sich auf einem aufstrebenden Ast
Standard

verstehe ich jetzt nicht. Wird mit dieser Abfrage festgestellt ob ein Kerzenwechsel vorliegt?
Thema geschlossen

Lesezeichen

Stichworte
kerze, kerzen, kerzenwechsel, mql4, programmierung, programmierung metatrader, wechsel kerze


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 22:04 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.
-----------------------------------------------------------------------------------------------------------------------------