版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
空中花园策略(Python版)交易逻辑1.**通道确定**:-通道的上轨和下轨仅根据当天第一根K线信息确定。-上轨=第一根K线的最高价。-下轨=第一根K线的最低价。2.**入场条件**:-价格突破上轨时,如果当天是高开或低开,则进行做多操作。-价格突破下轨时,如果当天是高开或低开,则进行做空操作。-如果当天不是高开或低开,则沿用上一次的通道。3.**出场条件**:-反手出场:即如果做多后价格突破下轨,则平仓并反手做空;如果做空后价格突破上轨,则平仓并反手做多。-收盘前主动出场:无论当前仓位如何,收盘前都会主动平仓。策略特点1.**简单直接**:策略的核心逻辑非常直观,仅依赖当天第一根K线信息来确定交易通道。2.**高赢面设计**:通过限制开盘状态,确保在特定条件下才进行交易,从而提高赢面。3.**日内交易**:策略设计为日内交易,收盘前无论盈亏都会主动平仓,避免了隔夜风险。4.**反手交易**:在价格反向突破时,策略会进行反手交易,这种设计有助于捕捉市场的快速反转。5.**时间控制**:策略在特定的交易时间内执行,避免了非交易时间的无效操作。6.**代码优化**:策略代码经过优化,增加了辅助函数来计算ATR值和移动平均值,提高了代码的可读性和效率。7.**全局变量**:使用全局变量记录通道的上轨和下轨,便于在不同时间点进行比较和更新。8.**仓位管理**:每次交易固定手数,简化了仓位管理逻辑。9.**辅助函数**:策略中包含多个辅助函数,用于计算交易时间、移动平均和ATR值,增强了策略的灵活性和可扩展性。10.**回测功能**:策略代码中包含回测功能的调用,方便在历史数据上进行性能评估。空中花园策略是一种简单粗暴的日内交易策略,通过利用当天第一根K线信息来确定交易通道,并在特定条件下进行交易。该策略的设计思路清晰,逻辑简单,易于理解和实现。通过限制开盘状态和反手交易机制,策略旨在提高交易的赢面。同时,策略的日内交易特性避免了隔夜风险,确保了交易的安全性。总体而言,空中花园策略是一种适合日内交易的策略,适用于追求高赢面和低风险的交易者。代码优化并解释:functionkzhy(freq)%获取目标资产列表targetList=traderGetTargetList();%获取账户句柄列表HandleList=traderGetHandleList();globalupline;%定义全局变量,记录通道上轨globaldnline;%定义全局变量,记录通道下轨%初始化通道上下轨ifisempty(upline)||isempty(dnline)upline=zeros(length(targetList),1);dnline=zeros(length(targetList),1);endfork=1:length(targetList)%获取当前资产的仓位信息[marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(k).Market,targetList(k).Code);%定义策略参数lags=40;%K线数据长度dlags=31;%日K线数据长度barnum=traderGetCurrentBar(targetList(k).Market,targetList(k).Code);%如果当前bar数小于lags,则跳过当前循环if(barnum<lags)continue;end%获取分钟K线和日K线数据[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线数据iflength(close)<lags||length(Dclose)<dlagscontinue;end%计算交易时间条件cont=checkTradingTime(time);%根据时间条件和价格突破情况设置交易信号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;%根据信号和当前仓位执行交易操作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%日内交易平仓ifcont==0traderPositionTo(HandleList(1),targetList(k).Market,targetList(k).Code,0,0,'market','sell');endendend%辅助函数,计算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%辅助函数,计算移动平均值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%检查交易时间的辅助函数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%测试代码,用于执行策略函数clearclc;%定义目标合约和频率targetList(1).Market='CFFEX';targetList(1).Code='IF0000';freq=3;%执行策略函数kzhy(freq);下为原代码:functionkzhy(freq)%targetList=traderGetTargetList();%获取目标资产信息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);%策略中每次取数据的长度lags=40;dlags=31;barnum=traderGetCurrentBar(targetList(k).Market,targetList(k).Code);%数据长度限制if(barnum<lags)continue;end%获取K线数据[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%-------------------------------------------------------------日内平仓-----------------------------------%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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游公司员工合同3篇
- 工业管道清洗服务协议3篇
- 携手共进新篇3篇
- 拨款委托书提高资金使用效率3篇
- 文艺演出艺术指导实施合同3篇
- 工程委托书模板3篇
- 房屋买卖合同版格式版格式3篇
- 精密仪器室防水施工合同
- 美容美发师派遣服务合同
- 城市社区服务中心员工合同样本
- 如何防止个人信息被盗用
- 2024-2025学年上学期深圳初中语文七年级期末模拟卷2
- 期末检测试卷(含答案)2024-2025学年数学五年级上册人教版
- 2023年上海商学院招聘笔试真题
- 标准2024项目投资协议书
- 中建幕墙高处防坠落专项方案方案
- 镁合金回收与再利用
- 浙江省杭州市拱墅区2023-2024学年六年级(上)期末数学试卷
- 2025蛇年元旦蛇年新年晚会模板
- 大学助农直播创业计划书
- MOOC 信号与系统-北京邮电大学 中国大学慕课答案
评论
0/150
提交评论