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

 
ALXIMIKS:

你好,重新表述你的问题,这不是很清楚。


谢谢你的答复。在我的EA中:

如果( 条件)

{两个买入止损单和卖出止损单打开}。

当其中一个订单打开时,我需要删除最近的订单,因为此刻可能还有其他订单,离当前价格更远。

我可以使用一个未结头寸 计数器+脚本来删除一个订单(如果我想得没错,我不知道如何做,我才刚刚开始)提前感谢您的信息。

 
PGM5:


有必要在其中一个仓位开盘时删除最接近的订单,因为此时可能还有其他订单--离当前价格很远。

我可以使用一个未结头寸计数器+脚本来删除一个订单(如果我想得没错,我不知道如何做,我才刚刚开始)提前感谢您的信息。


请学习术语,了解你所需要的东西确实是个问题。

你下了两个挂单,如果其中一个开盘,你要删除什么?

这是一个很好的概念,最近的订单是在开仓的方向 还是反对,或者你是说你必须删除相反的挂单?

是否有其他订单--它们来自哪里,来自手动交易? 来自同一个专家顾问,但在不同条件下打开?

你需要一个具体的答案,还是像问题一样模糊不清?(多花一分钟时间拟定你的问题--这对大家都有帮助)

 
ALXIMIKS:

读到这几行字,我想起我自己是如何被指责为文盲的,或者说是懒惰的,现在我更加意识到自己的错误行为。

1)什么是绘图机?(按你的理解)

2)搜索MACD背离的基本函数是什么?

3)在搜索引擎中写下 "分歧 "并选择 "代码库 "类别中的第三个链接 有这么难吗?

(如果你希望有人给你一个现成的工具,并解释一切--希望如此,这里有不同的人:既有信徒,也有非信徒)



我希望你知道什么是近义词!你难道不愿意有一个论坛来互相谈论形而上学吗?

绘图工具--与图表上的输出。

初级函数是指只用MQL4教科书就可以应用的函数,不需要使用复杂的表达式。

在检测MACD背离时如何使用指标缓冲区。

如何理解它?

for(i=limit-1; i>=0; i--) 
     {
      BufferMacdMain[i]   = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_MAIN, i);
      BufferMacdSignal[i] = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_SIGNAL, i);
      BufferMacdOsMA[i]   = BufferMacdMain[i] - BufferMacdSignal[i];
      BufferTop[i]        = EMPTY_VALUE;
      BufferBottom[i]     = EMPTY_VALUE;
      BufferCross[i]      = EMPTY_VALUE;
 
      double main2 = BufferMacdMain[i + 2];
      double main1 = BufferMacdMain[i + 1];
      double sig2  = BufferMacdSignal[i + 2];
      double sig1  = BufferMacdSignal[i + 1];
 
      if((main1>=sig1 && main2<sig2) || 
         (main1<sig1 && main2>=sig2))
 
Burger:


我希望你知道什么是近义词!你认为这个论坛只是为了形而上学吗?

绘图--有输出到图表的功能。

初级函数是只用MQL4教程就可以应用的函数,不需要使用复杂的表达式。

检测MACD背离时如何使用指标缓冲区。

如何理解它?


首先,找出什么是发散,以及需要多少个值来确定它。这里有例子。
 
Burger:


我希望你知道什么是近义词!你认为该论坛是为形而上学服务的吗?

绘图--有输出到图表的功能。

初级函数是只用MQL4教程就可以应用的函数,不需要使用复杂的表达式。

在检测MACD背离时如何使用指标缓冲区。

如何理解它?


这不是一个灵媒俱乐部;如果你想得到充分的答案,请问充分的问题。如果你不知道如何措辞,就从远处进去,但这样就会很清楚,你不必反复询问某个人的这个或那个术语是什么意思。

初级函数是不使用复杂表达式的函数。棒极了。

没有闭环括号的代码,没有条件后的函数--你希望得到什么?

for(i=limit-1; i>=0; i--)      //цикл  расчета нерассчитанных баров, наверное
     {
      BufferMacdMain[i]   = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_MAIN, i);   // расчет значения основной   линии масд на i баре
      BufferMacdSignal[i] = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_SIGNAL, i); // расчет значения сигнальной линии масд на i баре
      BufferMacdOsMA[i]   = BufferMacdMain[i] - BufferMacdSignal[i];  // разница основной и сигнальной линии масд на i баре
      BufferTop[i]        = EMPTY_VALUE;                              // буфер заполняется EMPTY_VALUE на i баре (не рисуется на графиках)
      BufferBottom[i]     = EMPTY_VALUE;                              // буфер заполняется EMPTY_VALUE на i баре (не рисуется на графиках)
      BufferCross[i]      = EMPTY_VALUE;                              // буфер заполняется EMPTY_VALUE на i баре (не рисуется на графиках)
 
      double main2 = BufferMacdMain[i + 2];                           // переменная берет значение основной линии масд на i+2 баре с массива BufferMacdMain
      double main1 = BufferMacdMain[i + 1];                           // переменная берет значение основной линии масд на i+1 баре с массива BufferMacdMain
      double sig2  = BufferMacdSignal[i + 2];                         // переменная берет значение сигнальной линии масд на i+2 баре с массива BufferMacdSignal
      double sig1  = BufferMacdSignal[i + 1];                         // переменная берет значение сигнальной линии масд на i+1 баре с массива BufferMacdSignal
 
      if((main1>=sig1 && main2<sig2) ||                      // если main1>=sig1 и main2<sig2 тогда будет выполнятся условие (сигнальная пересекает основную снизу вверх)
         (main1<sig1 && main2>=sig2))                        // если main1<sig и main2>=sig2 тогда будет выполнятся условие  (сигнальная пересекает основную сверху вниз)
 
ALXIMIKS:


请学习术语,因为准确理解你所需要的东西是一个真正的挑战。

你下了两个挂单,如果其中一个开盘,你必须删除哪个?

最近的订单--一个美妙的概念,最近的订单是在开仓方向还是在反对方向,还是说应该删除相反的挂单?

是否有其他订单--它们来自哪里,来自手动交易? 来自同一个专家顾问,但在不同条件下打开?

你需要一个具体的答案,还是像问题一样模糊不清?(多花一分钟时间来拟定你的问题--这对大家都有好处)。

是的,你说对了:当你打开一个订单时,你必须删除相反的挂单,其他订单来自同一个EA,但在不同的条件下打开。

提前感谢。

 
PGM5:

是的,你说对了:当你打开一个订单时,你必须删除相反的挂单,其他订单来自同一个EA,但在不同的条件下打开

提前感谢。


如果我正确理解了你的要求:这种机制被称为OCO(One Cansel Other - 一个取消另一个)。这就是例如 "市场订单"(MT4术语)的接受和停止之间的关系--一个(接受或停止)被触发,另一个被自动删除,完全实现这一点并不是一件小事。不是指非常复杂的算法,而是指它不是初级的。我们必须写出订单的平行核算:输入并跟踪订单之间联系的特质。如果我没记错的话,这样的机制在MT5中也没有实现,尽管它是股票终端的标准功能,在服务器端工作。

我们可以在客户端实现这一机制,并 "玩弄 "魔术师(在这种情况下 "不是很困难"):所有必须保留的订单都有同一个魔术师。检查时:如果有一个市场,所有其他的都被删除。然后需要产生一个魔力,伴随着。为魔术师分配一个单独的数组:可能要支持多于一对的订单。不可能丢失魔力,因此要么是全局变量,要么是写到文件。如果我们以更全局的方式来做这件事(不仅考虑订单的连通性,而且考虑归属/外国),核算机制变得更加复杂:魔术师变得复杂,实际上我们需要扩展下单的标准算法,比我们使用 "基本"(用你的术语)函数做的要深得多,但仍然一切都在客户端,即如果终端关闭或通信丢失,订单将无法工作(被跟踪)。



 
VladislavVG:

如果我没有理解错的话:这种机制被称为OCO(One Cansel Other - 一个取消另一个)。这就是例如 "市场订单"(MT4术语)的接受和停止之间的关系--一个(接受或停止)被触发,另一个被自动删除,完全实现并不是一件小事。不是指非常复杂的算法,而是指它不是初级的。我们必须写出订单的平行核算:输入并追踪订单之间的联系的蛛丝马迹。如果我没有弄错的话,这样的机制在MT5中也没有实现,尽管它是股票终端的标准功能,在服务器端工作。

虽然,我们可以在客户端实现这一机制,并 "玩弄 "魔术师(在这种情况下将 "不是很困难"):所有必须保留的订单都有相同的魔术师。检查时:如果有一个市场,所有其他的都被删除。然后需要产生一个魔力,伴随着。为魔术师分配一个单独的数组:可能要支持多于一对的订单。不可能丢失魔力,因此要么是全局变量,要么是写到文件。如果我们以更全局的方式来做这件事(不仅考虑订单的连通性,而且考虑归属/外国),核算机制会变得更加复杂:魔术师将变得复杂,实际上我们需要将下订单的标准算法扩展得更深,而不是用 "基本"(用你的术语)函数来做,但无论如何,一切都在客户端:即如果终端被关闭或连接丢失,它将无法工作(跟踪订单)。



对不起,不知道有这么复杂。我将考虑如何简化系统。

 
PGM5:

对不起,我没有意识到它是如此复杂。我将考虑如何简化系统。



为了帮助。
 


这只是一个非常 "温和 "的实现,不具有可扩展性:它删除了EA的所有 订单,或者如果有市场的话,删除了某一特定符号的所有向导订单。也就是说,它认为所有下在工具上的订单(考虑到/不考虑魔术师)都是由CCA比率联系起来的。

情况可能根本不是这样。例如,在放置的20个订单中,可能有2或3组链接的订单,其余的根本就没有链接。这个EA不能扩展到这样的核算--我们必须重写一切,或者我们可以在手动模式下使用这个EA:那么链接订单组的主人的核算必须手动完成,我们必须在交易中 "悬挂 "尽可能多的订单组的EA。