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

 
evillive:

那么你认为这个周期应该在什么时候结束?

?

纠正了。

if(R==0)

{

 while(true)

 {

  Sleep(30000);

  Alert("Ошибка!");

  DeleteBuy=OrderDelete(OrderTicketBuy);

  DeleteSell=OrderDelete(OrderTicketSell);

  return(1);

 }

}

利润计算也是如此。

我在while(真)循环中插入了一个信息和错误处理。循环工作,信息被写入,没有错误。但它没有通过条件,数据似乎没有被更新。

附加的文件:
test3_7.mq4  16 kb
 
CJIeCaPb:

我在while(真)循环中插入了一个信息和错误处理。循环工作,信息被写入,没有错误。但它没有通过条件,数据没有被更新。

这里还有一些提示。

这个周期并不考虑所有的订单;此外,如果一种类型的订单超过一个(例如,有三个补仓订单),那么会发生什么?

for(i=1;i<=OrdersTotal();i++)
{
 Alert(i);
 if(OrderSelect(i-1,SELECT_BY_POS)==true)
 {
  if(OrderSymbol()!=Symb)continue;
  if(OrderType()==OP_BUYSTOP)
  {
   OrderTicketBuy=OrderTicket();
   Alert("Buy");
   }
   if(OrderType()==OP_SELLSTOP)
   {
   OrderTicketSell=OrderTicket();
   Alert("Sell");
   }
  }
}


实际上,应该反过来:首先我们应该选择一个 订单,只有当一个订单被选中时,我们才应该检查它的类型,并对它进行各种胡说八道。

while(OrderType()==OP_BUY)//Buy
{
 RefreshRates();
 
 SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);
 ...
}
 
//--------------------------------------------------------------------------
//Sell
while(OrderType()==OP_SELL)
{
 RefreshRates();
  
 SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET);
 ...
}
 


而在 "扫荡--开关--特征--停顿 "中,究竟为什么要到处继续 ?那么这条线路将在什么时候执行,在一个和第二个开关中?

    CloseBuy=OrderClose(OrderTicketBuy,Lote,Bid,1); continue;//119
-----
    CloseSell=OrderClose(OrderTicketSell,Lote,Ask,1); continue;//119
 
evillive:


这里先考虑订单类型,然后再选择订单。 其实应该反过来,先选择订单,如果选择了订单,再看它的类型,对它进行各种嘲讽。

所以。

if(R==1)//238

{

 Alert("yes");

 R=0;

 SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);

}


if(R==2)//245

{

 Alert("yes");

 R=0;

 SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET);

}

而在 "滚动型-反白-停滞"(=D.你不喜欢什么?我认为这很正常,很清楚。),究竟为什么到处都是?那么这条线路将在什么时候执行,在一个和第二个开关中?

这样一来,它就会因条件而断裂。

 Timen=OrderCloseTime();

 if(Timen>0)

 {

  DeleteSell=OrderDelete(OrderTicketSell);

  OldProfit=0;

  WarBuy=true;

  break;

 }

嗯,是的,休息在OrderClose字符串中看起来会更好。然后我们需要添加OrderDelete。

evillive:

这里还有一些提示。

这个循环没有考虑所有的订单。 此外,如果一种类型的订单比一种类型的订单多(例如,有三个bystop订单),那么会发生什么?

OrdersTotal从1开始,OrderSelect 从0开始。

一个符号上是否有多个相同类型的订单?没有。但我将再看看。

我们需要一个与此接近的条件:"如果MA==price,那么"。

这就可以了。

if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))

P.S.: 新年快乐!

 
对某些人来说,这不是除夕夜。新年快乐!!。
 

新年快乐!

我最近开始学习MQL 4,想问一个问题。

例如,我有一个条件,要打开一个订单。

如果(Bid>=SS+5*Point)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green) 。

问题是:在第一笔订单有10个点以上的利润的情况下,必须规定什么条件才能开第二笔订单?

 
lexdemon:

新年快乐!

我最近开始学习MQL 4,想问一个问题。

例如,我有一个条件,要打开一个订单。

如果(Bid>=SS+5*Point)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green) 。

问题是:在第一笔订单盈利10点以上的情况下,开第二笔订单需要指定什么条件?

看这里,有很多功能,几乎适用于所有情况。

https://www.mql5.com/ru/forum/131859

 
lexdemon:

新年快乐!

我最近开始学习MQL 4,想问一个问题。

例如,我有一个条件,要打开一个订单。

如果(Bid>=SS+5*Point)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green) 。

现在的问题是,如果第一笔订单有10个点以上的利润,开第二笔订单需要规定什么条件?

预先选择订单 OrderSelect(Ticket_first_order,SELECT_BY_TICKET)。

如果(OrderOpenPrice()+10*Point==Ask)

OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green) 。

 
CJIeCaPb

 Нужно условие максимально приближенное к этому: "если MA==цене, то".

Такое  пойдет:

if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))


万幸的是,它似乎正在发挥作用。我在每个循环中插入了返回和 "O "运算符,以避免不必要的操作。

有一个问题:订单很笨拙--我不知道如何制定条件。

附加的文件:
test3.mq4  16 kb
 

我有一个叫forexstart的交易员,如果有区别的话。问题是我写了一个在1分钟图表上工作的交易机器人。它分析了许多图表上的历史,历史大约是一个半月,没有更长的时间。

我有一个交易机器人,在一分钟的图表上运行。它分析历史。在许多图表上,历史被提供了大约一个半月的时间,没有更长的时间,尽管小时-日-年的图表显示了历史。

我怎样才能处理好这个问题?


 
pycha:

我有一个叫forexstart的交易员,如果它有价值的话。问题出在交易员身上。我发布了一个在1分钟图表上工作的外汇机器人。它在许多图表上分析历史。

我有一个在一分钟图表上运行的交易机器人。它显示历史。在许多图表上,历史大约给出了一个半月的时间,没有更长的时间,尽管小时-日-年图表显示了历史。也有一些情况,它返回到某一日期,然后中断,游戏继续几个月前,但更高的图表又显示了一切。

我怎样才能处理它?


如果经过几个周期的删除--从服务器DC下载历史记录,断点仍然存在,这意味着他们会给你历史记录。谷歌Tickstory Lite,为tick历史 准备大量的磁盘空间,然后将这些历史记录反馈给测试者,你将拥有一个十年或更长时间的M1。