文華買賣權平價策略代碼源碼[文華財經公式]
①什么是買賣權平價關系?
買賣權平價關系是指具有相同的到期日與執行價格的金融工具,其賣權與買權價格間必然存在的基本關系。如果兩者不相同,則存在套利的空間。
歐式期權的平價關系可以表示為:
其中,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 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容

會員登錄/注冊