如何为不同加密货币对设置自定义Crossover/Crossunder多空信号参数
实现不同加密货币对的交叉参数切换方案
1. 构建币种选择下拉菜单
先通过下拉输入框让用户选择目标加密货币对,代码示例:
// 创建币种选择菜单 selectedPair = input.dropdown("选择加密货币对", options=["BTC/USDT", "ETH/USDT", "SOL/USDT", "ADA/USDT"], defaultValue="BTC/USDT")
2. 为各币种分配专属交叉参数
用switch或if-else语句,给不同币种绑定对应的Crossover(快线周期)、Crossunder(慢线周期)参数,示例:
// 用switch批量分配快线参数 fastLength = switch selectedPair "BTC/USDT" => 10 "ETH/USDT" => 8 "SOL/USDT" => 12 "ADA/USDT" => 7 => 9 // 默认兜底值 // 用switch批量分配慢线参数 slowLength = switch selectedPair "BTC/USDT" => 30 "ETH/USDT" => 24 "SOL/USDT" => 32 "ADA/USDT" => 22 => 26 // 默认兜底值
3. 基于参数生成多空信号
用分配好的参数计算指标,再触发Crossover/Crossunder信号,示例以EMA均线交叉为例:
// 计算均线(可替换为你使用的其他指标) fastMA = ta.ema(close, fastLength) slowMA = ta.ema(close, slowLength) // 生成多空交叉信号 longSignal = ta.crossover(fastMA, slowMA) shortSignal = ta.crossunder(fastMA, slowMA) // 绘制信号标记 plotshape(longSignal, title="做多信号", location=location.belowbar, color=color.green, style=shape.labelup, text="多") plotshape(shortSignal, title="做空信号", location=location.abovebar, color=color.red, style=shape.labeldown, text="空")
可选优化:自动识别当前交易对
如果不需要手动选择,可通过syminfo.tickerid自动获取当前图表的币种ID,直接匹配参数:
currentPair = syminfo.tickerid fastLength = switch currentPair "BINANCE:BTCUSDT" => 10 "BINANCE:ETHUSDT" => 8 => 9
注意事项
- 确保币种ID(如
BINANCE:BTCUSDT)和图表中的标识完全一致,否则会触发默认参数 - 可根据需求扩展参数维度,比如调整指标类型(EMA/SMA)、信号阈值等
内容的提问来源于stack exchange,提问作者trkk
相关产品推荐
相关产品推荐

