金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 37|回复: 3

大师帮我看一下这段代码

[复制链接]

20

主题

50

帖子

50

积分

Rank: 2

等级: 标准版

注册:
2024-7-17
曾用名:
发表于 2024-12-31 14:58 | 显示全部楼层 |阅读模式
编译总是提示函数‘MID’示定义






{ 可调整的输入参数 }INPUT:MA_PERIOD(26), // 移动平均线周期      RSI_PERIOD(13), // RSI 周期      PRICE_DEVIATION_THRESHOLD(0.02), // 价格与移动平均线偏离度阈值      STOP_LOSS_POINTS(10), // 止损点数      TAKE_PROFIT_POINTS(20), // 止盈点数      N1(1); // 交易手数{ 指标计算 }VAR:MID(0),    UPPER(0),    LOWER(0),    LC(0),    RSI(0),    hh(0),    ll(0),    HLC(0),    TM(False),    H2(0),    L3(0),    H1(0),    L1(0),    H4(0),    L4(0),    TM2(False),    kd1(False),    PD1(False),    PD2(False),    PD3(False),    PD4(False),    kk1(False),    PK1(False),    PK2(False),    PK3(False),    PK4(False),    enterbars(0),    ENTERPRICE(0);{ 计算移动平均线及其上下轨 }MID:=MA(C,MA_PERIOD);UPPER:=MID + 2*STD(C,MA_PERIOD);LOWER:=MID - 2*STD(C,MA_PERIOD);{ 计算前一日收盘价 }LC:=REF(C,1);{ 计算 RSI 指标 }RSI:=SMA(MAX(C - LC,0),RSI_PERIOD,1)/SMA(ABS(C - LC),RSI_PERIOD,1)*100;{ 记录 09:15 的高低价 }hh:=VALUEWHEN(TIME=091500,H);ll:=VALUEWHEN(TIME=091500,L);{ 计算 09:15 高低价的平均值 }HLC:=(hh + ll)/2;{ 定义交易时间范围 }TM:=(TIME>=091500) AND (TIME<=144500);{ 假设 TYPEBAR 函数是计算某种 K 线类型的信息,这里可能需要根据金字塔系统的具体函数来替换或完善 }H2:=TYPEBAR(1,1);L3:=TYPEBAR(1,3);{ 计算开多以来的最高价和开空以来的最低价 }H1:=HHV(H,H2);L1:=LLV(L,L3);{ 上一次开仓价格时的最高价和最低价 }H4:=REF(H,enterbars);L4:=REF(L,enterbars);{ 定义 15:00 时刻 }TM2:=(TIME=150000);{ 价格与移动平均线的偏离度作为趋势强度的判断依据 }VAR:PRICE_DEVIATION(0);PRICE_DEVIATION:=ABS((C - MID)/MID);{ 开多信号 }kd1:=CROSS(C,hh) AND TM AND PRICE_DEVIATION > PRICE_DEVIATION_THRESHOLD;{ 平多信号 }PD1:=TM2;PD2:=CROSS(HLC,C);PD3:=C < L4 - STOP_LOSS_POINTS;PD4:=CROSS(70,RSI) AND C >= ENTERPRICE + TAKE_PROFIT_POINTS;{ 开空信号 }kk1:=CROSS(ll,C) AND TM AND PRICE_DEVIATION > PRICE_DEVIATION_THRESHOLD;{ 平空信号 }PK1:=TM2;PK2:=CROSS(C,HLC);PK3:=C > H4 + STOP_LOSS_POINTS;PK4:=CROSS(RSI,30) AND C <= ENTERPRICE - TAKE_PROFIT_POINTS;{ 交易逻辑 }{ 开多指令 }IF kd1 AND TBUYHOLDINGEX('',1,0)=0 THENBEGIN    TBUY(1,N1,MKT);    ENTERPRICE:=C;    enterbars:=BARPOS;END;{ 平多指令 }IF (PD1 OR PD2 OR PD3 OR PD4) AND enterbars > 0 THENBEGIN    TSELL(1,0,MKT);    enterbars:=0;END;{ 开空指令 }IF kk1 AND TBUYHOLDINGEX('',2,0)=0 THENBEGIN    TBUYSHORT(1,N1,MKT);    ENTERPRICE:=C;    enterbars:=BARPOS;END;{ 平空指令 }IF (PK1 OR PK2 OR PK3 OR PK4) AND enterbars > 0 THENBEGIN    TSELLSHORT(1,0,MKT);    enterbars:=0;END;{ 止损和止盈逻辑 }IF enterbars > 0 THENBEGIN    IF THOLDING > 0 AND C < ENTERPRICE - STOP_LOSS_POINTS THEN    BEGIN        TSELL(1,0,MKT);        enterbars:=0;    END    ELSE IF THOLDING > 0 AND C > ENTERPRICE + TAKE_PROFIT_POINTS THEN    BEGIN        TSELL(1,0,MKT);        enterbars:=0;    END    ELSE IF THOLDING < 0 AND C > ENTERPRICE + STOP_LOSS_POINTS THEN    BEGIN        TSELLSHORT(1,0,MKT);        enterbars:=0;    END    ELSE IF THOLDING < 0 AND C < ENTERPRICE - TAKE_PROFIT_POINTS THEN    BEGIN        TSELLSHORT(1,0,MKT);        enterbars:=0;    END;END;

回复

使用道具 举报

20

主题

50

帖子

50

积分

Rank: 2

等级: 标准版

注册:
2024-7-17
曾用名:
 楼主| 发表于 2024-12-31 14:59 | 显示全部楼层
{ 可调整的输入参数 }
INPUT:MA_PERIOD(26), // 移动平均线周期
      RSI_PERIOD(13), // RSI 周期
      PRICE_DEVIATION_THRESHOLD(0.02), // 价格与移动平均线偏离度阈值
      STOP_LOSS_POINTS(10), // 止损点数
      TAKE_PROFIT_POINTS(20), // 止盈点数
      N1(1); // 交易手数


{ 指标计算 }
VAR:MID(0),
    UPPER(0),
    LOWER(0),
    LC(0),
    RSI(0),
    hh(0),
    ll(0),
    HLC(0),
    TM(False),
    H2(0),
    L3(0),
    H1(0),
    L1(0),
    H4(0),
    L4(0),
    TM2(False),
    kd1(False),
    PD1(False),
    PD2(False),
    PD3(False),
    PD4(False),
    kk1(False),
    PK1(False),
    PK2(False),
    PK3(False),
    PK4(False),
    enterbars(0),
    ENTERPRICE(0);


{ 计算移动平均线及其上下轨 }
MID:=MA(C,MA_PERIOD);
UPPER:=MID + 2*STD(C,MA_PERIOD);
LOWER:=MID - 2*STD(C,MA_PERIOD);


{ 计算前一日收盘价 }
LC:=REF(C,1);


{ 计算 RSI 指标 }
RSI:=SMA(MAX(C - LC,0),RSI_PERIOD,1)/SMA(ABS(C - LC),RSI_PERIOD,1)*100;


{ 记录 09:15 的高低价 }
hh:=VALUEWHEN(TIME=091500,H);
ll:=VALUEWHEN(TIME=091500,L);


{ 计算 09:15 高低价的平均值 }
HLC:=(hh + ll)/2;


{ 定义交易时间范围 }
TM:=(TIME>=091500) AND (TIME<=144500);


{ 假设 TYPEBAR 函数是计算某种 K 线类型的信息,这里可能需要根据金字塔系统的具体函数来替换或完善 }
H2:=TYPEBAR(1,1);
L3:=TYPEBAR(1,3);


{ 计算开多以来的最高价和开空以来的最低价 }
H1:=HHV(H,H2);
L1:=LLV(L,L3);


{ 上一次开仓价格时的最高价和最低价 }
H4:=REF(H,enterbars);
L4:=REF(L,enterbars);


{ 定义 15:00 时刻 }
TM2:=(TIME=150000);


{ 价格与移动平均线的偏离度作为趋势强度的判断依据 }
VAR:PRICE_DEVIATION(0);
PRICE_DEVIATION:=ABS((C - MID)/MID);


{ 开多信号 }
kd1:=CROSS(C,hh) AND TM AND PRICE_DEVIATION > PRICE_DEVIATION_THRESHOLD;


{ 平多信号 }
PD1:=TM2;
PD2:=CROSS(HLC,C);
PD3:=C < L4 - STOP_LOSS_POINTS;
PD4:=CROSS(70,RSI) AND C >= ENTERPRICE + TAKE_PROFIT_POINTS;


{ 开空信号 }
kk1:=CROSS(ll,C) AND TM AND PRICE_DEVIATION > PRICE_DEVIATION_THRESHOLD;


{ 平空信号 }
PK1:=TM2;
PK2:=CROSS(C,HLC);
PK3:=C > H4 + STOP_LOSS_POINTS;
PK4:=CROSS(RSI,30) AND C <= ENTERPRICE - TAKE_PROFIT_POINTS;


{ 交易逻辑 }
{ 开多指令 }
IF kd1 AND TBUYHOLDINGEX('',1,0)=0 THEN
BEGIN
    TBUY(1,N1,MKT);
    ENTERPRICE:=C;
    enterbars:=BARPOS;
END;


{ 平多指令 }
IF (PD1 OR PD2 OR PD3 OR PD4) AND enterbars > 0 THEN
BEGIN
    TSELL(1,0,MKT);
    enterbars:=0;
END;


{ 开空指令 }
IF kk1 AND TBUYHOLDINGEX('',2,0)=0 THEN
BEGIN
    TBUYSHORT(1,N1,MKT);
    ENTERPRICE:=C;
    enterbars:=BARPOS;
END;


{ 平空指令 }
IF (PK1 OR PK2 OR PK3 OR PK4) AND enterbars > 0 THEN
BEGIN
    TSELLSHORT(1,0,MKT);
    enterbars:=0;
END;


{ 止损和止盈逻辑 }
IF enterbars > 0 THEN
BEGIN
    IF THOLDING > 0 AND C < ENTERPRICE - STOP_LOSS_POINTS THEN
    BEGIN
        TSELL(1,0,MKT);
        enterbars:=0;
    END
    ELSE IF THOLDING > 0 AND C > ENTERPRICE + TAKE_PROFIT_POINTS THEN
    BEGIN
        TSELL(1,0,MKT);
        enterbars:=0;
    END
    ELSE IF THOLDING < 0 AND C > ENTERPRICE + STOP_LOSS_POINTS THEN
    BEGIN
        TSELLSHORT(1,0,MKT);
        enterbars:=0;
    END
    ELSE IF THOLDING < 0 AND C < ENTERPRICE - TAKE_PROFIT_POINTS THEN
    BEGIN
        TSELLSHORT(1,0,MKT);
        enterbars:=0;
    END;
END;
回复

使用道具 举报

32

主题

8014

帖子

8024

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2024-12-31 15:04 | 显示全部楼层

{ 可调整的输入参数 }
INPUT:MA_PERIOD(26), // 移动平均线周期
      RSI_PERIOD(13), // RSI 周期
      PRICE_DEVIATION_THRESHOLD(0.02), // 价格与移动平均线偏离度阈值
      STOP_LOSS_POINTS(10), // 止损点数
      TAKE_PROFIT_POINTS(20), // 止盈点数
      N1(1); // 交易手数




{ 计算移动平均线及其上下轨 }
MID:=MA(C,MA_PERIOD);
UPPER:=MID + 2*STD(C,MA_PERIOD);
LOWER:=MID - 2*STD(C,MA_PERIOD);


{ 计算前一日收盘价 }
LC:=REF(C,1);


{ 计算 RSI 指标 }
RSI:=SMA(MAX(C - LC,0),RSI_PERIOD,1)/SMA(ABS(C - LC),RSI_PERIOD,1)*100;


{ 记录 09:15 的高低价 }
hh:=VALUEWHEN(TIME=091500,H);
ll:=VALUEWHEN(TIME=091500,L);


{ 计算 09:15 高低价的平均值 }
HLC:=(hh + ll)/2;


{ 定义交易时间范围 }
TM:=(TIME>=091500) AND (TIME<=144500);


{ 假设 TYPEBAR 函数是计算某种 K 线类型的信息,这里可能需要根据金字塔系统的具体函数来替换或完善 }
H2:=tTYPEBAR(1,1);
L3:=tTYPEBAR(1,3);


{ 计算开多以来的最高价和开空以来的最低价 }
H1:=HHV(H,H2);
L1:=LLV(L,L3);


{ 上一次开仓价格时的最高价和最低价 }
H4:=REF(H,tenterbars);
L4:=REF(L,tenterbars);


{ 定义 15:00 时刻 }
TM2:=(TIME=150000);


{ 价格与移动平均线的偏离度作为趋势强度的判断依据 }

PRICE_DEVIATION:=ABS((C - MID)/MID);


{ 开多信号 }
kd1:=CROSS(C,hh) AND TM AND PRICE_DEVIATION > PRICE_DEVIATION_THRESHOLD;


{ 平多信号 }
PD1:=TM2;
PD2:=CROSS(HLC,C);
PD3:=C < L4 - STOP_LOSS_POINTS;
PD4:=CROSS(70,RSI) AND C >= tENTERPRICE + TAKE_PROFIT_POINTS;


{ 开空信号 }
kk1:=CROSS(ll,C) AND TM AND PRICE_DEVIATION > PRICE_DEVIATION_THRESHOLD;


{ 平空信号 }
PK1:=TM2;
PK2:=CROSS(C,HLC);
PK3:=C > H4 + STOP_LOSS_POINTS;
PK4:=CROSS(RSI,30) AND C <= tENTERPRICE - TAKE_PROFIT_POINTS;


{ 交易逻辑 }
{ 开多指令 }
IF kd1 AND TBUYHOLDINGEX('',1,0)=0 THEN
BEGIN
    TBUY(1,N1,MKT);

END;


{ 平多指令 }
IF (PD1 OR PD2 OR PD3 OR PD4) AND tenterbars > 0 THEN
BEGIN
    TSELL(1,0,MKT);

END;


{ 开空指令 }
IF kk1 AND TBUYHOLDINGEX('',2,0)=0 THEN
BEGIN
    TBUYSHORT(1,N1,MKT);

END;


{ 平空指令 }
IF (PK1 OR PK2 OR PK3 OR PK4) AND tenterbars > 0 THEN
BEGIN
    TSELLSHORT(1,0,MKT);

END;


{ 止损和止盈逻辑 }
IF tenterbars > 0 THEN
BEGIN
    IF THOLDING > 0 AND C < tENTERPRICE - STOP_LOSS_POINTS THEN
    BEGIN
        TSELL(1,0,MKT);

    END
    ELSE IF THOLDING > 0 AND C > tENTERPRICE + TAKE_PROFIT_POINTS THEN
    BEGIN
        TSELL(1,0,MKT);

    END
    ELSE IF THOLDING < 0 AND C > tENTERPRICE + STOP_LOSS_POINTS THEN
    BEGIN
        TSELLSHORT(1,0,MKT);

    END
    ELSE IF THOLDING < 0 AND C < tENTERPRICE - TAKE_PROFIT_POINTS THEN
    BEGIN
        TSELLSHORT(1,0,MKT);

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

使用道具 举报

20

主题

50

帖子

50

积分

Rank: 2

等级: 标准版

注册:
2024-7-17
曾用名:
 楼主| 发表于 2024-12-31 16:00 | 显示全部楼层
经运行好像没任何提示
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-5 14:03 , Processed in 0.164757 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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