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

 
好吧,如果他们不这样做,今晚帮我把它整理出来。
 
请告诉我,是否可以用计算结果的double 值替代int 值进行进一步计算。
例子。
   ATR_Din=iATR(NULL,PERIOD_M5,14,1);
   Din_Per210= MathRound(6000*ATR_Din+210);
   Din_Per5  = MathRound(6000*ATR_Din+5);
   
   MA210_DIN  =iMA(NULL,PERIOD_M5,Din_Per210,0,MODE_SMA,PRICE_CLOSE,1);
   MA5_DIN    =iMA(NULL,PERIOD_H1,Din_Per5,0,MODE_SMA,PRICE_CLOSE,1);
   
在这里,我选择的变量是双倍 的类型,但在iMA 中,它们的值被用于需要int 值的地方(作为MA的周期)。
问题是:这种用法是否正确,或者是否有必要将这些值转换为int 类型
 
大家好,请问你们是否知道有一个脚本可以对每个优化结果 进行专家测试,并将每个测试结果保存在一个单独的文件(htm报告)中?
 
Craft:
我不介意,是否有一个有效的例子或链接?
把代码给我,或者给我一个任务,我们会纠正它。
 
artmedia70:
请告诉我,是否可以用计算结果的double 值替代int 值进行进一步计算。例子。在这里,我选择的变量是

双倍 的类型,但在iMA 中,它们的值被用于需要int 值的地方(作为MA的周期)。所以我的问题是:这样的用法是正确的,还是需要将数值转换为
int 类型
转换是自动完成的,只是切断了小数部分。我遇到的这种使用的唯一限制是,双数不能放在数组索引
 
alsu:
转换是自动完成的,只是切断了小数部分。我所看到的对这种用法的唯一限制是,不能将双数放在数组索引中
谢谢,这让人放心...:)
还有一个问题。
   MA200_DIN =iMA(NULL,PERIOD_M5,Din_Per200,0,MODE_SMA,PRICE_CLOSE,1);
   MA200_UP  =MA200_DIN+20*pt;
   MA200_DN  =MA200_DIN-20*pt;
   
   MA5_DIN  =iMA(NULL,PERIOD_H1,Din_Per5,0,MODE_SMA,PRICE_CLOSE,1);
   MA5_UP   =MA5_DIN+20*pt;
   MA5_DN   =MA5_DIN-20*pt;
建筑物
MA200_UP=MA200_DIN+20*pt; 
MA200_DN=MA200_DIN-20*pt; и 
MA5_UP=MA5_DIN+20*pt; 
MA5_DN=MA5_DIN-20*pt;
不起作用。当把它们的值输出到图表中时,它们都有相同的值,例如
1.4118用于MA200_DIN, MA200_UP, MA200_DN和
1.4106用于MA5_DIN, MA5_UP, MA5_DN。
事实证明,计算水平+20和-20点的公式不起作用。
我做错了什么?
 
pt等于什么? 试着用NormalizeDouble()输出。
 
好的,谢谢,我已经知道了...我设置了pt=Point;已经在计算数值...
正如马特鲁斯金所说:你是个傻瓜......:)
 
alsu:
给我们一个代码或设置一个任务,我们将纠正它

在WelsLab中,这个问题的类比看起来是这样的。

MyATR = SMA.Series((((High-Low)/Low), PerB) [i-1] ;

如果(BuyAtStop(i, (Open[i] + Open[i]*MyATR), "" );

即当一个条形图被打开时,如果达到指定的水平,就会在当前条形图的Open[i]价格+触发器(相同的Open价格乘以PerB期间计算的MyATR[i-1])的位置建立一个Stop位置。

这个显示了我想在mql4上使用WellLab作为例子得到的东西。

我研究了现场的材料,试图做一个模拟。

        MyATR = ((High[0] - Low[0])/Low[0]);
	 BT = Open[0] + Open[0]*iMAOnArray(MyATR ,0,PerB,0,MODE_SMA,1);
        ST = Open[0] - Open[0]*iMAOnArray((MyATR ,0,PerS,0,MODE_SMA,1);

   if (Ask >=  BT)                       // Если разница между
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
   if (Bid <= ST)                       // Если разница между
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

结果:订单堆积如山,请告知应增加(或改变)什么条件,使订单在指定水平上执行一次。

 

注意:iMAOnArray函数的第一个参数应该是一个数组--而你有MyATR标量。为了弄好它,你应该。

1. 声明双倍MyATR[]。

2.设置数组大小为ArrayResize(MyATR,PerB)。

3. 填充数组 for(i=1;i<=PerB;i++) MyATR[i-1]=(High[i]-Low[i])/Low[i]; 索引i从1开始,因为我们只需要收盘 条。

4. 在这之后,你可以读取iMAOnArray(MyATR,0,PerB,0,MODE_SMA,0);这里最后一个参数是0,因为移位ha1已经在步骤3中被考虑到了。


检查一下它是如何工作的,也许错误就在这里