本帖最后由 九天 于 2013-1-10 06:06 AM 编辑
我的布局
这次MT5 程序交易参赛者的大多数都是同时交易几个外汇对。
我的程序也是同时交易12个外汇对,将来MT5平台开放股指和期货时,可以改成同时交易12个外汇对,12个股指,12个期货。因为教科书上说,同时交易32个不相关的证卷, 系统风险低,人家基金大机构也有这么做的,叫鸡蛋放在几个筐里。
我喜欢的ABERRATION TRADING SYSTEM,就是同时交易外汇股指和期货,从1980年到2012年,
在稳定性方面比较好,
http://www.hutong9.net/forum.php ... page%3D1&page=1
因为计算机又聪明又勤快,从不知累,而且源码就是一个12次循环语句和把证卷的名字存起来而已,如下。
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
// 说明,这是交易开始前的准备,比如计算MA5, MA8, MA13 等,存起来待用
// 其他一些TA指标,MT5平台也提供子程,直接调用就是。有些交易平台,像Sterling,
// 没有这些TA指标,需要自己建立Black Box, 这也不难,不过比较专业,
// 有时外包或者雇个IT民工,叫基础软件工程师,大陆留学生比较容易得到这种工作。
// 而交易软件的核心关键技术是接口软件,打这个工的交叫接口软件工程师,不知道大陆留学生在国外已经进入这个职位,
// 将来有可能升职成为软件部门主管。
{
Astring[1] = "USDCHF";
Astring[2] = "GBPUSD";
Astring[3] = "EURUSD";
Astring[4] = "USDJPY";
Astring[5] = "USDCAD";
Astring[6] = "AUDUSD";
Astring[7] = "EURGBP";
Astring[8] = "EURAUD";
Astring[9] = "EURCHF";
Astring[10] = "EURJPY";
Astring[11] = "GBPJPY";
Astring[12] = "GBPCHF";
//---
// ExtHandle=iMA(_Symbol,_Period,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE);
// ma5 =iMA(_Symbol,_Period,5, 0,MODE_SMA,PRICE_CLOSE);
// ma8 =iMA(_Symbol,_Period,8, 0,MODE_SMA,PRICE_CLOSE);
// ma13 =iMA(_Symbol,_Period,13,0,MODE_SMA,PRICE_CLOSE);
ExtHandle=iMA(namename,Period1,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE);
ma5 =iMA(namename,Period1,5, 0,MODE_SMA,PRICE_CLOSE);
ma8 =iMA(namename,Period1,8, 0,MODE_SMA,PRICE_CLOSE);
ma13 =iMA(namename,Period1,13,0,MODE_SMA,PRICE_CLOSE);
for(int i=12;i>=0;i--)
{
Ama5 =iMA(Astring,Period1,5, 0,MODE_SMA,PRICE_CLOSE);
Ama8 =iMA(Astring,Period1,8, 0,MODE_SMA,PRICE_CLOSE);
Ama13 =iMA(Astring,Period1,13,0,MODE_SMA,PRICE_CLOSE);
}
if(ExtHandle==INVALID_HANDLE)
{
printf("Error creating MA indicator");
return(-1);
}
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick() //说明,这是根据交易策略进行开仓和平仓。
{
//---
// if(PositionSelect(_Symbol)) CheckForClose();
for(int ibig=12;ibig>=1;ibig--)
/
/说明,这是循环语句,一个一个的外汇对交易,计算机很快,我估计1分钟内就能完成12个外汇对的交易。
//可是参赛委员会嫌我的源码没有水平,没有让我实盘模拟交易,惭愧。
{
if( ibig == 1 ) { namename = "USDCHF";}
if( ibig == 2 ) { namename = "GBPUSD";}
if( ibig == 3 ) { namename = "EURUSD";}
if( ibig == 4 ) { namename = "USDJPY";}
if( ibig == 5 ) { namename = "USDCAD";}
if( ibig == 6 ) { namename = "AUDUSD";}
if( ibig == 7 ) { namename = "EURGBP";}
if( ibig == 8 ) { namename = "EURAUD";}
if( ibig == 9 ) { namename = "EURCHF";}
if( ibig ==10 ) { namename = "EURJPY";}
if( ibig ==11 ) { namename = "GBPJPY";}
if( ibig ==12 ) { namename = "GBPCHF";}
if(PositionSelect(namename))
kaicang();//这是我的建仓子程序,下面说明。
else
pingcang();//这是我的平仓子程序,下面说明。
}
//---
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
//一个循环交易结束了,等等下一个节拍
{
}
//+------------------------------------------------------------------+ |