COCO研究院

 找回密碼
 註冊
搜索
查看: 9131|回復: 16

請教AFL Library 寫技術指標的問題....

[複製鏈接]
發表於 11-1-26 15:26 | 顯示全部樓層 |閱讀模式
各位大大好:
      小弟現在想使用ADK裡面的AFL Library功能去寫自己的技術指標,我參考了範例Function.cpp裡面的"ExampleEMA",
的範例方法去寫指標。 但是我再編譯完成後,將DLL註冊進去Amibroker裡面,卻發現畫出的技術圖有問題(假設以125天為周期計算,畫出的圖前面125天都沒資料),因為我是參考範例,連範例都有問題我就不知道該怎麼下手了,請問有高人可以解答嗎?(希望綠茶妹可以幫幫忙><)
以下附圖

ADK AFL範例

ADK AFL範例

從AMI裡面去引用

從AMI裡面去引用

顯示出錯誤的結果

顯示出錯誤的結果
發表於 11-1-26 16:51 | 顯示全部樓層
這不是範例有問題啦,
計算十日的平均數,至少要有十日的收盤價才能算,
所以會沒有前十日的資料,
計算125日亦同,還有滿125天之前,
不會足夠的資料來繪出圖形。
 樓主| 發表於 11-1-26 20:13 | 顯示全部樓層
To: ashell大
我有匯入超過的資料,你可以仔細看第三張圖,他下面的調整桿是在中間,不是在最前面,應該是說我拉動調整桿的時候就是會少前面的那些資料,請問ashell有用AFL Library嗎? 可否提供範例?
發表於 11-1-26 21:05 | 顯示全部樓層
小弟以為直接寫入 AFL 裡就可以了說
跟 ADK 好像沒關係呼?! (抱歉功力太淺)

以下是範例程式碼

  1. function T3(price,periods) //AMA-based
  2. {
  3.         s = 0.618;
  4.         periods = 2/(periods+1);
  5.         e1=AMA(price,periods);
  6.         e2=AMA(e1,Periods);
  7.         e3=AMA(e2,Periods);
  8.         e4=AMA(e3,Periods);
  9.         e5=AMA(e4,Periods);
  10.         e6=AMA(e5,Periods);
  11.         c1=-s*s*s;
  12.         c2=3*s*s+3*s*s*s;
  13.         c3=-6*s*s-3*s-3*s*s*s;
  14.         c4=1+3*s+s*s*s+3*s*s;
  15.         Ti3=c1*e6+c2*e5+c3*e4+c4*e3;
  16.         return ti3;
  17. }
複製代碼



語法 T3(price,periods)


不知道有沒有幫助呢 (希望我是看懂大大的問題才回覆的  XD)
發表於 11-1-26 21:12 | 顯示全部樓層
這樣我就不知道是什麼原因了,
不好意思幫不上忙,
還有你說的有用AFL Library是什麼意思,
是需要網址嗎?
http://www.amibroker.com/library/list.php
 樓主| 發表於 11-1-26 21:40 | 顯示全部樓層
ADK 是開放自己建立Plugin的C/C++函式庫,AmiBroker Development Kit (C/C++) ,
TO: kilroy
      我試過同樣的指標在Amibroker裡面是正常的,而寫成PLUGIN的模式就會有問題,而且我是依據官方給的文件去建立的。
為啥要這樣做的原因,是因為有些客戶自己的策略他希望不要把程式碼流出去,希望使用DLL提供給其他的網友用。
發表於 11-1-26 22:20 | 顯示全部樓層
ADK 是開放自己建立Plugin的C/C++函式庫,AmiBroker Development Kit (C/C++) ,
TO: kilroy
      我試過 ...
baokyo 發表於 11-1-26 09:40 PM



    喔喔喔 原來是因為 「有些客戶自己的策略他希望不要把程式碼流出去,希望使用DLL提供給其他的網友用」

    小弟了了,感謝大大回覆唷~


ADK 這個不知道大大會不會寫 data plugin 呢? 感謝感謝
發表於 11-1-27 01:39 | 顯示全部樓層
本帖最後由 cjlin 於 11-1-27 01:49 AM 編輯

因為ArgsTable丟進來的是螢幕上顯示範圍的區域資料,
以你的例子來說,前面被省略的部份是因為你在code裡把前面125個位置填EMPTY_VAL

你需要改的是拿原本的data array來處理,而不是只處理參數裡面的資料,
如果只要Close,用gSite.GetStockArray( 3 )取回來的就是全部的close data array (in float),
大小記得要用gSite.GetArraySize()拿喔
如果想要用這個function處理其他data array,像Open, High之類的話,
我建議你用其他的方法丟參數...有時候hard code是種藝術
發表於 11-1-29 12:05 | 顯示全部樓層
因為ArgsTable丟進來的是螢幕上顯示範圍的區域資料,
以你的例子來說,前面被省略的部份是因為你在code裡把前 ...
cjlin 發表於 11-1-27 01:39 AM



   會寫程式真好~~
 樓主| 發表於 11-1-29 21:23 | 顯示全部樓層
本帖最後由 baokyo 於 11-1-29 09:26 PM 編輯

CJ大  我照你說的做可是結果一樣耶 可否幫我看看阿 ?  求救><
1.png

2.png

前面150 Bars 一樣空了
發表於 11-1-29 22:09 | 顯示全部樓層
回復 10# baokyo


你講廢話嗎

if (i<per) 你把它設 empty 當然前面就沒東西啊

容我問一句

你客戶是再打算賣指標嗎?
 樓主| 發表於 11-1-29 22:25 | 顯示全部樓層
本帖最後由 baokyo 於 11-1-29 10:31 PM 編輯

但是不可能不設 if( i<per)  我下面在做的事情是存取data[i-per] 總不可能存取 小於0的陣列吧@@|||
為什麼做這樣的事情,因為指標都是要計算幾天前的資料,我這邊只是簡化掉,去作一些基本測試........
我是從一般的程式設計師轉做這東西,可能問了笨問題,請各位大大見諒。
發表於 11-1-30 00:10 | 顯示全部樓層
本帖最後由 nikej 於 11-1-30 12:18 AM 編輯

知道不可能

就接受前面為空的事實

15MA前面會有14個空k道理一樣

EMA 是因為演算原理所致不會有空k
發表於 11-1-30 00:22 | 顯示全部樓層
本帖最後由 nikej 於 11-1-30 12:30 AM 編輯

雞婆一下

客戶若是打算賣指標

良心勸勸他不要誤人了

特地花錢找人寫鎖讓人免費用機會蠻小的
 樓主| 發表於 11-1-30 00:56 | 顯示全部樓層
但是他前面真的有資料阿= ="
總不能遇到問題~~就閃過裝不知道~~
難道真的沒有人有用Ami Plugin 去寫指標嗎?
我想 他這樣做可能也是為了保護他自己的想法吧@@"
每個人都碼有不想說的東西,尤其是在這個市場上面...不是嗎?
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-12-23 02:26

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |