欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 如何通过VBA读写文件

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4204人关注过本帖树形打印复制链接

主题:如何通过VBA读写文件

帅哥哟,离线,有人找我吗?
ma9453
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:88 积分:0 威望:0 精华:0 注册:2016/3/28 11:01:44
如何通过VBA读写文件  发帖心情 Post By:2016/4/7 15:26:24 [只看该作者]

 
 Function SimRecord(Formula,variety,OpType,ss)
    '系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    SimRecord = 0
    Open "d:\tt.txt" For Output as #1
    a=1
    print #1 , a
    close #1
End Function

请教一下,建立了一个vba函数,在open的时候编译有错误,提示“编译错误‘1025’,语句未结束”
请问这是什么问题呢

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/4/7 15:57:15 [只看该作者]

FileSystemObject  建立这个对象来对文本进行操作吧。论坛搜下也有这个范例比较多

http://www.weistock.com/bbs/dispbbs.asp?BoardID=5&ID=90619&skin=0


 回到顶部
帅哥哟,离线,有人找我吗?
ma9453
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:88 积分:0 威望:0 精华:0 注册:2016/3/28 11:01:44
  发帖心情 Post By:2016/4/7 17:17:22 [只看该作者]

 多谢您的回复,按照帖子上的方法测试了一下,编译没有问题,但是在回测的时候文件并没有被操作,可能是什么问题呢?

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/4/7 17:26:30 [只看该作者]

你按照1楼那个方法,自己在d盘建立好testfile.txt

然后运行没反应吗????我这边试过,写入这个文件都是没问题的

你别用自定义函数,直接复制黏贴,然后去启动这样一个操作看下呢?

[此贴子已经被作者于2016/4/7 17:41:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ma9453
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:88 积分:0 威望:0 精华:0 注册:2016/3/28 11:01:44
  发帖心情 Post By:2016/4/7 18:03:57 [只看该作者]

 
Function SimRecord(Formula,variety,OpType,ss)
'
    '系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    SimRecord = 0
    MsgBox  "测试"
    set fso = CreateObject("Scripting.FileSystemObject")
    set f = fso.OpenTextFile("d:\tt.txt", 8, false) '第二个参数 2 表示重写,如果是 8 表示追加
    f.WriteLine "写入内容并换行"
    f.Close
    set f = nothing
    set fso = nothing
    
    
End Function


这是宏的代码,单独执行宏对这个代码测试是可以的。

MA1:=MA(CLOSE,A);
MA2:=MA(CLOSE,B);

手数:=ss;
//交易条件

开多平空条件:=CROSS(MA1,MA2);//开多平空条件
开空平多条件:=CROSS(MA2,MA1);//开空平多条件

EqualFlag := 0;
if MA1 = MA2 THEN
    EqualFlag := 1;

//交易系统
平空:SELLSHORT(开多平空条件,手数,MARKET);
平多:SELL(开空平多条件,手数,MARKET);
if HOLDING = 0 then begin
    开多:BUY(开多平空条件,手数,MARKET);
    开空:BUYSHORT(开空平多条件,手数,MARKET);
end

SimRecord(1,1,1);

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;


这是策略,在回测的时候,不能正确执行VBA的函数。

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2016/4/7 18:09:07 [只看该作者]

VBA的自定义函数要通过公式编辑器左侧的自定义函数栏进行添加的,请确认你是否是通过这个方式添加的

 回到顶部
帅哥哟,离线,有人找我吗?
ma9453
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:88 积分:0 威望:0 精华:0 注册:2016/3/28 11:01:44
  发帖心情 Post By:2016/4/7 18:15:10 [只看该作者]

 是按照这个方式添加的

 回到顶部
帅哥哟,离线,有人找我吗?
马良
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:1516 积分:229 威望:0 精华:0 注册:2012/3/30 12:40:56
  发帖心情 Post By:2016/4/7 19:56:46 [只看该作者]

函数入口的 测试 这个对话框有弹出么?
或者检查vba引擎有没开启

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/4/7 21:19:53 [只看该作者]

如图,就这样放到图表上看看情况呢


图片点击可在新窗口打开查看此主题相关图片如下:5v)bu$cosfjdwl0hj8(x)ec.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
ma9453
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:88 积分:0 威望:0 精华:0 注册:2016/3/28 11:01:44
  发帖心情 Post By:2016/4/8 10:21:21 [只看该作者]

 SimRecord(1,1,1);
MA1:=MA(CLOSE,A);
单独测试simrecord是没问题的,但是增加下面一条语句后,就不能执行simrecord中的代码了(不弹出提示框)

 回到顶部
总数 11 1 2 下一页