设为首页收藏本站

 找回密码
 注册
查看: 2275|回复: 1
打印 上一主题 下一主题

做跨期套利最后很多单腿成交,重复成交,求解! [复制链接]

Rank: 1

精华
0
UID
152558
积分
4
帖子
1
主题
1
阅读权限
10
注册时间
2012-12-20
最后登录
2015-7-28
跳转到指定楼层
1#
发表于 2015-7-27 14:48:37 |只看该作者 |倒序浏览
如题,设置的都是1手的套利,最后变成这样。经常说信号消失之类。
代码如下:
Params
Numeric uplimit(360);
Numeric dnlimit(330);
Numeric stoploss(20);
Numeric getprofit(40);
Numeric movestopstart(10);//移动止损起始位置
Numeric movestop(20);//移动止损

Vars
Numeric minpoint;
NumericSeries spread;
NumericSeries status;
NumericSeries HigherAfterEntry;
NumericSeries LowerAfterEntry;
Numeric MyPrice;       

Begin

minpoint=minmove*PriceScale;
spread=Data0.Close-Data1.Close;


If(BarsSinceEntry == 1)
{
HigherAfterEntry = spread;
LowerAfterEntry = spread;
}
else
{
HigherAfterEntry = max(HigherAfterEntry[1],spread[1]);
LowerAfterEntry = min(LowerAfterEntry[1],spread[1]);
}


If(status==0 && spread>=uplimit && spread[1]<uplimit)
{
data1.Buy(1, Close+2*minpoint);
data0.SellShort(1,Close-2*minpoint);
status=1;
}

If(status==1 && spread<=uplimit-getprofit  )
{
data1.sell(1,Close-2*minpoint);
data0.BuyToCover(1,Close+2*minpoint);
status=0;
}

//移动止损
If(status==1 && LowerAfterEntry<=uplimit-movestopstart && BarsSinceEntry>1)
{
myprice=LowerAfterEntry+movestop;
if(spread>myprice)
{
data1.sell(1,Close-2*minpoint);
data0.BuyToCover(1,Close+2*minpoint);
status=0;
}
}

If(status==1 && spread>=uplimit+stoploss  && BarsSinceEntry>1)
{
data1.sell(1,Close-2*minpoint);
data0.BuyToCover(1,Close+2*minpoint);
status=0;
}


If(status==0 && spread<=dnlimit && spread[1]>dnlimit)
{
data1.SellShort(1,Close-2*minpoint);
data0.Buy(1, Close+2*minpoint);
status=2;
}

If(status==2 && spread>=dnlimit+getprofit)
{
data1.BuyToCover(1,Close+2*minpoint);
data0.Sell(1, Close-2*minpoint);
status=0;
}

//移动止损
If(status==2 && HigherAfterEntry>=Dnlimit+movestopstart && BarsSinceEntry>1)
{
myprice=HigherAfterEntry-movestop;
if(spread<myprice)
{
data1.BuyToCover(1,Close-2*minpoint);
data0.Sell(1, Close+2*minpoint);
status=0;
}
}

If(status==2 && spread<=dnlimit-stoploss && BarsSinceEntry>1)
{
data1.BuyToCover(1,Close-2*minpoint);
data0.Sell(1,Close+2*minpoint);
status=0;
}

PlotNumeric("价差",spread);

PlotNumeric("1",HigherAfterEntry);
PlotNumeric("2",LowerAfterEntry);
End
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 3Rank: 3

精华
0
UID
121070
积分
133
帖子
88
主题
35
阅读权限
40
注册时间
2013-7-8
最后登录
2023-8-18
2#
发表于 2015-8-22 23:45:32 |只看该作者
不能用Close做交易,得用Open做交易

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-16 04:07

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部