以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  这是分不同买入条件,卖出的,专家帮忙看看哪里出错了,为什么卖出条件无法识别,测试都是强制平仓的  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=81382)

--  作者:skyboa
--  发布时间:2015/7/19 14:53:40
--  这是分不同买入条件,卖出的,专家帮忙看看哪里出错了,为什么卖出条件无法识别,测试都是强制平仓的
 这是分不同买入条件,卖出的,专家帮忙看看哪里出错了,为什么卖出条件无法识别,测试都是强制平仓的
variable:flag=0;
if  KDA  and HOLDING=0  then begin
   开多1:BUY(KDA AND HOLDING=0,4,THISCLOSE); 
   flag:=1;
   end;
   if  KDB  and HOLDING=0  then begin
   开多2:BUY(KDB AND HOLDING=0,4,THISCLOSE);
   flag:=2; 
   end;
   if  KDA  and HOLDING=0  then begin
   开多3:BUY(KDC AND HOLDING=0,4,THISCLOSE);
   flag:=3; 
   end;
if  PD and HOLDING>0  and flag=1 then begin
   平多:SELL(PD,4,THISCLOSE); 
   end;

--  作者:jinzhe
--  发布时间:2015/7/20 8:52:27
--  
你的KDA条件难以成立,都在KDB和KDC之后,flag基本上是2或者3
[此贴子已经被作者于2015/7/20 8:52:51编辑过]

--  作者:skyboa
--  发布时间:2015/7/20 9:47:45
--  
哦,写错了,这样写,测试还是不行
variable:flag=0;
if  KDA  and HOLDING=0  then begin
   开多1:BUY(KDA AND HOLDING=0,4,THISCLOSE); 
   flag:=1;
   end;
   if  KDB  and HOLDING=0  then begin
   开多2:BUY(KDB AND HOLDING=0,4,THISCLOSE);
   flag:=2; 
   end;
   if  KDC  and HOLDING=0  then begin
   开多3:BUY(KDC AND HOLDING=0,4,THISCLOSE);
   flag:=3; 
   end;
if  PD and HOLDING>0  and flag=1 then begin
   平多:SELL(PD,4,THISCLOSE); 
   end;

--  作者:jinzhe
--  发布时间:2015/7/20 9:49:13
--  
那不是一样么,就是我说的意思,你的开多A条件不容易成立,开多B和开多C先成立了,导致flag的值不是1
--  作者:skyboa
--  发布时间:2015/7/20 9:51:51
--  
要怎么改,才能选择开仓条件,卖出呢
--  作者:jinzhe
--  发布时间:2015/7/20 9:54:21
--  
那么你是想要实现什么目的才写了这样的代码?
--  作者:skyboa
--  发布时间:2015/7/20 9:57:32
--  
是这样的,比方有三个买入条件,有三个卖出条件,买入条件A对应卖出条件A卖出 买入条件B对应卖出条件B卖出 买入条件C对应卖出条件C卖出 
--  作者:jinzhe
--  发布时间:2015/7/20 10:00:33
--  
if  KDA  and HOLDING=0  then begin
   开多1:BUY(KDA AND HOLDING=0,4,THISCLOSE); 
   flag:=1;
   end;
   if  KDB  and HOLDING=0  then begin
   开多2:BUY(KDB AND HOLDING=0,4,THISCLOSE);
   flag:=2; 
   end;
   if  KDA  and HOLDING=0  then begin
   开多3:BUY(KDC AND HOLDING=0,4,THISCLOSE);
   flag:=3; 
   end;
if  PDA and HOLDING>0  and flag=1 then begin
   平多:SELL(PD,4,THISCLOSE); 
   end;
 
if  PDB and HOLDING>0  and flag=2 then begin
   平多:SELL(PD,4,THISCLOSE); 
   end;
 
if  PDC and HOLDING>0  and flag=3 then begin
   平多:SELL(PD,4,THISCLOSE); 
   end;

--  作者:jinzhe
--  发布时间:2015/7/20 10:01:06
--  
你怎么就写了平仓1个条件就测试对不对了?如果对应的开仓条件不成立呢?
--  作者:skyboa
--  发布时间:2015/7/20 13:11:08
--  我按照这样写没信号,是不是冒号的原因
variable:flag:=0;
   if  KDA  and HOLDING=0  then begin
   开多1:BUY(KDA AND HOLDING=0,4,THISCLOSE); 
   flag:=1;
   end;
   if  KDB  and HOLDING=0  then begin
   开多2:BUY(KDB AND HOLDING=0,4,THISCLOSE);
   flag:=2; 
   end;
   if  KDC  and HOLDING=0  then begin
   开多3:BUY(KDC AND HOLDING=0,4,THISCLOSE);
   flag:=3; 
   end;
if  PD and HOLDING>0 and  flag:=2  then begin
   平多:SELL(PD,4,THISCLOSE); 
   end;