现有交易系统:
kd条件成立,开仓。开仓价为kcj.
pd条件成立,平仓。平仓价为pcj.
现加入条件gg。
多头开仓后持有,当平仓时,如此笔交易为亏损,即kcj>pcj,且gg条件成立。则开反向仓。空头仓反之。
求助该逻辑如何编写?
图表序列模式,主要用来测试用。所以,交易系统的HOLDING等函数思路就用不上了。
例:为简单起见,只举例单向开多情况。
m5:=ma(c,5) ; //均线系统
m8:=ma(c,8) ;
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100 ; //KDJ系统
K:=SMA(RSV,3,1) ;
D:=SMA(K,3,1) ;
J:=3*K-2*D ;
tr1:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)) ; //atr系统
atr:=MA(TR1,14) ;
gg:=tr1<atr ;
kd:=m5>m8 and j>30 ;
pd:=j<80 ;
//双向交易请注意先平后开的原则
{平多}EXITLONG: pd , TFILTER ;
{开多}ENTERLONG: kd , TFILTER ;
使用1.995版可以直接兼容下列平仓反手指令
pd , BPK;
kd , SPK;
使用1.995版可以直接兼容下列平仓反手指令
pd , BPK;
kd , SPK;
pdf:=pd1,spk ;
pkf:=pk1,bpk ;
//双向交易请注意先平后开的原则
{开多}ENTERLONG: kd1 {or kd2} , TFILTER ;
{开空}ENTERSHORT:kk1 {or kk2} , TFILTER ;
{平多}EXITLONG: if(time<150000,pdf,pd1) or time>=150000 , TFILTER ;
{平空}EXITSHORT:if(time<150000,pkf,pk1) or time>=150000 , TFILTER ;
如上,SPK,bpk不起作用。
//双向交易请注意先平后开的原则
{开多}ENTERLONG: kd1 {or kd2} , TFILTER ;
{开空}ENTERSHORT:kk1 {or kk2} , TFILTER ;
{平多}EXITLONG: pd1,spk , or time>=150000 , TFILTER ;
{平空}EXITSHORT:pk1,bpk , or time>=150000 , TFILTER ;
如上,无效表达式。
而为了日内模式,or time>=150000 又是必加的,
如果将SPK,BPK加到or time>=150000 之后,如:pd1 or time>=150000,spk,tfilter ;
又会产生过夜持仓。
该如何编制为好呢?
我以前没接触过文华,但看了SPK等函数的说明,基本也会用。
这次主要是为了添加反手指令,但因为所编系统的复杂性,发现很难通过简单的添加SPK等函数来达到我的要求。