以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  求助老师修改程序  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=96302)

--  作者:唐方一战
--  发布时间:2016/4/14 20:32:41
--  求助老师修改程序
老师,你好,我的源品种是399905,目标品种是510500,这是我使用的程序,目前映射设定好后,成交价格没错是510500的,但数量却是按399905来计算的,如100W,只下单160股510500左右,我要是想要下单510500,自动计算出15W股左右,请问老师,这如何修改,

万分感谢!

INPUT:M1(0.1,0.1,0.5,0.01),M2(0.12,0.1,0.5,0.01),ss(0,0,100000000,1);//参数值


昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);//昨高
昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);//昨低
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);//昨收
今日开盘价:=Valuewhen(date<>ref(date,1),open);

S1:=max(昨收-昨低,昨高-昨收);//中间变量
S:=max(昨收*0.006,S1);//中间变量

上轨:今日开盘价+M1*S;//求上轨
下轨:今日开盘价-M2*S;//求下轨

手数:=SS;
        
//条件
开仓条件:=high>=上轨 ;//开多条件
平仓条件:=low<=下轨 ;//平仓条件  

//交易系统
IF TIME>090000  AND HOLDING = 0 THEN BEGIN 
开多:=BUY(开仓条件 ,手数,LIMITR,上轨);
开仓日期:=date;
 END
IF   date>开仓日期  AND HOLDING > 0   THEN BEGIN    
平仓:=sell(平仓条件 ,手数,LIMITR,下轨);
 
END
[此贴子已经被作者于2016/4/14 20:33:51编辑过]

--  作者:唐方一战
--  发布时间:2016/4/14 21:54:57
--  
因为现在的开仓价格是正确的,如果引用跨品种函数CALLSTOCK的话,怕不正确,那能不能以上面的程序上面把开仓手数固定下来呢,比如,加一句代码,把手数固定在30000股,谢谢。
--  作者:唐方一战
--  发布时间:2016/4/14 21:59:04
--  
把手数固定下来,会和程序费率设置里的资金冲突吗?谢谢
--  作者:唐方一战
--  发布时间:2016/4/14 22:20:00
--  
补充:开仓按固定手数开,平仓按实际持仓量平,谢谢
--  作者:fly
--  发布时间:2016/4/15 9:16:14
--  

1.开仓手数,可以固定为30000股,修改您的手数就行了

 

2.程序费率设置里的资金,请调的再大些,若资金太小则不能开那么多手。

图表上显示的是费率设置里的资金能开仓的手数最大值、策略里写的开仓手数,中小的那个值

 

3.开仓按固定手数开,平仓按实际持仓量平

开平仓语句这样改写就可以了

   BUY(开仓条件 ,手数,LIMITR,上轨);

   sell(平仓条件 ,HOLDING,LIMITR,下轨);


--  作者:唐方一战
--  发布时间:2016/4/15 9:37:34
--  
老师,是这样修改吗?可是还是不能开仓30000手,还是按源目标品种来计算的,麻烦看一下,谢谢

INPUT:M1(0.1,0.1,0.5,0.01),M2(0.15,0.1,0.5,0.01);//参数值


昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);//昨高
昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);//昨低
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);//昨收
今日开盘价:=Valuewhen(date<>ref(date,1),open);

S1:=max(昨收-昨低,昨高-昨收);//中间变量
S:=max(昨收*0.006,S1);//中间变量

上轨:今日开盘价+M1*S;//求上轨
下轨:今日开盘价-M2*S;//求下轨

        
//条件
开仓条件:=high>=上轨 ;//开多条件
平仓条件:=low<=下轨 ;//平仓条件  

//交易系统
IF TIME>090000  AND HOLDING = 0 THEN BEGIN 
开多:=BUY(开仓条件 ,30000,LIMITR,上轨);
开仓日期:=date;
 END
IF   date>开仓日期  AND HOLDING > 0   THEN BEGIN    
平仓:=sell(平仓条件 ,HOLDING,LIMITR,下轨);
 
END

--  作者:yukizzc
--  发布时间:2016/4/15 10:26:19
--  

你的价格改成marketr吧

开多:=BUY(开仓条件 ,30000,marketr);


--  作者:唐方一战
--  发布时间:2016/4/15 10:30:52
--  
呵,老师,还是不行呢图片点击可在新窗口打开查看
--  作者:yukizzc
--  发布时间:2016/4/15 10:35:29
--  

021-20339087

打我电话


--  作者:唐方一战
--  发布时间:2016/4/15 10:53:56
--  
老师,你神呀,谢谢啦!!!!!!!!!!!!!!