问吧! - 页 97

 

仍有问题

大家好。

感谢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

附加的文件:
buy.jpg  7 kb
 

有谁能帮助我?

大家好

你们都知道Pivot_Monday_fixed指标。

我需要对该指标进行一些修改

我只想要枢轴线和另外四条线

2条蓝色的 枢轴线+20和枢轴线+40

2条红色的枢轴-20和枢轴-40

只有5条线

谢谢

附加的文件:
 

愚蠢的问题

谁能告诉我将EA的mq4文件转换为ex4文件的最快方法?

我知道在mt4上运行一次后,它在专家文件中显示为ex4,但这是唯一的方法吗?

谢谢

 
fxgrm:
谁能告诉我将EA的mq4文件转换为ex4文件的最快捷方法?

我知道在mt4上运行一次后,它在专家文件中显示为ex4,但这是唯一的方法吗?

谢谢

在MetaEditor中打开你的.mq4文件,然后点击 "Compile",.ex4文件就产生了。