问吧! - 页 97 1...90919293949596979899100101102103104...182 新评论 Putz 2008.01.31 20:40 #961 仍有问题 大家好。 感谢Big Be看了我的EA。我的随机RSI是没有下划线的。当我试着用它时,它给了我一个错误。但是,我确实发现了一些问题。 1)当我在较低的时间框架上尝试Strategy Tester 时,它似乎工作得更快。一旦我到了H1或以上,它就变得非常慢。我想这是因为它必须在每个时间段做太多的检查。有什么办法可以解决这个问题吗?我想把它优化到H4,甚至是Daily。 2)在实际交叉之前,仍然存在第一个交易发生的问题。 3)当我看我的回测时,它似乎完全错过了一些交易。这是不是因为我的数据有缺陷/不匹配?我查了一下,发现新数字公司在一个地方解释了如何通过进入历史记录并双击它来获得我们所使用的经纪人的数据......然后打开每个时间段并按住 "Page Up "直到它到达终点,但是,这似乎没有帮助。 我发给你的那部分程序只是三部分中的一部分,我还得把其他三部分加入其中。如果我不能让策略测试器变得更快,我就永远不知道这是否是一个有利可图的想法。 任何想法或建议都会有帮助。 请注意。 普茨 BigBe 2008.02.01 05:55 #962 研究一下我对我修复的波动率质量指数EA,Kiko_v2的做法。 请看这里的319号帖子。 https://www.mql5.com/en/forum/general 祝你愉快。 大贝 Putz 2008.02.01 21:05 #963 录像 嗨,Big Be 谢谢你的想法。我将在本周末开始工作......如果一切顺利的话......我应该在下周末发财......哈哈哈 普茨 Putz 2008.02.07 22:00 #964 帮助...请 嗨,Big Be和所有程序员。 Big Be,我研究了你的波动率EA,但现在看来这毕竟不是我的问题。我在使用IBFX进行回溯测试 时,除了问题之外什么都没有。我最终放弃了,并下载了Alpari,这样做的效果要好得多。 至少现在对我的EA进行回测不需要花好几天时间。所以我从头开始,重新建立了我的程序,它没有下任何订单。 这个程序基本上是codersguru的EMS Fresh Cross,但我希望它是基于随机RSI和StochRSI越过50线的时候。我几乎把所有的东西都按照codersguru的要求留了下来,包括变量,以便于隔离问题。 我相信问题出在iCustom函数上,因为这基本上是我对程序所做的唯一改动,而且它不接受任何订单。谁能看一下,看看是否能找到我的错误。我已经努力了两个星期,想让它工作,但它让我发疯。 我写了几个注释,前面是//。 谢谢 普茨 #property copyright "Putz FX #property link "http://www.putzfx.com" //---- input parameters extern double TakeProfit=130; extern double StopLoss = 60; extern double Lots=1; extern double TrailingStop=30; extern double TimeFrame= 60; extern bool ExitOnCross = true; extern int MagicNumber = 444444; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } int FreshCross () { //This was added in based on what I could figure from Big Be. if (Volume[0] != 1) return(0); //what is the difference between using "Null" or "Symbol()" in iCustom as //neither one works. double SEma, LEma,SEmaP, LEmaP; //The following 4 lines have been changed from the original SEma = iCustom(Symbol(),PERIOD_H1,"Stochastic RSI",28,55,9,0,0); LEma = 50; SEmaP = iCustom(Symbol(),PERIOD_H1,"Stochastic RSI",28,55,9,0,1); LEmaP = 50; //Don't work in the first load, wait for the first cross! //some changes were done to the below two lines as he was comparing the //return value with the Ask or Bid and Close values if(SEma>LEma && SEmaP < LEmaP) return(1); //up if(SEma LEmaP) return(2); //down return (0); //not changed } //+------------------------------------------------------------------+ //| Check Open Position Controls | //+------------------------------------------------------------------+ int CheckOpenTrades() { int cnt; int NumTrades; // Number of buy and sell trades in this symbol NumTrades = 0; for(cnt=OrdersTotal()-1;cnt>=0;cnt--) { OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES); if ( OrderSymbol() != Symbol()) continue; if ( OrderMagicNumber() != MagicNumber) continue; if(OrderType() == OP_BUY ) NumTrades++; if(OrderType() == OP_SELL ) NumTrades++; } return (NumTrades); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int cnt, ticket, total; double TP; if(Bars<100) { Print("bars less than 100"); return(0); } /* if(TakeProfit<10) { Print("TakeProfit less than 10"); return(0); // check TakeProfit } */ int isCrossed = 0; isCrossed = FreshCross (); total = CheckOpenTrades(); if(total < 1) { if(isCrossed == 1) { TP = 0; if (TakeProfit > 0) TP = Ask + TakeProfit * Point; ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,TP,"EMA_CROSS",MagicNumber,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); return(0); } if(isCrossed == 2) { TP = 0; if (TakeProfit > 0) TP = Bid - TakeProfit * Point; ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,TP,"EMA_CROSS",MagicNumber,0,Black); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); return(0); } return(0); } total = OrdersTotal(); for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); //OrderPrint(); if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber) { if(OrderType()==OP_BUY) // long position is opened { // should it be closed? /* REMOVED - Trailling stop only close */ if(ExitOnCross && isCrossed == 2) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Black); // close position return(0); // exit } /**/ // check for trailing stop if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green); return(0); } } } } else // go to short position { // should it be closed? /* REMOVED - Trailling stop only close */ if(ExitOnCross && isCrossed == 1) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Black); // close position return(0); // exit } /* */ // check for trailing stop if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); } //+------------------------------------------------------------------+ Ema Cross! Ask! 如何编码? ralphronnquist 2008.02.07 22:16 #965 你是否验证了你的随机 RSI需要3个输入参数? (我看的那个需要4个) Putz 2008.02.08 00:42 #966 这有助于 嗨,拉尔夫。 谢谢你的帮助。我的有两个缓冲区,但有4个输入参数。我试着用4个参数,但没有成功,后来我用2个参数试了一下,就有了订单。现在我只需要解决剩下的问题。谢谢你让我摆脱困境。 普茨 [删除] 2008.02.08 05:53 #967 来自无名小卒的问题! 帖子移到这里:https://www.mql5.com/en/forum 附加的文件: buy.jpg 7 kb aaezz 2008.02.09 14:06 #968 有谁能帮助我? 大家好 你们都知道Pivot_Monday_fixed指标。 我需要对该指标进行一些修改 我只想要枢轴线和另外四条线 2条蓝色的 枢轴线+20和枢轴线+40 2条红色的枢轴-20和枢轴-40 只有5条线 谢谢 附加的文件: pivot_monday_fixed.mq4 6 kb fxgrm 2008.02.09 17:03 #969 愚蠢的问题 谁能告诉我将EA的mq4文件转换为ex4文件的最快方法? 我知道在mt4上运行一次后,它在专家文件中显示为ex4,但这是唯一的方法吗? 谢谢 Michel 2008.02.09 17:15 #970 fxgrm: 谁能告诉我将EA的mq4文件转换为ex4文件的最快捷方法?我知道在mt4上运行一次后,它在专家文件中显示为ex4,但这是唯一的方法吗? 谢谢 在MetaEditor中打开你的.mq4文件,然后点击 "Compile",.ex4文件就产生了。 1...90919293949596979899100101102103104...182 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
仍有问题
大家好。
感谢Big Be看了我的EA。我的随机RSI是没有下划线的。当我试着用它时,它给了我一个错误。但是,我确实发现了一些问题。
1)当我在较低的时间框架上尝试Strategy Tester 时,它似乎工作得更快。一旦我到了H1或以上,它就变得非常慢。我想这是因为它必须在每个时间段做太多的检查。有什么办法可以解决这个问题吗?我想把它优化到H4,甚至是Daily。
2)在实际交叉之前,仍然存在第一个交易发生的问题。
3)当我看我的回测时,它似乎完全错过了一些交易。这是不是因为我的数据有缺陷/不匹配?我查了一下,发现新数字公司在一个地方解释了如何通过进入历史记录并双击它来获得我们所使用的经纪人的数据......然后打开每个时间段并按住 "Page Up "直到它到达终点,但是,这似乎没有帮助。
我发给你的那部分程序只是三部分中的一部分,我还得把其他三部分加入其中。如果我不能让策略测试器变得更快,我就永远不知道这是否是一个有利可图的想法。
任何想法或建议都会有帮助。
请注意。
普茨
研究一下我对我修复的波动率质量指数EA,Kiko_v2的做法。
请看这里的319号帖子。
https://www.mql5.com/en/forum/general
祝你愉快。
大贝
录像
嗨,Big Be
谢谢你的想法。我将在本周末开始工作......如果一切顺利的话......我应该在下周末发财......哈哈哈
普茨
帮助...请
嗨,Big Be和所有程序员。
Big Be,我研究了你的波动率EA,但现在看来这毕竟不是我的问题。我在使用IBFX进行回溯测试 时,除了问题之外什么都没有。我最终放弃了,并下载了Alpari,这样做的效果要好得多。
至少现在对我的EA进行回测不需要花好几天时间。所以我从头开始,重新建立了我的程序,它没有下任何订单。
这个程序基本上是codersguru的EMS Fresh Cross,但我希望它是基于随机RSI和StochRSI越过50线的时候。我几乎把所有的东西都按照codersguru的要求留了下来,包括变量,以便于隔离问题。
我相信问题出在iCustom函数上,因为这基本上是我对程序所做的唯一改动,而且它不接受任何订单。谁能看一下,看看是否能找到我的错误。我已经努力了两个星期,想让它工作,但它让我发疯。
我写了几个注释,前面是//。
谢谢
普茨
#property copyright "Putz FX
#property link "http://www.putzfx.com"
//---- input parameters
extern double TakeProfit=130;
extern double StopLoss = 60;
extern double Lots=1;
extern double TrailingStop=30;
extern double TimeFrame= 60;
extern bool ExitOnCross = true;
extern int MagicNumber = 444444;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int FreshCross ()
{
//This was added in based on what I could figure from Big Be.
if (Volume[0] != 1) return(0);
//what is the difference between using "Null" or "Symbol()" in iCustom as
//neither one works.
double SEma, LEma,SEmaP, LEmaP;
//The following 4 lines have been changed from the original
SEma = iCustom(Symbol(),PERIOD_H1,"Stochastic RSI",28,55,9,0,0);
LEma = 50;
SEmaP = iCustom(Symbol(),PERIOD_H1,"Stochastic RSI",28,55,9,0,1);
LEmaP = 50;
//Don't work in the first load, wait for the first cross!
//some changes were done to the below two lines as he was comparing the
//return value with the Ask or Bid and Close values
if(SEma>LEma && SEmaP < LEmaP) return(1); //up
if(SEma LEmaP) return(2); //down
return (0); //not changed
}
//+------------------------------------------------------------------+
//| Check Open Position Controls |
//+------------------------------------------------------------------+
int CheckOpenTrades()
{
int cnt;
int NumTrades; // Number of buy and sell trades in this symbol
NumTrades = 0;
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol() != Symbol()) continue;
if ( OrderMagicNumber() != MagicNumber) continue;
if(OrderType() == OP_BUY ) NumTrades++;
if(OrderType() == OP_SELL ) NumTrades++;
}
return (NumTrades);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, ticket, total;
double TP;
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
/* if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
*/
int isCrossed = 0;
isCrossed = FreshCross ();
total = CheckOpenTrades();
if(total < 1)
{
if(isCrossed == 1)
{
TP = 0;
if (TakeProfit > 0) TP = Ask + TakeProfit * Point;
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,TP,"EMA_CROSS",MagicNumber,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
if(isCrossed == 2)
{
TP = 0;
if (TakeProfit > 0) TP = Bid - TakeProfit * Point;
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,TP,"EMA_CROSS",MagicNumber,0,Black);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
total = OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
//OrderPrint();
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
/* REMOVED - Trailling stop only close */
if(ExitOnCross && isCrossed == 2)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Black); // close position
return(0); // exit
}
/**/
// check for trailing stop
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// should it be closed?
/* REMOVED - Trailling stop only close */
if(ExitOnCross && isCrossed == 1)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Black); // close position
return(0); // exit
}
/* */
// check for trailing stop
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+你是否验证了你的随机 RSI需要3个输入参数?
(我看的那个需要4个)
这有助于
嗨,拉尔夫。
谢谢你的帮助。我的有两个缓冲区,但有4个输入参数。我试着用4个参数,但没有成功,后来我用2个参数试了一下,就有了订单。现在我只需要解决剩下的问题。谢谢你让我摆脱困境。
普茨
来自无名小卒的问题!
帖子移到这里:https://www.mql5.com/en/forum
有谁能帮助我?
大家好
你们都知道Pivot_Monday_fixed指标。
我需要对该指标进行一些修改
我只想要枢轴线和另外四条线
2条蓝色的 枢轴线+20和枢轴线+40
2条红色的枢轴-20和枢轴-40
只有5条线
谢谢
愚蠢的问题
谁能告诉我将EA的mq4文件转换为ex4文件的最快方法?
我知道在mt4上运行一次后,它在专家文件中显示为ex4,但这是唯一的方法吗?
谢谢
谁能告诉我将EA的mq4文件转换为ex4文件的最快捷方法?
我知道在mt4上运行一次后,它在专家文件中显示为ex4,但这是唯一的方法吗?
谢谢在MetaEditor中打开你的.mq4文件,然后点击 "Compile",.ex4文件就产生了。