股票池選出個(gè)股后按名次分配權(quán)重資金。
作者:金字塔 來源:cxh99.com 發(fā)布時(shí)間:2017年01月15日
- 咨詢內(nèi)容:
本帖引自普通問題板塊,金字塔目前通過股票池選出的個(gè)股是等權(quán)重分配資金買入,通過后臺也無法確定哪一個(gè)是第一名,如果想對名次靠前的個(gè)股給予更多的資金分配,名次靠后的個(gè)股給予少一些的資金分配目前來說還做不到。上面第一圖是假期里面股票池選出來的個(gè)股,如果能對第一名讀者傳媒給予更多的資金買入,兩個(gè)漲停板交易日后的今天則會取得更好的成績。為啥我要強(qiáng)調(diào)名次的順序呢。雖然金字塔提供了股票池這個(gè)大殺器,但是從實(shí)戰(zhàn)上來說運(yùn)用還不夠靈活,比如某賬戶資金100萬,我想拿20%的資金購買量比排行榜(降序)前三位的個(gè)股,第一名50%權(quán)重(100萬*20%*50%=10萬),第二名30%權(quán)重(100萬*20%*30%=6萬),第三名20%(100萬*20%*20%=4萬)權(quán)重。
不知道這個(gè)問題能不能有其他方式解決呢?
- 金字塔客服:
稍等,相關(guān)范例編寫中
- 用戶回復(fù):
我得從一個(gè)實(shí)戰(zhàn)的角度來解釋一下這個(gè)股票池名次重要的問題,以便于金字塔能了解一下實(shí)戰(zhàn)中用戶更需要哪些功能,才能開發(fā)出更加貼近真實(shí)實(shí)戰(zhàn)的軟件功能。目前的股票池把條件選股、排序選股兩塊集于一身,其實(shí)這兩個(gè)說的不是一回事。
1、當(dāng)使用的是股票池的條件選股功能時(shí),名次排名沒意義:比如我可以讓股票池選出所有5日均線>10日均線的個(gè)股。這個(gè)選出的股票在股票池里叫狀態(tài)池,這個(gè)狀態(tài)池里面比如說選出有200個(gè)股票,這么多股票不可能都買,就有待繼續(xù)加工,這些個(gè)股的名次排名沒任何價(jià)值。
2、狀態(tài)池選了那么多的股票我們可以加工一下,這個(gè)時(shí)候就可以用到排序選股功能(勾選下圖“選擇指標(biāo)排序”),名次就重要了:比如對這200個(gè)股票用kdj指標(biāo)的j線進(jìn)行排序,取j值最小(升序)的頭二支個(gè)股作為買進(jìn)的個(gè)股;或者對這200個(gè)股票用量比指標(biāo)進(jìn)行排序,取量比最大(降序)的頭二支個(gè)股作為買進(jìn)個(gè)股。這個(gè)排序在實(shí)戰(zhàn)當(dāng)中是非常有用的,用來挑選最合適的目標(biāo)個(gè)股(現(xiàn)在的金字塔默認(rèn)只能是升序排序)
3、最后才是對挑選出的個(gè)股進(jìn)行資產(chǎn)配置,比如第一名配多少權(quán)重資金,第二名配多少權(quán)重資金等。
- 網(wǎng)友回復(fù):
'全局變量,計(jì)算觸發(fā)的個(gè)數(shù)
Dim StockCount
StockCount = 0
'獲取股票池觸發(fā)事件
Sub MARKETDATA_StockPoolNotifyIng(StockPool, StatusPool, Code, Market)
'觸發(fā)的股票池?cái)?shù)據(jù)記錄到文本文件中
Document.DebugFile "C:\GPCLog.txt",Market&Code,1
'判斷股票池有多少品種
If StockPool = "股票池" And StatusPool = "狀態(tài)池1" Then
StockCount = StockCount + 1
End If
CalcCash = 0 '計(jì)算該使用多少資金
'計(jì)算下單價(jià)格,防止出現(xiàn)漲停板
PleacePrice = 0
Set MyReport = marketdata.GetReportData(Code,Market)
If MyReport.SellPrice1 > 0 Then
PleacePrice = MyReport.SellPrice1
Else
PleacePrice = MyReport.NewPrice '如果賣1價(jià)格為0表示已經(jīng)漲停板,取最新價(jià)計(jì)算
End If
'調(diào)試代碼
'Application.MsgOut StockCount
If StockCount = 1 Then '第一個(gè)觸發(fā)品種
CalcCash = 500000
ElseIf StockCount = 2 Then
CalcCash = 300000
ElseIf StockCount = 3 Then
CalcCash = 200000
End If
If PleacePrice > 0 And CalcCash > 0 Then
CalcVol = CalcCash / PleacePrice
call Order.Buy(0,CalcVol,PleacePrice,0,Code,Market,"",0)
Application.MsgOut "已觸發(fā)股票池下單,代碼:"&Code&" - 價(jià)格:"&PleacePrice&" - 數(shù)量:"&CalcVol
End If
End Sub
- 網(wǎng)友回復(fù):
你說的問題2,我們后面會修正一下,對于后幾名選項(xiàng),按照倒序觸發(fā)