设为首页收藏本站

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

减仓到底如何写,头都大了。 [复制链接]

Rank: 2

精华
0
UID
267738
积分
94
帖子
68
主题
18
阅读权限
30
注册时间
2018-7-21
最后登录
2020-4-9
跳转到指定楼层
1#
发表于 2018-10-14 13:01:17 |只看该作者 |倒序浏览
本帖最后由 ad434005 于 2018-10-14 13:03 编辑

策略:初始仓3手,达到条件1减仓1手,达到条件2平仓。

比如:
Vars
Numeric lots(3);
Begin
if(MarketPosition==0)
{
if(high>high[1])buy(lots,open);
if(low<low[1])sellshort(lots,open);
}
if(MarketPosition!=0)
{
if(condition1)buytocover(1,open);
if(condition2)sell(1,open);
lots==2;
}
if(abs(currentcontracts)==2)
{
if(condition3 and MarketPosition==-1)buytocover(lots,open);
if(condition4 and marketposition==1)sell(lots,open);
lots==3;
}
end
请教这个对不对?

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2018-10-15 11:21:35 |只看该作者
本帖最后由 小米 于 2018-10-15 11:22 编辑

lots这样使用不太对的吧。。
  1. params
  2.       numeric lots(3);
  3. begin
  4.       if(marketposition==0)
  5.       {
  6.             if(condition1)
  7.                      buy(lots,open);
  8.             else if( condition2)
  9.                      sellshort(lots,open);
  10.       }
  11.       if(marketposition==1)
  12.       {
  13.              if(condition2)
  14.                    sell(1,open);
  15.              if(condition4)
  16.                    sell(lots-1,open);
  17.      }
  18.      if(marketposition==-1)
  19.      {
  20.            if(condtion1)
  21.                   buytocover(1,open);
  22.            if(condition3)
  23.                   buytocover(lots-1,open);
  24.       }
  25. end
复制代码

使用道具 举报

Rank: 2

精华
0
UID
267738
积分
94
帖子
68
主题
18
阅读权限
30
注册时间
2018-7-21
最后登录
2020-4-9
3#
发表于 2018-10-17 22:20:18 |只看该作者
小米 发表于 2018-10-15 11:21
lots这样使用不太对的吧。。

版主,感谢你的代码。
为什么第一块用if 和 else if
下面段都是只用if 和 if  呢。

使用道具 举报

Rank: 2

精华
0
UID
267738
积分
94
帖子
68
主题
18
阅读权限
30
注册时间
2018-7-21
最后登录
2020-4-9
4#
发表于 2018-10-17 22:51:48 |只看该作者
小米 发表于 2018-10-15 11:21
lots这样使用不太对的吧。。

你的代码和思路没有问题,我也觉得。可是为什么我照着写出来,根本就没法执行呢。不是一个信号都没有,就是重复的开平仓。
试了好几遍都是这样。这是为什么呢?逻辑有问题吗?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
5#
发表于 2018-10-18 09:18:16 |只看该作者
本帖最后由 小米 于 2018-10-18 09:29 编辑
ad434005 发表于 2018-10-17 22:51
你的代码和思路没有问题,我也觉得。可是为什么我照着写出来,根本就没法执行呢。不是一个信号都没有,就 ...


不要光看逻辑,代码条件上有进行排查了吗?条件是否唯一且稳定呢?
我我随便找了一个条件代入试了一下,结果貌似没有什么问题啊。。
  1. params
  2.         numeric lots(3);
  3.         Numeric FastLength(5);
  4.         Numeric SlowLength(20);
  5. Vars
  6.         NumericSeries AvgValue1;
  7.         NumericSeries AvgValue2;
  8.         Bool con1;
  9.         bool con2;
  10. Begin
  11.         AvgValue1 = AverageFC(Close,FastLength);
  12.         AvgValue2 = AverageFC(Close,SlowLength);
  13.         con1 = AvgValue1[1] > AvgValue2[1];
  14.         con2 = AvgValue1[1] < AvgValue2[1];

  15.       if(marketposition==0)
  16.       {
  17.             if(con1)
  18.                      buy(lots,open);
  19.             else if( con2)
  20.                      sellshort(lots,open);
  21.       }
  22.       if(marketposition==1)
  23.       {
  24.              if(BarsSinceEntry==4)
  25.                                  sell(1,open);
  26.              if(BarsSinceEntry>=10)
  27.                    sell(lots-1,open);
  28.      }
  29.      if(marketposition==-1)
  30.      {
  31.            if(BarsSinceEntry==4)
  32.                   buytocover(1,open);
  33.            if(BarsSinceEntry>=10)
  34.                   buytocover(lots-1,open);
  35.       }
  36. end
复制代码
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

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

bottom

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

GMT+8, 2024-5-4 22:53

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部