金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 130|回复: 1

麻烦老师帮忙看看策略是不是有问题,回测只有一手交易

[复制链接]

2

主题

12

帖子

12

积分

Rank: 1

等级: 新手上路

注册:
2025-3-10
曾用名:
发表于 2025-3-19 16:59 | 显示全部楼层 |阅读模式
INPUT:手数(1,1,10000,1); // 开仓手数参数

// 计算 MA4 和 MA12 均线
MA4 :MA(CLOSE, 4);
MA12 :MA(CLOSE, 12);

// 绘制均线
DRAWLINE(1, MA4, COLORWHITE, 2, 1);
DRAWLINE(1, MA12, COLORYELLOW, 2, 1);

// 计算 MACD
DIFF := EMA(CLOSE, 12) - EMA(CLOSE, 26);
DEA := EMA(DIFF, 9);
MACD := 2 * (DIFF - DEA);

// 定义信号
JC := CROSS(MA4, MA12);    // 金叉:MA4上穿MA12
SC := CROSS(MA12, MA4);    // 死叉:MA12上穿MA4(即MA4下穿MA12)

// 前值记录
PRE_MACD := REF(MACD, 1);
PRE_CLOSE := REF(CLOSE, 1);

// 处理持仓方向
当前持仓 := HOLDING;

// 开多单条件:金叉且无多单持仓
IF JC AND 当前持仓 <= 0 THEN BEGIN
    IF 当前持仓 < 0 THEN BEGIN
        BUY(1, ABS(当前持仓), MARKET); // 先平空仓
    END
    BUY(1, 手数, MARKET); // 开多单
END

// 多单止盈:MACD下降
IF MACD < PRE_MACD AND 当前持仓 > 0 THEN BEGIN
    SELL(1, 当前持仓, MARKET);
END

// 多单止损:收盘价低于前收盘
IF CLOSE < PRE_CLOSE AND 当前持仓 > 0 THEN BEGIN
    SELL(1, 当前持仓, MARKET);
END

// 开空单条件:死叉且无空单持仓
IF SC AND 当前持仓 >= 0 THEN BEGIN
    IF 当前持仓 > 0 THEN BEGIN
        SELL(1, 当前持仓, MARKET); // 先平多仓
    END
    BUYSHORT(1, 手数, MARKET); // 开空单
END

// 空单止盈:MACD上升(趋势减弱)
IF MACD > PRE_MACD AND 当前持仓 < 0 THEN BEGIN
    BUY(1, ABS(当前持仓), MARKET); // 平空单
END

// 空单止损:收盘价高于前收盘
IF CLOSE > PRE_CLOSE AND 当前持仓 < 0 THEN BEGIN
    BUY(1, ABS(当前持仓), MARKET);
END

回复

使用道具 举报

38

主题

9811

帖子

9821

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-3-19 17:01 | 显示全部楼层
本帖最后由 技术008 于 2025-3-19 17:02 编辑

INPUT:手数(1,1,10000,1); // 开仓手数参数

// 计算 MA4 和 MA12 均线
MA4 :MA(CLOSE, 4);
MA12 :MA(CLOSE, 12);

// 绘制均线
DRAWLINE(1, MA4, COLORWHITE, 2, 1);
DRAWLINE(1, MA12, COLORYELLOW, 2, 1);

// 计算 MACD
DIFF := EMA(CLOSE, 12) - EMA(CLOSE, 26);
DEA := EMA(DIFF, 9);
MACD := 2 * (DIFF - DEA);

// 定义信号
JC := CROSS(MA4, MA12);    // 金叉:MA4上穿MA12
SC := CROSS(MA12, MA4);    // 死叉:MA12上穿MA4(即MA4下穿MA12)

// 前值记录
PRE_MACD := REF(MACD, 1);
PRE_CLOSE := REF(CLOSE, 1);

// 处理持仓方向
当前持仓 := HOLDING;

// 开多单条件:金叉且无多单持仓
IF JC AND 当前持仓 <= 0 THEN BEGIN
    IF 当前持仓 < 0 THEN BEGIN
        BUY(1, ABS(当前持仓), MARKET); // 先平空仓
    END
    BUY(1, 手数, MARKET); // 开多单
END

// 多单止盈:MACD下降
IF MACD < PRE_MACD AND 当前持仓 > 0 THEN BEGIN
    SELL(1, 当前持仓, MARKET);
END

// 多单止损:收盘价低于前收盘
IF CLOSE < PRE_CLOSE AND 当前持仓 > 0 THEN BEGIN
    SELL(1, 当前持仓, MARKET);
END

// 开空单条件:死叉且无空单持仓
IF SC AND 当前持仓 >= 0 THEN BEGIN
    IF 当前持仓 > 0 THEN BEGIN
        SELL(1, 当前持仓, MARKET); // 先平多仓
    END
    BUYSHORT(1, 手数, MARKET); // 开空单
END

// 空单止盈:MACD上升(趋势减弱)
IF MACD > PRE_MACD AND 当前持仓 < 0 THEN BEGIN
    BUY(1, ABS(当前持仓), MARKET); // 平空单
END

// 空单止损:收盘价高于前收盘
IF CLOSE > PRE_CLOSE AND 当前持仓 < 0 THEN BEGIN
    sellshort(1, ABS(当前持仓), MARKET);
END

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-4 20:44 , Processed in 0.200637 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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