奇狐社區論壇
在這個頁面顯示本主題全部的 34 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- 交易系統的倉位管理 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=17681)


由 tycoon868 在 2013-05-02 00:41 發表:

交易系統的倉位管理

請教總版主:

以下是我的買賣規則,需要控管買進部位、賣出部位與總持倉部位

Start:=cross(R2B,30) ;
Startpoint:=barslast(Start);
end:=cross(30,R2B) ; // 操作週期結束

買訊1:=cross(R2B,30) ;
買訊2:=Startpoint<=5 and cross(R2B,60);
買訊3:=Startpoint>=5 and cross(R2B,60);
買訊4:=Startpoint<=8 and ross(R2B,120);
買訊5:=Startpoint>=8 and ross(R2B,120);

賣訊1:=R2B>120 and Cross(MRB,R2B);
賣訊2:=R2B>60 and R2B<120 and Cross(MRB,R2B);
賣訊3:=cross(240,R2B) ;
賣訊4:=cross(120,R2B) ;
賣訊5:=Startpoint>5 and cross(60,R2B) ;
賣訊6:=Startpoint>3 and cross(30,R2B) ;

需求如下: 主要是為了維持最大買進部位=4,賣出減碼後如出現買訊則補回來

1. 需要根據以上的買賣訊號成立一個 [倉位] 紀錄公式,此倉位的值必須為0~4

2. 買訊1、2、4成立時各買2張(原始買進),買訊3、5成立時各買1張(加碼買進),同一個操作週期內,總持有的買張不可超過4張, 例如 買訊1、2成立時手中共有4張(滿倉),如果都沒有遇到賣訊1~6中任何一個,就又出現買訊3則忽略,此時手中仍然維持4張,直到手上倉位低於4張時,買訊2~5出現時才算是成立(最多也只到持有4張)

3. 賣訊1~6出現時,各減碼1張,而且是容許重複出現,減碼最多到倉位=0以後的賣訊則忽略(負數不計入倉位中)

4. 此後歸0的倉位如又遇到買訊2~5中的任何一個,還是成立並加計為倉位,再次重複需求3的減碼流程,直到end:=cross(30,R2B) ; // 操作週期結束

請總版主直接賜教公式寫法

感謝


由 tycoon868 在 2013-05-02 11:53 發表:

請問總版主,我所陳述的需求是否還需要補充說明?


由 cgjj 在 2013-05-02 12:07 發表:

回覆: 交易系統的倉位管理

引用:
最初由 tycoon868 發表
請教總版主:

以下是我的買賣規則,需要控管買進部位、賣出部位與總持倉部位

Start:=cross(R2B,30) ;
Startpoint:=barslast(Start);
end:=cross(30,R2B) ; // 操作週期結束

買訊1:=cross(R2B,30) ;
買訊2:=Startpoint<=5 and cross(R2B,60);
買訊3:=Startpoint>=5 and cross(R2B,60);
買訊4:=Startpoint<=8 and ross(R2B,120);
買訊5:=Startpoint>=8 and ross(R2B,120);

賣訊1:=R2B>120 and Cross(MRB,R2B);
賣訊2:=R2B>60 and R2B<120 and Cross(MRB,R2B);
賣訊3:=cross(240,R2B) ;
賣訊4:=cross(120,R2B) ;
賣訊5:=Startpoint>5 and cross(60,R2B) ;
賣訊6:=Startpoint>3 and cross(30,R2B) ;

需求如下: 主要是為了維持最大買進部位=4,賣出減碼後如出現買訊則補回來

1. 需要根據以上的買賣訊號成立一個 [倉位] 紀錄公式,此倉位的值必須為0~4

2. 買訊1、2、4成立時各買2張(原始買進),買訊3、5成立時各買1張(加碼買進),同一個操作週期內,總持有的買張不可超過4張, 例如 買訊1、2成立時手中共有4張(滿倉),如果都沒有遇到賣訊1~6中任何一個,就又出現買訊3則忽略,此時手中仍然維持4張,直到手上倉位低於4張時,買訊2~5出現時才算是成立(最多也只到持有4張)

3. 賣訊1~6出現時,各減碼1張,而且是容許重複出現,減碼最多到倉位=0以後的賣訊則忽略(負數不計入倉位中)

4. 此後歸0的倉位如又遇到買訊2~5中的任何一個,還是成立並加計為倉位,再次重複需求3的減碼流程,直到end:=cross(30,R2B) ; // 操作週期結束

請總版主直接賜教公式寫法

感謝



各個買訊和賣訊 有無可能會在同根K棒發生的情況?
若有如何處理?
例如: 同時有 買訊1 和 買訊3 成立
又例如: 同時有 買訊2 和 賣訊3 成立


由 tycoon868 在 2013-05-02 12:14 發表:

1.根據我連續三天仔細校對買賣訊號,確實會有 買訊1&2 同時發生的情況~~直接忠實呈現即可~倉位=2+2(忠實累計,直到倉位<=4為止)

2.賣訊1&4也有可能同時出現,此時處理方式為當時的 倉位-1-1(直到倉位=0前皆是直接扣除)

3. 買訊與賣訊同時出現,倒是不會發生

感謝總版主提醒,麻煩您了


由 cgjj 在 2013-05-02 15:47 發表:

引用:
最初由 tycoon868 發表
3. 買訊與賣訊同時出現,倒是不會發生
感謝總版主提醒,麻煩您了



買訊與賣訊同時出現
是仔細校對沒有觀察到, 所以認為不會發生?
還是根據計算原理, 不可能發生?

若是前者, 還是有可能發生只是機率問題
若為後者, 才能確保 100%不會發生

會這樣問
是因為, 看不到買賣訊號有最根本的軸心, 正反判斷


由 tycoon868 在 2013-05-02 16:45 發表:

總版主您好:

我對這部分的計算原理真的很清楚,確定買賣訊號絕對不會同時出現,因為MRB指標與R2B方向、性質一樣,只是有快慢之分,這兩個指標的金叉與死叉真的不可能同時出現。

目前已經充分的檢查過了,麻煩您教我寫這部分的倉位紀錄公式

爾後如果真的有問題,我會自行調整買賣訊號衝突的部分,目前真的需要先學習這個部分

麻煩您了


由 tycoon868 在 2013-05-03 08:09 發表:

小弟非常期待解決中 @_@


由 cgjj 在 2013-05-03 10:07 發表:

引用:
最初由 tycoon868 發表
總版主您好:

我對這部分的計算原理真的很清楚,確定買賣訊號絕對不會同時出現,因為MRB指標與R2B方向、性質一樣,只是有快慢之分,這兩個指標的金叉與死叉真的不可能同時出現。

目前已經充分的檢查過了,麻煩您教我寫這部分的倉位紀錄公式

爾後如果真的有問題,我會自行調整買賣訊號衝突的部分,目前真的需要先學習這個部分

麻煩您了



原碼:

買訊1
:=買訊1 or barpos=0;
買訊2:=買訊2 or barpos=0;
買訊3:=買訊3 or barpos=0;
買訊4:=買訊4 or barpos=0;
買訊5:=買訊5 or barpos=0;
賣訊1:=賣訊1 or barpos=0;
賣訊2:=賣訊2 or barpos=0;
賣訊3:=賣訊3 or barpos=0;
賣訊4:=賣訊4 or barpos=0;
賣訊5:=賣訊5 or barpos=0;
賣訊6:=賣訊6 or barpos=0;
買訊:=(買訊1+買訊2+買訊3)*2+(買訊3+買訊5);
賣訊:=賣訊1+賣訊2+賣訊3+賣訊4+賣訊5+賣訊6;
買賣:=買訊-賣訊;
持量:C*0//當根動作後所持有的數量
NowN:=0;
for 
i=1 to datacount do begin
  NewN
:=NowN+買賣[i];
  if 
NewN<0 then NewN:=0;
  if 
NewN>4 then NewN:=4;
  
NowN:=NewN持量[i]:=NowN;
end;


由 tycoon868 在 2013-05-03 10:09 發表:

感謝總版主! 套入測試中


由 tycoon868 在 2013-05-03 11:20 發表:

總版主午安:

我的需求陳述中第3點有一點疏忽,修正如下:

原來的錯誤
3. 賣訊1~6出現時,各減碼1張,而且是容許重複出現,減碼最多到倉位=0以後的賣訊則忽略(負數不計入倉位中)

修正為以下
3. 賣訊1~5出現時,各減碼1張,而且是容許重複出現,減碼最多到倉位=0以後的賣訊則忽略(負數不計入倉位中)

因為我定義賣訊6 cross(30,R2B) 為操作週期結束,不管當時持量為1~4,都是無條件 歸0~~~不再跑需求4的流程


:///////:

如果本次cross(R2B,30) 至當下 尚未出現cross(30,R2B) ,則才可以繼續跑以下需求4

4. 承接上述修正後的流程3.,此後歸0的倉位如又遇到買訊2~5中的任何一個,還是成立並加計為倉位,再次重複需求3的減碼流程,直到end:=cross(30,R2B) ; // 操作週期結束


上面的說明主要是因為:忽略了 cross(R2B,30) 成立時,所有當下持量要歸0

抱歉疏忽了,請您為我修改公式

感激


由 cgjj 在 2013-05-03 12:05 發表:

引用:
最初由 tycoon868 發表
總版主午安:

我的需求陳述中第3點有一點疏忽,修正如下:

原來的錯誤
3. 賣訊1~6出現時,各減碼1張,而且是容許重複出現,減碼最多到倉位=0以後的賣訊則忽略(負數不計入倉位中)

修正為以下
3. 賣訊1~5出現時,各減碼1張,而且是容許重複出現,減碼最多到倉位=0以後的賣訊則忽略(負數不計入倉位中)

因為我定義賣訊6 cross(30,R2B) 為操作週期結束,不管當時持量為1~4,都是無條件 歸0~~~不再跑需求4的流程


:///////:

如果本次cross(R2B,30) 至當下 尚未出現cross(30,R2B) ,則才可以繼續跑以下需求4

4. 承接上述修正後的流程3.,此後歸0的倉位如又遇到買訊2~5中的任何一個,還是成立並加計為倉位,再次重複需求3的減碼流程,直到end:=cross(30,R2B) ; // 操作週期結束


上面的說明主要是因為:忽略了 cross(R2B,30) 成立時,所有當下持量要歸0

抱歉疏忽了,請您為我修改公式

感激


原碼:

買訊1
:=買訊1 or barpos=0;
買訊2:=買訊2 or barpos=0;
買訊3:=買訊3 or barpos=0;
買訊4:=買訊4 or barpos=0;
買訊5:=買訊5 or barpos=0;
賣訊1:=賣訊1 or barpos=0;
賣訊2:=賣訊2 or barpos=0;
賣訊3:=賣訊3 or barpos=0;
賣訊4:=賣訊4 or barpos=0;
賣訊5:=賣訊5 or barpos=0;
賣訊6:=賣訊6 or barpos=0;
買訊:=(買訊1+買訊2+買訊3)*2+(買訊3+買訊5);
賣訊:=賣訊1+賣訊2+賣訊3+賣訊4+賣訊5;
買賣:=買訊-賣訊;
持量:C*0//當根動作後所持有的數量
NowN:=0;
for 
i=1 to datacount do begin
  NewN
:=NowN+買賣[i];
  if 
NewN<or 賣訊6[i]=1 then NewN:=0;
  if 
NewN>4 then NewN:=4;
  
NowN:=NewN持量[i]:=NowN;
end;


由 tycoon868 在 2013-05-03 12:19 發表:

解決了,感謝!


由 tycoon868 在 2013-05-05 22:20 發表:

總版主早安:
延伸上面的需求,請教您
如何根據倉位紀錄的變化,標示出買賣點
所有可能發生的情況如下:

1. 買訊1 出現時,秀出 '試單',其餘的買訊2~5出現時,倉位有增加時才秀出'加碼'

處理方式如右: 倉位 0→2 標示出 '試單'
倉位 2→4 標示出 '加二'
倉位 2→3 標示出 '加一'
倉位 1→2 標示出 '加一'
倉位 1→3 標示出 '加二'

買訊出現,倉位卻沒有變動,例如倉位 4→4,則忽略不作標示


2. 賣訊1~6出現時,只要倉位有減少一張則標示出 '減一',
倉位有減少兩張則標示出 '減二',

買訊出現,倉位卻沒有變動,例如 倉位 0→0,則忽略該賣訊,不作標示



以上兩個需求,請您幫我加入上面的循環語句中,
感謝


由 cgjj 在 2013-05-06 08:52 發表:

引用:
最初由 tycoon868 發表
總版主早安:
延伸上面的需求,請教您
如何根據倉位紀錄的變化,標示出買賣點
所有可能發生的情況如下:

1. 買訊1 出現時,秀出 '試單',其餘的買訊2~5出現時,倉位有增加時才秀出'加碼'

處理方式如右: 倉位 0→2 標示出 '試單'
倉位 2→4 標示出 '加二'
倉位 2→3 標示出 '加一'
倉位 1→2 標示出 '加一'
倉位 1→3 標示出 '加二'

買訊出現,倉位卻沒有變動,例如倉位 4→4,則忽略不作標示


2. 賣訊1~6出現時,只要倉位有減少一張則標示出 '減一',
倉位有減少兩張則標示出 '減二',

買訊出現,倉位卻沒有變動,例如 倉位 0→0,則忽略該賣訊,不作標示



以上兩個需求,請您幫我加入上面的循環語句中,
感謝



答1
您用 DRAWTEXT 函數即可處理
條件處理並不難:
把前一根的持量 和 當根的持量做比較 即可, 例如
ref(持量,1)=0 and 持量=2

答2
把當根的持量減掉前一根的持量, 就可判斷
(不會僅有減一或減二兩種狀況)


由 tycoon868 在 2013-05-06 09:02 發表:

謝謝,聊解作法了


由 tycoon868 在 2013-05-07 00:42 發表:

感謝總版主一路相挺,目前尚缺績效統計公式:

有一點複雜,但請您相信這是必要的作法

統計的週期是 從 本次cross(R2B,30) 到出現cross(30,R2B) 作最後結算
買賣價與未平倉價全部都以 平均價=(最高+最低+收盤(盤中最新價))/3 作計價

舉一個持量變化的例子,假設有一檔股票的某一段行情
持量的紀錄為 cross(R2B,30)開始 2→4→2→4→3→2→1→2→0 cross(30,R2B)結束

實際的情況為: 買點一*2→買點二*2→賣點一*2→買點三*2→賣點二*1→賣點三*1→賣點四*1→買點四*1→賣點五*2

一共是 買7-賣7=0

小弟所希望做到的動態績效統計需求如下:

1. 當cross(30,R2B)成立時,計算本次平倉總績效,並保留本次的績效,直到下一次cross(R2B,30)成立為止
算法應為 (賣點一*2+賣點二*1+賣點三*1+賣點四*1+賣點五*2)/7 除以(買點一*2+買點二*2+買點三*2+買點四*1)/7

2. 在還沒有完全平倉之前,希望可以動態性的求得暫時性的績效,例如:
賣點一成立時的績效為: 賣點一的平均價/(買點一平均價*2+買點二平均價*2)除以4
賣點二成立時的績效為: (賣點一的平均價*2+賣點二的平均價*1)除以3/(買點一平均價*2+買點二平均價*2+買點三平均價*2)除以6
以此類推

3. 買點一*2→買點二*2 已經成立,但賣點一還沒出現之前
則績效=當下的平均價/(買點一平均價*2+買點二平均價*2)除以4

買點一*2→買點二*2→賣點一*2→買點三*2 已經成立,但賣點二還沒出現之前
則績效=(當下的平均價+賣點一的平均價)除以2/(買點一平均價*2+買點二平均價*2+買點三平均價*2)除以6
以此類推

感謝總版主


由 cgjj 在 2013-05-07 08:54 發表:

引用:
最初由 tycoon868 發表
感謝總版主一路相挺,目前尚缺績效統計公式:

有一點複雜,但請您相信這是必要的作法

統計的週期是 從 本次cross(R2B,30) 到出現cross(30,R2B) 作最後結算
買賣價與未平倉價全部都以 平均價=(最高+最低+收盤(盤中最新價))/3 作計價

舉一個持量變化的例子,假設有一檔股票的某一段行情
持量的紀錄為 cross(R2B,30)開始 2→4→2→4→3→2→1→2→0 cross(30,R2B)結束

實際的情況為: 買點一*2→買點二*2→賣點一*2→買點三*2→賣點二*1→賣點三*1→賣點四*1→買點四*1→賣點五*2

一共是 買7-賣7=0

小弟所希望做到的動態績效統計需求如下:

1. 當cross(30,R2B)成立時,計算本次平倉總績效,並保留本次的績效,直到下一次cross(R2B,30)成立為止
算法應為 (賣點一*2+賣點二*1+賣點三*1+賣點四*1+賣點五*2)/7 除以(買點一*2+買點二*2+買點三*2+買點四*1)/7

2. 在還沒有完全平倉之前,希望可以動態性的求得暫時性的績效,例如:
賣點一成立時的績效為: 賣點一的平均價/(買點一平均價*2+買點二平均價*2)除以4
賣點二成立時的績效為: (賣點一的平均價*2+賣點二的平均價*1)除以3/(買點一平均價*2+買點二平均價*2+買點三平均價*2)除以6
以此類推

3. 買點一*2→買點二*2 已經成立,但賣點一還沒出現之前
則績效=當下的平均價/(買點一平均價*2+買點二平均價*2)除以4

買點一*2→買點二*2→賣點一*2→買點三*2 已經成立,但賣點二還沒出現之前
則績效=(當下的平均價+賣點一的平均價)除以2/(買點一平均價*2+買點二平均價*2+買點三平均價*2)除以6
以此類推

感謝總版主



很抱歉, 恕無法協助
因為完全看不懂您想要如何算績效
也與我認知的績效算法差距頗大
我想您必須自己處理此部份了

論壇上有些算盈虧的範例, 您可自行搜尋參考


由 tycoon868 在 2013-05-07 09:03 發表:

補充說明如下:

1. 尚未出現賣點前,以當下的平均價算出暫時的報酬率

2. 賣點成立時,則以該賣點的平均價計算

3. 如遇到賣出又買進,買進的成本需要合計 期初+期中發生的新買訊

4. 以上都是尚未完全平倉前的暫時績效,周期結束時,才正式作一個結算

謝謝


由 cgjj 在 2013-05-07 17:03 發表:

引用:
最初由 tycoon868 發表
補充說明如下:

1. 尚未出現賣點前,以當下的平均價算出暫時的報酬率

2. 賣點成立時,則以該賣點的平均價計算

3. 如遇到賣出又買進,買進的成本需要合計 期初+期中發生的新買訊

4. 以上都是尚未完全平倉前的暫時績效,周期結束時,才正式作一個結算

謝謝



既然您說
尚未出現賣點前,以當下的平均價算出暫時的報酬率

那麼這裡的
買點一*2→買點二*2→賣點一*2→買點三*2 已經成立,但賣點二還沒出現之前
則績效=(當下的平均價+賣點一的平均價)除以2/(買點一平均價*2+買點二平均價*2+買點三平均價*2)除以6

為何不是
(當下的平均價*4+賣點一平均價*2)除以6/(買點一平均價*2+買點二平均價*2+買點三平均價*2)除以6


由 tycoon868 在 2013-05-07 17:18 發表:

謝謝總版主的細心:

我之前的思慮不夠周延

您是對的,確實應該修正為: 分母為已實現的買點之總買進金額

分子應該為: (已實現賣點倉位的總賣出金額+未實現倉位的平均價之合)

(當下的平均價*4(尚未平倉)+賣點一平均價*2(已平倉))除以6/(買點一平均價*2+買點二平均價*2+買點三平均價*2)除以6~~才是正確的

麻煩您延續之前的 持量計算公式,指點如何完成這部分績效統計的語法


感謝


由 cgjj 在 2013-05-08 13:07 發表:

引用:
最初由 tycoon868 發表
謝謝總版主的細心:

我之前的思慮不夠周延

您是對的,確實應該修正為: 分母為已實現的買點之總買進金額

分子應該為: (已實現賣點倉位的總賣出金額+未實現倉位的平均價之合)

(當下的平均價*4(尚未平倉)+賣點一平均價*2(已平倉))除以6/(買點一平均價*2+買點二平均價*2+買點三平均價*2)除以6~~才是正確的

麻煩您延續之前的 持量計算公式,指點如何完成這部分績效統計的語法


感謝



原碼:

買訊1
:=買訊1 or barpos=0;
買訊2:=買訊2 or barpos=0;
買訊3:=買訊3 or barpos=0;
買訊4:=買訊4 or barpos=0;
買訊5:=買訊5 or barpos=0;
賣訊1:=賣訊1 or barpos=0;
賣訊2:=賣訊2 or barpos=0;
賣訊3:=賣訊3 or barpos=0;
賣訊4:=賣訊4 or barpos=0;
賣訊5:=賣訊5 or barpos=0;
賣訊6:=賣訊6 or barpos=0;
買訊:=(買訊1+買訊2+買訊3)*2+(買訊3+買訊5);
賣訊:=賣訊1+賣訊2+賣訊3+賣訊4+賣訊5;
買賣:=買訊-賣訊;
持量:C*0//當根動作後所持有的數量
NowN:=0平均價:=(H+L+C)/3;
BC:=0SC:=0BN:=0SN:=0;
PP:C*0 NOAXIS;
for 
i=1 to datacount do begin
  NewN
:=NowN+買賣[i];
  if 
NewN<or 賣訊6[i]=1 then NewN:=0;
  if 
NewN>4 then NewN:=4;
  
AddN:=NewN-NowN;
  if 
AddN>0 then begin
   BC
:=BC+平均價[i]*AddN;
   
BN:=BN+AddN;
  
end else if AddN<0 then begin
   SC
:=SC-平均價[i]*AddN;
   
SN:=SN-AddN;
  
end;
  
NowN:=NewN持量[i]:=NowN;
  
SSC:=SC+平均價[i]*NowN;
  
SSN:=SN+NowN;
  
PP[i]:=(SSC/SSN)/(BC/BN);
  if 
賣訊6[i]=1 then begin
    BC
:=0SC:=0BN:=0SN:=0;
  
end;
end;


由 tycoon868 在 2013-05-08 16:10 發表:

總版主午安

經過套入測試,結果如下

1. 經過手動驗算正確無誤,不過PP值需要化成百分比

目前結果為:PP=1.86,其實正確應為 86(%)

我將這一行 PP[i]:=((SSC/SSN)/(BC/BN));
修改成 PP[i]:=(((SSC/SSN)/(BC/BN))-1)*100;

結果: 有買進作多的行情段落正常顯示,沒有介入的行情段落會變成-100

請教應該如何正確的修改

2. 除了上面已經算出的動態績效PP,希望得到實際的資金變化與原始投入績效QQ:

舉一個實際的例子(品安8088) 整波段的持量變化為 2 →4 →3 →2 →1 →2 →1 →0
資金交易狀變化即是: 買點1*2000+買點2*2000-賣點1*1000-賣點2*1000-賣點3*1000+買點3*1000-賣點4*1000-賣點5*1000

希望求得當下實際的資金額,並且以買點1+買點2(有時候只有買點1後便出現持量=0,買點2則忽略)作為原始投入資金,計算一個原始投入績效QQ

這一次毋須計算未平倉部分,只需要在持量=0 時,求出 QQ=(總回收資金/原始投入資金)*100 即可,另外輸出2 →4 →3 →2 →1 →2 →1 →0 整段資金的數值(全部皆以 1000股*平均價計算)

麻煩您延續之前的 持量計算公式,指點如何完成這部分績效統計的語法

3. 根據需求2所算出的 已經完全平倉的 QQ=(總回收資金/原始投入資金)*100

請問如何寫以下的統計公式(請您賜教寫法即可,結果輸出部分由我自行處理)

以下的兩年是以日K=240根為計算基礎

a. 希望算出近兩年來的總作多次數(cross(R2B,30) 到出現cross(30,R2B) 視為一次)
b. 兩年來已經完全平倉(持量=0)的累計報酬率(虧損部分直接減除)
c. 交易成功率: 成功的次數/總交易次數(完全平倉時的PP值<3%則視為失敗)
d. 最大浮動報酬率(附帶輸出該未平倉日期)
e. 最大浮動虧損率(附帶輸出該未平倉日期)

感謝您的協助


由 cgjj 在 2013-05-09 09:51 發表:

引用:
最初由 tycoon868 發表
總版主午安

經過套入測試,結果如下

1. 經過手動驗算正確無誤,不過PP值需要化成百分比

目前結果為:PP=1.86,其實正確應為 86(%)

我將這一行 PP[i]:=((SSC/SSN)/(BC/BN));
修改成 PP[i]:=(((SSC/SSN)/(BC/BN))-1)*100;

結果: 有買進作多的行情段落正常顯示,沒有介入的行情段落會變成-100

請教應該如何正確的修改




PP[i]:=(((SSC/SSN)/(BC/BN))-1)*100;

改為
PP[i]:=((SSC/SSN)/(BC/BN));
if PP[i]<>0 then PP[i]:=(PP[i]-1)*100;

另外
if 賣訊6[i]=1 then begin
要修正為
if 賣訊6[i]=1 or NowN=0 then begin


由 cgjj 在 2013-05-09 09:57 發表:

引用:
最初由 tycoon868 發表
2. 除了上面已經算出的動態績效PP,希望得到實際的資金變化與原始投入績效QQ:

舉一個實際的例子(品安8088) 整波段的持量變化為 2 →4 →3 →2 →1 →2 →1 →0
資金交易狀變化即是: 買點1*2000+買點2*2000-賣點1*1000-賣點2*1000-賣點3*1000+買點3*1000-賣點4*1000-賣點5*1000

希望求得當下實際的資金額,並且以買點1+買點2(有時候只有買點1後便出現持量=0,買點2則忽略)作為原始投入資金,計算一個原始投入績效QQ

這一次毋須計算未平倉部分,只需要在持量=0 時,求出 QQ=(總回收資金/原始投入資金)*100 即可,另外輸出2 →4 →3 →2 →1 →2 →1 →0 整段資金的數值(全部皆以 1000股*平均價計算)

麻煩您延續之前的 持量計算公式,指點如何完成這部分績效統計的語法

3. 根據需求2所算出的 已經完全平倉的 QQ=(總回收資金/原始投入資金)*100

請問如何寫以下的統計公式(請您賜教寫法即可,結果輸出部分由我自行處理)

以下的兩年是以日K=240根為計算基礎

a. 希望算出近兩年來的總作多次數(cross(R2B,30) 到出現cross(30,R2B) 視為一次)
b. 兩年來已經完全平倉(持量=0)的累計報酬率(虧損部分直接減除)
c. 交易成功率: 成功的次數/總交易次數(完全平倉時的PP值<3%則視為失敗)
d. 最大浮動報酬率(附帶輸出該未平倉日期)
e. 最大浮動虧損率(附帶輸出該未平倉日期)

感謝您的協助



很抱歉

後續的這個部份
幾乎相當於開發一個評測系統了
基於處理時間考量, 恕無法繼續幫忙

迴圈裡面已經有建構了基礎運算結構
請您自行擴展續處理了


由 tycoon868 在 2013-05-09 10:11 發表:

感謝總版主:

是的,我也覺得這樣太麻煩您了,其實我是很希望自己來作評測的部分,所以請求您讓我聊解這個迴圈的意義

以下的部分請您幫我註解一下,讓我充分理解您所惠贈的迴圈公式,好讓我可以自行作延伸與變化

BC:
BN:
SC:
SN:
SSC:
SSN:

理解這個迴圈用法後,我會自行嘗試,也盼望實作的過程中,如果有小小的提問可以持續得到您的支援

感謝


由 cgjj 在 2013-05-09 10:30 發表:

引用:
最初由 tycoon868 發表
感謝總版主:

是的,我也覺得這樣太麻煩您了,其實我是很希望自己來作評測的部分,所以請求您讓我聊解這個迴圈的意義

以下的部分請您幫我註解一下,讓我充分理解您所惠贈的迴圈公式,好讓我可以自行作延伸與變化

BC:
BN:
SC:
SN:
SSC:
SSN:

理解這個迴圈用法後,我會自行嘗試,也盼望實作的過程中,如果有小小的提問可以持續得到您的支援

感謝



BC 為該回累計買的總值 (以平均價買:價*量)
BN 為該回累計買的數量

SC 為該回累計賣的總值 (以平均價賣:價*量)
SN 為該回累計賣的數量

SSC 為該回累計賣的總值 + 該回未平倉的總值(以當前平均價賣)
SSN 為該回累計賣的數量 + 該回未平倉的數量

有兩種狀況代表 "該回結束"
1.當碰到賣訊6成立時, 全數賣出
2.賣到變成空手時

該回結束時, 會令 BC, SC, BN, SN 歸零


由 cgjj 在 2013-05-09 10:33 發表:

前述的
2.賣到變成空手時


if 賣訊6[i]=1 or NowN=0 then begin

是相關聯的


若不要這部份
就將
if 賣訊6[i]=1 or NowN=0 then begin
改回
if 賣訊6[i]=1 then begin


由 tycoon868 在 2013-05-09 10:41 發表:

感謝,這樣子我應該可以自己完成到約80%~90%了,謝謝!


由 cgjj 在 2013-05-09 10:48 發表:

引用:
最初由 tycoon868 發表
感謝,這樣子我應該可以自己完成到約80%~90%了,謝謝!


不客氣 ^^


由 tycoon868 在 2013-05-14 09:53 發表:

總版主

我希望求得資金變化 QQ:SC-BC,linethick1; 求出來的值是我所要的,但是必須用訓練模式才能看到歷史的
值,希望作成副圖(可以顯示歷史數據),希望這個QQ可以像PP值一樣可以移動查價,請問應該如何修改?

謝謝


由 cgjj 在 2013-05-15 08:59 發表:

引用:
最初由 tycoon868 發表
總版主

我希望求得資金變化 QQ:SC-BC,linethick1; 求出來的值是我所要的,但是必須用訓練模式才能看到歷史的
值,希望作成副圖(可以顯示歷史數據),希望這個QQ可以像PP值一樣可以移動查價,請問應該如何修改?

謝謝



在這行之前
for i=1 to datacount do begin
插入一行
QQ:C*0 NOAXIS;

在這行之前
if 賣訊6[i]=1 then begin
插入一行
QQ[i]:=SC-BC;


由 tycoon868 在 2013-05-15 09:47 發表:

總版主,謝謝您:
正是我所需要的

為了這個問題,我足足花了一星期,還是做不出來
拜託您再幫我一次忙,因為需要在每一個點為作一些績效統計(作成副圖)

所以麻煩您比照以上QQ的作法,教我以下的值都可以像QQ以及PP般移動查歷史

重要性依序為: BC SC SSC 次要的:BN SN SSN

萬分拜託,感激協助!


由 cgjj 在 2013-05-15 11:14 發表:

引用:
最初由 tycoon868 發表
總版主,謝謝您:
正是我所需要的

為了這個問題,我足足花了一星期,還是做不出來
拜託您再幫我一次忙,因為需要在每一個點為作一些績效統計(作成副圖)

所以麻煩您比照以上QQ的作法,教我以下的值都可以像QQ以及PP般移動查歷史

重要性依序為: BC SC SSC 次要的:BN SN SSN

萬分拜託,感激協助!



方法一樣, 以 BC 為例:

在這行之前
for i=1 to datacount do begin
插入一行
QBC:C*0 NOAXIS;

在這行之前
if 賣訊6[i]=1 then begin
插入一行
QBC[i]:=BC;


由 tycoon868 在 2013-05-15 12:13 發表:

測試成功
小弟向總版主致敬!


全部時間均為台灣時間, 現在時間為17:03
在這個頁面顯示本主題全部的 34 個文章


Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.