|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
zeitliche Schließung von Orders
Hallo zusammen,
kann mir jemand mal sagen wie ich es hinbekomme eine Order zu schließen nachdem eine gewisse Zeit zum Beispiel 1 Std abgelaufen ist? Darüber hinaus...wo füge ich die ein? Vielen Dank Marc
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... |
|
|||
- hol dir die Öffnungszeit der Order (ist als Unix-Timestamp gespeichert)
-- OrderSelect(...) und dann OrderOpenTime() - frag mit TimeCurrent() die aktuelle Serverzeit ab OrderSelect(...) if ((OrderOpenTime()+3600) < TimeCurrent() { OrderClose(...); } wo kommt auf deinen EA an |
|
|||
Zitat:
ich schaue mal ob ich das hinbekomme Ich stelle ansonsten den Code mal rein und dann könnt ihr mal schauen. Ich probiere da erst aber mal mein Glpck....noch mals vielen Dank
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... |
|
|||
dreh bitte bevor du es probierst das < um^^
Code:
OrderSelect(...) if ((OrderOpenTime()+3600) > TimeCurrent() { OrderClose(...); } |
|
|||
Stimmt...hatte ich auch schon gesehen
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... |
|
|||
vorher wollte ich versuchen die Zeit hoch zu zählen und nicht herunter wie bei Time Current.
Ich probiere es mal aus...
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... |
|
|||
Guten Abend Zusammen,
folgenden EA möchte ich gerne komplettieren: //+------------------------------------------------------------------+ //| Der Stundentrader.mq4 | //| Der Marc | //| Es gibt gar keine Internetseite | //+------------------------------------------------------------------+ #property copyright "Der Marc" #property link "Es gibt gar keine Internetseite" //Wichtige Variablen extern double Lots=0.01; extern int Slippage=5; extern int MagicNumber =1; extern int TradeHour3=3; extern int TradeHour4=4; extern int TradeHour7=7; extern int TradeHour10=10; extern int TradeHour17=17; extern int TradeHour18=18; extern int TradeHour20=20; extern int TradeHour12=12; extern int TradeHour23=23; //Globale Variablen int BuyTicket; int SellTicket; double UsePoint; int UseSlippage; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { UsePoint = PipPoint(Symbol()); UseSlippage = GetSlippage(Symbol(), Slippage); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { // Buy criteria OrderSelect(SellTicket || BuyTicket, SELECT_BY_TICKET); //Close Order if(OrderCloseTime() == 0 && SellTicket > 0 || BuyTicket > 0) { double CloseLots = OrderLots(); double ClosePrice = Ask; bool Closed = OrderClose(SellTicket ,CloseLots, ClosePrice, UseSlippage, Red); } double OpenPrice = Ask; //BuyOrder if ((TradeHour3==Hour())||(TradeHour4==Hour())||(Trad eHour7==Hour())||(TradeHour10==Hour())||(TradeHour 17==Hour())||(TradeHour18==Hour())||(TradeHour20== Hour())) //Signal Buy { int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippag e,0,0,"time trader buy order ",MagicNumber,0,Blue); } SellTicket = 0; BuyTicket = 0; // Sell criteria OrderSelect(BuyTicket || SellTicket, SELECT_BY_TICKET); //Close Order if(OrderCloseTime() == 0 && BuyTicket > 0 || BuyTicket > 0) { CloseLots = OrderLots(); ClosePrice = Bid; Closed = OrderClose(BuyTicket, CloseLots, ClosePrice, UseSlippage, Red); } OpenPrice = Bid; //SellOrder if ((TradeHour12==Hour())||(TradeHour23==Hour())) //Signal Sell { int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slipp age,0,0,"time trader sell order ",MagicNumber,0,Green); } SellTicket = 0; BuyTicket = 0; //---- return(0); } //+------------------------------------------------------------------+ //Pip Point Function double PipPoint (string Currency) { int CalcDigits = MarketInfo(Currency, MODE_DIGITS); if(CalcDigits == 2 || CalcDigits == 3) double CalcPoint = 0.01; else if(CalcDigits == 4 || CalcDigits == 5) CalcPoint = 0.0001; return (CalcPoint); } //Get Slippage Function int GetSlippage(string Currency, int SlippagePips) { int CalcDigits = MarketInfo(Currency, MODE_DIGITS); if(CalcDigits == 2 || CalcDigits == 3) double CalcSlippage = SlippagePips; else if(CalcDigits == 4 || CalcDigits == 5) CalcSlippage = SlippagePips * 10; return (CalcSlippage); } Es geht darum stündlich, zu gewissen Zeiten, eine Kauf oder Verkauf Position zu erstellen, die dann nach der Laufenden Std in der sie am Markt aktiv ist geschlossen wird. Ich habe bereits ausprobiert, ob die Möglichkeit besteht die bestehende Order zu suchen, bin aber trotz der Hilfe nicht dort angekommen wo ich hin wollte. Darüber hinaus soll sich die Lotgröße automatisch der FreeaccountMargin anpassen. Hier stieß ich ebenfalls an meine Grenze^^ Vielen Dank für die weitere Unterstützung Marc
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... |
|
|||
//+------------------------------------------------------------------+
//| Der Stundentrader.mq4 | //| Der Marc | //| Es gibt gar keine Internetseite | //+------------------------------------------------------------------+ #property copyright "Der Marc" #property link "Es gibt gar keine Internetseite" //Wichtige Variablen extern double Minlot=0.01; extern int Digits2Round=2; extern int PercentOfFreeDepo=1; extern int Slippage=5; extern int MagicNumber =1; extern int TradeHour3=3; extern int TradeHour4=4; extern int TradeHour7=7; extern int TradeHour10=10; extern int TradeHour17=17; extern int TradeHour18=18; extern int TradeHour20=20; extern int TradeHour12=12; extern int TradeHour23=23; extern int StopLoss=40; //Globale Variablen int BuyTicket; int SellTicket; double UsePoint; int UseSlippage; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { UsePoint = PipPoint(Symbol()); UseSlippage = GetSlippage(Symbol(), Slippage); double FreeDepo=NormalizeDouble(AccountBalance()-AccountMargin(),Digits2Round); double Risk=NormalizeDouble((FreeDepo*PercentOfFreeDepo/100),Digits2Round); double Lot=NormalizeDouble(Risk/(StopLoss/0.0001)*0.1,Digits2Round); //===================== Lets determine lot size and risk =================================== if ( Lot < Minlot ) { Lot=Minlot; } Comment( "\n","Acceptable risk is ",PercentOfFreeDepo, "% = ",Risk," of the free money ",FreeDepo," in lots = ",Lot); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { // Buy criteria OrderSelect(SellTicket || BuyTicket, SELECT_BY_TICKET); //Close Order if(OrderCloseTime() == 0 && SellTicket > 0 || BuyTicket > 0) { double CloseLots = OrderLots(); double ClosePrice = Ask; bool Closed = OrderClose(SellTicket ,CloseLots, ClosePrice, UseSlippage, Red); } double OpenPrice = Ask; //BuyOrder if ((TradeHour3==Hour())||(TradeHour4==Hour())||(Trad eHour7==Hour())||(TradeHour10==Hour())||(TradeHour 17==Hour())||(TradeHour18==Hour())||(TradeHour20== Hour())) //Signal Buy { int openbuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage ,StopLoss,0,"time trader buy order ",MagicNumber,0,Blue); } SellTicket = 0; BuyTicket = 0; // Sell criteria OrderSelect(BuyTicket || SellTicket, SELECT_BY_TICKET); //Close Order if(OrderCloseTime() == 0 && BuyTicket > 0 || BuyTicket > 0) { CloseLots = OrderLots(); ClosePrice = Bid; Closed = OrderClose(BuyTicket, CloseLots, ClosePrice, UseSlippage, Red); } OpenPrice = Bid; //SellOrder if ((TradeHour12==Hour())||(TradeHour23==Hour())) //Signal Sell { int opensell=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippa ge,StopLoss,0,"time trader sell order ",MagicNumber,0,Green); } SellTicket = 0; BuyTicket = 0; //---- return(0); } //+------------------------------------------------------------------+ //Pip Point Function double PipPoint (string Currency) { int CalcDigits = MarketInfo(Currency, MODE_DIGITS); if(CalcDigits == 2 || CalcDigits == 3) double CalcPoint = 0.01; else if(CalcDigits == 4 || CalcDigits == 5) CalcPoint = 0.0001; return (CalcPoint); } //Get Slippage Function int GetSlippage(string Currency, int SlippagePips) { int CalcDigits = MarketInfo(Currency, MODE_DIGITS); if(CalcDigits == 2 || CalcDigits == 3) double CalcSlippage = SlippagePips; else if(CalcDigits == 4 || CalcDigits == 5) CalcSlippage = SlippagePips * 10; return (CalcSlippage); } Leiderkomme ich noch den Fehlerhinweis beim Kompilieren, dass "Lot" nicht definiert wurde...??
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... Geändert von Mast83 (05.02.12 um 20:59 Uhr) |
|
|||
//+------------------------------------------------------------------+
//| Der Stundentrader.mq4 | //| Der Marc | //| Es gibt gar keine Internetseite | //+------------------------------------------------------------------+ #property copyright "Der Marc" #property link "Es gibt gar keine Internetseite" //Wichtige Variablen extern double Minlot=0.01; extern int Digits2Round=2; extern int PercentOfFreeDepo=1; extern int Slippage=5; extern int MagicNumber =1; extern int TradeHour3=3; extern int TradeHour4=4; extern int TradeHour7=7; extern int TradeHour10=10; extern int TradeHour17=17; extern int TradeHour18=18; extern int TradeHour20=20; extern int TradeHour12=12; extern int TradeHour23=23; extern int StopLoss=40; //Globale Variablen int BuyTicket; int SellTicket; double UsePoint; int UseSlippage; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { UsePoint = PipPoint(Symbol()); UseSlippage = GetSlippage(Symbol(), Slippage); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double FreeDepo=NormalizeDouble(AccountBalance()-AccountMargin(),Digits2Round); double Risk=NormalizeDouble((FreeDepo*PercentOfFreeDepo/100),Digits2Round); double Lot=NormalizeDouble(Risk/(StopLoss/0.0001)*0.1,Digits2Round); //===================== Lets determine lot size and risk =================================== if ( Lot<Minlot ) { Lot=Minlot; } Comment( "\n","Acceptable risk is ",PercentOfFreeDepo, "% = ",Risk," of the free money ",FreeDepo," in lots = ",Lot); // Buy criteria OrderSelect(SellTicket || BuyTicket, SELECT_BY_TICKET); //Close Order if(OrderCloseTime() == 0 && SellTicket > 0 || BuyTicket > 0) { double CloseLots = OrderLots(); double ClosePrice = Ask; bool Closed = OrderClose(SellTicket ,CloseLots, ClosePrice, UseSlippage, Red); } double OpenPrice = Ask; //BuyOrder if ((TradeHour3==Hour())||(TradeHour4==Hour())||(Trad eHour7==Hour())||(TradeHour10==Hour())||(TradeHour 17==Hour())||(TradeHour18==Hour())||(TradeHour20== Hour())) //Signal Buy { int openbuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage ,StopLoss,0,"time trader buy order ",MagicNumber,0,Blue); } SellTicket = 0; BuyTicket = 0; // Sell criteria OrderSelect(BuyTicket || SellTicket, SELECT_BY_TICKET); //Close Order if(OrderCloseTime() == 0 && BuyTicket > 0 || BuyTicket > 0) { CloseLots = OrderLots(); ClosePrice = Bid; Closed = OrderClose(BuyTicket, CloseLots, ClosePrice, UseSlippage, Red); } OpenPrice = Bid; //SellOrder if ((TradeHour12==Hour())||(TradeHour23==Hour())) //Signal Sell { int opensell=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippa ge,StopLoss,0,"time trader sell order ",MagicNumber,0,Green); } SellTicket = 0; BuyTicket = 0; //---- return(0); } //+------------------------------------------------------------------+ //Pip Point Function double PipPoint (string Currency) { int CalcDigits = MarketInfo(Currency, MODE_DIGITS); if(CalcDigits == 2 || CalcDigits == 3) double CalcPoint = 0.01; else if(CalcDigits == 4 || CalcDigits == 5) CalcPoint = 0.0001; return (CalcPoint); } //Get Slippage Function int GetSlippage(string Currency, int SlippagePips) { int CalcDigits = MarketInfo(Currency, MODE_DIGITS); if(CalcDigits == 2 || CalcDigits == 3) double CalcSlippage = SlippagePips; else if(CalcDigits == 4 || CalcDigits == 5) CalcSlippage = SlippagePips * 10; return (CalcSlippage); } So nun schaut es besser aus... Übrigens...ich habe festegestellt, dass die offene Position direkt geschlossen wird und nicht erst nach der Stunde..nochmals vielen Dank für die Hilfe VG und Danke Marc
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... |
|
|||
Habe nun OrderOpenTime beigepackt und gegen TimeCurrent laufen lassen...leider öffnet der immer noch mehrere Positionen und diese laufen auch wundervoll in den Stop...
Der soll doch nur eine Position eröffnen...Jetzt benötige ich Hilfe bzgl meines Denkfehlers: //+------------------------------------------------------------------+ //| Der Stundentrader.mq4 | //| Der Marc | //| Es gibt gar keine Internetseite | //+------------------------------------------------------------------+ #property copyright "Der Marc" #property link "Es gibt gar keine Internetseite" //Wichtige Variablen extern double Minlot=0.01; extern int Digits2Round=2; extern int PercentOfFreeDepo=1; extern int Slippage=5; extern int MagicNumber =1; extern int TradeHour3=3; extern int TradeHour4=4; extern int TradeHour7=7; extern int TradeHour10=10; extern int TradeHour17=17; extern int TradeHour18=18; extern int TradeHour20=20; extern int TradeHour12=12; extern int TradeHour23=23; extern int StopLoss=40; //Globale Variablen int BuyTicket; int SellTicket; double UsePoint; int UseSlippage; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { UsePoint = PipPoint(Symbol()); UseSlippage = GetSlippage(Symbol(), Slippage); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double FreeDepo=NormalizeDouble(AccountBalance()-AccountMargin(),Digits2Round); double Risk=NormalizeDouble((FreeDepo*PercentOfFreeDepo/100),Digits2Round); double Lot=NormalizeDouble(Risk/(StopLoss/0.0001)*0.1,Digits2Round); //===================== Lets determine lot size and risk =================================== if ( Lot<Minlot ) { Lot=Minlot; } Comment( "\n","Acceptable risk is ",PercentOfFreeDepo, "% = ",Risk," of the free money ",FreeDepo," in lots = ",Lot); // Buy criteria OrderSelect(SellTicket || BuyTicket, SELECT_BY_TICKET); //Close Order if((OrderOpenTime()+3600) > TimeCurrent() && SellTicket > 0 || BuyTicket > 0) { double CloseLots = OrderLots(); double ClosePrice = Ask; bool Closed = OrderClose(SellTicket ,CloseLots, ClosePrice, UseSlippage, Red); } double OpenPrice = Ask; //BuyOrder if ((TradeHour3==Hour())||(TradeHour4==Hour())||(Trad eHour7==Hour())||(TradeHour10==Hour())||(TradeHour 17==Hour())||(TradeHour18==Hour())||(TradeHour20== Hour())) //Signal Buy { int openbuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage ,StopLoss,0,"time trader buy order ",MagicNumber,0,Blue); } SellTicket = 0; BuyTicket = 0; // Sell criteria OrderSelect(BuyTicket || SellTicket, SELECT_BY_TICKET); //Close Order if((OrderOpenTime()+3600) > TimeCurrent() && SellTicket > 0 || BuyTicket > 0) { CloseLots = OrderLots(); ClosePrice = Bid; Closed = OrderClose(BuyTicket, CloseLots, ClosePrice, UseSlippage, Red); } OpenPrice = Bid; //SellOrder if ((TradeHour12==Hour())||(TradeHour23==Hour())) //Signal Sell { int opensell=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippa ge,StopLoss,0,"time trader sell order ",MagicNumber,0,Green); } SellTicket = 0; BuyTicket = 0; //---- return(0); } //+------------------------------------------------------------------+ //Pip Point Function double PipPoint (string Currency) { int CalcDigits = MarketInfo(Currency, MODE_DIGITS); if(CalcDigits == 2 || CalcDigits == 3) double CalcPoint = 0.01; else if(CalcDigits == 4 || CalcDigits == 5) CalcPoint = 0.0001; return (CalcPoint); } //Get Slippage Function int GetSlippage(string Currency, int SlippagePips) { int CalcDigits = MarketInfo(Currency, MODE_DIGITS); if(CalcDigits == 2 || CalcDigits == 4) double CalcSlippage = SlippagePips; else if(CalcDigits == 3 || CalcDigits == 5) CalcSlippage = SlippagePips * 10; return (CalcSlippage); }
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... |
Lesezeichen |
Stichworte |
close, mql4, order, order schliessen, programmierung, programmierung metatrader |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|