请求修改Pine Script代码:计算当日首根蜡烛高低点点数并用于止损止盈
搞定当日首根蜡烛点数计算+止损止盈设置
嘿,作为Pine Script新手,搞不懂代码很正常,我来一步步帮你实现需求!
首先先拆解下你拿到的原代码问题:
原代码getHighLowNumPips() => (high - low) / syminfo.mintick是计算当前每一根蜡烛自己的高低点点数,每根蜡烛都会输出一个新值,但你要的是当日第一根蜡烛的固定点数,所以得修改逻辑,把当日首根的高低点存起来,之后一直用这个值。
下面是修改后的完整代码,我会逐行给你解释,还加了止损止盈的示例:
//@version=5 indicator("当日首根蜡烛高低点点数", overlay=true) // 检测当前是否是当日第一根蜡烛 is_first_bar_of_day = ta.change(time("D")) != 0 // 用var关键字定义变量,确保只会初始化一次,不会随每根蜡烛重置 var float daily_first_high = na // 存储当日首根蜡烛的高点 var float daily_first_low = na // 存储当日首根蜡烛的低点 // 当触发当日第一根蜡烛时,记录它的高低点 if is_first_bar_of_day daily_first_high := high daily_first_low := low // 计算当日首根蜡烛的高低点点数 daily_first_range_pips = (daily_first_high - daily_first_low) / syminfo.mintick // 把点数画在图表上,方便你验证数值(可以根据需要隐藏) plot(daily_first_range_pips, title="当日首根点数", color=color.blue, linewidth=2) // -------------------------- 示例:用点数设置止损止盈 -------------------------- // 这里用简单的均线金叉作为开仓条件,你可以替换成自己的开仓逻辑 long_condition = ta.crossover(ta.sma(close, 5), ta.sma(close, 20)) if (long_condition) // 开多单 strategy.entry("做多", strategy.long) // 设置止损和止盈:用当日首根点数对应的价格差 // 止损 = 开仓均价 - 点数 * 最小跳动点 // 止盈 = 开仓均价 + 点数 * 最小跳动点 strategy.exit("平仓做多", "做多", stop=strategy.position_avg_price - daily_first_range_pips * syminfo.mintick, limit=strategy.position_avg_price + daily_first_range_pips * syminfo.mintick)
代码关键部分解释:
is_first_bar_of_day:通过检测当日时间戳的变化,判断当前蜡烛是不是当日第一根。新交易日开始时,time("D")的数值会变化,ta.change()能捕捉到这个变化。var关键字:用它定义的变量只会在脚本启动时初始化一次,之后不会随每根蜡烛重置,这样就能一直保存当日首根蜡烛的高低点,不会被后续蜡烛覆盖。- 点数计算逻辑:
(daily_first_high - daily_first_low) / syminfo.mintick,syminfo.mintick是当前品种的最小价格跳动单位(比如EURUSD是0.00001,黄金是0.1),用高低差除以它就能得到点数。 - 止损止盈示例:因为
daily_first_range_pips是点数,乘以syminfo.mintick就能转回实际的价格差,然后加到/减到开仓价上,就得到了止损和止盈的价格。
如果是做空单,逻辑反过来就行:止损是开仓价加上价格差,止盈是开仓价减去价格差。
内容的提问来源于stack exchange,提问作者Aryagm
相关产品推荐
相关产品推荐

