谁想要一个战略?很多,而且是免费的) - 页 19

 
orlekino >> :

我按照自己的口味和颜色重写了它;它看起来像EoM的东西,但山峰是不可理解的。

//  Ease of Movement

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
extern int PeriodMA = 13;
extern int VolDivisor = 10000;
double EoMBuffer[];
double TempBuffer[];

int init()
{
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, EoMBuffer);
   SetIndexBuffer(1, TempBuffer);
   IndicatorShortName("EoM("+ PeriodMA+")");
   SetIndexLabel(0,"EoM("+ PeriodMA+")");
   SetIndexDrawBegin(0, PeriodMA);

   return(0); 
}

int start()
{
   int counted_bars=IndicatorCounted();
   if( counted_bars>0)
      counted_bars--;
   int limit=Bars- counted_bars;
  
   for(int i=0; i< limit-1; i++)
      TempBuffer[ i]= VolDivisor * (High[ i] - Low[ i]) * ((High[ i] + Low[ i]) / 2.0 - (High[ i + 1] - Low[ i + 1]) / 2.0) / MathMax(Volume[ i], 1);

   for( i=0; i< limit; i++)
      EoMBuffer[ i]=iMAOnArray( TempBuffer,Bars, PeriodMA,0,MODE_SMA, i);

   return(0);
}
 
zelda >> :

有意思,但根据Arms的原始想法,指标应该相对于0走,并在零线和SMA被越过时发出信号(这些信号被应用于指标,而不是立即被平滑)。

是否有可能创建这样一个变体?我自己对MQlng的了解(还不够),所以在我的代码中,它把指标的最后一个刻度画成了无限的上升(如何修复它--不知道),但在一般情况下,它适合我。

 
FOREXMASTER >> :

不是一个坏的开始,但在这个方案中,我想看到的是。

1.生成的策略的选择,因为机器本身不能为每个人选择最合适的策略,我见过的策略师比程序在最后的保存要好得多。

我有一个稍微不同的想法,即建立一个策略库。也就是说,让用户为每个工具和时间框架生成一个策略,由计算机来选择。此外,他还从资源库中下载了20个策略。然后用所有下载的策略进行20次测试,并将它们的特征形成一个列表。结果最差的策略被要求从资源库中删除,而刚刚生成的策略则被加入。


因此,用户只剩下21个策略的清单,其中20个已经过测试,他/她可以从中选择所有他/她喜欢的,并在MQL4中创建EA的源代码。


通过这种方式实现了妥协。


1.计算机从生成的策略中选择一个策略,它不是随机的,而是考虑到了某些特征。

2.用户从列表中选择策略,也就是说,用户有权做出选择,包括不充分的、主观的和错误的选择。是使用测试者刚刚得出的平衡还是使用经过时间考验的策略,这取决于用户。


但最重要的是,通过这样做,资源库将不断过滤,只储存那些能带来最佳效果的策略。而随机调整将通过自然选择被冲出它的范围。也就是说,几乎不需要进行正向测试,因为我们可以简单地查看列表,选择在存储库中持续时间最长的策略。


另外,通过这种方式,将使用分布式计算获得结果。换句话说,每台计算机将只花大约1/21的时间生成策略,而测试策略的时间比例要小得多。


不幸的是,在我以前的网站上没有存储库的可能性,因为Ucoz CMS不允许管理数据库和执行PHP脚本。因此,我们必须为股票策略生成器 网站采取单独的托管,在此基础上,存储库将运行。


我已经做了存储库的重要部分和新版本的程序。有一些细节,特别是关于报价的质量,这些策略将在此基础上产生和测试。一旦我解决了所有这些细节问题,我就会发布支持资源库的版本。

 
Reshetov писал(а)>>

我有一个稍微不同的想法,即建立一个战略库。

...这样一来,资源库就会不断地被过滤,只保留那些产生最佳效果的策略。而随机的配合将通过自然选择被冲出它的范围。因此,实际上没有必要进行正向测试......。

...我不得不为股票策略生成器 网站找一个单独的主机,在此基础上,资源库将发挥作用。

...我已经做了存储库和新版软件的重要部分。还有一些细节,特别是关于将生成和测试策略的报价质量。一旦我解决了这些细节问题,我就会发布有资源库支持的版本。

好主意!祝您在实施过程中好运!

但我不明白为什么不需要进行前瞻性测试。

 
voltair >> :

好主意!祝你在实施过程中好运!

只是我有点疑惑,为什么不需要向前测试。

因为只有经过时间考验的策略才会留在资料库中,其余的会逐渐被删除。


很明显,如果我们下载一个策略,它存在了半年之久,并且根据测试显示出利润,那么它将比刚刚生成的策略更值得信赖。


当然,人们可以自己进行额外的测试,以备不时之需。

 
Reshetov писал(а)>>

...如果你从资源库中下载了一个已经存在了半年的策略,即使今天它在测试中显示出了利润,那么它就比新生成的策略更值得信赖。

我理解--策略不是躺在那里,它们不断被测试,只有在盈利的情况下才会保留在资源库中。

但可能发生的情况是,"今天"(在目前的市场上)"这个 "策略处于亏损状态,而明天它将赢回一切,并获得巨大的利润。

将使用什么市场细分来测试策略?

 
voltair >> :

我明白,策略不只是储存在那里,而是要不断地进行测试,只有在有利可图的情况下才会留在储存库中。

然而,恰好 "今天"(在当前市场上)"这个 "战略处于亏损状态,而明天它将赢回一切,并获得巨大的利润。

将在哪个细分市场对该战略进行测试?

出于这个原因,我认为历史部分至少应该是8000条。也就是说,程序应该拒绝少于8000条的报价。此外,它还应该拒绝过时的报价,例如,如果hst文件在最近一天没有被刷新。


因此,历史数据必须是足够长的、长期的和尽可能近的。因此,在这一历史时刻,该策略不再是一个 "单日 "策略,因为最终结果将是整个时期的总和,而不是单个的大块头。

 
Reshetov писал(а)>>

...我想历史部分应该至少有8000条。

可能对于大的时间框架来说,这是好的。但对于分钟或M5来说,这可能是不够的。虽然,问题是,这些战略将被保存在什么时间段?是否有任何经过试验的方法(或经验)来选择测试的条数?我通常不找低于20000条的。但可能是错了...

 
voltair >> :

对于大的时间框架来说,这可能是可以的。但对于分钟或M5来说可能还不够。但我的问题是,这些策略将被保存在什么时间段?是否有任何经过试验的方法(或经验)来选择测试的条数?我通常不找低于20000条的。但也许这是错的。

到目前为止,我已经确定了黄金分割线,即至少有8000条历史数据。更多是可能的,更少是不可能的。

 

如果我们允许根据负面的测试结果将策略从资源库中删除,这是不太正确的。因为可能会有这样的情况:有人上传破损和泄漏的报价,并在由他们运行测试后,删除了所有盈利的策略。


最好给每个策略一个评级,例如-100到+100。在战略库中的最初放置,它将被赋予零等级。


所有的策略都将按评级从高到低排序,即从高到低排序。该软件将加载具有最大评级的前20个策略,并对其进行测试。如果测试的结果是积极的,并且该策略的评级小于100,那么它就会增加1;如果结果是消极的,那么它就会减少1;如果评级低于-100,该策略就会从资源库中删除。


1.经过长期测试和证明的旧策略将拥有最高的评级,因此它们在TOP20中的出现率会更高。

2.一天的旧策略在评级中会逐渐下降,一旦达到-100的水平,它们就会被删除。

3.在程序与断裂的引号一起工作的情况下,它将只能改变1的评级,也就是说,它不会全面影响资源库的排名结果,而只是稍作调整。