RSl摆动交易策略(TS版)_第1页
RSl摆动交易策略(TS版)_第2页
RSl摆动交易策略(TS版)_第3页
RSl摆动交易策略(TS版)_第4页
RSl摆动交易策略(TS版)_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

RSl摆动策略(TS版)这里详细介绍三个技术指标及其在交易策略中的应用。这些指标和策略共同构成了一个完整的交易体系,旨在通过多种技术分析工具来提高交易决策的准确性和效率。指标一:JB_Volatility功能:该指标用于计算多头交易信号的关键参数,包括最低低点、长期ATR(平均真实范围)、多头入场点、多头止损点和多头利润目标点。交易逻辑:1.最低低点:计算过去一段时间内的最低点。2.长期ATR:计算长期平均真实范围。3.多头入场点:基于最低点和长期ATR计算得出。4.多头止损点:基于最高价和长期ATR计算得出。5.多头利润目标点:基于历史高价和长期ATR计算得出。策略特点:-提供了明确的入场、止损和利润目标点,帮助交易者控制风险并锁定利润。-适用于趋势跟踪策略,能够在市场波动较大时捕捉交易机会。指标二:JB_Screen功能:该指标用于在图表上绘制支撑和阻力线,通过计算新的摆动高和摆动低价格来识别潜在的支撑和阻力区域。交易逻辑:1.摆动价格:计算新的摆动高或摆动低价格。2.趋势线添加与更新:根据摆动价格的变化决定是添加新的趋势线还是更新现有的趋势线。3.趋势线回撤因子:根据回撤百分比确定趋势线的位置。4.趋势线年龄:显示趋势线的“年龄”,帮助交易者判断趋势的持续性。策略特点:-通过动态绘制支撑和阻力线,提供灵活的交易参考。-结合摆动价格的变化,能够及时捕捉市场的转折点。-趋势线年龄的显示有助于交易者评估趋势的强度和持续时间。指标三:JB_RSI_Cross功能:该指标基于RSI(相对强弱指数)值发出买入信号。交易逻辑:1.RSI值计算:计算过去一段时间内的RSI值。2.买入信号:当RSI值超过设定的阈值且收盘价大于过去一段时间的平均收盘价时,发出买入信号。策略特点:-结合RSI指标和平均收盘价,提供了更为稳健的买入信号。-适用于在上升趋势中寻找入场点,减少追高的风险。交易信号:JBVolatilityStrat功能:该策略信号结合了上述三个指标,用于生成买入和卖出信号。交易逻辑:1.市场位置判断:根据当前市场位置(多头或空头)决定交易方向。2.买入信号:结合RSI指标、周平均值和最低点,发出买入信号并设置止损和利润目标点。3.卖出信号:根据市场位置和止损点的变化,决定卖出时机。策略特点:-综合多种技术指标,提供了全面的市场分析。-通过设定明确的止损和利润目标点,有效控制交易风险。-适用于多种市场环境,能够在不同的市场趋势中捕捉交易机会。本策略通过详细解读三个技术指标及其在交易策略中的应用,展示了一个完整的交易体系。这些指标和策略不仅提供了丰富的市场分析工具,还通过明确的交易信号和风险控制措施,帮助交易者提高交易决策的准确性和效率。指标一代码解读:定义一个名为JB_Volatility的指标inputs://输入参数HighestHighRange(20),//最高价范围LowestLowRange(20),//最低价范围LongATR_Len(10),//长期ATR长度LongTrailLen(15),//长期跟踪长度LongProfitTargetLen(13);//长期利润目标长度variables://声明以下变量LowestLow(0),//最低低点LongATR(0),//长期ATR值EntryLong(0),//多头入场点LongStop(0),//多头止损点LongProfitTarget(0);//多头利润目标点LowestLow=Lowest(Low,LowestLowRange);//计算过去LowestLowRange个柱状图的最低低点LongATR=AvgTrueRange(LongATR_Len);//计算过去LongATR_Len个柱状图的长期ATR值EntryLong=LowestLow+2*LongATR;//计算多头入场点LongStop=Highest(H,LongTrailLen)-2*LongATR;//计算多头止损点LongProfitTarget=XAverage(High,LongProfitTargetLen)+2*LongATR;//计算多头利润目标点plot1(EntryLong,"Long");//在图表上绘制多头入场点plot2(LongStop,"LongStop");//在图表上绘制多头止损点Plot3(LongProfitTarget,"Target");//在图表上绘制多头利润目标点Plot4(LowestLow,"LowestL");//在图表上绘制最低低点该指标计算了多头交易信号的几个关键参数,包括最低低点、长期ATR、多头入场点、多头止损点和多头利润目标点。这些参数用于在图表上绘制多头交易信号的标记。指标二代码解读:定义一个名为JB_Screen的指标inputs://输入参数Price(Close),//使用收盘价作为输入RetracePct(5),//回撤百分比LineColor(Yellow),//线条颜色LineWidth(1),//线条宽度ShowAge(False),//是否显示年龄CS_Threshold(3);//CS阈值variables://声明以下变量NewSwingPrice(0),//新的摆动价格SwingPrice(Price),//摆动价格,作为方便的2元素数组SwingDate(Date),//摆动日期,作为方便的2元素数组SwingTime(Time),//摆动时间,作为方便的2元素数组TLDir(0),//TLDir=-1表示前一个趋势线下降,+1表示前一个趋势线上升RetraceFctrUp(1+RetracePct*.01),//上升回撤因子RetraceFctrDn(1-RetracePct*.01),//下降回撤因子SaveSwing(false),//是否保存摆动AddTL(false),//是否添加趋势线UpdateTL(false),//是否更新趋势线TLRef(0),//趋势线参考值Counter(0),//计数器ConsecutiveSwings(-1),//连续摆动计数器OldSwingLowPrice(0),//旧的摆动低价格SwingLowPrice(0),//摆动低价格OldSwingHighPrice(0),//旧的摆动高价格SwingHighPrice(0),//摆动高价格TokenCS(-1),//TokenCS值Age(0);//年龄{Candidateswingsarejust-confirmed,3-bar(Str=1),SwingHi'sandSwingLo's}//候选摆动是刚刚确认的,3条柱状图(Str=1),摆动高和摆动低NewSwingPrice=SwingHigh(1,Price,1,2);//计算新的摆动高价格ifNewSwingPrice<>-1then//如果新的摆动高价格不是-1begin//开始条件块ifTLDir<=0andNewSwingPrice>=SwingPrice*RetraceFctrUpthen//如果TLDir小于或等于0并且新的摆动高价格大于摆动价格乘以回撤因子begin//准备添加新的上升趋势线SaveSwing=true;//设置SaveSwing为真AddTL=true;//设置AddTL为真TLDir=1;//设置TLDir为1end//结束准备添加新的上升趋势线elseifTLDir=1andNewSwingPrice>=SwingPricethen//如果TLDir等于1并且新的摆动高价格大于摆动价格begin//准备更新前一个上升趋势线SaveSwing=true;//设置SaveSwing为真UpdateTL=true;//设置UpdateTL为真end;//结束准备更新前一个上升趋势线end;//结束如果新的摆动高价格不是-1的条件块else//如果新的摆动高价格是-1begin//开始条件块NewSwingPrice=SwingLow(1,Price,1,2);//计算新的摆动低价格ifNewSwingPrice<>-1then//如果新的摆动低价格不是-1begin//准备添加新的下降趋势线SaveSwing=true;//设置SaveSwing为真AddTL=true;//设置AddTL为真TLDir=-1;//设置TLDir为-1end//结束准备添加新的下降趋势线elseifTLDir=-1andNewSwingPrice<=SwingPricethen//如果TLDir等于-1并且新的摆动低价格小于或等于摆动价格begin//准备更新前一个下降趋势线SaveSwing=true;//设置SaveSwing为真UpdateTL=true;//设置UpdateTL为真end;//结束准备更新前一个下降趋势线end;//结束如果新的摆动低价格不是-1的条件块end;//结束如果新的摆动高价格是-1的条件块以上代码用于在图表上绘制支撑和阻力线。它通过计算新的摆动高和摆动低价格来识别潜在的支撑和阻力区域。如果新的摆动高价格大于摆动价格乘以上升回撤因子,它将准备添加新的上升趋势线。如果新的摆动低价格小于或等于摆动价格乘以下降回撤因子,它将准备添加新的下降趋势线。如果新的摆动高价格小于或等于摆动价格,它将准备更新前一个上升趋势线。如果新的摆动低价格大于或等于摆动价格,它将准备更新前一个下降趋势线。最后,它在图表上绘制了这些趋势线。ifSaveSwingthen//如果SaveSwing为真{savenewswingandresetSaveSwing}beginSwingPrice=NewSwingPrice;//保存新的摆动价格SwingDate=Date[1];//保存新的摆动日期SwingTime=Time[1];//保存新的摆动时间SaveSwing=false;//重置SaveSwing为假end;//结束保存新的摆动价格ifAddTLthen//如果AddTL为真{addnewTLandresetAddTL}beginTLRef=TL_New(SwingDate,SwingTime,SwingPrice,SwingDate[1],SwingTime[1],SwingPrice[1]);//添加新的趋势线ifSwingPrice>SwingPrice[1]then//如果新的摆动高价格大于旧的摆动高价格begin{newswingLowlockedinplace}OldSwingLowPrice=SwingLowPrice;//保存旧的摆动低价格SwingLowPrice=SwingPrice[1];//设置新的摆动低价格ifSwingLowPrice>OldSwingLowPricethenConsecutiveSwings=ConsecutiveSwings+1//连续摆动计数器增加elseConsecutiveSwings=0;//否则重置连续摆动计数器endelseifSwingPrice<SwingPrice[1]then//如果新的摆动高价格小于旧的摆动高价格begin{Newswinghighlockedinplace}OldSwingHighPrice=SwingHighPrice;//保存旧的摆动高价格SwingHighPrice=SwingPrice[1];//设置新的摆动高价格ifSwingHighPrice>OldSwingHighPricethenConsecutiveSwings=ConsecutiveSwings+1//连续摆动计数器增加elseConsecutiveSwings=0;//否则重置连续摆动计数器end;TokenCS=ConsecutiveSwings;//设置TokenCS为连续摆动计数器TL_SetExtLeft(TLRef,false);//设置趋势线的左延伸为假TL_SetExtRight(TLRef,false);//设置趋势线的右延伸为假TL_SetSize(TLRef,LineWidth);//设置趋势线的宽度TL_SetColor(TLRef,LineColor);//设置趋势线的颜色AddTL=false;//重置AddTL为假end;//结束添加新的趋势线elseifUpdateTLthen//如果UpdateTL为真{updateprevTLandresetUpdateTL}beginTL_SetEnd(TLRef,SwingDate,SwingTime,SwingPrice);//更新趋势线的结束点UpdateTL=false;//重置UpdateTL为假end;//结束更新趋势线ifClose[1]<SwingHighPriceandClose>SwingHighPriceandTokenCS=ConsecutiveSwingsthen//如果当前收盘价小于摆动高价格且大于摆动高价格,并且TokenCS等于连续摆动计数器TokenCS=TokenCS+1;//增加TokenCSifClose<SwingPrice*(1-RetracePct/100)andClose[1]>SwingPrice*(1-RetracePct/100)andSwingPrice<SwingHighPricethen//如果当前收盘价小于摆动高价格的1-RetracePct/100倍,并且上一个收盘价大于这个值,并且摆动高价格小于摆动低价格TokenCS=0;//重置TokenCSifTokenCS>=0then//如果TokenCS大于或等于0Plot1(TokenCS,"Swings");//在图表上绘制TokenCSifShowAgeandTokenCS>=CS_ThresholdandTokenCS[1]<CS_Thresholdthen//如果显示年龄并且TokenCS大于或等于CSifTokenCS>=CS_ThresholdthenAge=Age+1;//如果TokenCS大于或等于CS_Threshold,增加AgeelseifTokenCS=0thenAge=9999;//如果TokenCS等于0,设置Age为9999ifShowAgethenplot2(Age,"Age");//如果显示年龄,在图表上绘制Age//注:代码中的CS_Threshold和ShowAge是指标的输入参数,分别用于确定趋势线何时开始显示年龄,以及是否显示年龄。以上代码继续处理JB_Screen指标中与趋势线相关的逻辑。它首先检查是否需要保存新的摆动价格,如果是,则保存并重置SaveSwing。然后,它检查是否需要添加新的趋势线,如果是,则添加趋势线并处理与摆动高价格相关的逻辑,包括更新旧的摆动高价格、设置新的摆动高价格,以及更新连续摆动计数器。如果需要更新前一个趋势线,则执行更新操作。接下来,代码检查当前收盘价与摆动高价格的关系,以及TokenCS是否等于连续摆动计数器,以此来决定是否增加TokenCS的值。如果TokenCS大于或等于CS_Threshold,则增加Age的值;如果TokenCS等于0,则设置Age为9999。最后,如果显示年龄的选项被启用,则在图表上绘制Age值。用来表示趋势线的年龄或使用寿命。指标三代码解读:定义一个名为JB_RSI_Cross的指标inputs://输入参数EntryThreshold(30),//RSI值超过此阈值时发出买入信号RSI_Length(7);//RSI计算的周期长度Value1=RSI(close,RSI_Length);//计算过去RSI_Length个柱状图的收盘价的RSI值ifValue1crossesoverEntryThresholdandClose>Average(Close,34*5)then//如果RSI值超过EntryThreshold并且收盘价大于过去34*5个柱状图的收盘价的平均值Plot1(Close);//在图表上绘制收盘价该指标计算了过去RSI_Length个柱状图的收盘价的RSI值。如果这个RSI值超过了EntryThreshold并且收盘价大于过去34*5个柱状图的收盘价的平均值,它会发出一个买入信号,并在图表上绘制收盘价。这是一个交易策略的一部分,用于在特定的市场条件下触发买入操作。策略信号代码解读:JBVolatilityStrat定义一个名为JBVolatilityStrat的交易信号inputs://输入参数HighestHighRange(20),//最高价范围LowestLowRange(20),//最低价范围LongATR_Len(10),//长期ATR长度LongTrailLen(15),//长期跟踪长度LongProfitTakerLen(13),//长期利润目标长度WeeklyAverageLength(34),//周平均长度RSIEntryThreshold(30),//RSI入场阈值RSI_Length(7),//RSI计算的周期长度RSISignalLen(10),//RSI信号长度RecentLowLen(3);//近期低点长度variables://声明以下变量LowestLow(0),//最低低点LongATR(0),//长期ATR值EntryLong(0),//多头入场点LongStop(0),//多头止损点LongProfitTarget(0),//多头利润目标点WeeklyAverage(0),//周平均值RSISignalCounter(0),//RSI信号计数器MP(0),//市场位置ImmedStop(0),//立即止损点LongStopCrossed(False),//长止损是否穿越MaxLongStop(0);//最大长止损点Value1=RSI(close,RSI_Length);//计算过去RSI_Length个柱状图的收盘价的RSI值ifValue1crossesoverRSIEntryThresholdand//如果RSI值超过RSIEntryThresholdClose>Average(Close,34*5)and//并且收盘价大于过去34*5个柱状图的收盘价的平均值MarketPosition=0//并且市场位置为0(未持有多头头寸)thenRSISignalCounter=0;//重置RSI信号计数器RSISignalCounter=RSISignalCounter+1;//增加RSI信号计数器WeeklyAverage=Average(Close,WeeklyAverageLength*5);//计算周平均值LowestLow=Lowest(Low,LowestLowRange);//计算最低低点LongATR=AvgTrueRange(LongATR_Len);//计算长期ATR值EntryLong=LowestLow+2*LongATR;//计算多头入场点LongStop=Highest(H,LongTrailLen)-2*LongATR;//计算多头止损点LongProfitTarget=XAverage(High,LongProfitTakerLen)+2*LongATR;//计算多头利润目标点MP=MarketPosition;//获取当前市场位置ifMP=0then//如果市场位置为0(未持有多头头寸)beginLongStopCrossed=False;//设置长止损是否穿越为假MaxLongStop=LongStop;//设置最大长止损点为当前长止损点endelseifLongStop>MaxLongStopthen//如果新的长止损点大于当前最大长止损点MaxLongStop=LongStop;//更新最大长止损点ifClose>WeeklyAverageand//如果收盘价大于周平均值MarketPosition=0and//并且市场位置为0(未持有多头头寸)WeeklyAverage>WeeklyAverage[5]and//并且周平均值大于5周期前的周平均值RSISignalCounter<RSISignalLen//并且RSI信号计数器小于RSISignalLenthenbeginBuynextbaratEntryLongstop;//在下一个柱状图以EntryLong止损买入Sell("LowestLow")nextbaratLowest(Low,RecentLowLen)stop;//在下一个柱状图以近期最低点止损卖出Sell("ProfitTarget#1")nextbaratLongProfitTargetlimit;//在下一个柱状图以LongProfitTarget限价卖出end;ifMP[1]=0andMP=1then//如果前一个柱状图的市场位置为0且当前市场位置为1(从空头转为多头)beginRSISignalCounter=RSISignalLen;//设置RSI信号计数器为RSISignalLenImmedStop=Lowest(Low,RecentLowLen+1);//设置立即止损点为近期最低点加1end;ifMarketPosition=1and//如果市场位置为1(持有多头头寸)Close[1]<MaxLongStopand//并且上一个柱状图的收盘价小于最大长止损点Close>=MaxLongStopand//并且当前收盘价大于等于最大长止损点LongStopCrossed=False//并且长止损是否穿越为假thenLongStopCrossed=True;//设置长止损是否穿越为真ifMarketPosition=1and//如果市场位置为1(持有多头头寸)Close<MaxLongStopand//并且当前收盘价小于最大长止损点Close[1]<MaxLongStopand//并且上一个柱状图的收盘价小于最大长止损点LongStopCrossed//并且长止损是否穿越为真thenSell("LongVolStop")nextbarmarket;//在下一个柱状图以市价卖出elseifMarketPosition=1then//如果市场位置为1(持有多头头寸)Sell("ImmedStop")nextbaratImmedStopstop;//在下一个柱状图以ImmedStop止损卖出ifMarketPosition=1then//如果市场位置为1(持有多头头寸)SellnextbaratLongProfitTargetlimit;//在下一个柱状图以LongProfitTarget限价卖出以上代码定义了一个交易信号,用于在满足特定条件时发出买入和卖出的交易信号。它首先计算过去RSI_Length个柱状图的收盘价的RSI值。如果这个RSI值超过了RSIEntryThreshold并且收盘价大于过去34*5个柱状图的收盘价的平均值,它会生成一个买入信号,并设置相关的参数,如多头入场点、止损点和利润目标点。接着,如果当前市场位置为0(未持有多头头寸)并且其他条件满足,它会发出买入信号,并设置相关的止损和利润目标点。如果当前市场位置为1(持有多头头寸),它会根据当前和上一个柱状图的收盘价以及长止损是否穿越来决定是否卖出。最后,如果当前市场位置为1,它会根据LongProfitTarget来设置卖出信号。指标一代码:inputs:HighestHighRange(20),LowestLowRange(20),LongATR_Len(10),LongTrailLen(15),LongProfitTargetLen(13);variables:LowestLow(0),LongATR(0),EntryLong(0),LongStop(0),LongProfitTarget(0);LowestLow=Lowest(Low,LowestLowRange);LongATR=AvgTrueRange(LongATR_Len);EntryLong=LowestLow+2*LongATR;LongStop=Highest(H,LongTrailLen)-2*LongATR;LongProfitTarget=XAverage(High,LongProfitTargetLen)+2*LongATR;plot1(EntryLong,"Long");plot2(LongStop,"LongStop");Plot3(LongProfitTarget,"Target");Plot4(LowestLow,"LowestL");指标二代码:inputs:Price(Close),RetracePct(5),LineColor(Yellow),LineWidth(1),ShowAge(False),CS_Threshold(3);variables:NewSwingPrice(0),SwingPrice(Price),SwingDate(Date),SwingTime(Time),TLDir(0),RetraceFctrUp(1+RetracePct*.01),RetraceFctrDn(1-RetracePct*.01),SaveSwing(false),AddTL(false),UpdateTL(false),TLRef(0),Counter(0),ConsecutiveSwings(-1),OldSwingLowPrice(0),SwingLowPrice(0),OldSwingHighPrice(0),SwingHighPrice(0),TokenCS(-1),Age(0);NewSwingPrice=SwingHigh(1,Price,1,2);ifNewSwingPrice<>-1thenbeginifTLDir<=0andNewSwingPrice>=SwingPrice*RetraceFctrUpthenbeginSaveSwing=true;AddTL=true;TLDir=1;endelseifTLDir=1andNewSwingPrice>=SwingPricethenbeginSaveSwing=true;UpdateTL=true;end;endelsebeginNewSwingPrice=SwingLow(1,Price,1,2);ifNewSwingPrice<>-1thenbeginifTLDir>=0andNewSwingPrice<=SwingPrice*RetraceFctrDnthenbeginSaveSwing=true;AddTL=true;TLDir=-1;endelseifTLDir=-1andNewSwingPrice<=SwingPricethenbeginSaveSwing=true;UpdateTL=true;end;end;end;ifSaveSwingthenbeginSwingPrice=NewSwingPrice;SwingDate=Date[1];SwingTime=Time[1];SaveSwing=false;end;ifAddTLthenbeginTLRef=TL_New(SwingDate,SwingTime,SwingPrice,SwingDate[1],SwingTime[1],SwingPrice[1]);ifSwingPrice>SwingPrice[1]thenbeginOldSwingLowPrice=SwingLowPrice;SwingLowPrice=SwingPrice[1];ifSwingLowPrice>OldSwingLowPricethenConsecutiveSwings=ConsecutiveSwings+1elseConsecutiveSwings=0;endelseifSwingPrice<SwingPrice[1]thenbeginOldSwingHighPrice=SwingHighPrice;SwingHighPrice=SwingPrice[1];ifSwingHighPrice>OldSwingHighPricethenConsecutiveSwings=ConsecutiveSwings+1elseConsecutiveSwings=0;end;TokenCS=ConsecutiveSwings;TL_SetExtLeft(TLRef,false);TL_SetExtRight(TLRef,false);TL_SetSize(TLRef,LineWidth);TL_SetColor(TLRef,LineColor);AddTL=false;endelseifUpdateTLthenbeginTL_SetEnd(TLRef,SwingDate,SwingTime,SwingPrice);UpdateTL=false;end;ifClose[1]<SwingHighPriceandClose>SwingHighPriceandTokenCS=consecutiveswingsthenTokenCS=TokenCS+1;ifClose<SwingPrice*(1-RetracePct/100)andClose[1]>SwingPrice*(1-RetracePct/100)andSwingPrice<SwingHighPricethenTokenCS=0;ifTokenCS>=0thenPlot1(TokenCS,"Swings");ifShowAgeandTokenCS>=CS_ThresholdandTokenCS[1]<CS_ThresholdthenbeginAge=0;end;ifTokenCS>=CS_ThresholdthenAge=Age+1elseifTokenCS=0thenAge=9999;ifShowagethenplot2(Age,"Age");指标三代码:inputs:EntryThreshold(30),RSI_Length(7);Value1=RSI(close,RSI_Length);ifValue1crossesoverEntryThresholdandClose>Average(Close,34*5)thenPlot1(Close);策略信号代码:inputs:HighestHighRange(20),LowestLowRange(20),LongATR_Len(10),LongTrailLen(15),LongProfitTakerLen(13),WeeklyAverageLength(34),RSIEntryThreshold(30),RSI_Length(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论