[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 312

 
GarKain:
谁能解释一下,如何在一个柱子的任何时候开出一个订单,并在下一个柱子才开出下一个订单?

我们应该循环浏览订单列表。如果下一个订单的开仓时间 被设置为高于或等于当前条形图的开仓时间(Time[0]),我们应该设置禁止在当前货币对上开仓的标志。在下一个蜡烛图上,循环将检测到没有这样的订单,它将不放置一个禁令,也就是说,它将清除禁止打开订单的标志。
 
drknn:

我们循环查看订单列表。如果下一个订单的开仓时间大于或等于当前条形图的开仓时间(Time[0]),那么我们就设置禁止在此货币对上开仓的标志。
非常感谢
 
drknn,非常感谢你的澄清。我会保留它;)
 
GarKain:
非常感谢你。


如果代码只对一个货币对起作用,那么放一行来切断其他货币对的订单

if(OrderSymbol()!=Symbol()){continue;}
 
drknn:


如果代码只对一个货币对起作用,那么设置一行来丢弃其他货币对的订单

问题:如果代码在几个货币对上工作,同时在几个时间段上工作,你能把不同的魔法数字放在上面并对其进行筛选吗?
 

你可以。

if(OrderMagicNumber()!=MAGIC) { continue;}
 
drknn:

你可以。



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;}}


这是否正确?

 
GarKain:

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 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;
     }
   }  
 }


// теперь используем результат работы цикла
// Если есть сигнал и торг разрешён, то открываем ордер
 
GarKain:

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;}}


这是否正确?

 
drknn:


不,你不需要在每次迭代时在循环内声明一个变量。

嗯...谢谢