金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 1797|回复: 1

图标改后台程序化的控制语句不太会写了,帮忙看看,谢谢!

[复制链接]

35

主题

59

帖子

69

积分

Rank: 4

等级: 专业版

注册:
2022-1-11
曾用名:
发表于 2022-8-5 12:45 | 显示全部楼层 |阅读模式
RT
我的策略是震荡策略,基本在图表内能实现以下描述的策略,现在想变成后台程序化有点不会了,麻烦老师指点修改一下,谢谢!
{基本逻辑类似于网格的减仓策略
1:5根线P2 > P1 > LV > ZC1 > ZC2
2:只有在P1 - ZC1区间内开仓,其他区域不开仓;
3: 当CLOSE运行在P1 —— ZC1的区间内,在P1线下挂空仓2手,在ZC1线上挂多仓2手,用LMT挂直至当日收盘,哪个方向先成交就把剩余未成交的方向给撤单了;
4. 如果成交一部分,剩余追单继续挂单
5. 如果开仓成功了执行以下步骤:
——做多:
    (1) 止损2手:在ZC2全部止损,用STP
    (2) 止盈1手:达到LV中线时候,止盈1手,用MKT,止盈后同时设置移动止损至ZC1,用STP
    (3) 止盈1手: 达到P1时候, 平仓剩余手数;
——做空:
    (1) 止损2手:在P2全部止损,用STP
    (2) 止盈1手:达到LV中线时候,止盈1手,用MKT,止盈后同时设置移动止损至P1,用STP
    (3) 止盈1手: 达到ZC1时候, 平仓剩余手数;
——当天收盘前5分钟全平
6. 另外,需要判断区间,如果close运行到其他某一个区间内,之前在区间ZC1 —— P1 的挂单撤单
}

——————以下是我改写的后台语句,测试发现很多不对,请老师帮忙按照以上逻辑改写一下,谢谢!
RUNMODE: 1;
INPUT:SS(2, 2, 100, 2), N1(3, 2, 13, 1); //N1 = 开仓点位设置

//全局变量
VARIABLE: CCZTLONG = 2;   //开仓时候多头 = 2
VARIABLE: CCZTSHORT = -2; //开仓时候空头 = 2
VARIABLE: A = 0; //还是不太会设置追撤单的全局变量
VARIABLE : _DEBUGOUT = 1 ;                                //是否输出后台交易的调试信息

//控制日内交易次数
IF TTOTALDAYTRADE >= 3 THEN EXIT;

//网格绘制 P2 > P1 > LV > ZC1 > ZC2
P2: 1400;     //压力2            
P1: 1200;     //压力1
LV: 1000, LINEDASHDOT;      //中间基准               
ZC1: 800;    //支撑1                        
ZC2: 600;     //止损支撑2            

//中间变量
OPENAFTER:= (TIME > 132000 AND TIME < 181000);

//区间判断
ZC1_P1:= RANGE(CLOSE, ZC1, P1); //收盘在区间ZC1 - P1 的情况下,才挂单,如果运行到其他区域则需要把这个区域的挂单给取消掉

//开仓条件
//区域内操作  持仓状态 = -2
ZC1_P1_KCKK: = TSELLHOLDING(1) = 0 AND ZC1_P1;
//区域内操作  持仓状态 = 2
ZC1_P1_KCKD: = TBUYHOLDING(1) = 0 AND ZC1_P1;

//平仓条件
//平空时所在的区间
P1_LV_PK2: = TAVGENTERPRICEEX2('', '', 1) > LV AND TAVGENTERPRICEEX2('', '', 1) < P1 + N1 * MINDIFF; //卖持平均
//平多时所在的区间
LV_ZC1_PD2: = TAVGENTERPRICEEX2('', '', 0) > ZC1 - N1 * MINDIFF AND TAVGENTERPRICEEX2('', '', 0) < LV; //买持平均

//平仓全部止损条件
PK2ZS_P1_LV:= CLOSE >= P2 + N1 * MINDIFF();       //收盘大于P2 空全部止损
PD2ZS_LV_ZC1:= CLOSE <= ZC2 - N1 * MINDIFF();     //收盘小于ZC2 多全部止损

//止盈目标1 平仓全部1/2手条件   //到达LV 平一半,全局变量由+ - 2 变成+ - 1
PK1_P1_LV:= CLOSE <= LV + N1 * MINDIFF();
PD1_LV_ZC1:= CLOSE >= LV - N1 * MINDIFF();

//止盈目标1达到后 平仓全部1/2手后剩余止损条件,止盈后止损挪到 P1 和 ZC1, 且全局变量 = +-1 的时候
PK1ZS_P1_LV:= CLOSE >= P1 + N1 * MINDIFF() AND CCZTSHORT = -1;
PD1ZS_LV_ZC1:= CLOSE <= ZC1 - N1 * MINDIFF() AND CCZTLONG = 1;

//止盈目标2 平仓剩余手数条件,
PK2_P1_LV:= CLOSE <= ZC1 + N1 * MINDIFF;
PD2_LV_ZC1:= CLOSE >= P1 - N1 * MINDIFF;

//开仓语句
IF ZC1_P1_KCKK THEN BEGIN
    空仓开空_ZC1_P1: TBUYSHORT(1, SS, LMT, P1 - N1 * MINDIFF, 0), NOATTACK; //限价挂单不成交一直挂着直至成交或者收盘
END

IF ZC1_P1_KCKD THEN BEGIN
    空仓开多_ZC1_P1: TBUY(1, SS, LMT, ZC1 + N1 * MINDIFF, 0), NOATTACK; //限价挂单不成交一直挂着直至成交或者收盘
END

//平仓语句
IF P1_LV_PK2 AND TSELLHOLDING(1) < 0 THEN BEGIN
        平空损2_P1_LV: TSELLSHORT(PK2ZS_P1_LV, TSELLHOLDING(1), STP, P2 + N1 * MINDIFF()); //停损单在P2上下单
       
        平空1_P1_LV: TSELLSHORT(PK1_P1_LV, TSELLHOLDING(1) / 2, MKT, 0); // 达到止盈1市价出局
        IF 平空1_P1_LV THEN CCZTSHORT:= CCZTSHORT + 1; //更新全局变量
       
        平空损1_P1_LV: TSELLSHORT(CCZTSHORT = -1 AND PK1ZS_P1_LV, TSELLHOLDING(1), STP, P1 + N1 * MINDIFF()); //止盈1后向前移动止损
       
        平空2_P1_LV: TSELLSHORT(CCZTSHORT = -1 AND PK2_P1_LV, TSELLHOLDING(1), MKT, 0);
        IF 平空2_P1_LV OR 平空损1_P1_LV OR 平空损2_P1_LV THEN CCZTSHORT = -2; //恢复全局变量初始化
END       

IF LV_ZC1_PD2 AND TBUYHOLDING(1) > 0 THEN BEGIN
        平多损2_LV_ZC1: TSELL(PD2ZS_LV_ZC1, TBUYHOLDING(1), STP, ZC2 - N1 * MINDIFF()); //停损单在ZC2上下单
       
        平多1_P1_LV: TSELL(PD1_LV_ZC1, TBUYHOLDING(1) / 2, MKT, 0); // 达到止盈1市价出局
        IF 平多1_P1_LV THEN CCZTLONG:= CCZTLONG - 1; //更新全局变量
       
        平多损1_P1_LV: TSELL(CCZTLONG = 1 AND PD1ZS_LV_ZC1, TBUYHOLDING(1), STP, ZC1 - N1 * MINDIFF()); //止盈1后向前移动止损
       
        平多2_P1_LV: TSELL(CCZTLONG = 1 AND PD2_LV_ZC1, TBUYHOLDING(1), MKT, 0);
        IF 平多2_P1_LV OR 平多损1_P1_LV OR 平多损2_LV_ZC1 THEN CCZTLONG = 2; //恢复全局变量初始化
END

//监控未成交单 //多空如果哪个方向先成交了就把另一个挂单撤掉,如果有部分成交了,任何未成交的就追单 —— 追撤单这部分也就不太会写了
WCJ:= TREMAINQTY( 0, 0, 0);
IF WCJ<>0 THEN BEGIN
A:= WCJ;
END

//对未成交单撤单,并追单
IF WCJ > 0  THEN BEGIN
TCANCELEX(1,0,0,0 );
TBUY(WCJ=0,A,MKT,0, 0);
TSELL(WCJ=0,A,MKT,0,0,0);
END

//收盘前强平
IF CURRENTTIME>=185000 THEN BEGIN
TSELL(1,0,MKT,0,0,0);
TSELLSHORT(1,0,MKT,0,0,0);
END




回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-8-5 13:19 | 显示全部楼层
如果图表程序都ok情况的话,可以用混搭模式在图表策略基础上直接加后台语句去完成
http://www.weistock.com/bbs/dispbbs.asp?boardid=17&id=173706
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 04:07 , Processed in 0.211220 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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