金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 6|回复: 3

有关代码编写的问题

[复制链接]

1

主题

2

帖子

2

积分

Rank: 1

等级: 新手上路

注册:
2025-5-14
曾用名:
发表于 2025-5-14 16:45 | 显示全部楼层 |阅读模式
老师,我有一个策略模型的思路,而且在文华的软件上已经编写过一个可以回测的源码。但是现在发现金字塔的逻辑和文华不同。请教老师,我把文华的源码贴过来,能请老师帮我改成金字塔的代码不?感谢感谢
回复

使用道具 举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-5-14 16:59 | 显示全部楼层
代码贴下
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

2

帖子

2

积分

Rank: 1

等级: 新手上路

注册:
2025-5-14
曾用名:
 楼主| 发表于 2025-5-14 17:56 | 显示全部楼层
//★☆★ 海龟多因子动态过滤 ★☆★
// 本模型在传统海龟策略基础上引入动态通道与波动率过滤
// 核心改进:动态通道宽度调节+波动环境识别

Setting
    AddTimes:11;
    Review_Data:Auto;
    NoCheck:True;
Params
    Numeric RiskRatio(3);
    Numeric ATRLength(15);       // 修改为14日ATR标准周期
    Numeric boLength(17);
    Numeric fsLength(25);
    Numeric teLength(7);
    Numeric VolLookback(23);    // 新增波动率观测周期
Vars
    NumericSeries AvgTR;
    Numeric AN;
    Numeric TotalEquity;
    Numeric TurtleUnits;
    NumericSeries DonchianHi;
    NumericSeries DonchianLo;
    NumericSeries fsDonchianHi;
    NumericSeries fsDonchianLo;
    Numeric ExitHighestPrice;
    Numeric ExitLowestPrice;
    NumericSeries PreBreakoutFailure;
    Numeric ATR_Ratio;          // 新增波动率比率
    Numeric VOLATILITY_FILTER;  // 使用 Numeric 类型替代 Bool 类型
    Numeric VOL_5;              // 5日成交量均值
    Numeric VOL_20;             // 20日成交量均值
    NumericSeries RSI_14;       // 14日RSI
    Numeric DynamicStopLoss;    // 将 DynamicStopLoss 定义移到 Vars 块

Begin
    //==================== 新增指标计算 ====================//
    // 波动率过滤核心指标
    AvgTR = XAverage(TrueRange, ATRLength);
    ATR_Ratio = AvgTR / MA(AvgTR, VolLookback);
    VOLATILITY_FILTER = ATR_Ratio > 0.8;  // 若条件成立,VOLATILITY_FILTER 为 1,否则为 0
   
    // 量价共振因子计算
    VOL_5 = MA(VOL, 5);
    VOL_20 = MA(VOL, 20);
   
    // RSI动量缓冲因子,手动计算RSI值
    RSI_14 = Sma(Max(Close - Ref(Close, 1), 0), 14, 1) / Sma(Abs(Close - Ref(Close, 1)), 14, 1) * 100;
   
    //==================== 动态通道重构 ====================//
    // 短周期动态通道(20日)
    DonchianHi = Highest(High[1], boLength) + 0.7 * AvgTR[1] * (AvgTR[1] / MA(AvgTR, 60));
    DonchianLo = Lowest(Low[1], boLength) - 0.5 * AvgTR[1] * (AvgTR[1] / MA(AvgTR, 60));
   
    // 长周期双因子动态通道(55日)
    fsDonchianHi = Highest(High[1], fsLength) + 1.2 * AvgTR[1] * (1 + VOL_5 / VOL_20);
    fsDonchianLo = Lowest(Low[1], fsLength) - 0.8 * AvgTR[1] * (1 - RSI_14 / 100);
   
    //==================== 资金管理模块 ====================//
    AN = AvgTR[1];
    TotalEquity = MoneyTot;
    TurtleUnits = (TotalEquity * RiskRatio / 100) / (AN * ContractUnit());
    TurtleUnits = IntPart(TurtleUnits);
   
    //==================== 交易信号模块 ====================//
    // 做多主信号(增加波动率过滤)
    If(BKVol == 0 && SKVol == 0 && PreBreakoutFailure == 0 && VOLATILITY_FILTER == 1)
    {
        If(High > DonchianHi && TurtleUnits >= 1)
        {
            BK(TurtleUnits);
        }
    }
   
    // 长周期做多后备信号
    If(BKVol == 0 && SKVol == 0 && VOLATILITY_FILTER == 1)
    {
        If(High > fsDonchianHi && TurtleUnits >= 1)
        {
            BK(TurtleUnits);
        }
    }
   
    // 做空主信号(增加波动率过滤)
    If(BKVol == 0 && SKVol == 0 && PreBreakoutFailure == 0 && VOLATILITY_FILTER == 1)
    {
        If(Low < DonchianLo && TurtleUnits >= 1)
        {
            SK(TurtleUnits);
        }
    }
   
    // 长周期做空后备信号
    If(BKVol == 0 && SKVol == 0 && VOLATILITY_FILTER == 1)
    {
        If(Low < fsDonchianLo && TurtleUnits >= 1)
        {
            SK(TurtleUnits);
        }
    }
   
    //==================== 完整持仓管理 ====================//
    // 多头持仓管理
    If(BKVol > 0)
    {
        // 动态计算离场阈值
        ExitLowestPrice = Lowest(Low[1], teLength);
        
        // 趋势跟随离场
        If(Low < ExitLowestPrice)
        {
            SP(BKVol);
        }
        Else
        {
            // 金字塔加仓逻辑
            If(IsNull(BKPrice) == 0 && TurtleUnits >= 1)
            {
                If(High >= BKPrice + 0.5 * AN)
                {
                    BK(TurtleUnits);
                }
            }
            
            // 动态止损(波动率补偿)
            DynamicStopLoss = 2 * AN * (1 + ATR_Ratio);
            If(Low <= BKPrice - DynamicStopLoss)
            {
                SP(BKVol);
            }
        }
    }

    // 空头持仓管理
    If(SKVol > 0)
    {
        // 动态计算离场阈值
        ExitHighestPrice = Highest(High[1], teLength);
        
        // 趋势跟随离场
        If(High > ExitHighestPrice)
        {
            BP(SKVol);
        }
        Else
        {
            // 金字塔加仓逻辑
            If(IsNull(SKPrice) == 0 && TurtleUnits >= 1)
            {
                If(Low <= SKPrice - 0.5 * AN)
                {
                    SK(TurtleUnits);
                }
            }
            
            // 动态止损(波动率补偿)
            DynamicStopLoss = 2 * AN * (1 + ATR_Ratio);
            If(High >= SKPrice + DynamicStopLoss)
            {
                BP(SKVol);
            }
        }
    }
End
回复

使用道具 举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-5-14 20:47 | 显示全部楼层
这个不是文华的把,这个属于类c语法了没办法直接翻译
你最好提供策略思路,重写编写
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-14 22:47 , Processed in 0.110111 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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