请教头寸管理的编程。图标程序化操作股指连续;头寸管理计划:1、在满足开仓条件时、账户可用余额15万可以操作1手,30万可以操作2手,以此类推;2、上一次平仓盈利时,本次开仓按照第一条设定的金额对应开仓手数,比上一次开仓数增加一手,最高可以达到满仓(即类似于反等价鞅策略);相反,上一次平仓亏损时,则本次开仓手数比上一次减少一手,最低保持一手的基本开仓量。以上如何编程,谢谢指教。
1,图表程序化建议用户不要去与真实账户做交互,这样会导致历史信号的偏差
2,另外您初始资金15w,怎么去实现加减仓的操作?先把逻辑理清楚,谢谢
老师:
我在编程中遇到了这个问题。现在源代码的开仓手数规定为:手数=“SS”,SS(1,1,100,1);我希望以后在程序化交易中能实现仓位的自动管理,也即在根据我在上面描述的两条规则进行加减仓。现在每手股指开仓保证金是9万,我投入100万,以每15万的资金开一手,100万最多开6手。请您指教,谢谢。
老师:您刚才讲到的“
图表程序化建议用户不要去与真实账户做交互,这样会导致历史信号的偏差”,这是什么意思?我们自编程序,实现自动交易,这个程序里当然的也就包括了对仓位的设定,图标上也就忠实的反映我们设计的情形,图标程序化自动交易也就是在图标上出现了信号后自动下单,是这样吗?
1,是的,先出信号,然后真实账户跟着走。新用户要了解下图表的虚拟理论,在编程初级教程里是有的
老师:辛苦了,谢谢。
1、在上面的编程里,似乎还是缺少了“资金余额每达到15万才可以开一手”的表达,您看呢?我现在是100万投入,假设我的系统是一个稳定的正预期系统,将来资金会逐步增加,我计划始终按照“每增加15万、且满足开仓条件”则以这个仓位管理完成交易。
2、此外,我是做双向交易,不仅只有开多和平多。
3、还有,我的系统就是按照金字塔编程模板开发的,关于“手数”的设定就是模板里的“手数=SS”,我现在简单的设定SS为1;这里是请您帮助按照我加仓的想法编写'手数'的源代码。所以,请您明确告诉我,上述公式如何成为“手数”代入我的“交易条件”和“交易系统”。
谢谢了。
进一步解释我刚才的意思,举例说明:我的源代码中部分如下:
手数:=SS;
variable:SS=1;
if NUMPROFIT(1)>0 and SS<6 then SS:=SS+1;
if NUMPROFIT(1)<0 and SS>0 then SS:=SS-1;
//交易系统:
开多:buy(开多条件 and holding=0, 手数,limitr,多头开仓价);
平多:sell((多盈条件 OR 多损条件) and holding>0,手数,limitr,C);
开空:buyshort(开空条件 and holding=0,手数,limitr,空头开仓价);
平空:sellshort((空损条件 OR 空盈条件) and holding<0, 手数,limitr,C);
我直接将公式代入我的源代码,应用于图时系统提示“编译错误,变量名SS重复”。
我这样写好像是可以代进去了:
variable:手数=1;
if NUMPROFIT(1)>0 and 手数<6 then 手数:=手数+1;
if NUMPROFIT(1)<0 and 手数>0 then 手数:=手数-1;
每15万开仓一手,在交易费用里修改设置保证金比例就可以了。
您看,是这样吗?
老师好!经过测试发现,好像还有一个问题:因为写的是
if NUMPROFIT(1)>0 and 手数<6 then 手数:=手数+1,则当资金不足以再增加一手时,则图表上不出现交易信号、也就是没有实现交易;所以,还是要清楚的表达,当资金满足增加时,手数=手数+1;当资金不能满足再增加一手时,以上次开仓手数开仓。请老师帮助,谢谢!