if (flag==1) { Symb="EURUSD"; OrderSend(Symb,...)///Открываем, переносим флаг во 2 состояние для открытия след ордера и flag=2; ///выходим тк больше мы ни чего не можем сделать return(0); }
if (flag==2) { Symb="AUDUSD"; OrderSend(Symb,...) flag=3; return(0); }
if (flag==3) { Symb="USDJPY"; OrderSend(Symb,...) flag=0;//Возвращаем флаг в начальное состояние.. return(0); } return(0);}
事实上,在这种情况下,我通常尝试更广泛地使用GetLastError()。当然,我不是专家。
我知道GetLastError()应该说明为什么某事没有完成,例如,如果一个线程很忙,但我根本就没有任何事情发生!这就是为什么我没有做。
我想你只需要为不同的工具建立3个订单就可以了?为什么不做一个标志变量,例如
在全局变量中创建
int flag=0;
string Symb;
///////////////
然后
int start()
{
if (условие открытия)
{flag=1;}
if (flag==1)
{
Symb="EURUSD";
OrderSend(Symb,...)///Открываем, переносим флаг во 2 состояние для открытия след ордера и
flag=2; ///выходим тк больше мы ни чего не можем сделать
return(0);
}
if (flag==2)
{
Symb="AUDUSD";
OrderSend(Symb,...)
flag=3;
return(0);
}
if (flag==3)
{
Symb="USDJPY";
OrderSend(Symb,...)
flag=0;//Возвращаем флаг в начальное состояние..
return(0);
}
return(0);}
另外,最好能增加对开局的检查,只有在检查成功后才能移动旗子。
非常感谢!我将试一试。
}
else 打印("开多头头寸错误:",GetLastError())。
如果OrderSelect()失败,则返回一个错误。
如果(OrderSend(Symbol(), OP_SELLSTOP, getLots, Bid, 0, 0, 0, WindowExpertName(),Magic, 0, Red) < 0)
Print("Error Open Sellstop = " ,GetLastError());
如果OrderSend()失败,返回一个错误。有一个版本,它是OrderSend(),不工作。
知道为什么它在测试器上能工作吗?
知道为什么它在测试器上能工作吗?
不,但我要说的是,通过更广泛地使用Print函数(即使没有随后的GetLastError)。
你可以更好地看到EA是如何交易的。
比如说像这样。
如果(MA1>MA2 && StochPrev<StohCur && StochPrev<SignPrev )
{
print("买入订单 的条件已满足")。
ticket=OrderSend(Symbol(,OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,",16895,0,DeepSkyBlue);如果(ticket>0)
}