查看: 5578|回复: 8
打印 上一主题 下一主题

[公式] 一个跨周期的交易代码

[复制链接]
跳转到指定楼层
1
发表于 2012-7-22 17:42:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1,取30分钟MACD,交叉向上时,只做多,交叉向下时,只做空。
2,短线趋势交叉向上,做多。
2.1,最高价小于5个周期均价,且短线趋势向下,平多。
3,短线趋势交叉向下,做空。
3.1,最低价大于5个周期均价,且短线趋势向上,平空。
(交易使用需要修改)


Params         
Numeric TradeUint(1);//下单手数
Numeric pctime(0.1455);//日内平仓时间
Vars               
  Numeric pmacd;
  NumericArray arr1;
  Numeric pdi;
  Numeric mdi;
  NumericSeries var1;
  NumericSeries var2;
  NumericSeries bs1;
  NumericSeries bs2;
  NumericSeries bs3;
  NumericSeries ma5;
  Bool duo(False);
  Bool kong(False);
  Bool pduo(False);
  Bool pkong(False);
Begin               
ma5=AverageFC(close,5);
arr1=HisData(Enum_Data_Close,Enum_Period_Min30);
pmacd=iMACD(arr1,pdi,mdi);

var1=(2*Close+High+Low)/4;
var2=XAverage(XAverage(XAverage(var1,4),4),4);
bs1=(var2-var2[1])/var2[1]*100;
bs2=AverageFC(bs1,3);
bs3=AverageFC(bs1,1);
print("pdi,mdi,bs2,bs3:"+Text(pdi)+" "+Text(mdi)+" "+Text(bs2)+" "+Text(bs3) );
if (pdi>mdi and bs3>bs2)
   duo=true;
if (pdi<mdi and bs3<bs2)
   kong=true;
if (High<ma5 and bs3<bs2)
   pduo=true;
if (Low>ma5 and bs3>bs2)
   pkong=true;

  if (CurrentTime>=pctime )
    {
    if (MarketPosition==1)
          Sell(0,Q_AskPrice-MinMove*PriceScale*2);
    if (MarketPosition==-1)  
          BuyToCover(0,Q_BidPrice+MinMove*PriceScale*2);  
      print("到达指定时间或到达止损价,全平仓!");
    };   



if (pduo and MarketPosition==1)
   {
           Sell(TradeUint,Close);
        Print("平多:"+Text(Close));
   };   
if (pkong and MarketPosition==-1)
   {
           BuyToCover(TradeUint,Close);
        Print("平空:"+Text(Close));
   };      
if (duo and MarketPosition!=1 and CurrentTime<0.1445)
   {
           Buy(TradeUint,Close);
        Print("多头买入:"+Text(Close));
   };
if (kong and MarketPosition!=-1 and CurrentTime<0.1445)
   {
           SellShort(TradeUint,Close);
        Print("空头卖出:"+Text(Close));
   };

End

测试效果图:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册入住  

x





推荐
 楼主| 发表于 2012-8-4 15:48:23 | 只看该作者
满盘红 发表于 2012-8-2 23:28
跨周期是典型的未来函数,回测过去的数据是非常漂亮的,因为每一个30分钟收盘数据都是确定的,而实际运行的 ...

本案中没有用CROSS,是用的大于小于,是CROSS过的
回复 支持 1 反对 0

使用道具 举报

2
发表于 2012-7-23 08:10:55 | 只看该作者
{:soso_e100:}
3
发表于 2012-7-24 10:19:05 | 只看该作者
{:soso_e102:}
4
发表于 2012-7-24 20:42:00 | 只看该作者
{:soso_e179:}
5
发表于 2012-8-2 23:28:45 | 只看该作者
跨周期是典型的未来函数,回测过去的数据是非常漂亮的,因为每一个30分钟收盘数据都是确定的,而实际运行的时候,30分钟的数据是不断变化的,因此一定会出现信号的闪烁飘移的问题!解决的办法是选择上一个30分钟的收盘数据,本案中要选择“上一个”30分钟MACD,交叉向上时,只做多,交叉向下时,只做空。
6
 楼主| 发表于 2012-8-4 15:46:16 | 只看该作者
经过这几天的行情,变化如下:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册入住  

x
8
发表于 2013-7-26 11:26:48 | 只看该作者
{:soso_e179:}
9
发表于 2013-9-12 01:10:57 | 只看该作者
学习中学习中学习中学习中
您需要登录后才可以回帖 登录 | 注册入住  

本版积分规则

易家网  ©2015-2023  郑州期米信息技术有限公司版权所有  豫公网安备 41010502005136号 豫ICP备16010300号