设为首页收藏本站

 找回密码
 注册
楼主: 前线小卒
打印 上一主题 下一主题

求助自动交易的开仓量的编写? [复制链接]

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
1#
发表于 2007-9-27 09:20:38 |显示全部楼层
总资金:TotalEquity = CurrentCapital()+ Abs(CurrentContracts()*Close*ContractUnit()*BigPointValue()*MarginRatio());

一手仓所需的保证金:UseMargin = Close*ContractUnit*BigPointValue*MarginRatio;

能开的仓位:EntryLots = IntPart(TotalEquity*0.4/UseMargin);

[ 本帖最后由 nopain 于 2007-9-27 10:29 编辑 ]

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
2#
发表于 2007-9-27 09:44:05 |显示全部楼层
首先您需要定义3个变量,TotalEquity(计算当时的总资产),UseMargin(计算一手需要的保证金) ,EntryLots(根据40%的资产比例能开多少仓).

TotalEquity = CurrentCapital()+ Abs(CurrentContracts()*Close*ContractUnit()*BigPointValue()*MarginRatio());
// 总资产 = 当前的可用资金+占用的保证金

UseMargin = Close*ContractUnit*BigPointValue*MarginRatio;
// 保证金 = 收盘价*合约单位(1手多少吨?)*每个点的价值(商品期货一般是1,沪深300股指期货是300)*保证金比率

EntryLots = IntPart(TotalEquity*0.4/UseMargin);
// 可开仓手数 = 总资产*0.4/每手保证金 ,然后再取整

[ 本帖最后由 nopain 于 2007-9-27 10:29 编辑 ]

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
3#
发表于 2007-9-27 10:32:40 |显示全部楼层
你是不是那里设置还有问题。我这里都可以开165手。看看您的交易设置?
测试代码:
  1. Vars
  2.         Numeric TotalEquity;
  3.         Numeric UseMargin;
  4.         Numeric EntryLots;
  5. Begin
  6.         TotalEquity = CurrentCapital()+ Abs(CurrentContracts()*Close*ContractUnit()*BigPointValue()*MarginRatio());
  7.         UseMargin = Close*ContractUnit*BigPointValue*MarginRatio;
  8.         EntryLots = IntPart(TotalEquity*0.4/UseMargin);
  9.         if (Close > Close[1] && Close > Open && Close > Close[2] && Open > Close[1])
  10.         {
  11.                 Buy(EntryLots,Close);
  12.         }
  13. End
复制代码

[ 本帖最后由 nopain 于 2007-9-27 10:33 编辑 ]

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
4#
发表于 2007-9-27 12:38:10 |显示全部楼层
您的50%止损是指保证金大于总资产的一半时即平仓么?
如果是这样,大致代码如下:
  1. CurMargin = Abs(CurrentContracts()*Close*ContractUnit()*BigPointValue()*MarginRatio());
  2. // 当前占用的保证金
  3. TotalEquity = CurrentCapital()+ CurMargin;
  4. // 总资产

  5. If(CurMargin*2 > TotalEquity)
  6. {
  7.     If(MarketPosition == 1)
  8.     {
  9.         Sell;
  10.     }else if(MarketPosition == -1)
  11.     {
  12.          BuyToCover;
  13.     }
  14. }
复制代码

使用道具 举报

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

bottom

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

GMT+8, 2024-5-12 14:00

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部