CyberiaTrader...一个了不起的EA! - 页 16

 

声明更新。

一周内资本几乎翻倍。

v1.60

从现在开始我将把手数改为2。

附加的文件:
statement_2.htm  1653 kb
 

ATR_normalized屏幕

Igor 我忘了在上面的回复中附上ATR_normalized的屏幕。 在这里,它是。

附加的文件:
atr_norm.gif  50 kb
 
igorad:
你好。

我试图创建归一化的ATR,但我认为这不是那么简单的任务。

所以,你可以尝试使用输入法。

伊戈尔

PS.抱歉,代码中出现了错误。修复了。

Igor,非常感谢你提供的归一化ATR。 它看起来不错,除了它从未低于30(0-100)。 如果你看一下所附的屏幕,你会看到iATR变成了0,而ATR_normalized保持在35左右。 在所有iATR达到0的情况下,即使是一段时间,ATR_normalized也保持在30以上。 你能解决这个问题吗? 另外,使用本地的iATR和iMA不是更容易创建吗? 也许那会更容易,我可以直接使用CT中的代码作为过滤器。

 

你好。

试试这个。一定是可以的。

附加的文件:
 
igorad:
嗨,试试这个。一定没问题。

好的,我将尝试这个。 另外,我还能非常简单地完成这个任务。

double normATR=0;

double maxATR=iATR(Symbol(),Period(),14,0)。

int i;

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

{

如果(iATR(Symbol(),Period(),14,i)>maxATR)

{

maxATR=iATR(Symbol(),Period(),14,i)。

}

}

normATR=(iATR(Symbol(),Period(),14,0)/maxATR)*100。

这似乎也很好用。 谢谢你的帮助!!

 
igorad:
我现在正在测试最后一个版本,发现了一些错误。 所以请等待更新。

伊戈尔,你能发布你的PIP计时器的修复版本吗?它在目前的形式下不能正常工作。 它在进入时启动PIPcounter,并在时间结束后退出,而不管是否取得任何利润。 请在点上而不是在秒上进行测试,因为第二个计数与点的进入是不同步的。 谢谢你的贡献。

以下是规格,以及我目前拥有的代码,与你最初写的一样,只做了一些修改。

1.如果EnablePIPTimer=true。

2.当MinPIPProfit>=X时,激活TakePIPCountdown(设置为输入TakePipTimer)。这就开始以点为单位倒数到0。

3.TakePIPCountDown倒数。60, 59, 58...ticks等等。

4.4.声明全局变量double BestPIPProfit=0;这是迄今为止头寸所获得的最佳PIP利润。

5.5.最初让BestPIPProfit=MinPIPProfit。

6.获取BestPIPProfit=当前PIP利润

7.如果BestPIPProfit>MinPIPProfit,使MinPIPProfit=BestPIPProfit(这将是该未结头寸的最低PIP利润,从现在起更新)。

8.当上述条件#7发生时,重新启动TakePIPCountDown到初始值(TakePipTimer)并启用它进行计数。

9.9.一旦TakePIPCountDown达到0,立即关闭开仓单。

10.如果当前的PIP利润低于MinPIPProfit,则停止TakePIPCountDown(并重置为原来的TakePipTimer值),直到当前利润 再次>=MinPIPProfit(达到的最高底线)。

代码:

int CheckTakeProfitTimer()

{

double _point = MarketInfo(OrderSymbol(),MODE_POINT);

double PipProfit = 0;

如果(EnablePipTimer==true)

{

for (int cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

int mode=OrderType();

如果( OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)

{

如果(模式==OP_BUY)

PipProfit = MathRound((Bid - OrderOpenPrice())/_point); // 计算BUY的开仓盈亏。

否则

如果(模式==OP_SELL)

PipProfit = MathRound((OrderOpenPrice()-Ask)/_point); //计算卖出的开仓盈亏。

MaxPipProfit = MathMax(PipProfit,MaxPipProfit); // 获取最大利润,无论是当前还是交易期间的最大利润

if (MaxPipProfit >= BestPipProfit) // 检查是否达到了PIP的最低利润。

{

if (!StartCount1 || ( StartCount1 && BestPipProfit > MinPipProfit)) //没有进行计数,并且达到了PIP利润的下限

{

BestPipProfit=MaxPipProfit; // 重置为目前实现的最大利润。

TimerStart1 = CurTime()/1000; //冻结当前时间

TakePipCountDown = TakePipTimer; // 将计数器初始化为设定值

StartCount1=true; //启动计数器

}

否则

如果(TimerType == 0) //计数正在进行中......计数要么是秒,要么是勾。

{

TakePipCountDown = TakePipTimer - (CurTime()/1000 - TimerStart1); // 选择的选项是秒数计数。

}

否则

{

TakePipCountDown--; // 选择的是Tick计数。

}

}// if (MaxPipProfit...)

}//如果(Order...

} // 对于

}//在EnablePipTimer中

 

修正了CT1.85中的无交易

对不起帮派......在1.85中存在一个错误,使CT 1.85在糟糕的交易时间后无法交易。 我暂时修复了它,直到新的版本出来,我把它命名为1.85f(修复)。 请使用这个版本和最初发布的1.85预设。 这与1.85完全相同,只包含无交易的修复。 我们应该早点发现这个问题。

附加的文件:
 
fxspeedster:
对不起,这帮人......1.85中有一个错误,使CT 1.85在糟糕的交易时间后无法交易。 我暂时修复了它,直到新的版本出来,我把它命名为1.85f(修复)。 请使用这个版本和最初发布的1.85预设。 这与1.85完全相同,只包含无交易的修复。 我们应该早点发现这个问题。

我不明白为什么其他人都得到了如此美妙的结果,而我却几乎没有得到任何订单!

 

你好。

我已经开发了独立的PipTimerExpert。该专家可根据fxspeedster描述的技术管理交易。这个版本包括秒数和点数的计数器。您可以在CyberiaTrader中使用它。

附加的文件:
 
igorad:
嗨,我已经开发了单独的PipTimerExpert。该专家可根据fxspeedster描述的技术管理交易。这个版本包括秒数和点数的计数器。您可以在CyberiaTrader中使用它。

伊戈尔,感谢你的伟大工作。 我正在收录这段代码并对其进行测试。 你是最棒的!