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

 
Sie meinen, hier entlang?
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()
{
for(int a=OrdersTotal()-1;a>=0;a--)

double TPbuy = TPforBuys / 10000;
if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY && OrderSymbol()==Symbol() )
double TPB=OrderOpenPrice()+ TPbuy;

// Close Buys
if(Bid>TPB)
{
   
      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;
if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_SELL && OrderSymbol()==Symbol() )
double TPS=OrderOpenPrice()- TPsell;



// Close Sells
if(Ask<TPS)
{
   
      if( OrderSelect(a,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);
}
 
ats:
Sie meinen, hier entlang?
Ich weiß nicht ... macht das, was Sie wollen?
 
RaptorUK:
Ich weiß nicht ... bringt das, was Sie wollen?
Nein. Das tut es nicht! Es ist wieder nicht richtig!
 
Vielleicht könnten Sie erklären, was genau Sie zu tun versuchen - zu meinem Nutzen, zuonewithzachys Nutzen und natürlich auch zu Ihrem Nutzen.
 

Natürlich! Entschuldigung! Daran habe ich nicht gedacht!

Wir haben diesen EA für Scalping gemacht! Der EA sollte jede Scalping-Order mit 1 Pip Gewinn schließen! Um die langfristigen Orders nicht zu schließen, haben wir den Befehl OrderOpenTime() verwendet. Die Scalping-Orders werden manuell gesetzt! Es wirkt wie TP, aber nur mit 1 Pip Gewinn!

Herzlichen Dank!

 
Ah, ich verstehe, Sie wollen nicht, dass der EA die nicht-skalierenden, kurzfristigen Aufträge schließt...
 
RaptorUK:
Ah, ich verstehe, Sie wollen nicht, dass der EA die nicht-skalierenden, kurzfristigen Aufträge schließt...
Ganz genau!
 

OK, einige Anmerkungen...

1. Ihre Schleife macht praktisch nichts, Sie müssen das, was Sie innerhalb der Schleife tun wollen, in geschweifte Klammern { } einschließen ...

2. Sie haben 2 OrderSelect()-Aufrufe, wenn Sie alles in die Schleife packen, brauchen Sie nur einen ...

3. Der Close-Buys-Abschnitt sollte nur für Buy-Orders ausgeführt werden, der Close-Sells-Abschnitt sollte nur für Sell-Orders ausgeführt werden.

4. Ihr Gewinn von 1 Pip ist für 4-stellige Paare fest kodiert, daher wird er für Paare wie USDJPY nicht funktionieren.

 

Vielleicht so etwas...

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()
{
for(int a=OrdersTotal()-1;a>=0;a--)
   {
   double TPbuy = TPforBuys / 10000;
   
   if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
   OrderType()==OP_BUY && OrderSymbol()==Symbol() )  // order type and Symbol checked here
      {
      double TPB=OrderOpenPrice()+ TPbuy;
      
      // Close Buys
      if(Bid>TPB)
         {
         
         if( TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60) )  // no need to check type and symbol here
            if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
               {
               Print("OrderClose failed, error: ", GetLastError());
               }
            else continue;        // if order has been closed move to the next position, no need to check if it's a SELL
         } // end of if(Bid>TPB)
      } // end of if( OrderSelect(a 
      
   double TPsell = TPforSells / 10000;
   
   if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
   OrderType()==OP_SELL && OrderSymbol()==Symbol() )
      {
      double TPS=OrderOpenPrice()- TPsell;

      // Close Sells
      if(Ask<TPS)
         {
   
         if( TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60) )
            if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
               Print("OrderClose failed, error: ", GetLastError());
            
         } // end of if(Ask<TPS)
      } // end of if( OrderSelect(a
   } // end of for(int a=OrdersTotal()

return(0);
}
 
RaptorUK:

Vielleicht so etwas...

Übrigens habe ich diesen Code nicht kompiliert oder getestet . . .