如何在 Pine Editor 中触发交叉和价格高于安全性
How to trigger crossover AND price above security in Pine Editor
我一直在尝试研究如何在我的回测逻辑中从交叉和高于安全性的价格触发 LONG 和 EXIT,但没有运气,现在就我的回测 pine 编辑器代码寻求帮助。
我将包括我的代码的某些部分,以便您了解我尝试做的事情。
// add trading pair outside chart data
btc_price = security("BINANCE:BTCUSDT", "D", close)
// compute the indicators ( main chart ETH/USDT )
smaInput = input(title="SMA", type=input.integer, defval=1)
indicator1 = sma(close,smaInput)
// compute the indicators BTC
btcsmaInput = input(title="SMABTC", type=input.integer, defval=1)
indicatorbtc = sma(btc_price,btcsmaInput)
// plot the indicators
plot(indicator1, title="Indicator1", color=color.red, linewidth=2)
plot(indicatorbtc, title="Indicator1", color=color.blue, linewidth=2)
我想用伪代码实现的目标:
如果收盘价高于指标 1(ETH/USDT) 且 BTC/USDT 价格高于指标 btc,则做多
Go Exit IF close IS BELOW IS BELOW indicator1(ETH/USDT) or BTC/USDT 价格收盘价低于指标btc
这是我需要帮助的代码,下面的代码不能像我上面在伪代码中描述的那样工作。
// Backtesting Logic
EnterLong = crossover(close,indicator1) and crossover(btc_price, indicatorbtc)//
ExitLong = crossunder(close,indicator1) or crossunder(btc_price, indicatorbtc) //
请指教
crossover
和 crossunder
仅在一根柱线中为 true
,即当交叉操作变为 true
时。你的 AND
条件将失败,除非两个交叉同时发生。
这是另一个想法,使用这些变量的实际值。所以,如果 btc_price
大于 indicatorbtc
,你就知道这个交叉已经发生了。并且只触发您的入口函数一次,您可以使用 crossover()
和值比较一起使用。
EnterLong = (crossover(close,indicator1) or crossover(btc_price, indicatorbtc)) and ((close > indicator1) and (btc_price > indicatorbtc))
因此,第一部分 (crossover(close,indicator1) or crossover(btc_price, indicatorbtc))
只有在其中一个交叉发生时才会 true
。然后您可以查看实际值以确定其他交叉是否在过去发生过。那就是 ((close > indicator1) and (btc_price > indicatorbtc))
部分。
我一直在尝试研究如何在我的回测逻辑中从交叉和高于安全性的价格触发 LONG 和 EXIT,但没有运气,现在就我的回测 pine 编辑器代码寻求帮助。
我将包括我的代码的某些部分,以便您了解我尝试做的事情。
// add trading pair outside chart data
btc_price = security("BINANCE:BTCUSDT", "D", close)
// compute the indicators ( main chart ETH/USDT )
smaInput = input(title="SMA", type=input.integer, defval=1)
indicator1 = sma(close,smaInput)
// compute the indicators BTC
btcsmaInput = input(title="SMABTC", type=input.integer, defval=1)
indicatorbtc = sma(btc_price,btcsmaInput)
// plot the indicators
plot(indicator1, title="Indicator1", color=color.red, linewidth=2)
plot(indicatorbtc, title="Indicator1", color=color.blue, linewidth=2)
我想用伪代码实现的目标: 如果收盘价高于指标 1(ETH/USDT) 且 BTC/USDT 价格高于指标 btc,则做多 Go Exit IF close IS BELOW IS BELOW indicator1(ETH/USDT) or BTC/USDT 价格收盘价低于指标btc
这是我需要帮助的代码,下面的代码不能像我上面在伪代码中描述的那样工作。
// Backtesting Logic
EnterLong = crossover(close,indicator1) and crossover(btc_price, indicatorbtc)//
ExitLong = crossunder(close,indicator1) or crossunder(btc_price, indicatorbtc) //
请指教
crossover
和 crossunder
仅在一根柱线中为 true
,即当交叉操作变为 true
时。你的 AND
条件将失败,除非两个交叉同时发生。
这是另一个想法,使用这些变量的实际值。所以,如果 btc_price
大于 indicatorbtc
,你就知道这个交叉已经发生了。并且只触发您的入口函数一次,您可以使用 crossover()
和值比较一起使用。
EnterLong = (crossover(close,indicator1) or crossover(btc_price, indicatorbtc)) and ((close > indicator1) and (btc_price > indicatorbtc))
因此,第一部分 (crossover(close,indicator1) or crossover(btc_price, indicatorbtc))
只有在其中一个交叉发生时才会 true
。然后您可以查看实际值以确定其他交叉是否在过去发生过。那就是 ((close > indicator1) and (btc_price > indicatorbtc))
部分。