金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 焕然一新

用DS做个量化策略,通不过编译,麻烦老师帮忙完善一下

[复制链接]

1

主题

14

帖子

14

积分

Rank: 1

等级: 新手上路

注册:
2025-3-3
曾用名:
 楼主| 发表于 2025-3-4 11:04 | 显示全部楼层
你好老师,这个策略手数改变是哪个变量
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-3-4 11:06 | 显示全部楼层
ss:=2;//手数
if 买进 then
begin
sellshort(1,holding,marketr);
buy(1,ss,marketr);
end
if 卖出 then
begin
sell(1,holding,marketr);
buyshort(1,ss,marketr);
end

开平仓函数第二个参数就是手数参数。建议阅读下基本的函数说明。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

14

帖子

14

积分

Rank: 1

等级: 新手上路

注册:
2025-3-3
曾用名:
 楼主| 发表于 2025-3-4 11:46 | 显示全部楼层
你好老师,我的策略用DS优化一下,通不过编译,麻烦给完善一下
回复

使用道具 举报

1

主题

14

帖子

14

积分

Rank: 1

等级: 新手上路

注册:
2025-3-3
曾用名:
 楼主| 发表于 2025-3-4 11:47 | 显示全部楼层
// 参数优化部分(增加自适应参数)
INPUT:
    N1(10,5,30,1),      // 基础周期参数(缩短优化区间)
    M1(3.0,1.5,5.0,0.5),// 波动系数(扩大适用区间)
    StopLossPct(2,1,5,0.5); // 止损幅度

// 消除未来函数的核心修改
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR,N1);          // 使用标准ATR计算

// 通道计算改进(增加平滑处理)
MID:=(HIGH+LOW)/2;
UP:=MID + ATR*M1*0.618;  // 黄金分割比例优化
DN:=MID - ATR*M1*0.618;

// 趋势判断逻辑重构(避免BARSLAST依赖)
VAR1:=C>UP && C>REF(UP,1);  // 突破上轨且趋势向上
VAR2:=C<DN && C<REF(DN,1);  // 跌破下轨且趋势向下

// 超级趋势线重构(多条件确认)
SUPERTREN:IF(VAR1,DN,UP),COLORGREEN;  // 基础趋势线
TREND_DIR:=BARSLAST(CROSS(C,SUPERTREN)) < BARSLAST(CROSS(SUPERTREN,C));

// 增强型信号过滤系统
COND_LONG:=C>SUPERTREN AND
          VOL>MA(VOL,20)*1.2 AND      // 成交量过滤
          MACD.DIF>MACD.DEA;          // 增加MACD确认

COND_SHORT:=C<SUPERTREN AND
           VOL<MA(VOL,20)*0.8 AND
           MACD.DIF<MACD.DEA;

// 动态仓位管理模块
CAPITAL:=TACCOUNT(4);  // 获取账户总资金
RiskPerTrade:=CAPITAL*0.02;  // 单笔风险2%
PosSize:=INTPART(RiskPerTrade/(ATR*StopLossPct));  // 基于波动率的仓位

// 交易信号系统改进
买进信号:=CROSS(C,SUPERTREN) AND COND_LONG;
卖出信号:=CROSS(SUPERTREN,C) AND COND_SHORT;

// 增加止损模块
止损线:=IF(TREND_DIR,SUPERTREN*(1-StopLossPct/100),SUPERTREN*(1+StopLossPct/100));
止损条件:=CROSS(止损线,C);

// 交易执行系统
IF 买进信号 THEN BEGIN
    SELLSHORT(HOLDING<0,0,MARKET);
    BUY(HOLDING=0,PosSize,MARKET);
END

IF 卖出信号 OR 止损条件 THEN BEGIN
    SELL(HOLDING>0,0,MARKET);
    BUYSHORT(HOLDING=0,PosSize,MARKET);
END

// 可视化增强
DRAWICON(买进信号,LOW*0.98,1);
DRAWICON(卖出信号,HIGH*1.02,2);
PLOYLINE(TREND_DIR,SUPERTREN),COLORRED;
PLOYLINE(NOT(TREND_DIR),SUPERTREN),COLORGREEN;
回复

使用道具 举报

1

主题

14

帖子

14

积分

Rank: 1

等级: 新手上路

注册:
2025-3-3
曾用名:
 楼主| 发表于 2025-3-4 11:57 | 显示全部楼层
//======= 核心参数 =======//
INPUT:
    TrendPeriod(14,5,30),    // 趋势判断周期
    OscThreshold(0.3,0.1,0.5),// 震荡阈值
    ATRMult(2.5,1,5),        // ATR通道乘数
    RSIPeriod(14,5,30);      // RSI震荡参数

//======= 市场状态判断模块 =======//
// ADX趋势强度指标
TR := SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))), TrendPeriod);
PlusDM := SUM(IF(HIGH-REF(HIGH,1) > REF(LOW,1)-LOW, MAX(HIGH-REF(HIGH,1),0),0), TrendPeriod);
MinusDM := SUM(IF(REF(LOW,1)-LOW > HIGH-REF(HIGH,1), MAX(REF(LOW,1)-LOW,0),0), TrendPeriod);
DIplus := PlusDM / TR * 100;
DIminus := MinusDM / TR * 100;
ADX := MA(ABS(DIplus - DIminus) / (DIplus + DIminus) * 100, TrendPeriod);

// 波动率收缩检测(布林带宽)
BBWidth := (BBANDS(CLOSE,20,2).UpperBand - BBANDS(CLOSE,20,2).LowerBand) / MA(CLOSE,20);
IsOscMarket := ADX < 20 AND BBWidth < OscThreshold;  // 震荡市场条件
IsTrendMarket := ADX > 25 AND BBWidth > OscThreshold*1.5; // 趋势市场条件

//======= 双模式信号系统 =======//
// 趋势跟踪信号(当确认趋势时)
TrendEntry := C > VALUEWHEN(IsTrendMarket, HHV(HIGH,5)) AND
             VOLUME > MA(VOLUME,20) * 1.5;
TrendExit := C < LLV(LOW,10) OR
            (CLOSE < MA(CLOSE,50) AND VOLUME < MA(VOLUME,20)*0.8);

// 震荡反转信号(当市场震荡时)
RSIValue := RSI(CLOSE, RSIPeriod);
OscBuySignal := CROSS(RSIValue,30) AND IsOscMarket AND
               CLOSE < BBANDS(CLOSE,20,2).LowerBand * 1.02;
OscSellSignal := CROSS(70,RSIValue) AND IsOscMarket AND
                CLOSE > BBANDS(CLOSE,20,2).UpperBand * 0.98;

//======= 自适应交易系统 =======//
// 动态仓位调整(趋势行情加仓)
RiskRatio := IF(IsTrendMarket, 0.04, 0.02);  // 趋势市场风险提高
PosSize := INTPART(TACCOUNT(4)*RiskRatio / (ATR(14)*2));

// 混合信号生成
FinalBuySignal := (IsTrendMarket AND TrendEntry) OR
                 (IsOscMarket AND OscBuySignal);
FinalSellSignal := (IsTrendMarket AND TrendExit) OR
                  (IsOscMarket AND OscSellSignal);

//======= 执行系统 =======//
IF FinalBuySignal THEN BEGIN
    SELLSHORT(HOLDING<0,0,MARKET);
    BUY(HOLDING=0,PosSize,MARKET);
    // 趋势行情采用移动止损
    IF IsTrendMarket THEN
        SELL(C < LOWEST(LOW,3),HOLDING,MARKET);
END

IF FinalSellSignal THEN BEGIN
    SELL(HOLDING>0,0,MARKET);
    BUYSHORT(HOLDING=0,PosSize,MARKET);
    // 震荡行情固定止盈
    IF IsOscMarket THEN
        BUYTOCOVER(C < ENTRYPRICE*0.98,HOLDING,MARKET);
END

//======= 可视化增强 =======//
FILLRGN(IsOscMarket,0,COLORRGB(100,100,200,30));  // 蓝色背景标记震荡
FILLRGN(IsTrendMarket,0,COLORRGB(200,100,100,30));// 红色背景标记趋势
DRAWICON(FinalBuySignal,LOW*0.98,1);
DRAWICON(FinalSellSignal,HIGH*1.02,2);
回复

使用道具 举报

1

主题

14

帖子

14

积分

Rank: 1

等级: 新手上路

注册:
2025-3-3
曾用名:
 楼主| 发表于 2025-3-4 11:57 | 显示全部楼层
以最后一个为准
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-3-4 11:58 | 显示全部楼层
[PEL] 复制代码
// 参数优化部分(增加自适应参数)
INPUT:
    N1(10,5,30,1),      // 基础周期参数(缩短优化区间)
    M1(3.0,1.5,5.0,0.5),// 波动系数(扩大适用区间)
    StopLossPct(2,1,5,0.5); // 止损幅度


ATR:=MA(TR,N1);          // 使用标准ATR计算

// 通道计算改进(增加平滑处理)
MID:=(HIGH+LOW)/2;
UP:=MID + ATR*M1*0.618;  // 黄金分割比例优化
DN:=MID - ATR*M1*0.618;

// 趋势判断逻辑重构(避免BARSLAST依赖)
VAR1:=C>UP && C>REF(UP,1);  // 突破上轨且趋势向上
VAR2:=C<DN && C<REF(DN,1);  // 跌破下轨且趋势向下

// 超级趋势线重构(多条件确认)
SUPERTREN:IF(VAR1,DN,UP),COLORGREEN;  // 基础趋势线
TREND_DIR:=BARSLAST(CROSS(C,SUPERTREN)) < BARSLAST(CROSS(SUPERTREN,C));

MACD:"macd.MACD1";
// 增强型信号过滤系统
COND_LONG:=C>SUPERTREN AND
          VOL>MA(VOL,20)*1.2 AND      // 成交量过滤
          MACD>0;          // 增加MACD确认

COND_SHORT:=C<SUPERTREN AND
           VOL<MA(VOL,20)*0.8 AND
           MACD<0;

// 动态仓位管理模块
RiskPerTrade:=ASSET*0.02;  // 单笔风险2%
PosSize:=INTPART(RiskPerTrade/(ATR*StopLossPct));  // 基于波动率的仓位

// 交易信号系统改进
买进信号:=CROSS(C,SUPERTREN) AND COND_LONG;
卖出信号:=CROSS(SUPERTREN,C) AND COND_SHORT;

// 增加止损模块
止损线:=IF(TREND_DIR,SUPERTREN*(1-StopLossPct/100),SUPERTREN*(1+StopLossPct/100));
止损条件:=CROSS(止损线,C);

// 交易执行系统
IF 买进信号 THEN BEGIN
    SELLSHORT(HOLDING<0,0,MARKET);
    BUY(HOLDING=0,PosSize,MARKET);
END

IF 卖出信号 OR 止损条件 THEN BEGIN
    SELL(HOLDING>0,0,MARKET);
    BUYSHORT(HOLDING=0,PosSize,MARKET);
END

// 可视化增强
DRAWICON(买进信号,LOW*0.98,1);
DRAWICON(卖出信号,HIGH*1.02,2);
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

14

帖子

14

积分

Rank: 1

等级: 新手上路

注册:
2025-3-3
曾用名:
 楼主| 发表于 2025-3-5 08:42 | 显示全部楼层
谢谢
回复

使用道具 举报

1

主题

14

帖子

14

积分

Rank: 1

等级: 新手上路

注册:
2025-3-3
曾用名:
 楼主| 发表于 2025-3-5 09:19 | 显示全部楼层
你好老师,改进后的策略怎么没有多头空头的划线?
回复

使用道具 举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-3-5 09:24 | 显示全部楼层
查看-显示交易信号连线
截图202503050924235631.png
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-28 11:29 , Processed in 0.173117 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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