文華買賣權平價策略代碼源碼[文華財經公式]
①什么是買賣權平價關系?
買賣權平價關系是指具有相同的到期日與執行價格的金融工具,其賣權與買權價格間必然存在的基本關系。如果兩者不相同,則存在套利的空間。
歐式期權的平價關系可以表示為:
其中,C為看漲期權的當期的理論價格,P為看跌期權當期的理論價格,1年期無風險利率為r,行權價為K,為某股票現在的價格。
?
②根據買賣權平價關系推導套利條件
在上述理論的基礎上,Tucker根據股指期貨和股指期權之間的價格關系闡述了期貨與期權的平價關系,并運用這一均衡關系來發現市場的套利機會并驗證市場效率。
該理論假設:1)期權為歐式期權。2)稅收、手續費等交易成本不計。3)借貸利率相等。
在t時刻,期貨和期權的平價關系可表示為:
F為t時刻期貨價格,T為期權到期日,C、P分別是看漲看跌期權的價格,r為無風險利率,貼現因子以年化無風險利率計算,通常考慮一個月內(1/12),其數值接近于1,進而上述關系可簡化為:
由上式可以推導出套利開倉條件:
?
? | ? | 策略 |
C-P>F-K | 看漲期權價格被高估,看跌期權價格被低估 | 賣出看漲期權,買入看跌期權 |
C-P<F-K | 看漲期權價格被低估,看跌期權價格被高估 | 買入看漲期權,賣出看跌期權 |
?
?
③將上述策略編寫為策略模型
Data CODC0:"m2209-C-4200"; //看漲期權 CODP0:"m2209-P-4200"; //看跌期權 CODC1:"m2209-C-4150"; //看漲期權 CODP1:"m2209-P-4150"; //看跌期權 CODC2:"m2209-C-4100"; //看漲期權 CODP2:"m2209-P-4100"; //看跌期權 CODC3:"m2209-C-4050"; //看漲期權 CODP3:"m2209-P-4050"; //看跌期權 CODC4:"m2209-C-4000"; //看漲期權 CODP4:"m2209-P-4000"; //看跌期權 COD:"m2209"; //標的期貨 Vars StringArray CODC; //看漲期權 StringArray CODP; //看跌期權 String CODF; //標的期貨 Numeric CDN; //期權合約數量 Numeric N; //下單手數 Numeric X; //循環變量 Numeric T; //時間間隔 Numeric D; //日期間隔 Numeric TOD; //當前日期 Numeric NOW; //當前時間 Numeric NEWPF; //F最新價 Numeric OPFLG; //模型處理標志 NumericArray STP; //行權價 NumericArray NEWPC; //C最新價 NumericArray NEWPP; //P最新價 NumericArray EPDC; //C行權日期 NumericArray EPDP; //P行權日期 NumericArray RTSC; //C距行權日剩余天數 NumericArray RTSP; //P距行權日剩余天數 NumericArray RLPC,FLPC; //C漲跌停價 NumericArray RLPP,FLPP; //P漲跌停價 NumericArray BIDPC,ASKPC; //C買賣一價 NumericArray BIDPP,ASKPP; //P買賣一價 NumericArray BRPC,SRPC; //C多空頭可用持倉 NumericArray BRPP,SRPP; //P多空頭可用持倉 NumericArray BKDFLGC,SKDFLGC; //C開倉處理標志 NumericArray BPDFLGC,SPDFLGC; //C開倉處理標志 NumericArray BKDFLGP,SKDFLGP; //P開倉處理標志 NumericArray BPDFLGP,SPDFLGP; //P開倉處理標志 Global_NumericArray KCFLG; //開倉處理標志 Global_NumericArray KPFLG; //開平處理標志 Global_NumericArray BKIDC,SKIDC; //C開倉委托 Global_NumericArray BPIDC,SPIDC; //C平倉委托 Global_NumericArray BKIDP,SKIDP; //P開倉委托 Global_NumericArray BPIDP,SPIDP; //P平倉委托 Global_NumericArray BKFLGC,SKFLGC; //C開倉標志 Global_NumericArray BPFLGC,SPFLGC; //C平倉標志 Global_NumericArray BKFLGP,SKFLGP; //P開倉標志 Global_NumericArray BPFLGP,SPFLGP; //P平倉標志 Global_NumericArray BKDELC,SKDELC; //C開倉撤單標志 Global_NumericArray BKDELP,SKDELP; //P開倉撤單標志 Global_NumericArray BKMC,SKMC; //C開倉委托手數 Global_NumericArray BPMC,SPMC; //C平倉委托手數 Global_NumericArray BKMP,SKMP; //P開倉委托手數 Global_NumericArray BPMP,SPMP; //P平倉委托手數 Global_NumericArray BKPC,SKPC; //C開倉委托價格 Global_NumericArray BPPC,SPPC; //C平倉委托價格 Global_NumericArray BKPP,SKPP; //P開倉委托價格 Global_NumericArray BPPP,SPPP; //P平倉委托價格 Global_NumericArray BKTC,SKTC; //C開倉委托時間 Global_NumericArray BKTP,SKTP; //P開倉委托時間 Begin //------------------------處理開啟------------------------// If(1) //處理開啟 { CODC[0] = "m2209-C-4200"; //看漲期權 CODP[0] = "m2209-P-4200"; //看跌期權 CODC[1] = "m2209-C-4150"; //看漲期權 CODP[1] = "m2209-P-4150"; //看跌期權 CODC[2] = "m2209-C-4100"; //看漲期權 CODP[2] = "m2209-P-4100"; //看跌期權 CODC[3] = "m2209-C-4050"; //看漲期權 CODP[3] = "m2209-P-4050"; //看跌期權 CODC[4] = "m2209-C-4000"; //看漲期權 CODP[4] = "m2209-P-4000"; //看跌期權 CDN = GetStringArraySize(CODC); //期權合約數量 CODF = "m2209"; //標的期貨 OPFLG = 1; //開啟模型處理 If(CODF.A_IsExchangeOpen() != 1) //如果非開盤狀態 { OPFLG = 2; //關閉模型處理 } For X = 0 To CDN - 1 //遍歷期權合約 { If(CODC[X].A_IsExchangeOpen() != 1 || CODP[X].A_IsExchangeOpen() != 1) //如果非開盤狀態 { OPFLG = 2; //關閉模型處理 } } } //------------------------變量賦值------------------------// If(OPFLG == 1) //變量賦值 { N = 1; //下單手數 T = 15; //時間間隔 D = 5; //日期間隔 TOD = CurrentDate(); //當前日期 NOW = CurrentTime(); //當前時間 NEWPF = CODF.Price("New"); //F最新價 For X = 0 To CDN - 1 //遍歷期權合約 { NEWPC[X] = CODC[X].Price("New"); //C最新價 NEWPP[X] = CODP[X].Price("New"); //P最新價 BIDPC[X] = CODC[X].Price("Bid1"); //C買一價 ASKPC[X] = CODC[X].Price("Ask1"); //C賣一價 BIDPP[X] = CODP[X].Price("Bid1"); //P買一價 ASKPP[X] = CODP[X].Price("Ask1"); //P賣一價 RLPC[X] = CODC[X].Price("RiseLimit"); //C漲停價 FLPC[X] = CODC[X].Price("FallLimit"); //C跌停價 RLPP[X] = CODP[X].Price("RiseLimit"); //P漲停價 FLPP[X] = CODP[X].Price("FallLimit"); //P跌停價 BIDPC[X] = IIF(BIDPC[X] == 0 && NEWPC[X] == FLPC[X],FLPC[X],BIDPC[X]); //C買一價 ASKPC[X] = IIF(ASKPC[X] == 0 && NEWPC[X] == RLPC[X],RLPC[X],ASKPC[X]); //C賣一價 BIDPP[X] = IIF(BIDPP[X] == 0 && NEWPP[X] == FLPP[X],FLPP[X],BIDPP[X]); //P買一價 ASKPP[X] = IIF(ASKPP[X] == 0 && NEWPP[X] == RLPP[X],RLPP[X],ASKPP[X]); //P賣一價 STP[X] = CODC[X].Price("StrikePrice"); //行權價 EPDC[X] = CODC[X].Price("ExpirationDate"); //C行權日期 EPDP[X] = CODP[X].Price("ExpirationDate"); //P行權日期 RTSC[X] = DateDiff(TOD,EPDC[X] ); //C距行權日剩余天數 RTSP[X] = DateDiff(TOD,EPDP[X] ); //P距行權日剩余天數 BRPC[X] = CODC[X].F_BuyRemainPosition(); //C多頭可用持倉 SRPC[X] = CODC[X].F_SellRemainPosition(); //C空頭可用持倉 BRPP[X] = CODP[X].F_BuyRemainPosition(); //P多頭可用持倉 SRPP[X] = CODP[X].F_SellRemainPosition(); //P空頭可用持倉 BRPC[X] = Min(BRPC[X],CODC[X].A_BuyRemainPosition()); //C多頭可用持倉 SRPC[X] = Min(SRPC[X],CODC[X].A_SellRemainPosition()); //C空頭可用持倉 BRPP[X] = Min(BRPP[X],CODP[X].A_BuyRemainPosition()); //P多頭可用持倉 SRPP[X] = Min(SRPP[X],CODP[X].A_SellRemainPosition()); //P空頭可用持倉 } } //------------------------成交判斷------------------------// If(OPFLG == 1) //成交判斷 { For X = 0 To CDN - 1 //遍歷期權合約 { If(BKFLGC[X] == 1) //如果有C買開委托 { If(F_OrderStatus(BKIDC[X]) == Enum_Filled) //如果C買開委托成交 { Commentary("【多頭開倉:C買開委托" + Text(X + 1) + "成交!】"); BKFLGC[X] = 0; //C買開標志歸0 BKDELC[X] = 0; //C買開撤單標志歸0 } Else If(F_OrderStatus(BKIDC[X]) == Enum_Canceled) //如果C買開委托已撤 { Commentary("【多頭開倉:C買開委托" + Text(X + 1) + "已撤!】"); If(F_OrderFilledLot(BKIDC[X]) > 0) //如果C買開委托部分成交 { BKMC[X] = BKMC[X] - F_OrderFilledLot(BKIDC[X]); //C買開委托手數 } If(BKMC[X] > 0) //如果C買開委托手數大于0 { BKPC[X] = RLPC[X]; //C買開委托價格 Commentary("【多頭開倉:C買開委托" + Text(X + 1) + "發出!】"); BKIDC[X] = CODC[X].A_SendOrder(Enum_Buy,Enum_Entry,BKMC[X],BKPC[X]); //發出C買開委托 } BKDELC[X] = 0; //C買開撤單標志歸0 } Else If(F_OrderStatus(BKIDC[X]) == Enum_Declared || F_OrderStatus(BKIDC[X]) == Enum_FillPart) //如果C買開委托掛單 { If(BKDELC[X] == 0) //如果未撤單 { If(TimeDiff(BKTC[X],NOW) >= T && BKPC[X] != RLPC[X]) //如果時間間隔T秒 { Commentary("【多頭開倉:C買開委托" + Text(X + 1) + "撤單!】"); CODC[X].A_DeleteOrder(F_OrderContractNo(BKIDC[X])); //撤掉C買開委托掛單 BKDELC[X] = 1; //已發出撤掉C買開委托掛單 } } } Else If(F_OrderStatus(BKIDC[X]) == Enum_Deleted) //如果C買開委托廢單 { Commentary("【多頭開倉:C買開委托" + Text(X + 1) + "廢單!】"); BKFLGC[X] = 0; //C買開標志歸0 } } If(SPFLGC[X] == 1) //如果有C賣平委托 { If(F_OrderStatus(SPIDC[X]) == Enum_Filled) //如果C賣平委托成交 { Commentary("【多頭平倉:C賣平委托" + Text(X + 1) + "成交!】"); SPFLGC[X] = 0; //C賣平標志歸0 } Else If(F_OrderStatus(SPIDC[X]) == Enum_Deleted) //如果C賣平委托廢單 { Commentary("【多頭平倉:C賣平委托" + Text(X + 1) + "廢單!】"); SPFLGC[X] = 0; //C賣平標志歸0 } } If(SKFLGC[X] == 1) //如果有C賣開委托 { If(F_OrderStatus(SKIDC[X]) == Enum_Filled) //如果C賣開委托成交 { Commentary("【空頭開倉:C賣開委托" + Text(X + 1) + "成交!】"); SKFLGC[X] = 0; //C賣開標志歸0 SKDELC[X] = 0; //C賣開撤單標志歸0 } Else If(F_OrderStatus(SKIDC[X]) == Enum_Canceled) //如果C賣開委托已撤 { Commentary("【空頭開倉:C賣開委托" + Text(X + 1) + "已撤!】"); If(F_OrderFilledLot(SKIDC[X]) > 0) //如果C賣開委托部分成交 { SKMC[X] = SKMC[X] - F_OrderFilledLot(SKIDC[X]); //C賣開委托手數 } If(SKMC[X] > 0) //如果C賣開委托手數大于0 { SKPC[X] = FLPC[X]; //C賣開委托價格 Commentary("【空頭開倉:C賣開委托" + Text(X + 1) + "發出!】"); SKIDC[X] = CODC[X].A_SendOrder(Enum_Sell,Enum_Entry,SKMC[X],SKPC[X]); //發出C賣開委托 } SKDELC[X] = 0; //C賣開撤單標志歸0 } Else If(F_OrderStatus(SKIDC[X]) == Enum_Declared || F_OrderStatus(SKIDC[X]) == Enum_FillPart) //如果C賣開委托掛單 { If(SKDELC[X] == 0) //如果未撤單 { If(TimeDiff(SKTC[X],NOW) >= T && SKPC[X] != FLPC[X]) //如果時間間隔T秒 { Commentary("【空頭開倉:C賣開委托" + Text(X + 1) + "撤單!】"); CODC[X].A_DeleteOrder(F_OrderContractNo(SKIDC[X])); //撤掉C賣開委托掛單 SKDELC[X] = 1; //已發出撤掉C賣開委托掛單 } } } Else If(F_OrderStatus(SKIDC[X]) == Enum_Deleted) //如果C賣開委托廢單 { Commentary("【空頭開倉:C賣開委托" + Text(X + 1) + "廢單!】"); SKFLGC[X] = 0; //C賣開標志歸0 } } If(BPFLGC[X] == 1) //如果有C買平委托 { If(F_OrderStatus(BPIDC[X]) == Enum_Filled) //如果C買平委托成交 { Commentary("【空頭平倉:C買平委托" + Text(X + 1) + "成交!】"); BPFLGC[X] = 0; //C買平標志歸0 } Else If(F_OrderStatus(BPIDC[X]) == Enum_Deleted) //如果C買平委托廢單 { Commentary("【空頭平倉:C買平委托" + Text(X + 1) + "廢單!】"); BPFLGC[X] = 0; //C買平標志歸0 } } If(BKFLGP[X] == 1) //如果有P買開委托 { If(F_OrderStatus(BKIDP[X]) == Enum_Filled) //如果P買開委托成交 { Commentary("【多頭開倉:P買開委托" + Text(X + 1) + "成交!】"); BKFLGP[X] = 0; //P買開標志歸0 BKDELP[X] = 0; //P買開撤單標志歸0 } Else If(F_OrderStatus(BKIDP[X]) == Enum_Canceled) //如果P買開委托已撤 { Commentary("【多頭開倉:P買開委托" + Text(X + 1) + "已撤!】"); If(F_OrderFilledLot(BKIDP[X]) > 0) //如果P買開委托部分成交 { BKMP[X] = BKMP[X] - F_OrderFilledLot(BKIDP[X]); //P買開委托手數 } If(BKMP[X] > 0) //如果P買開委托手數大于0 { BKPP[X] = RLPP[X]; //P買開委托價格 Commentary("【多頭開倉:P買開委托" + Text(X + 1) + "發出!】"); BKIDP[X] = CODP[X].A_SendOrder(Enum_Buy,Enum_Entry,BKMP[X],BKPP[X]); //發出P買開委托 } BKDELP[X] = 0; //P買開撤單標志歸0 } Else If(F_OrderStatus(BKIDP[X]) == Enum_Declared || F_OrderStatus(BKIDP[X]) == Enum_FillPart) //如果P買開委托掛單 { If(BKDELP[X] == 0) //如果未撤單 { If(TimeDiff(BKTP[X],NOW) >= T && BKPP[X] != RLPP[X]) //如果時間間隔T秒 { Commentary("【多頭開倉:P買開委托" + Text(X + 1) + "撤單!】"); CODP[X].A_DeleteOrder(F_OrderContractNo(BKIDP[X])); //撤掉P買開委托掛單 BKDELP[X] = 1; //已發出撤掉P買開委托掛單 } } } Else If(F_OrderStatus(BKIDP[X]) == Enum_Deleted) //如果P買開委托廢單 { Commentary("【多頭開倉:P買開委托" + Text(X + 1) + "廢單!】"); BKFLGP[X] = 0; //P買開標志歸0 } } If(SPFLGP[X] == 1) //如果有P賣平委托 { If(F_OrderStatus(SPIDP[X]) == Enum_Filled) //如果P賣平委托成交 { Commentary("【多頭平倉:P賣平委托" + Text(X + 1) + "成交!】"); SPFLGP[X] = 0; //P賣平標志歸0 } Else If(F_OrderStatus(SPIDP[X]) == Enum_Deleted) //如果P賣平委托廢單 { Commentary("【多頭平倉:P賣平委托" + Text(X + 1) + "廢單!】"); SPFLGP[X] = 0; //P賣平標志歸0 } } If(SKFLGP[X] == 1) //如果有P賣開委托 { If(F_OrderStatus(SKIDP[X]) == Enum_Filled) //如果P賣開委托成交 { Commentary("【空頭開倉:P賣開委托" + Text(X + 1) + "成交!】"); SKFLGP[X] = 0; //P賣開標志歸0 SKDELP[X] = 0; //P賣開撤單標志歸0 } Else If(F_OrderStatus(SKIDP[X]) == Enum_Canceled) //如果P賣開委托已撤 { Commentary("【空頭開倉:P賣開委托" + Text(X + 1) + "已撤!】"); If(F_OrderFilledLot(SKIDP[X]) > 0) //如果P賣開委托部分成交 { SKMP[X] = SKMP[X] - F_OrderFilledLot(SKIDP[X]); //P賣開委托手數 } If(SKMP[X] > 0) //如果P賣開委托手數大于0 { SKPP[X] = FLPP[X]; //P賣開委托價格 Commentary("【空頭開倉:P賣開委托" + Text(X + 1) + "發出!】"); SKIDP[X] = CODP[X].A_SendOrder(Enum_Sell,Enum_Entry,SKMP[X],SKPP[X]); //發出P賣開委托 } SKDELP[X] = 0; //P賣開撤單標志歸0 } Else If(F_OrderStatus(SKIDP[X]) == Enum_Declared || F_OrderStatus(SKIDP[X]) == Enum_FillPart) //如果P賣開委托掛單 { If(SKDELP[X] == 0) //如果未撤單 { If(TimeDiff(SKTP[X],NOW) >= T && SKPP[X] != FLPP[X]) //如果時間間隔T秒 { Commentary("【空頭開倉:P賣開委托" + Text(X + 1) + "撤單!】"); CODP[X].A_DeleteOrder(F_OrderContractNo(SKIDP[X])); //撤掉P賣開委托掛單 SKDELP[X] = 1; //已發出撤掉P賣開委托掛單 } } } Else If(F_OrderStatus(SKIDP[X]) == Enum_Deleted) //如果P賣開委托廢單 { Commentary("【空頭開倉:P賣開委托" + Text(X + 1) + "廢單!】"); SKFLGP[X] = 0; //P賣開標志歸0 } } If(BPFLGP[X] == 1) //如果有P買平委托 { If(F_OrderStatus(BPIDP[X]) == Enum_Filled) //如果P買平委托成交 { Commentary("【空頭平倉:P買平委托" + Text(X + 1) + "成交!】"); BPFLGP[X] = 0; //P買平標志歸0 } Else If(F_OrderStatus(BPIDP[X]) == Enum_Deleted) //如果P買平委托廢單 { Commentary("【空頭平倉:P買平委托" + Text(X + 1) + "廢單!】"); BPFLGP[X] = 0; //P買平標志歸0 } } } } //------------------------開平處理------------------------// If(OPFLG == 1) //開平處理 { For X = 0 To CDN - 1 //遍歷期權合約 { If(BKFLGC[X] == 0 && SPFLGC[X] == 0 && SKFLGC[X] == 0 && BPFLGC[X] == 0 && BKFLGP[X] == 0 && SPFLGP[X] == 0 && SKFLGP[X] == 0 && BPFLGP[X] == 0) //如果沒有開平倉委托 { If(RTSC[X] > D && RTSC[X] > D) //如果滿足開平倉條件 { If(KCFLG[X] == 0) //如果未執行平倉處理 { If(KPFLG[X] == 0 || KPFLG[X] == 2) //如果未執行開平處理1 { If(NEWPC[X] - NEWPP[X] > NEWPF - STP[X]) //如果滿足平倉條件 { SPDFLGC[X] = 1; //開啟C賣平處理 BPDFLGP[X] = 1; //開啟P買平處理 KPFLG[X] = 1; //已執行開平處理1 KCFLG[X] = 1; //已執行平倉處理 } } If(KPFLG[X] == 0 || KPFLG[X] == 1) //如果未執行開平處理2 { If(NEWPC[X] - NEWPP[X] < NEWPF - STP[X]) //如果滿足平倉條件 { BPDFLGC[X] = 1; //開啟C買平處理 SPDFLGP[X] = 1; //開啟P賣平處理 KPFLG[X] = 2; //已執行開平處理2 KCFLG[X] = 1; //已執行平倉處理 } } } Else If(KCFLG[X] == 1) //如果已執行平倉處理 { If(KPFLG[X] == 1) //如果已執行開平處理1 { SKDFLGC[X] = 1; //開啟C賣開處理 BKDFLGP[X] = 1; //開啟P買開處理 } Else If(KPFLG[X] == 2) //如果已執行開平處理2 { BKDFLGC[X] = 1; //開啟C買開處理 SKDFLGP[X] = 1; //開啟P賣開處理 } KCFLG[X] = 0; //開倉處理標志歸0 } } Else If(RTSC[X] <= D || RTSP[X] <= D) //如果滿足清倉條件 { If(KPFLG[X] == 1) //如果已執行開平處理1 { BPDFLGC[X] = 1; //開啟C買平處理 SPDFLGP[X] = 1; //開啟P賣平處理 KCFLG[X] = 0; //開倉處理標志歸0 KPFLG[X] = 0; //開平處理標志歸0 } Else If(KPFLG[X] == 2) //如果已執行開平處理2 { SPDFLGC[X] = 1; //開啟C賣平處理 BPDFLGP[X] = 1; //開啟P買平處理 KCFLG[X] = 0; //開倉處理標志歸0 KPFLG[X] = 0; //開平處理標志歸0 } } } } } //------------------------委托處理------------------------// If(OPFLG == 1) //委托處理 { For X = 0 To CDN - 1 //遍歷期權合約 { If(BKDFLGC[X] == 1) //如果已開啟C買開處理 { If(BKFLGC[X] == 0) //如果沒有C買開委托 { BKMC[X] = N; //C買開委托手數 BKPC[X] = ASKPC[X]; //C買開委托價格 Commentary("【多頭開倉:C買開委托" + Text(X + 1) + "發出!】"); BKIDC[X] = CODC[X].A_SendOrder(Enum_Buy,Enum_Entry,BKMC[X],BKPC[X]); //發出C買開委托 BKTC[X] = NOW; //C買開委托時間 BKFLGC[X] = 1; //已發出C買開委托 } } If(SPDFLGC[X] == 1) //如果已開啟C賣平處理 { If(SPFLGC[X] == 0) //如果沒有C賣平委托 { If(BRPC[X] >= N) //如果C多頭可用持倉達到N手 { SPMC[X] = N; //C賣平委托手數 www.tumamayizhan.com SPPC[X] = BIDPC[X]; //C賣平委托價格 Commentary("【多頭平倉:C賣平委托" + Text(X + 1) + "發出!】"); SPIDC[X] = CODC[X].A_SendOrder(Enum_Sell,Enum_Exit,SPMC[X],SPPC[X]); //發出C賣平委托 SPFLGC[X] = 1; //已發出C賣平委托 } } } If(SKDFLGC[X] == 1) //如果已開啟C賣開處理 { If(SKFLGC[X] == 0) //如果沒有C賣開委托 { SKMC[X] = N; //C賣開委托手數 SKPC[X] = BIDPC[X]; //C賣開委托價格 Commentary("【空頭開倉:C賣開委托" + Text(X + 1) + "發出!】"); SKIDC[X] = CODC[X].A_SendOrder(Enum_Sell,Enum_Entry,SKMC[X],SKPC[X]); //發出C賣開委托 SKTC[X] = NOW; //C賣開委托時間 SKFLGC[X] = 1; //已發出C賣開委托 } } If(BPDFLGC[X] == 1) //如果已開啟C買平處理 { If(BPFLGC[X] == 0) //如果沒有C買平委托 { If(SRPC[X] >= N) //如果C空頭可用持倉達到N手 { BPMC[X] = N; //C買平委托手數 BPPC[X] = ASKPC[X]; //C買平委托價格 Commentary("【空頭平倉:C買平委托" + Text(X + 1) + "發出!】"); BPIDC[X] = CODC[X].A_SendOrder(Enum_Buy,Enum_Exit,BPMC[X],BPPC[X]); //發出C買平委托 BPFLGC[X] = 1; //已發出C買平委托 } } } If(BKDFLGP[X] == 1) //如果已開啟P買開處理 { If(BKFLGP[X] == 0) //如果沒有P買開委托 { BKMP[X] = N; //P買開委托手數 www.tumamayizhan.com BKPP[X] = ASKPP[X]; //P買開委托價格 Commentary("【多頭開倉:P買開委托" + Text(X + 1) + "發出!】"); BKIDP[X] = CODP[X].A_SendOrder(Enum_Buy,Enum_Entry,BKMP[X],BKPP[X]); //發出P買開委托 BKTP[X] = NOW; //P買開委托時間 BKFLGP[X] = 1; //已發出P買開委托 } } If(SPDFLGP[X] == 1) //如果已開啟P賣平處理 { If(SPFLGP[X] == 0) //如果沒有P賣平委托 { If(BRPP[X] >= N) //如果P多頭可用持倉達到N手 { SPMP[X] = N; //P賣平委托手數 SPPP[X] = BIDPP[X]; //P賣平委托價格 Commentary("【多頭平倉:P賣平委托" + Text(X + 1) + "發出!】"); SPIDP[X] = CODP[X].A_SendOrder(Enum_Sell,Enum_Exit,SPMP[X],SPPP[X]); //發出P賣平委托 SPFLGP[X] = 1; //已發出P賣平委托 } } } If(SKDFLGP[X] == 1) //如果已開啟P賣開處理 { If(SKFLGP[X] == 0) //如果沒有P賣開委托 { SKMP[X] = N; //P賣開委托手數HTTP://www.tumamayizhan.com SKPP[X] = BIDPP[X]; //P賣開委托價格 Commentary("【空頭開倉:P賣開委托" + Text(X + 1) + "發出!】"); SKIDP[X] = CODP[X].A_SendOrder(Enum_Sell,Enum_Entry,SKMP[X],SKPP[X]); //發出P賣開委托 SKTP[X] = NOW; //P賣開委托時間 SKFLGP[X] = 1; //已發出P賣開委托 } } If(BPDFLGP[X] == 1) //如果已開啟P買平處理 { If(BPFLGP[X] == 0) //如果沒有P買平委托 { If(SRPP[X] >= N) //如果P空頭可用持倉達到N手 { BPMP[X] = N; //P買平委托手數 BPPP[X] = ASKPP[X]; //P買平委托價格 Commentary("【空頭平倉:P買平委托" + Text(X + 1) + "發出!】"); BPIDP[X] = CODP[X].A_SendOrder(Enum_Buy,Enum_Exit,BPMP[X],BPPP[X]); //發出P買平委托 BPFLGP[X] = 1; //已發出P買平委托 } } } } } End
?
?
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 1145508240 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容