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);
}
你的意思是这种方式?
我不知道......这能满足你的要求吗?
当然了!对不起!我没有考虑到这一点。我没有考虑过这个问题!
我们做这个EA是为了剥头皮!EA应该以1个点的利润关闭每个剥头皮的订单为了不关闭长期订单,我们使用了OrderOpenTime()命令。剥头皮的订单是手动设置的!它的作用类似于TP,但只有1个点的利润!
谢谢你
啊,我明白了,你不希望EA关闭非缩放的短线订单 . . .
好吧,一些评论......
1.你的循环几乎什么都没做,你需要把你想在循环中做的事情用大括号{ }括起来 . .
2.你有两个OrderSelect()的调用,如果你把所有东西都放到循环中,你只需要一个 ...
3. 平仓买入部分应该只对买入订单执行,平仓卖出应该只对卖出订单 执行。
4.你的1点利润是针对4位数货币对的硬编码,所以它对美元指数等货币对不起作用。
也许像这样的事情......。
也许像这样的事情......。