以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 后台程式编写 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=172100) |
|
-- 作者:bill163 -- 发布时间:2019/9/19 13:19:43 -- 后台程式编写 老师好,如下策略需求,帮忙编写,感谢~ 开多条件:买一价格-均价<=0.004并且多头持仓量小于500手; KD:=DYNAINFO( 28)-DYNAINFO( 11)<=0.004 and holding<=500 and holding >0; 开空条件:均价-卖一价格<=0.004并且空头持仓量小于500手; 平多:有多单就挂卖一价 平空:有空的那就挂买一价 //交易系统 buy(开多条件,500-多头持仓量,买一价) buyshort(开空条件,500-空头持仓量,卖一价) sell(平多,多单持仓量,卖一价格) sellshort(平空,空单持仓量,买一价格) //撤单追价系统 保持开多价格是买一,开空价格是卖一 保持平多价格是卖一,平空价格是买一; 谢谢老师! |
|
-- 作者:wenarm -- 发布时间:2019/9/19 13:28:04 -- //撤单追价系统
保持开多价格是买一,开空价格是卖一
保持平多价格是卖一,平空价格是买一;
什么意思?追撤单需要给定条件。 |
|
-- 作者:FireScript -- 发布时间:2019/9/19 13:32:14 -- 需要非常明确的开平条件。你这里的都不是很明确,代码就没办法写的。 比如开仓: 开多条件:买一价格-均价<=0.004并且多头持仓量小于500手; “均价” 这个均价姑且认为是持仓均价。但是如果前面都没有开仓 这个价格就是0 。相当于一个开仓的条件 是需要前面有一个开仓的。这就是个逻辑死循环了。 平多:有多单就挂卖一价 平空:有空的那就挂买一价 这个意思是有持仓就平?那开仓只要成交了 里面就下平仓单了啊? //撤单追价系统 保持开多价格是买一,开空价格是卖一 保持平多价格是卖一,平空价格是买一; 这个撤单没看明白哦。 建议重新整理下思路,你这里没有说明白,就没办法转换成代码的。 |
|
-- 作者:bill163 -- 发布时间:2019/9/19 14:26:26 -- 老师,撤单追价系统我举例说明: 比如现在买一是3.87,卖一是3.90,我要开多挂单3.87(买一) 如果这个时候价格上涨0.01,买一从3.87到了3.88,那需要撤开多单3.87,重新挂3.88 我的策略核心就是买和买都不主动,都等着对手盘砸给我。
|
|
-- 作者:bill163 -- 发布时间:2019/9/19 14:30:52 -- 老师, 问题2解释:均价请用DYNAINFO( 11) 问题3解释:平仓条件就是有多单就挂卖一价,有空单就挂买一价。 比如3.87(买一)多单成交了,就立即挂3.88卖一价格平,买卖都等对方砸给我,不主动成交。
|
|
-- 作者:bill163 -- 发布时间:2019/9/19 14:41:22 -- 老师,图标程式化没有撤单追价,下面的编写代码供参考。 KD:=DYNAINFO( 28)-DYNAINFO( 11)>=0.004 and holding<=500 and holding >0; KK:=DYNAINFO( 34)-DYNAINFO( 28)>=0.004 and holding>=-500 and holding<0 ; buy(KD,500-HOLDING,limitr,DYNAINFO( 28)); buyshort(KK,500-HOLDING,limitr,DYNAINFO( 34)); SELL(HOLDING >0,HOLDING ,limitr,DYNAINFO( 34)); SELLSHORT(HOLDING <0 ,HOLDING,limitr,DYNAINFO( 28)); [此贴子已经被作者于2019/9/19 14:42:06编辑过]
|
|
-- 作者:wenarm -- 发布时间:2019/9/19 14:58:26 --
这个你太理想化了,行情活跃时跳动比较快时,委托刚发出去,就要发撤单指令。 |
|
-- 作者:FireScript -- 发布时间:2019/9/19 15:14:47 -- 这是根据你图表代码直接修改,加上了追撤单代码: KD:=DYNAINFO( 28)-DYNAINFO( 11)>=0.004 and TBUYHOLDINGEX(\'\',\'\',1)<=500;//开多 KK:=DYNAINFO( 34)-DYNAINFO( 28)>=0.004 and TSELLHOLDINGEX(\'\',\'\',1)>=500;//开空 tbuy(KD,500-TBUYHOLDINGEX(\'\',\'\',1),LMT,DYNAINFO( 28));//开多 tbuyshort(KK,500-TSELLHOLDINGEX(\'\',\'\',1),LMT,DYNAINFO( 34));//开空 TSELL(TBUYHOLDINGEX(\'\',\'\',1) >0,TBUYHOLDINGEX(\'\',\'\',1) ,LMT,DYNAINFO( 34));//这2个平仓,需要明确下,可能会导致刚开仓就平仓。 TSELLSHORT(TSELLHOLDINGEX(\'\',\'\',1) >0 ,TSELLHOLDINGEX(\'\',\'\',1),LMT,DYNAINFO( 28)); if TGLOBALSUBMITEX(1,\'\',\'\' ,1)>0 and DYNAINFO( 28)<>TORDERPRICE(1,1) then //如果挂单价不等于买一,撤单 按照买一挂单。 begin TCANCEL(1,1); //撤多头单 tbuy(1,500-TBUYHOLDINGEX(\'\',\'\',1),LMT,DYNAINFO( 28)); end if TGLOBALSUBMITEX(3,\'\',\'\' ,1)>0 and DYNAINFO( 34)<>TORDERPRICE(3,1) then begin TCANCEL(1,3);//撤空头单 tbuyshort(1,500-TSELLHOLDINGEX(\'\',\'\',1),LMT,DYNAINFO( 34)); end 供参考。先用模拟账号测试下。
|
|
-- 作者:bill163 -- 发布时间:2019/9/19 15:42:13 -- 老师好,看起来没错。 1.平仓的也一样要写入撤单系统,保持平多是在卖一,平空是在买一。 2.这2个平仓,需要明确下,可能会导致刚开仓就平仓。 这个只要平多是卖一价委托,平空是买一价委托就行。 目的就是开多成交后立即挂卖一平仓,赚取1个价位。
|
|
-- 作者:wenarm -- 发布时间:2019/9/19 15:46:32 -- 上面的代码建议你自己学习使用。 你撤单需求不符合实际交易情况,太过理想化,需要考虑撤单造成的时间间隔。柜台之间的交互必须预留时间。 |