此主题相关图片如下:qq图片20140318094929.jpg

如图,两线交叉成型做单,平空与开多条件同,平多与开空条件同。根据软件例子编的止盈止损策略,加上了限制开仓手数。VARIABLE:kdss=0,kkss=0;发现貌似开多(平多),与开空(平空)各只开一次,然后没交易了,跟设想的每个波段交易一次想法不同。错误在哪里?及如何改呢?
A1:stkindi('','ND',0,22,45);
A2:=stkindi('','XD',0,17,0);
BUY1:=A1>A2;
SELL1:=A1<A2;
ZSDS:=3; {止损点数}
//以下变量用于移动止盈,,移动止盈只能保证你尽可能稳健盈利,却不能保证盈利最大化,如果不想使用,可是将总开关设置为0
VARIABLE:YDZY=1; {移动止盈总开关,1为开,0为关}
VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价}
VARIABLE:DHCDS=3,KHCDS=3; {多、空单回撤点数}
VARIABLE:DYLDS=7,KYLDS=7; {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值就平仓}
VARIABLE:Z3B1:=1; {赚3保1开关}
VARIABLE:kdss=0,kkss=0;{开多开空次数}
//持有空单
IF HOLDING<0 THEN BEGIN
IF BUY1 THEN BEGIN //平空单
空平:SELLSHORT(1,0,MARKET),ORDERQUEUE;
END
//止损
IF C-ENTERPRICE>=ZSDS THEN BEGIN
空损:SELLSHORT(1,0,MARKET),ORDERQUEUE;
END
//移动止盈
IF YDZY=1 THEN BEGIN
//每周期判断是否创新低
IF L<LOWPRICE THEN BEGIN
LOWPRICE:=L;
END
//如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN
IF L-LOWPRICE>=KHCDS THEN BEGIN //回撤超过3点
空赢:SELLSHORT(1,0,MARKET);
END
END
END
//赚3保1
IF Z3B1=1 THEN BEGIN
IF ENTERPRICE-LOWPRICE>=3 THEN BEGIN
IF ENTERPRICE-L<=1.2 THEN BEGIN
空保:SELLSHORT(1,0,MARKET);
END
END
END
END
//开多单
IF HOLDING>=0 AND TIME<143000 AND kdss=0 THEN BEGIN
IF BUY1 THEN BEGIN
多开:BUY(1,1,MARKET);
HIGHPRICE:=ENTERPRICE; //将开仓价保存到最高价
kdss:=1;
END
END
//持有多单
IF HOLDING>0 THEN BEGIN
IF SELL1 THEN BEGIN {平多单}
多平:SELL(1,0,MARKET),ORDERQUEUE;
END
//多单管理
//止损
IF ENTERPRICE-C>=ZSDS THEN BEGIN
多损:SELL(1,0,MARKET),ORDERQUEUE;
END
//移动止盈
IF YDZY=1 THEN BEGIN
//每周期判断是否创新高
IF H>HIGHPRICE THEN BEGIN
HIGHPRICE:=H;
END
//如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN
IF HIGHPRICE-H>=DHCDS THEN BEGIN //回撤超过3点
多赢:SELL(1,0,MARKET);
END
END
END
//赚3保1
IF Z3B1=1 THEN BEGIN
IF HIGHPRICE-ENTERPRICE>=3 THEN BEGIN
IF H-ENTERPRICE<=1.2 THEN BEGIN
多保:SELL(1,0,MARKET);
END
END
END
END
//开空单
IF HOLDING>=0 AND TIME<143000 AND kkss=0 THEN BEGIN
IF SELL1 THEN BEGIN
空开:BUYSHORT(1,1,MARKET);
LOWPRICE:=ENTERPRICE;
kkss:=1;
END
END
在平仓语句里面把你的kdss和kkss都重新赋值为0,你开仓后就一直是1不变动了
各段开平止损止盈仓语句都加上了赋值,现在有新一段波段,但没任何信号了。
此主题相关图片如下:qq图片20140318110944.jpg

A1:stkindi('','ND',0,22,45);
A2:=stkindi('','XD',0,17,0);
BUY1:=ND>XD and kdss=0;
SELL1:=ND<XD and kkss=0;
//空单管理
//持有空单
IF HOLDING<0 AND kkss=0 THEN BEGIN
IF BUY1 THEN BEGIN //平空单
空平:SELLSHORT(1,0,MARKET),ORDERQUEUE;
kkss:=1;
END
//止损
IF C-ENTERPRICE>=ZSDS AND kkss=0 THEN BEGIN
空损:SELLSHORT(1,0,MARKET),ORDERQUEUE;
kkss:=1;
END
//移动止盈
IF YDZY=1 THEN BEGIN
//每周期判断是否创新低
IF L<LOWPRICE THEN BEGIN
LOWPRICE:=L;
END
//赚3保1
IF Z3B1=1 THEN BEGIN
IF ENTERPRICE-LOWPRICE>=3 AND kkss=0 THEN BEGIN
IF ENTERPRICE-L<=1.2 THEN BEGIN
空保:SELLSHORT(1,0,MARKET);
kkss:=1;
END
END
END
END
//如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
IF ENTERPRICE-LOWPRICE>=KYLDS AND kkss=0 THEN BEGIN
IF L-LOWPRICE>=KHCDS THEN BEGIN //回撤超过3点
空赢1:SELLSHORT(1,0,MARKET);
kkss:=1;
END
END
END
[此贴子已经被作者于2014/3/18 11:11:27编辑过]
。。。平仓赋值为0啊,你开仓赋值为1,平仓也赋值为1,这个能有信号?
都赋值为1,有信号了,但也太多了吧。
此主题相关图片如下:qq图片20140318113452.jpg

此主题相关图片如下:qq图片20140318113805.jpg

而且,有些本身处于开空条件运行中了,但为什么在不确定的位置中又有新开空仓呢?按理在之前刚达成空条件时已经空一手了的。
此主题相关图片如下:qq图片20140318113531.jpg

如何解决?
[此贴子已经被作者于2014/3/18 12:02:38编辑过]
我将变量
VARIABLE:kdss=0,kkss=0;
语句上的
持仓赋值为1 --kkss=1,执行为0--kkss:=0;
开仓赋值为0--kkss:=0; 执行为1--kkss:=1;
显示止损止盈好像正确了, 但还盈损后面接着还有 开仓信号显示。
//空单管理
//持有空单
IF HOLDING<0 AND kkss=1 THEN BEGIN
IF BUY1 THEN BEGIN //平空单
空平:SELLSHORT(1,0,MARKET),ORDERQUEUE;
kkss:=0;
END
//止损
IF C-ENTERPRICE>=ZSDS AND kkss=1 THEN BEGIN
空损:SELLSHORT(1,0,MARKET),ORDERQUEUE;
kkss:=0;
END
//移动止盈
IF YDZY=1 THEN BEGIN
//每周期判断是否创新低
IF L<LOWPRICE THEN BEGIN
LOWPRICE:=L;
END
//如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
IF ENTERPRICE-LOWPRICE>=KYLDS AND kkss=1 THEN BEGIN
IF L-LOWPRICE>=KHCDS THEN BEGIN //回撤超过3点
空赢1:SELLSHORT(1,0,MARKET);
kkss:=0;
END
END
END
//赚3保1
IF Z3B1=1 THEN BEGIN
IF ENTERPRICE-LOWPRICE>=9 AND kkss=1 THEN BEGIN
IF ENTERPRICE-L<=2 THEN BEGIN
空保:SELLSHORT(1,0,MARKET);
kkss:=0;
END
END
END
END
//开多单
~~
~~
//开空单
IF HOLDING>=0 AND TIME<143000 AND kkss=0 THEN BEGIN
IF SELL1 THEN BEGIN
空开:BUYSHORT(1,1,MARKET);
LOWPRICE:=ENTERPRICE;
kkss:=1;
END
END
这样还要改哪里?
[此贴子已经被作者于2014/3/18 12:55:26编辑过]
你不想开仓信号太多,那么就在开仓语句里面加个条件 holding=0
本身就加上有
holding=0的啊。图形上示有开仓,图表上就会有交易吗?
解决方法上,是否可以在策略语句上加上一个判断。例如做空,如在每一个空止损或空止盈的语句中加上,如果执行了这个止盈策略后,同时符合空开仓条件的那么不执行这个开仓。只执行下一个反向开仓(当符合开多条件时的,平空开多)。