有人问了类似的问题,没有回应,我不允许补充。
Tradingview Pine 脚本在策略进入时保存收盘价
我正在尝试制定一个策略,该策略将多次购买(金字塔式)以在收盘前平均下跌,但我想检查之前的入场价格以确保其低于配置的百分比。
到目前为止我所拥有的:
lastBuy=0
if (condition)
if (lastBuy==0)
lastBuy=close
strategy.entry("buy", true)
else
if ((close*1.01)<lastBuy)
lastBuy=close
strategy.entry("buy", true)
Run Code Online (Sandbox Code Playgroud)
每次传递代码时,它都会将 lastBuy 重置为零,我永远不会检查之前的收盘价。如果我不设置它,我会收到未声明的错误。
在此先感谢您的帮助!
我正在尝试在电视中建立一个策略(仅限多头头寸),其中strategy.entry将考虑之前的退出价格。例如:
strategy.entry("long", strategy.long, when = longcondition==true)
strategy.close("long", strategy.close, when = longcondition==false)
Run Code Online (Sandbox Code Playgroud)
除了 longcondition==true 之外,我还想为 Strategy.entry 插入另一个条件,它说明了以下意图:
strategy.entry("long", strategy.long, when = longcondition==true and close[1] < previousExitPrice)
Run Code Online (Sandbox Code Playgroud)
怎样做才正确呢?预先感谢您的答复。
我正在尝试在交易视图中使用 pine-script 开发多个时间范围 RSI,但我似乎对长期图表视图中的短期 RSI 存在问题。
例如,以下代码将显示 5 分钟 RSI。如果我将图表设置为 5 分钟,它将正确显示 RSI。但是,当我选择更大的时间范围(例如 1 小时等)时,该值就会变得不正确。
study("Multi Time Frame RSI", "MTF RSI", overlay=false)
src = input(title="Source", type=source, defval=close)
_5min_rsi = security(tickerid, "5", rsi(src, 14))
plot(_5min_rsi, title="5min_RSI", color=purple, linewidth=1)
Run Code Online (Sandbox Code Playgroud)
我认为问题与正在操作的系列数据有关。由于某种原因,当我使用“5”的安全性作为我的分辨率时,其数据会在较高的时间范围图表中丢失,并且它使用当时不同系列的收盘价。至少这是我的假设。我相信我错误地使用了“security”函数,或者可能向 RSI 函数提供了错误的输入“src”。
我还尝试切换 RSI 和安全性,看看是否可以获取 5 分钟系列数据并将其输入到我的 RSI 函数中,但这并没有更好的效果。例如
_5min_rsi = rsi(security(tickerid, "5", src), 14)
Run Code Online (Sandbox Code Playgroud)
本质上,我需要看到的是,无论我在交易视图中处于什么时间范围,我都应该看到正确计算的 5 分钟 RSI。在当前状态下,代码只能在 1 分钟和 5 分钟的时间范围内运行,这显然是不可接受的。
在交易视图的策略中,我输入了一个条目并有一个设置追踪止损的条件。同时我想要一个固定价格的止损单,但是当我下两个strategy.exit()命令时,实际上只使用了一个,因为两者都是“止损”类型。但是可以通过调用strategy.exit()并为其提供相同的 id来将退出命令替换为另一个退出命令。所以我的想法是用另一个替换一个退出并返回,当它适合我时,这样只有一个退出订单同时处于活动状态。
假设我有一个策略,有条件进入一个特定价格的头寸,例如conditionEnter和enterPrice,在进入时我也知道止损stopLossPrice,所以我可以设置:
if conditionEnter
strategy.entry(id="longEnter", long=true, qty=1, limit=enterPrice
strategy.exit(id="longExit", from_entry="longEnter", qty_percent=100, stop=stopLossPrice)
Run Code Online (Sandbox Code Playgroud)
现在,如果conditionTrailingStopLoss满足,我相应地替换它:
if conditionTrailingStopLoss
strategy.exit(id="longExit", from_entry="longEnter", qty=strategy.position_size * 0.2, trail_price=priceToTriggerTrailingStopLoss, trail_offset=100)
Run Code Online (Sandbox Code Playgroud)
其中priceToTriggerTrailingStopLoss等于或低于收盘价,以便立即设置追踪止损并追踪价格 100 个分时。请注意,即使它被执行,也只会退出当前位置的五分之一。
正如预期的那样,放置追踪止损退出订单会删除原始止损退出订单 - 当使用不同的 ID 时甚至是这样。我想等到追踪止损已经执行(被填充),然后再次放置止损退出订单。但是我如何确定执行时间?
我尝试了一些东西
if strategy.position_size < strategy.position_size[1]
strategy.exit(id="longEnter", long=true, qty=1, limit=enterPrice
strategy.exit(id="longExit", from_entry="longEnter", qty_percent=100, stop=stopLossPrice)
Run Code Online (Sandbox Code Playgroud)
看到一些退出已被执行,但我从未看到两个订单都被执行。但是,更改命令的顺序确实会影响忽略这两者中的哪一个。如果在上面的一段代码中我将 更改id为完全不同的东西,那么三个退出订单都不会被执行!
那么有人可以在这里帮忙吗?我的意思是想要有一个固定止损和一个追踪止损并不是很奇怪,它必须以某种方式起作用,对吗?
编辑:如果我在图表中向后滚动,我实际上确实看到有时一个,有时另一个退出订单被执行,但对于同一个入场订单仍然没有。
//@version=4
study(shorttitle="try", title="line", overlay=true, resolution="")
line.new(x1=bar_index[10], y1=close[10], x2=bar_index, y2=close)
Run Code Online (Sandbox Code Playgroud)
我想使用 pine 脚本在交易视图图表中绘制一条简单的线。我收到分辨率错误。我错过了什么吗?
错误:第 5 行:“解决方案”参数与具有副作用的函数不兼容。脚本“crcheck”已保存
我正在尝试自定义交易视图小部件但没有成功,我想更改 RSI 指标的颜色,并更改级别,这是代码:
new TradingView.widget({
"container_id": "box" + i,
"autosize": true,
"symbol": chartTicker,
"interval": intervalValue,
"timezone": timezoneValue,
"theme": theme,
"style": "1",
"locale": "en",
"toolbar_bg": toolbarbg,
"enable_publishing": false,
// "hide_legend": true,
"hide_top_toolbar": false,
"hide_side_toolbar": false,
"save_image": false,
"allow_symbol_change": allowsymbolchange,
"show_popup_button": false,
"withdateranges": withdateranges,
"details": details,
"hideideas": true,
"disabled_features": ["use_localstorage_for_settings", create_volume_indicator_by_default"],
"enabled_features": ["move_logo_to_main_pane", "hide_left_toolbar_by_default"],
// "disabledDrawings": true,
"studies_overrides": {
"rsi.rsi.plot.color": "#2196f3",
"rsi.level.0": 20,
"rsi.level.1": 80
},
"studies": [
"RSI@tv-basicstudies"
],
});
Run Code Online (Sandbox Code Playgroud)
提前致谢
如何在 Pine 脚本中设置strategy.commission.percent?
我知道如何在手动设置中将佣金设置为百分比。但是有没有办法用代码设置佣金?
这是我的策略脚本:
strategy("Working 55 & 200 EMA strategy", overlay = true, initial_capital=1000)
fast = input(defval = 55, step = 5)
slow = input(200)
ma1 = ema(close, fast)
ma2 = ema(close, slow)
plot(ma1, title = "Fast MA", color = lime, style = line, linewidth = 3)
plot(ma2, title = "Slow MA", color = black, style = line, linewidth = 3)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval …Run Code Online (Sandbox Code Playgroud) 我对 pinescript 很新,我被困在这一点上......我只想在 10 EMA 穿过 21 EMA 而 21 高于 50 EMA 和 50 EMA 高于 200 EMA 时绘制交叉。这是指示多头信号。同时,当 10 EMA 穿过 21 EMA 而 21 低于 50 EMA 和 50 EMA 低于 200 EMA。这是为了指示Short 信号。
我有这么多代码,但我不知道如何进一步进行:
//@version=3
study(title="MA Cross ATTEMPT", overlay=true)
s10ema = ema(close, 10)
s21ema = ema(close, 21)
s50ema = ema(close, 50)
s200ema = ema(close, 200)
plot(s10ema, color = red, linewidth = 1, transp=0)
plot(s21ema, color = aqua, linewidth = 1, transp=0)
plot(s50ema, color = aqua, linewidth …Run Code Online (Sandbox Code Playgroud) 我遇到以下问题:
我输入一个在收盘价 < EMA 后关闭的策略。为了更好地退出,我想在收盘 > EMA 时关闭它,但低点(入场后任何给定的柱)低于 EMA(低点 < EMA)。
我不知道如何执行“输入后的任何给定栏”时刻。我猜脚本应该以某种方式存储前一个柱的值(如果为真),但是当策略实际启动时,脚本编写就会出现问题。任何帮助,将不胜感激!
附言。如您所见,我不是编码员,这可能很难理解。我对此深表歉意,并感谢您抽出时间。
米哈伊尔
我尝试用strategy.position_avg_price > 0 来说明入场条件何时开启,并添加所需的条件:
h = nz(strategy.position_avg_price) > 0 and not
crossunder(close,ema(close,length)) and
crossunder(low,ema(close,length)) ? 1 : 0
rightborder = barstate.islast // treat the last bar (most recent bar)
as the right edge of the lookback window range
// if examining the last bar (newest bar, rightborder is true)
// set variable "val" to the previous value of series variable "h"
// else set to na …Run Code Online (Sandbox Code Playgroud) 我有一个指标可以自动在 y 尺度上压缩整个价格图表,所以我必须在大部分时间让它不可见。即使双击 y 尺度(图表自动拟合功能)也包括所有可见指标。有什么办法可以防止一个或所有指标这样做吗?