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

 

你好。

请提出这个关于EA的问题。

我有一个通过摆动的订单,例如,如果MA_1>MA_2,那么我们买入。但当我退出交易时,这个规则又被触发了。

我如何告诉EA只有在价格离开MA_2不超过4个柱子的情况下才开仓?


谢谢你!

如果有什么东西是错的或错的地方,不要踢我。这是我在这个巨大的论坛上的第一个帖子。

 
Jony5Proz:

你好。

请提出这个关于EA的问题。

我有一个通过摆动的订单,例如,如果MA_1>MA_2,那么我们买入。但当我退出交易时,这个规则又被触发了。

我如何告诉EA只有在价格离开MA_2不超过4个柱子的情况下才开仓?


谢谢你!

如果有什么东西是错的或错的地方,不要踢我。这是我在这个巨大的论坛上的第一个帖子。

https://book.mql4.com/ru/samples/expert
 

谢谢你,我只是处于这种知识水平。例子中的脚本也有同样的问题。当你打开脚本时,它在趋势的末端进入,这很不方便。

我如何告诉脚本只在两根柱子交叉后少于4根时才触发?

 
https://www.mql5.com/ru/code/10773 最后一次洗澡的时候
 
Jony5Proz:

谢谢,我就在这个知识水平上。例子中的脚本也有同样的问题。当你打开脚本时,它在趋势的末端进入,这很不方便。

我如何告诉脚本只在两根柱子交叉后少于4根时才触发?

脚本不懂文字。这掌握在你的手中--在2个MAs被穿越后不迟于4个柱子运行脚本。
 

人们,我已经在这里问过了,如何使一个订单只在新的蜡烛 出现时打开。我使用的是D1时间框架。

根据对以前蜡烛图的分析,我决定在某些水平(buystop_lvl和sellstop_lvl)下挂单。

我想在一天的开始时放置它们,并在新的蜡烛图到来时删除它们。 挂单是否被激活并不重要,如果它们被激活,那么市场订单也应该被关闭。最多有2个订单,买入止损和卖出止损。

以下是我写的内容。

1.首先我检查市场订单或挂单是否活跃,如果是,我就删除/关闭它们。

int total=OrdersTotal();
   if (total!=0 && NewBar()==true){
                 for (int i=0; i<total; i++)
                    {
                     OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                     if(OrderType()==OP_BUY)  OrderClose(OrderTicket(),OrderLots(),Bid,10);
                     if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,10);
                     if(OrderType()==OP_BUYSTOP)  OrderDelete(OrderTicket());
                     if(OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket());
                    }
                }

2.然后我按计算好的水平下挂单。

if(NewBar() == True && OrdersTotal()==0)
    {
     OrderSend(Symbol(),OP_BUYSTOP ,Lot,buystop_lvl ,10,buystop_SL ,buystop_TP,"Expert buystop\sellstop");
     Sleep(10000);
     OrderSend(Symbol(),OP_SELLSTOP,Lot,sellstop_lvl,10,sellstop_SL,sellstop_TP,"Expert buystop\sellstop");
     
    }

3.我实现的NewBar函数(NewBar)。

//Функция нового бара
bool NewBar()
{
  static datetime lastbar = 0;
  datetime curbar = iTime(Symbol(),1440,0);
  if(lastbar != curbar)
  {
    lastbar = curbar;
    return(true);
  }
  else return(false);
}

因此,当一个新的蜡烛打开时,订单被放置并立即删除。订单下达后立即删除。

当我注释了第(1)点的代码后,我无法让它在测试器中打开订单,但订单没有打开,也就是说,订单没有成为市场订单。

你能告诉我可能是什么问题吗?

 

这个NewBar()函数不能连续使用两次

像这样的事情就更好了。

bool newBar = NewBar();

// 在文本中进一步将NewBar()替换为newBar

 
妈的,我还是不明白该怎么做。我需要的代码是只在下一个蜡烛图上删除和关闭订单。但也会有其他人在上面开张。这意味着程序将再次进入删除状态。我需要一些旗帜,但我的大脑已经在出汗,以了解如何做到这一点:)
 
Noterday:
一般来说,你抛出NewBar,查看最后一个订单的开仓时间,并与Time[0]比较。如果高了,就是你的案子,你可以删除一切。
 
trend_lab:
而在一般情况下,你抛出NewBar,看一下最后一个订单的开仓时间,并与Time[0]进行比较。如果超过了,那就是你的案子,你可以删除一切。

是的,我想我将不得不这样做。谢谢你的帮助 :)