开拓者期货期权程序化系统交易论坛

标题: 求助自动交易的开仓量的编写? [打印本页]

作者: 前线小卒    时间: 2007-9-26 17:48:48     标题: 求助自动交易的开仓量的编写?

TB开仓系统里是N手,我想有没有办法开仓成指定风险度?比如开到40%的风险度,超过50%止损。
作者: tradeblazer    时间: 2007-9-26 20:31:24

原帖由 前线小卒 于 2007-9-26 17:48 发表
TB开仓系统里是N手,我想有没有办法开仓成指定风险度?比如开到40%的风险度,超过50%止损。


当然可以,根据您的条件可以写出很灵活的头寸控制代码。
作者: 前线小卒    时间: 2007-9-27 07:34:06

(总资金/商品开仓价)40%风险仓位怎么表示?
作者: nopain    时间: 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 编辑 ]
作者: 前线小卒    时间: 2007-9-27 09:25:11

斑竹能把上面的语法一句句用中文注释吗?让所有坛友都能看懂。
作者: nopain    时间: 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 编辑 ]
作者: 前线小卒    时间: 2007-9-27 10:20:02

我用这个资金管理怎么80万只能做强麦4手啊?
作者: 前线小卒    时间: 2007-9-27 10:22:23

TotalEquity = CurrentCapital()+ Abs(CurrentContracts()*Close*ContractUnit()*BigPointValue()*MarginRatio());

UseMargin = Close*ContractUnit*BigPointValue*MarginRatio;

EntryLots = IntPart(TotalEquity*0.4/UseMargin);
    if (Condition2)
        {
                Buy(EntryLots,Close);
        }
End

[ 本帖最后由 nopain 于 2007-9-27 10:29 编辑 ]
作者: nopain    时间: 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 编辑 ]
作者: 前线小卒    时间: 2007-9-27 11:18:00

好了,谢谢斑竹的帮助。原来交易设置没设置。
作者: 前线小卒    时间: 2007-9-27 12:19:05

开仓
if (Condition2)
        {
                Buy(EntryLots,Close);
        }
平仓
  if (Condition1)
        {
                Sell;
        }
那到50%止损怎么编?
作者: nopain    时间: 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. }
复制代码

作者: linqian    时间: 2010-7-3 18:15:08

原帖由 nopain 于 2007-9-27 09:44 发表
首先您需要定义3个变量,TotalEquity(计算当时的总资产),UseMargin(计算一手需要的保证金) ,EntryLots(根据40%的资产比例能开多少仓).

TotalEquity = CurrentCapital()+ Abs(CurrentContracts()*Close*ContractUnit() ...



看完后就明白了,非常感谢老大!




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2