وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ایجاد کاروں نے پین زبان کے تعارف کے سبق کو مقداری شکل دی

مصنف:ایجاد کاروں کی مقدار - خواب, تخلیق: 2022-05-30 16:23:43, تازہ کاری: 2022-09-28 17:10:21

آپ کا شکریہ۔ 2،trail_offsetپیرامیٹرز: ٹریکنگ سٹاپ نقصان روک تھام کے عمل کو انجام دینے کے بعد، رکھی گئی فاصلہ سب سے زیادہ قیمت (جب زیادہ کام) یا سب سے کم قیمت (جب خالی) کے درمیان فاصلہ ہے۔ 3،trail_pointsپیرامیٹرز: جیسےtrail_priceآپ کے پاس اس کے بارے میں کچھ بھی نہیں ہے.

یہ سمجھنے میں آسان نہیں ہے ، ٹھیک ہے! ہم سیکھنے کو سمجھنے کے لئے ایک حکمت عملی کے ساتھ آتے ہیں ، جو حقیقت میں بہت آسان ہے۔

/*backtest
start: 2022-09-23 00:00:00
end: 2022-09-23 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
args: [["RunMode",1,358374],["ZPrecision",0,358374]]
*/

strategy("test", overlay = true)

varip a = na
varip highPrice = na
varip isTrade = false 
varip offset = 30

if not barstate.ishistory and not isTrade
    strategy.entry("test 1", strategy.long, 1)
    strategy.exit("exit 1", "test 1", 1, trail_price=close+offset, trail_offset=offset)
    a := close + offset
    runtime.log("每点价格为:", syminfo.mintick, ",当前close:", close)
    isTrade := true 

if close > a and not barstate.ishistory
    highPrice := na(highPrice) ? close : highPrice
    highPrice := close > highPrice ? close : highPrice

plot(a, "trail_price 触发线")    
plot(strategy.position_size>0 ? highPrice : na, "当前最高价")
plot(strategy.position_size>0 ? highPrice-syminfo.mintick*offset : na, "移动止损触发线")

img

img

img

اسٹریٹجی شروع ہونے پر فوری طور پر ایک سے زیادہ سرخیوں میں داخل ہوں اور پھر فوری طور پر اگلے پر جائیںstrategy.exitباہر نکلنے کا آرڈر (اسٹاپ نقصان کی روک تھام کے پیرامیٹرز کی وضاحت کی گئی ہے) ، جب مارکیٹ میں تبدیلی کی قیمت ٹریل_پریس ٹرگر لائن سے زیادہ بڑھتی ہے تو ، ٹریل اسٹاپ نقصان کی روک تھام کے منطق کو انجام دینے کے لئے شروع ہوتا ہے ، اسٹاپ نقصان کی روک تھام کی لائن (بلیو) سب سے زیادہ قیمت کی متحرک ایڈجسٹمنٹ کی پیروی کرنے کے لئے شروع ہوتی ہے ، نیلی لائن کی جگہ اسٹاپ نقصان کی روک تھام کی روک تھام کی روک تھام کی روک تھام کی قیمت ہے ، اور آخر میں جب مارکیٹ میں تبدیلی کی قیمت نیلی لائن کو توڑ دیتی ہے تو اس کی روک تھام کی روک تھام ہوتی ہے۔ اس طرح کے مجموعے میں چارٹ پر کھینچی گئی لائن کو سمجھنا آسان ہے یا نہیں۔

تو ہم اس فنکشن کو استعمال کرتے ہیں ایک سپر ٹرینڈنگ حکمت عملی کو بہتر بنانے کے لئے، ہم صرف اس حکمت عملی کے لئے ایک انٹری آرڈر کی وضاحت کرتے ہیں.strategy.exitاس کے علاوہ، آپ کو اپنے سفر کی منصوبہ بندی کی فہرست میں اس ٹریک کو شامل کرنے کی ضرورت ہے، جس میں آپ کو روکنے اور روکنے کی صلاحیت ہے.

if not barstate.ishistory and findOrderIdx("open") >= 0 and state == 1
    trail_price := strategy.position_size > 0 ? close + offset : close - offset
    strategy.exit("exit", "open", 1, trail_price=trail_price, trail_offset=offset)
    runtime.log("每点价格为:", syminfo.mintick, ",当前close:", close, ",trail_price:", trail_price)
    state := 2 
    tradeBarIndex := bar_index

مکمل حکمت عملی کا کوڈ:

/*backtest
start: 2022-05-01 00:00:00
end: 2022-09-27 00:00:00
period: 1d
basePeriod: 5m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
args: [["RunMode",1,358374],["ZPrecision",0,358374]]
*/

varip trail_price = na
varip offset = input(50, "offset")
varip tradeBarIndex = 0
// 0 : idle , 1 current_open , 2 current_close
varip state = 0  

findOrderIdx(idx) =>
    ret = -1 
    if strategy.opentrades == 0 
        ret
    else 
        for i = 0 to strategy.opentrades - 1 
            if strategy.opentrades.entry_id(i) == idx
                ret := i 
                break
        ret

if strategy.position_size == 0 
    trail_price := na 
    state := 0

[superTrendPrice, dir] = ta.supertrend(input(2, "atr系数"), input(20, "atr周期"))

if ((dir[1] < 0 and dir[2] > 0) or (superTrendPrice[1] > superTrendPrice[2])) and state == 0 and tradeBarIndex != bar_index
    strategy.entry("open", strategy.long, 1)
    state := 1
else if ((dir[1] > 0 and dir[2] < 0) or (superTrendPrice[1] < superTrendPrice[2])) and state == 0 and tradeBarIndex != bar_index
    strategy.entry("open", strategy.short, 1)
    state := 1


// 反向信号,全平
if strategy.position_size > 0 and dir[2] < 0 and dir[1] > 0
    strategy.cancel_all()
    strategy.close_all()
    runtime.log("趋势反转,多头全平")
else if strategy.position_size < 0 and dir[2] > 0 and dir[1] < 0
    strategy.cancel_all()
    strategy.close_all()
    runtime.log("趋势反转,空头全平")


if not barstate.ishistory and findOrderIdx("open") >= 0 and state == 1
    trail_price := strategy.position_size > 0 ? close + offset : close - offset
    strategy.exit("exit", "open", 1, trail_price=trail_price, trail_offset=offset)
    runtime.log("每点价格为:", syminfo.mintick, ",当前close:", close, ",trail_price:", trail_price)
    state := 2 
    tradeBarIndex := bar_index


plot(superTrendPrice, "superTrendPrice", color=dir>0 ? color.red : color.green, overlay=true)

مزید