請問:如何讓程式自動在9:10下出勒式價外一檔的選擇權呢?(目前我寫不出來,都用手動)問題如下:
1.程式要抓取目前期貨價位來判斷價平
2.各選取價外一檔(例:期貸20000,則取20050C和19950P,作出雙賣)---只限週選擇權不考慮月選擇權
3.當選擇權的價位比成交價多20點,則鎖單邊的的單,例:若20500C,賣出100,19950P也賣出100,當指數上漲到20500C為120時,則單獨買進20500C,120,但19950P則維持不動。
4.若上例:20500C回跌到100時,則將之前買進的120平倉,維持原先勒式雙賣的組合
5.收盤前全數平倉
新手,功力不夠,再麻煩教授能否寫個範例,感激不盡,謝謝

賣出選擇權勒式價外一檔如何寫呢?求救
- 44
- 最後發表 灰熊 4 小時前
寫在同一策略,分開下也無妨,不一定要組合單,只差別在權利金而己,主要能跑就行。
1. 你對我期待太高了。已達代工水準的需求,需要花很多時間寫程式,除非很有意思,值得也花時間研究,不然很難找到義工幫忙處理。會得到協助的,大部份都是那些努力寫程式解決問題但卡關的人。
2. 你的需求邏輯,可思考如下:可在開盤後某個時間點(例如9點5分)啟動策略。執行商品選擇啟動當時,台指期價內、價外各5檔,合計11檔的商品監控。當然,也可以用商品組合,把最有機會監控的商品加入組合,然後指定組合監控。
(1)用getSymbolField抓台指期的價格。
(2)在9點10分時,判斷最接近台指期成交價的買權及賣權的履約價,以作為下單標的。
(3)用symbol判斷目前洗價的選擇權是否是下單的標的,若是則賣出。
(4)後續都用symbol判斷商品,以及加碼與出場的條件是否觸發。
當洗價的商品是CALL,則close就是該CALL當下的成交價。若有庫存,則filledAvgPrice就是它的平均庫存成本。
3.value1和value2皆出現函數GetSymbolField:第一個數應該是String/Input/Group,這樣寫法有問題嗎?我的value1=getsymbolfield(strcalls,"收盤價","s");這不是字串嗎?
input:futureprice(20650);
var:_putout(0),_callout(0);
var:strcall(" "),strput(" "),strcalls(" "),strputs(" ");
_callout=futureprice+50;
_putout=futureprice-50;
strcall=numtostr(_callout,0);
strput=numtostr(_putout,0);
strcalls="TX2N05C"+strcall+".TF";
strputs ="TX2N05P"+strPUT+".TF";
if time=091000 then begin
if symbol=strcalls then setposition(-1,market); //賣20700Call
if symbol=strputs then setposition(-1,market); //賣20600PUT
end;
//需要判斷目前價位與庫存價位是否有20點range
value1=getsymbolfield(strcalls,"收盤價","s");
value2=getsymbolfield(strputs,"收盤價","s");
//收盤前出場
if currenttime >= 133500 and Filled<>0 then setposition(0, market);
getsymbolfield第一個參數不接受變數。
謝謝教授
//需要判斷目前價位與庫存價位是否有20點range
if symbol=strcalls and position<0 then
if c-filledAvgPrice>20 then setposition(0);
if symbol=strputs and position<0 then
if filledAvgPrice-c>20 then setposition(0);
謝謝教授,正在一點一點推進中,主要卡在c-filledAvgPrice是指CALL,那PUT是p-filledAvgPrice是嗎?就庫存會同時存在賣出的CALL和賣出的PUT,如果程式可以分辦,那後面就問題不大,我爬文,也找不到同時存在的CALL和PUT的指令,所以卡關
補充:用監控期貨是無成交,但改為20700C,和20600P,只有成交CALL,但PUT則是無成交
(1)你的策略賣出的時候都用目前觸發價減2當作委託價,這可能會造成單邊無法成交。
(2)避免重複下無效單,不能只用filled控制流程,還要加上position控制。
(3)basecallprice、baseputprice、count等變數都要用intrabarpersist宣告。
(4)雙賣時,記錄當下庫存成本,兩者會都是0,因為下單,不會馬上成交,你只能記錄當下的即時價格。且兩者要分開記錄(下買權時記錄買權價格,下賣權時記錄賣權價格)。若要記錄庫存,一定要等到filled<0。
25 評論