金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 458|回复: 13

请大佬看一下为什么总是出现未定义变量,本人纯新手请大家看看

[复制链接]

1

主题

7

帖子

7

积分

Rank: 1

等级: 新手上路

注册:
2025-1-22
曾用名:
发表于 2025-1-24 12:28 | 显示全部楼层 |阅读模式
总是有各种未定义变量或者出现末尾缺少分号的情况,一开始认为是自己编程的问题,后来复制金字塔原有程序到另一个新建公式里也出现了同样的问题,请大佬们看一下是怎么回事
2c2048b0dc5461e08caf3cf5aa986a8.jpg
90676c65e566e55246e3b211835cf93.jpg
回复

使用道具 举报

35

主题

8674

帖子

8684

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-1-24 13:28 | 显示全部楼层
因为你这里N没有定义
前面定义下N的值比如
N:=10;
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

7

帖子

7

积分

Rank: 1

等级: 新手上路

注册:
2025-1-22
曾用名:
 楼主| 发表于 2025-1-24 21:30 | 显示全部楼层
技术008 发表于 2025-1-24 13:28
因为你这里N没有定义
前面定义下N的值比如
N:=10;

好的谢谢大佬,不过还有一个问题就是,这个图里面的左右两边是一样的公式。右边的是金字塔原带的,左边是我复制到自建公式里的,为什么一个是编译正常,另一个却显示有未定义的量,中间只是经过了一个复制粘贴的过程,为什么出现了不正确的地方,问题是出在哪里呢?感谢大佬

9ade764fb46ec31287cd27c8962ccfa.jpg
回复

使用道具 举报

1

主题

925

帖子

935

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-1-24 22:06 | 显示全部楼层
截图202501242206009038.png
回复

使用道具 举报

1

主题

7

帖子

7

积分

Rank: 1

等级: 新手上路

注册:
2025-1-22
曾用名:
 楼主| 发表于 2025-1-25 19:37 | 显示全部楼层

好的谢谢大佬 这里还有两个问题
1.为什么写的程序里有分号,但是总是显示语句末尾缺少分号,问题这是出在了哪里呀?应该怎么更改呢?
2.为什么在图2中总是显示参数列数据无效,这个是什么原因导致的呢?应该怎么更改呢?谢谢大佬解惑
b35dfe853847ef92522a7a48a258093.jpg
e53bcfad2736fdff7e8b1db3668602a.jpg
回复

使用道具 举报

35

主题

8674

帖子

8684

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-1-25 23:16 | 显示全部楼层
右边参数你设置步长是0没有意义了
步长就像我们金钱最小是1分,一定是有个值得,否者你不能说每次加钱加0
那就没了
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

35

主题

8674

帖子

8684

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-1-25 23:17 | 显示全部楼层
分号就是代码哪里缺少分号
你可以自己仔细检查下,这个就是仔细得问题了
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

7

帖子

7

积分

Rank: 1

等级: 新手上路

注册:
2025-1-22
曾用名:
 楼主| 发表于 2025-1-26 11:35 | 显示全部楼层
好的谢谢大佬辛苦啦
回复

使用道具 举报

1

主题

7

帖子

7

积分

Rank: 1

等级: 新手上路

注册:
2025-1-22
曾用名:
 楼主| 发表于 2025-1-26 12:24 | 显示全部楼层
技术008 发表于 2025-1-25 23:16
右边参数你设置步长是0没有意义了
步长就像我们金钱最小是1分,一定是有个值得,否者你不能说每次加钱加0
...

老师帮忙再看一下我设置公式里参数步长为1,但是右边还是为0,手动改为1一运行就又变为0了,这个该怎么解决呀,这个公式怎么改才能使用呀,真是辛苦您啦老师// 策略名称:双均线动态仓位交易系统
// 适用模式:走完K线模式

//============== 参数定义 ==============//
INPUT:A(5, 1, 100, 1, "短期均线周期");          // 短周期(步长1)
INPUT:B(20, 5, 200, 1, "长期均线周期");        // 长周期(步长1)
INPUT:StopLossPct(2, 0.1, 10, 0.5, "止损百分比%"); // 步长0.5%
INPUT:TakeProfitPct(5, 1, 20, 1, "止盈百分比%");  // 步长1%
INPUT:PositionRatio(0.3, 0.1, 1, 0.05, "仓位比例");// 步长5%
INPUT:FilterVol(100000, 1000, 1000000, 1000, "成交量过滤");// 步长1000
INPUT:LotSize(100, 1, 1000, 1, "合约乘数");     // 股票=100,期货=1

//============== 中间变量 ==============//
MA1 := MA(CLOSE, A);
MA2 := MA(CLOSE, B);
CurrentVol := VOL;
ATRValue := ATR(14);
AvailableCash := CASH(0);

//============== 信号条件 ==============//
// 使用英文变量名确保兼容性
GoldenCross := CROSS(MA1, MA2) AND CurrentVol > FilterVol;
DeathCross := CROSS(MA2, MA1) AND CurrentVol > FilterVol;

// 动态止损止盈(仅在持仓时计算)
LongStopPrice := VALUEWHEN(ENTERBARS()==0, ENTERPRICE()) * (1 - StopLossPct/100);
LongTakeProfit := VALUEWHEN(ENTERBARS()==0, ENTERPRICE()) * (1 + TakeProfitPct/100);
ShortStopPrice := VALUEWHEN(ENTERBARS()==0, ENTERPRICE()) * (1 + StopLossPct/100);
ShortTakeProfit := VALUEWHEN(ENTERBARS()==0, ENTERPRICE()) * (1 - TakeProfitPct/100);

// 平仓条件
CloseLongCond := DeathCross OR CLOSE <= LongStopPrice OR CLOSE >= LongTakeProfit;
CloseShortCond := GoldenCross OR CLOSE >= ShortStopPrice OR CLOSE <= ShortTakeProfit;

//============== 仓位管理 ==============//
PositionSize := FLOOR((AvailableCash * PositionRatio) / (CLOSE * LotSize));
ValidSize := MAX(PositionSize, 1);

//============== 交易系统 ==============//
// 先平仓
SELL(CloseLongCond AND HOLDING>0, 0, THISCLOSE);
SELLSHORT(CloseShortCond AND HOLDING<0, 0, THISCLOSE);

// 后开仓(确保无持仓)
BUY(GoldenCross AND HOLDING==0, ValidSize, THISCLOSE);
BUYSHORT(DeathCross AND HOLDING==0, ValidSize, THISCLOSE);

//============== 监控模块 ==============//
当前持仓:HOLDING, COLORGRAY;
止损线:IF(HOLDING>0, LongStopPrice, IF(HOLDING<0, ShortStopPrice, DRAWNULL)), COLORRED;
资产曲线:ASSET, COLORCYAN,LINETHICK2;

0a3fdffeba6947bbfe91a1577e1d8f5.jpg
回复

使用道具 举报

35

主题

8674

帖子

8684

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-1-26 12:38 | 显示全部楼层
INPUT:A(5, 1, 100, 1, "短期均线周期");          // 短周期(步长1)
INPUT:B(20, 5, 200, 1, "长期均线周期");        // 长周期(步长1)
INPUT:StopLossPct(2, 0.1, 10, 0.5, "止损百分比%"); // 步长0.5%
INPUT:TakeProfitPct(5, 1, 20, 1, "止盈百分比%");  // 步长1%
INPUT:PositionRatio(0.3, 0.1, 1, 0.05, "仓位比例");// 步长5%
INPUT:FilterVol(100000, 1000, 1000000, 1000, "成交量过滤");// 步长1000
INPUT:LotSize(100, 1, 1000, 1, "合约乘数");     // 股票=100,期货=1


这里步长不可以写文字得啊,必须是数字得
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-17 03:36 , Processed in 0.281019 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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