Ema Cross! - 页 55

 

鄂玛_十字架_2

亲爱的codersguru。

感谢你的EA和你的逆势概念。

即使是第一次,我和我的朋友也对这种逆势方法持怀疑态度,但在研究和运行测试您的EA后,我们对结果感到惊讶。

我们仍在继续用H1时间框架测试EMA_CROSS_2,但我们在2006年4月3日的欧元/美元货币对 中发现了一些有趣的现象,在交叉下跌后,该EA开出了卖出头寸而不是买入头寸....,这是正常行为吗?(见附件)

谢谢你...

晓风

附加的文件:
 

7

嗨,floks。

我已经为比赛写了10个EA,但它们太多,无法测试。

因此,我将选择其中的3个参加比赛,并在这里提交7个 ,它们在前面的测试中都获得了利润。

希望你喜欢!

 

编码员。

我将回去阅读完整的主题,但我不记得是否已经解决了这个问题。

当你关闭平台时,无论是InterbanFX,还是MT4,等等,我注意到,如果我不在一个位置,而我有最新的MA EA,它会自动执行交易。

我们怎样才能避免每次重新打开软件时发生这种情况。

谢谢

 

新手需要帮助的MA交叉EA...

codersguru:
amarnath,

这是我的报告(附件)!

这是我使用的版本(附后)!

我想我们不能只在回溯测试中接力。但在我的测试中,我使用了从2005/01/01到今天的日期!

有没有人预先测试过MoneyMaker?

嗨,CodersGuru。

我对您原来的EMA_Cross EA进行了一些修改,使之与5 EMA和10 LWMA交叉,并带有RSI和随机指标过滤器。 虽然这个EA可以正确地打开长线和短线订单并关闭它们,但它不允许我同时关闭一个头寸,然后立即打开一个相反方向的新头寸(例如:真正的 "摆动 "交易技术)。 因此,我失去了大量的潜在波段交易。

此外,有时EMA1>WMA1和EMA2<WMA2的交叉条件可能不会触发买入,如果过去一段时间的两条移动平均线是相同的数值或相互之间在1到2个点之内。 因此我想在代码中加入寻找这种条件(经常发生)来触发进场。

我不是一个程序员,所以我希望你能帮我想出如何做这个。

我在下面附上了我的代码以及作为附件的MQ4文件。 如果有任何帮助,我将非常非常感激

//+----------------------------------------------------------------------------------------+

//| 5/10MA交叉,RSI和Stoch过滤器|。

//| Ian Boersma - 2006年版权所有。

//| |

//+----------------------------------------------------------------------------------------+

#property copyright "Ian Boersma" (版权所有)

//---- 输入参数

extern double TakeProfit=100;

extern double Lots=1;

extern double TrailingStop=35;

外置int ShortEma=5。

extern int LongWma = 10;

外置 int RSIPer = 14;

外置 int StochK = 10;

外置 int StochD = 3;

extern int StochSlow = 3;

//+------------------------------------------------------------------+

//|专家初始化函数

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//|专家的去初始化功能|

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| 专家启动功能 +

//|这是我们初始化内部变量供程序使用的地方 + | |

//+------------------------------------------------------------------+

int start()

{

//----

//LotCalc的声明

int cnt, ticket, total;

//MAs和过滤器变量的声明

double RSI;

double Stoch;

双 EMA1,EMA2,WMA1,WMA2;

如果(Bars<100)

{

Print("小于100的条数")。

return(0);

}

如果(TakeProfit<10)

{

Print("TakeProfit小于10")。

return(0); // 检查TakeProfit

}

//MA和过滤变量的定义

EMA1 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,0)。

WMA1 = iMA(NULL,0,LongWma,0,MODE_LWMA,PRICE_CLOSE,0);

EMA2 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);

WMA2 = iMA(NULL,0,LongWma,0,MODE_LWMA,PRICE_CLOSE,1);

RSI = iRSI(NULL,0,RSIPer,PRICE_CLOSE,0)。

Stoch = iStochastic(NULL,0,StochK,StochD,StochSlow,MODE_SMA,0,MODE_MAIN,0)。

int isCrossed = 0;

如果(EMA1 > WMA1 && EMA2 = 50 && Stoch < 80)

{isCrossed = 1;

}

如果(EMA1 = WMA2 && RSI 20)

{isCrossed = 2;

}

//我们检查交易终端,看它是否为空

total = OrdersTotal();

if(total < 1) //如果交易终端是空的。

{

if(isCrossed == 1) //如果十字星表示长线波动......

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,0,Ask+TakeProfit*Point, "My EA",12345,0,Yellow)。

如果(ticket>0)

{

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice());

}

否则 Print("打开BUY订单错误。",GetLastError())。

return(0);

}

if(isCrossed == 2) //如果十字星表示空头摆动。

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,2,0,Bid-TakeProfit*Point, "My EA",12345,0,Red) 。

如果(ticket>0)

{

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("Sell order opened : ",OrderOpenPrice());

}

否则 Print("打开卖出订单错误。",GetLastError())。

return(0);

}

return(0);

}

//位置退出函数...

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

OrderPrint()。

如果(OrderType()<=OP_SELL && OrderSymbol()==Symbol()

{

如果(OrderType()==OP_BUY) // 多头头寸被打开

{

// 检查我们是否有一个空头交叉条件...

if(isCrossed == 2)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // 关闭头寸

return(0); // 退出

}

// 检查我们的追踪止损,看是否需要调整

如果(TrailingStop>0)

{

如果(Bid-OrderOpenPrice()>Point*TrailingStop)

{

如果(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。

返回(0)。

}

}

}

}

否则 // 转入空头头寸

{

// 检查我们是否有一个长的交叉条件...

如果(isCrossed == 1)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // 关闭头寸

return(0); // 退出

}

// 检查我们的追踪止损,看是否需要调整。

如果(TrailingStop>0)

{

如果((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

如果((OrderStopLoss()>(Ask+Point*TrailingStop))|| (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) 。

返回(0)。

}

}

}

}

}

}

return(0);

}

//+------------------------------------------------------------------+

附加的文件:
 
iboersma:
嗨,CodersGuru。

我对你原来的EMA_Cross EA进行了一些修改,使其与5 EMA和10 LWMA交叉,并带有RSI和Stochastic过滤器。虽然这个EA可以正确地打开长线和短线订单并关闭它们,但它不允许我同时关闭一个头寸,然后立即打开一个相反方向的新头寸(例如:真正的 "波段 "交易技术)。因此,我失去了大量的潜在波段交易。

此外,有时EMA1>WMA1和EMA2<WMA2的交叉条件可能不会触发买入,如果过去一段时间的两条移动平均线是相同的数值或相互之间在1到2个点之内。因此我想在代码中加入寻找这种条件(经常发生)来触发进场。

我不是一个程序员,所以我希望你能帮我想出办法来。....

我会检查 的 !

 
codersguru:
我会检查的 !

谢谢你的帮助...

- 伊恩

 
codersguru:
我会检查的!

编码员大师。

我附上了我的EA的更新版本,因为我发现了一个确定 "isCrossed "条件的问题(我试图将RSI和Stoch过滤器添加到原来的isCrossed条件中,而不是将其作为一个限定符添加到进入一个位置。

希望这更有意义......

- 伊恩

附加的文件:
 
iboersma:
谢谢你的帮助...... - Ian

我认为第1点是有效的(当收盘买入时打开卖出,当收盘卖出时打开买入),请看附件中的测试。

附加的文件:
 
codersguru:
我认为第1点是有效的(当收盘买入时打开卖出,当收盘卖出时打开买入),请看附件中的测试。

很好。 这看起来绝对是我正在寻找的斜率和反向类型的系统(尽管净利润看起来不是很令人鼓舞...:)

我已经手动使用这个系统一周左右了,取得了一些非常令人鼓舞的结果,所以得到完整的回测 数据,看看我是否发现了什么,或者只是运气好,这将是很有趣的事情......

- 伊恩

 
gody6000:
这是第2周了,http://9q9q.com/March/1144348631.zip

对不起!但这是什么?