Abbiamo fatto questo EA per lo scalping! L'EA dovrebbe chiudere ogni ordine di scalping con 1 pip di profitto! Per non chiudere gli ordini a lungo termine abbiamo usato il comando OrderOpenTime(). Gli ordini di scalping sono impostati manualmente! Agisce come TP ma solo con 1 pip di profitto!
externdouble TPforBuys=1;
externdouble TPforSells=1;
externdouble 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 Buysif(Bid>TPB)
{
if( TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60) ) // no need to check type and symbol hereif( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
{
Print("OrderClose failed, error: ", GetLastError());
}
elsecontinue; // 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 Sellsif(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);
}
Intendi da questa parte?
Non so. . . fa quello che vuoi?
Certo, scusa! Non ci avevo pensato!
Abbiamo fatto questo EA per lo scalping! L'EA dovrebbe chiudere ogni ordine di scalping con 1 pip di profitto! Per non chiudere gli ordini a lungo termine abbiamo usato il comando OrderOpenTime(). Gli ordini di scalping sono impostati manualmente! Agisce come TP ma solo con 1 pip di profitto!
Grazie a tutti
Ah, capisco, non vuoi che l'EA chiuda gli ordini non scalping, a breve termine...
OK, alcuni commenti . . .
1. Il tuo ciclo non fa praticamente nulla, hai bisogno di racchiudere tra parentesi graffe, { } quello che vuoi fare all'interno del ciclo . . .
2. Hai 2 chiamate OrderSelect(), se metti tutto nel ciclo ne avrai bisogno solo di una . ..
3. la sezione close buys dovrebbe essere eseguita solo per gli ordini Buy, la close sells dovrebbe essere eseguita solo per gli ordini Sell
4. il tuo profitto di 1 pip è codificato per coppie a 4 cifre, quindi non funzionerà per coppie come USDJPY
Forse qualcosa del genere...
Forse qualcosa del genere...