回溯测试中的伟大EA! - 页 108

 

上周演示结果

你好,世界。

大约在上周五,我发现了一个计算封锁时间的潜在错误。

我使用的是FXDD,设置为GMT=3。下面这段代码应计算出当前小时(GMT)。

int hadj=TimeHour(CurTime())-GMT。

然而,在FXDD时间00:00,这个函数返回-3,在01:00返回-2,在02:00返回-1。但正确的值应该是21、22和23。

这也是我的日元对在格林威治时间23:00被封锁的原因,因为它从未被封锁。

我添加了这段代码来抵消这个错误。

如果(hadj<0)hadj=hadj+24。

总之,这是上周的结果......虽然没有什么了不起的。

我的真实账户也没有表现得那么好。

最让我不爽的是,事后的回测 结果是全盘的绝对赢家。回测的胜利交易在实盘交易中从未被执行,实盘交易中的失败交易也从未在回测中出现。

梓博芬

附加的文件:
 

Aragorn,你是在使用1.0R2版本的默认设置,还是做了什么改变。风险、手数等并不重要,我更想知道过滤器、SL设置等。

我从今天起将你的EA修订版(错过了昨天的交易日)加入到我的欧元实盘投资组合中,我希望它能赢回 "原始 "版本失去的东西。

AZBOfin

顺便说一句:编程做得很好

 
Aaragorn:
我得告诉你,我仍然喜欢在早晨醒来时看到这个EA在我睡觉时赚了钱。

我正在对我的真实账户(现在只运行alertteuro版本)和模拟账户进行比较,我允许模拟账户运行alert euro和usdcad以及usdjpy版本,所有这些都是我早些时候在主题中发布的......在这三个中,usdjpy是迄今为止最活跃的,也是迄今为止最不赚钱的,它似乎几乎没有做超过收支平衡,有时损失惨重。我想看看这三个货币对加在一起是否会比欧元本身赚得更多或更少,这是我迄今为止看到的最可靠的结果。

这三个货币对在一起几乎使我的模拟账户 破产,回到了我的真实账户的位置......它们在一起是很糟糕的我想我会继续让euroalert版本在模拟账户中以风险=1的方式运行,在我的真实账户中以风险=.25的方式运行。今天早上我的真实账户的余额是315.16美元,在我的模拟账户中是322.63美元。现在几乎一样了,我将在模拟账户中看看我是否能容忍更高的风险?

同时......沿着发展线索......。

我在用支持和阻力数据创建柱状图时遇到了一些问题。我显然没有掌握循环和数组的方法。我试图让一个循环在一个数组中循环,如果它确实与数组中已经存在的一个值相匹配,那么就增加计数并继续下一个值,如果它没有找到一个匹配的值,就把这个值追加到数组的末尾。这被证明是令人厌恶的困难。首先,数组只允许整数,所以我必须把价格水平值转换成整数。它必须经过两个数据类型的转换才能做到....THEN......它必须在循环中进行转换,但显然它没有这样做。它的循环是好的,但它没有把测试值输入.... vey。当我需要的时候,编码专家在哪里呢?

#define SIZE 50 // must be set to match NumberOfBars

static int Index = 0;

static double Opens[ SIZE ] = { 0 };

static int TotalOMatches[ SIZE ] = { 0 };

static double OpenHistogram[2][ SIZE ] = { 0 };

int ct5=0,i5=NumberOfBars;

int level=0,matches=0;

// This loop cycles TotalOMatches thru the OpenHistogram looking for identical price levels and creates histogram of all unique open levels and their associated matches

for(ct5=NumberOfBars;ct5>0;ct5--)

{

string Openhist=DoubleToStr(Opens,4*10000);

int Ohist=StrToInteger("Openhist");

Print("Ohist: ",Ohist," ",TotalOMatches);

while(OpenHistogram[level][matches] == OpenHistogram[Ohist][TotalOMatches])

{

level++;

matches++;

Print("Ohist: ",Ohist," ",TotalOMatches);

//Print("cycle: ",i5);

if(OpenHistogram[level][matches] != OpenHistogram[Ohist][TotalOMatches])

{

OpenHistogram[level][matches] = OpenHistogram[Ohist][TotalOMatches];

// We print the result

Print("Open Histogram: ",OpenHistogram[level][matches]);

Print ("Open Histogram2: ",OpenHistogram[Ohist][TotalOMatches]);

}

i5--;

}

}

当我运行这个时,它打印出

哦,0,0

哦,0,0

哦,0,0

0, 0

.....

大约一百万次。

如果有人能帮助我使其正常工作,也请不要客气。这让我很纠结。

 
AZBOfin:
Aragorn,你是使用1.0R2版本的默认设置,还是做了什么改变。风险、地段等都不重要,我更想知道过滤器、SL设置等。

我从今天起将您的EA修订版(错过了昨天的交易日)添加到我的欧元投资组合中,我希望它能赢回 "原始 "版本失去的东西。

AZBOfin

BTW:编程工作做得很好,确实是这样

谢谢,我仍然可以使用一些编码帮助。你知道有谁可以帮助我吗?事实上,我看到自己的编码就像《幻想曲》中的米老鼠,当巫师背对着他的时候。

这就是我现在正在运行的东西。我已经关闭了其他一切。是的,这是一个邪恶的世界,但我注意到,我仍然在玩游戏。令人惊讶的是,当我获利时,我对世界的态度发生了变化,而不是在我抽身的时候。我现在的努力集中在改善资金管理 方面的决策。希望我可以在不久之后让支撑/阻力的东西发挥作用。

哇,今天早上的走势如何!太糟糕了,我没有抓住那一波......但话说回来,这个系统并不是靠抓住大的走势而获胜的。至少在我看来,它只是在高概率的反转中寻找7个点,当cci是正确的。我必须记住的是,一天3次7个点就是一天21个点,如果它每天都能做到这一点,甚至接近这一点,而且有任何程度的可靠性,这就是一个伟大的系统,可以在短短几个月内利用它赚取数百万美元。我必须保持目标,不要被市场上的闪光点所干扰。除非你能以某种程度的可靠性抓住它,否则所有这些闪光点都是无用的。在这个系统中,我看到它的可靠性比我迄今为止研究的其他任何东西都要高,这就是为什么我仍然在努力。

附加的文件:
 

我想我看到了一个模式。

上一次出现像今天早上那样的大波动时...

该程序在随后的回撤反转中进行了三次交易。它采取了一个空头头寸和两个多头头寸。

它赢得了从大移动的峰值下来的空头。它失去了第一个多头头寸,然后赢得了第二个头寸。就逆转而言,第二个仓位实际上更好(显然)。

所以...

我的想法是,现在,在我能够对它进行编程以识别这些条件之前,我手动阻止它现在的多头头寸。因为就我从上一个周期来看,它可能采取的第一个多头头寸比它可能采取的第二个多头头寸的概率低。因此,我现在将手动阻止多头头寸,并监测这一情况。我不需要阻止太多失败者,就能在这里产生变化。

我还看到现在的交易正好低于我在1.2781处画的 阻力线。我真希望我现在知道如何让我的支撑阻力柱状图在这个代码中可用...哎

 

好的,我在刚才的代码中加入了

break;在我刚刚发布的代码中的这一点上...

}

i5--;

break;

}[/PHP]

now it's printing the second variable of the array...that's the matches

[PHP]2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 4

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 4

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 3

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 3

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 2

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 5

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 5

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 5

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 5

2006.10.31 10:50:11 2006.10.27 13:03 Support and Resistance EURUSDm,H1: Ohist: 0 5

现在,如果我能够弄清楚如何通过数据类型的转换和incermenting....hum来获得这些级别

 

你好,Aragorn

我也在使用这个系统,但有不同的结果。

你能不能好心地拍一张过去几天中某一天的截图?

我还想知道,我的警报窗口看起来是Cyberia警报 - 卖出欧元/美元,但系统卖出英镑/美元?(我有两个窗口,分别是欧元/美元和英镑/美元。)

谢谢你的帮助和信息

乞丐

附加的文件:
 
forex2006:
你好,Aragorn

我也在使用这个系统,但有不同的结果。

你能不能好心地拍一张过去几天中某一天的截图?

我还想知道,我的警报窗口看起来是Cyberia警报--卖出欧元/美元,但系统卖出英镑/美元?(我有两个窗口,分别是欧元/美元和英镑/美元。)

谢谢你的帮助和信息

乞丐

请理解,我所建立的警报系统是专门针对欧元/美元对的。它可以在代码中改为gbpusd,但我不建议在它所优化的货币对之外的任何其他货币对上运行euroalert版本。

我不知道你希望从我发布的屏幕截图中获得什么。事实上,我现在忙于开发工作,无法为你做这些,我很抱歉。也许以后当我更了解你到底希望从中学到什么的时候,我再来做。

好了,就这样吧......不管它有什么价值。

附加的文件:
aleerteuro.gif  61 kb
 

好吧,我想我已经学到了一个关于尝试手动改善交易的教训......模拟账户持有一个多头头寸并赢得了它,而我的真实账户却没有,因为我封锁了多头交易......哎,我回去允许做多和做空....,证明我不是一个交易天才。另一个理论被证明不是那么无懈可击......

从好的方面看,我现在能让数组和循环更好地工作了。

fyi,

http://www.212movie.com/

 

好吧,我已经解决了数据转换的问题。在代码执行这个循环之前,我让前一个循环将所有价格*10000的值加载到一个interger数组中。现在我只需在这个循环中调用interger数组。

int ct5=0,i5=NumberOfBars;

int level=0,matches=0;

// This loop cycles TotalOMatches thru the OpenHistogram looking for identical price levels and creates histogram of all unique open levels and their associated matches

for(ct5=NumberOfBars;ct5>0;ct5--)

{

//Print("bar: ",i5," Ohist: ",OpensInt," ",TotalOMatches);

while(OpenHistogram[level][matches] == OpenHistogram[OpensInt][TotalOMatches])

{

level++;

matches++;

//Print("Ohist: ",Ohist," ",TotalOMatches);

Print("cycle: ",i5," Ohist: ",OpensInt," ",TotalOMatches);

if(OpenHistogram[level][matches] != OpenHistogram[OpensInt][TotalOMatches])

{

OpenHistogram[level][matches] = OpenHistogram[OpensInt][TotalOMatches];

// We print the result

Print("Open Histogram: ",OpenHistogram[level][matches]);

Print ("Open Histogram2: ",OpenHistogram[OpensInt][TotalOMatches]);

}

i5--;

break;

}[/PHP]

this is the output...

[PHP]2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 1 Ohist: 12730 3

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 2 Ohist: 12730 3

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 3 Ohist: 12725 2

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 4 Ohist: 12722 2

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 5 Ohist: 12730 3

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 6 Ohist: 12713 1

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 7 Ohist: 12684 2

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 8 Ohist: 12679 4

2006.10.31 14:38:28 2006.10.27 19:59 Support and Resistance EURUSDm,H1: bar in loop: 9 Ohist: 12666 2

问题仍然存在...

你可以看到,循环1、2和5中的bar都是一样的。因此,虽然现在正在管理提取的数据,但它仍然没有形成一个综合的直方图,每个价格水平只有一个条目....。

在直方图的结尾处,应该附加唯一值的部分仍然没有工作....huummm。我只是对数组不熟悉,更不用说二维数组了。对于知道怎么做的人来说,我做错的地方可能非常明显。