




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多空动态管理策略(MC版)一个基于ATR(AverageTrueRange,平均真实波幅)指标的交易策略模块,该模块旨在管理多头和空头仓位,并通过动态调整止损点来实现风险控制和利润增长。策略的核心思想是利用ATR作为动态跟踪止损的基础,通过设定特定的条件来决定何时更新止损点和何时平仓。策略概述该策略分为两个主要部分:ATR-RATCHET多单模块和ATR-RATCHET空单模块,分别用于管理多头和空头仓位。此外,还有两个辅助模块:多头持仓管理模块和空头持仓管理模块,用于进一步优化持仓管理过程。ATR-RATCHET多单模块入场和初始设置-入场条件:策略未明确给出入场条件,但假设在满足某些条件时,`marketposition`会被设置为1,表示持有多头仓位。-初始设置:当`barssinceentry`等于0时(即入场后的第一根K线),将`tp`(入场后的最高价格)设置为入场价格。跟踪止损逻辑-更新最高价跟踪:如果当前K线的高价高于`tp`,则更新`tp`。-计算利润空间:`spacep`表示从入场价格到当前最高价的利润空间。-初始成本和止损线设置:当利润空间首次超过1倍ATR时,使用过去`m2`根K线中的最低价作为初始成本`inicost`,并记录当前K线编号`barn`。同时,在图表上标记开始跟踪止损的位置。-动态调整止损线:当利润空间持续超过1倍ATR时,根据入场后的K线数量、步长和ATR值计算跟踪止损的移动量`ratchet`,并据此更新止损线`stopline`。在下一根K线以止损线价格卖出平仓。-超时平仓:如果持仓周期超过`maxperiod`且利润没有超过1倍ATR,则在下一根K线以市价卖出平仓。辅助功能-删除止损线:当`marketposition`变为0(即平仓)时,删除之前绘制的止损线。ATR-RATCHET空单模块空单模块的逻辑与多单模块类似,但方向相反:-入场和初始设置:当`barssinceentry`等于0时,将`tp`(入场后的最低价格)设置为入场价格。-跟踪止损逻辑:如果当前K线的低价低于`tp`,则更新`tp`。计算利润空间`spacep`,当利润空间首次超过1倍ATR时,使用过去`m2`根K线中的最高价作为初始成本`inicost`,并记录当前K线编号`barn`。在图表上标记开始跟踪止损的位置。当利润空间持续超过1倍ATR时,根据入场后的K线数量、步长和ATR值计算跟踪止损的移动量`ratchet`,并据此更新止损线`stopline`。在下一根K线以止损线价格买入平仓。如果持仓周期超过`maxperiod`且利润没有超过1倍ATR,则在下一根K线以市价买入平仓。-辅助功能:当`marketposition`变为0时,删除之前绘制的止损线。多头持仓管理模块多头持仓管理模块的逻辑与多单模块类似,但增加了对持仓周期的管理:-更新最高价跟踪:如果当前K线的高价高于`tp`,则更新`tp`。-计算利润空间:`spacep`表示从入场价格到当前最高价的利润空间。-初始成本和止损线设置:当利润空间首次超过1倍ATR时,使用过去`m2`根K线中的最低价作为初始成本`inicost`,并记录当前K线编号`barn`。在图表上标记开始跟踪止损的位置。-动态调整止损线:当利润空间持续超过1倍ATR时,根据入场后的K线数量、步长和ATR值计算跟踪止损的移动量`ratchet`,并据此更新止损线`stopline`。在下一根K线以止损线价格卖出平仓。-超时平仓:如果持仓周期超过`maxperiod`且利润没有超过1倍ATR,则在下一根K线以市价卖出平仓。-**辅助功能**:当`marketposition`变为0时,删除之前绘制的止损线。空头持仓管理模块空头持仓管理模块的逻辑与空单模块类似,但增加了对持仓周期的管理:-入场和初始设置:当`barssinceentry`等于0时,将`tp`(入场后的最低价格)设置为入场价格。-跟踪止损逻辑:如果当前K线的低价低于`tp`,则更新`tp`。计算利润空间`spacep`,当利润空间首次超过1倍ATR时,使用过去`m2`根K线中的最高价作为初始成本`inicost`,并记录当前K线编号`barn`。在图表上标记开始跟踪止损的位置。当利润空间持续超过1倍ATR时,根据入场后的K线数量、步长和ATR值计算跟踪止损的移动量`ratchet`,并据此更新止损线`stopline`。在下一根K线以止损线价格买入平仓。如果持仓周期超过`maxperiod`且利润没有超过1倍ATR,则在下一根K线以市价买入平仓。-辅助功能:当`marketposition`变为0时,删除之前绘制的止损线。本策略通过结合ATR指标和动态跟踪止损机制,旨在实现有效的风险控制和利润增长。其核心优势在于能够根据市场波动自动调整止损点,从而在保护利润的同时,允许交易在有利的市场条件下继续发展。策略的灵活性和适应性使其适用于不同的市场环境,但同时也需要谨慎设置参数以避免过度交易或止损过于频繁。以下是ATR-RATCHET多单模块的逐行代码注解:Input:len(15),{ATR的初始周期}m1(0.05),{起始设置步长,乘以ATR值得到每根K线的移动量}m2(10),{用于计算初始成本的K线数量}maxperiod(20);{如果在这个K线数内利润没有超过1倍ATR,则退出}var:tp(0),{入场后的最高价格}spacep(0),{利润值点}inicost(0),{初始成本}ratchet(0),{跟踪止损的移动量}stopline(0),{止损线}barn(0);{记录开始跟踪止损的K线编号}value1=atr(len);{计算ATR值}ifbarssinceentry=0thenbegintp=entryprice;{如果刚入场,设置tp为入场价格}end;ifmarketposition=1thenbegin{如果持有多头仓位}ifbarssinceentry>=1thenbegin{如果入场后至少过去了一根K线}ifhigh>tpthentp=high;{如果当前K线的高价高于tp,则更新tp}end;spacep=tp-entryprice;{计算从入场价格到当前最高价的利润空间}ifspacep[1]<1*value1[1]andspacep>1*value1thenbegin{如果利润点从前一根K线的1倍ATR以下增加到超过1倍ATR,设置初始成本}inicost=Lowest(low,m2);{从过去m2根K线中找到最低价作为初始成本}barn=BarNumber;{记录当前K线编号}Value6=Text_New(Date,Time,High+10,"STARTRATCHET");{在图表上标记开始跟踪止损}end;ifspacep>1*value1thenbegin//STARTRATCHETMODEL{如果利润超过1倍ATR,开始跟踪止损模型}ratchet=barssinceentry*m1*value1;{计算跟踪止损的移动量}stopline=inicost+ratchet;{设置止损线}sell("ratchet-out1")allsharesnextbaratstoplinestop;{在下一根K线以止损线价格卖出平仓}ifBarNumber>barnthenbegin{如果当前K线编号大于记录的开始跟踪止损的K线编号}value2=tl_new(date[1],time[1],stopline[1],date,time,stopline);{绘制止损线}end;end;ifbarssinceentry>=maxperiodandspacep<1*value1thensell("time-out1")allsharesnextbaratmarket;{如果超过最大周期且利润没有超过1倍ATR,则市价卖出平仓}ifmarketposition=0thenTL_delete(value2);{如果已平仓,删除止损线}end;这段代码是一个用于管理多头仓位的交易策略模块,它使用ATR作为动态跟踪止损的基础。详细解释:-`Input`部分定义了策略的输入参数,包括ATR周期、起始步长、计算初始成本的K线数量以及最大周期。-`var`部分声明了用于策略计算的变量。-`value1=atr(len);`计算ATR值。-`ifbarssinceentry=0then...`检查是否为入场后的第一根K线,如果是,则设置`tp`为入场价格。-`ifmarketposition=1then...`如果持有多头仓位,执行以下逻辑:-更新`tp`为入场后的最高价。-计算利润空间`spacep`。-当利润空间首次超过1倍ATR时,设置初始成本`inicost`并标记开始跟踪止损。-当利润空间持续超过1倍ATR时,计算跟踪止损的移动量`ratchet`并设置止损线`stopline`。-如果超过最大周期`maxperiod`且利润没有超过1倍ATR,则以市价平仓。-`ifmarketposition=0thenTL_delete(value2);`如果已平仓,删除止损线。以下是ATR-RATCHET空单模块的逐行代码注解:Input:len(15),{ATR的初始周期}m1(0.05),{起始设置步长,乘以ATR值得到每根K线的移动量}m2(10),{用于计算初始成本的K线数量}maxperiod(20);{如果在这个K线数内利润没有超过1倍ATR,则退出}var:tp(0),{入场后的最低价格}spacep(0),{利润值点}inicost(0),{初始成本}ratchet(0),{跟踪止损的移动量}stopline(0),{止损线}barn(0);{记录开始跟踪止损的K线编号}value3=atr(len);//计算长度为len的ATR值ifbarssinceentry=0thenbegin//如果是入场后的第一根K线,进行初始化设置tp=entryprice;//将最低价跟踪设置为入场价格end;ifmarketposition=-1thenbegin//如果当前持有空头仓位ifbarssinceentry>=1thenbegin//如果入场后至少过去了一根K线iflow<tpthentp=low;//如果当前K线的低价低于最低价跟踪,则更新最低价跟踪end;spacep=entryprice-tp;//计算从入场价格到当前最低价跟踪的利润空间ifspacep[1]<1*value3[1]andspacep>1*value3thenbegin{找到利润点超过1*atr的K线,设置初始成本}//如果上一根K线的利润小于1倍ATR,而当前利润超过1倍ATR,则找到利润超过1倍ATR的K线,设置初始成本inicost=Highest(high,m2);//从过去m2根K线中找到最高价作为初始成本barn=BarNumber;//记录当前K线编号Value5=Text_New(Date,Time,High+10,"STARTRATCHET");//在图表上标记开始跟踪止损end;ifspacep>1*value3thenbegin//开始跟踪止损模型//如果利润空间持续超过1倍ATR,开始跟踪止损模型ratchet=barssinceentry*m1*value3;//计算跟踪止损的移动量,即K线数量乘以每根K线的步长乘以ATR值stopline=inicost-ratchet;//设置止损线为初始成本减去跟踪止损移动量buytocover("ratchet-out2")allsharesnextbaratstoplinestop;//在下一根K线以止损线价格买入平仓ifBarNumber>barnthenbeginvalue4=tl_new(date[1],time[1],stopline[1],date,time,stopline);//如果当前K线编号大于记录的开始跟踪止损的K线编号,则绘制止损线end;end;ifbarssinceentry>=maxperiodandspacep<1*value3thenbuytocover("time-out2")allsharesnextbaratmarket;//如果持仓周期超过最大周期且利润没有超过1倍ATR,则在下一根K线以市价买入平仓ifmarketposition=0thenTL_delete(value4);//如果已经平仓,删除止损线end;以上代码用于管理空头持仓,采用ATR作为跟踪止损的基础。以下是详细解释:-`Input`部分设置策略的输入参数。-`var`部分声明了策略中使用的变量。-`value3=atr(len);`计算ATR值。-`ifbarssinceentry=0then...`初始化设置,当入场后第一根K线时执行。-`ifmarketposition=-1then...`如果持有空头仓位,执行以下逻辑:-更新最低价跟踪`tp`。-计算利润空间`spacep`。-当利润首次超过1倍ATR时,设置初始成本`inicost`并标记开始跟踪止损。-当利润持续超过1倍ATR时,计算跟踪止损的移动量`ratchet`并设置止损线`stopline`。-如果持仓周期过长且利润未超过1倍ATR,则以市价平仓。-如果已经平仓,删除止损线。以下是多头持仓管理模块的逐行代码注解:Input:len(15),m1(0.05),m2(10),maxperiod(20);//输入参数:ATR周期、每根K线的跟踪止损步长、用于计算初始成本的K线数量、最大持有周期var:tp(0),spacep(0),inicost(0),ratchet(0),stopline(0),barn(0);//声明变量:最高价跟踪、利润空间、初始成本、跟踪止损移动量、止损线、记录开始跟踪止损的K线编号value1=atr(len);//计算长度为len的ATR值ifbarssinceentry=0thenbegin{initialset}//如果是入场后的第一根K线,进行初始化设置tp=entryprice;//将最高价跟踪设置为入场价格end;ifmarketposition=1thenbegin//如果当前持有多头仓位ifbarssinceentry>=1thenbegin//如果入场后至少过去了一根K线ifhigh>tpthentp=high;//如果当前K线的高价高于最高价跟踪,则更新最高价跟踪end;spacep=tp-entryprice;//计算从入场价格到当前最高价跟踪的利润空间ifspacep[1]<1*value1[1]andspacep>1*value1thenbegin{findthebarofprofitbiggerthan1*atr,startratchet}//如果上一根K线的利润小于1倍ATR,而当前利润超过1倍ATR,则找到利润超过1倍ATR的K线,开始跟踪止损inicost=Lowest(low,m2);//从过去m2根K线中找到最低价作为初始成本barn=BarNumber;//记录当前K线编号Value6=Text_New(Date,Time,High+10,"RATCHET");//在图表上标记开始跟踪止损end;ifspacep>1*value1thenbegin{startratchetmodel}//如果利润空间持续超过1倍ATR,开始跟踪止损模型ratchet=barssinceentry*m1*value1;//计算跟踪止损的移动量,即K线数量乘以每根K线的步长乘以ATR值stopline=inicost+ratchet;//设置止损线为初始成本加上跟踪止损移动量sell("ratchet-out1")allsharesnextbaratstoplinestop;//在下一根K线以止损线价格卖出平仓ifBarNumber>barn+1thenvalue2=tl_new(date[1],time[1],stopline[1],date,time,stopline);//如果当前K线编号大于记录的开始跟踪止损的K线编号加1,则绘制止损线end;ifbarssinceentry>=maxperiodandspacep<1*value1thensell("time-out1")allsharesnextbaratmarket;//如果持仓周期超过最大周期且利润没有超过1倍ATR,则在下一根K线以市价卖出平仓ifmarketposition=0thentl_delete(value2);//如果已经平仓,删除止损线end;这段代码用于管理多头持仓,采用ATR作为跟踪止损的基础。以下是详细解释:-`Input`部分设置策略的输入参数。-`var`部分声明了策略中使用的变量。-`value1=atr(len);`计算ATR值。-`ifbarssinceentry=0then...`初始化设置,当入场后第一根K线时执行。-`ifmarketposition=1then...`如果持有多头仓位,执行以下逻辑:-更新最高价跟踪`tp`。-计算利润空间`spacep`。-当利润首次超过1倍ATR时,设置初始成本`inicost`并标记开始跟踪止损。-当利润持续超过1倍ATR时,计算跟踪止损的移动量`ratchet`并设置止损线`stopline`。-如果持仓周期过长且利润未超过1倍ATR,则以市价平仓。-如果已经平仓,删除止损线。以下是空头持仓管理模块的逐行代码注解:Input:len(15),{ATR的初始周期}m1(0.05),{起始设置步长,乘以ATR值得到每根K线的移动量}m2(10),{用于计算初始成本的K线数量}maxperiod(20);{如果在这个K线数内利润没有超过1倍ATR,则退出}var:tp(0),{入场后的最高价格}spacep(0),{利润值点}inicost(0),{初始成本}ratchet(0),{跟踪止损的移动量}stopline(0),{止损线}barn(0);{记录开始跟踪止损的K线编号}value3=atr(len);//计算长度为len的ATR值ifbarssinceentry=0thenbegin//如果是入场后的第一根K线,进行初始化设置tp=entryprice;//将最高价格设置为入场价格end;ifmarketposition=-1thenbegin//如果当前持有空头仓位ifbarssinceentry>=1thenbegin//如果入场后至少过去了一根K线iflow<tpthentp=low;//如果当前K线的低价低于最高价格跟踪,则更新最高价格跟踪end;spacep=entryprice-tp;//计算从入场价格到当前最高价格跟踪的利润空间ifspacep[1]<1*value3[1]andspacep>1*value3thenbegin//如果上一根K线的利润小于1倍ATR,而当前利润超过1倍ATR,则找到利润超过1倍ATR的K线,设置初始成本inicost=Highest(high,m2);//从过去m2根K线中找到最高价作为初始成本barn=BarNumber;//记录当前K线编号Value5=Text_New(Date,Time,low-10,"RATCHET");//在图表上标记开始跟踪止损的位置end;ifspacep>1*value3thenbegin//开始跟踪止损模型//如果利润空间持续超过1倍ATR,开始跟踪止损模型ratchet=barssinceentry*m1*value3;//计算跟踪止损的移动量,即K线数量乘以每根K线的步长乘以ATR值stopline=inicost-ratchet;//设置止损线为初始成本减去跟踪止损移动量buytocover("ratchet-out2")allsharesnextbaratstoplinestop;//在下一根K线以止损线价格买入平仓ifBarNumber>barn+1thenbeginvalue4=tl_new(date[1],time[1],stopline[1],date,time,stopline);//如果当前K线编号大于记录的开始跟踪止损的K线编号加一,则绘制止损线end;end;ifbarssinceentry>=maxperiodandspacep<1*value3thenbuytocover("time-out2")allsharesnextbaratmarket;//如果持仓周期超过最大周期且利润没有超过1倍ATR,则在下一根K线以市价买入平仓ifmarketposition=0thenTL_delete(value4);//如果已经平仓,删除止损线end;这段代码用于管理空头持仓,采用ATR作为跟踪止损的基础。以下是详细解释:-`Input`部分设置策略的输入参数。-`var`部分声明了策略中使用的变量。-`value3=atr(len);`计算ATR值。-`ifbarssinceentry=0then...`初始化设置,当入场后第一根K线时执行。-`ifmarketposition=-1then...`如果持有空头仓位,执行以下逻辑:-更新最高价格跟踪`tp`。-计算利润空间`spacep`。-当利润首次超过1倍ATR时,设置初始成本`inicost`并标记开始跟踪止损。-当利润持续超过1倍ATR时,计算跟踪止损的移动量`ratchet`并设置止损线`stopline`。-如果持仓周期过长且利润未超过1倍ATR,则以市价平仓。-如果已经平仓,删除止损线。ATR-RATCHET多单模块代码:Input:len(15),m1(0.05),m2(10),maxperiod(20);var:tp(0),spacep(0),inicost(0),ratchet(0),stopline(0),barn(0);value1=atr(len);ifbarssinceentry=0thenbegintp=entryprice;end;ifmarketposition=1thenbeginifbarssinceentry>=1thenbeginifhigh>tpthentp=high;end;spacep=tp-entryprice;ifspacep[1]<1*value1[1]andspacep>1*value1thenbegininicost=Lowest(low,m2);barn=BarNumber;Value6=Text_New(Date,Time,High+10,"STARTRATCHET");end;ifspacep>1*value1thenbeginratchet=barssinceentry*m1*value1;{ratchetpoint}stopline=inicost+ratchet;{thestopline}sell("ratchet-out1")allsharesnextbaratstoplinestop;ifBarNumber>barnthenbeginvalue2=tl_new(date[1],time[1],stopline[1],date,time,stopline);end;end;ifbarssinceentry>=maxperiodandspacep<1*value1thensell("time-out1")allsharesnextbaratmarket;ifmarketposition=0thenTL_delete(value2);end;ATR-RATCHET空单模块:Input:len(15),m1(0.05),m2(10),maxperiod(20);var:tp(0),spacep(0),inicost(0),ratchet(0),stopline(0),barn(0);value3=atr(len);ifbarssinceentry=0thenbegintp=entryprice;end;ifmarketposition=-1thenbeginifbarssinceentry>=1thenbeginiflow<tpthentp=low;end;spacep=entryprice-tp;ifspacep[1]<1*value3[1]andspacep>1*value3thenbegininicost=Highest(high,m2);barn=BarNumber;Value5=Text_New(Date,Time,High+10,"STARTRATCHET");end;ifspacep>1*value3thenbeginratchet=barssinceentry*m1*value3;stopline=inicost-ratchet;buytocover("ratchet-out2")allsharesnextbaratstoplinestop;ifBarNumber>barnthenbeginvalue4=tl_new(date[1],time[1],stopline[1],date,time,stopline);end;end;ifbarssinceentry>=maxperiodandspacep<1*value3thenbuytocover("time-out2")allsharesnextbaratmarket;ifmarketposition=0thenTL_delete(value4);end;多头持仓管理模块:Input:len(15),m1(0.05),m2(10),maxperiod(20);var:tp(0),spacep(0),inicost(0),ratchet(0),stopline(0),barn(0);value1=atr(len);ifbarssinceentry=0thenbegintp=entryprice;end;ifmarketposition=1thenbeginifbarssinceentry>=1thenbeginifhigh>tpthentp=high;end;spacep=tp-entryprice;ifspacep[1]<1*value1[1]andspacep>1*value1thenbegininicost=Lowest(low,m2);barn=BarNumber;Value6=Text_New(Date
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 5612-2025铸铁牌号表示方法
- 企业合并过程中会计处理的关键问题试题及答案
- 微生物培养基的选择与准备试题及答案
- 项目管理中的多方协调考题及答案
- 2025年注册会计师考试深入探讨试题及答案
- 微生物抗感染药物的使用原则试题及答案
- 民警严以律己心得体会
- 注册会计师复习中常见问题试题及答案
- 产品开发的年度工作计划
- 2025年财务报告国际标准试题及答案
- 碎石外包合同协议
- 2025年第三届天扬杯建筑业财税知识竞赛题库附答案(1001-1536题)
- 2025科技辅导员培训
- 新疆维吾尔自治区2024年普通高校招生普通类国家及地方专项、南疆单列、对口援疆计划 本科一批次投档情况 (理工)
- 智研咨询发布:2025年纸浆模塑餐饮具行业市场规模及主要企业市占率分析报告
- 2025年CCAA《管理体系认证基础》考前必练题库500题(含真题、重点题)
- 中西融合餐厅的经营管理与团队建设
- 2025年智慧工程考试试题及答案
- 大宗商品供应链管理规范
- 企业与学院合作进行的教学内容更新研究
- 数字化人力资源管理的心得体会
评论
0/150
提交评论