编码帮助 - 页 407

 

各位好,我需要你们对我做的一个指标提供帮助。基本上,它是一个测试器,应该只用于优化策略的设置(同时也测试其性能)。在测试模式 下(优化为假),它工作得很好,给出了默认参数的胜率和平衡。但我很难让优化功能发挥作用。最佳设置的结果总是以较低的值(PeriodMin)结束。我不知道这是否是我使用优化双函数内声明的缓冲区的方式(见第616和617行,以及用于释放缓冲区的第746和747行)。我猜不仅如此,因为如果我不使用这些缓冲区(将AllowMultipleOpenTrades改为False),它仍然给出不一致的结果。如果有人能看一下并提供帮助,我将非常感激。非常感谢。

附加的文件:
 
airquest:
不知道你想做什么。也许是这样?

不,我恐怕没有。让我用一张屏幕截图来说明。在上面的粉红色箭头处,你可以清楚地看到LOW的红柱比HIGH的蓝柱大很多。然而,在线性条形差异指标中的相应输出却高于零!!!(见下部的粉红色箭头)。(见下面的粉色箭头)。当红色的Low柱大于蓝色的High柱时,两个柱子的差值应该是负的,而不是正的。绿色箭头显示了同样问题的另一个例子。

问候

附加的文件:
example.png  25 kb
 
mrcodix:
恐怕不是。让我用一张截图来说明。在上面的粉红色箭头处,你可以清楚地看到LOW的红柱比HIGH的蓝柱大很多。然而,线性条形差异指标的相应输出却在零以上!!!(见下面的粉红色箭头)。(见下面的粉色箭头)。当红色的Low柱大于蓝色的High柱时,两个柱子的差值应该是负的,而不是正的。绿色箭头显示了相同问题的另一个例子。 问候语

所以也许是这样的?你需要看到,缓冲区3和4不是与高位VS开盘和低位VS开盘有关,而是与关盘VS开盘有关。

附加的文件:
 
mrcodix:
恐怕不是。让我用一张屏幕截图来说明。在上面的粉红色箭头处,你可以清楚地看到低点的红柱比高点的蓝柱大很多。然而,线性条形差异指标的相应输出却在零以上!!!(见下面的粉红色箭头)。(见下面的粉色箭头)。当红色的Low柱大于蓝色的High柱时,两个柱子的差值应该是负的,而不是正的。绿色箭头显示了相同问题的另一个例子。 问候语

或者这是用高/低点VS开盘或收盘VS开盘来选择的。

附加的文件:
 
airquest:
你好,伙计们,我需要你们帮助我做的一个指标。基本上,它是一个测试器,应该只用于优化策略的设置(同时也测试其性能)。在测试模式下(优化为假),它工作得很好,给出了默认参数的胜率和平衡。但我很难让优化功能发挥作用。最佳设置的结果总是以较低的值(PeriodMin)结束。我不知道这是否是我使用优化双函数内声明的缓冲区的方式(见第616和617行,以及用于释放缓冲区的第746和747行)。我猜不仅如此,因为如果我不使用这些缓冲区(将AllowMultipleOpenTrades改为False),它仍然给出不一致的结果。如果有人能看一下并提供帮助,我将非常感激。非常感谢。

征服

你在第602行的数组recTP[]和recSL[]没有调整大小(它们的大小为0,是在循环开始时声明的方式),试着在for()循环之前调整它们的大小。

 
airquest:
或者这是在选择使用高/低点与开盘价或收盘价与开盘价的情况下。

不,这就是我的意思。

int start()

{

int counted_bars=IndicatorCounted()。

int i;

//int UpDays, DownDays, NeutralDays;

Double BarH, BarL, BarC;

//----

for(i=0; i<Bars; i++)

{

BarH = High - Open;

BarL = Open - Low;

BarC = Close - Open;

//if(BarC>0) UpDays +=1;

//否则,如果(BarC<0) DownDays +=1;

//否则如果(BarC==0) NeutralDays +=1;

ExtMapBuffer1 = BarH;

ExtMapBuffer2 = BarL;

ExtMapBuffer5 = BarH - BarL;

}

//----

return(0);

}

我现在有点自己想通了,但还是要感谢你的努力。

谁能告诉我为什么这个指标。蜡烛比率" Metatrader Files 不显示最后几个烛台的输出?在显示的图片中,它似乎并没有这样做。

 
mladen:
airquest 你的数组recTP[]和recSL[]在第602行没有被调整大小(它们的大小是0,它们在循环开始时被声明的方式),试着在for()循环前调整它们的大小

谢谢Mladen,我做了,但优化的结果仍然不正确。如果我把 "优化 "设为 "真",它给出的最低值是最佳设置(波段周期=5),而设为 "假",默认波段周期为40,例如,它显示的胜率比5更好。我重新读了几百遍代码,但找不到问题所在。如果你有什么想法,否则可能就没办法了。

这是在添加了ArrayResize 后的结果。也修复了一些bug,但还是没有得到和不优化一样的结果。

附加的文件:
 
airquest:
谢谢Mladen,我做了,但优化后的结果仍然不正确。如果我把 "优化 "设为 "真",它给出的最低值是最佳设置(波段周期=5),而设为 "假",默认波段周期为40,例如,它显示的胜率比5更好。我重新读了几百遍代码,但找不到问题所在。 如果你有什么想法,否则可能就没戏了。 这是添加了ArrayResize的情况。也修复了一些错误,但仍然没有得到与不优化相同的结果。

不知道为什么,当通过写CSV文件检查结果时,总交易量、赢利和余额都乘以10的系数:http://clip2net.com/s/38YHODl ...

 
airquest:
不知道为什么,当通过写CSV文件检查结果时,总交易量、赢利和余额都乘以10的系数:Microsoft Excel - BB+CCI_FX-EURUSD-H1-SA-1.csv...

征服

在我看来,总的交易和赢利是可以的(否则它们必须以0结尾)。

 
mladen:
airquest 在我看来,总的交易量和赢利都是可以的(否则就会以0结尾)。

嗯,还是...这里有一些测试。

- 默认设置(无优化,WriteCSV为真):http://clip2net.com/s/38YSV53

- 优化设置为True,PeriodMin为20,PeriodMax为20 :http://clip2net.com/s/38YT2hN

第一个测试给出了一致的数值(CSV文件和屏幕结果一致)。这很正常,因为两者都来自同一个变量。但在第二种情况下,opti的结果与屏幕的结果相比,几乎被乘以10。虽然,它们最终的结果应该是一样的......

总之,不着急,也许随着时间的推移,我会发现问题所在。谢谢你的帮助,Mladen。