想問每個月的c 平均值以當日的volume 去計算
我想寫一條formula,係用每日的close 的乘返當日的volume比例去計,
而呢個c 數值只會累計到當前月份, 下月又重新累計,
例如:
第一天, c 21000, v 200,
第二天, c 20800, v 300,
第三天, c 20500, v 150
第一天, C1 =21000,
第二天, C2 ={ + }
第三天, C3 ={ + } + [ 20500 X 150/(200+300+150)
請問各位高手可以點寫?? 本帖最後由 goodddog 於 16-5-12 18:46 編輯
//for 日K棒
Vars:CT(0),VT(0);
CT=iff(Month(date)<>Month(date),Close*Volume,CT+Close*Volume);
VT=iff(Month(date)<>Month(date),Volume,VT+Volume);
AvgClose=CT/VT; //日均價
不知有沒有錯
本帖最後由 moneymaker 於 16-5-14 19:37 編輯
amibroker 不是 multichart ....
CV = C * V;
cumArray = 0;
MonthArray = Month();
function cumtmp(){
rc = CV;
rv = V;
for (i = 1; i < barcount; i++){
if (MonthArray != MonthArray){
rc = CV;
rv = V;
}else{
rc = rc + CV;
rv = rv + V;
}
}
return rc/rv;
}
tmp = cumtmp();
Plot(tmp, "tmp", colorRed); cv = C * V;
Month_change = (Month() != Ref(Month() ,-1));
accu_cv = Sum(cv,BarsSince(Month_change)+1);
accu_v = Sum(V,BarsSince(Month_change)+1);
result = accu_cv / accu_v;
Plot(result,"result",colorBlue); chhung3 發表於 16-5-16 16:27
CV = C * V;
cumArray = 0;
如果我由上月最後一日開始計起,
又可點寫?
本帖最後由 chhung3 於 16-5-23 13:23 編輯
chunfai116 發表於 16-5-22 09:32
如果我由上月最後一日開始計起,
又可點寫?
將for loop改成這樣:
for (i = 0; i < barcount - 1; i++){
if (MonthArray[ i ] != MonthArray){
rc = CV[ i ];
rv = V[ i ];
}else{
rc = rc + CV;
rv = rv + V;
}
}
亦即由每月最後一日重設數值,而之前是每月第一日重設數值。
chhung3 發表於 16-5-23 13:21
將for loop改成這樣:
for (i = 0; i < barcount - 1; i++){
改左,但有Eorror ,執行不能
chunfai116 發表於 16-5-26 09:54
改左,但有Eorror ,執行不能
哦,你用唻炒香港期指﹖
CV = C * V;
cumArray = 0;
MonthArray = Month();
function cumtmp(){
rc = CV;
rv = V;
for (i = 0; i < barcount - 1; i++){
if ((MonthArray[ i ] != MonthArray) || (i == 0)){
rc[ i ] = CV[ i ];
rv[ i ] = V[ i ];
}else{
rc[ i ] = rc + CV[ i ];
rv[ i ] = rv + V[ i ];
}
}
rc = rc + CV[ i ];
rv = rv + V[ i ];
return rc/rv;
}
tmp = cumtmp();
Plot(tmp, "tmp", colorRed);
咁樣。不過問題係最後一日因為佢唔識認係唔係最後一日trading day,所以就咁accumulate上去。執行上問題應該不大。
chhung3 發表於 16-5-26 13:49
哦,你用唻炒香港期指﹖
CV = C * V;
炒港期呀,
FORMULA 依然唔得,
ERROR 顯示CANT NOT DIVIDED BY ZERO
cv = C * V;
Month_change = (Month() != Ref(Month() ,1));
accu_cv = Sum(cv,BarsSince(Month_change)+1);
accu_v = Sum(V,BarsSince(Month_change)+1);
result = accu_cv / accu_v;
Plot(result,"result",colorBlue); chunfai116 發表於 16-5-27 10:25
炒港期呀,
FORMULA 依然唔得,
我試過冇事喎。係咪有volume = 0嘅data point呀?
頁:
[1]