金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 218|回复: 3

用VBA回测这样的复杂公式该如何写

[复制链接]

46

主题

140

帖子

150

积分

Rank: 4

等级: 专业版

注册:
2023-2-16
曾用名:
发表于 2025-3-15 17:47 | 显示全部楼层 |阅读模式
老师好,我有这样一段公式代码,在使用VBA回测时遇到诸多困难,请老师指教,(我的OFFICEVBA大概在中级偏上水平),尤其是教程中没有找到:1、如何多品种回测;2、像如下的多曲线开平仓在一个单元内(用数组循环方式)。这两个关键点,在VBA中如何写?,当然,我想使用的方式就是开发文档中 TestReport对象中的"示例4.使用PLE语言做为信号,VBA进行测评"的方式。
//1、========变量定义====================
    WARNING_DISABLE:4;WARNING_DISABLE:9; WARNING_DISABLE:11;
    VARIABLE: HDK[100]=0,KK[100]=0,PK[100]=0,KCLS[100]=0,CON[100]=0;
    SS:=1;         
    M1:=MA(C,15);  M2:=MA(C,10);  M3:=MA(C,5);
    KCLS[1]:=BARSLAST(HDK[1]=0)-2;
    KCLS[2]:=BARSLAST(HDK[2]=0)-2;
    KCLS[3]:=BARSLAST(HDK[3]=0)-2;
    CON[1]:=CROSS(M1,M2);
    CON[2]:=CROSS(M2,M3);
    CON[3]:=CROSS(M1,M3);
    FOR I= 1 TO 3 DO BEGIN
        PK[I]:=KCLS[I]>20 AND ISDOWN;
        KK[I]:=CON[I] AND ISUP;
        开空: PK[I] AND HDK[I]<>0 THEN BEGIN SELLSHORT(1,HDK[I],MARKET); HDK[I]:=0;END
        平空: KK[I] AND HDK[I]=0 THEN BEGIN BUYSHORT(1,SS,MARKET); HDK[I]:=SS;END
    END



回复

使用道具 举报

4

主题

185

帖子

196

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2025-3-15 18:00 | 显示全部楼层
目前VBA的这块测试功能后续我们已经不再进行研发迭代了,如果你有复杂的PEL满足不了的回测需求,我们强烈建议您到python的模块上去
回复

使用道具 举报

46

主题

140

帖子

150

积分

Rank: 4

等级: 专业版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2025-3-15 21:14 | 显示全部楼层
也不需要什么新的迭代,我看了下过往的帖子,目前的VBa 是绝对支持多品种回测和数组回测的,但就是没有写法范例,试了几次用officeVBA的逻辑来套,包括类方法和对象方法,都不成功,——最早的testreport的范例2倒是回测的两个品种,但却是独立内存逻辑,一旦品种多到几十个就没办法了。始终对手册中这一句:"Stkindi 方法:  注意: 该方法返回的Formula对象将使用共享的内存缓冲区,如果你有多个品种需要转换并且同时处理,请使用数组类Array.保存转换后的Formula对象数据"——的理解无法落实到代码上。如果有现成的话,还望不吝贴出。
回复

使用道具 举报

46

主题

140

帖子

150

积分

Rank: 4

等级: 专业版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2025-3-15 21:19 | 显示全部楼层
python当然会无比灵活,一是限于应用能力还不过关,二是在要求巨量回测时的速度时,VBA是有明显优势的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-9 15:06 , Processed in 0.112749 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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