以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- K线模式下,同时出现开仓和平仓信号的处理 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=64645) |
-- 作者:fang2627 -- 发布时间:2014/5/5 14:59:56 -- K线模式下,同时出现开仓和平仓信号的处理 Hi,版主好,在一根K线上先是出现开仓信号,紧接着同一根k线又出现平仓信号,这种情况下希望程序不操作,该如何设置?(逐K线计算下的,走完一根K线后方执行程序) INPUT:M(20,5,500,30); INPUT:N(2,0.1,10,1); INPUT:X(0.2,0.2,10,0.2); MID : MA(CLOSE,M); UPPER: MID + N*STD(CLOSE,M); LOWER: MID - N*STD(CLOSE,M); 多:=ALL(C>=O+15*X,2) AND ALL(O>=MID,2); 空:=ALL(C<=O-15*X,2) AND ALL(O<=MID,2); if 多 then begin sellshort(holding<0, 0, limit,CLOSE); buy(holding=0 AND TIME<150100, 0,limit,CLOSE); end HH:=HHV(H,BARSLAST(HOLDING<=0)); 多止损1:=HH<Enterprice*1.005 AND C<=HH*0.995,LINETHICK0; if 多止损1 then sell(holding>0, 0, limit,CLOSE); if 空 then begin sell(holding>0, 0, limit,CLOSE); buyshort(holding=0 AND TIME<150100, 0,limit,CLOSE); end LL:=LLV(L,BARSLAST(HOLDING>=0)); 空止损1:=LL>Enterprice*0.995 AND C>=LL*1.005 ,LINETHICK0; |
-- 作者:jinzhe -- 发布时间:2014/5/5 15:03:03 -- 不希望同根k线就平仓的,那么在平仓条件里面加上 enterbars>0,开平都要加 还有限价下单limit要改成了limitr |
-- 作者:fang2627 -- 发布时间:2014/5/5 15:25:59 -- 我原本的意图是同一根K线先出现开仓,后出现平仓信号时,希望程序不做任何操作。 应该在开仓条件中使用exitbars>0吗,
|
-- 作者:jinzhe -- 发布时间:2014/5/5 15:28:37 -- 那是坐不到的,出了信号一定是会下单的,如果不希望同根k线就平仓掉,那么就要让平仓出现在下一个周期
if 空 then begin
sell(holding>0, 0, limit,CLOSE);
buyshort(holding=0 AND TIME<150100, 0,limit,CLOSE);
end
这样的改成 if ref(空,1) then sell........; if 空 then buyshort.......; |
-- 作者:fang2627 -- 发布时间:2014/5/6 8:01:18 -- jinzhe版主好,再多问一句,既然程序出信号一定会下单的话,而且开仓和平仓出现在一个K线的情况下,程序会执行开仓单的(昨天实盘时也是这样开单的),倘若我想在同根K线平仓,程序应该如何修改? |
-- 作者:jinzhe -- 发布时间:2014/5/6 8:55:59 -- 意思是同根k线出现了开平两个信号,但是你的就处理了一个开仓信号,没有处理平仓信号? 贴下单日志 |
-- 作者:fang2627 -- 发布时间:2014/5/6 9:04:52 -- 2014-05-05 09:25:39.593 2014.05.05 09:25:39【图表】框架:Technic 触发下单 BUYSHORT 品种 IF00 下单K线 2014.05.05 09:25:00 公式:nextopen 窗格ID:0 代码行:26 2014-05-05 09:25:39.640 【图表】模型下单 3 2014-05-05 09:25:39.640 【图表】下单系数调整后 手数:3 2014-05-05 09:25:39.640 【图表】至队列下单 2014-05-05 09:25:39.640 2014.05.05 09:25:39【图表】框架:Technic 触发下单 SELLSHORT 品种 IF00 下单K线 2014.05.05 09:25:00 公式:nextopen 窗格ID:0 代码行:36 2014-05-05 09:25:39.640 【图表】模型下单 3 2014-05-05 09:25:39.640 【图表】下单系数调整后 手数:3 2014-05-05 09:25:39.640 【图表】实际持仓 0 2014-05-05 09:25:39.640 【图表】IF00 运行完毕 2014-05-05 09:25:39.640 【队列】当前队列准备处理数据:1条 2014-05-05 09:25:39.640 【队列】发送下单指令 2014-05-05 09:25:39.656 【下单】IF05 价0.000000 量3 买卖1 类型1 开平0 账户41005096 Formula 1 2014-05-05 09:25:39.656 【下单】确认报单已发送 ID=-435681637 RefID = 5 2014-05-05 09:25:39.656 【指令】收到回报指令 ID = -435681637 RefID = 5 2014-05-05 09:25:39.687 【回报】41005096 : IF1405 - 已报单 3 价格:0.0 开 卖 2014-05-05 09:25:39.765 【指令】收到回报指令 ID = -435681637 RefID = 5 2014-05-05 09:25:39.843 【指令】收到回报指令 ID = -435681637 RefID = 5 2014-05-05 09:25:39.843 【指令】收到成交回报指令 REFID = 5 2014-05-05 09:25:39.859 【指令】收到回报指令 ID = -435681637 RefID = 5 2014-05-05 09:25:39.968 【指令】收到成交回报指令 REFID = 5 2014-05-05 09:25:39.968 【指令】收到回报指令 ID = -435681637 RefID = 5 2014-05-05 09:25:40.187 【指令】收到成交回报指令 REFID = 5 2014-05-05 09:25:40.265 【回报】41005096 : IF1405 - 已成交 1 价格:2146.4 开 卖 2014-05-05 09:25:40.296 【回报】41005096 : IF1405 - 已成交 1 价格:2146.4 开 卖 2014-05-05 09:25:40.468 【回报】41005096 : IF1405 - 已成交 1 价格:2146.4 开 卖 2014-05-05 09:26:02.109 【下单】IF05 价2146.199951 量3 买卖0 类型0 开平1 账户41005096 Formula 0 2014-05-05 09:26:02.109 【下单】确认报单已发送 ID=-435681636 RefID = 6 2014-05-05 09:26:02.171 【指令】收到回报指令 ID = -435681636 RefID = 6 2014-05-05 09:26:02.187 【回报】41005096 : IF1405 - 已报单 3 价格:2146.2 平 买 2014-05-05 09:26:02.312 【指令】收到回报指令 ID = -435681636 RefID = 6 2014-05-05 09:26:02.312 【指令】收到回报指令 ID = -435681636 RefID = 6 2014-05-05 09:26:02.343 【指令】收到成交回报指令 REFID = 6 2014-05-05 09:26:02.343 【回报】41005096 : IF1405 - 已成交 3 价格:2146.2 平 买 最后那个2146.2的平单信息,是我手动平仓的记录
|
-- 作者:jinzhe -- 发布时间:2014/5/6 9:09:03 -- 因为当前没有持仓导致发送的平仓信号没有下单 所以你要在代码里面加上orederqueue
if 空 then begin
sell(holding>0, 0, limit,CLOSE),orderqueue;
buyshort(holding=0 AND TIME<150100, 0,limit,CLOSE),orderqueue;
end
|
-- 作者:fang2627 -- 发布时间:2014/5/6 9:23:31 -- if 空 then begin sell(holding>0, 0, market),ORDERQUEUE,IGNORECHECKPRICE; buyshort(holding=0 AND TIME<150100, 0,MARKET),ORDERQUEUE,IGNORECHECKPRICE; end 我刚才查过,这个日志的程序用了队列语句了。。
|
-- 作者:fang2627 -- 发布时间:2014/5/6 9:26:05 -- 貌似是我贴的有些乱,好几个测试程序一起跑。。重新上传日志对应的代码: INPUT:M(20,5,500,30); INPUT:N(2,0.1,10,1); INPUT:X(0.2,0.2,10,0.2); MID : MA(CLOSE,M); UPPER: MID + N*STD(CLOSE,M); LOWER: MID - N*STD(CLOSE,M); 多:=ALL(C>=O+C/220*X,2) AND ALL(O>=MID,2); 空:=ALL(C<=O-C/220*X,2) AND ALL(O<=MID,2); if 多 then begin sellshort(holding<0, 0, market),ORDERQUEUE,IGNORECHECKPRICE; buy(holding=0 AND TIME<150100, 0, MARKET),ORDERQUEUE,IGNORECHECKPRICE; end HH:=HHV(H,BARSLAST(HOLDING<=0)); 多A:holding>0 and HH<Enterprice*1.005 AND C<=HH*0.995,LINETHICK0; if 多A then sell(holding>0, 0,MARKET),IGNORECHECKPRICE; if 空 then begin sell(holding>0, 0, market),ORDERQUEUE,IGNORECHECKPRICE; buyshort(holding=0 AND TIME<150100, 0,MARKET),ORDERQUEUE,IGNORECHECKPRICE; end LL:=LLV(L,BARSLAST(HOLDING>=0)); 空A:holding<0 and LL>Enterprice*0.995 AND C>=LL*1.005 ,LINETHICK0; if 空A then sellshort(holding<0, 0,MARKET),IGNORECHECKPRICE; |