编写一个通达信指标 第一笔成交量 成交价
时间: 2023-10-08 07:07:24 浏览: 157
通达信指标的编写需要使用其自带的编程语言公式语言 (C语言语法),下面是第一笔成交量和成交价的指标代码:
```
/*
CSTIB_FirstTrade
第一笔成交量与成交价
*/
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "math.h"
#include "float.h"
#include "Indicator.h"
//指标计算函数
static void CSTIB_FirstTrade(CIndicator *pInd)
{
int i, n;
double fV, fP;
n = pInd->m_nRecordCount;
if (n <= 0)
return;
for (i = 0; i < n; i++)
{
fV = pInd->m_pInstrument->m_pRecord[i].m_nVolume;
fP = pInd->m_pInstrument->m_pRecord[i].m_fClose;
if (fV > 0 && fP > 0)
{
pInd->m_pResult[0][i] = fV;
pInd->m_pResult[1][i] = fP;
break;
}
}
}
//指标初始化函数
void CSTIB_FirstTrade_Init(CIndicator *pInd)
{
pInd->m_strName = "FirstTrade";
pInd->m_strDescription = "The first trade volume and price.";
pInd->m_nParamCount = 0;
pInd->m_pParamName = NULL;
pInd->m_pResultName[0] = "FirstTradeVolume";
pInd->m_pResultName[1] = "FirstTradePrice";
pInd->m_pResultType[0] = IND_DATA;
pInd->m_pResultType[1] = IND_DATA;
pInd->m_pResultUnit[0] = NULL;
pInd->m_pResultUnit[1] = NULL;
pInd->m_bShowOnMain = FALSE;
pInd->m_bShowOnAttach = FALSE;
pInd->m_nMinTradeDay = 1;
pInd->m_nDataCount = 2;
pInd->m_pResult = (double **)calloc(pInd->m_nDataCount, sizeof(double *));
pInd->m_pResult[0] = (double *)calloc(pInd->m_nRecordCount, sizeof(double));
pInd->m_pResult[1] = (double *)calloc(pInd->m_nRecordCount, sizeof(double));
pInd->m_pfCalculate = CSTIB_FirstTrade;
}
//指标卸载函数
void CSTIB_FirstTrade_Uninit(CIndicator *pInd)
{
if (pInd->m_pResult != NULL)
{
free(pInd->m_pResult[0]);
free(pInd->m_pResult[1]);
free(pInd->m_pResult);
pInd->m_pResult = NULL;
}
}
```
使用方法:将以上代码保存为 CSTIB_FirstTrade.c 文件,将其放在通达信安装目录下的 T0002\custindicators 目录下,重新打开通达信软件,在公式编辑器中搜索 “第一笔成交量与成交价” 即可使用该指标。