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

 
yan720:
谢谢你的答复。如果你不介意,请把你所说的EA发给我(或它的一部分,它与通道在一起)--看到另一种实现方式会很有趣。

我无法理解我几年前做的事情。不知道为什么它不工作了,虽然我记得它曾经工作和交易。让我先整理一下代码,修好后再发布。也许是明天。我只是不想在有一些幼稚的错误时让自己难堪。

 
yan720:

当然,一般的想法是这样的。那么你是如何确定通道的宽度(在你的例子中是范围)?我是通过平均烛光的大小来做的,再加上这一切都与通道的长度有关,因为通道的存在不是在僵硬的条数上检查的,而是,例如,在10到30条的长度上。

我感兴趣的是如何从长度中选择宽度的问题...

你可以在一个指标中为通道宽度制定几个外部参数。并对每个参数进行单独计算。

 

对于长度来说,情况也是如此。

[删除]  
Example2:
你好。当条件出现时,篮子里的专家顾问应该关闭所有订单,但它先关闭订单,然后试图再次关闭(服务器给我们一个错误,说 "无效票据"),然后才进一步。下面是一个示例代码和EA本身

在你的函数CloseOrders()中,如果订单被关闭,while(cnt<=5 ) 循环将再次发送关闭订单的代码,并且会发生错误,当然,然后通过 if()退出。突破。

                    int cnt=0;
                    while(cnt<=5){
                      Result[0]=OrderClose(OrderTicket(),OrderLots(),MarketInfo("USDCAD",MODE_BID),slip,Blue);
                      if(!Result[0]){
                        Answer=ERRORS(GetLastError());
                        if (Answer==1)continue; cnt++;
                        if (Answer==2)break;
                      }
                    }

在ProtectionClose()函数中,你已经添加了 带有正确的while exit的

 if(Result[0])break;
 }continue;
试着在这里挖掘。
 
pu6ka:

在你的函数CloseOrders()中,如果订单被关闭,while(cnt<=5) 循环将再次发送关闭订单的代码,并且会发生错误,当然,然后通过 if()退出。突破。

在ProtectionClose()函数中,你已经添加了带有正确的while exit的行。

试着在这里做一些挖掘工作。


但在我描述的情况下,是ProtectionClose()函数关闭了订单。我将纠正这个错误。
[删除]  
Example2:

然而,在我所描述的情况下,是ProtectionClose()函数关闭了订单。我将修复这个错误。

我没有深入挖掘代码,我无法在测试器中运行它,没有指标。

但是,例如,你的函数OpenUsdbuy();OpenSellusd()是连续的。

OpenSellusd()打开GBPUSD、EURUSD、AUDUSD、NZDUSD,等等。你将是第一个按NZDUSD、AUDUSD等的相反顺序关闭它们的人。

ProtectionClose()函数中只有三个货币对有两个变体的同时退出:USDCAD、USDCHF和USDJPY。

在其他货币中,你只能通过错误if(!Result[...])退出while()。

[Deleted]  
FOReignEXchange:

可以在一个指标中为通道宽度制定几个外部参数。并对每个参数进行单独计算。

关键是我不想强行设置通道宽度--无论货币对和/或当前的波动率如何,专家顾问/指标必须检测到通道的存在。因此,我从外部参数中设置了最小和最大的通道长度,而这只是在调试算法的过程中--之后这些参数将被缝入其中。在这个阶段,有一些抱怨。虽然我可以捕捉到一般的通道(图片取自工作代码),但我希望看到这个问题的其他解决方案。

 
pu6ka:

我没有深入挖掘代码,我无法在测试器中运行它,没有指标。

但是,例如,你的函数OpenUsdbuy();OpenSellusd()是连续的。

OpenSellusd()打开GBPUSD、EURUSD、AUDUSD、NZDUSD,等等。你将是第一个按NZDUSD、AUDUSD等的相反顺序关闭它们的人。

ProtectionClose()函数中只有三个货币对有两个变体的同时退出:USDCAD、USDCHF和USDJPY。

在其他货币中,你只能通过错误退出 while() if(!Result[...])


谢谢你的提示,我忘了在这种情况下留下循环,现在应该可以了。 如果你想的话,我可以把指标粘贴出来作为感谢。
 
yan720:

当然,一般的想法是这样的。那么你是如何确定通道的宽度(在你的例子中是范围)?我是通过平均蜡烛的大小来做的,再加上这一切都与通道的长度有关,因为通道的存在不是在一个僵硬的条数上检查的,而是,例如,在10 到30条的长度上。

我感兴趣的是对宽度和长度的选择......

这个10条的长度是基本数字。我的意思是不少于10...而如果时间长了,那就是命运。把它带到外面去,能够进行实验。范围可能是蜡烛的平均大小,这并不重要,但最好也把它放在外面。也许你想设置最大和最小的范围,所以你必须设置两个变量Max_和Min_。 然后在每个柱子上,你检查这10个柱子中蜡烛的平均大小,如果适合你,你在10个柱子的顶部和底部绘制趋势。对于下一个条形图,你已经可以检查11个条形图,如果条件得到满足,ObjectSet(...);对于第一个坐标,只有OBJPROP_PRICE1 发生变化 对于第二个 坐标,OBJPROP_PRICE2和 OBJPROP_TIME2 发生变化,以此类推,每个条形图。 或者,你可以不重新计算任何东西,认为通道已经形成,等待这个通道的破裂。这取决于你的口味。

好吧,在我的案例中,我建议从灯笼里拿出一个打火机选项来指定通道高度和最小条数 以及。


yan720:

关键是我不想强行设置 通道宽度--不管货币对和/或当前的波动率如何,专家顾问/指标必须检测到通道的存在。因此,我只从外部参数中设置了通道的最小和最大长度,而且这只是在调试算法的过程中--之后这些参数将被缝进它。在这个阶段,有一些抱怨。虽然我可以捕捉到一般的通道(图片取自工作代码),但我希望看到这个问题的其他解决方案。

好吧,首先,如果参数是在外部或嵌入的,不会有任何区别。其次,如果你不设置通道的宽度,当你计算你指定的10个柱子时,你会用什么来比较?你想如何确定它是否是一个渠道?第三,我认为,平均的蜡烛大小不会有足够的效果。如果所有10个柱子都是看涨的,但平均柱子大小不大于检查。它到底是不是一个渠道?它可能是一个通道,但它是一个倾斜的通道,而根据你的图纸,我们正在解析一个水平的通道。
 
yan720:

关键是我不想强行设置通道宽度--专家顾问/指标必须确定通道的存在,而不考虑货币对和/或当前的波动性。因此,我从外部参数中设置了最小和最大的通道长度,而这只是在调试算法的过程中--之后这些参数将被缝入其中。在这个阶段,有一些抱怨。虽然我可以抓住一般的渠道(图片来自工作代码),但我希望看到这个问题的其他解决方案。

好吧,有一个想法是捕捉2个连续的顶级分形 或2个由例如5-10个烛台组成的iHighest分形。我们在一定的长度范围内抓住这种情况。如果这些峰值的值相互接近,在这两个峰值之间我们将找到iLowest。

同样地,首先搜索两个较低的峰值,然后搜索它们之间的最高峰。

然后我们将在那些被发现的山峰上跳舞。首先,我们通过他们画出水平。然后我们教代码进一步思考。

这个选项将消除诸如Channel_width这样的外部参数。

无论你怎么看,我认为我们至少需要一些长度的参数。