金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 800180

基准差

[复制链接]

2

主题

20

帖子

30

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2026-3-31 14:06 | 显示全部楼层
资深技术05 发表于 2026-3-31 13:54
改漏了一个地方,空单这里,GRID_DIF 忘了替换过去了

// 空单网格逻辑

还是不对哎,空单平仓不是一一对应的
回复

使用道具 举报

2

主题

20

帖子

30

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2026-3-31 14:09 | 显示全部楼层
资深技术05 发表于 2026-3-31 13:54
改漏了一个地方,空单这里,GRID_DIF 忘了替换过去了

// 空单网格逻辑

你好,这边空单平仓不是一一对应的
回复

使用道具 举报

2

主题

6366

帖子

6366

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2026-3-31 14:24 | 显示全部楼层
截个图。给我个具体位置 要看到品种,周期,时间,然后你参数多少。
回复

使用道具 举报

2

主题

20

帖子

30

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2026-3-31 14:29 | 显示全部楼层

    GRID_SIZE := 5; // 网格基准差
    GRID_DIF:=5;
     
两个参数都变为5了,运行是这样的,空单不是一一对应的平仓
4BEE32E1DD7344409B5571FCC44EFF6B.png
回复

使用道具 举报

2

主题

6366

帖子

6366

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2026-3-31 15:11 | 显示全部楼层
// 空单网格逻辑
IF CLOSE >= (LAST_SHORT_PRICE + GRID_SIZE * GRID_DIF) AND SHORT_COUNT < MAX_GRID THEN BEGIN
    // 开空单
    BUYSHORT(1, 1, LIMITR, LAST_SHORT_PRICE + GRID_SIZE * GRID_DIF),ignorecheckprice;
    SHORT_COUNT := SHORT_COUNT + 1;
    P2[SHORT_COUNT]:=LAST_SHORT_PRICE;
    LAST_SHORT_PRICE := LAST_SHORT_PRICE + GRID_SIZE * GRID_DIF;
   
END;

再替换下,这里笔误搞错了。。
回复

使用道具 举报

2

主题

6366

帖子

6366

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2026-3-31 15:12 | 显示全部楼层
效果应该没问题了
截图202603311512039759.png
回复

使用道具 举报

2

主题

20

帖子

30

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2026-3-31 15:21 | 显示全部楼层

可以了,这边要改成第一次开仓1手,第二次开仓2手,第三次改为3手,多空都是如此,该如何修改?谢谢
回复

使用道具 举报

2

主题

6366

帖子

6366

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2026-3-31 15:25 | 显示全部楼层
[PEL] 复制代码
// 参数定义
INPUT:MAX_GRID(10); // 最大网格层数

// 变量定义
VARIABLE:BASE_PRICE = 0; // 基准价格(每日开盘价)
VARIABLE:GRID_SIZE = 0; // 网格大小(最小变动价*10)
VARIABLE:LAST_LONG_PRICE = 0; // 上次多单开仓价
VARIABLE:LAST_SHORT_PRICE = 0; // 上次空单开仓价
VARIABLE:LONG_COUNT = 0; // 当前多单层数
VARIABLE:SHORT_COUNT = 0; // 当前空单层数

VARIABLE:P1[MAX_GRID]:=0,P2[MAX_GRID]:=0;

// 获取每日开盘价
IF TODAYBAR = 1 THEN BEGIN
	
	initbound(P1,0);
	initbound(p2,0);
    BASE_PRICE : =OPEN; // 当日开盘价
    GRID_SIZE := 5; // 网格基准差
    GRID_DIF:=5;
    
    LAST_LONG_PRICE := BASE_PRICE;
    LAST_SHORT_PRICE := BASE_PRICE;
    
    LONG_COUNT := 0;
    SHORT_COUNT := 0;
END;

AB: BASE_PRICE;

// 多单网格逻辑
IF CLOSE <= (LAST_LONG_PRICE - GRID_SIZE * GRID_SIZE) AND LONG_COUNT < MAX_GRID THEN BEGIN
    // 开多单
    BUY(1, LONG_COUNT+1, LIMITR, LAST_LONG_PRICE - GRID_SIZE * GRID_SIZE),ignorecheckprice;
    LONG_COUNT := LONG_COUNT + 1;
    P1[LONG_COUNT]:=LAST_LONG_PRICE;
    LAST_LONG_PRICE := LAST_LONG_PRICE - GRID_SIZE * GRID_SIZE; 
    
END;


当前平多:0;
FOR I=1 TO MAX_GRID DO 
BEGIN

IF 	P1[I]=0 THEN CONTINUE;

IF H>P1[I] AND HOLDING>0 AND ENTERBARS>0 THEN 
BEGIN
SELL(1,I,LIMITR,P1[I]),IGNORECHECKPRICE;
P1[I]:=0;
当前平多:=I;
BREAK;	 
END 	
	 
END 



// 空单网格逻辑
IF CLOSE >= (LAST_SHORT_PRICE + GRID_SIZE * GRID_DIF) AND SHORT_COUNT < MAX_GRID THEN BEGIN
    // 开空单
    BUYSHORT(1, SHORT_COUNT+1, LIMITR, LAST_SHORT_PRICE + GRID_SIZE * GRID_DIF),ignorecheckprice;
    SHORT_COUNT := SHORT_COUNT + 1;
    P2[SHORT_COUNT]:=LAST_SHORT_PRICE;
    LAST_SHORT_PRICE := LAST_SHORT_PRICE + GRID_SIZE * GRID_DIF;
    
END;

当前平空:0;
FOR J=1 TO MAX_GRID DO 
BEGIN

IF 	P2[J]=0 THEN CONTINUE;

IF L<P2[J] AND HOLDING<0 AND ENTERBARS>0 THEN 
BEGIN
SELLSHORT(1,J,LIMITR,P2[J]),IGNORECHECKPRICE;
P2[J]:=0;
当前平空:=J;
BREAK;	 
END 	
	 
END 


// 收盘前处理
IF TIME = CLOSETIME(0) THEN BEGIN
    // 撤销所有委托单
    // TODO:需要确认PEL中撤销委托的函数
    // GAP:缺少撤销委托单的函数

    // 平掉所有持仓
    IF HOLDING > 0 THEN BEGIN
        收盘平多:SELL(1, HOLDING, MARKETR);
    END;
    IF HOLDING < 0 THEN BEGIN
        收盘平空:SELLSHORT(1, ABS(HOLDING), MARKETR);
    END;

    // 重置网格状态
    LONG_COUNT := 0;
    SHORT_COUNT := 0;
    LAST_LONG_PRICE := 0;
    LAST_SHORT_PRICE := 0;
END;

持仓:holding;

PX:ENTERPRICE;
PY:EXITPRICE;
回复

使用道具 举报

2

主题

20

帖子

30

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2026-3-31 15:34 | 显示全部楼层
资深技术05 发表于 2026-3-31 15:25
[mw_shl_code=pel,true]// 参数定义
INPUT:MAX_GRID(10); // 最大网格层数

在原来的平均手数的代码上,如何增加开仓一一对应止损,止损是止盈基差的2倍,谢谢啦
回复

使用道具 举报

2

主题

6366

帖子

6366

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2026-3-31 15:48 | 显示全部楼层
你这种止损逻辑和加仓会冲突的吧。  你首次开仓后,跌下去第一个基差加仓第一次,跌下去第二个基差加仓第二次 同时 首次开仓的止损也满足了。等于是又开,又买了。  
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-3 01:46 , Processed in 0.137054 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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