Wie setze ich den TP auf weniger als 5 Pips? - Seite 4

 
Ist das richtig? Es werden nur die Aufträge der letzten 100 Minuten geschlossen
if(Bid>CloseforBuy)
{
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY && TimeCurrent()-OrderOpenTime() <= 100  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }



if(Ask<CloseforSell)
{
   for(int b=OrdersTotal()-1;b>=0;b--)
      if( OrderSelect(b,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_SELL &&  TimeCurrent()-OrderOpenTime() <= 100  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }
 
ats:
Ist das richtig? Es werden nur die Aufträge der letzten 100 Minuten abgeschlossen.

Fast, TimeCurrent() liefert eine Datetime, die die Serverzeit des letzten Ticks angibt.

Hinweis: datetime-Typ (Ganzzahl, die die Anzahl der seit Mitternacht, 1. Januar 1970, verstrichenen Sekunden angibt).

Sie müssen also prüfen, ob ...

TimeCurrent()-OrderOpenTime() <=

100 Minuten . . . . oder (100 * 60) Sekunden

 

Vielen Dank für Ihre Hilfe!

Viel Spaß beim Handeln!

 

Hallo!

Ich habe versucht, den EA zu modifizieren, aber er funktioniert nicht richtig. Haben Sie eine Idee, wo der Fehler liegt?

Dankeschön

extern double TPforBuys=1;
extern double TPforSells=1;
extern double TimeForEA=120;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{


double TPbuy = TPforBuys / 10000;
double TPB=OrderOpenPrice()+ TPbuy;

// Close Buys
if(Bid>TPB)
{
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY && TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60)  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }



double TPsell = TPforSells / 10000;
double TPS=OrderOpenPrice()- TPsell;



// Close Sells
if(Ask<TPS)
{
   for(int b=OrdersTotal()-1;b>=0;b--)
      if( OrderSelect(b,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_SELL &&  TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60) &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }


return(0);
}
 

Versuchen Sie, dazu zu wechseln und zu sehen, ob das "richtig" funktioniert ...

TimeCurrent()- OrderOpenTime() >= (TimeForEA * 60) // time to close
 

Das ist richtig! Der EA schließt nur Aufträge, die nicht älter als 2 Stunden sind! Das Problem ist, dass er nicht alle Orders nach 1 Pip korrekt schließt! Aber ich weiß nicht, wo der Fehler liegt!

Vielen Dank für Ihre Hilfe!

 
ats:

Das ist richtig! Der EA schließt nur Aufträge, die nicht älter als 2 Stunden sind! Das Problem ist, dass er nicht alle Orders nach 1 Pip korrekt schließt! Aber ich weiß nicht, wo der Fehler liegt!

Dankeschön

Es funktioniert also so, wie Sie es wollen, habe ich Recht? Ich habe keine Ahnung, was Sie mit "richtig funktionieren" meinen, und ich bin faul genug, um nicht 4 Seiten mit Antworten und Codes zu lesen.

Also eigentlich weiß ich nicht genau, warum ich Ihnen diese Antwort gegeben habe :)

 
onewithzachy:

Also eigentlich weiß ich nicht genau, warum ich Ihnen diese Antwort gegeben habe :)

Es ist schön, zur Abwechslung mal Ehrlichkeit im Internet zu sehen :-)
 
onewithzachy:

Also funktioniert es so, wie Sie es wollen, bin ich richtig? Denn ich habe keine Ahnung, was du mit "richtig funktionieren" meinst, und ich bin faul genug, um nicht 4 Seiten mit Antworten und Codes zu lesen.

Also eigentlich weiß ich nicht genau, warum ich Ihnen diese Antwort gegeben habe :)

Aber kein Problem! Ich danke dir!
 

Wenn Sie das tun . . .

double TPB=OrderOpenPrice()+ TPbuy;

. OrderOpenPrice() Hinweis: "DieOrder muss zuerst mit der FunktionOrderSelect()ausgewählt werden."