wer234hj54 发表于 2010-1-8 07:00

系统参数优化测试问题

各位大师,请指点,我在系统参数优化测试中,测试了很多次,
没有优化结果与优化图表,这是不是代什么地方编写错
了引起的,请各位高人指点,谢谢


//+------------------------------------------------------------------+
//|                        Designed by OKwh, China|
//|                  Copyright 2010, OKwh |
//|                                          |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, OKwh "
#property link    ""
#define MAGICMA 200610011231
//+------------------------------------------------------------------+
//| 注意没有指标文件那些property                  |
//+------------------------------------------------------------------+
    //非零就跟踪止赢


extern double D1=1;
extern double D2=1;
int nowbuyorsell=0;

int Lot=0.1;


double Lots;
datetime lasttime=NULL;


//主程序
int start()
{
CheckForOpen();

return(0);
}
//+------下面是各子程序--------------------------------------------+


//平仓持有的买单
void CloseBuy()
{ int i;
if (OrdersTotal( ) > 0 )
{
for(i=OrdersTotal()-1;i<0;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)    break;
if(OrderType()==OP_BUY)
{
    OrderClose(OrderTicket(),OrderLots(),Bid,30,White);
   
}
}
}
}
//平仓持有的卖单
void CloseSell()
{
if (OrdersTotal( ) > 0 )
{int i;
for(i=OrdersTotal()-1;i<0;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)    break;
if(OrderType()==OP_SELL)
    {
    OrderClose(OrderTicket(),OrderLots(),Ask,30,White);
   
    }
}
}
}
//判断是否买或卖或平仓



int maxh ( )
{
double xmas, qmas , mayh , mash ,mare , ESL , YSSl, qssk,qsss,YSSL,xskp,LS;
LS = iClose(NULL ,60,0);
qssk =iOpen(NULL,30,1);
ESL = iClose(NULL,240,0);
qsss = iClose(NULL,30,1);
YSSL = iClose(NULL,1440,0);
xskp = iOpen(NULL,30,0);
xmas = iMA (NULL,30, D1,D2,MODE_EMA,PRICE_CLOSE,0);
qmas= iMA (NULL,30, D1,D2,MODE_EMA,PRICE_CLOSE,1);
mayh= iMA (NULL,60, D1,D2,MODE_EMA,PRICE_CLOSE,0);
mash= iMA (NULL,240, D1,D2,MODE_EMA,PRICE_CLOSE,0);
mare= iMA (NULL,1440, D1,D2,MODE_EMA,PRICE_CLOSE,0);
if(xmas>qmas && LS>mayh && ESL > mash && YSSL >mare && kssxp()==1 )return (1);
if(xmas<qmas && LS<mayh && ESL < mash && YSSL <mare && kssxp()==-1)return (-1);
return(0);
}




int buyorsell( )
{
if (maxh() ==1) return (1);
if (maxh() ==-1   ) return (-1);
if (kssxp() ==1 )return(-3);
if ( kssxp() == -1) return(3);
return (0);
}
int kssxp( )
{
double xmas, qmas , qssk , qsss, xskp;
xmas =iMA(NULL,30, D1, D2, MODE_EMA ,PRICE_CLOSE,0);
qmas= iMA(NULL,30, D1, D2, MODE_EMA ,PRICE_CLOSE,1);
qssk= iOpen(NULL,30, 1);
qsss=iClose(NULL,30,1);
xskp= iOpen (NULL,30,0);
if (qssk<qmas && qmas < qsss && xskp > xmas )return (1);
if (qssk>qmas && qmas >qsss && xskp < xmas )return (-1);
}


void CheckForOpen()
{
if (Time == lasttime ) return;
lasttime = Time;
nowbuyorsell = buyorsell();

if (nowbuyorsell ==0) return;
TradeOK();
}
void TradeOK()
{
int error,res;

if (nowbuyorsell == 1)
{
   CloseSell();
{
   
    res=OrderSend(Symbol(),OP_BUY,Lot,Ask,30,0,0,"",MAGICMA,0,Blue);
   
   
    }
    if (res <=0)
    {
    error=GetLastError();
    if(error==134)Print("Received 134 Error after OrderSend() !! ");      // not enough money
    if(error==135) RefreshRates();// prices have changed
    }
    return ;
      
}
   if(nowbuyorsell== -1)
{
    CloseBuy();
   {
   
   res=OrderSend(Symbol(),OP_SELL,Lot,Bid,30,0,0,"",MAGICMA,0,Red);
   
    }
    if (res <=0)
    {
    error=GetLastError();
    if(error==134) Print("Received 134 Error after OrderSend() !! ");      // not enough money
    if(error==135) RefreshRates();// prices have changed
    }
   
    return ;
}
if (nowbuyorsell == -3 && OrdersTotal()>0)CloseSell();
if (nowbuyorsell == 3 && OrdersTotal()>0) CloseBuy();
}

Shenhai 发表于 2010-1-8 08:32

:mlw:
页: [1]
查看完整版本: 系统参数优化测试问题