龙听期货论坛's Archiver

龙听 发表于 2024-11-18 10:35

鼎元C++量化程式码指标与函数模块系列之【highest、lowest的计算方法及调用方法】

第一部分、头文件声明变量:[code]
        double highest(string period, string inst, int num); //获取num周期内所有bar的最高价
        double lowest(string period, string inst, int num);//获取num周期内所有bar中最低价
[/code]第二部分、源文件公式计算函数[code]

// 计算num周期内bar最高价格
double test::highest(string period, string inst, int num)
{
        double hiprice = 0;
        int key = 0;
        map<string, TKVALUE>::reverse_iterator it;
        for (it = mapK[period][inst].rbegin(); it != mapK[period][inst].rend(); ++it)
        {
                if (hiprice < it->second.dHigh)hiprice = it->second.dHigh;
                key++;
                if (key >= num)break;
        }
        return hiprice;
}//计算num周期内bar最低价格
double test::lowest(string period, string inst, int num)
{
        double lowprice = 0;
        int key = 0;
        map<string, TKVALUE>::reverse_iterator it;
        for (it = mapK[period][inst].rbegin(); it != mapK[period][inst].rend(); ++it)
        {
                if (lowprice == 0)lowprice = it->second.dLow;
                if (lowprice > it->second.dLow)lowprice = it->second.dLow;
                key++;
                if (key >= num)break;
        }
        return lowprice;
}
[/code]三、使用方法:

1、范例:[code]
RsqBar(sPeriod, sInst);
lowest(sPeriod, sInst, 20);
[/code]调用前20中bar的开盘价中最低价。

龙听 发表于 2024-11-18 10:36

使用说明参考:[url]http://www.qhlt.cn/thread-160007-1-1.html[/url];

龙听 发表于 2024-12-10 12:46

说明:

(1)、如何想获取某个周期的开盘价、收盘价或最低价的highest值,只需要将相应公式中的(it->second.dHigh)这里面的dHigh改成相应的值就行了。有哪些值参考(K线数据要素):[url]http://www.qhlt.cn/thread-159052-1-1.html[/url];

页: [1]