我一直在尝试让一些进入/退出代码在 pinescript (5) 中工作。它似乎适用于策略的限价。退出,但止损不会触发。
我一直在玩这个,但我无法让它工作 - 我认为这可能取决于本地?全球范围。
if Trade_Direction_Filter_Long and dateRange and OPEN_BUY_SIGNAL and Long_Orders_Placed < Max_Long_Orders
entryPriceB := close
Long_Position := true
stopLossB := SL ? calculateSL() : na
takeProfitB := TP ? calculateTP() : na
if useLeverage
strategy.entry("Long", strategy.long, limit=entryPriceB, qty=math.min(math.max(.000001, ( strategy.equity / close ) * leverage), 1000000000), alert_message = alert_txt_entry_long)//ADD {{strategy.order.alert_message}} to the message box in Alerts to set up dynamic link
Long_Orders_Placed := Long_Orders_Placed + 1
alert("ADD Increased count - " + str.tostring(Long_Orders_Placed))
else
strategy.entry("Long", strategy.long, limit=entryPriceB, alert_message = alert_txt_entry_long)//ADD {{strategy.order.alert_message}} to the message box in Alerts to set up dynamic link
Long_Orders_Placed := Long_Orders_Placed + 1
alert("ADD Increased count - " + str.tostring(Long_Orders_Placed))
if Trade_Direction_Filter_Long and dateRange and Long_Orders_Placed > 0
if CLOSE_BUY_SIGNAL and optionTP == "Custom"
takeProfitB := TP ? calculateTP() : na
strategy.exit("Long Exit", "Long", stop=stopLossB, limit=takeProfitB, comment = "Signal Exit")
Long_Orders_Placed := Long_Orders_Placed - 1
else if (optionTP != "Custom" )
strategy.exit("Long Exit", "Long", stop=stopLossB, limit=takeProfitB, comment = "Option Exit")
Long_Orders_Placed := Long_Orders_Placed - 1
希望这是有道理的,任何意见都将不胜感激。
我尝试过移动范围,但遇到了基于 optionTP ==“Custom”和 CLOSE_BUY_SIGNAL 的条件退出问题。或 optionTP != "自定义"
您面临的问题可能与您在 if
takeProfitB
和 CLOSE_BUY_SIGNAL
块内有条件更新 optionTP == "Custom"
值的方式有关。 Pine Script 是一种前瞻性语言,在 if 条件中更改变量可能不会按照您期望的方式更新变量。尝试以下方法:
//@version=5
indicator("Custom TP Example", overlay=true)
var float entryPriceB = na
var bool Long_Position = na
var float stopLossB = na
var float takeProfitB = na
var bool CLOSE_BUY_SIGNAL = ta.crossover(close[1], close)
var string optionTP = "Custom" // Replace with your logic for optionTP
if ta.crossover(close[1], close)
// Entry conditions
entryPriceB := close
Long_Position := true
stopLossB := SL ? calculateSL() : na
takeProfitB := optionTP == "Custom" ? calculateTP() : na
if ta.crossover(close, close[1]) and Long_Position
// Exit conditions
if optionTP == "Custom"
takeProfitB := calculateTP()
strategy.exit("Long Exit", "Long", stop=stopLossB, limit=takeProfitB, comment = "Exit")
Long_Position := false
在此修改后的代码中:
我使用
ta.crossover
函数来检测CLOSE_BUY_SIGNAL
。根据您的实际信号逻辑修改此条件。
当您入仓时以及当您想用
takeProfitB
退出时,我都会有条件地更新 "Custom" TP
。这可确保在发生 takeProfitB
时正确设置 CLOSE_BUY_SIGNAL
。
我使用
Long_Position
作为标志来跟踪您是否处于多头仓位。这有助于确定何时退出。
请根据您的具体进入和退出条件调整代码,但此结构应有助于确保在需要时正确计算 takeProfitB。祝你好运!