关于 tradIngview pine语言的一些要注意的地方,以及常用api

process_orders_on_close

当设置为 true 时 , 会在信号出来后立即执行开关单. 到 false 时,会在信号出来的下一个k线开关单(价格是会在 开盘价 左右 浮动

strategy.entry

stop

在这里插入图片描述

strategy.entry函数中的stop参数实际上是用于创建一个停止限价单(Stop Limit Order),只是当设置了limit 时,停止挂单了而已, 而不是一个止损订单(Stop Loss Order)
停止限价单只在市场价格达到指定的价格时才会被触发。如果市场价格突然大幅度下跌或上涨,以至于跳过了指定价格,那么停止限价单将不会被激活。因此,停止限价单并不能像止损订单那样保证您的损失不会超过指定的止损价格

注意点

当前时间是 2023.5.25, tradingview 并不支持同时持有多单跟空单, 也就是说, 开多单时假设开空单, 那这相当于自动给多单进行平仓.
这里自行验证.

在这里插入图片描述

常用方法整理

计算当前持仓持仓收益(浮动盈亏)

tradeOpenPL() =>
    sumProfit = 0.0
    for tradeNo = 0 to strategy.opentrades - 1
        sumProfit += strategy.opentrades.profit(tradeNo)
    result = sumProfit

获取某个订单 id 的浮动盈亏

getProfitById(id) =>
    float profit = 0
    for i = 0 to strategy.opentrades - 1
        if strategy.opentrades.entry_id(i) == id
            profit := profit + strategy.opentrades.profit(i) //一个id 可能有多个 交易编号
    profit

获取开仓均价(根据id)

avgOpenPositionPrice(direction) =>
    float sumOpenPositionPrice = 0.0
    float trade_sum = 0
    for tradeNo = 0 to strategy.opentrades - 1
        if str.contains(strategy.opentrades.entry_id(tradeNo) , direction) 
            sumOpenPositionPrice += strategy.opentrades.entry_price(tradeNo) * strategy.opentrades.size(tradeNo)
            trade_sum += strategy.opentrades.size(tradeNo)
    result = trade_sum == 0 ? 0 : nz(sumOpenPositionPrice / trade_sum)
    plot(avgOpenPositionPrice("long")) //假设所有的自定义id 命名 都含有 "long"字符

获取总持仓量

getPositionSize() => 
    float trade_sum_ = 0
    for tradeNo = 0 to strategy.opentrades - 1
        trade_sum_ += strategy.opentrades.size(tradeNo)
    trade_sum_

我可以写tradingview策略,pine 语言

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值