Một chiến lược theo xu hướng đa khung thời gian kết hợp các chỉ báo STOKER và SMA


Ngày tạo: 2023-12-18 12:19:41 sửa đổi lần cuối: 2023-12-18 12:19:41
sao chép: 0 Số nhấp chuột: 948
1
tập trung vào
1621
Người theo dõi

Một chiến lược theo xu hướng đa khung thời gian kết hợp các chỉ báo STOKER và SMA

Tổng quan

Chiến lược này sử dụng kết hợp chỉ số Stokes cổ điển với chỉ số SMA, để thực hiện khả năng theo dõi xu hướng mạnh mẽ hơn. Ý tưởng cốt lõi của chiến lược là sử dụng chỉ số Stokes để xác định tín hiệu hướng xu hướng, kết hợp với chỉ số SMA để lọc để cải thiện chất lượng tín hiệu, sử dụng các tham số chỉ số thiết lập các tham số chỉ số bằng các mô hình rủi ro khác nhau, để thực hiện rủi ro và lợi nhuận. Ngoài ra, chiến lược cũng sử dụng nhiều phán đoán khung thời gian để tối ưu hóa lựa chọn thời gian vào thị trường.

Nguyên tắc chiến lược

  1. Chiến lược sử dụng chỉ số Stokes của phiên bản tăng cường của Modify, các tham số chỉ số bao gồm chu kỳ% K, chu kỳ % K và chu kỳ % D, bằng cách đặt các tham số để kiểm soát độ nhạy của chỉ số.
  2. Các tham số chỉ số SMA bao gồm SMA cao và SMA thấp, được sử dụng để lọc tín hiệu, cải thiện chất lượng tín hiệu và tránh phá vỡ giả.
  3. Tùy theo sở thích rủi ro khác nhau, chiến lược cung cấp các lựa chọn mô hình rủi ro thấp, mô hình rủi ro trung bình và mô hình rủi ro cao. Mô hình rủi ro ảnh hưởng đến tham số chéo của chỉ số Stoker, do đó điều chỉnh động cơ rủi ro và lợi nhuận.
  4. Chiến lược đánh giá tín hiệu dài khi giao dịch phá giá trên chỉ số Stoker và giá đóng cửa thấp hơn SMA; đánh giá tín hiệu ngắn khi giao dịch phá giá dưới chỉ số Stoker và giá đóng cửa cao hơn SMA.
  5. Chiến lược kiểm soát rủi ro giao dịch bằng cách giới thiệu mô-đun phán đoán nhiều khung thời gian, xác nhận tín hiệu trong các khung thời gian khác nhau và chọn thời điểm nhập cảnh thuận lợi hơn.

Lợi thế chiến lược

  1. Nó được cải tiến để tăng cường chỉ số Stokes, tăng cường tính nhạy cảm của chỉ số, và nhanh chóng nắm bắt được sự thay đổi của thị trường.
  2. Thêm bộ lọc hai đường ray cho chỉ số SMA, có thể lọc hiệu quả tín hiệu giả và cải thiện chất lượng tín hiệu.
  3. Có nhiều mô hình rủi ro để lựa chọn, người dùng có thể điều chỉnh các tham số một cách linh hoạt theo sở thích rủi ro của mình.
  4. Thêm mô-đun phán đoán khung thời gian đa dạng, tối ưu hóa lựa chọn thời gian nhập cảnh, giảm rủi ro giao dịch.
  5. Thiết lập tham số chiến lược hợp lý, chỉ số sử dụng tự nhiên, toàn bộ khung khoa học nghiêm ngặt, ổn định tốt, thích ứng mạnh.

Rủi ro chiến lược

  1. Chiến lược này không có cơ chế dừng lỗ, cần thiết phải đặt lệnh dừng lỗ bằng tay để kiểm soát rủi ro mất mát.
  2. Các tín hiệu chiến lược thường xuyên, dễ bị giao dịch quá mức và làm tăng chi phí giao dịch.
  3. Các chiến lược nhạy cảm với các tham số và các thiết lập mô hình rủi ro, cần kiểm tra và tối ưu hóa để tìm các tham số tối ưu.
  4. Chiến lược rút lui có thể lớn hơn, không phù hợp với hoạt động toàn kho, cần kiểm soát quy mô vốn giao dịch.

Phương pháp tương ứng:

  1. Đặt tỷ lệ dừng lỗ hợp lý theo mức độ biến động của thị trường, kiểm soát tối đa tổn thất.
  2. Điều chỉnh các tham số chỉ số Stokes để giảm tần số tín hiệu. Hoặc thiết lập điểm dừng tối thiểu để giảm giao dịch không cần thiết.
  3. Lưu ý chọn chế độ rủi ro thấp mặc định và điều chỉnh các tham số khác theo dữ liệu thu hồi.
  4. Kiểm soát quy mô vị trí, xây dựng vị trí theo lô, giảm rủi ro giao dịch đơn lẻ.

Hướng tối ưu hóa chiến lược

  1. Kiểm tra toàn diện các tham số của chỉ số Stokes và chỉ số SMA để tìm ra sự kết hợp tham số tối ưu.
  2. Tăng số lượng khung thời gian đa dạng, làm phong phú cơ sở phán đoán, tối ưu hóa lựa chọn thời điểm nhập học.
  3. Tham gia vào các chỉ số dừng lỗ như ATR Stop, có thể theo dõi động điểm dừng lỗ, giảm rủi ro.
  4. Xây dựng các cơ chế lọc và xác nhận tín hiệu chỉ số, chẳng hạn như tăng số lượng giao dịch, để tránh bị mắc kẹt.
  5. Tham gia vào mô-đun quản lý vị trí, chủ động điều chỉnh vị trí theo tình hình thị trường, giảm rủi ro giao dịch đơn lẻ.

Tóm tắt

Chiến lược này tích hợp các lợi thế của chỉ số Stokes và chỉ số SMA, để thực hiện hiệu quả theo dõi xu hướng mạnh mẽ hơn. Khung chiến lược hợp lý, chỉ số sử dụng tự nhiên, bằng cách kiểm soát tham số và mô hình rủi ro để khôi phục bản chất của chỉ số, tối ưu hóa sự ổn định của chiến lược. Mô-đun phán đoán khung thời gian đa cũng nâng cao khả năng thích ứng của chiến lược, có thể điều chỉnh theo các loại khác nhau và chu kỳ.

Mã nguồn chiến lược
/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//►►►► Description ►►►►
//1. The Original Pine Script
//- Stochastic
//- SMA
//1.1 Concepts
//- Stochastic crossover and crossunder with range 80/20 or 70/30 or 50/50 from your risk you can adjust it from config
//- Confirm Signal by SMA High and Low Original Range is 50 or you can adjust by your self in config Setting
//1.2 Condition
//- Buy Condition = Stochastic crossover Sto Signal Line and SMA Filter <= 20 or 30 or 50 from your risk
//- Sell Condition = Stochastic crossunder Sto Signal Line and SMA Filter >= 80 or 70 or 50 from your risk
//1.3 Idea For Trading
//- Trend Runing If you use "Trend" Mode is Martingale Your Position Until You Have a Profit
//- Scalping You Can Adjust TP for Little Profit and Increase Your Winrate

//►►►► Strategy results ►►►►
// ►► Use an account size ►►
// - For Newbie i recommend try to use 50$ you can test in MT4 Or MT5 Start With 50$ Leverage : 1000
// - For Some User Have a Exp. Trading : 500$ you can use martingale for help your trading
// - For Expert User : 5000$ or 5000$ (Cent) you can use martingale for help your trading
// ►► realistic commission AND slippage ►►
// - Some Broker Not Have a commission for Gold and Forex.
// - slippage : default i'm Setting is 350 point, (it's mean 35 pip) it's average or your account is ECN or Zero Spread You can Set = 0
// ►► Size For Trading ►►
// - This strategy is Start From 0.01 lot and use martingale for next position
// - This not perfect strategy. it's have equity drawdown. just try and test your config you like.
// ►► Sample size Dataset Trading ►►
// - This Strategy Recommend For Long-Term Trading Becuase It's Have Martingale Help Your Next Position

//►►►► strategy's default Properties ►►►►
// - From Default Setting : Slippage or Spread Set = 0 (Becuase I don't know your account spread) you can set in Properties
// ** Some Broeker Are 2 Digits or 3 Digit You Must Set By Your Self (like 35 point or 350 point from your account spread)
// - From Default Setting : commission = 0 (Becuase I don't know your account commission) you can set in Properties
// ** Some Broeker Are not commission for forex and gold

//@version=5
var int slippage = 0
strategy("X48 - DayLight Hunter | Strategy | V.01.03", overlay=true)

var int hedge_mode = 0
var int sto_buy = 0
var int sto_sell = 0

Trade_Mode = input.string(defval = "Trend", title = "⚖️ Mode For Trade [Oneway / Hedge / ⭐Trend]", options = ["Oneway", "Hedge", "Trend"], group = "=== Mode Trade [Recommend Mode is ⭐Trend and ⭐Low Risk] ===", tooltip = "Oneway = Switching Position Type With Signal\nHedge Mode = Not Switching Position Type Unitl TP or SL")
Risk_Mode = input.string(defval = "Low Risk", title = "⚖️ Risk Signal Mode [⭐Low / Medium / High]", options = ["Low Risk", "Medium Risk", "High Risk"], group = "=== Mode Trade [Recommend Mode is ⭐Trend and ⭐Low Risk] ===", tooltip = "[[Signal Form Stochastic]]\nLow Risk is >= 80 and <= 20\nMedium Risk is >= 70 and <= 30\nHigh Risk is >= 50 and <=50")

if Trade_Mode == "Oneway"
    hedge_mode := 0
else if Trade_Mode == "Hedge"
    hedge_mode := 1
else if Trade_Mode == "Trend"
    hedge_mode := 2

if Risk_Mode == "Low Risk"
    sto_buy := 20
    sto_sell := 80
else if Risk_Mode == "Medium Risk"
    sto_buy := 30
    sto_sell := 70
else if Risk_Mode == "High Risk"
    sto_buy := 50
    sto_sell := 50

periodK = input.int(15, title="%K Length", minval=1, group = "Stochastic Setting", inline = "Sto0")
smoothK = input.int(3, title="%K Smoothing", minval=1, group = "Stochastic Setting", inline = "Sto0")
periodD = input.int(3, title="%D Smoothing", minval=1, group = "Stochastic Setting", inline = "Sto0")

GRSMA = "=== 🧮 SMA Filter Mode ==="
SMA_Mode = input.bool(defval = true, title = "🧮 SMA High and Low Filter Mode", group = GRSMA, tooltip = "Sell Signal With Open >= SMA High\nBuy Signal With Close <= SMA Low")
SMA_High = input.int(defval = 50, title = "SMA High", group = GRSMA, inline = "SMA1")
SMA_Low = input.int(defval = 50, title = "SMA Low", group = GRSMA, inline = "SMA1")

k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)
high_line = ta.sma(high, SMA_High)
low_line = ta.sma(low, SMA_Low)
plot(SMA_Mode ? high_line : na, "H-Line", color = color.yellow, linewidth = 2)
plot(SMA_Mode ? low_line : na, "L-Line", color = color.blue, linewidth = 2)

entrybuyprice = strategy.position_avg_price

var bool longcondition = na
var bool shortcondition = na

if SMA_Mode == true
    longcondition := ta.crossover(k,d) and d <= sto_buy and close < low_line and open < low_line// or ta.crossover(k, 20)// and close <= low_line
    shortcondition := ta.crossunder(k,d) and d >= sto_sell and close > high_line and open > high_line// or ta.crossunder(k, 80)// and close >= high_line
else
    longcondition := ta.crossover(k,d) and d <= sto_buy
    shortcondition := ta.crossunder(k,d) and d >= sto_sell
//longcondition_double = ta.crossover(d,20) and close < low_line// and strategy.position_size > 0
//shortcondition_double = ta.crossunder(d,80) and close > high_line// and strategy.position_size < 0

//=============== TAKE PROFIT and STOP LOSS by % =================

tpsl(percent) =>
    strategy.position_avg_price * percent / 100 / syminfo.mintick
GR4 = "=====🆘🆘🆘 TAKE PROFIT & STOP LOSS BY [%] 🆘🆘🆘====="
mode= input.bool(title="🆘 Take Profit & Stop Loss By Percent (%)", defval=true, group=GR4, tooltip = "Take Profit & Stop Loss by % Change\n0 = Disable")
tp_l = tpsl(input.float(0, title='🆘 TP [LONG] % >> [OneWay Only]', group=GR4, tooltip = "0 = Disable"))
tp_s = tpsl(input.float(0, title='🆘 TP [SHORT] % >> [OneWay Only]', group=GR4, tooltip = "0 = Disable"))
sl = tpsl(input.float(0, title='🆘 Stop Loss % [All Mode / 1st Position]', group=GR4, tooltip = "0 = Disable"))
tp_pnl = input.float(defval = 1, title = "🆘 TakeProfit by PNL ($) eg. (0.1 = 0.1$)", group = GR4, tooltip = "All Mode TP by PNL")
spread_size = input.float(defval = 0.350, title = "🆘 Spread Point Size(Eg. 35 Point or 350 Point From Your Broker Digits)", tooltip = "Spread Point Form Your Broker \nEg. 1920.124 - 1920.135 or 1920.12 - 1920.13\nPlease Check From Your Broker", group = GR4)

GR5 = "===💮💮💮 Hedge / Martingale Mode 💮💮💮==="
//hedge_mode = input.bool(defval = true, title = "⚖️ Hedge / Martingale Mode", group = GR5)
hedge_point = input.int(defval = 500, title = "💯 Hedge Point Range / Martingale Range", group = GR5, tooltip = "After Entry Last Position And Current Price More Than Point Range Are Open New Hedge Position")
hedge_gale = input.float(defval = 2.0, title = "✳️ Martingale For Hedge Multiply [default = 2]", tooltip = "Martingale For Multiply Hedge Order", group = GR5)
hedge_point_size = hedge_point/100

calcStopLossPrice(OffsetPts) =>
    if strategy.position_size > 0
        strategy.position_avg_price - OffsetPts * syminfo.mintick
    else if strategy.position_size < 0
        strategy.position_avg_price + OffsetPts * syminfo.mintick
    else
        na

calcStopLossL_AlertPrice(OffsetPts) =>
    strategy.position_avg_price - OffsetPts * syminfo.mintick
calcStopLossS_AlertPrice(OffsetPts) =>
    strategy.position_avg_price + OffsetPts * syminfo.mintick

calcTakeProfitPrice(OffsetPts) =>
    if strategy.position_size > 0
        strategy.position_avg_price + OffsetPts * syminfo.mintick
    else if strategy.position_size < 0
        strategy.position_avg_price - OffsetPts * syminfo.mintick
    else
        na

calcTakeProfitL_AlertPrice(OffsetPts) =>
    strategy.position_avg_price + OffsetPts * syminfo.mintick
calcTakeProfitS_AlertPrice(OffsetPts) =>
    strategy.position_avg_price - OffsetPts * syminfo.mintick

var stoploss = 0.
var stoploss_l = 0.
var stoploss_s = 0.
var takeprofit = 0.
var takeprofit_l = 0.
var takeprofit_s = 0.
var takeprofit_ll = 0.
var takeprofit_ss = 0.

if mode == true
    if (strategy.position_size > 0)
        if sl > 0
            stoploss := calcStopLossPrice(sl)
            stoploss_l := stoploss
        else if sl <= 0
            stoploss := na
        if tp_l > 0
            takeprofit := tp_l
            takeprofit_ll := close + ((close/100)*tp_l)
            //takeprofit_s := na
        else if tp_l <= 0
            takeprofit := na
    if (strategy.position_size < 0)
        if sl > 0
            stoploss := calcStopLossPrice(sl)
            stoploss_s := stoploss
        else if sl <= 0
            stoploss := na
        if tp_s > 0
            takeprofit := tp_s
            takeprofit_ss := close - ((close/100)*tp_s)
            //takeprofit_l := na
        else if tp_s <= 0
            takeprofit := na
    else if strategy.position_size == 0
        stoploss := na
        takeprofit := na
        //takeprofit_l := calcTakeProfitL_AlertPrice(tp_l)
        //takeprofit_s := calcTakeProfitS_AlertPrice(tp_s)
        //stoploss_l := calcStopLossL_AlertPrice(sl)
        //stoploss_s := calcStopLossS_AlertPrice(sl)

//////////// INPUT BACKTEST RANGE ////////////////////////////////////////////////////
var string BTR1         = '════════⌚⌚ INPUT BACKTEST TIME RANGE ⌚⌚════════'
i_startTime             = input(defval = timestamp("01 Jan 1945 00:00 +0000"), title = "Start", inline="timestart", group=BTR1, tooltip = 'Start Backtest YYYY/MM/DD')
i_endTime               = input(defval = timestamp("01 Jan 2074 23:59 +0000"), title = "End", inline="timeend", group=BTR1, tooltip = 'End Backtest YYYY/MM/DD')
//////////////// Strategy Alert For X4815162342 BOT //////////////////////
Text_Alert_Future = '{{strategy.order.alert_message}}'
copy_Fu = input( defval= Text_Alert_Future ,    title="Alert Message for BOT", inline = '00'  ,group = '═ Bot Setting ═ \n >> If You Dont Use Bot Just Pass It' ,tooltip = 'Alert For X48-BOT > Copy and Paste To Alert Function')
TimeFrame_input = input(defval= 'Input Your TimeFrame [1m, 15m, 1h, 4h, 1d ,1w]' ,    title="TimeFrame Text Alert", inline = '01'  ,group = '═ Bot Setting ═ \n >> If You Dont Use Bot Just Pass It', tooltip = "[1m, 15m, 1h, 4h, 1d ,1w]")
string Alert_EntryL = '🪙 Asset : {{ticker}} \n💱 Status : {{strategy.market_position}}\n🕛 TimeFrame : '+str.tostring(TimeFrame_input)+'\n💸 Price : {{strategy.order.price}} $\n✅ TP : '+str.tostring(takeprofit_ll)+' $\n❌ SL : '+str.tostring(stoploss_l)+' $\n⏰ Time : {{timenow}}'
string Alert_EntryS = '🪙 Asset : {{ticker}} \n💱 Status : {{strategy.market_position}}\n🕛 TimeFrame : '+str.tostring(TimeFrame_input)+'\n💸 Price : {{strategy.order.price}} $\n✅ TP : '+str.tostring(takeprofit_ss)+' $\n❌ SL : '+str.tostring(stoploss_s)+' $\n⏰ Time : {{timenow}}'
string Alert_TPSL = '🪙 Asset : {{ticker}}\n🕛 TimeFrame : '+str.tostring(TimeFrame_input)+'\n💹 {{strategy.order.comment}}\n💸 Price : {{strategy.order.price}} $\n⏰ Time : {{timenow}}'

if true
    if (longcondition and strategy.position_size == 0) or (longcondition and strategy.position_size < 0 and hedge_mode == 0)
        strategy.entry("Long", strategy.long, comment = "🌙", alert_message = Alert_EntryL)
    //if longcondition_double
    //    //strategy.cancel_all()
    //    strategy.entry("Long2", strategy.long, comment = "🌙🌙")
    //    //strategy.exit("Exit",'Long', qty_percent = 100 , profit = takeprofit, stop = stoploss, comment_profit = "TP💚L", comment_loss = "SL💚L")
    if (shortcondition and strategy.position_size == 0) or (shortcondition and strategy.position_size > 0 and hedge_mode == 0)
        strategy.entry("Short", strategy.short, comment = "👻", alert_message = Alert_EntryS)
        //strategy.exit("Exit",'Short', qty_percent = 100, profit = takeprofit, stop = stoploss, comment_profit = "TP❤️️S", comment_loss = "SL❤️️S")
    //if shortcondition_double
    //    //strategy.cancel_all()
    //    strategy.entry("Short2", strategy.short, comment = "👻👻")

if strategy.position_size > 0 and strategy.opentrades >= 1 and hedge_mode == 1
    entrypricel = strategy.opentrades.entry_price(strategy.opentrades - 1)
    callpointsize =  entrypricel - close
    lastsize = strategy.position_size
    if callpointsize >= hedge_point_size and longcondition
        strategy.order("Long2", strategy.long, qty = lastsize * hedge_gale, comment = "🌙⌛", alert_message = Alert_EntryL)
    if shortcondition
        strategy.order("Short2", strategy.short, qty = lastsize * hedge_gale, comment = "👻⌛", alert_message = Alert_EntryS)

else if strategy.position_size < 0 and strategy.opentrades >= 1 and hedge_mode == 1
    entryprices = strategy.opentrades.entry_price(strategy.opentrades - 1)
    callpointsize = (entryprices - close)* -1
    lastsize = (strategy.position_size) * -1
    if callpointsize >= hedge_point_size and shortcondition
        strategy.order("Short2", strategy.short, qty = lastsize * hedge_gale, comment = "👻⌛", alert_message = Alert_EntryS)
    if longcondition
        strategy.order("Long2", strategy.long, qty = lastsize * hedge_gale, comment = "🌙⌛", alert_message = Alert_EntryL)

if strategy.position_size > 0 and strategy.opentrades >= 1 and hedge_mode == 2
    entrypricel = strategy.opentrades.entry_price(strategy.opentrades - 1)
    callpointsize =  entrypricel - close
    lastsize = strategy.position_size
    if callpointsize >= hedge_point_size and longcondition
        strategy.order("Long2", strategy.long, qty = lastsize * hedge_gale, comment = "🌙⌛", alert_message = Alert_EntryL)

else if strategy.position_size < 0 and strategy.opentrades >= 1 and hedge_mode == 2
    entryprices = strategy.opentrades.entry_price(strategy.opentrades - 1)
    callpointsize = (entryprices - close)* -1
    lastsize = (strategy.position_size) * -1
    if callpointsize >= hedge_point_size and shortcondition
        strategy.order("Short2", strategy.short, qty = lastsize * hedge_gale, comment = "👻⌛", alert_message = Alert_EntryS)

last_price_l = (strategy.opentrades.entry_price(strategy.opentrades - 1) + (strategy.opentrades.entry_price(strategy.opentrades - 1)/100) * takeprofit) + spread_size
last_price_s = (strategy.opentrades.entry_price(strategy.opentrades - 1) - (strategy.opentrades.entry_price(strategy.opentrades - 1)/100) * takeprofit) - spread_size 
current_price = request.security(syminfo.tickerid, "1", close)
current_pricel = request.security(syminfo.tickerid, "1", close) + spread_size
current_prices = request.security(syminfo.tickerid, "1", close) - spread_size
//if mode == true
if strategy.position_size > 0 and strategy.openprofit >= tp_pnl and mode == true and hedge_mode == 1
    lastsize = strategy.position_size
    lastprofitorder = strategy.openprofit
    //if lastprofitorder >= 0.07
    //strategy.close('Long', qty = lastsize, comment = "TP💚L", alert_message = Alert_TPSL, immediately = true)
    strategy.cancel_all()
    strategy.close_all(comment = "TP💚PNL", alert_message = Alert_TPSL, immediately = true)
    //strategy.close_all(comment = "TP💚LH", alert_message = Alert_TPSL)
    //strategy.exit("Exit",'Long2', qty_percent = 100, profit = last_price_l, stop = stoploss, comment_profit = "TP💚LH", comment_loss = "SL💚LH", alert_message = Alert_TPSL)
    //strategy.exit("Exit",'Long', qty_percent = 100, profit = last_price_l, stop = stoploss, comment_profit = "TP💚L", comment_loss = "SL💚L", alert_message = Alert_TPSL)
else if strategy.position_size > 0 and strategy.openprofit < tp_pnl and mode == true and hedge_mode == 1
    strategy.exit("Exit",'Long', qty_percent = 100, stop = stoploss, comment_loss = "SL💚%L", alert_message = Alert_TPSL)

if strategy.position_size > 0 and strategy.openprofit >= tp_pnl and mode == true and hedge_mode == 2
    lastsize = strategy.position_size
    lastprofitorder = strategy.openprofit
    //if lastprofitorder >= 0.07
    //strategy.close('Long', qty = lastsize, comment = "TP💚L", alert_message = Alert_TPSL, immediately = true)
    strategy.cancel_all()
    strategy.close_all(comment = "TP💚PNL", alert_message = Alert_TPSL, immediately = true)
    //strategy.close_all(comment = "TP💚LH", alert_message = Alert_TPSL)
    //strategy.exit("Exit",'Long2', qty_percent = 100, profit = last_price_l, stop = stoploss, comment_profit = "TP💚LH", comment_loss = "SL💚LH", alert_message = Alert_TPSL)
    //strategy.exit("Exit",'Long', qty_percent = 100, profit = last_price_l, stop = stoploss, comment_profit = "TP💚L", comment_loss = "SL💚L", alert_message = Alert_TPSL)
else if strategy.position_size > 0 and strategy.openprofit < tp_pnl and mode == true and hedge_mode == 2
    strategy.exit("Exit",'Long', qty_percent = 100, stop = stoploss, comment_loss = "SL💚%L", alert_message = Alert_TPSL)

if strategy.position_size > 0 and mode == true and hedge_mode == 0
    //strategy.close_all(comment = "TP💚LH", alert_message = Alert_TPSL, immediately = true)
    strategy.exit("Exit",'Long', qty_percent = 100, profit = takeprofit, stop = stoploss, comment_profit = "TP💚%L", comment_loss = "SL💚%L", alert_message = Alert_TPSL)
    //strategy.exit("Exit",'Long', qty_percent = 100, profit = takeprofit, stop = stoploss, comment_profit = "TP💚LL", comment_loss = "SL💚L", alert_message = Alert_TPSL)

if strategy.position_size < 0 and strategy.openprofit >= tp_pnl and mode == true and hedge_mode == 1
    lastsize = (strategy.position_size) * -1
    lastprofitorder = strategy.openprofit
    //if lastprofitorder >= 0.07
    //strategy.close('Short', qty = lastsize, comment = "TP❤️️S", alert_message = Alert_TPSL, immediately = true)
    strategy.cancel_all()
    strategy.close_all(comment = "TP❤️️PNL", alert_message = Alert_TPSL, immediately = true)
    //strategy.close_all(comment = "TP❤️️SH", alert_message = Alert_TPSL)
    //strategy.exit("Exit",'Short2', qty_percent = 100, profit = last_price_s, stop = stoploss, comment_profit = "TP❤️️SH", comment_loss = "SL❤️️SH", alert_message = Alert_TPSL)
    //strategy.exit("Exit",'Short', qty_percent = 100, profit = last_price_s, stop = stoploss, comment_profit = "TP❤️️S", comment_loss = "SL❤️️S", alert_message = Alert_TPSL)
else if strategy.position_size < 0 and strategy.openprofit < tp_pnl and mode == true and hedge_mode == 1
    strategy.exit("Exit",'Short', qty_percent = 100, stop = stoploss, comment_loss = "SL❤️️%S", alert_message = Alert_TPSL)
if strategy.position_size < 0 and mode == true and hedge_mode == 0
    //strategy.close_all(comment = "TP❤️️SH", alert_message = Alert_TPSL, immediately = true)
    strategy.exit("Exit",'Short', qty_percent = 100, profit = takeprofit, stop = stoploss, comment_profit = "TP❤️️%S", comment_loss = "SL❤️️%S", alert_message = Alert_TPSL)
    //strategy.exit("Exit",'Short', qty_percent = 100, profit = takeprofit, stop = stoploss, comment_profit = "TP❤️️S", comment_loss = "SL❤️️S", alert_message = Alert_TPSL)

if strategy.position_size < 0 and strategy.openprofit >= tp_pnl and mode == true and hedge_mode == 2
    lastsize = (strategy.position_size) * -1
    lastprofitorder = strategy.openprofit
    //if lastprofitorder >= 0.07
    //strategy.close('Short', qty = lastsize, comment = "TP❤️️S", alert_message = Alert_TPSL, immediately = true)
    strategy.cancel_all()
    strategy.close_all(comment = "TP❤️️PNL", alert_message = Alert_TPSL, immediately = true)
    //strategy.close_all(comment = "TP❤️️SH", alert_message = Alert_TPSL)
    //strategy.exit("Exit",'Short2', qty_percent = 100, profit = last_price_s, stop = stoploss, comment_profit = "TP❤️️SH", comment_loss = "SL❤️️SH", alert_message = Alert_TPSL)
    //strategy.exit("Exit",'Short', qty_percent = 100, profit = last_price_s, stop = stoploss, comment_profit = "TP❤️️S", comment_loss = "SL❤️️S", alert_message = Alert_TPSL)
else if strategy.position_size < 0 and strategy.openprofit < tp_pnl and mode == true and hedge_mode == 2
    strategy.exit("Exit",'Short', qty_percent = 100, stop = stoploss, comment_loss = "SL❤️️%S", alert_message = Alert_TPSL)


//else if strategy.position_size < 0 and strategy.opentrades > 1
//    lastsize = (strategy.position_size) * -1
//    lastprofitorder = strategy.openprofit
//    if lastprofitorder >= 0.07
//        strategy.close_all(comment = "TP❤️️SS", alert_message = Alert_TPSL)

//===================== เรียกใช้  library =========================
import X4815162342/X48_LibaryStrategyStatus/2 as fuLi 
//แสดงผล Backtest

show_Net = input.bool(true,'Monitor Profit&Loss', inline = 'Lnet', group = '= PNL MONITOR SETTING =')
position_ = input.string('bottom_center','Position', options = ['top_right','middle_right','bottom_right','top_center','middle_center','bottom_center','middle_left','bottom_left'] , inline = 'Lnet')
size_i = input.string('auto','size', options = ['auto','tiny','small','normal'] , inline = 'Lnet') 
color_Net = input.color(color.blue,"" , inline = 'Lnet')
// fuLi.NetProfit_Show(show_Net , position_ , size_i,  color_Net )