基于艾略特波浪理论的专家 - 页 12

 
Yurixx:
整数
尤里克斯


想象一下基于正常化震荡器的简单TS。 在高点我们卖出,在低点我们买入。因此,在正确的时间识别极值就可以成功交易。很简单,不是吗?而且绝对够用。 你能快速(不是非常快)做到吗?或者至少要做到这一点?


可以而且非常和快速。


很好!然后在欧元兑美元、M1上抛出一个RSI(14,Close)指标,并解决识别无滞后RSI极值的问题。

相邻极点之间的RSI变化幅度应至少为25。


准确、完整地表述问题。如果它在理论上是可解的,那么它在实践上也是可解的。一旦问题被正确制定,它们都可以被解决(而且你可以自己做)。在这个问题中,识别极值的标准是将一个数值回滚25个单位,也就是说,通过这样一个没有 滞后的标准进行识别,在理论上是无法解决的。如果你定义标准 - 左边超过25,右边超过5但少于10 - 滞后将减少,但虚假信号将更多。

 
//+------------------------------------------------------------------+
//|                                                     toYurixx.mq4 |
//|                                                                * |
//|                                                                * |
//+------------------------------------------------------------------+
#property copyright "*"
#property link      "*"
 
#property indicator_separate_window
#property indicator_maximum 100
#property indicator_minimum 0
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_color2 DeepSkyBlue
#property indicator_color3 Red
//---- input parameters
extern int       RightMore=5;
extern int       RightLess=10;
extern int       LeftMore=25;
 
 
//---- buffers
double rsi[];
double u[];
double l[];
 
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,rsi);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,159);
   SetIndexBuffer(1,u);
   SetIndexEmptyValue(1,0.0);
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexArrow(2,159);
   SetIndexBuffer(2,l);
   SetIndexEmptyValue(2,0.0);
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    limit=Bars-IndicatorCounted();
      for(int i=0;i<limit;i++){
         rsi[i]=iRSI(NULL,0,14,0,i);
      }
      ArrayInitialize(u,EMPTY_VALUE);
      ArrayInitialize(l,EMPTY_VALUE);      
      for(i=Bars-1;i>=0;i--){
         double max=rsi[i];
         int maxb;
         for(int j=i;j<Bars;j++){
               if(rsi[j]>max){
                  max=rsi[j];
                  maxb=j;
               }
               if(max-rsi[i]>RightLess){
                  break;//не состоялся
               }
               if(max-rsi[j]>LeftMore){
                     if(max-rsi[i]>RightMore){//нашли
                        u[maxb]=rsi[maxb];
                     }
                  break;
               }
         }
         
         max=rsi[i];
         for(j=i;j<Bars;j++){
               if(rsi[j]<max){
                  max=rsi[j];
                  maxb=j;
               }
               if(rsi[i]-max>RightLess){
                  break;//не состоялся
               }
               if(rsi[j]-max>LeftMore){
                     if(rsi[i]-max>RightMore){//нашли
                        l[maxb]=rsi[maxb];
                     }
                  break;
               }
         }         
         
      }
      
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

总共23.06.2007 01:45 - 23.06.2007 01:08 = 37分钟,我花了37分钟解决了这个问题,但这段时间我也喝了咖啡。我还应该介绍一下极值左边和右边的条数 标准。

 
Integer:
尤里克斯


很好!然后让我们把RSI(14,Close)指标扔到欧元兑美元的M1上,并解决没有滞后的RSI极值的识别问题。

相邻极点之间的RSI变化的振幅必须至少为25。


准确、完整地表述问题。如果它在理论上是可解的,那么它在实践上也是可解的。一旦问题被正确制定,它们都可以被解决(而且你可以自己做)。在这个问题中,识别极值的标准是回滚25个单位,也就是说,通过这样一个没有滞后 的标准进行识别,在理论上是无法解决的。如果你定义标准 - 左边超过25,右边超过5但少于10 - 滞后将减少,但虚假信号将更多。


当然,谢谢你的代码,但正如你自己所理解的,它不是解决方案,也不是问题所在。

我可能说得太简洁了,但这实际上是一个相当正确的说法。它可以更长。所需要的是识别局部极值的程序,它是在实时而不是在历史上运作的。识别是指在一个条形图完成后,确定指标图的适当点是否为局部极值点。局部极值是指指标值的左右变化都至少为25.0的极值。

就指标在预期极值点右侧的即将发生的变化在条形图完成的时刻是未知的,这是一个对指标行为进行最佳预测的问题。 这种预测不是推断,因为极值点右侧的指标值不值得关注。唯一的条件是极值条件,即指标值将按条件值变化。 最佳预测在统计学意义上理解,即预测应具有足够高的可靠性。

从形式上看都是不同的,但我没有给你说什么新东西。所有这些都已经存在于 "识别无滞后 "这三个字中了。

我想提请你注意这样一个事实:在共架历史上搜索具有给定属性的极值的基本脚本本可以写得更简洁和简单。嵌套循环是一种昂贵的过度行为,将成为大型阵列的瓶颈。所有这些都可以一次性完成,也就是说,每一个新的条形图 只需要计算一个新的值,根本不需要循环。由于你把你的脚本设计成一个指标,你将在每一个新的条形图上通过整个以前的历史进行循环 - 计算时间增加Bars*Bars/2倍。而且,如果你在循环中使用循环,从j=i开始在j上进行循环是没有意义的。

我没有详细看过你的代码,也没有在图上看过,但在我看来,它包含一个重要的错误--它改变了自己的结果。例如,如果这个点对某些i来说是一个极值点,那么当传递到(i+1)或更远时,它可能不再是一个极值点。然而,这是由你提出的条件造成的:超过5,少于10。

在故事的大部分时间里,这并不重要。然而,对于右翼来说,它确实是这样,而且非常重要。你的脚本在零条左边确定的那个极值可能在下一个条形中消失,这不是好事。:-))

 
Yurixx:


1. 当然,感谢你的代码,但正如你自己所理解的那样,这不是解决方案,也不是问题所在。

我可能说得太简洁了,但这其实是一个足够公平的说法。它可以更长。所需要的是识别局部极值的程序,它以实时模式运作,而不是在历史上运作。 识别是指在一个条形图完成后,确定指标图的适当点是否为局部极值 点。局部极值是指指标值的左右变化都至少为25.0的极值。

就指标在预期极值点右侧的即将发生的变化在条形图完成的时刻是未知的,这是一个对指标行为进行最佳预测的问题。 这种预测不是推断,因为极值点右侧的指标值不值得关注。唯一的条件是极值条件,即指标值将按条件值变化。 最佳预测在统计学意义上理解,即预测应具有足够高的可靠性。

从形式上看都是不同的,但我没有给你说什么新东西。所有这些都已经存在于 "识别无滞后 "这三个字中了。

2. 我想提请你注意这样一个事实:在一个有框架的历史上搜索具有给定属性的极值的基本脚本本可以写得更简洁和简单。嵌套循环是一种昂贵的过度行为,将成为大型阵列的瓶颈。所有这些都可以一次性完成,也就是说,每一个新的条形图只需要计算一个新的值,根本不需要循环。由于你把你的脚本设计成一个指标,你将在每一个新的条形图上通过整个以前的历史进行循环 - 计算时间增加Bars*Bars/2倍。而如果你在一个循环中使用循环,从j=i开始在j上进行循环是没有意义的。

3. 我没有详细处理过你的代码,也没有在图上看它,但在我看来,它包含一个重要的错误--它改变了自己的结果。例如,如果该点对某些i来说是一个极值点,那么当传递到(i+1)或更远时,它可能不再是一个极值点。然而,这是由你提出的条件造成的:超过5,少于10。

在故事的大部分时间里,这并不重要。然而,对于右翼来说,它确实是这样,而且非常重要。你的脚本在零条左边确定的那个极值可能在下一个条形中消失,这不是好事。:-))

1.任务是识别极值,而不是防止其出现。简而言之,廉价的庞氏骗局.......无法预测。这就等于说:给我一个圣杯,让它根本没有驼鸟,而且是1000%。这正是我所写的--任务首先必须有一个单一的理论解决方案,然后在代码中实现它。但预测并没有单值的解决方案。

我们所说的识别是指定义指标图的对应点是否是柱状图结束后的局部极值点-- 不要把上帝的祝福与鸡蛋混淆起来--识别和预测。

"识别无滞后"-- 同样也是。无滞后的识别是指在第一时间的识别,在这一时刻,情况被毫不含糊地识别。

2.示范一下,我们就知道了。

Bars*Bars/2次--显然你根本不明白它是如何工作的,或者你不知道break operator的含义。

从j=i的值开始对j进行循环是没有意义的-- 但是哪一个呢?这是一个对你来说最有趣的问题!!!!

我没有详细处理过你的代码,也没有以图形的方式看它,但在我看来,它包含一个重要的错误--它改变了自己的结果。

3.注意它的读数只取决于零条的变化,还没有形成。而所有的指标都会根据零条上的数值来改变其最后的数值。你见过分形指标吗(MT内置的(主菜单-指标-比尔-威廉姆斯-分形))?- 看一看吧,它非常有趣和迷人,甚至有一天可能对你有用。在指标编程过程中,计算零条上的变化,即使不是其编程的不可侵犯的规则,也至少是良好的礼仪规则。第一条通常只限于非常没有经验的人,没有很深入地了解指标的本质。

我从来没有说过这个算法是完美的,它的加速度有很大的储备,我们可以把一个指标的计算限制在一个新的条形上。但最初的任务只是通过改变指标值的标准来识别极值,如果我们不理会你用识别预测 的概念替代的廉价笑话,它已经被解决了。

 
Integer:

...便宜的Ponce ....


如你所愿。:-)

整数

当一个人知道自己想要什么,就会很快完成。

显然,"心中有数 "和 "理论上的解决方案 "已经被取代。你的概念,顺便说一下。

 
这是一个很好的话题,可惜它已经没有活力了。
对于专业的程序员,我建议从Elliottician产品中挖掘DLL。他们用VisualBasic写他们的创作,但库中有对波浪和模式的描述,有常见的高、近等概念。此外,最新版本的RET包含一个外汇的插件。而拆开过去15年的DLL与波浪的基础,是非常诱人的!
 
Bookkeeper:

问题:是否有可能将策略调整为风险大、激进的pipsetting,而不是 在真正的。

但只是在演示中?这个问题不仅仅是一个问题。有可能是推心置腹的进入,也有可能是所有的胆量。

我想这是可能的,请看一下申请。

我的存款在一周内增加了900%。

注意到。

亚历克斯-尼罗巴。

附加的文件:
statement.zip  9 kb
 
NYROBA >> :

我想这是可能的,看看这个应用程序。

我在一个星期内将我的Depo增加了900%。

注意到。

亚历克斯-尼罗巴。

是啊...不过,说来话长。

;)

 
divenetz >>:
Хорошая тема, жаль выдохлась.
Для профпрограммистов я бы порекомендовал поковырять DLL от продуктов Elliottician. Они пишут свои творения на ВижуалВасике, но в библиотеках есть описание волн и патернов обычными понятиями high, close и пр. Тем более что последние версии RET содержат плагин для Forex. А разобрать DLL с базой волн за последние 15 лет - очень заманчиво!

RET是狗屎。从ElWave反汇编的modern75.nls更好(尤其是它是一个开放的文件)。RET几乎与琐碎的winwaves32相同。