保持敬畏之心
交易是一场持久战

Pine Script(66):initial_capital与currency结合,模拟真实数据

#Pine Script入门教学

我们来设想一个真实的场景:

你是一位身在欧洲的交易员,账户里存的是欧元,但你每天都在交易美国的纳斯达克指数(以美元USD计价)。那么问题来了:你账户里的10万欧元,今天到底能买多少价值的纳指期货?明天呢?这个购买力是固定的吗?

今天我们就来聊聊Pine策略如何通过initial_capitalcurrency这两个参数,精准地模拟这种跨币种交易的真实购买力变化。

首先我们回顾一下这两个工具:initial_capital:设定策略的初始资金数额;currency:设定策略的账户货币单位。一个最关键的概念是:initial_capital的单位,永远由currency参数决定。

根据currency设置的不同,你的初始资金会呈现出三种不同的状态:

  • 场景一:如果你不设置currency参数,那你的initial_capital就只是一个“默认值”,简单但不严谨,无法进行跨市场策略的同标准比较。
  • 场景二:当你的账户货币和你交易的品种货币相同时(比如用美元账户交易美股),不发生任何货币换算,你的购买力就是你的初始资金面值。
  • 场景三:当你用欧元账户(currency=currency.EUR)去交易美元计价的品种时,TradingView会根据当时的汇率,计算出你的10万欧元,到底等同于多少美元的购买力。

TradingView的货币换算,使用的是相关外汇对前一个交易日的收盘价,这意味着在整个交易日内,换算汇率是固定的,每天更新一次。这和经纪商的实时汇率换算会有些许差异,对于长线策略影响不大,但你需要了解这个机制。

我们不用真实交易,只用plot()函数把策略的初始资金购买力画出来,效果一目了然。

示例1:我们设定10万初始资金,但不指定货币。

//@version=6
strategy(title="没有货币转换的初始资金",
    overlay=false, initial_capital=100000)

// 不设置货币,资金恒定不变
plot(strategy.initial_capital)

当把这个脚本应用到一个美元计价的图表上时,初始资金被视为10万美元,并且在整个回测期间,它是一条纹丝不动的直线:

示例2:我们模拟用一个10万欧元的账户,去交易美元资产。

//@version=6
strategy(title="有货币转换的初始资金", overlay=false,
    currency=currency.EUR, initial_capital=100000)

// 获取昨日收盘价作为今天的汇率
eurUSDrate = request.security("EURUSD", "D", close[1])

// 绘制
plot(strategy.initial_capital * eurUSDrate)

我们做了两件事:在strategy()函数中,将账户货币设为currency.EUR。为了验证,我们手动获取了EUR/USD的每日汇率,然后将10万欧元的本金乘以该汇率,得到等值的美元购买力,并将其绘制出来:

你会发现两个关键变化:一、由于汇率影响,10万欧元的购买力,通常会大于10万美元;二、购买力曲线不再是一条直线, 它每天都在随着汇率的变动而上下浮动,这才是跨币种交易的真实世界!

总结

initial_capital的单位由currency决定,当你用一个特定货币的账户(例如欧元),去交易另一个货币计价的品种时(例如美元),TradingView会自动进行汇率换算,来决定你的真实购买力。由于汇率每天都在变,你的购买力也会随之每日波动,正确地设置currencyinitial_capital,是进行严谨、专业的全球化市场策略回测不可或缺的一环。

赞(0)
未经允许不得转载:图道交易 » Pine Script(66):initial_capital与currency结合,模拟真实数据
分享到

评论 抢沙发

登录

找回密码

注册