金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2692|回复: 1

【示范策略】日内清仓

[复制链接]

70

主题

190

帖子

275

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-18
曾用名:
发表于 2021-5-21 14:27 | 显示全部楼层 |阅读模式
本帖最后由 技术003 于 2021-5-21 14:30 编辑

//转自旧论坛_gxx978

在期货日内交易中,有时需求不持仓过夜,在收盘前清空所持有的仓位。下面分别就两种日内平仓的需求进行范例演示:

一 、收盘提前1分钟清仓(在最后一根K线上清仓)
[PEL] 复制代码
//此范例适用于图表程序化交易,适用于分钟周期
//该演示模型用于3分钟周期
//使用固定轮询模式
//此范例仅供演示,请勿直接使用入市交易。

N:BARSLAST(DATE<>REF(DATE,1))+1;                                                        //当日K线数量
CONKD:H>=HHV(H,2) AND C>=HHV(C,2) AND N>=3 AND TIME<=185700;  //开多条件,最后一根K线上不开仓,加上时间控制,避免清仓后又再次开仓
CONKK:L<=LLV(L,2) AND C<=LLV(C,2) AND N>=3 AND TIME<=185700;      //开空条件
CONPD:C<REF(L,1);                                                                                   //平多条件
CONPK:C>REF(H,1);                                                                                   //平空条件

SELL(CONPD AND HOLDING>0,HOLDING,MARKET);
SELLSHORT(CONPK AND HOLDING<0,HOLDING,MARKET);
BUY(CONKD,1,MARKET);
BUYSHORT(CONKK,1,MARKET);
IF (ISLASTBAR AND T0TOTIME(TIMETOT0(CLOSETIME(0))-60)<=DYNAINFO(207)) OR (TIME=CLOSETIME(0) AND NOT(ISLASTBAR)) THEN   BEGIN   
      SELL(1,HOLDING,MARKET);            
      SELLSHORT(1,HOLDING,MARKET);                                                          //提前1分钟清仓
END
二、收盘提前3分钟清仓(不是在最后一根K线上清仓)
[PEL] 复制代码
//不是最后一根K线上清仓,可以直接用time函数(K线时间)来控制
//演示范例运行在1分钟K线周期

N:BARSLAST(DATE<>REF(DATE,1))+1;                                                     //当日K线数量
CONKD:H>=HHV(H,2) AND C>=HHV(C,2) AND N>=3 AND TIME<185700;  //开多条件,加上时间控制,避免清仓后又再次开仓
CONKK:L<=LLV(L,2) AND C<=LLV(C,2) AND N>=3 AND TIME<185700;     //开空条件
CONPD:C<REF(L,1);                                                                               //平多条件
CONPK:C>REF(H,1);                                                                              //平空条件

SELL(CONPD AND HOLDING>0,HOLDING,MARKET);
SELLSHORT(CONPK AND HOLDING<0,HOLDING,MARKET);
BUY(CONKD,1,MARKET);
BUYSHORT(CONKK,1,MARKET);

IF TIME>185700 AND TIME<190000  THEN BEGIN                                   //提前3分钟清仓
      SELL(1,HOLDING,MARKET);
      SELLSHORT(1,HOLDING,MARKET);
END




金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

31

主题

107

帖子

117

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
发表于 2021-10-17 10:17 | 显示全部楼层
三、每个小节都提前X分钟平仓
//实现功能:每个小节都可以提前平仓
//此范例适用于图表程序化交易,适用于分钟周期
//使用固定轮询模式

[PEL] 复制代码
N:BARSLAST(DATE<>REF(DATE,1))+1;                     //当日K线数量
CONKD:H>=HHV(H,2) AND C>=HHV(C,2) AND N>=3 AND TIME<=185700;  //开多条件,最后一根K线上不开仓,加上时间控制,避免清仓后又再次开仓
CONKK:L<=LLV(L,2) AND C<=LLV(C,2) AND N>=3 AND TIME<=185700;      //开空条件
CONPD:C<REF(L,1);                                                                              //平多条件
CONPK:C>REF(H,1);                                                                             //平空条件

SELL(CONPD AND HOLDING>0,HOLDING,MARKET);
SELLSHORT(CONPK AND HOLDING<0,HOLDING,MARKET);
BUY(CONKD,1,MARKET);
BUYSHORT(CONKK,1,MARKET);

//有夜盘品种各小节平仓
IF CLOSETIME(0)=CLOSETIME(4) THEN BEGIN
   IF (ISLASTBAR AND T0TOTIME(TIMETOT0(CLOSETIME(1))-60)<=DYNAINFO(207)) OR (TIME=CLOSETIME(1) AND NOT(ISLASTBAR)) THEN   BEGIN  
      夜盘平多:SELL(1,HOLDING,MARKET);           
      夜盘平空:SELLSHORT(1,HOLDING,MARKET);                                   //夜盘品种,夜盘提前1分钟清仓
      END
  IF (ISLASTBAR AND T0TOTIME(TIMETOT0(CLOSETIME(3))-60)<=DYNAINFO(207)) OR (TIME=CLOSETIME(3) AND NOT(ISLASTBAR)) THEN   BEGIN  
      午盘平多:SELL(1,HOLDING,MARKET);           
      午盘平空:SELLSHORT(1,HOLDING,MARKET);                                  //夜盘品种,午盘提前1分钟清仓
      END
  IF (ISLASTBAR AND T0TOTIME(TIMETOT0(CLOSETIME(0))-60)<=DYNAINFO(207)) OR (TIME=CLOSETIME(0) AND NOT(ISLASTBAR)) THEN   BEGIN  
      尾盘平多:SELL(1,HOLDING,MARKET);           
      尾盘平空:SELLSHORT(1,HOLDING,MARKET);                                  //夜盘品种,尾盘提前1分钟清仓
      END
  END
  
//无夜盘品种各小节平仓
IF CLOSETIME(0)<>CLOSETIME(4) THEN BEGIN
     IF (ISLASTBAR AND T0TOTIME(TIMETOT0(CLOSETIME(2))-60)<=DYNAINFO(207)) OR (TIME=CLOSETIME(2) AND NOT(ISLASTBAR)) THEN   BEGIN  
      午盘平多1:SELL(1,HOLDING,MARKET);           
      午盘平空1:SELLSHORT(1,HOLDING,MARKET);                                //无夜盘品种,午盘提前1分钟清仓
      END
    IF (ISLASTBAR AND T0TOTIME(TIMETOT0(CLOSETIME(0))-60)<=DYNAINFO(207)) OR (TIME=CLOSETIME(0) AND NOT(ISLASTBAR)) THEN   BEGIN  
      尾盘平多1:SELL(1,HOLDING,MARKET);           
      尾盘平空1:SELLSHORT(1,HOLDING,MARKET);                                //无夜盘品种,尾盘提前1分钟清仓
      END
END
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-11-16 04:21 , Processed in 0.246607 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表