以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  public变量取不到值  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=184223)

--  作者:weishao
--  发布时间:2021/2/7 13:35:58
--  public变量取不到值
public变量取不到值:
图片点击可在新窗口打开查看此主题相关图片如下:public变量取不到值.png
图片点击可在新窗口打开查看
public c,d 
Sub sub_main()
 d=func1(3, 5) 
 call sub1(4,6) 
End Sub 
Function func1(v1, v2) 
   func1 = v1 + v2
End Function

sub sub1(v1, v2) 
   c = v1 * v2   
End sub
  MsgBox "d="&d
  MsgBox "c="&c
本来想通过sub1计算的结果返回全局变量c,通过func1计算d,c和d的值在其他地方用,什么办法取到sub1的返回值计算结果c?

--  作者:weishao
--  发布时间:2021/2/7 13:43:33
--  
PUBLIC statusinipathfilename
Sub MARKETDATA_StockAlarm(FormulaName, Price, Market, Code)
if FormulaName="D即开复核移盈价止盈" then
statusinipath="D:\\Weisoft Stock(x64)\\Setting\\OrderLog\\D即开复核移盈价\\"
statusinipathfilename=statusinipath&STKNAME&"STATUS.INI"
end If
\'if...
\'...
\'end if
end Sub
然后在ORDER_OrderStatusEx2中使用statusinipathfilename
sub ORDER_OrderStatusEx2(OrderID, Status, Filled, Remaining, Price, Code, Market, OrderType, Aspect, Kaiping,Account, AccountType)
if status="Filled" then
mystatus="FILLED"
end If
if  status="Submitted" then
mystatus="SUBMITTED"
end if 
if  status="Tradeing" then
mystatus="TRADEING"
end if
\'Application.MsgOut mystatus
if UCase(Status)=mystatus  then
Set ReportData = MarketData.GetReportData(Code,Market)
STKNAME=ReportData.StockName 
end if 
mydate=DATETIMETOJZT(date,time) \'转换系统日期为金字塔日期yyyymmdd,yyyy=2021开始的
If UCase(Status)="FILLED" then  \'成交后写入INI文件
if Aspect=0 and Kaiping=0 then \'买入
Document.WritePrivateProfileString STKNAME&"买开F","买开成交日期",mydate,statusinipathfilename  
Document.WritePrivateProfileString STKNAME&"买开F","买开成交时间",mytime,statusinipathfilename    \'当前系统时间
end if
\'if...
\'...
\'end if
end sub


不知道行不行?

--  作者:yukizzc
--  发布时间:2021/2/7 13:49:38
--  
call sub_main()
--  作者:weishao
--  发布时间:2021/2/8 0:32:24
--  
不知道什么意思
--  作者:weishao
--  发布时间:2021/2/8 8:58:23
--  
加了CALLsub_main后可以了
call sub_main
  MsgBox "d="&d
  MsgBox "c="&c
图片点击可在新窗口打开查看此主题相关图片如下:call sub_main.png
图片点击可在新窗口打开查看

--  作者:yukizzc
--  发布时间:2021/2/8 9:02:59
--  
要显示的去执行这个sub过程
--  作者:weishao
--  发布时间:2021/2/8 9:10:32
--  
图片点击可在新窗口打开查看
--  作者:weishao
--  发布时间:2021/2/8 9:12:22
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:marketdata_stockalarm.txt

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:orderstatusex2.txt

本来想通过marketdata_stockalarm事件取到预警的名称,然后把预警的名称放到orderstatusex2里,没成功,
帮我看看

--  作者:yukizzc
--  发布时间:2021/2/8 9:19:09
--  


PUBLIC statusinipathfilename
Sub MARKETDATA_StockAlarm(FormulaName, Price, Market, Code)
statusinipathfilename = "sa"
application.MsgOut 5
End Sub

 

Sub ORDER_OrderStatusEx2(OrderID, Status, Filled, Remaining, Price, Code, Market, OrderType, Aspect, Kaiping, Account, AccountType)
application.MsgOut statusinipathfilename
End Sub


--  作者:yukizzc
--  发布时间:2021/2/8 9:20:39
--  
没有问题,预警满足后,手工下单这里直接能输出得到
图片点击可在新窗口打开查看此主题相关图片如下:bcj{v20@ak1ho974jv4(qj.png
图片点击可在新窗口打开查看