如何在 pinescript 中引用存储在临时变量中的先前入场价格?

how to refer to previous entry price stored in temp variable in pinescript?

我有一些基本的 MA 交叉策略指标,我想实施更好的策略,仅在价格高于之前买入价时卖出,但我不确定如何在 PINE 语法中做到这一点,任何想法请?

这是一个简单的代码,这个代码运行良好,它打开多头或关闭多头取决于交叉 MA :

// Strategy functions

if (crossover(outShort,outLong)) 
    strategy.entry(id="Long", long=strategy.long)

if (crossunder(outShort,outLong)) 
    strategy.close(id="Long")

这是我有问题的代码,我想只在价格高于之前的价格时才卖出,所以我添加了条件来检查新价格 price < close ,但不确定如何写入Pine 语法

// Strategy implemented - but with errors
var entryprice = 0

if (crossover(outShort,outLong)) 
    entryprice := close
    strategy.entry(id="Long", long=strategy.long)


if (crossunder(outShort,outLong)) and ( entryprice < close )
    strategy.close(id="Long")

这是屏幕截图,如果条件 entryprice < close 不工作

,逻辑仍然没有按预期工作

很好,对了,你知道为什么我在策略中定义的initial_capital值=1000不对应利润吗?即使我改变资本数字,利润仍然显示相同的结果。

//@version=4
strategy(title="My_MA_strategy", shorttitle="MyMA Strategy_0.04", format=format.price,  initial_capital=1000, overlay=true)

例如第一次贸易展利润 154 美元,即使只有 0.26% 的利润(不可能从 1000 资本开始) 百分比显示可以,但利润不行。

尝试更改市场类型,但没有任何进展,仍然显示相同的利润

使用:

var float price = 0.0

var float price = 0

var price = 0.

这样您的变量就被声明为“float”类型。第一种更明确的形式更可取,因为它更清楚地表明您的意图。

[编辑 2021.05.06 10:34 — LucF]

入场的if块应该只输入一次,当没有仓位时,否则它的条件可以在交易期间多次为真,并且entryprice每次都会改变,这你不要。

使用:

if (crossover(outShort,outLong)) and strategy.position_size == 0