金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 18|回复: 0

代码转变

[复制链接]

5

主题

35

帖子

35

积分

Rank: 1

等级: 新手上路

注册:
2024-4-19
曾用名:
发表于 2025-8-14 12:19 | 显示全部楼层 |阅读模式
//------------------------------------------------------------------------
// 大小波段通吃策略 - 金字塔PEL语言实现
// 核心逻辑:动态识别波段周期 + 均线金叉全仓买入 + 波段高点全仓卖出 + 2.5%止损
// 目标胜率:80%以上
//------------------------------------------------------------------------

// 动态参数设置
INPUT:
    STOPLOSS(2.5, 1, 5, 0.1, '止损比例(%)');        // 2.5%止损
    MIN_BAND(10, 5, 30, 1, '最小波段周期');         // 小波段周期
    MAX_BAND(30, 20, 60, 1, '最大波段周期');        // 大波段周期
    VOLFACTOR(1.8, 1.2, 3, 0.1, '量能系数');       // 量能放大系数
    ATR_PERIOD(14, 7, 21, 1, '波动率周期');         // ATR波动率周期
    TREND_FILTER(1, 0, 1, 1, '趋势过滤(0关1开)');   // 趋势过滤开关

// 动态波段周期计算(基于市场波动率)
TR := MAX(MAX((HIGH-LOW), ABS(REF(CLOSE,1)-HIGH)), ABS(REF(CLOSE,1)-LOW));
ATR := MA(TR, ATR_PERIOD);
VOLATILITY := ATR/CLOSE*100;  // 波动率百分比

// 根据波动率动态调整波段周期
BAND_PERIOD := IFELSE(VOLATILITY > 5, MIN_BAND,
                IFELSE(VOLATILITY > 3, (MIN_BAND+MAX_BAND)/2, MAX_BAND));

// 计算核心指标
MA5:MA(CLOSE,5);                                // 5日均线
MA20:MA(CLOSE,20);                              // 20日均线
VOLMA5:MA(VOLUME,5);                            // 5日均量线

// 动态波段高低点计算
LOWBAND:LLV(LOW,BAND_PERIOD);                   // 动态波段低点
HIGHBAND:HHV(HIGH,BAND_PERIOD);                 // 动态波段高点

// 趋势过滤指标(可选)
MA60:MA(CLOSE,60);                              // 60日均线(趋势过滤)
UPTREND := IFELSE(TREND_FILTER=1, CLOSE>MA60, 1); // 上升趋势标志

// 交易信号变量
BUY_SIGNAL:0;          // 买入信号
SELL_SIGNAL:0;         // 卖出信号
STOP_SIGNAL:0;         // 止损信号

// 状态跟踪变量
ENTRY_PRICE:0;         // 入场价格
CONFIRM_COUNT:0;       // 信号确认计数器
BAND_TYPE:'';          // 波段类型('小波段','中波段','大波段')

// 初始化(每根K线开始时重置信号)
BUY_SIGNAL:=0;
SELL_SIGNAL:=0;
STOP_SIGNAL:=0;

// 波段类型判断
BAND_SIZE := IFELSE(BAND_PERIOD<=MIN_BAND+5, '小波段',
              IFELSE(BAND_PERIOD<=(MIN_BAND+MAX_BAND)/2, '中波段', '大波段'));

// 买入条件判断
LOW_THRESHOLD := LOWBAND*(1+0.01*VOLATILITY/2); // 波动率自适应低点阈值
BUY_CONDITION1 := LOW<=LOW_THRESHOLD;            // 触及动态波段低点区域
BUY_CONDITION2 := CROSS(MA5,MA20);               // 5日线上穿20日线
BUY_CONDITION3 := VOLUME>VOLMA5*VOLFACTOR;       // 量能放大
BUY_CONDITION4 := UPTREND;                       // 趋势过滤

// 卖出条件判断
HIGH_THRESHOLD := HIGHBAND*(1-0.01*VOLATILITY/2); // 波动率自适应高点阈值
SELL_CONDITION1 := HIGH>=HIGH_THRESHOLD;          // 触及动态波段高点区域
SELL_CONDITION2 := VOLUME>VOLMA5*1.2;             // 高位放量
SELL_CONDITION3 := CROSS(MA20,MA5);               // 死叉信号(备选)

// 空仓时处理买入信号
IF HOLDING=0 THEN BEGIN
    // 满足买入条件时增加确认计数
    IF BUY_CONDITION1 AND BUY_CONDITION2 AND BUY_CONDITION3 AND BUY_CONDITION4 THEN
        CONFIRM_COUNT:=CONFIRM_COUNT+1;
    ELSE
        CONFIRM_COUNT:=0;

    // 确认信号达到要求后发出买入指令
    IF CONFIRM_COUNT>=1 THEN BEGIN  // 小波段需要快速反应,只需1根K线确认
        BUY_SIGNAL:=1;
        ENTRY_PRICE:=CLOSE;                     // 记录入场价格
        CONFIRM_COUNT:=0;                       // 重置计数器
        BAND_TYPE:=BAND_SIZE;                   // 记录当前波段类型
    END;
END;

// 持仓时处理卖出和止损
IF HOLDING>0 THEN BEGIN
    // 计算止损价格
    STOP_PRICE := ENTRY_PRICE*(1-STOPLOSS/100);

    // 止损检查
    IF CLOSE<=STOP_PRICE THEN BEGIN
        STOP_SIGNAL:=1;
    END;

    // 根据波段类型设置不同卖出条件
    IF BAND_TYPE='小波段' THEN BEGIN
        // 小波段:快速止盈,只需价格触及高点区域
        IF SELL_CONDITION1 THEN
            SELL_SIGNAL:=1;
    END
    ELSE IF BAND_TYPE='中波段' THEN BEGIN
        // 中波段:价格触及高点+量能确认
        IF SELL_CONDITION1 AND SELL_CONDITION2 THEN
            SELL_SIGNAL:=1;
    END
    ELSE BEGIN
        // 大波段:价格触及高点+量能确认+死叉信号
        IF SELL_CONDITION1 AND SELL_CONDITION2 AND SELL_CONDITION3 THEN
            SELL_SIGNAL:=1;
    END;
END;

// 交易指令执行
IF BUY_SIGNAL=1 THEN BEGIN
    BUY(1,0,MARKET);  // 全仓买入
    COMMENT('【',BAND_TYPE,'买入】价格:',CLOSE,
           ' 周期:',BAND_PERIOD,'天 波动率:',VOLATILITY:0:1,'%');
END;

IF SELL_SIGNAL=1 THEN BEGIN
    SELL(1,0,MARKET); // 全仓卖出
    PROFIT:=(CLOSE-ENTRY_PRICE)/ENTRY_PRICE*100;
    COMMENT('【',BAND_TYPE,'卖出】价格:',CLOSE,' 盈利:',NUMTOSTR(PROFIT,2),'%');
END;

IF STOP_SIGNAL=1 THEN BEGIN
    SELL(1,0,MARKET); // 止损卖出
    LOSS:=(CLOSE-ENTRY_PRICE)/ENTRY_PRICE*100;
    COMMENT('【止损】类型:',BAND_TYPE,' 亏损:',NUMTOSTR(LOSS,2),'%');
END;

// 高级可视化系统
// 1. 动态波段通道
UPPERBAND: HIGHBAND;
LOWERBAND: LOWBAND;
DRAWBAND(UPPERBAND, COLORRGB(255,100,100,30), LOWERBAND, COLORRGB(100,255,100,30));

// 2. 买卖信号标记
DRAWICON(BUY_SIGNAL,LOW*0.98,1);    // 买入信号图标
DRAWICON(SELL_SIGNAL,HIGH*1.02,2);  // 卖出信号图标
DRAWICON(STOP_SIGNAL,HIGH*1.02,3);  // 止损信号图标

// 3. 波段类型标签
DRAWTEXT(BARPOS=1, HIGH*1.1, '波段类型: '+BAND_TYPE), COLORYELLOW;

// 4. 均线系统
DRAWLINE2(MA5, COLORRED, 0, 'MA5');
DRAWLINE2(MA20, COLORBLUE, 0, 'MA20');
DRAWLINE2(MA60, COLORGRAY, 0, 'MA60');

// 5. 动态止损线
IF HOLDING>0 THEN BEGIN
    DRAWLINE3(STOP_PRICE, COLORGREEN, 0, '止损线');
END;

// 6. 波动率指示器
DRAWNUMBER(BARPOS=1, HIGH*1.15, VOLATILITY), COLORCYAN;
DRAWTEXT(BARPOS=1, HIGH*1.18, '波动率%:'), COLORCYAN;

// 策略结束







能帮我把上面的代码转变成金字塔的交易策略吗?

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-19 05:14 , Processed in 0.097135 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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