麻煩編一個股票軟件中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 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容