烦了tom大侠很久了,是关于使用vb调用接口的事情,应大侠要求把我

Discussion in 'General Topics on Software and Data' started by bbbird886, Nov 30, 2005.

  1. 类似我等之菜鸟入门.哈哈.
    另:本人不会采用引用帖子的方式(旁云:标准菜鸟表现之一),只好全部贴在这里了.
    问:
    我也想做一个能够从网上下载股票数据的软件.但是本人是个vb菜鸟,还是6.0的不是.net的 所以看不明白您所写的c的代码.我想问一些简单的问题,盼望您能答复:
    1\我从网上下载了freestar,这个软件可以直接下载分时数据(tick),我想它应该是把这些数据写在了某个内存中,我想问一下,如何通知该软件内存的起始地址.
    2\我想这些数据应该是一条一条产生的,那么我如果编辑程序应该是这样,每当一条消息传递完毕后,我的程序进行处理,处理完毕后通知freestar进行下一条数据的传输,那么怎么能通知freestar呢?是哪个函数?
    先谢谢了.
    答:
    1、FREESTAR可下载分时数据,即每分钟一笔汇总成交,包括平均价、总成交量、总成交额,不是分笔数据。分时数据在盘后可以下载,盘中不知道行不行,没试过。下载的分时数据是一个数组,数据项的结构定义参见通视卡协议(通视网站、MACD上有)。FREESTAR以WINDOWS消息的方式传递指向分时数据数组的内存指针和数组长度。
    2、分时数据数据一次性下载。如何以编码的方式通知FREESTAR服务器开发者没有公布,外人无法得知,目前都是通过用户界面手动做。
    问:
    我用vb调用Public Declare Function Stock_Init Lib "D:\Program Files\FreeStar\stock.dll" (ByVal hwnd As Long, ByVal msg As Long, ByVal nmode As Single) As Long

    Public Declare Function Stock_Quit Lib "D:\Program Files\FreeStar\stock.dll" (ByVal hwnd As Long) As Long
    这两个函数,怎么那个freestar不运行呢?不显示画面
    Stock_Init(Me.hwnd, WM_USER + 1, &H4)
    奇怪了.是不是我那里做错了.我试着换成了helloword就可以.不过helloword已经不能免费使用了.5555,帮个忙吧!
    答:
    可能是FREESTAR的问题,它的兼容性不如HELLOWORLD,经验判断。或者把nmode改成LONG试试(估计没用)。
    如果HELLOWORLD不行,再试MACD上公布的其他网络接口。
    另外,Stock_Init的第三个参数是整数4,你直接写4进去看看。
    问:
    Posted: 2005-11-11 11:47 Post subject: 很抱歉,还是要请教另外一个问题.

    --------------------------------------------------------------------------------

    我按照我的推测编写了一些vb的代码.我觉得应该是这样的.一个窗口通过调用stock-init函数,运行freestar并且同时将wm-user自定义消息号的数值传给freestar,以及窗口的句柄也传给freestar,freestar开始下载数据的时候会按照约定好的自定义消息号,句柄,将数据的内存起始地址以消息参数的形式传给窗口,窗口接收到自定义消息号后就可以按照消息参数的起始地址接收数据了.我大概编了一个很简单的测试的程序.但是程序没有反映.能再帮助我一下吗?先谢谢了 有些不好意思了.下面是代码:
    1:Module部分:
    Option Explicit
    Private Const GWL_WNDPROC = -4
    Public Const GWL_USERDATA = (-21)

    Public Const WM_USER = 54
    Public Declare Function Stock_Init Lib "D:\Program Files\FreeStar\stock.dll" (ByVal hwnd As Long, ByVal Msg As Long, ByVal nmode As Long) As Long

    Public Declare Function Stock_Quit Lib "D:\Program Files\FreeStar\stock.dll" (ByVal hwnd As Long) As Long
    Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
    ByVal hwnd As Long, ByVal Msg As Long, _
    ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias _
    "SetWindowLongA" (ByVal hwnd As Long, _
    ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Public Function Hook(ByVal hwnd As Long) As Long
    Dim pOld As Long
    '指定自定义的窗口过程
    pOld = SetWindowLong(hwnd, GWL_WNDPROC, _
    AddressOf WindowProc)
    '保存原来默认的窗口过程指针
    SetWindowLong hwnd, GWL_USERDATA, pOld
    Hook = pOld
    End Function

    Public Sub Unhook(ByVal hwnd As Long, ByVal lpWndProc As Long)
    Dim temp As Long

    temp = SetWindowLong(hwnd, GWL_WNDPROC, lpWndProc)
    End Sub

    Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, _
    ByVal wParam As Long, ByVal lParam As Long) As Long

    If uMsg = WM_USER + 1 Then
    MsgBox wParam
    MsgBox lParam
    End If
    Dim lpPrevWndProc As Long
    '查询原来默认的窗口过程指针
    lpPrevWndProc = GetWindowLong(hw, GWL_USERDATA)
    '调用原来的窗口过程
    WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
    End Function
    窗体部分
    Private Sub Command1_Click()
    a = Stock_Init(Me.hwnd, WM_USER + 1, &H4)
    End Sub

    Private Sub Command2_Click()
    b = Stock_Quit(Me.hwnd)
    End Sub
    再次感谢
    答:
    vb下如何接收和处理窗口消息我是不懂的,所以看你的程序也没法直接提供帮助(VB应该有自己的WINDOWS消息处理方法吧,我看你调用了不少user32函数,需要直接使用这些低层次处理机制么?通视公司给的C++源码也没有这些)。我只知道在C#下,控间窗口的消息处理函数要自己做OVERRIDE编码,然后用wm-user定义来判断是否为FREESTAR发送,然后根据数据类别(分笔数据或是文件数据)的不同把指针转换成相应的数据结构。
    问:
    大侠,下载分笔数据的数据结构是下面这个吗?
    typedef struct tagRCV_REPORT_STRUCTEx
    {
    WORD m_cbSize; // 结构大小
    time_t m_time; // 交易时间
    WORD m_wMarket; // 股票市场类型
    char m_szLabel[STKLABEL_LEN]; // 股票代码,以'\0'结尾
    char m_szName[STKNAME_LEN]; // 股票名称,以'\0'结尾

    float m_fLastClose; // 昨收
    float m_fOpen; // 今开
    float m_fHigh; // 最高
    float m_fLow; // 最低
    float m_fNewPrice; // 最新
    float m_fVolume; // 成交量
    float m_fAmount; // 成交额

    float m_fBuyPrice[3]; // 申买价1,2,3
    float m_fBuyVolume[3]; // 申买量1,2,3
    float m_fSellPrice[3]; // 申卖价1,2,3
    float m_fSellVolume[3]; // 申卖量1,2,3

    float m_fBuyPrice4; // 申买价4
    float m_fBuyVolume4; // 申买量4
    float m_fSellPrice4; // 申卖价4
    float m_fSellVolume4; // 申卖量4

    float m_fBuyPrice5; // 申买价5
    float m_fBuyVolume5; // 申买量5
    float m_fSellPrice5; // 申卖价5
    float m_fSellVolume5; // 申卖量5

    } RCV_REPORT_STRUCTEx, *PRCV_REPORT_STRUCTEx;
    答:
    是分笔的结构,但这种数据是广播方式发送和接收的,不是一般意义上的下载
    问:
    wparam传递的消息类型是不是=0x3f001235是表示传递的股票交易数据,lparam传递的是数据地址。数据地址指向的是
    typedef struct tagRCV_DATA
    {
    int m_wDataType; // 文件类型
    int m_nPacketNum; // 记录数,参见注一
    RCV_FILE_HEADEx m_File; // 文件接口
    BOOL m_bDISK; // 文件是否已存盘的文件
    union
    {
    RCV_REPORT_STRUCTEx * m_pReport;
    RCV_HISTORY_STRUCTEx * m_pDay;
    RCV_MINUTE_STRUCTEx * m_pMinute;
    RCV_POWER_STRUCTEx * m_pPower;
    void * m_pData; // 参见注二
    };
    } RCV_DATA,*PRCV_DATA;
    这个结构的首地址。m_pReport指向的才是分笔数据的首地址。它指向的是:
    typedef struct tagRCV_REPORT_STRUCTEx
    {
    WORD m_cbSize; // 结构大小
    time_t m_time; // 交易时间
    WORD m_wMarket; // 股票市场类型
    char m_szLabel[STKLABEL_LEN]; // 股票代码,以'\0'结尾
    char m_szName[STKNAME_LEN]; // 股票名称,以'\0'结尾

    float m_fLastClose; // 昨收
    float m_fOpen; // 今开
    float m_fHigh; // 最高
    float m_fLow; // 最低
    float m_fNewPrice; // 最新
    float m_fVolume; // 成交量
    float m_fAmount; // 成交额

    float m_fBuyPrice[3]; // 申买价1,2,3
    float m_fBuyVolume[3]; // 申买量1,2,3
    float m_fSellPrice[3]; // 申卖价1,2,3
    float m_fSellVolume[3]; // 申卖量1,2,3

    float m_fBuyPrice4; // 申买价4
    float m_fBuyVolume4; // 申买量4
    float m_fSellPrice4; // 申卖价4
    float m_fSellVolume4; // 申卖量4

    float m_fBuyPrice5; // 申买价5
    float m_fBuyVolume5; // 申买量5
    float m_fSellPrice5; // 申卖价5
    float m_fSellVolume5; // 申卖量5

    } RCV_REPORT_STRUCTEx, *PRCV_REPORT_STRUCTEx;
    也就是我要先用vb取得第一个指针里的内容才能获得第二个指针,通过第二个指针才能知道数据?
    谢谢了。
    答:
    wparam传递的消息类型当为0x3f001234时表示传递的股票分笔交易数据结构,当为0x3f001235时表示传递的是历史行情数据文件。lparam传递的是数据头地址,数据头地址指向的是RCV_DATA数据结构,获取该结构后可获得指向真正数据项存放位置的指针,即union部分。
    问:
    不过我看了一下demo,好象没有对m_szFileName[MAX_PATH]定义具体的字符长度,我用vb必须知道从起始地址间隔多少字节后才是指向数据的地址.所以这个有多少字节还请帮个忙.如果是定义的,怎么定义?
    答:
    MAX_PATH是C++编译器的默认include头文件参数,你用255或256试试。
    问:
    谢谢了.还是不明白是256个字节,还是256位(32个字节)?
    答:
    字节
    问:
    1\下载的分笔数据其结构是什么?是这个:
    typedef struct tagRCV_REPORT_STRUCTEx
    {
    WORD m_cbSize; // 结构大小 2
    time_t m_time; // 交易时间 4
    WORD m_wMarket; // 股票市场类型 2
    char m_szLabel[STKLABEL_LEN]; // 股票代码,以'\0'结尾 10
    char m_szName[STKNAME_LEN]; // 股票名称,以'\0'结尾 32

    float m_fLastClose; // 昨收 4
    float m_fOpen; // 今开 4
    float m_fHigh; // 最高 4
    float m_fLow; // 最低 4
    float m_fNewPrice; // 最新
    float m_fVolume; // 成交量
    float m_fAmount; // 成交额

    float m_fBuyPrice[3]; // 申买价1,2,3
    float m_fBuyVolume[3]; // 申买量1,2,3
    float m_fSellPrice[3]; // 申卖价1,2,3
    float m_fSellVolume[3]; // 申卖量1,2,3

    float m_fBuyPrice4; // 申买价4
    float m_fBuyVolume4; // 申买量4
    float m_fSellPrice4; // 申卖价4
    float m_fSellVolume4; // 申卖量4

    float m_fBuyPrice5; // 申买价5
    float m_fBuyVolume5; // 申买量5
    float m_fSellPrice5; // 申卖价5
    float m_fSellVolume5; // 申卖量5

    } RCV_REPORT_STRUCTEx, *PRCV_REPORT_STRUCTEx;
    还是这个:
    //补充分时线数据
    typedef union tagRCV_MINUTE_STRUCTEx
    {
    struct{
    time_t m_time; // UCT
    float m_fPrice;
    float m_fVolume;
    float m_fAmount;
    };
    RCV_EKE_HEADEx m_head;
    }RCV_MINUTE_STRUCTEx,*PRCV_MINUTE_STRUCTEx;
    2\好象分笔数据的下载每一只股票的数据只传递一次.那么只能传递第一笔啊,余下的怎么办呢?
    再次感谢.
    答:
    1) RCV_REPORT_STRUCTEx是分笔数据结构,RCV_MINUTE_STRUCTEx是分时数据结构;
    2)分笔数据一有行情更新(上交所每4-6秒更新一次,深圳6秒)就发送一次,即最新的开高低收量和盘口,自己可以建一个库保存每一笔分笔数据。分时数据以一个数组的形式一次性提供,没有更新一说(有的驱动定时如X分钟自动更新广播一次)。再强调一次,粉笔数据是动态更新的,分时数据是“点播(通过用户界面或程序调用API)下载”的。
    3)希望你能为其他新手做一个FAQ贴,把这类问题汇总和整理出来。
     
  2. 谢谢了

    请问bbbird886:
     下面这段在VB中如何实现接收?给个例句即可,先谢了
    typedef struct tagSCPankou {
    // time_t m_time; // UCT
    long m_lTime; // hhmmss

    float m_fHigh; // 最高
    float m_fLow; // 最低
    float m_fNewPrice; // 最新
    float m_fVolume; // 成交量
    float m_fAmount; // 成交额

    long m_lStroke; // 本次实际成交笔数
    float m_fBuyPrice[5]; // 申买价1,2,3
    float m_fBuyVolume[5]; // 申买量1,2,3,
    float m_fSellPrice[5]; // 申卖价1,2,3
    float m_fSellVolume[5]; // 申卖量1,2,3
     
  3. 不客气

    用copymemory函数吧 Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpDest As Any, lpSource As Any, ByVal cbCopy As Long)它的作用是按照指定的字节把一段内存拷贝到另外一个指定的内存中.另外,我发现现在大部分免费的接口都是只能补以前的分时,你知道哪里能补分笔吗?
     
  4. 感谢,我试试

    收费的也只是个别的提供盘后补分笔,但只可下近几日的
    可能是因为数据量太大吧
    数畅的只提供当天的,无奈
     
  5. 忘了问了

    是自己用还是开发给别人用?
    如是自己用,就可以想办法了
    我觉得可以做个键盘鼠标记录的东西,利用各家软件都提供单只股票的数据输出功能,有些包括分笔(EXECL或TXT),然后
    for i=....  
    ....
    输出=>PageDown
    ...
    next i
    好处是不怕它的数据解码格式变,中午的一小时也可采集数据,如直接转换股票软件的数据,则只能等到收盘后
    大智慧的数据转换就比较烦琐,理论上可以随时变换加密种子,虽可转换但太不可靠,因为它可以放个随机的种子,我研究了下它的格式,虽然明白了,但只能放弃
    不好意思,接触编程时间不长,只是个笨办法
     
  6. 不好意思,有知能否帮下

    做数畅接收,但总也是没反应
    数畅上有接口规范,不大懂
    能否帮忙针对数畅做个类似于你上边的测试例程,有反应即可,呵呵
    email:  my15668@sina.com
    万分感谢
    数畅上有接口规范,不大懂
     
  7. 别那么客气

    说实话我也是不懂接口规范,瞎蒙的.要不tom大侠还那么费力的给我讲解做什么. :oops: 数畅能补分笔吗?我有时间看看.另外,你做这个目的是什么呢?如果我能再次蒙上,我就把代码给你.哈哈. :D
     
  8. 那太好了,上帝保佑你一定蒙上,阿门,呵呵

    数畅下载中有个 明细类别,估计就是分笔了
    目的是想给一个VB写的K线显示东东弄个实时的数据源出来,自己用
    把你的测试例程的相关参数等替换一下就应差不多了
    VB写的K线东东你如有兴趣,俺可以发给你
     
  9. 谢谢你了,不过不用了.现在我正在学习会计方面的东西

    股票与程序是一个爱好(我是会计).没有精力再去研究了(快考试了)。很抱歉的是我改写了一下程序,数畅的能调出来,但是没办法和他们的主站连接上.(我没有帐号).所以就不知道是否能接收信息了.不过,我看你的情况,我也发生过.我太关注模块中api函数的调用而忽略了在form-load里调用已经编写好的函数了.所以没有反映.应该是下面的语句

    Private Sub Form_Load()
    Me.Tag = Hook(Me.hwnd)
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    Unhook Me.hwnd, Me.Tag
    End Sub

    Private Sub Command1_Click()
    a = Stock_Init(Me.hwnd, WM_USER + 1, &H4)
    End Sub

    Private Sub Command2_Click()
    b = Stock_Quit(Me.hwnd)
    End Sub
    基本上你能接收到自定义的消息号以后,按照c里的定义的结构能够计算出指针的位置,然后用copymemory函数取出指针的内容,该内容是数据的起始地址.(就是c里的链表,我也是刚知道).然后就能取得数据了.
    祝你好运.
    另:现在那么多成熟的软件,你为什么还要自己做呢?我是因想通过分笔计算筹码分布和日obv不得已要去取得分笔数据的.能告诉我你的相法吗?
     
  10. 十分感谢

    这两天也已基本调通,没有TOM和你前边的基础,不知要瞎弄到什么时候
    下边就是数据阶段了,有不明白的还要你多多指点
    十分抱歉耽误你不少时间
    主要是因为可以自主支配大部分时间
    也想以后专职做做股票,同时学学编程,软件能做的事太多了
    没事干的时候,还用VB弄了个小的TTS,纯是兴趣也是个编程经验的积累
    这半年时间,不知怎么就弄成这样了,呵呵

    可惜开始没学C++,朋友说,VB简单,结果就看了VB
    涉及一些偏点的东西,VB层面上就比较难得到较好的资料了。半路出家,下盘功夫差,先天不足,接触个幂运算,就得先弄明白什么是1,什么是加法,呵呵
    再次感谢并祝考试顺利
     
  11. lee

    lee

    呵呵,俺也是做财务地,男的做会计不容易奥
     
  12. lee

    lee

    bbbird886兄说的分笔估计也不是真正的分笔吧,这样计算出来的值来判断的话一定程度上易被主力蒙骗,不过关键是如何调用当天的分笔来统计呢,我也很早就想调用当天的明细来做公式统计,但用软件比较难(分析家,飞狐)
     
  13. 真的感觉这里的氛围很好

    虽然不是很火(斑竹别生气,我比较直率),但是没有其他论坛有的一些弊端.感觉这里的人都象兄弟一样.首先,不要谢我,我也是从tom大侠那里学来的.还有感谢你的祝福,希望我能成功.我的考试可能会有一段时间.(3年左右).另外lee兄,咱们是同行啊.以后有问题还要请教.具体你说的庄家骗线的事情我是这样想的:从分笔过滤掉大单,用剩余的数据进行计算.不采用指南针的按照单峰双峰等而是按照筹码交易的时间.我的基础理论是:掌握筹码时间越长的人要求的利润率越高.正是由于这一点决定了市场上卖方可能卖出筹码的可能性,也就是供给方.我的第二个理论:筹码分布决定了卖方力量,趋势反映了买方力量.我的第三个理论:在一个封闭的环境里,如果没有消息\业绩等的影响,也就是投资者仅能通过交易价格来决定自己是否买卖,也会产生价格波动而且是有两种周期(短期和中期).长期波动是由于整个股票市场的货币总供给决定的.
    我的理论是也不知道对不对.所以我在想自己做一个程序进行验证.很希望你能提点意见.可能咱们学会计的弊端就是总想把什么东西规范起来,喜欢死板的东西,对于市场这样的灵活的东西也想找出规律来,不过有的时候是不可能的吧.呵呵.
     
  14. 问题来了,呵呵

    问题来了,呵呵。下面是通视接口规范的一段:
    // 由股号取股票数据(扩展)
    // 入口参数:
    // pszStockCode 股票代号
    // nMarket    证券市场
    // pBuf     存放股票数据的缓冲区
    // 返回参数:
    // NoStockData  无股票数据
    // 注:
    // 该函数提供股票数据的主要数据;分析软件刚运行时,可以快速建立数据框架
    int WINAPI GetStockByCodeEx(char * pszStockCode,int nMarket,RCV_REPORT_STRUCTEx * pBuf);

    char在VB中是Byte 最大也是256, pszStockCode也就是股票代号,容量就不够啊,比如000999,且不是这样的数据类型。是不是我理解错误?它代表的意思到底是什么,怎么声明?
    菜啊,不好意思。倒啊,菜鸟的内置函数名为:十万个为什么,呵呵
    先谢了
     
  15. lee

    lee

    论坛的确不是很火,但更有人情味,帖子谈论的内容也比其他论坛更有深度,在这里我学到了不少,也感悟不少,bbbird886兄就别叫我lee兄了,我刚毕业没多久,顶不住啊,简单点直接叫小李就可以了。bbbird886兄是考cpa吧!还是acca?我也准备考了,不过还想在各方面对会计之外的东西多学点,还不会编程
    无法在这方面发表言论,对于bbbird886兄的论点,小弟不才,但是为了论坛的人气,胡吹一下,呵呵
    bbbird886兄说得非常好,金融这东西没有绝对的精确,也不可能规范的太明确
    对于“掌握筹码时间越长的人要求的利润率越高.正是由于这一点决定了市场上卖方可能卖出筹码的可能性,也就是供给方.”有创意,我觉得股价离筹码成本的距离也会影响到筹码的供给(不考虑消息),特别是在股价从下方接近高位长期筹码时,还与哦就是庄家筹码对于这一分析的影响,这就又要考虑到大势的走势对于庄家行为的影响(影响庄稼的持筹时间),但是大势也可以说是长期波动又是与市场互动的,那么市场反应于资金供给,资金供给由什么决定呢?政策导向与市场心理,关键是这市场决不是4个字所能概括的,所以说索洛斯喜欢寻找并适时抓住市场的疯狂,有点模糊,可能我说得是对于bbbird886兄理论的画蛇添足,不足之处还望指导!
     
  16. 谢谢两位了.

    别客气,我也是学vb的,也是半路出家自然知道vb的难处.vb是易学难精.你提的问题我也没特别的关注过(我只是想得到历史分笔数据).你说的那个参数可能是指针吧,它指向的是字符数组的起始地址.它不是股票代码.
    to:lee兄.别客气.网络之上何必论年龄大小.我正在考acca.关于你说的筹码分布,我的想法和你不谋而合.我再详细的说一下我的想法,希望你能提出意见.我觉得散户要求的利润应该是在10%以内.而且是正态分布的,或者可近似的认为是正态分布的.实际上是散户的获利盘.同时,我认为,在高于成交价格的10%区域内也为散户抛出筹码的区域(当然,我觉得该部分筹码至少在1个月以上).也就是割肉盘.这样我们如果能取得分笔成交我们在扣除了单比的大额成交后,按照上述规则计算筹码的抛出.那么就能形成筹码的分布.在通过计算筹码的形成日期(比如5日内筹码量及平均价格\5-60日的60-240日的)平均成本就能看出庄家吸筹\洗盘\出货.而且能划定安全的成交区域(比如庄家成本的50%以内).再结合大盘以及趋势,这样胜算可能会高一些.问题是这个方法的计算量非常大,没有计算机根本就不可能完成.说实话,我也不知道这个方法到底是否可行.很希望你能提出意见.如果哪位高手觉得可行,盼望着能做出个程序蓝测试一下.给我个结果就ok了,我只想验证一下我的想法.再次谢谢lee兄的建议.
     
  17. lee

    lee

    比如5日内筹码量及平均价格\5-60日的60-240日的)这句不是很理解,想做一个公式看看,等作出公式再看看“就能看出庄家吸筹\洗盘\出货.而且能划定安全的成交区域(比如庄家成本的50%以内).”能否成立
    用公式应该能实现的!至少能画出个图形进行分析
     
  18. lee兄

    你说的是分析家的公式吧?好象是没有办法来做的.如果你能做出来,千万别忘了贴出来啊.期待ing
    解释一下.比如5日内的筹码的总量和它的平均价格理论上代表了散户的持股数量以及平均价格.240日--无穷的筹码实际上应该是庄家的(其实就是对预期收益要求高的群体)筹码量以及平均价格.一旦该部分筹码减少或者平均价格上移说明在出货.5日内的买方力量如果不变的话就下跌.实际上所有的均线分析全可以运用在这个指标上.
     
  19. lee

    lee

    bbbird886兄如果真按您所说的,其实分析家的移动成本分布就可以作为分析依据,不过较难做出交易系统
    还有最关键的就是虽然说是理论上,但是这种区分庄筹散筹方法太简单,如果庄家大量对敲的话就不顶用了,还有就是要与k线图对应分析,锁仓的也并不一定就是庄家