大家好,今天想跟大家分享一个关于交易策略的想法,特别是如何利用重心指标来创建一个专家顾问(EA)。
这个想法其实已经有一段时间了,基于“保守日内剥头皮”策略,但我一直找不到合适的指标来在MT4中实现。
最近我发现了这个指标:重心指标.mq4。现在我正在尝试把它应用到EA中,但这个EA就是不愿意开仓(无论是在模拟账户还是回测中)。我想请教一下,究竟是什么原因呢?
我的思路是:这个指标会生成5条与趋势平行的线。我们可以在极限线的交点处开仓(当然,最好是带有移动止损)。我的具体想法是,当一个周期为1的简单移动平均线(基于最低价的SMA)从下方穿越指标的下限线时,这就可以作为开仓信号,例如买入。而卖出信号则是相反的——当1周期的移动平均线(基于最高价的SMA)从上方穿越上限线时。这个思路可以无止境地进一步发展,但当前我们需要先解决这个开仓问题。
指标:重心指标.mq4
专家顾问:C_S_intraday.mq4(简单版,没有资金管理、时间框架、移动止损等功能)

Bitmap
//+---------------------------------------------------------------------+ //| C_S_intraday.mq4 | //| | //+---------------------------------------------------------------------+ // // // extern double lots=0.1; //extern int StopLoss=30 ; //extern int TrailingStop=15; //extern int Slippage=2; extern int BB = 125; extern int MM = 2; extern int II = 0; extern double KK = 2.0; extern int NN = 1102; double maH0,maH1,maL0,maL1; //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { maH0=iMA(NULL,0,1,0,MODE_LWMA,PRICE_HIGH,0); //基于最高价的移动平均 maH1=iMA(NULL,0,1,0,MODE_LWMA,PRICE_HIGH,1); //基于最高价的移动平均 maL0=iMA(NULL,0,1,0,MODE_LWMA,PRICE_LOW,0); //基于最低价的移动平均 maL1=iMA(NULL,0,1,0,MODE_LWMA,PRICE_LOW,1); //基于最低价的移动平均 int B= BB; // int M= MM; // int I= II; // double K= KK; // int N= NN; // double cgh = iCustom(NULL,0,"重心指标",B,M,I,K,N,3,0); double cgl = iCustom(NULL,0,"重心指标",B,M,I,K,N,4,0); if (cgl<maL0) //如果低位移动平均线从下方穿越指标的最低线 { OrderSend(NULL,OP_BUY,lots,Ask,2,Ask-10*Point,Ask+20*Point,"create1",123,0,Lime); } /* if (cgh>maH0) { OrderSend(NULL,OP_SELL,lots,Bid,2,Bid+10*Point,Bid-20*Point,"create1",123,0,Red); } */ //---- return(0); } //+------------------------------------------------------------------+