文华财经止损止盈策略代码经典示例

量化交流 / 2012人浏览 / 0人评论

//编写仅供参考,风险自负!

//例 1:限价止损。开仓后固定 100 点止盈、50 点止损

(C<=BKPRICE-50 ) || ( C-BKPRICE>=100 ),SP;

//当价格小于买入开仓均价 50 点后,或者大于买入开仓均价 100 个点后,卖出平仓

( C>=SKPRICE+50 ) || ( C<=SKPRICE-100 ), BP;

//当价格大于卖出均价 50 点后,或者小于卖出开仓均价 100 个点后,买入平仓

 

//例 2:保本。盈利超过 10 个点后,如果盈利再回撤到 5 个点时止损

( BKHIGH>BKPRICE+10 ) && ( C

//当买入开仓的最高价大于均价的 10 个点后。当前价格回落到均价以上的 5 个点内(盈利再回撤到 5 个点),卖出平仓

( SKLOWSKPRICE-5 ),BP;

//当卖出开仓的最低价小于均价的 10 个点后,当前价格上升到卖出均价以下的 5 个点内(盈利再回撤到 5 个点),买入平仓

 

//例 3:阶梯止损。初始 5 点,盈利每增加 10 点,止损向盈利方向移动 5 个点

C< BKPRICE +( INTPART((BKHIGH-BKPRICE)/10)*10-5),SP;

//初始 5 点,盈利每增加 10 点,止损向盈利方向移动 5 个点

C > SKPRICE -( INTPART((SKPRICE-SKLOW)/10)*10-5),BP;

//初始 5 点,盈利每增加 10 点,止损向盈利方向移动 5 个点

 

//例 4:盈利超过 10 个点后启动跟踪止损,跟踪价差为 15 个点

BKHIGH > BKPRICE+10 && C

//买入开仓最高价大于均价 10 个点后,当前价格回落到最高价以下 15 个点,卖出平仓

SKLOW SKLOW+15,BP;

//卖出开仓最低价小于均价 10 个点后,当前价格回升到最低价以上 15 个点,买入平仓

 

//例 5:盈利超过 10 个点后启动跟踪止损,跟踪价差为最大盈利的 30%

BKHIGH>BKPRICE+10 && C

//盈利超过 10 个点后启动跟踪止损,跟踪价差为最大盈利的 30%

SKLOWSKLOW+(SKPRICE-SKLOW)*0.3,BP;

//盈利超过 10 个点后启动跟踪止损,跟踪价差为最大盈利的 30%

//注意其中的 50、100、10、5 等是实实在在的均价加减 50(股指、债指、沪铜、大豆等代表的盈利不同),而不是对应的最小变动价位

//可以增加最小变动价位 MINPRICE,如 50*MINPRICE;

AUTOFILTER;

 

//例 6:示例支撑/压力位止损,结合交易经验自己修改相应设置

N1:=BARSLAST(DATE<>REF(DATE,1))+1;

//开盘第一根 K 线到当前的 K 线根数

N2:=REF(N1,N1);

//每个交易日 K 线的总数

HH:HV(H,N1-1);

//当日最高价,不包含当前 K 线

LL:LV(L,N1-1);

//当日最低价,不包含当前 K 线

OO:REF(O,N1-1);

//当日开盘价

OZ:REF(O,N2+N1-1);

//昨日开盘价

CZ:REF(C,N1);

//昨日收盘价

HZ:REF(HHV(H,N1),N1);

//昨日最高价

LZ:REF(LLV(L,N1),N1);

//昨日最低价

HDN:IFELSE(N1>=5,VALUEWHEN(N1=5,HHV(H,5)),NULL);

//当 N1>=5 时,开盘前 5 根 K 线的最高价

LDN:IFELSE(N1>=5,VALUEWHEN(N1=5,LLV(L,5)),NULL);

//当 N1>=5 时,开盘前 5 根 K 线的最低价

LB:REF(L,BARSBK);

//买开仓那根 K 线最低价

HS:REF(H,BARSSK);

//卖开仓那根 K 线最高价

LBN:REF(L,BARSBK+1);

//买开仓前一根 K 线最低价

HSN:REF(H,BARSSK+1);

//卖开仓前一根 K 线最高价

 

//例 7:趋势线止损,根据交易经验,自己修改相关内容

//以下编写,仅示范趋势线止损,风险自负!

DT1:=DATE=140715 && TIME=1345;

DT2:=DATE=140718 && TIME=1100;

//TMP1:TRENDLINES(DT1,H,DT2,H);

//2014 年 07 月 15 日 13:45K 线最高点与 2014 年 07 月 18 日 11:00K 线最高点形成的趋势线

 

//例 8:开仓后最大盈利不超过 10 点,在开仓后第 5 根根 K 线止损平仓

BARSBK=5 && BKHIGH<10+BKPRICE,SP;

BARSSK=5 && SKLOW>SKPRICE-10,BP;

 

//例 9:初始固定 30 点止损,每完成 5 根 K 线,止损位置向盈利方向移动 10 点

C

//买开仓后,初始止损价差 30 个点,开仓之后每出现 5 根 K 线,止损价格提高 10 点

C>SKPRICE+30-INTPART(BARSSK/5)*10,BP;

//卖开仓后,初始止损价差 30 个点,开仓之后每出现 5 根 K 线,止损价格提高 10 点

 

//例 10:累计亏损 10000 清仓,并且停止交易

OFFSETPROFIT>-10000 && 买开仓条件,BK;

OFFSETPROFIT>-10000 && 卖开仓条件,SK;

OFFSETPROFIT+PROFIT<-10000,CLOSEOUT;

买平仓条件,BP;

卖平仓条件,SP;

 

//例 11:过滤模型根据初始资金百分百开仓

SETDEALPERCENT(50);

//每次开仓手数按照模组资金的 50%计算,向下取整

DIFF:EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);

DEA:EMA(DIFF,M);

CROSS(DIFF,DEA),BPK;

//DIFF 上穿 DEA,做多。

CROSS(DEA,DIFF),SPK;

//DIFF 下穿 DEA,做空。

AUTOFILTER;

 

//例 12:满足条件 AA 开多仓,交易手数为根据模组可用资金的 20%计算;价格第一次上涨 10%止盈 50%仓位,再次上涨 20%止盈全部仓位。

//开仓条件,BK(MONEY*0.2/(C*UNIT*MARGIN+FEE));

//按比例收取手续费的情况:

//AA,BK(MONEY*0.2/((C*UNIT*MARGIN)*(1+FEE)));

CROSS(C,BKPRICE*1.1),SP(BKVOL*0.5);

ISLASTSP&&CROSS(C,BKPRICE*1.2),SP(BKVOL);

//交易 1 手合约所需资金=合约当前价格(C)×合约单位(UNIT)×保证金比例(MARGIN)+手续费(FEE)

 

//仅用来示范 ATR 止损编写,仅供参考,风险自负!

//例 13:最新价减前一次开仓价格大于 0.5*ATR 时加仓,资金使用率超过 0.5 后停止

TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));

ATR:=MA(TR,20);

//建仓

BKVOL=0 && 买开仓条件,BK(1);

SKVOL=0 && 卖开仓条件,SK(1);

BKVOL>0 && C>BKPRICE+0.5*ATR && MONEYRATIO<0.5,BK(1);

//加仓

SKVOL>0 && C<=SKPRICE-0.5*ATR && MONEYRATIO<0.5,SK(1);

//加仓

MONO_SIGNAL;

//注意学习 MONO_SIGNAL 函数

//在一次“开仓”到“平仓”过程中,每行指令最多被执行一次。

//在不锁仓前提下,如果让指令行在每根满足条件的 K 线上都执行,需要使用 MONO_SIGNAL 函数。

//同时,该函数也限制了一根 K 线上只能出现一个信号。

 

//例 14:开仓均价的编写示例,仅供参考,风险自负!

C-LONG_PRICE>60 && LONG_PRICE >0, SP(BKVOL);

//如果当前价位比多头持仓均价高出 60,且多头持仓存在,卖平仓。

SHORT_PRICE-C>60 && SHORT_PRICE>0, BP(SKVOL);

//如果空头持仓均价比当前价位高出 60,且空头持仓存在,买平仓。

//LONG_PRICE:模组多头持仓开仓均价

//SHORT_PRICE:模组空头持仓开仓均价

//注意区分 LONG_PRICE 和 BKPRICE 的差别

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我