金字塔决策交易系统

用户名  找回密码
 

微信登录

微信扫一扫,快速登录

帖子
查看: 1098|回复: 23

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

[复制链接]

1

主题

14

帖子

14

积分

Rank: 1

等级: 新手上路

注册:
2025-3-3
曾用名:
发表于 2025-3-3 09:45 | 显示全部楼层 |阅读模式
//------ 策略参数 ------
INPUT:
    趋势周期(20,1,60),
    灵敏度(1.5,0.5,3.0),
    ATR周期(14,5,30),
    最大风险(2,0.1,10),
    最小波动(0.003,0.001,0.01),
    追踪比例(0.5,0.1,1.0),
    开始时间(930,0,2359),
    结束时间(1455,0,2359);

//------ 变量声明 ------
VARIABLE:
    持仓状态(0),                // 0-空仓 1-多仓 -1-空仓
    动态止损价(0),
    动态止盈价(0);

// 序列变量声明(关键修正)
NumericSeries 当日最高(High);    // 正确初始化序列变量
NumericSeries 当日最低(Low);   
NumericSeries EMA线(Close);     
NumericSeries TR值(0);         
NumericSeries 基准波动(0);       // 修正点:基准波动改为序列变量

//------ 初始化 ------
If Date <> Ref(Date,1) Then Begin
    // 新交易日初始化
    当日最高 = High;
    当日最低 = Low;
    持仓状态 = 0;
    EMA线 = Close;
Else Begin
    // 更新当日极值
    当日最高 = Max(High, 当日最高[1]);
    当日最低 = Min(Low, 当日最低[1]);
End;

//------ 核心计算 ------
// 计算真实波幅(TR)(修正计算逻辑)
TR值 = Max(Max((High-Low), Abs(Ref(Close,1)-High), Abs(Ref(Close,1)-Low));

// 计算基准波动率(关键修正)
基准波动 = Average(TR值, ATR周期);  // 使用Average代替MA函数

// EMA计算(兼容语法)
EMA线 = XAverage(Close, 趋势周期); // 使用XAverage标准函数

//------ 交易信号 ------
Bool 波动过滤 = (基准波动/Close) > 最小波动;
Bool 多单条件 = Close > EMA线 AND 波动过滤
            AND Close > (当日最高 - 灵敏度*基准波动)
            AND Time >= 开始时间 AND Time <= 结束时间
            AND 持仓状态 == 0;

Bool 空单条件 = Close < EMA线 AND 波动过滤
            AND Close < (当日最低 + 灵敏度*基准波动)
            AND Time >= 开始时间 AND Time <= 结束时间
            AND 持仓状态 == 0;

//------ 头寸计算 ------
Numeric 风险金额 = Asset*最大风险/100;
Numeric 合约价值 = Close * BigPointValue;
Numeric 手数 = IntPart(风险金额/(基准波动*合约价值));

//------ 交易执行 ------
If 多单条件 Then Begin
    Buy(手数, Limitr, 当日最高);
    动态止损价 = 当日最高 - 2*基准波动;
    动态止盈价 = 当日最高 + 4*基准波动;
    持仓状态 = 1;
End

If 空单条件 Then Begin
    BuyShort(手数, Limitr, 当日最低);
    动态止损价 = 当日最低 + 2*基准波动;
    动态止盈价 = 当日最低 - 4*基准波动;
    持仓状态 = -1;
End

//------ 持仓管理 ------
If 持仓状态 == 1 Then Begin
    // 动态追踪止损(优化算法)
    动态止损价 = HighestSince(EntryBar, Max(动态止损价, High - 追踪比例*基准波动));

    If Close >= 动态止盈价 Then Sell(1, Market);
    If Close <= 动态止损价 Then Sell(1, Market);
    If Time >= 结束时间 Then Sell(1, Market);
End

If 持仓状态 == -1 Then Begin
    // 动态追踪止损(优化算法)
    动态止损价 = LowestSince(EntryBar, Min(动态止损价, Low + 追踪比例*基准波动));

    If Close <= 动态止盈价 Then SellShort(1, Market);
    If Close >= 动态止损价 Then SellShort(1, Market);
    If Time >= 结束时间 Then SellShort(1, Market);
End

//------ 图形显示 ------
PlotNumeric("EMA趋势线", EMA线, ColorBlue);
PlotNumeric("当日最高", 当日最高, ColorGreen);
PlotNumeric("当日最低", 当日最低, ColorRed);


回复

举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-3-3 09:54 | 显示全部楼层
这种没法直接用的, 请给出具体中文描述

另外建议一开始不要直接用ds特别是你在对语法一无所知的晴空下
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

举报

1

主题

14

帖子

14

积分

Rank: 1

等级: 新手上路

注册:
2025-3-3
曾用名:
 楼主| 发表于 2025-3-3 10:42 | 显示全部楼层
你好老师,我想要一个超级趋势线的自动量化交易策略,适合图表交易和日内交易
回复

举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-3-3 10:44 | 显示全部楼层
这个需要具体给出定义的
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

举报

1

主题

14

帖子

14

积分

Rank: 1

等级: 新手上路

注册:
2025-3-3
曾用名:
 楼主| 发表于 2025-3-3 11:14 | 显示全部楼层
文华上的超级趋势指标,帮忙完善一下,这个不能自动交易
INPUT:N(10,1,100,1),M(3,1,30,0.1);

TR1:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
UP:=(H+L)/2+MA(TR1,N)*M;
DN:=(H+L)/2-MA(TR1,N)*M;

L1:=REF(UP,BARSLAST(UP<=REF(UP,1)));
L2:=LLV(UP,N*1.5);
LL:=IF(L2!=REF(L2,1) AND L1<REF(L1,1),L1,IF(L1=L2,L1,L2));
S1:=BARSLAST(CROSS(0.5,UP=LL))+1;
S2:=CROSS(COUNT((CROSS(C,LL) OR CROSS(C,REF(LL,2))) AND UP>LL,S1),0.5);
A6:=BARSLAST(S2);
B6:=BARSLAST(CROSS(HHV(DN,A6+1),C));
BY:=CROSS(B6,A6);
SL:=CROSS(A6,B6);

SUPERTREN:IF(B6>A6,HHV(DN,BARSLAST(BY)+1),LLV(UP,BARSLAST(SL)+1)),COLORGREEN,LINETHICK1;
IF(B6>A6,SUPERTREN,DRAWNULL),COLOR0000C8,LINETHICK1;

DRAWICON(CROSS(B6,A6),SUPERTREN*0.99,1);
DRAWICON(CROSS(A6,B6),SUPERTREN*1.015,2);
买进:CROSS(B6,A6)*100,NODRAW,COLORRED;
卖出:CROSS(A6,B6)*100,NODRAW;
回复

举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-3-3 11:16 | 显示全部楼层
INPUT:N(10,1,100,1),M(3,1,30,0.1);

TR1:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
UP:=(H+L)/2+MA(TR1,N)*M;
DN:=(H+L)/2-MA(TR1,N)*M;

L1:=REF(UP,BARSLAST(UP<=REF(UP,1)));
L2:=LLV(UP,N*1.5);
LL:=IF(L2!=REF(L2,1) AND L1<REF(L1,1),L1,IF(L1=L2,L1,L2));
S1:=BARSLAST(CROSS(0.5,UP=LL))+1;
S2:=CROSS(COUNT((CROSS(C,LL) OR CROSS(C,REF(LL,2))) AND UP>LL,S1),0.5);
A6:=BARSLAST(S2);
B6:=BARSLAST(CROSS(HHV(DN,A6+1),C));
BY:=CROSS(B6,A6);
SL:=CROSS(A6,B6);

SUPERTREN:IF(B6>A6,HHV(DN,BARSLAST(BY)+1),LLV(UP,BARSLAST(SL)+1)),COLORGREEN,LINETHICK1;
IF(B6>A6,SUPERTREN,DRAWNULL),COLOR0000C8,LINETHICK1;

DRAWICON(CROSS(B6,A6),SUPERTREN*0.99,1);
DRAWICON(CROSS(A6,B6),SUPERTREN*1.015,2);
买进:CROSS(B6,A6)*100,NODRAW,COLORRED;
卖出:CROSS(A6,B6)*100,NODRAW;

if 买进 then buy(1,1,marketr);
if 卖出 then sell(1,holding,marketr);
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

举报

1

主题

14

帖子

14

积分

Rank: 1

等级: 新手上路

注册:
2025-3-3
曾用名:
 楼主| 发表于 2025-3-3 11:49 | 显示全部楼层
好像是单向的,只有红线,能不能改成双向的?
回复

举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-3-3 11:52 | 显示全部楼层
if 买进 then
begin
sellshort(1,holding,marketr);
buy(1,1,marketr);
end
if 卖出 then
begin
sell(1,holding,marketr);
buyshort(1,1,marketr);
end
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-3-3 11:52 | 显示全部楼层
if 买进 then
begin
sellshort(1,holding,marketr);
buy(1,1,marketr);
end
if 卖出 then
begin
sell(1,holding,marketr);
buyshort(1,1,marketr);
end
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

举报

1

主题

14

帖子

14

积分

Rank: 1

等级: 新手上路

注册:
2025-3-3
曾用名:
 楼主| 发表于 2025-3-3 16:40 | 显示全部楼层
谢谢!
回复

举报

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

本版积分规则

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

GMT+8, 2025-4-28 04:54 , Processed in 0.173369 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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