Python fengwo模块筹码峰函数(COST与WINNER)及调用通达信DLL实战示例解析

经常炒股的朋友们都知道,在使用通达信行情软件的时候,经常会使用各种各样的通达信公式进行选股,股票监测、预警,甚至使用指标进行排序,这些操作很方便,可以快速锁定我们想要的目标股票。

量化炒股者为了使用这些类似于通达信的指标,发明了麦语言。但是现在网上流传的麦语言库包括一直流行的TAlib库,均未对定义筹码峰COST、WINNER等函数,这两个函数对于计算股票平均成本和获利盘比例非常重要。网上有大量的关于COST、WINER的Python算法实现教程。但实际计算结果不是和通达信、同花顺等软件的计算结果相差甚远,就是计算速度爆慢,用之对全市场选一次股可能已经收市。

为此,fengwo模块实现了这两个函数,甚至实现了对通达信公式dll的调用(通达信dll都是32位动态链接库,即便是64位fengwo模块也可以直接绑定调用)。

fengwo模块式采用C/C++语言编译制作,运行效率极高,比如SLOPE函数,比循环调用numpy的相关函数快很多;破除了Python全局线程锁(GIL)的限制,所有函数均可在多线程环境下发挥并行计算的优势(包含64位python对32位通达信dll的调用)。所有基础函数均支持变量,比如MA,EMA,SMA函数的周期值均可使用序列值计算,全面模仿通达信公式系统的设计,使得通达信公式可以通过较小的改造就可以使用到Python量化程序上来。

fengwo模块的安装:

pip install fengwo
  • fengwo模块支持Python3.4~Python3.12的32位和64位版本(暂仅支持Windows版,Linux版开发中,linux版不支持对通达信dll文件的调用)
  • COST函数:

    fengwo.COST(HIGH,LOW,VOL,Turnrate,percent)

    Turnrate为换手率,比如当日5%的换手应取值0.05,当日10%的换手应取值0.1。(注意:换手率即成交量/流通股本,但是由于流通股本可能发生变化,所以这里采用了即输入成交量VOL,又输入换手率的方式)

    percent为获利比率,要获得平均成本则可以取值50,要获取使得90%的筹码获利价格,则取值90。

    import fengwo
    df=pd.read_csv(os.path.join(HERE,'603065.csv'))
    #计算90%获利盘的价格
    print(fw.COST(df['high'],df['low'],df['volume'],df['TurnoverRate']/100,90))
    #计算每日平均成本:
    print(fw.COST(df['high'],df['low'],df['volume'],df['TurnoverRate']/100,50))

    WINNER函数:

    fengwo.WINNER(HIGH,LOW,VOL,Turnrate,price)

    Turnrate为换手率,同COST函数

    price即输入的价格,在实际使用过程中,常常取CLOSE(收盘价),即获得该价格处的获利比例。

    import fengwo
    df=pd.read_csv(os.path.join(HERE,'603065.csv'))
    #计算每日平均成本:
    print(fw.WINNER(df['high'],df['low'],df['volume'],df['TurnoverRate']/100,df['close'])

    通达信DLL操作:

    1、同样要先绑定dll文件

    fengwo.binddll(dllno,dllpath)

    dllno即绑定dll的号数,同通达信,取值1-10

    dllpath:即通达信dll文件的路径,这个dll文件必须能够被通达信软件所使用

    返回值:绑定成功返回True,失败则返回失败原因:比如说不是通达信的dll

    2、按照通达信调用dll文件的方式调用

    fengwo.TDXDLL1(fucno,ina,inb,inc)

    fucno:调用通达信dll的功能号

    ina,inb,inc为输入的值,其中ina必须为序列值,inb,inc可以为序列值,也可以是常量

    import fengwo
    if(fw.binddll(1,os.path.join(HERE,'todayKCount.dll'))):
            print(fw.TDXDLL1(5,df['close'],90,20))

    程序实例下载:

    fwjc.rar​fengwo.run/static/upload/fwjc.rar

    全文示例:

    import fengwo as fw
    fw.showMsg(False)
    import pandas as pd
    import os
    
    HERE=os.path.abspath(os.path.dirname(__file__))
    df=pd.read_csv(os.path.join(HERE,'603065.csv'))
    
    
    #筹码峰相关函数实例
    def cmfsl():
        
        #计算90%获利盘的价格
        print(fw.COST(df['high'],df['low'],df['volume'],df['TurnoverRate']/100,90))
        #计算收盘价的获利比例
        print(fw.RD(fw.WINNER(df['high'],df['low'],df['volume'],df['TurnoverRate']/100,df['close']),2))
    
    def tdxdllsl():
        if(fw.binddll(1,os.path.join(HERE,'todayKCount.dll'))):
            print(fw.TDXDLL1(5,df['close'],90,20))
    
    
    if __name__=="__main__":
        #筹码峰相关函数实例
        cmfsl()
        #调用通达信DLL函数实例
        tdxdllsl()

    欢迎大家安装使用fengwo模块!

    pip install fengwo

    作者:kogj

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python fengwo模块筹码峰函数(COST与WINNER)及调用通达信DLL实战示例解析

    发表回复