背景
脚本基本组成
策略实现
实现马丁格尔策略
初始化变量:定义初始资本、初始头寸大小、止损百分比、止盈百分比以及当前资本和当前头寸大小等变量。
更新头寸:创建一个函数来更新头寸大小、止损价格和止盈价格。在马丁格尔策略中,每次亏损后头寸大小会加倍。
开仓函数:定义一个函数来开启新的交易,记录入场价格,并更新头寸大小和止损止盈价格。
平仓函数:定义一个函数来关闭当前的交易,并更新资本和头寸大小。
策略入口和出口:定义策略的入场条件和出场条件。入场条件可以是一个简单的移动平均线交叉,例如短期移动平均线穿过长期移动平均线。
策略循环:在策略循环中,根据入场和出场条件来执行开仓和平仓函数。
策略信息:在图表上显示策略信息,例如当前资本。
主函数:调用策略循环和策略信息函数,开始执行脚本。
马丁格尔策略具有高风险,因为它涉及在每次亏损后增加头寸大小,这可能导致在一系列亏损后迅速耗尽资本。因此,这种策略不推荐用于实际交易。
网格交易策略
SMA策略
//@version=4
strategy("sma", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value=99, initial_capital=10000, currency=currency.USD)strategy.risk.allow_entry_in((strategy.direction.long))fast = input(defval = 7, title = 'fast', type=input.integer)
slow = input(defval = 28, title = 'slow', type=input.integer)SMA_fast = sma(close, fast)
SMA_slow = sma(close, slow)start = timestamp(2010, 1, 30, 0, 0)plot(SMA_fast,title = "fast",color = color.orange)
plot(SMA_slow,title = "slow",color = color.green)longCondition = crossover(SMA_fast, SMA_slow)
if (longCondition) and (time > start)strategy.entry("Enter", strategy.long)shortCondition = crossover(sma(close, 14), sma(close, 28))
if (shortCondition) and (time > start)strategy.entry("My short entry id", strategy.short)
参考文档
https://www.dedao.cn/ebook/detail?id=V5R16yPmaYOMqGRAv82jkX4KDe175w7jP2D3rbx6pNgznl9VZPLJQyEBodb89mqo
网页端工具
https://gitcode.com/gh_mirrors/tr/tradingview-assistant-chrome-extension/overview?utm_source=artical_gitcode&index=top&type=card&webUrl&isLogin=1
官方文档
https://www.tradingview.com/pine-script-docs/
教程
https://courses.theartoftrading.com/courses/pine-script-basics-course