[金字塔教程四]金字塔的新交易系统
(2014-01-14 21:38:06)
标签:
金字塔教程量化投资程序化交易股票 |
分类: 金字塔决策交易系统 |
使用传统的ENTERLONG程式化交易信号做出的自动交易策略,存在着例如无法进行头寸管理,灵活性不够的缺点,为了对介入价位和仓位进行精确的控制,譬如海龟交易法的头寸管理.,需要金字塔提供扩展性更为强大的程式化交易模式,为此提供了一系列的功能和众多交易函数。这些函数用户可以在公式函数列表的“交易系统”组里找到.但是需要注意的是金字塔的新交易系统,是不能与旧的交易系统比如ENTERLONG混用的.金字塔的新交易系统采取的虚拟仓位和资金再图表做显示和模拟交易的,也就是说新图表交易系统的交易操作是按照预先我们在公式属性里设定的资金来进行的,与用户的实际资金和持仓没有任何关系。因此使用之前用户需要在公式属性里将资金和费率设置正确,以确保能更加贴近实战.真实自动交易时,在图表出现信号后系统将根据交易指令发出的交易类型和价格以及数量,按照同比例手数进行真实下单交易。但是这里用户也要注意,一旦出现开平仓信号后,也就是说无论实盘此笔交易是否已经成交,图表上的虚拟持仓都是按成交后显示的,因为为了确保图表上显示的持仓与实际的持仓保持一致,委托时应该尽量的贴近实际价格,以确保能够按要求成交。此外金字塔的新交易系统只能在逐K线模式下运行,另外该模式仅限标准版及其以上用户才可以进行下单交易。
4.1下单模型语句
BUY(COND,V,Type,P);
SELL(COND,V,Type,P);
BUYSHORT(COND,V,Type,P);
SELLSHORT(COND,V,Type,P);
初学者一般会对TYPE有一些疑惑,TYPE可以是本周期收盘(THISCLOSE)、市价(MARKET)、限价单(LIMIT)、停损单(STOP)等交易方式控制符;对于限价单、停损单需要指定的价格P。
4.2简单交易系统示例
例一:KD交易系统
我们仍然使用前面的KD交易系统为例,将其修改为新版的程式化交易模型。
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,M1,1);
D:=SMA(K,M2,1);
//注意看下面两行语句
BUY(CROSS(K,D) AND K<20,V,TYPE,P);
SELL(CROSS(D,K) AND K>80,V,TYPE,P);
例二:一个最简单的3天均线穿越5天均线的多头交易系统
资产:ASSET,LINETHICK0;
可用现金:CASH(0),LINETHICK0;
持仓:HOLDING,LINETHICK0;
MA3:MA(C,3);
MA5:MA(C,5);
BUY(CROSS(MA3,MA5),1,THISCLOSE); //开多1手
SELL(CROSS(MA5,MA3),0,THISCLOSE);//平多0表示平掉全部持仓
上述的交易模型都能在图表做显示使用,并可以做图表交易。
在交易系统评测中,介入时机与价位,是针对旧交易系统的4种信号指定买卖的介入时机与价位的,这里是以BUY函数的实际指定价格为准。
4.3复杂交易系统示例
例三:30分钟翻转系统
//《日内30分钟翻转系统》
//适用于1分钟周期
//编写日期:20100812-JYL
//准备需要的中间变量
h30 := ref(hhv(h,30),1);
l30 := ref(llv(l,30),1);
//建立多头的进场条件
long := h>h30 and time>093000 and time<145000;
if long then
begin
sellshort(holding < 0, 0, limitr, h30);
buy(holding = 0, 1, limitr, h30);
end
//画出多头的止损线
partline(holding>0, l30,colorred);
//开空条件
short := l < l30 and time > 093000 and time < 145000;
if short then
begin
sell(holding > 0, 0, limitr, l30);
buyshort(holding = 0, 1, limitr, l30);
end
//画出空头的止损线
partline(holding<0, h30, colorgreen);
//收盘前5分钟平仓
if time > 145500 then
begin
sell(holding > 0, 0, thisclose);
sellshort(holding < 0, 0, thisclose);
end
例四:30突破模型
//开盘后前三十分钟最高最低价突破模型--涨停价多单止盈/跌停价空单止盈
//适用于1分钟周期
M:=BARSLAST(DATE<>REF(DATE,1) )+1;
h30:=VALUEWHEN(TIME<=093000,HHV(HIGH,M));
l30:=VALUEWHEN(TIME<=093000,LLV(LOW,M));
//假设涨停价为 昨收的百分之4
upstop :=ref(c,1)*(1+0.04);
downstop:=ref(c,1)*(1-0.04);
//建立多头进场条件
long:=CLOSE>h30 AND TIME<145500 AND
TIME>093000;
if long then
begin
sellshort(holding < 0, 0, limitr, h30);
buy(holding = 0, 1, limitr, h30);
end
//建立多头止盈条件(涨停价多单止盈,不开空仓)
if holding>0 and TIME<145500 AND TIME>093000 then sell(c>upstop-3*mindiff,0,thisclose);
//建立空头进场条件
short:=CLOSE<145500 AND TIME>093000;
if short then
begin
sell(holding > 0, 0, limitr, l30);
buyshort(holding = 0, 1, limitr, l30);
end
//建立空头止盈条件(跌停价空单止盈,不开多仓)
if holding<0 and TIME<145500 AND TIME>093000
//收盘前5分钟平仓
if time > 145500 then
begin
sell(holding > 0, 0, thisclose);
sellshort(holding < 0, 0, thisclose);
end
资产:ASSET,LINETHICK0;
可用现金:CASH(0),LINETHICK0;
持仓:HOLDING,LINETHICK0;