麻烦编一个股票软件中WINNER,COST的函数 [MC]
-
MC用户求助:
在股票软件中经常用到,用MC时,有时候会用到谢谢。
-
MC回复讨论一:
您好,您的需求可能需要一点时间,因为需要确定这两个函数的执行逻辑,请您继续关注论坛!
(未被解决的帖子都会一直置顶)
-
MC回复讨论二:
cost和winner两个函数见如下代码:
//winner
input: pricevalue(numericsimple);
var: var_down(0), var_total(0), max_back(0);
max_back=maxbarsback+currentbar-1;
var_total=0;
var_down=0;
for value1=0 to max_back begin
var_total=var_total+symbol_ticks[value1];
if pricevalue<=symbol_high[value1] and pricevalue>symbol_low[value1] then
var_down=var_down+symbol_ticks[value1]*(pricevalue-symbol_low[value1])/(symbol_high[value1]-symbol_low[value1])
else if pricevalue>symbol_high[value1] or (symbol_high[value1]=symbol_low[value1] and pricevalue=symbol_high[value1]) then
var_down=var_down+symbol_ticks[value1];
end;
winner=var_down/var_total;
//cost
input: ratio(numericsimple);
array: arr[](0), arr_p[](0);
var: max_back(0), price_ratio(0), cost_sum(0);
max_back=maxbarsback+currentbar;
array_setmaxindex(arr,max_back-1);
array_setmaxindex(arr_p,max_back-1);
if currentbar=1 then begin
for value1=max_back-1 downto 0 begin
arr[max_back-1-value1]=symbol_ticks[max_back-1-value1]*(symbol_open[max_back-1-value1]+symbol_close[max_back-1-value1])/2;
arr_p[max_back-1-value1]=(symbol_open[max_back-1-value1]+symbol_close[max_back-1-value1])/2;
end;
end
else begin
arr[max_back-1]=symbol_ticks*(symbol_open+symbol_close)/2;
arr_p[max_back-1]=(symbol_open+symbol_close)/2;
end;
for value4=0 to max_back-1 begin
for value5=value4+1 to max_back-1 begin
if arr_p[value4]>arr_p[value5] then begin
value6=arr_p[value5];
arr_p[value5]=arr_p[value4];
arr_p[value4]=value6;
value6=arr[value5];
arr[value5]=arr[value4];
arr[value4]=value6;
end;
end;
end;
price_ratio=0;
cost_sum=array_sum(arr,0,max_back-1);
for value1=0 to max_back-1 begin
price_ratio=price_ratio+arr[value1];
if price_ratio/cost_sum>=ratio*0.01 then begin
cost=arr_p[value1];
break;
end;
end;
简要说明:
1.winner(price)函数主要是从图表上最左边的bar开始统计到当根bar,统计小于等于价格price的成交量与所有已经统计的bar的成交量之比。
2. cost(1)函数主要是从图表上最左边的bar开始统计到当根bar,每根bar取一个价格样本(这里取的是开盘价与收盘价的中间价作为样本)和成交量样本,建立两个数组分别存储价格样本、成交量样本与价格样本的乘积;之后对价格样本进行排序,然后通过对价格样本for循环来查找使1%的获利盘的价格。
3.这里使用了symbol系列关键字,所以无论最大bar数量设置成多少,都不会提示出现最大bar数量错误;另外,使用了动态数组,使数组能动态的调整以便存储当根bar的样本。
4.函数中使用了较大的数组以及多次for循环,所以有一定的计算量,建议使用日线周期。
5.由于函数是从图表上最左边一根bar开始统计,所以图表数据的初始日期有一定影响返回的值。
6.这两个函数使用的算法和其它软件上不太一样,但是基本原理类似;没有哪一个算法是准确的,只是一个对现实市场的建模。
7.下面的链接中提供了三个函数,除了上面两个函数,还有一个是cost_expand,这个函数与cost相比,只是对每根bar取了三个价格样本,使结果更精确,但是计算量也更大。
8.尽管没有从股票上市那一天开始统计,但是随着市场的进行,初始的值对这两个函数的影响会越来越小,所以这两个函数不用特别要求图表的开始日期从股票的上市日开始。cost和winner函数代码下载链接:
http://dl.icetech.com.cn/download/forums/cost%20and%20winner.rar
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容