[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 640

 

我搞不清楚数组有什么问题(条件很简单--在平滑化CCI的下一个峰值后买入/卖出)。

该策略的编译没有错误,启动时也没有在日志中写入任何内容,但没有下单。

   double c1b[];
   ArrayResize(c1b,PeriodB);
   for(i=1;i<=PeriodB;i++)
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+3);
   
   double c1s[];
   ArrayResize(c1b,PeriodS);
   for(i=1;i<=PeriodS;i++)
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+3);


   if (c1s_1>c1s_2&&c1s_2<c1s_3)
     {                                          //
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
   if (c1b_1<c1b_2&&c1b_2>c1b_3)
     {                                          //
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }
 


double c1s[];
ArrayResize(c1b,PeriodS).

你声明了一个数组并改变了另一个数组。

 
Roger:


双重c1s[]。
ArrayResize(c1b,PeriodS)

你声明了一个数组并改变了另一个数组。


谢谢,还有什么问题 - 没有帮助。
 

该数组以零元素开始,因此表达式

for(i=1;i<=PeriodS;i++)

跳过零,不向最后一个写任何东西。

进一步说,只有这个表达式将在循环中被执行

c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i)。

其余的没有意义,在循环后i等于最大值,因此所有的值都是零。

 
Craft:

还有什么问题


在没有归一化的情况下比较双打是不正确的...这样试试吧。

   double c1b[];
   ArrayResize(c1b,PeriodB);
   for(i=1;i<=PeriodB;i++)
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+3);
   
   double c1s[];
   ArrayResize(c1b,PeriodS);
   for(i=1;i<=PeriodS;i++)
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i+3);


   if (NormalizeDouble(c1s_1,4)>NormalizeDouble(c1s_2,4)&&NormalizeDouble(c1s_2,4)<NormalizeDouble(c1s_3,4))
     {                                          //
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
   if (NormalizeDouble(c1b_1,4)<NormalizeDouble(c1b_2,4)&&NormalizeDouble(c1b_2,4)>NormalizeDouble(c1b_3,4))
     {                                          //
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

 
DDFedor:


在没有归一化的情况下比较双打是不正确的...这样试试吧。


谢谢你的帮助,兄弟们,它仍然不工作。
 
Roger:

该数组以零元素开始,因此表达式

for(i=1;i<=PeriodS;i++)

跳过零,不向最后一个写任何东西。

进一步说,只有这个表达式将在循环中被执行

c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i)。

其余的没有意义,在循环后i等于最大值,因此所有的值都是零。


那我应该怎么做呢?试过for(i=0;i<=PeriodS;i++) - 没有成功。
 
Craft:

然后呢?

在每个代码点的每个变量上放置打印机,在日志中查看每一步的情况。
 

你好,我可以问你一个新手吗? 当我在demo的open函数中写了symbol(),但当我把它改成一个符号,例如EURUSD,我得到错误133。
{Alert("!");}else{Alert("?");}- 它发出"!",即允许交易......同时发出133。 问题是什么? 如果我在打开功能中指出某个符号,没有EA打开交易......我什么都试过了。

预先感谢你。我在这里不是为了扰乱论坛))。

 
artmedia70:
谁说这些是反转而不是修正?

对不起,我没有马上回答,我的笔记本完全坏了。我希望牙齿不要再疼了,这是件可怕的事。我的忏悔,我责怪Babon,它工作得很好,而指标NMAZZ是罪魁祸首,我不记得在哪里下载的,但它在一个图表上仍然有效,但我把它安装在三个图表上(5M,30M,4H),就是这样,电脑完全冻结了,或者说终端。我开始逐一从图表中删除指标,发现了这个错误。我不知道这个指标出了什么问题,但在开始时它工作得很好。关于反转或修正,是的,你是对的,它总是明确的反转,但如果在30M、1H和4H时,指挥棒改变了颜色,那么如果不是反转,那就是明确的修正,你可以赚一些利润。