我问一个擅长mql5编程的人,并做一个只允许每个蜡烛交易一次的函数,IsNewbar函数只在蜡烛开始时工作。下面是我编写这个函数的尝试。
bool Tradeallowed(){
bool hastraded = false;
for(int a =PositionsTotal()-1;a>=0;a--){
string symbol1 = PositionGetSymbol(a);
if(Symbol() == symbol1){
ulong pticket1 = PositionGetTicket(a);
double csl1 = PositionGetDouble(POSITION_SL);
int posT = PositionGetInteger(POSITION_TYPE);
if(posT == POSITION_TYPE_BUY || posT == POSITION_TYPE_SELL &&
NewBar() == false){
hastraded = true;
}
}
return hastraded;
}
为什么不把事情简单化呢?而不是查找订单,这是不必要的,容易产生进一步的问题,只是记录蜡烛时间的最后一笔交易。
datetime LastTrade;
void OnTick()
{
if(LastTrade!=iTime(_Symbol,_Period,0))
{
// Place Trade Code Here
LastTrade=iTime(_Symbol,_Period,0);
}
}