欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 条件满足不执行

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3459人关注过本帖平板打印复制链接

主题:条件满足不执行

帅哥哟,离线,有人找我吗?
guobixiboy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:118 积分:310 威望:0 精华:0 注册:2013/2/26 8:59:53
条件满足不执行  发帖心情 Post By:2013/3/27 9:52:22    Post IP:171.82.187.131[只看该作者]

算法描述:当第k根触及止损价不平仓,第k+n个周期或者价位达到某界限值平仓。

代码如下:

variable:DDZSPrice=10000;//多单止损价格。
variable:DDZSP=0;//多单止损位置。
variable:DDFlag=1;

 

variable:KDZSPrice=0;//空单止损价格。
variable:KDZSP=0;//空单止损位置。
variable:KDFlag=1;
N:=4;

//多单止损

DDZSPosition1:=ref(low,1)>(enterprice-zsd) ;//第一根k线最低值大于止损价
DDZSPosition2:=ref(low,2)>(enterprice-zsd)  ;//第二根k线最低值大于止损价
DDZSPosition3:=low<=(enterprice-zsd) and  holding>0 ;//第三根k线最低值小于止损价
if holding>0 then begin
if DDZSPosition1 AND DDZSPosition2 AND DDZSPosition3 THEN

DDZSP:=BARPOS;//定位止损价位k线位置。

if low<=(enterprice-zsd) and DDFlag=1 then begin
DDZSPrice:=o;
DDFlag:=0;
end
DDZSP1:=BARPOS;
dp1:=(c>=DDZSPrice)  or   (DDZSP1-DDZSP)>=N;//现价高于止损位置开盘价或者时间周期到,止损指令发出。
//dp1:= BARSLAST(DDZSPosition)>5 and holding>0;//现价高于止损位置开盘价或者时间周期到,止损指令发出。
end

//平单

//多单平仓
if holding>0 then
begin
    if dp1 then begin
         //myexitprice:=min(o,enterprice-zsd);     
           DDZSPrice:=10000; 
           DDFlag:=1;
           DDZSP:=0;
           end
   
         myexitprice:=open;
    if dp1 then sell(holding>0,lots,limitr,myexitprice-hd*mindiff);
end

 

//-----以上部分可以顺利的执行。问题出现在空单情形

 

//kp1:=h>=(enterprice+zsd);  //空仓止损
KDZSPosition1:=ref(HIGH,1)<(enterprice+zsd) ;//第一根k线最高值小于止损价
KDZSPosition2:=ref(HIGH,2)<(enterprice+zsd)  ;//第二根k线最高值小于止损价
KDZSPosition3:=HIGH>=(enterprice+zsd) and  holding<0 ;//第三根k线最高值大于止损价


if holding<0 then begin
if KDZSPosition1 AND KDZSPosition2 AND KDZSPosition3 THEN
     KDZSP:=BARPOS;//空单止损位k线位置。
     //-----问题在此:条件满足,KDZSP:=BARPOS不执行。
if HIGH>=(enterprice+zsd) and KDFlag=1 then begin
 KDZSPrice:=o;//空止损价格

//---条件满足,执行。
 KDFlag:=0;//空单止损标志

//-----条件满足,不执行。

end
KDZSP1:=BARPOS;

kp:=(c<=KDZSPrice)  or  (KDZSP1-KDZSP)>=N;//现价高于止损位置开盘价或者时间周期到,止损指令发出。
end

//平空单。

if holding<0 then
begin
    if kp then
         // myexitprice:=max(o,enterprice+zsd);
         KDZSPrice:=0;
         KDZSP:=0;
         KDFlag:=1;
         myexitprice:=open;
    if kp then sellshort(holding<0,lots,limitr,myexitprice+hd*mindiff);
end
---可以顺利执行。


 回到顶部
总数 13 1 2 下一页