空中花園策略(Python版)_第1頁
空中花園策略(Python版)_第2頁
空中花園策略(Python版)_第3頁
空中花園策略(Python版)_第4頁
空中花園策略(Python版)_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

空中花園策略(Python版)交易邏輯1.**通道確定**:-通道的上軌和下軌僅根據(jù)當天第一根K線信息確定。-上軌=第一根K線的最高價。-下軌=第一根K線的最低價。2.**入場條件**:-價格突破上軌時,如果當天是高開或低開,則進行做多操作。-價格突破下軌時,如果當天是高開或低開,則進行做空操作。-如果當天不是高開或低開,則沿用上一次的通道。3.**出場條件**:-反手出場:即如果做多后價格突破下軌,則平倉并反手做空;如果做空后價格突破上軌,則平倉并反手做多。-收盤前主動出場:無論當前倉位如何,收盤前都會主動平倉。策略特點1.**簡單直接**:策略的核心邏輯非常直觀,僅依賴當天第一根K線信息來確定交易通道。2.**高贏面設計**:通過限制開盤狀態(tài),確保在特定條件下才進行交易,從而提高贏面。3.**日內(nèi)交易**:策略設計為日內(nèi)交易,收盤前無論盈虧都會主動平倉,避免了隔夜風險。4.**反手交易**:在價格反向突破時,策略會進行反手交易,這種設計有助于捕捉市場的快速反轉(zhuǎn)。5.**時間控制**:策略在特定的交易時間內(nèi)執(zhí)行,避免了非交易時間的無效操作。6.**代碼優(yōu)化**:策略代碼經(jīng)過優(yōu)化,增加了輔助函數(shù)來計算ATR值和移動平均值,提高了代碼的可讀性和效率。7.**全局變量**:使用全局變量記錄通道的上軌和下軌,便于在不同時間點進行比較和更新。8.**倉位管理**:每次交易固定手數(shù),簡化了倉位管理邏輯。9.**輔助函數(shù)**:策略中包含多個輔助函數(shù),用于計算交易時間、移動平均和ATR值,增強了策略的靈活性和可擴展性。10.**回測功能**:策略代碼中包含回測功能的調(diào)用,方便在歷史數(shù)據(jù)上進行性能評估??罩谢▓@策略是一種簡單粗暴的日內(nèi)交易策略,通過利用當天第一根K線信息來確定交易通道,并在特定條件下進行交易。該策略的設計思路清晰,邏輯簡單,易于理解和實現(xiàn)。通過限制開盤狀態(tài)和反手交易機制,策略旨在提高交易的贏面。同時,策略的日內(nèi)交易特性避免了隔夜風險,確保了交易的安全性。總體而言,空中花園策略是一種適合日內(nèi)交易的策略,適用于追求高贏面和低風險的交易者。代碼優(yōu)化并解釋:functionkzhy(freq)%獲取目標資產(chǎn)列表targetList=traderGetTargetList();%獲取賬戶句柄列表HandleList=traderGetHandleList();globalupline;%定義全局變量,記錄通道上軌globaldnline;%定義全局變量,記錄通道下軌%初始化通道上下軌ifisempty(upline)||isempty(dnline)upline=zeros(length(targetList),1);dnline=zeros(length(targetList),1);endfork=1:length(targetList)%獲取當前資產(chǎn)的倉位信息[marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(k).Market,targetList(k).Code);%定義策略參數(shù)lags=40;%K線數(shù)據(jù)長度dlags=31;%日K線數(shù)據(jù)長度barnum=traderGetCurrentBar(targetList(k).Market,targetList(k).Code);%如果當前bar數(shù)小于lags,則跳過當前循環(huán)if(barnum<lags)continue;end%獲取分鐘K線和日K線數(shù)據(jù)[time,open,high,low,close,volume,~,~]=traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq,-lags,0,false,'FWard');[Dtime,Dopen,Dhigh,Dlow,Dclose,Dvolume,~,~]=traderGetKData(targetList(k).Market,targetList(k).Code,'day',1,-dlags,0,false,'FWard');%確保獲取到足夠的K線數(shù)據(jù)iflength(close)<lags||length(Dclose)<dlagscontinue;end%計算交易時間條件cont=checkTradingTime(time);%根據(jù)時間條件和價格突破情況設置交易信號iffloor(time(end))~=floor(time(end-1))&&contupline(k)=max(Dhigh(end),upline(k));%更新上軌dnline(k)=min(Dlow(end),dnline(k));%更新下軌endbuycon=close(end)>upline(k)&&cont;%突破上軌做多sellshortcon=close(end)<dnline(k)&&cont;%突破下軌做空%交易單位設置shareNum=10;%根據(jù)信號和當前倉位執(zhí)行交易操作ifmarketposition==0%如果當前無倉位ifbuycontraderBuy(HandleList(1),targetList(k).Market,targetList(k).Code,shareNum,0,'market','buy');elseifsellshortcontraderSellShort(HandleList(1),targetList(k).Market,targetList(k).Code,shareNum,0,'market','sellshort');endend%平倉邏輯ifcont~=0ifmarketposition>0&&sellshortcon%多頭平倉traderPositionTo(HandleList(1),targetList(k).Market,targetList(k).Code,0,0,'market','sell');elseifmarketposition<0&&buycon%空頭平倉traderPositionTo(HandleList(1),targetList(k).Market,targetList(k).Code,0,0,'market','sell');endend%日內(nèi)交易平倉ifcont==0traderPositionTo(HandleList(1),targetList(k).Market,targetList(k).Code,0,0,'market','sell');endendend%輔助函數(shù),計算ATR值functionATRValue=ATR(High,Low,Close,Length)ATRValue=zeros(length(High),1);TRValue=zeros(length(High),1);TRValue(2:end)=max([High(2:end)-Low(2:end);abs(High(2:end)-Close(1:end-1));abs(Low(2:end)-Close(1:end-1))],[],2);ATRValue=MA(TRValue,Length);end%輔助函數(shù),計算移動平均值functionMAValue=MA(Price,Length)MAValue=zeros(length(Price),1);fori=Length:length(Price)MAValue(i)=sum(Price(i-Length+1:i))/Length;end%處理邊界情況,將初始值設置為初始價格MAValue(1:Length-1)=Price(1:Length-1);end%檢查交易時間的輔助函數(shù)functioncont=checkTradingTime(time)gettime=datevec(time);numtime=gettime(end,4)*100+gettime(end,5);cont=0;if(numtime>=900&&numtime<1400)||(numtime>=2100&&numtime<=2400)||(numtime>0&&numtime<100)cont=1;endend%測試代碼,用于執(zhí)行策略函數(shù)clearclc;%定義目標合約和頻率targetList(1).Market='CFFEX';targetList(1).Code='IF0000';freq=3;%執(zhí)行策略函數(shù)kzhy(freq);下為原代碼:functionkzhy(freq)%targetList=traderGetTargetList();%獲取目標資產(chǎn)信息HandleList=traderGetHandleList();%獲取賬戶句柄globalupline;globaldnline;ifisempty(upline)||isempty(dnline)upline=zeros(length(targetList),1);%記錄今天通道的上軌dnline=zeros(length(targetList),1);%記錄今天通道的下軌endfork=1:length(targetList);%--------------------倉位、K線、當前bar的提取-----------------------------%%獲取當前倉位[marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(k).Market,targetList(k).Code);%策略中每次取數(shù)據(jù)的長度lags=40;dlags=31;barnum=traderGetCurrentBar(targetList(k).Market,targetList(k).Code);%數(shù)據(jù)長度限制if(barnum<lags)continue;end%獲取K線數(shù)據(jù)[time,open,high,low,close,volume,~,~]=traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq,0-lags,0,false,'FWard');[Dtime,Dopen,Dhigh,Dlow,Dclose,Dvolume,~,~]=traderGetKData(targetList(k).Market,targetList(k).Code,'day',1,0-dlags,0,false,'FWard');iflength(close)<lags||length(Dclose)<dlagscontinue;end;%---------------------止損/入場條件計算------------------------------------%%計算出場時間gettime=datevec(time);numtime=gettime(end,4)*100+gettime(end,5);cont=0;ifnumtime>=0900&&numtime<1400||numtime>=2100&&numtime<=2400||numtime>0000&&numtime<0100cont=1;endiffloor(time(end))~=floor(time(end-1))ifopen(end)>Dopen(end-1)||open(end)<Dopen(end-1)*0.99upline=Dhigh(end);dnline=Dlow(end);endendbuycon=close(end)>upline&&cont;%突破range上軌道做多(每天只做一手)sellshortcon=close(end)<dnline&&cont;%突破range下軌道做空(每天只做一手)shareNum=10;%--------------------------------------倉位操作-----------------%%-----------------入場--------------------------%ifmarketposition==0ifbuycontraderBuy(HandleList(1),targetList(k).Market,targetList(k).Code,shareNum,0,'market','buy');%開多單elseifsellshortcontraderSellShort(HandleList(1),targetList(k).Market,targetList(k).Code,shareNum,0,'market','sellshort');%開空單endendifcont~=0%------------------------------多頭出場----------------------------%ifmarketposition>0ifsellshortcontraderPositionTo(HandleList(1),targetList(k).Market,targetList(k).Code,0,0,'market','sell');endendifmarketposition<0ifbuycontraderPositionTo(HandleList(1),targetList(k).Market,targetList(k).Code,0,0,'market','sell');endendend%-------------------------------------------------------------日內(nèi)平倉-----------------------------------%ifcont==0traderPositionTo(HandleList(1),targetList(k).Market,targetList(k).Code,0,0,'market','sell');endendendfunctionATRValue=ATR(High,Low,Close,Length)ATRValue=zeros(length(High),1);TRValue=zeros(length(High),1);TRValue(2:end)=max([High(2:end)-Low(2:end)abs

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論