金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 649|回复: 10

请哪位老师帮我修改一下

[复制链接]

9

主题

38

帖子

38

积分

Rank: 1

等级: 新手上路

注册:
2024-6-4
曾用名:
发表于 2024-7-25 21:13 | 显示全部楼层 |阅读模式
LH: 100-EMA((HHV(HIGH,N)-CLOSE)/(HHV(HIGH,N)-LLV(LOW,N))*100,N);
J:EMA (LH, N1);

KD:=CROSS (LH,J);         //开多条件
PD:=CROSS (J, LH) ;       //平多条件
KK:=CROSS (J,LH);        //开空条件
PK:=CROSS (LH, J) ;        //平空条件


平空:SELLSHORT(PK,20,THISCLOSE);                  //平空信号
开多:BUY(KD AND HOLDING=0,20,THISCLOSE);          //开多信号
平多:SELL(PD,20,THISCLOSE);                       //平多信号
开空:BUYSHORT(KK AND HOLDING=0,20,THISCLOSE);     //开空信号
以上是原代码,然后我增加按照最新价亏损逐步减仓,跟盈利逐步加仓的功能,但是写好后就无法通过测试,以下是写好的代码,请帮助修改一下,
LH: 100 - EMA((HHV(HIGH,N) - CLOSE)/(HHV(HIGH,N) - LLV(LOW,N)) * 100,N);
J: EMA (LH, N1);

KD := CROSS (LH,J);         // 开多条件
PD := CROSS (J, LH) ;       // 平多条件
KK := CROSS (J,LH);        // 开空条件
PK := CROSS (LH, J) ;        // 平空条件

// 浮动亏损逐步减仓
float_loss := CLOSE - ENTRYPRICE;
if HOLDING > 0 and float_loss < -5  and HOLDING > 1 THEN
    begin
    SELL(HOLDING - 2,20,THISCLOSE);
    end
end

// 浮动盈利逐步加仓
float_profit := CLOSE - ENTRYPRICE;
if HOLDING > 0 and float_profit > 5 THEN
    begin
    BUY(2,20,THISCLOSE);
    end
end

平空:SELLSHORT(PK,20,THISCLOSE);                  // 平空信号
开多:BUY(KD AND HOLDING = 0,20,THISCLOSE);          // 开多信号
平多:SELL(PD,20,THISCLOSE);                       // 平多信号
开空:BUYSHORT(KK AND HOLDING = 0,20,THISCLOSE);     // 开空信号




补充内容 (2024-7-25 21:15):
开仓,平仓不变
回复

使用道具 举报

31

主题

7801

帖子

7811

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2024-7-26 09:00 | 显示全部楼层
// 浮动亏损逐步减仓
float_loss := CLOSE - ENTRYPRICE;
if HOLDING > 0 and float_loss < -5  and HOLDING > 1 THEN
    begin
    SELL(HOLDING - 2,20,THISCLOSE);
    end
end

// 浮动盈利逐步加仓
float_profit := CLOSE - ENTRYPRICE;
if HOLDING > 0 and float_profit > 5 THEN
    begin
    BUY(2,20,THISCLOSE);
    end
end

你这两段问题是没信号吗?看着没错啊
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

9

主题

38

帖子

38

积分

Rank: 1

等级: 新手上路

注册:
2024-6-4
曾用名:
 楼主| 发表于 2024-7-26 14:30 | 显示全部楼层
技术008 发表于 2024-7-26 09:00
// 浮动亏损逐步减仓
float_loss := CLOSE - ENTRYPRICE;
if HOLDING > 0 and float_loss < -5  and HOLD ...

但是在保存的时候显示代码中END语句缺少BEGIN
回复

使用道具 举报

31

主题

7801

帖子

7811

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2024-7-29 09:24 | 显示全部楼层

// 浮动亏损逐步减仓
float_loss := CLOSE - ENTRYPRICE;
if HOLDING > 0 and float_loss < -5  and HOLDING > 1 THEN
    begin
    SELL(HOLDING - 2,20,THISCLOSE);
    end


// 浮动盈利逐步加仓
float_profit := CLOSE - ENTRYPRICE;
if HOLDING > 0 and float_profit > 5 THEN
    begin
    BUY(2,20,THISCLOSE);
    end


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

使用道具 举报

9

主题

38

帖子

38

积分

Rank: 1

等级: 新手上路

注册:
2024-6-4
曾用名:
 楼主| 发表于 2024-8-5 13:34 | 显示全部楼层

//定义变量 IsMainIndex 并通过用户输入获取值 0;
IsMainIndex = myinput(0);
// 定义变量 Parml 并通过用户输入获取值 9;
Parml = myinput(9);

// 计算 R1,基于最高价、收盘价、最低价;
R1 = ((max(HIGH, Parml) - CLOSE) / (max(HIGH, Parml) - min(LOW, Parml))) * 100 - 70;
// 对 R1 进行简单移动平均计算并加上 100 得到 R2;
R2 = sma(R1, 9, 1) + 100;
// 计算 R3,基于收盘价、最低价、最高价;
R3 = ((CLOSE - min(LOW, 9)) / (max(HIGH, 9) - min(LOW, 9))) * 100;
// 对 R3 进行简单移动平均计算得到 R4;
R4 = sma(R3, 3, 1);
// 对 R4 进行简单移动平均计算并加上 100 得到 R5;
R5 = sma(R4, 3, 1) + 100;
// 计算 R6,为 R5 减去 R2;
R6 = R5 - R2;

// 定义名为“龙行天地”的指标,如果 R6 大于 0,取值为 R6 - 0,颜色为黄色,以点的形式显示;
def 龙行天地():
    if R6 > 0:
        return R6 - 0;
    else:
        return 0;
    color = "YELLOW";
    style = "POINTDOT";

// 绘制线条,如果前一周期的“龙行天地”值小于当前周期的“龙行天地”值,绘制黄色线条;
if ref(龙行天地, 1) < 龙行天地:
    stickline(龙行天地, ref(龙行天地, 1), 1, 1, color="YELLOW");
// 如果前一周期的“龙行天地”值大于当前周期的“龙行天地”值,绘制粉色线条;
if ref(龙行天地, 1) > 龙行天地:
    stickline(龙行天地, ref(龙行天地, 1), 1, 1, color="FF00FF");

// 定义卖出线为 110;
卖出线 = 110;
// 定义买入线为 20;
买入线 = 20;

// 当“龙行天地”上穿买入线时,在买入线位置显示“买入”字样,颜色为白色;
if cross(龙行天地, 买入线):
    drawtext(买入线, "买入", color="FFFFFF");
// 当卖出线下穿“龙行天地”时,在卖出线位置显示“卖出”字样,颜色为白色;
if cross(卖出线, 龙行天地):
    drawtext(卖出线, "卖出", color="FFFFFF");

// 当“龙行天地”上穿买入线时发送消息;
YJ_1 = message(cross(龙行天地, 买入线), "龙行天地", "买入", 1);
// 当卖出线下穿“龙行天地”时发送消息;
YJ_2 = message(cross(卖出线, 龙行天地), "龙行天地", "卖出", 1);
你好老师,能帮我修改一下段代码吗,用于我水平实在有限,怎么搞也无法通过测试,拜托。
回复

使用道具 举报

31

主题

7801

帖子

7811

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2024-8-5 13:36 | 显示全部楼层
金字塔中if条件语句是用
if 条件 then
begin
代码块
end
这样的形式

另外变量定义使用
a1:=close;
这种:=的形式的
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

9

主题

38

帖子

38

积分

Rank: 1

等级: 新手上路

注册:
2024-6-4
曾用名:
 楼主| 发表于 2024-8-5 15:09 | 显示全部楼层
技术008 发表于 2024-8-5 13:36
金字塔中if条件语句是用
if 条件 then
begin

老师我实在有点笨,搞半天都有问题,你能够把上面的代码整体修改一下吗,我也想好好学习一下,非常感谢
回复

使用道具 举报

9

主题

38

帖子

38

积分

Rank: 1

等级: 新手上路

注册:
2024-6-4
曾用名:
 楼主| 发表于 2024-8-5 15:27 | 显示全部楼层
// 定义函数获取用户输入
def myinput(value):
    return value;

//定义变量 IsMainIndex 并通过用户输入获取值 0;
IsMainIndex = myinput(2);
// 定义变量 Parml 并通过用户输入获取值 9;
Parml = myinput(9);

// 计算 R1,基于最高价、收盘价、最低价;
R1 = ((max(HIGH, Parml) - CLOSE) / (max(HIGH, Parml) - min(LOW, Parml))) * 100 - 70;
// 对 R1 进行简单移动平均计算并加上 100 得到 R2;
R2 = sma(R1, 9, 1) + 100;
// 计算 R3,基于收盘价、最低价、最高价;
R3 = ((CLOSE - min(LOW, 9)) / (max(HIGH, 9) - min(LOW, 9))) * 100;
// 对 R3 进行简单移动平均计算得到 R4;
R4 = sma(R3, 3, 1);
// 对 R4 进行简单移动平均计算并加上 100 得到 R5;
R5 = sma(R4, 3, 1) + 100;
// 计算 R6,为 R5 减去 R2;
R6 = R5 - R2;

// 定义名为“龙行天地”的指标,如果 R6 大于 0,取值为 R6 - 0,颜色为黄色,以点的形式显示;
def 龙行天地():
    if R6 > 0:
        return R6 - 0;
    else:
        return 0;
    color = "YELLOW";
    style = "POINTDOT";

// 绘制线条,如果前一周期的“龙行天地”值小于当前周期的“龙行天地”值,绘制黄色线条;
if ref(龙行天地, 1) < 龙行天地 then begin
    stickline(龙行天地, ref(龙行天地, 1), 1, 1, color="YELLOW");
end
// 如果前一周期的“龙行天地”值大于当前周期的“龙行天地”值,绘制粉色线条;
if ref(龙行天地, 1) > 龙行天地 then begin
    stickline(龙行天地, ref(龙行天地, 1), 1, 1, color="FF00FF");
end

// 定义卖出线为 110;
卖出线 = 110;
// 定义买入线为 20;
买入线 = 20;

// 当“龙行天地”上穿买入线时,在买入线位置显示“买入”字样,颜色为白色;
if cross(龙行天地, 买入线) then begin
    drawtext(买入线, "买入", color="FFFFFF");
end
// 当卖出线下穿“龙行天地”时,在卖出线位置显示“卖出”字样,颜色为白色;
if cross(卖出线, 龙行天地) then begin
    drawtext(卖出线, "卖出", color="FFFFFF");
end

// 当“龙行天地”上穿买入线时发送消息;
YJ_1 = message(cross(龙行天地, 买入线), "龙行天地", "买入", 1);
// 当卖出线下穿“龙行天地”时发送消息;
YJ_2 = message(cross(卖出线, 龙行天地), "龙行天地", "卖出", 1);
这样修改也不对。
回复

使用道具 举报

31

主题

7801

帖子

7811

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2024-8-5 15:54 | 显示全部楼层
//定义变量 IsMainIndex 并通过用户输入获取值 0;
IsMainIndex:= 2;
// 定义变量 Parml 并通过用户输入获取值 9;
Parml := 9;

// 计算 R1,基于最高价、收盘价、最低价;
R1 := ((max(HIGH, Parml) - CLOSE) / (max(HIGH, Parml) - min(LOW, Parml))) * 100 - 70;
// 对 R1 进行简单移动平均计算并加上 100 得到 R2;
R2 := sma(R1, 9, 1) + 100;

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

使用道具 举报

31

主题

7801

帖子

7811

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2024-8-5 15:56 | 显示全部楼层
龙行天地:=if(R6>0,R6-0,0);
然后后面一些绘图函数你先不要画图,就直接看指标的改动对不对
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 00:06 , Processed in 0.223549 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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