全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
求助,我想求出过去100根bar内收盘价相同的价格和次数,请问应该怎么写??
2024-08-09 17:11

我想求出过去100根bar内收盘价相同的价格和次数,请问应该怎么写??

比如收盘价依次是 1  3 5 5 8 5 3

得出的结果是,收盘价3两次,收盘价5三次。

YYYZ_TB

把它们放入数组,然后每一个数组的值进行计数

2024-08-09 20:18
YYYZ_TB

data-href=

其实用到了  map

信息内容

{{3266:1},{3288:1},{3291:1},{3292:1},{3297:1},{3298:1},{3299:1},{3300:1},{3302:2},{3304:1},{3305:1},{3307:3},{3310:1},{3311:1},{3312:2},{3316:1},{3319:1},{3320:1},{3322:1},{3328:1},{3332:1},{3334:1},{3335:2},{3336:3},{3337:2},{3338:2},{3339:3},{3340:3},{3342:1},{3343:2},{3344:2},{3345:2},{3346:2},{3347:2},{3350:2},{3351:2},{3352:1},{3353:2},{3354:1},{3355:1},{3356:1},{3357:1},{3358:1},{3359:4},{3360:3},{3361:3},{3362:1},{3363:1},{3365:2},{3366:2},{3367:1},{3368:2},{3369:3},{3370:2},{3372:1},{3373:3},{3374:4},{3375:5},{3376:1},{3377:4},{3378:4},{3379:1},{3380:3},{3383:2},{3384:3},{3385:2},{3386:1},{3387:1},{3388:2},{3389:1},{3390:2},{3391:5},{3392:3},{3393:1},{3395:2},{3396:2},{3397:2},{3398:1},{3399:1},{3401:2},{3402:2},{3403:1},{3406:1},{3408:1},{3410:3},{3411:1},{3412:1},{3414:1},{3415:1},{3417:1},{3418:1},{3424:1},{3429:2},{3430:1},{3446:1},{3457:2},{3458:2},{3459:2},{3460:1},{3461:2},{3464:1},{3466:2},{3472:1},{3477:1},{3478:2},{3479:2},{3480:1},{3481:1},{3483:2},{3486:1},{3487:2},{3488:4},{3489:2},{3493:2},{3499:1}}

2024-08-10 11:18
YYYZ_TB

//------------------------------------------------------------------------

// 简称: TEST_20240809220654

// 名称: 测试

// 类别: 公式应用

// 类型: 用户应用

// 输出: Void

//------------------------------------------------------------------------

/*

怎么表达 ?10根K线中最高价前5的5根K线 ?他们最高价平均值

---

先定位N(10根K线最高价的位置),N= Nthcon(H,10,1);然后H1 = MA(h,5); h5 =h1[n+1],试试看

*/

Params

//此处添加参数

Integer NN(10);

Vars

//此处添加变量

Integer i;

Series<Numeric> PP;

//Array<Numeric> WW;

//Array<Numeric> VV;

Numeric JJMA;

Series<Numeric> H1;

Array<Numeric> arr;

Array<Numeric> arrH;

Array<Numeric> arrL;

Map<String, Integer> map2count;


Defs

//此处添加公式函数

// 计算 jma 均线 \'Jurik Moving Average\'

Numeric c_jma2(Numeric prices, Integer N)

{

//import numpy as np

//

//def calculate_jma(prices, n):

//v = np.zeros(len(prices))

//w = np.zeros(len(prices))

//jma = np.zeros(len(prices))

//w[0] = 1

//v[0] = prices[0]

//for i in range(1, len(prices)):

//w[i] = 0.5 * w[i - 1] + np.sqrt(0.25 * w[i - 1] ** 2 + 2)

//v[i] = (prices[i] - v[i - 1]) * w[i] + v[i - 1]

//if i >= n:

//jma[i] = np.sum(v[i - n + 1:i + 1]) / np.sum(w[i - n + 1:i + 1])

//return jma

Integer i;

Numeric jmav;

Array<Numeric> WW;

Array<Numeric> VV;

jmav = 0;

//w[0] = 1

WW[0] = 1;

//v[0] = prices[0]

VV[0] = prices;

//for i in range(1, len(prices)):

For i=1 To N-1

{

Integer j;

j = i-1;

//w[i] = 0.5 * w[i - 1] + np.sqrt(0.25 * w[i - 1] ** 2 + 2)

WW[i] = 0.5 * WW[j] + Sqrt(0.25 * Sqr(WW[j]) + 2);

//v[i] = (prices[i] - v[i - 1]) * w[i] + v[i - 1]

VV[i] = (VV[i] - VV[j]) * WW[i] + VV[j];

//if i >= n:

//if (i >= N)

//{

////jma[i] = np.sum(v[i - n + 1:i + 1]) / np.sum(w[i - n + 1:i + 1])

//}

}

jmav = SummationArray(VV) / SummationArray(WW);

//return jma

Return jmav;

}

Events

//此处实现事件函数

//初始化事件函数,策略运行期间,首先运行且只有一次

OnInit()

{

PrintClear();

}



//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组

OnBar(ArrayRef<Integer> indexs)

{

Numeric N = NthHigher(H, 10, 1);

H1 = MA(H, 5);

Numeric H5 = H1[N+1];

For i=0 to (NN*2)-1

{

arrH[i] = H[i];

arrL[i] = L[i];

arr[i] = C[i];

}

//Commentary(\"C: \" + TextArray(arr));        

//Commentary(TextArray(arrH));        

//Commentary(TextArray(arrL));        

       

       ArraySort(arrH, False);//数组降序排序

       ArraySort(arrL, True);//数组降序排序

       //Commentary(\"降序排序结果:\" + TextArray(arrH));

       //Commentary(\"降序排序结果:\" + TextArray(arrL));

       

       Numeric sumvH = 0;

       Numeric sumvL = 0;

For i=0 to NN-1

{

sumvH = sumvH + arrH[i];

sumvL = sumvL + arrL[i];

}

sumvH = sumvH / NN;

sumvL = sumvL / NN;

//Commentary(TextArray(arrH));

//Commentary(TextArray(arrL));

//PlotNumeric(\"sumvH\", sumvH);

//PlotNumeric(\"sumvL\", sumvL);

If(BarStatus == 2)

{

For i=0 To GetArraySize(arr)-1

{

If(!MapContain(map2count, Text(arr[i])))

{

map2count[Text(arr[i])] = 1;

}

Else

{

map2count[Text(arr[i])] = map2count[Text(arr[i])] + 1;

}

}

Commentary(TextMap(map2count));

Print(TextMap(map2count));

}

//JJMA = c_jma(C, NN);

//PlotAuto(\"JJMA\", JJMA);

//PlotAuto(\"CC\", C);

//Commentary(\"JMA: \" + Text(JJMA));

}



//------------------------------------------------------------------------

// 编译版本 2024/08/09 220713

// 版权所有 yyyz_tb

// 更改声明 TradeBlazer Software保留对TradeBlazer平台

// 每一版本的TradeBlazer公式修改和重写的权利

//------------------------------------------------------------------------

2024-08-10 17:36
WWWLIKEASD
@YYYZ_TB

我真无语,在帮助文档里搜了半天都找不到MAP的用法。。。

2024-08-15 17:23
YYYZ_TB

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

map2count

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

即所求

2024-08-10 17:36
WWWLIKEASD

老师的意思是我学会了上面这段代码,就可以理解我想要表达的策略应该怎样编写了吗??

2024-08-15 09:52
您未登录,请先 登录注册 后发表评论
顶部