Auftrag automatisch nach einem bestimmten Zeitraum und/oder SL schließen

 

Hallo zusammen,

ich würde gerne wissen, ob es möglich ist, eine Order automatisch zu schließen, nachdem ein Zeitraum und/oder SL erreicht wurde...

Zum Beispiel:

Ich habe um 13 Uhr einen Trade eröffnet und möchte diese Order schließen lassen, wenn der Kurs seinen StoppLoss erreicht hat oder ein Zeitraum von 2 Stunden verstrichen ist.

Hier ist der aktuelle Code:

// Kaufkriterien
if ((TradeHour3==Stunde())||(TradeHour4==Stunde())||(TradeHour7==Stunde())||(TradeHour10==Stunde())||(TradeHour17==Stunde())||(TradeHour18==Stunde())||(TradeHour20==Stunde())) //Signal Kauf
{
int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb, "time trader buy order ",BuyMagicNumber,0,Blue);
if(openbuy<1){int buyfail=1;}
}

}// halt1

if((halt2!=1)&&(AllowSell==true)){// halt2
RefreshRates();
// Verkaufskriterien
if ((TradeHour12==Stunde())||(TradeHour23==Stunde())) //Signal Verkaufen
{
int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,sls,tps, "time trader sell order ",SellMagicNumber,0,Green);
if(opensell<1){int sellfail=1;}
}

}// halt2

Vielen Dank im Voraus

Marc

 

Bitte benutzen Sie dies, um den Code zu posten. . das macht es einfacher zu lesen.

 
Durchlaufen Sie die offenen Aufträge und prüfen Sie, wann sie mit OrderOpenTime geöffnet wurden (vergessen Sie nicht, zuerst OrderSelect zu verwenden), und vergleichen Sie diese Zeit mit TimeCurrent, um zu sehen, ob 2 Stunden verstrichen sind, und wenn ja, schließen Sie den Auftrag.
 
nirvanamac:

Hallo zusammen,

ich würde gerne wissen, ob es möglich ist, eine Order automatisch zu schließen, nachdem ein Zeitraum und/oder SL erreicht wurde...

Zum Beispiel:

Ich habe um 13 Uhr einen Trade eröffnet und möchte diese Order schließen lassen, wenn der Kurs seinen StoppLoss erreicht hat oder ein Zeitraum von 2 Stunden verstrichen ist.

Hier ist der aktuelle Code:

// Kaufkriterien
if ((TradeHour3==Stunde())||(TradeHour4==Stunde())||(TradeHour7==Stunde())||(TradeHour10==Stunde())||(TradeHour17==Stunde())||(TradeHour18==Stunde())||(TradeHour20==Stunde())) //Signal Kauf
{
int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb, "time trader buy order ",BuyMagicNumber,0,Blue);
if(openbuy<1){int buyfail=1;}
}

}// halt1

if((halt2!=1)&&(AllowSell==true)){// halt2
RefreshRates();
// Verkaufskriterien
if ((TradeHour12==Stunde())||(TradeHour23==Stunde())) //Signal Verkaufen
{
int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,sls,tps, "time trader sell order ",SellMagicNumber,0,Green);
if(opensell<1){int sellfail=1;}
}

}// halt2

Vielen Dank im Voraus

Marc


// Buy criteria
if ((TradeHour3==Hour())||(TradeHour4==Hour())||(TradeHour7==Hour())||(TradeHour10==Hour())||(TradeHour17==Hour())||(TradeHour18==Hour())||(TradeHour20==Hour())) //Signal Buy
{
int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb,"time trader buy order ",BuyMagicNumber,0,Blue);
if(openbuy<1){int buyfail=1;}
}

}// halt1

if((halt2!=1)&&(AllowSell==true)){// halt2
RefreshRates();
// Sell criteria
if ((TradeHour12==Hour())||(TradeHour23==Hour())) //Signal Sell
{
int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,sls,tps,"time trader sell order ",SellMagicNumber,0,Green);
if(opensell<1){int sellfail=1;}
}

}// halt2
 
nirvanamac:
Ich würde gerne wissen, ob es möglich ist, eine Order automatisch zu schließen, nachdem ein Zeitraum und/oder SL erreicht wurde...
  1. Wenn der SL erreicht ist, schließt er sich selbst.
  2. Andernfalls müssen Sie es einfach codieren. Wo ist Ihr OrderClose() und Ihr Test für die Zeit?
 
WHRoeder:
  1. Wenn der SL erreicht ist, schließt er sich selbst.
  2. Andernfalls müssen Sie ihn einfach codieren. Wo ist Ihr OrderClose() und Ihr Test für die Zeit?


Hallo WHRoeder,

Ich denke, Sie meinen den Lochcode oder?

//---- input parameters
extern double    Lots=0.01;
extern int       TakeProfit=200;
extern int       StopLoss=200;
extern int       Slip=50;
extern int BuyMagicNumber =1;
extern int SellMagicNumber =2;
extern bool AllowBuy=true;
extern bool AllowSell=true;
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;
 
//+------------------------------------------------------------------+
//| expert starts                                  |
//+------------------------------------------------------------------+
int start()
  {
//----
int StopMultd,Sleeper=1;
 
 
 
int digits=MarketInfo("EURUSD",MODE_DIGITS);
if(digits==5){StopMultd=10;} else{StopMultd=1;}
double TP=NormalizeDouble(TakeProfit*StopMultd,Digits);
double SL=NormalizeDouble(StopLoss*StopMultd,Digits);
double Slippage=NormalizeDouble(Slip*StopMultd,Digits);
 
// Calculate stop loss
double slb=NormalizeDouble(Ask-SL*Point,Digits);
double sls=NormalizeDouble(Bid+SL*Point,Digits);
 
// Calculate take profit
double tpb=NormalizeDouble(Ask+TP*Point,Digits);
double tps=NormalizeDouble(Bid-TP*Point,Digits);
 
//-------------------------------------------------------------------+
//Check open orders
//-------------------------------------------------------------------+
if(OrdersTotal()>0){
  for(int i=1; i<=OrdersTotal(); i++)          // Cycle searching in orders
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // If the next is available
        {
          if(OrderMagicNumber()==BuyMagicNumber) {int halt1=1;}
          if(OrderMagicNumber()==SellMagicNumber) {int halt2=1;}
        }
     }
}
//-------------------------------------------------------------------+
 
 
if((halt1!=1)&&(AllowBuy==true)){// halt1
 
// Buy criteria
if ((TradeHour3==Hour())||(TradeHour4==Hour())||(TradeHour7==Hour())||(TradeHour10==Hour())||(TradeHour17==Hour())||(TradeHour18==Hour())||(TradeHour20==Hour())) //Signal Buy
 {
   int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb,"time trader buy order ",BuyMagicNumber,0,Blue);
   if(openbuy<1){int buyfail=1;}
 }
 
}// halt1
 
if((halt2!=1)&&(AllowSell==true)){// halt2
RefreshRates();
 // Sell criteria
 if ((TradeHour12==Hour())||(TradeHour23==Hour())) //Signal Sell
 {
   int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,sls,tps,"time trader sell order ",SellMagicNumber,0,Green);
   if(opensell<1){int sellfail=1;}
 }
 
}// halt2
 
 
//-------------------------------------------------------------------+
// Error processing
//-------------------------------------------------------------------+
if(buyfail==1||sellfail==1){
int Error=GetLastError();
  if(Error==130){Alert("Wrong stops. Retrying."); RefreshRates();}
  if(Error==133){Alert("Trading prohibited.");}
  if(Error==2){Alert("Common error.");}
  if(Error==146){Alert("Trading subsystem is busy. Retrying."); Sleep(500); RefreshRates();}
 
}
 
// if(openbuy==true||opensell==true)Sleep(1*60*1000*Sleeper);
//-------------------------------------------------------------------
   return(0);
  }
//+-----------------------------------
 

eigentlich gibt es nur einen Stopploss. Ich möchte nur die Bestellung 2 Stunden nach einem neuen bar geöffnet wurde oder die letzte Sekunde von 1:59:59 schließen...Mein Problem ist, den Code in meinem aktuellen zu füllen...

 
RaptorUK:
Durchlaufen Sie die offenen Aufträge und prüfen Sie, wann sie mit OrderOpenTime geöffnet wurden (vergessen Sie nicht, zuerst OrderSelect zu verwenden), und vergleichen Sie diese Zeit mit TimeCurrent, um zu sehen, ob 2 Stunden verstrichen sind ... wenn ja, schließen Sie den Auftrag.
Programmieren Sie das einfach ... es ist wirklich nicht schwer.
 
RaptorUK:
Einfach codieren ... das ist wirklich nicht schwer.

Ich hoffe, ihr könnt mir Tipps geben, wenn ich scheitere ;-)
 
AFAIK will jeder hier helfen, aber nicht für irgendjemanden Sklave sein
 
qjol:
AFAIK jeder hier will helfen, aber nicht ein Sklave für jemanden sein


Ja, natürlich verstehe ich das...ich möchte keine Sklaven für meine EA's haben....das Einzige, was ich wissen muss, ist, wie man versteht, wie ein Programm funktioniert...

Wenn Sie einen einfachen EA wie SMA Cross haben... ist das kein großes Problem... aber je mehr Sie erreichen wollen, desto schwieriger wird es (zumindest für mich).

Grund der Beschwerde: