感谢大家迄今为止的帮助。到目前为止,我已经在 pinescript 中编写了许多不同的策略,并且我已经阅读了 pinescript 手册和许多谷歌文章,但我仍然对追踪止损在 pinescript 中如何工作感到困惑。
例如,对于strategy.exit,我有一个trail_price,它标记要激活的追踪止损条目。然而,我所有的回溯测试都表明追踪止损位于该特定蜡烛线的最高点,即使 Trail_offset 尚未被触及。仅仅是因为交易视图回溯测试假设在一根蜡烛线中达到了最大利润,即使后续蜡烛线继续朝着您的目标方向发展?
例如,这是我的strategy.exit 的示例。Strategy.exit("long_TP", "long", Trail_price = 入场价格 + ATR, Trail_offset = ATR, stop= 入场价格 - ATR). 我注意到,只要在该特定交易收盘前获利,我将赚取 2 倍到 3 倍的 Trail_offset(在本例中基于 ATR,即,如果 ATR 为 50 点,我将赚取 100 甚至 150 点)。蜡烛吧。任何后续的蜡烛线,即使做多,即使没有达到 Trail_offset 止损,也不会被纳入计算(即,即使我的 ATR 是 50 点,当蜡烛线收盘时我可能会赚取 70 点,即使随后的蜡烛继续做多)。
我的假设是否不正确(即我的代码),或者这只是回溯测试的限制,因为程序无法知道蜡烛条内部发生了什么,只能知道最高价、最低价、开盘价和收盘价?然而,我确实对此感到好奇,因为有时即使蜡烛线处于最低点,也没有达到 Trail_offset,因此理论上利润应该继续累积,而不是在蜡烛线收盘后止损。
编辑:我添加了一些更多信息以进行澄清 - 这是一个带有一些解释的示例代码:
If condition == true
long = strategy.position_size[0] > strategy.position_size[1] //go long if there is order entry
entry_price_long = valuewhen(long, open, 0) //entry price is the opening price, …Run Code Online (Sandbox Code Playgroud) 我在将止盈和止损合并到一个脚本中时遇到严重问题。
我正在使用此脚本进行 TP https://kodify.net/tradingview/orders/percentage-profit/
这是 SL 的 https://kodify.net/tradingview/orders/percentage-stop/
我想出了下面的脚本,它不适合 SL。因此,订单将保持开放状态,直到达到目标价%。我需要你的帮助来修复它并像 TP 一样激活 SL。
//@version=3
strategy(title="Take profit (% of instrument price)",
overlay=true, pyramiding=1)
// STEP 1:
// Make inputs that set the take profit % (optional)
longProfitPerc = input(title="Long Take Profit (%)",
type=float, minval=0.0, step=0.1, defval=3) * 0.01
longLossPerc = input(title="Long Stop Loss (%)",
type=float, minval=0.0, step=0.1, defval=1) * 0.01
// Calculate moving averages
fastSMA = sma(close, 20)
slowSMA = sma(close, 60)
// Calculate trading conditions
enterLong = crossover(fastSMA, slowSMA)
// …Run Code Online (Sandbox Code Playgroud) 我想在TradingView Pine回测中优化指标参数。其他工具也可以做到这一点,但是当我在TradingView中搜索此功能时,我什么也找不到。有人可以帮忙吗?
如果在TradingView中无法实现,那么有没有办法使用其他工具呢?
提前致谢!
我正在尝试在 Tradingview 下使用 Pine 语言编写一个简单的 if-then-else 语句。代码的作用基于用户输入。
\n\n如果选中该框,则绘制线条。
\n\n如果未选中该框,则不绘制该线。
\n\n这是我的代码:
\n\nnotPlot = -2000\nvar ch382= input(true, ".382")\nif ch382\n plot( ch382? bottom + diff * .382: noPlot, title="fib-.236", linewidth=3, color=color.orange )\nRun Code Online (Sandbox Code Playgroud)\n\n我怎样才能以正确的方式写这个?
\n\n如果我尝试运行它,我得到:\xe2\x80\x9ccannot use \'plot\' in a local scope\xe2\x80\x9d
\n\n任何帮助将不胜感激。
\n\n预计到达时间:我在下面找到了这个帖子
\n\n\n\n我需要做的是如果选中该框则绘制,如果未选中该框则〜不绘制〜。
\n我的策略()完全有效,但现在我正在尝试管理资金投入交易的方式。
\n这是我目前的情况:
\n我的止损设置为最后 10 个柱线的最低点,止盈设置为 1.5 倍止损。
\n我的策略.退出:
strategy.exit("EXIT LONG","LONG", stop=longSL, limit=longTP)\nRun Code Online (Sandbox Code Playgroud)\n到这里为止,一切都运行良好。
\n问题:
\n即使我使用:
strategy("TEST MACD DEFAULT", shorttitle="MACD", overlay=true, initial_capital=1000, default_qty_type=strategy.equity, default_qty_value=1, currency=currency.EUR, process_orders_on_close=true, pyramiding=0)\nRun Code Online (Sandbox Code Playgroud)\n钱没有按照我想要的方式投入交易。
\n我想要什么:
\n我的资本为 1000\xe2\x82\xac。
\n我希望我的止损(已设置为最后 10 个柱中的最低点)为我资本的 1% = 10\xe2\x82\xac。
\n我的 TP 是 1.5xSL,所以它是 15\xe2\x82\xac。
\n这意味着对于我输掉的每笔交易,我会输掉 10\xe2\x82\xac,而对于我赢的每笔交易,我会赢取 15\xe2\x82\xac。
\n但这不是我所拥有的:\n
问题: \n
\n我怎样才能做到这一点?
这是我的代码(仅适用于多头头寸):
\n//@version=4\nstrategy("TEST MACD DEFAULT", shorttitle="MACD", overlay=true, initial_capital=1000, default_qty_type=strategy.cash, default_qty_value=10, currency=currency.EUR, process_orders_on_close=true, pyramiding=0)\n\n// MACD\n[macdLine, signalLine, _] = macd(close, 12, 26, 9)\n\n// EMA …Run Code Online (Sandbox Code Playgroud) 我对 TradingView Pine 脚本非常陌生,我没有找到合适的参考来理解:=和=运算符之间的差异。
有人有参考或描述吗?
提前致谢
我使用 pine 脚本,我想检查某些变量是否为 NA。说:
float value = na
if value == na
// do something
Run Code Online (Sandbox Code Playgroud)
As far as I am aware, the manual says that it is not guaranteed to work. Are there any alternatives to check if a variable is NA? I can't assign it to 0 though, since the outcome value can be 0.0 in my script. I am new to Pine Script. Thanks!
我收到错误第 13 行:找不到函数或函数引用“ema”。当我知道 ema 是一个函数时。
我正在尝试执行一个简单的策略,如果价格高于 200 DEMA,并且 SuperTrend 指标发出“买入”信号,则进入多头交易。如果超级趋势指标给出“卖出”信号,我想卖出。我的代码朝着正确的方向发展吗?非常感谢一些帮助!
//@version=5
strategy("DEMA and SuperTrend", overlay=true)
// SuperTrend
atrPeriod = input(12, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)
[_, direction] = ta.supertrend(factor, atrPeriod)
// DEMA
demaLength = input(200)
src = input(close, title="Source")
e1 = ema(src, demaLength)
e2 = ema(e1, demaLength)
dema = 2 * e1 - e2
if ta.change(direction) < 0 and close > dema
strategy.entry("long", strategy.long)
if ta.change(direction) > 0
strategy.close("long", strategy.close)
Run Code Online (Sandbox Code Playgroud) 我试图根据当前打开的符号来实现脚本的不同行为,如何检查符号的名称?
例如(伪代码):
如果符号是 CADJPY - 执行此操作
否则,如果符号是 NAS100USD - 执行此操作
我的问题是我无法在一天结束时关闭我的未平仓头寸,因为我使用的是兰科图表模式。如您所知,ranko 蜡烛时间不是固定的,所以我如何在 pine 脚本中使用 IST 时间在每天的特定时间退出。
在没有砖形图的情况下,我使用此代码来退出中毒
if (hour==15 and minute==29)
strategy.close_all("Day Close")
Run Code Online (Sandbox Code Playgroud)