請選擇 進入手機版 | 繼續訪問電腦版

COCO研究院

 找回密碼
 註冊
搜索
查看: 6209|回復: 21

請問自訂MC指標cmf如何寫?Thanks!

[複製鏈接]
發表於 16-5-22 15:39 | 顯示全部樓層 |閱讀模式
小弟參考
plot1($disparity, "disparity");
另外弄一個cmf
////////////////////////////
eleader-fucntion
////////////////////////////
def cmf(period) :
        adsum = accum(((c - l) - (h - c)) / (h - l) * v , period)
        return adsum / accum(v, period)
*********************
inputs:period(21);
vars: $cmf(0);

adsum = accum(((close - low) - (high - close)) / (high - low) * volume , period);

$cmf = adsum / accum(volume, period);

plot1($cmf, "cmf");

//////////////////////////

cmf

cmf


可是編譯失敗

請問大大
adsum / accum
在mc-easylanguage內應該怎麼處理
感謝您!!


發表於 16-5-22 20:05 來自手機 | 顯示全部樓層
Adsum是變數,accum可以用summation替換,建議您先了解自訂指標要計算的內容,另外先看一本基礎語法指令才能學習的更有效率
 樓主| 發表於 16-5-22 21:38 | 顯示全部樓層
easytrader788 發表於 16-5-22 20:05
Adsum是變數,accum可以用summation替換,建議您先了解自訂指標要計算的內容,另外先看一本基礎語法指令才 ...

感謝您!!
請問哪裡可查詢
類似accum可以用summation替換
的替換表
基礎語法指令的書名是...
感激不盡!






發表於 16-5-22 22:22 來自手機 | 顯示全部樓層
http://wiki.mbalib.com/zh-tw/%E4%BD%B3%E5%BA%86%E8%B5%84%E9%87%91%E6%B5%81%E9%87%8F%E6%8C%87%E6%A0%87不同的程式平台,沒有對應的比較,我從經驗中判斷的
發表於 16-5-22 22:24 來自手機 | 顯示全部樓層
CMF 又稱佳慶資金流量指標 ,從公式上來判斷對應的語法
 樓主| 發表於 16-5-23 16:51 | 顯示全部樓層
easytrader788 發表於 16-5-22 22:22
http://wiki.mbalib.com/zh-tw/%E4%BD%B3%E5%BA%86%E8%B5%84%E9%87%91%E6%B5%81%E9%87%8F%E6%8C%87%E6%A0%8 ...

萬分感謝您!!

  1. inputs:period(21);
  2. vars: $cmf(0),$adsum(0);
  3. $adsum = summation(((close - low) - (high - close)) / (high - low) * volume , period);
  4. $cmf = $adsum / summation(volume, period);
  5. plot1($cmf, "cmf");
複製代碼


是可以編譯成功

螢幕擷取畫面 (26).png

但是執行之後
螢幕擷取畫面 (27).png

浮點運算操作不正確

****************
另外大大您的部落格
就是愛現~程式交易
很早以前就加入最愛
總是很想挖一些寶藏
只是小弟數學沒唸通
看到計算符號就頭大



發表於 16-5-23 17:04 | 顯示全部樓層
本帖最後由 pcking2008 於 16-5-23 17:05 編輯

$adsum = summation(((close - low) - (high - close)) / (high - low) * volume , period);
//   high-low =0 會錯誤, 分母不能=0

$cmf = $adsum / summation(volume, period);
// summation=0 也會有錯誤, 正常 volume 不會=0, 但還是要看資料會不會有錯

可以加個條件看看

if high<>low and summation(volume, period)<>0 then
begin
           $adsum=....
           .....
           plot1(....
end;

評分

參與人數 1金錢 +1 收起 理由
f29825604 + 1 感謝pcking2008分享

查看全部評分

 樓主| 發表於 16-5-23 17:18 | 顯示全部樓層
pcking2008 發表於 16-5-23 17:04
$adsum = summation(((close - low) - (high - close)) / (high - low) * volume , period);
//   high-low ...


可以編譯
但是沒有值出現


螢幕擷取畫面 (28).png

可以編譯
但是沒有值出現

發表於 16-5-23 19:38 來自手機 | 顯示全部樓層
If (high-low) <> 0 then $adsum = ...  ; if summation( volume,period) <> 0 then $cmf = ... ;

評分

參與人數 1金錢 +1 收起 理由
f29825604 + 1 感謝就是愛現分享

查看全部評分

 樓主| 發表於 16-5-23 20:11 | 顯示全部樓層
easytrader788 發表於 16-5-23 19:38
If (high-low)  0 then $adsum = ...  ; if summation( volume,period)  0 then $cmf = ... ;

可以編譯


螢幕擷取畫面 (29).png

但是沒有值出現


螢幕擷取畫面 (30).png

感謝您!
發表於 16-5-23 20:49 | 顯示全部樓層
inputs:period(21);
vars: $cmf(0),$adsum(0);

if (high-low)<>0 then
        $adsum = summation(((close - low) - (high - close)) / (high - low) * volume , period);
if summation(volume, period)<>0 then
        $cmf = $adsum / summation(volume, period);
plot1($cmf, "cmf");


我開台指五分K可以啊
擷取.JPG
 樓主| 發表於 16-5-23 20:58 | 顯示全部樓層
本帖最後由 f29825604 於 16-5-23 21:00 編輯
pcking2008 發表於 16-5-23 20:49
inputs:period(21);
vars: $cmf(0),$adsum(0);

感謝您!
螢幕擷取畫面 (31).png
怎麼會這樣呢?

螢幕擷取畫面 (32).png

在下MC版本的問題MultiCharts Version 9.1 Release (Build 12586)
再重新安裝看看



發表於 16-5-23 21:04 | 顯示全部樓層
本帖最後由 pcking2008 於 16-5-23 21:07 編輯

不是指標名稱 cmf 與 10分K 的問題, 我剛試過都正常
您的是英文版我的是中文版(9.0 build 11581)
不過應該也沒差.....


PS
可以用 print 先抓看看指標看到的各種值 H L .. 是什麼
如果 if 都沒成立就會 plot 0 了

評分

參與人數 1金錢 +1 收起 理由
f29825604 + 1 感謝您!在下重裝mc看看!

查看全部評分

 樓主| 發表於 16-5-27 21:19 | 顯示全部樓層
本帖最後由 f29825604 於 16-5-27 21:21 編輯
pcking2008 發表於 16-5-23 21:04
不是指標名稱 cmf 與 10分K 的問題, 我剛試過都正常
您的是英文版我的是中文版(9.0 build 11581)
不過應該 ...

pcking2008大大
如果您有閒暇時間
麻煩幫忙測試一下
在下重新安裝中文MC9.0後
兩台筆電都是躺下一直線


螢幕擷取畫面 (36).png

自訂MC指標volumeocs

螢幕擷取畫面 (34).png
  1. inputs:shortperiod(14),longperiod(56);
  2. vars: $volumeosc(0);

  3. if AverageFC( volume,shortperiod) <> 0 then

  4. $volumeosc = ((Average(volume,shortperiod)-Average(volume,longperiod)) /Average(volume,shortperiod))* 100;

  5. plot1($volumeosc, "volumeosc");
複製代碼


在您的電腦有沒有出現曲線
感謝您!!
感激不盡




發表於 16-5-27 21:45 | 顯示全部樓層
f29825604 發表於 16-5-27 21:19
pcking2008大大
如果您有閒暇時間
麻煩幫忙測試一下

有波動耶

我建議您別急著重裝程式/灌系統
先 print/plot C H L O Volume  等等 藍色關鍵字的值, 什麼函數都先不要呼叫
有的話再一步步將函數恢復, 將等式拆開一個個看有沒有正常
這應該是很簡單的問題, 什麼讓結果 = 0, 不會 code , 因為我這邊可以用沒問題
如果 plot 或數據有問題, 您連 plot1(C) 也會= 0, 這樣重灌程式就太冤枉了

debug 大概就是這樣子, 先不要相信任何東西, 一個個元素攤開來看, 再組回去
這個要您多費點時間賺經驗了


您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-3-29 20:32

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 | AI繪圖AI超擬真美女AI beauty AI Stable DiffusionAI正妹AI Lookbook