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

标题: 请教函数问题! [打印本页]

作者: dengwenle    时间: 2007-9-8 12:29:57     标题: 请教函数问题!

假如我想满仓做日的 !

Numeric lots(1);
begin
lots = trunc(A_FreeMargin/MaintenanceMargin) ;

// 开多条件
   IF(condtion1)   
Buy(lots,Close,True);

// 平多条件
   if(condtion2)                 
      {Sell(CurrentContracts,Close,True);
end

在这个代码中   我的思路是 用所有的资金/当前商品所需要的保证金 可能结果是小数 !我就用trunc取整数! 不知道这个函数A_FreeMargin 用法是否正确! 因为 A_XXXX的函数只在图上最后一个Bar有效.
请赐教!

[ 本帖最后由 dengwenle 于 2007-9-8 13:06 编辑 ]
作者: dengwenle    时间: 2007-9-8 13:07:01

刚才发现!lots = trunc(A_FreeMargin/MaintenanceMargin) ;
这句代码有问题?
不知道到底是什么问题?
作者: tradeblazer    时间: 2007-9-8 14:12:46

MaintanceMargin是外汇用的,期货里面需要自行计算占用保证金!
需要用If语句进行判断
  1. If(BarStatus == 2)
  2. {
  3.     lots = A_FreeMargin/(ContractUnit*BigPointValue*Close*MarginRate);
  4. }else
  5. {
  6.     lots = CurrentCapital/(ContractUnit*BigPointValue*Close*MarginRate);
  7. }
复制代码

请先理解公式的运行机制及交易指令的调用机制。
参考公式入门教程!
http://www.tradeblazer.net/forum ... &extra=page%3D1
参考海龟系统的写法:
http://www.tradeblazer.net/forum ... &extra=page%3D1
作者: dengwenle    时间: 2007-9-8 15:20:58

Params
        Numeric lots(3);
、、、、、、、、、、、、、、、、、、、、、、
If(BarStatus == 2)
{
    lots = A_FreeMargin/(ContractUnit*BigPointValue*Close*MarginRate);
}else
{
    lots = CurrentCapital/(ContractUnit*BigPointValue*Close*MarginRate);
}
报错 !

[ 本帖最后由 dengwenle 于 2007-9-8 15:25 编辑 ]
作者: nopain    时间: 2007-9-8 16:14:13

后面的函数MarginRatio写错了。
  1. If(BarStatus == 2)
  2. {
  3.     lots = A_FreeMargin/(ContractUnit*BigPointValue*Close*MarginRatio);
  4. }else
  5. {
  6.     lots = CurrentCapital/(ContractUnit*BigPointValue*Close*MarginRatio);
  7. }
复制代码

作者: dengwenle    时间: 2007-9-8 18:44:17

报错跟那个函数 没有关系!
问题关键在 2个 lots 上!
作者: nopain    时间: 2007-9-8 20:56:07

您应该定义变量来保存lots.参数是不能再被赋值的。




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