众所周知,程序化交易我们一般分2个步骤,第一步是策略的历史评估,历史评估是利用开,高,低,收这4个K线数据进行测算,第二步是进行实盘交易,实盘交易的实时性特点,他所能获取到的价格实时性要比历史回测要多,比如历史回测时我们就无法得知在固定轮询模式时的实时信号的价格,而实盘则可以.
金字塔图表交易的控制符
金字塔程序化实盘交易时主要分2种状态,即固定轮询模式和走完K线模式,客户在编写程序化交易策略时应该确定您的策略是属于哪种状态的,合理的使用交易控制符将会对我们的交易结果产生非常大的影响,往往很多人遇到的测评时盈利,而实际交易时亏损,往往都是交易控制符使用不当,造成测试与实际交易的信号位置及价格差异过大造成.为了满足两种不同交易模式的需要金字塔提供的交易控制符基本有2大类, 本周期价格入场交易的和次周期入场交易的.
本周期入场交易交易控制符
本周期入场交易的方式对应于金字塔的固定轮询交易模式,特点是信号出现后马上就入场报单交易,缺点是在测评时很难知道测试交易时的即时触发价格,这也是造成历史测评与实盘交易差异过大的一个主要原因.,
LIMITR 测评按本周期限价委托进场,实盘也按此委托价限价进场
MARKETR 测评按本周期收盘价委托进场, 实盘交易按照交易所市价委托进场
THISCLOSE 测评按本周期收盘价委托进场, 实盘交易时按即时行情对价委托进场
次周期入场交易交易控制符
次周期进场交易对应于金字塔走完K线的交易模式,是金字塔推荐的交易方法,因为这样做可以最大化的保证我们的历史测评结果与实盘交易保持一致.
LIMIT 测评按次周期限价委托进场,实盘也按此委托价限价进场
MARKET 测评按次周期开盘价委托进场,实盘交易按照交易所市价委托进场
NEXTOPEN 测评按次周期开盘价委托进场, 实盘交易时按即时行情对价委托进场
交易指令的使用简要说明
以下都以开仓函数BUY为例做讲解.
BUY(开仓条件,下单手数,交易指令,P);//P为下单价格
其中,交易指令/交易方式控制符我们常用的有5个,分别如下.
本周期收盘:THISCLOSE;
限价单:LIMIT 和 LIMITR ;
市价:MARKET 和 MARKETR;
其中,P为下单价格:对于限价单、停损单需要指定的下单价格
BUY(holding=0, 1, LIMIT, 4000);
//如果无多头持仓,以4000挂单子
//结果:成交价≤4000
SELL(holding>0,0,LIMIT,4000);
//如果有多头持仓,以4000价格挂单子;
//结果:成交价≥4000
交易指令,各平台执行情况
金字塔对于所有的可交易品种,均支持4种交易指令,即限价、市价、停损、限价停损。但是这几种交易指令是通过不同方式完成工作的,限价指令是所有平台都支持的,对于市价和停损单,下面几种交易平台执行情况如下:
1.CTP综合交易平台 和 恒生交易平台
A市价单
上期所不支持市价,大连/郑州/中金3个交易所均支持市价指令。
上期所的品种下市价单,金字塔是采用加N个变动价位实现,默认是3个,用户可在交易设置中更改。
大连/郑州/中金的品种下市价单,交易所的市价单。
B停损单
上期所/郑州/ 大连交易所/中金4个交易所均不支持停损指令。
金字塔采用内部监控模式,最新价触及停损价位后立即按照市价发出委托单。
C限价停损指令
金字塔CTP平台不支持限价停损指令,用户使用限价停损指令发出为委托单时,实际会按照停损指令发出。
2.金仕达交易平台
A市价单
上/大/郑/中金下市价单,金字塔是采用加N个变动价位实现,默认是3个,用户可在交易设置中更改。
B停损单/限价停损
上/大/郑/中金下停损单/限价停损,金字塔采用内部监控模式,最新价触及停损价位后立即按照市价发出委托单。
3.IB(美国赢透)交易平台 这个平台支持所有限价、市价、停损、限价停损这个4个指令。在IB平台发出停损指令后会将指令单发送到IB的交易服务器上保存,等待触发。
MARKET就延后一个周期用延后这个周期的开盘即时市价委托
应该是limitr,然后P参数为对价
MARKET就延后一个周期用延后这个周期的开盘即时市价委托
应该是limitr,然后P参数为对价
交易所支持 市价指令 限价指令
limitr+P就是个限价指令 和市价指令不同。
请问一下,如果我的主体系统是用逐K模式进行交易,以nextopen作为交易指令;但是,我还包括一个即时的止损指令,比如在K线的即时最低价达到某个价位,就会即刻止损离场,而不是等到K线走完,那这个交易指令应该怎么写呢?
答:
1.使用固定时间间隔
2.假设CON1成立,则次周期开盘价开多仓
CON2成立,则马上平多仓
条件改写为以下:
if ref(con1,1) and holding=0 then buy(1,1,market);
if con2 and holding>0 then sell(1,1,market);
其他类似条件,依次类推