[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 66

 
但实际上,在这种情况下,我通常会尝试更广泛地使用GetLastError()。当然,我不是专家。
 
pepsi писал(а)>>
事实上,在这种情况下,我通常尝试更广泛地使用GetLastError()。当然,我不是专家。

我知道GetLastError()应该说明为什么某事没有完成,例如,如果一个线程很忙,但我根本就没有任何事情发生!这就是为什么我没有做。

 
Skydiver >> :

我想你只需要为不同的工具建立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);}


另外,最好能增加对开局的检查,只有在检查成功后才能移动旗子。

非常感谢!我将试一试。

 
如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print ("long position opened at price",OrderOpenPrice( ));
}

else 打印("开多头头寸错误:",GetLastError())。


如果OrderSelect()失败,则返回一个错误。


如果(OrderSend(Symbol(), OP_SELLSTOP, getLots, Bid, 0, 0, 0, WindowExpertName(),
Magic, 0, Red) < 0)
Print("Error Open Sellstop = " ,GetLastError());


如果OrderSend()失败,返回一个错误。
 
有一种理论认为,是OrderSend()失败了。
 
尊敬的专家,谁有一个指标,可以在每个时间框架上显示25和50条的最大最小水平的水平,如果价格从这个水平反弹,在任何时间框架中,在这个地方保持一条线,直到价格打破它?
 
pepsi писал(а)>>
有一个版本,它是OrderSend(),不工作。

知道为什么它在测试器上能工作吗?

 
sten1981 >> :

知道为什么它在测试器上能工作吗?

不,但我要说的是,通过更广泛地使用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)

}

 
然后,日志演示将更清楚地显示一切。在哪里寻找错误比较清楚。在你自己的...