设为首页收藏本站

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

Buytocover封装在用户函数下绝对有问题,请测试。 [复制链接]

Rank: 5Rank: 5

精华
0
UID
21133
积分
852
帖子
112
主题
25
阅读权限
60
注册时间
2010-12-8
最后登录
2016-3-23
跳转到指定楼层
1#
发表于 2011-4-27 08:33:17 |只看该作者 |倒序浏览

我把平仓策略做成用户函数调用,如图光标处所示,COMMENTARY显示已经执行了止陨平仓段指令,但是图上却没有平仓信号出现,而且MARKETPOSITON仍然为-1,Buytocover没有被执行。
经反复测试,sell指令没问题。
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
2#
发表于 2011-4-27 11:22:05 |只看该作者
这个已经测试过,没有问题。
请提供您的程序代码,方便进行问题跟踪

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
21133
积分
852
帖子
112
主题
25
阅读权限
60
注册时间
2010-12-8
最后登录
2016-3-23
3#
发表于 2011-4-27 13:12:53 |只看该作者
// 简称: TESTS
// 名称:
// 类别: 公式应用
// 类型: 用户应用
//------------------------------------------------------------------------
Params
        Numeric Stop(10);
Vars

Begin


If(time==0.09&&MarketPosition==0)
{Buy(1,Close);SetGlobalVar(21,CLOSE);SetGlobalVar(22,CurrentBar);SetGlobalVar(20,1);}


If(Time==0.1330&&MarketPosition==0)
{SellShort(1,Close);SetGlobalVar(25,close);SetGlobalVar(26,CurrentBar);SetGlobalVar(20,-1);}


I_StopLoss(Stop);

End





下面是用户函数
// 简称: I_StopLoss
// 名称: 止陨平仓
// 类别: 用户函数
// 类型: 用户函数
// 输出: 布尔型
//------------------------------------------------------------------------
Params
   Numeric Stop(20);

Vars
   Numeric STT;
   Numeric Dots(1);
   Numeric Min_price;
   Numeric Min_value;
   Numeric Offset;
   String DKX_("DKX_");
   String Strkey_Stop;
   Bool Stop_feedback;
   
Begin
   
Strkey_Stop=Symbol+"Stop";

Min_price=MinMove*PriceScale*BigPointValue;
Min_value=MinMove*PriceScale*ContractUnit*BigPointValue;
Offset=MinMove*PriceScale*BigPointValue*Dots;

If(MarketPosition==-1 && GetGlobalVar(26)!=CurrentBar)
    {STT=GetGlobalVar(25)+Min_price*Abs(Stop);Commentary("STOP="+TEXT(STT));
         If(High>=STT)
           {BuyToCover(CurrentContracts,STT+Offset);Stop_feedback=True;SetGlobalVar(27,STT+Offset);SetGlobalVar(28,currentbar);SetGlobalVar(20,0);Commentary("空头止陨平仓");SetTBProfileString(DKX_+"Breakout",Strkey_Stop,InvalidString);}
         Else
         SetTBProfileString(DKX_+"Breakout",Strkey_Stop,Text(STT+Offset));  
        }
       

If(MarketPosition==1 && GetGlobalVar(22)!=CurrentBar)
    {STT=GetGlobalVar(21)-Min_price*Abs(Stop);
         If(Low<=STT)
           {Sell(CurrentContracts,STT-Offset);Stop_feedback=True;SetGlobalVar(23,STT-Offset);SetGlobalVar(24,currentbar);SetGlobalVar(20,0);Commentary("多头止陨平仓");SetTBProfileString(DKX_+"Breakout",Strkey_Stop,InvalidString); }
         Else
         SetTBProfileString(DKX_+"Breakout",Strkey_Stop,Text(STT-Offset));  
        }

Return Stop_feedback;
       
End

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
4#
发表于 2011-4-27 17:04:23 |只看该作者
BuyToCover(Abs(CurrentContracts),.....);

这个是负数,另外写代码不要挤在一行,看起来太费劲了

使用道具 举报

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

bottom

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

GMT+8, 2024-5-17 13:14

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部