以文本方式查看主题

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

--  作者:zzzlondon
--  发布时间:2011/10/25 11:35:17
--  [求助]市价下单

目标:在K线的开盘价市价下单(逐K线,固定1秒轮询)

如果使用market,在图表上会显示进场K线是下一根的开盘价,而且enterprice会是下一根的开盘价,与预期不符

如果使用limitr,open 可能不成交

如果使用limitr,open+100 即挂一个很大的滑点,可能会显示白箭头,从而不成交

 

请问该怎么写


--  作者:just
--  发布时间:2011/10/25 12:17:47
--  
以下是引用zzzlondon在2011-10-25 11:35:17的发言:

目标:在K线的开盘价市价下单(逐K线,固定1秒轮询)

如果使用market,在图表上会显示进场K线是下一根的开盘价,而且enterprice会是下一根的开盘价,与预期不符

市价下单本来就是为了成交速度而定的,在逐K模式下,如果你盘中运行指标是会以下一根K线的开盘价作为ENTERPRICE,你是否可以将你的起始点往后移一个周期呢,这样不就达到你的要求了吗?
--  作者:admin
--  发布时间:2011/10/25 13:00:47
--  

2.7增加了

 

忽略由新交易系统指令发出的交易指令的价格检查。
比如buy(cross(ma1,ma2),1,limitr,low-1);这段代码将因为开多的价格在K线的最低价以下,将导致无效指令。
但是加上IGNORECHECKPRICE就可以了,比如:buy(cross(ma1,ma2),1,limitr,low-1),ignorecheckprice;
所属函数组:交易系统

 


--  作者:zzzlondon
--  发布时间:2011/10/25 13:32:15
--  
以下是引用just在2011-10-25 12:17:47的发言:
市价下单本来就是为了成交速度而定的,在逐K模式下,如果你盘中运行指标是会以下一根K线的开盘价作为ENTERPRICE,你是否可以将你的起始点往后移一个周期呢,这样不就达到你的要求了吗?

举个例子好了:

if time>=100000 and holding=0 and ref(close,1)>ref(open,1) then buy(1,1,limitr,open);
if time>151400 and holding=1 then sell(1,1,thisclose);

效果如图:

图片点击可在新窗口打开查看

 

 

用market的话,虽然成交价会和上面一样,但图表显示会晚一根,同时enterprice不一样

if time>=100000 and holding=0 and ref(close,1)>ref(open,1) then buy(1,1,market);
if time>151400 and holding=1 then sell(1,1,thisclose);

图片点击可在新窗口打开查看

 

 

如果这样写的话

if time>=100000 and holding=0 and close>open then buy(1,1,market);
if time>151400 and holding=1 then sell(1,1,thisclose);

会在前一根阳线刚开始一会儿就触发买单,图表和第一种一样,但实际成交价不对


--  作者:fly
--  发布时间:2011/10/25 15:22:38
--  

MARKET是市价,实盘情况下,如果您是走完一根K线,那么在走完K线满足开仓条件时,就会按照市价发出委托.

                                    如果是固定时间间隔,那么根据您的设置在满足条件的情况下,就会及时的按照市价发出委托.---此种需注意信号消失的情况

 

图表程序化交易,图上显示的是虚拟的,资金持仓开仓价格等

如果想得到实盘的真实,需要用后台程序化交易


--  作者:阿火
--  发布时间:2011/10/25 16:16:30
--  

楼主什么意思,想以market下单,但不影响enterprice ?

那就把enterprice换个自己的变量就好了

比如:用kcj代替

 

variable:kcj=0;

 

if holding=0 and buycond then begin

    buy(1,1,market);

    kcj:=o;

end

 

或者:

 

if holding=0 and buycond then begin

    buy(islastbar,1,market);

    buy(not(islastbar),1,limitr,open);

    kcj:=o;

end