CyberiaTrader...一个了不起的EA! - 页 16 1...91011121314151617181920212223...29 新评论 Linuxser 2006.08.28 11:02 #151 声明更新。 一周内资本几乎翻倍。 v1.60 从现在开始我将把手数改为2。 附加的文件: statement_2.htm 1653 kb fxspeedster 2006.08.28 12:49 #152 ATR_normalized屏幕 Igor 我忘了在上面的回复中附上ATR_normalized的屏幕。 在这里,它是。 附加的文件: atr_norm.gif 50 kb fxspeedster 2006.08.28 12:54 #153 igorad: 你好。我试图创建归一化的ATR,但我认为这不是那么简单的任务。 所以,你可以尝试使用输入法。 伊戈尔 PS.抱歉,代码中出现了错误。修复了。 Igor,非常感谢你提供的归一化ATR。 它看起来不错,除了它从未低于30(0-100)。 如果你看一下所附的屏幕,你会看到iATR变成了0,而ATR_normalized保持在35左右。 在所有iATR达到0的情况下,即使是一段时间,ATR_normalized也保持在30以上。 你能解决这个问题吗? 另外,使用本地的iATR和iMA不是更容易创建吗? 也许那会更容易,我可以直接使用CT中的代码作为过滤器。 Igor Durkin 2006.08.28 14:25 #154 你好。 试试这个。一定是可以的。 附加的文件: atr_normalized_v1.mq4 4 kb fxspeedster 2006.08.28 16:15 #155 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。 这似乎也很好用。 谢谢你的帮助!! fxspeedster 2006.08.28 20:29 #156 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中 CyberiaTrader..an amazing EA! 回溯测试中的伟大EA! 如何编码? fxspeedster 2006.08.28 23:32 #157 修正了CT1.85中的无交易 对不起帮派......在1.85中存在一个错误,使CT 1.85在糟糕的交易时间后无法交易。 我暂时修复了它,直到新的版本出来,我把它命名为1.85f(修复)。 请使用这个版本和最初发布的1.85预设。 这与1.85完全相同,只包含无交易的修复。 我们应该早点发现这个问题。 附加的文件: cyberiatrader1_185f.mq4 61 kb deeforex 2006.08.29 00:34 #158 fxspeedster: 对不起,这帮人......1.85中有一个错误,使CT 1.85在糟糕的交易时间后无法交易。 我暂时修复了它,直到新的版本出来,我把它命名为1.85f(修复)。 请使用这个版本和最初发布的1.85预设。 这与1.85完全相同,只包含无交易的修复。 我们应该早点发现这个问题。 我不明白为什么其他人都得到了如此美妙的结果,而我却几乎没有得到任何订单! Igor Durkin 2006.08.29 05:54 #159 你好。 我已经开发了独立的PipTimerExpert。该专家可根据fxspeedster描述的技术管理交易。这个版本包括秒数和点数的计数器。您可以在CyberiaTrader中使用它。 附加的文件: piptimerexpert_v1.1.mq4 5 kb fxspeedster 2006.08.29 13:42 #160 igorad: 嗨,我已经开发了单独的PipTimerExpert。该专家可根据fxspeedster描述的技术管理交易。这个版本包括秒数和点数的计数器。您可以在CyberiaTrader中使用它。 伊戈尔,感谢你的伟大工作。 我正在收录这段代码并对其进行测试。 你是最棒的! 1...91011121314151617181920212223...29 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
声明更新。
一周内资本几乎翻倍。
v1.60
从现在开始我将把手数改为2。
ATR_normalized屏幕
Igor 我忘了在上面的回复中附上ATR_normalized的屏幕。 在这里,它是。
你好。
我试图创建归一化的ATR,但我认为这不是那么简单的任务。
所以,你可以尝试使用输入法。
伊戈尔
PS.抱歉,代码中出现了错误。修复了。Igor,非常感谢你提供的归一化ATR。 它看起来不错,除了它从未低于30(0-100)。 如果你看一下所附的屏幕,你会看到iATR变成了0,而ATR_normalized保持在35左右。 在所有iATR达到0的情况下,即使是一段时间,ATR_normalized也保持在30以上。 你能解决这个问题吗? 另外,使用本地的iATR和iMA不是更容易创建吗? 也许那会更容易,我可以直接使用CT中的代码作为过滤器。
你好。
试试这个。一定是可以的。
嗨,试试这个。一定没问题。
好的,我将尝试这个。 另外,我还能非常简单地完成这个任务。
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。
这似乎也很好用。 谢谢你的帮助!!
我现在正在测试最后一个版本,发现了一些错误。 所以请等待更新。
伊戈尔,你能发布你的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完全相同,只包含无交易的修复。 我们应该早点发现这个问题。
对不起,这帮人......1.85中有一个错误,使CT 1.85在糟糕的交易时间后无法交易。 我暂时修复了它,直到新的版本出来,我把它命名为1.85f(修复)。 请使用这个版本和最初发布的1.85预设。 这与1.85完全相同,只包含无交易的修复。 我们应该早点发现这个问题。
我不明白为什么其他人都得到了如此美妙的结果,而我却几乎没有得到任何订单!
你好。
我已经开发了独立的PipTimerExpert。该专家可根据fxspeedster描述的技术管理交易。这个版本包括秒数和点数的计数器。您可以在CyberiaTrader中使用它。
嗨,我已经开发了单独的PipTimerExpert。该专家可根据fxspeedster描述的技术管理交易。这个版本包括秒数和点数的计数器。您可以在CyberiaTrader中使用它。
伊戈尔,感谢你的伟大工作。 我正在收录这段代码并对其进行测试。 你是最棒的!