任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 701

 

这样解决了。

int nday;

 if(OrdersTotal()==0)

 {

  double lot=(AccountBalance()/ MinLot)*0.01;

  if(center>Ask && pokupaem>0 && prodaem<1 && prodaem1<1 && SelBuyDaily==Vhodim1 && proverka==1)

  {

   x=OrderSend(Symbol(),OP_BUY,lot,Ask,3,0,0,Komment,Magic,0,Blue);

   nday=DayOfYear();

  }

  if(OrderSelect(x,SELECT_BY_TICKET)==true)

 {

  if((OrdersTotal()>0 && OrderCloseTime()==0 && OrderType()==OP_BUY) && (nday<DayOfYear() || OrderOpenTime()<iTime(NULL,0,0)))

  {

   if(pokupaem>0 && prodaem<1 && Ask+atr<OrderOpenPrice() && proverka==1)

   {

    x=OrderSend(Symbol(),OP_BUY,OrderLots()*Ml,Ask,3,0,0,Komment,Magic,0,Blue);

    nday=DayOfYear();

   }

  }

 }

 

我第一次尝试在循环中写出开仓,因为我不排除在其他货币对上也开仓。

但由于某些原因,循环中没有任何东西可以打开!我真的需要一个特殊的环来打开它们吗!?是的,我只在测试器中检查了它!

我写了一个正常的。

    optal = OrdersTotal();
    for(op = optal-1; op >= 0; op--) 
    { 
      if(OrderSelect(op,SELECT_BY_POS,MODE_TRADES))
      { 
        if(OrderSymbol() != Symbol()) continue;
        if(OrderMagicNumber() != magic) continue; 
// и т.д.

开立订单、仓位有什么问题?谢谢你的帮助!

 
borilunad:

我第一次尝试在循环中写出开仓,因为我不排除在其他货币对上也开仓。

但由于某些原因,循环中没有任何东西可以打开!我真的需要一个特殊的环来打开它们吗!?是的,我只在测试器中检查了它!

我写了一个正常的。

开立订单、仓位有什么问题?谢谢你的帮助!



在没有订单之前,这个周期不会开始。一般来说,循环的意义何在?
 
borilunad:

我第一次尝试在循环中写出开仓,因为我不排除在其他货币对上也开仓。

但由于某些原因,循环中没有任何东西可以打开!我真的需要一个特殊的环来打开它们吗!?

我写了一个正常的。

开立订单、仓位有什么问题?谢谢你的帮助!

循环的执行速度比交易线程的释放速度快。这就是为什么我们应该添加一个延迟循环,而(!IsTradeContextBusy()) 睡眠(100)。
 
valeryk:


除非没有订单,否则循环不会开始。循环的目的是什么?


谢谢你!我也是这么想的!因此,如果,例如,我想在第一对上打开,没有循环就够了,但有if(OrdersTotal== 0)。而当我想打开另一个相同或另一双的订单时,我需要一个循环,它就会起作用!我现在就去试试!

我想我将不得不改变开幕式中的很多东西,但原则上我明白我应该怎么做!我想这是一个很好的机会。谢谢你!

 

事实上,一些有害的逻辑。我没有仔细看,首先....为什么我们在开单时需要OrdersTotal()?

那么,如果我们需要在循环中打开几个订单,循环必须根据必要的订单数量来组织。而如果我们需要不断地支持这个数字,我们必须使用其他的规则。

例如,我们需要开设7个订单。

for(int i = 0; i < 7; i++)
{
while(!IsTradeContextBusy()) Sleep(100); // Ожидание освобождения торгового потока

int ticket = OrderSend(Symbol(), ..............); // Открытие ордера
if(ticket > 0) Print("Открылся ордер № ", i, " ticket - ", ticket); // Проверка пропусков при открытии.
}
但这是一个简短的变体。一个好主意是在开单时增加错误处理功能
 
AlexeyVik:

事实上,一些有害的逻辑。我没有仔细看第一....为什么我们在开单时需要OrdersTotal()?

那么,如果我们需要在循环中打开几个订单,循环必须根据必要的订单数量来组织。而如果我们需要不断地支持这个数字,我们必须使用其他的规则。

例如,我们需要建立7个订单

但这是一个简短的变体。一个好主意是在打开订单时增加错误处理
!

谢谢你!但我需要一个循环,这样猫头鹰就不会看到其他的配对了!"。我将在以后处理错误!当日志中出现错误130时,我甚至很高兴,这意味着它是有效的!"。错误是在我的外部函数 中处理的!再次感谢!
 
borilunad:

谢谢你!但我需要一个循环,这样猫头鹰就不会看到其他的配对!"。我以后会处理这些错误的!"。当日志中出现错误130时,我甚至感到很高兴,所以它在工作了!"。错误是在我的外部函数中处理的!再次感谢!
这就是逻辑的险恶性。猫头鹰不可能看不到其他配对。它可以而且应该被强制不处理其他符号的已经打开的订单。在OrderSend(............)函数 中,你应该写上某个Symbol()或以文本格式,例如 "EURUSD"......无论你在那里写什么,都会被打开。或者你可以尝试打开它...
 
AlexeyVik:

事实上,一些有害的逻辑。我没有仔细看第一....为什么我们在开单时需要OrdersTotal()?

那么,如果我们需要在循环中打开几个订单,循环必须根据必要的订单数量来组织。而如果我们需要不断地支持这个数字,我们必须使用其他的规则。

例如,我们需要建立7个订单

但这是一个简短的变体。一个好主意是在开单时增加错误处理功能

这是一个很好的方法来检查我们是否可以在一个tick中打开多达8个订单。我们被承诺过,但还没有人检查过它们
 
Vinin:

一个测试在一个tick中最多开出八个订单的能力的好方法。我们被承诺过,但还没有人检查过它们

我不明白...