黄金形态通APP下载

低吸高抛策略:结合波动率ATR,提升交易收益

选股策略1年前 (2025-02-06)254
低吸高抛策略:结合波动率ATR,提升交易收益代码介绍以下代码由今日美股网(www.TodayUSStock.com)代码学院提供,低吸高抛策略是一个经典的波段交易方法,通过结合平均真实波幅(ATR)来确定买入和卖出点。ATR帮助估算市场的波动性,从而为交易者提供更科学的入场和离场点位,旨在提升交易收益。代码及加载方法同花顺// 计算ATR ATR...

低吸高抛策略:结合波动率ATR,提升交易收益

低吸高抛策略:结合波动率ATR,提升交易收益

代码介绍

以下代码由今日美股网(www.TodayUSStock.com)代码学院提供,低吸高抛策略是一个经典的波段交易方法,通过结合平均真实波幅(ATR)来确定买入和卖出点。ATR帮助估算市场的波动性,从而为交易者提供更科学的入场和离场点位,旨在提升交易收益。

代码及加载方法

同花顺

// 计算ATR
ATR:=MA(ABS(HIGH-LOW),14); // 14日ATR

// 定义买入条件(低吸)
BUY:=CLOSEMA(CLOSE,20)+2*ATR; // 收盘价高于20日均线加上2倍ATR

// 返回结果
RETURN BUY OR SELL;

加载方法: 将代码复制粘贴到同花顺的"选股公式编辑器"中,命名为"低吸高抛策略",然后保存并运行。

东方财富

// 计算ATR
ATR:=MA(ABS(HIGH-LOW),14); // 14日ATR

// 定义买入条件(低吸)
BUY:=CLOSEMA(CLOSE,20)+2*ATR; // 收盘价高于20日均线加上2倍ATR

// 返回结果
RETURN BUY OR SELL;

加载方法: 复制代码到东方财富通"自定义指标"编辑器中,保存并应用到选股条件中。

通达信

// 计算ATR
ATR:=MA(ABS(HIGH-LOW),14); // 14日ATR

// 定义买入条件(低吸)
BUY:=CLOSEMA(CLOSE,20)+2*ATR; // 收盘价高于20日均线加上2倍ATR

// 返回结果
RETURN BUY OR SELL;

加载方法: 在通达信软件中,进入"公式管理器",选择"新建公式",粘贴代码后保存并使用。

大智慧

// 计算ATR
ATR:=MA(ABS(HIGH-LOW),14); // 14日ATR

// 定义买入条件(低吸)
BUY:=CLOSEMA(CLOSE,20)+2*ATR; // 收盘价高于20日均线加上2倍ATR

// 返回结果
RETURN BUY OR SELL;

加载方法: 进入大智慧的"指标管理",创建新指标,粘贴代码后保存使用。

MetaStock

// 计算ATR
ATR:=Mov(Abs(HIGH-LOW),14,S); // 14日ATR

// 定义买入条件(低吸)
BUY:=CLOSEMov(CLOSE,20,S)+2*ATR; // 收盘价高于20日均线加上2倍ATR

// 返回结果
RETURN BUY OR SELL;

加载方法: 在MetaStock中,进入"Indicator Builder",新建指标,输入代码并保存。

NinjaTrader

using System;
using NinjaTrader.NinjaScript;

public class LowBuyHighSellATR : Indicator
{
    protected override void OnStateChange()
    {
        if (State == State.SetDefaults)
        {
            Description = "Low Buy High Sell with ATR";
            Name = "LowBuyHighSellATR";
            Calculate = Calculate.OnBarClose;
            IsOverlay = false;
            IsSuspendedWhileInactive = true;
        }
    }

    protected override void OnBarUpdate()
    {
        double atr = ATR(14)[0];
        double ma20 = SMA(CLOSE, 20)[0];
        
        bool buy = CLOSE[0] < ma20 - 2 * atr; // 低吸条件
        bool sell = CLOSE[0] > ma20 + 2 * atr; // 高抛条件
        
        PlotNewValue("BuySellSignal", buy || sell ? 1 : 0);
    }
}

加载方法: 打开NinjaTrader,进入"NinjaScript Editor",新建Indicator,粘贴代码并编译。

eSignal

// 计算ATR
ATR:=MA(ABS(HIGH-LOW),14); // 14日ATR

// 定义买入条件(低吸)
BUY:=CLOSEMA(CLOSE,20)+2*ATR; // 收盘价高于20日均线加上2倍ATR

// 返回结果
RETURN BUY OR SELL;

加载方法: 在eSignal中,进入"Formula Editor",新建公式,粘贴代码并保存。

Tradingview

//@version=4
study("Low Buy High Sell with ATR", shorttitle="LBHS_ATR", overlay=false)

// 计算ATR
atr = atr(14)

// 定义买入条件(低吸)
buy = close < sma(close, 20) - 2 * atr // 收盘价低于20日均线减去2倍ATR

// 定义卖出条件(高抛)
sell = close > sma(close, 20) + 2 * atr // 收盘价高于20日均线加上2倍ATR

// 返回结果
plotshape(buy or sell, title="Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)

加载方法: 在TradingView中,点击图表右上角的"Pine Editor",新建脚本,粘贴代码后保存并应用到图表。

MetaTrader 4/5

//+------------------------------------------------------------------+
//| Low Buy High Sell with ATR Indicator                             |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Lime

double ExtMapBuffer[];

int OnInit()
{
   SetIndexStyle(0, DRAW_ARROW, 0, 1);
   SetIndexArrow(0, 233);
   SetIndexBuffer(0, ExtMapBuffer);
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int i, limit;
   if(rates_total  ma20 + 2 * atr)
      {
         ExtMapBuffer[i] = Low[i] - 20 * Point;
      }
      else
      {
         ExtMapBuffer[i] = EMPTY_VALUE;
      }
   }
   return(rates_total);
}

加载方法: 在MetaTrader中,进入"MetaEditor",新建Expert Advisor或Indicator,粘贴代码,编译并加载到图表。

参数说明

参数意义
ATR平均真实波幅,衡量价格的波动性
MA(CLOSE,20)20日简单移动平均线,用于价格趋势判断
2*ATRATR的2倍,作为波动范围的边界

针对不同产品推荐参数

产品类型推荐参数理由
股票ATR(14), MA(20)股票市场的中期波动适合14日ATR和20日均线
期货ATR(7), MA(10)期货市场波动快,需更短周期捕捉波动
外汇ATR(20), MA(50)外汇市场波动相对小,需更长周期判断趋势
加密货币ATR(10), MA(30)加密货币波动大,需平衡波动性和趋势识别

优点和缺点

优点缺点
结合市场波动性进行交易,更加科学在极端市场条件下,ATR可能失效
适用于多种市场和资产类别需要对市场波动性有深入理解
提供明确的买卖点位,减少主观判断在趋势市场中,可能频繁交易,增加交易成本

使用建议

此策略适合在波动性较大的市场使用。结合其他技术指标或基本面分析可以提高策略的成功率。建议在回测中优化参数,并在实际交易中灵活调整止损和止盈点位以控制风险。同时,注意市场情绪的变化,避免在趋势明显的市场中过度交易。

X用户点评

"这个策略结合ATR,真的让我在波动的市场中找到了不错的入场和出场点。关键是,记住市场环境的变化,调整参数很重要。" - @ATRTrader

您暂未设置收款码

请在主题配置——文章设置里上传

扫描二维码手机访问