int j=-1;
datetime t;
// Поищем в цикле последнюю закрытую позицию, которая закрылась по TakeProfitfor (int i=0; i<OrdersHistoryTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()>1) continue;
if (OrderMagicNumber()==1000 || OrderMagicNumber()==2000) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
if (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<0.5*Point) {
Alert("Позиция с тикетом #",OrderTicket()," закрыта по TakeProfit, закрываем остальные прозиции и удаляем отложенные ордера");
// Здесь код для закрытия всех открытых позиций (тоже в цикле)// Здесь код для удаления всех отложенных ордеров (также в цикле)
}
}
这一点。
// Здесь код для закрытия всех открытых позиций (тоже в цикле)// Здесь код для удаления всех отложенных ордеров (также в цикле)
具体来说,Alert("OrderTicket( )",OrderTicket( ))一行;这可能意味着最后一个周期没有完成!!。
这里是日志。
早些时候,我经常重写代码,我经常遇到错误,我认为是4108和4050,现在没有错误了!"。是的,无论如何,这是不可能的!
是的,我想这就是它变得棘手的地方。
如果( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()
||OrderMagicNumber()==1000 &&OrderSymbol()==Symbol() {
这是正确的,S... 我在这一行做错了什么?
是的,我想这就是它变得棘手的地方。
如果( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()
||OrderMagicNumber()==1000 &&OrderSymbol()==Symbol() {
这是正确的,S... 我在这一行做错了什么?
只是在这一点上,它可能是一个远程挂单,结果将是不寻常的;)
我不明白,我在这里选择的不是删除,不是时尚史。好吧,没必要,那是以后的事。
-AAH!!!所以我把两边都包起来了!!!。 谢谢你!!!!!
好吧,我去洗个澡,很热。
我不明白,我不是在删减被删除的,不是在删减时尚史。好吧,没必要,这是后话。
让我们假设我们有1个待处理的订单 要删除,并且我们已经达到了线(为了方便阅读,我按操作员分解了它)。
因此,我们有这样的秩序。
1)我们删除它,并在这样做的时候。
a) 我们很幸运,它被删除了
b) 它可能不会被删除,因为价格太接近/服务器超载/互联网故障/等等。但我们还是继续前进。
2)如果出了问题,我们要把它写下来
3) 关闭订单(待定!!!我们在第一点中删除了这个订单!!!)。
结果...我不能100%预测,但看起来是另一个错误
4) 显示有关信息
是的,这就是问题所在。
if( OrderMagicNumber( )==2000 &&OrderSymbol( )==Symbol( )
|| OrderMagicNumber( )==1000 &&OrderSymbol( )==Symbol( )){
它是如此的正确...我在生产线上搞砸了什么?
让我们这样说吧...所以没有人被枪杀,你也不会被人指使......。:))
让我们按顺序开始吧。首先,我们要找到最后一个平仓的位置,并确保它在拿下时是平仓的。
这一点。
这将是你的家庭作业...:)