bool Torg=true;
for(int i=OrdersTotal()-1;i>=0;i--){
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордера № ",i);}
else {
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) { continue;}
if(OrderOpenTime()>=Time[0]){
Torg=false;
}
}
}
// теперь используем результат работы цикла// Если есть сигнал и торг разрешён, то открываем ордер
谁能解释一下,如何在一个柱子的任何时候开出一个订单,并在下一个柱子才开出下一个订单?
我们应该循环浏览订单列表。如果下一个订单的开仓时间 被设置为高于或等于当前条形图的开仓时间(Time[0]),我们应该设置禁止在当前货币对上开仓的标志。在下一个蜡烛图上,循环将检测到没有这样的订单,它将不放置一个禁令,也就是说,它将清除禁止打开订单的标志。
我们循环查看订单列表。如果下一个订单的开仓时间大于或等于当前条形图的开仓时间(Time[0]),那么我们就设置禁止在此货币对上开仓的标志。
非常感谢你。
如果代码只对一个货币对起作用,那么放一行来切断其他货币对的订单
如果代码只对一个货币对起作用,那么设置一行来丢弃其他货币对的订单
你可以。
你可以。
bool Times=true; if (OrdersTotal()>0){ for(int g=OrdersTotal()-1; g>=0; g--){ datetime t;
OrderSelect(g,SELECT_BY_POS); if (OrderMagicNumber()! =MagicNumber) {continue;}如果(t<OrderOpenTime()||g==OrdersTotal()-1) t=OrderOpenTime();
如果(t>=Time[0])Times=false;}}
这是否正确?
bool Times=true。
如果(OrdersTotal()>0){
for(int g=OrdersTotal()-1; g>=0; g--){
datetime t;
OrderSelect(g,SELECT_BY_POS)。
如果(OrderMagicNumber()!=MagicNumber){继续;}。
如果(t<OrderOpenTime()||g==OrdersTotal()-1)t=OrderOpenTime()。
如果(t>=Time[0])Times=false;}}
这是否正确?
不,没有必要在每次循环迭代时在循环内声明一个变量。
bool Times=true; if (OrdersTotal()>0){ for(int g=OrdersTotal()-1; g>=0; g--){ datetime t; OrderSelect(g,SELECT_BY_POS); if (OrderMagicNumber()! =MagicNumber) {continue;}如果(t<OrderOpenTime()||g==OrdersTotal()-1) t=OrderOpenTime();
如果(t>=Time[0])Times=false;}}
这是否正确?
bool Times=true;
datetime t=Time[1];
if (OrdersTotal()>0){
for(int g=OrdersTotal()-1; g>=0; g--){
OrderSelect(g,SELECT_BY_POS);
if (OrderMagicNumber()! =MagicNumber) {continue;}
如果(t<OrderOpenTime()) t=OrderOpenTime();
如果(t>=Time[0])Times=false;}}
这是否正确?
不,你不需要在每次迭代时在循环内声明一个变量。