发个均线EA请高手帮忙指导修改
弄了个EA系统,但不知道是不是没弄好,挂了一天都没交易发生,老是提示:买进(卖进)不成功、平仓不成功。
我的思路是15M,2金叉(死叉)自动开多(空)单并平仓。下面把代码发出来,请高手帮忙修改。先谢过了!
/* 未通过测试
//+------------------------------------------------------------------+
//| 390361808_v1.mq4 |
//| Copyright 2009, 390361808 |
//| http://www.390361808.com |
//+------------------------------------------------------------------+
===============================================================================================
功能简介: 本智能的中文名字:MA交叉短线王
工作原理:1. 由My_Open()函数检测MA()交叉是否发生
2. 当发生交叉时,发出交易信号
3. 系统收到交易信号后,先进行对冲平仓
4. 然后按交易信号方向开仓
使用事项:1. 本智能对均线指标提供二组(各三个)参数输入窗口,可由用户自由设定,软件设计者则可以优化该等参数。
================================================================================================ */
#property copyright "Copyright 2009, 390361808"
#property link "http://www.390361808.com"
//+------------------------------------------------------------------+
//| 交易变量。
//+------------------------------------------------------------------+
extern double nEverytimeLost = 0.2; // 每次下单手数。
extern double nMinLost = 0.1; // 最小手数。
extern double nMaxMargin = 0.3; // 最大可使用保证金比率。
//+------------------------------------------------------------------+
//| 指标参数。
//+------------------------------------------------------------------+
extern int FastPeriod=2;
extern int SlowPeriod=14;
extern string cMethod = "0.SMA, 1.EMA, 2.SMMA, 3.LWMA";
extern int FastMethod=0;
extern int SlowMethod=0;
extern string cAppliedPrice = "0.CLOSE, 1.OPEN, 2.HIGH, 3.LOW, 4.(H+L)/2, 5.(H+L+C)/3, 6.(H+L+C+C)/4";
extern int FastAppliedPrice = 0;
extern int SlowAppliedPrice = 0;
//+------------------------------------------------------------------+
//| 公共变量。
//+------------------------------------------------------------------+
int nRunPrevtime=0;
//+------------------------------------------------------------------+
int start()
{
int j; double RealSendLots;
//--- 运行K线控制 ----------------------------------------
if(Time[0]==nRunPrevtime ) { return(0); }
nRunPrevtime = Time[0];
//--- 确定交易手数 ---------------------------------------
RealSendLots = SendLots();
if( RealSendLots==0 ) { return(0); } //资金不足
//--- 判断开仓条件 ---------------------------------------
j = My_Open(1);
if( j==-1 ) { return(0); } // -1 没有交易信号 0 做多 1 做空
//-- 对冲平仓 --------------------------------------------
if( CloseOrderDirect( "", j )==-1 ) { return(0); }
//--- 发送定单 -------------------------------------------
SendOrderSimple( j, RealSendLots );
//-------------
return(0);
}
//+------------------------------------------------------------------+
double SendLots()
{
double XyBaoZhenJing,YyBaoZhenJing,KyBaoZhenJing,nE_Lots,nE_TotalJe;
int EA_Count,EA_OpenNum=0;
//---------
KyBaoZhenJing = AccountFreeMargin(); // 可用保证金
YyBaoZhenJing = AccountMargin(); // 已用保证金
XyBaoZhenJing = MarketInfo(Symbol(),MODE_MARGINREQUIRED); // 一个标准手需保证金金额。
//---------
nE_Lots = nEverytimeLost;
XyBaoZhenJing = XyBaoZhenJing * nE_Lots ;
if( (YyBaoZhenJing+XyBaoZhenJing) / (YyBaoZhenJing+KyBaoZhenJing) >= nMaxMargin ) // 资金不足改用最小下单量试算
{
nE_Lots = nMinLost;
XyBaoZhenJing = XyBaoZhenJing * nE_Lots ;
if( (YyBaoZhenJing+XyBaoZhenJing) / (YyBaoZhenJing+KyBaoZhenJing) >= nMaxMargin ) { return(0); }
}
//---------
return(nE_Lots);
}
//+------------------------------------------------------------------+
int My_Open(int nW_Shift)
{
double nFastValue1,nSlowValue1,nFastValue2,nSlowValue2;
nFastValue1 = iMA(Symbol(),0,FastPeriod,0,FastMethod,FastAppliedPrice,nW_Shift );
nFastValue2 = iMA(Symbol(),0,FastPeriod,0,FastMethod,FastAppliedPrice,nW_Shift+1 );
nSlowValue1 = iMA(Symbol(),0,SlowPeriod,0,SlowMethod,SlowAppliedPrice,nW_Shift );
nSlowValue2 = iMA(Symbol(),0,SlowPeriod,0,SlowMethod,SlowAppliedPrice,nW_Shift+1 );
if( nFastValue1>nSlowValue1 && nFastValue2<=nSlowValue2 ) { return(0); }
if( nFastValue1=nSlowValue2 ) { return(1); }
//----
return(-1);
//----
}
//+------------------------------------------------------------------+
int CloseOrderDirect( string cE_CloseInformation, int nE_CloseMode )
{
int EA_Count;
int iP_CloseCount; bool bP_Closed=false;
//---------
for( EA_Count=0; EA_Count0 && iE_Ticket!=1000 ) { break; }
}
//----
if( iE_Ticket>0 && iE_Ticket!=1000 ) { Alert( cE_AlertMess+"成功!" ); return(1); }
else { Alert( cE_AlertMess+"不成功!" ); }
//----
return(0);
}
//+------------------------------------------------------------------+
2楼
正正版也不在吗?怎么论坛感觉这么冷清啊?
韬客社区www.talkfx.co