金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 59|回复: 8

求助:加减仓策略当跟k线就平仓,怎么解决?

[复制链接]

3

主题

10

帖子

10

积分

Rank: 1

等级: 新手上路

注册:
2025-3-12
曾用名:
发表于 2025-5-19 11:18 | 显示全部楼层 |阅读模式
我加仓策略老是在当跟K线就平仓,不知道问题出在哪?应该怎么解决
1、我在策略上要求了不能再当跟K线平仓;2、策略是:做多是,站上20日均线就加仓,跌破20均线下面价格,?就止盈仓位一半;

// 声明全局变量(变量名符合长度限制)
VARIABLE:
    zs1:=0,
    jc_cnt_lg=0,     // 多头加仓计数
    jc_cnt_sh=0,     // 空头加仓计数
    last_jc_lg=0,    // 多头最后加仓时间
    last_jc_sh=0,    // 空头最后加仓时间
    last_pc_lg=0,    // 多头最后平仓时间
    last_pc_sh=0;    // 空头最后平仓时间

// 大单滑点控制设置 [1]()
TSETSLITHERMETHOD(1000,1000);  // 设置开平最大处理量
TSETTRADEROPTION(1,3);         // 减少市场冲击模式
  // 加减仓模块优化
    // 做多加仓逻辑(新增K线间隔判断)
    IF HOLDING > 0 AND CLOSE > MA20 AND jc_cnt_lg < 2 AND TIME != last_jc_lg THEN BEGIN
        BUY(1, 2, MARKET);
        jc_cnt_lg := jc_cnt_lg + 1;
        last_jc_lg := TIME;
    END

    // 做空加仓逻辑(新增K线间隔判断)
    IF HOLDING < 0 AND CLOSE < MA20 AND jc_cnt_sh < 2 AND TIME != last_jc_sh THEN BEGIN
        BUYSHORT(1, 2, MARKET);
        jc_cnt_sh := jc_cnt_sh + 1;
        last_jc_sh := TIME;
    END

    // 止盈逻辑(新增时间间隔判断)
    IF HOLDING > 0 AND CLOSE < MA20 * 0.995 AND TIME > last_pc_lg THEN BEGIN
        SELL(1, ABS(HOLDING) / 2, MARKET);
        last_pc_lg := TIME;
    END
    IF HOLDING < 0 AND CLOSE > MA20 * 1.005 AND TIME > last_pc_sh THEN BEGIN
        SELLSHORT(1, ABS(HOLDING) / 2, MARKET);
        last_pc_sh := TIME;
    END
END


回复

使用道具 举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-5-19 11:26 | 显示全部楼层
// 声明全局变量(变量名符合长度限制)
VARIABLE:
    zs1:=0,
    jc_cnt_lg=0,     // 多头加仓计数
    jc_cnt_sh=0,     // 空头加仓计数
    last_jc_lg=0,    // 多头最后加仓时间
    last_jc_sh=0,    // 空头最后加仓时间
    last_pc_lg=0,    // 多头最后平仓时间
    last_pc_sh=0;    // 空头最后平仓时间

// 大单滑点控制设置 [1]()
TSETSLITHERMETHOD(1000,1000);  // 设置开平最大处理量
TSETTRADEROPTION(1,3);         // 减少市场冲击模式
  // 加减仓模块优化
    // 做多加仓逻辑(新增K线间隔判断)
    IF HOLDING > 0 AND CLOSE > MA20 AND jc_cnt_lg < 2 AND TIME != last_jc_lg THEN BEGIN
        BUY(1, 2, MARKET);
        jc_cnt_lg := jc_cnt_lg + 1;
        last_jc_lg := TIME;
    END

    // 做空加仓逻辑(新增K线间隔判断)
    IF HOLDING < 0 AND CLOSE < MA20 AND jc_cnt_sh < 2 AND TIME != last_jc_sh THEN BEGIN
        BUYSHORT(1, 2, MARKET);
        jc_cnt_sh := jc_cnt_sh + 1;
        last_jc_sh := TIME;
    END

    // 止盈逻辑(新增时间间隔判断)
    IF HOLDING > 0 AND CLOSE < MA20 * 0.995 AND TIME > last_pc_lg and enterbars>0  THEN BEGIN
        SELL(1, ABS(HOLDING) / 2, MARKET);
        last_pc_lg := TIME;
    END
    IF HOLDING < 0 AND CLOSE > MA20 * 1.005 AND TIME > last_pc_sh and enterbars>0 THEN BEGIN
        SELLSHORT(1, ABS(HOLDING) / 2, MARKET);
        last_pc_sh := TIME;
    END
END
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

3

主题

10

帖子

10

积分

Rank: 1

等级: 新手上路

注册:
2025-3-12
曾用名:
 楼主| 发表于 2025-5-20 08:58 | 显示全部楼层
技术008 发表于 2025-5-19 11:26
// 声明全局变量(变量名符合长度限制)
VARIABLE:
    zs1:=0,

没看出做啥子改变呢??
回复

使用道具 举报

3

主题

10

帖子

10

积分

Rank: 1

等级: 新手上路

注册:
2025-3-12
曾用名:
 楼主| 发表于 2025-5-20 09:17 | 显示全部楼层
技术008 发表于 2025-5-19 11:26
// 声明全局变量(变量名符合长度限制)
VARIABLE:
    zs1:=0,

修改后的策略还是在当根K线就平仓,没有解决问题啊??
虽然增加了:[color=rgba(0, 0, 0, 0.9)]增加了enterbars>0[color=rgba(0, 0, 0, 0.9)]的判断条件
回测截图.png
回复

使用道具 举报

37

主题

9933

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2025-5-20 09:39 | 显示全部楼层
欣欣向荣 发表于 2025-5-20 08:58
没看出做啥子改变呢??

技术008增加了enterbars的控制,但是作用应该不大。顶多也就控制策略在开仓当根k上不产生平仓罢了

1楼提供的部分代码中,开仓条件CLOSE > MA20和平常条件CLOSE < MA20 * 0.995 的关系中,这两个条件在很多时候都是会同时成立的。你应该对自己的条件逻辑做新的补充限制。或者更换条件。避免条件逻辑的冲突重叠

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

使用道具 举报

3

主题

10

帖子

10

积分

Rank: 1

等级: 新手上路

注册:
2025-3-12
曾用名:
 楼主| 发表于 2025-5-20 09:48 | 显示全部楼层
技术006 发表于 2025-5-20 09:39
技术008增加了enterbars的控制,但是作用应该不大。顶多也就控制策略在开仓当根k上不产生平仓罢了

1楼 ...

开仓没有问题,关键是平仓为什么?当跟k线就平了,根本就没有往后走,或者出发平仓条件啊
回复

使用道具 举报

37

主题

9933

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2025-5-20 10:22 | 显示全部楼层
你自己把代码放在k线图上就能知道。很多时候在CLOSE 和 MA20非常接近时,CLOSE > MA20成立,那么CLOSE < MA20 * 0.995也会成立。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

3

主题

10

帖子

10

积分

Rank: 1

等级: 新手上路

注册:
2025-3-12
曾用名:
 楼主| 发表于 2025-5-20 15:42 | 显示全部楼层
技术006 发表于 2025-5-20 10:22
你自己把代码放在k线图上就能知道。很多时候在CLOSE 和 MA20非常接近时,CLOSE > MA20成立,那么CLOSE < MA ...

兄弟,很多时候在CLOSE 和 MA20非常接近时,CLOSE > MA20成立,那么CLOSE < MA20 * 0.995也会成立。你这句话真不懂呢??CLOSE < MA20 * 0.995还是有几十个点的差距呢?如果要解决中问题?有什么办法么??
回复

使用道具 举报

37

主题

9933

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2025-5-20 16:09 | 显示全部楼层
CLOSE > MA20成立,那么CLOSE < MA20 * 0.995,这个互斥的,我前面看错逻辑关系了。

你直接按照下面的调试方式分析原因:
直接k线图上,直接输条件结果,显示出各个条件因子的值。人为的算下条件就能知道实际原因。(我们没有建议可以提供,这种取决于你的交易思想逻辑。需要你针对自己的逻辑进行完善优化。)
例如:
aaa:HOLDING;
bbb:MA20 * 0.995;
ccc:last_pc_lg;
    // 止盈逻辑(新增时间间隔判断)
    IF HOLDING > 0 AND CLOSE < MA20 * 0.995 AND TIME > last_pc_lg THEN BEGIN
        SELL(1, ABS(HOLDING) / 2, MARKET);
        last_pc_lg := TIME;
    END
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-24 20:11 , Processed in 0.166504 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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