如何在 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
我有一些基本的 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