以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  [原创]获取近月主力和远月主力  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=30873)

--  作者:z7c9
--  发布时间:2012/11/23 22:13:40
--  救助版主:我用机构版,把账户分类了两个组,用全部账户登录,第二组有了信号但没有成交
sub getmaincontracts()
 market=array("sq","dq","zq","zj")
 
 file="c:\\contracts.ini"
 
 set block0=createobject("stock.block")
 set block1=createobject("stock.block")
 
 for i=0 to ubound(market)
  for j=0 to marketdata.getreportcount(market(i))-1
   set myreport=marketdata.getreportdatabyindex(market(i),j)
   suffixlabel=right(myreport.label,2)
   
   if suffixlabel="00" then
    if contractlabel0<>"" and contractlabel1<>"" then     
     if contractstockname0<contractstockname1 then      
      mycontractlabel0=contractlabel0
      mycontractstockname0=lcase(mylabel&contractstockname0)
      mycontractmarket0=contractmarket0
      
      mycontractlabel1=contractlabel1
      mycontractstockname1=lcase(mylabel&contractstockname1)
      mycontractmarket1=contractmarket1      
     else
      mycontractlabel0=contractlabel1
      mycontractstockname0=lcase(mylabel&contractstockname1)
      mycontractmarket0=contractmarket1
      
      mycontractlabel1=contractlabel0
      mycontractstockname1=lcase(mylabel&contractstockname0)
      mycontractmarket1=contractmarket0   
     end if
     
     mycontract0=document.getprivateprofilestring(mylabel,"contract0","0",file)
     mycontract1=document.getprivateprofilestring(mylabel,"contract1","0",file)
     
     if myc and myc then
      document.writeprivateprofilestring mylabel,"contract0",mycontractstockname0,file
      document.writeprivateprofilestring mylabel,"contract1",mycontractstockname1,file
     else
      if mycontract0<>mycontractstockname0 then
       application.msgout mylabel&" 近月换月啦~~~" &mycontract0&" ---> "&mycontractstockname0
      end if
      
      if mycontract1<>mycontractstockname1 then
       application.msgout mylabel&" 远月换月啦~~~ "&mycontract1&" ---> "&mycontractstockname1
      end if
     end if
     
     block0.addstock mycontractmarket0,mycontractlabel0
     block1.addstock mycontractmarket1,mycontractlabel1
     
     document.setextstring mylabel+"_contract0",mycontract0
     document.setextstring mylabel+"_contract1",mycontract1
    end if
    
    c"
    c"
    c"
    contractopenint1=0
    
    if market(i)="dq" then
     mylabel=lcase(left(myreport.label,1))
    else
     mylabel=lcase(left(myreport.label,2))
    end if 
   elseif suffixlabel>="01" and suffixlabel<="12" then
    if myreport.openint=contractopenint0 then
     contractlabel0=myreport.label
     contractstockname0=right(myreport.stockname,4)
     contractmarket0=market(i)
     contractopenint0=myreport.openint
    elseif myreport.openint>=contractopenint1 then
     contractlabel1=myreport.label
     contractstockname1=right(myreport.stockname,4)
     contractmarket1=market(i)
     contractopenint1=myreport.volume
    end if 
   end if
  next
 next
 
 if contractlabel0<>"" and contractlabel1<>"" then     
  if contractstockname0<contractstockname1 then      
   mycontractlabel0=contractlabel0
   mycontractstockname0=lcase(mylabel&contractstockname0)
   mycontractmarket0=contractmarket0
   
   mycontractlabel1=contractlabel1
   mycontractstockname1=lcase(mylabel&contractstockname1)
   mycontractmarket1=contractmarket1      
  else
   mycontractlabel0=contractlabel1
   mycontractstockname0=lcase(mylabel&contractstockname1)
   mycontractmarket0=contractmarket1
   
   mycontractlabel1=contractlabel0
   mycontractstockname1=lcase(mylabel&contractstockname0)
   mycontractmarket1=contractmarket0   
  end if
  
  mycontract0=document.getprivateprofilestring(mylabel,"contract0","0",file)
  mycontract1=document.getprivateprofilestring(mylabel,"contract1","0",file)
  
  if myc and myc then
   document.writeprivateprofilestring mylabel,"contract0",mycontractstockname0,file
   document.writeprivateprofilestring mylabel,"contract1",mycontractstockname1,file
  else
   if mycontract0<>mycontractstockname0 then
    application.msgout mylabel&" 近月换月啦~~~" &mycontract0&" ---> "&mycontractstockname0
   end if
   
   if mycontract1<>mycontractstockname1 then
    application.msgout mylabel&" 远月换月啦~~~ "&mycontract1&" ---> "&mycontractstockname1
   end if
  end if
  
  block0.addstock mycontractmarket0,mycontractlabel0
  block1.addstock mycontractmarket1,mycontractlabel1
  
  document.setextstring mylabel+"_contract0",mycontract0
  document.setextstring mylabel+"_contract1",mycontract1 
 end if
 
 block0.tosave "自选","近月主力"
 block1.tosave "自选","远月主力"
end sub

--  作者:gz12345678gz
--  发布时间:2012/11/23 23:28:05
--  
这是VBA还是宏?怎么使用啊?还望明示,呵呵
--  作者:solarhe2006
--  发布时间:2012/11/25 16:42:07
--  
sub getmaincontracts()
 market=array("sq","dq","zq","zj")
 
 file="c:\\contracts.ini"
 
 set block0=createobject("stock.block")
 set block1=createobject("stock.block")
 
 for i=0 to ubound(market)
  for j=0 to marketdata.getreportcount(market(i))-1
   set myreport=marketdata.getreportdatabyindex(market(i),j)
   suffixlabel=right(myreport.label,2)
   
   if suffixlabel="00" then
    if contractlabel0<>"" and contractlabel1<>"" then     
     if contractstockname0<contractstockname1 then      
      mycontractlabel0=contractlabel0
      mycontractstockname0=lcase(mylabel&contractstockname0)
      mycontractmarket0=contractmarket0
      
      mycontractlabel1=contractlabel1
      mycontractstockname1=lcase(mylabel&contractstockname1)
      mycontractmarket1=contractmarket1      
     else
      mycontractlabel0=contractlabel1
      mycontractstockname0=lcase(mylabel&contractstockname1)
      mycontractmarket0=contractmarket1
      
      mycontractlabel1=contractlabel0
      mycontractstockname1=lcase(mylabel&contractstockname0)
      mycontractmarket1=contractmarket0   
     end if
     
     mycontract0=document.getprivateprofilestring(mylabel,"contract0","0",file)
     mycontract1=document.getprivateprofilestring(mylabel,"contract1","0",file)
     
     if myc and myc then
      document.writeprivateprofilestring mylabel,"contract0",mycontractstockname0,file
      document.writeprivateprofilestring mylabel,"contract1",mycontractstockname1,file
     else
      if mycontract0<>mycontractstockname0 then
       application.msgout mylabel&" 近月换月啦~~~" &mycontract0&" ---> "&mycontractstockname0
      end if
      
      if mycontract1<>mycontractstockname1 then
       application.msgout mylabel&" 远月换月啦~~~ "&mycontract1&" ---> "&mycontractstockname1
      end if
     end if
     
     block0.addstock mycontractmarket0,mycontractlabel0
     block1.addstock mycontractmarket1,mycontractlabel1
     
     document.setextstring mylabel+"_contract0",mycontract0
     document.setextstring mylabel+"_contract1",mycontract1
    end if
    
    c"
    c"
    c"
    contractopenint1=0
    
    if market(i)="dq" then
     mylabel=lcase(left(myreport.label,1))
    else
     mylabel=lcase(left(myreport.label,2))
    end if 
   elseif suffixlabel>="01" and suffixlabel<="12" then
    if myreport.openint=contractopenint0 then
     contractlabel0=myreport.label
     contractstockname0=right(myreport.stockname,4)
     contractmarket0=market(i)
     contractopenint0=myreport.openint
    elseif myreport.openint>=contractopenint1 then
     contractlabel1=myreport.label
     contractstockname1=right(myreport.stockname,4)
     contractmarket1=market(i)
     contractopenint1=myreport.volume
    end if 
   end if
  next
 next
 
 if contractlabel0<>"" and contractlabel1<>"" then     
  if contractstockname0<contractstockname1 then      
   mycontractlabel0=contractlabel0
   mycontractstockname0=lcase(mylabel&contractstockname0)
   mycontractmarket0=contractmarket0
   
   mycontractlabel1=contractlabel1
   mycontractstockname1=lcase(mylabel&contractstockname1)
   mycontractmarket1=contractmarket1      
  else
   mycontractlabel0=contractlabel1
   mycontractstockname0=lcase(mylabel&contractstockname1)
   mycontractmarket0=contractmarket1
   
   mycontractlabel1=contractlabel0
   mycontractstockname1=lcase(mylabel&contractstockname0)
   mycontractmarket1=contractmarket0   
  end if
  
  mycontract0=document.getprivateprofilestring(mylabel,"contract0","0",file)
  mycontract1=document.getprivateprofilestring(mylabel,"contract1","0",file)
  
  if myc and myc then
   document.writeprivateprofilestring mylabel,"contract0",mycontractstockname0,file
   document.writeprivateprofilestring mylabel,"contract1",mycontractstockname1,file
  else
   if mycontract0<>mycontractstockname0 then
    application.msgout mylabel&" 近月换月啦~~~" &mycontract0&" ---> "&mycontractstockname0
   end if
   
   if mycontract1<>mycontractstockname1 then
    application.msgout mylabel&" 远月换月啦~~~ "&mycontract1&" ---> "&mycontractstockname1
   end if
  end if
  
  block0.addstock mycontractmarket0,mycontractlabel0
  block1.addstock mycontractmarket1,mycontractlabel1
  
  document.setextstring mylabel+"_contract0",mycontract0
  document.setextstring mylabel+"_contract1",mycontract1 
 end if
 
 block0.tosave "自选","近月主力"
 block1.tosave "自选","远月主力"
end sub

--  作者:gz12345678gz
--  发布时间:2012/11/26 12:39:41
--  
有人在吗?