avatar of 发明者量化-小小梦 发明者量化-小小梦
پر توجہ دیں نجی پیغام
4
پر توجہ دیں
1271
پیروکار

پائن زبان کا استعمال کرتے ہوئے ایک نیم خودکار تجارتی ٹول لکھیں۔

میں تخلیق کیا: 2022-09-29 14:36:32, تازہ کاری: 2024-11-29 19:01:54
comments   0
hits   2561

پائن زبان کا استعمال کرتے ہوئے ایک نیم خودکار تجارتی ٹول لکھیں۔

پائن زبان کا استعمال کرتے ہوئے ایک نیم خودکار تجارتی ٹول لکھیں۔

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

پیرامیٹر ڈیزائن

پائن لینگویج کا استعمال کرتے ہوئے اس طرح کے تقاضوں کو ڈیزائن کرنے کی حکمت عملی بہت آسان ہے تقاضوں کے مطابق افعال کو لاگو کرنے کے لیے درج ذیل پیرامیٹرز کو ڈیزائن کرنے کی ضرورت ہے۔

  1. آفسیٹ: جب ٹریلنگ ٹیک پرافٹ کو متحرک کیا جاتا ہے، تو ٹیک پرافٹ لائن کے آفسیٹ فاصلے کا تعین کرنے کے لیے سب سے زیادہ قیمت اور سب سے کم قیمت کو آف سیٹ کیا جاتا ہے۔
  2. حد: پیرامیٹر کو کنٹرول کرنے کے لیے استعمال کیا جاتا ہے - A. ابتدائی بنیاد پر براہ راست خریدیں، B. ایک مخصوص قیمت پر خریدنے کا انتظار کریں، C. کچھ نہ کریں۔
  3. رقم: آرڈر کی مقدار جب بیس گودام کھولا جاتا ہے۔
  4. نقصان: سٹاپ نقصان پوائنٹس۔
  5. targetOffset: قیمت کا فرق جو ٹریلنگ ٹیک پرافٹ کو متحرک کرتے وقت ابتدائی قیمت کو پورا کرتا ہے۔
  6. منٹ ٹک: قیمت میں ایک اضافہ۔
  7. سمت: بیس پوزیشن کو کھولنے کی سمت۔

ڈیزائن کی حکمت عملی

/*backtest
start: 2022-09-24 00:00:00
end: 2022-09-27 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
args: [["v_input_1",20],["v_input_2",0],["v_input_4",50],["v_input_5",20],["RunMode",1,358374],["ZPrecision",0,358374],["XPrecision",3,358374]]
*/

strategy("跟踪止损止盈委托", overlay = true)

varip targetPrice = na
varip high_lowPrice = na
varip isTrade = false 
varip isAlert = false
varip isAlertMinTick = false
varip isAlertFinished = false 

varip offset = input(30, "offset", "跟踪止损止盈偏移")
varip limit = input(-1, "limit", "初始开仓价格,-1为不开仓,0为立即开仓,其它具体数值为限价价格")
varip amount = input(1, "amount", "开仓量")
varip loss = input(30, "loss", "止损")
varip targetOffset = input(30, "targetOffset", "触发跟踪止盈止损偏移量")
varip minTick = input(1, "minTick", "价格一跳")
tradeType = input.string("long", "direction", tooltip="下单方向,long做多,short做空", options=["long", "short"])

if not barstate.ishistory and not isAlertMinTick
    runtime.log("检查syminfo.mintick是否正确!syminfo.mintick:", syminfo.mintick, "#FF0000")
    if syminfo.mintick < minTick 
        runtime.error("系统syminfo.mintick < minTick参数", "#FF0000")
    isAlertMinTick := true 

if not barstate.ishistory and limit == -1 and not isAlert
    runtime.log("没有设置开仓价格,当前limit为-1(防止误开仓,初始默认limit为-1),禁止开仓", "#FF0000")
    isAlert := true 

if isTrade and strategy.position_size == 0 and not isAlertFinished
    runtime.log("所有委托流程执行完毕,仓位为0", "#FF0000")
    isAlertFinished := true 

if not barstate.ishistory and not isTrade and limit != -1
    if limit == 0 
        strategy.entry("open", tradeType == "long" ? strategy.long : strategy.short, amount)
    else if limit > 0 
        strategy.entry("open", tradeType == "long" ? strategy.long : strategy.short, amount, limit=limit)
    
    if tradeType == "long"
        targetPrice := (limit == 0 ? close : limit) + targetOffset
    else 
        targetPrice := (limit == 0 ? close : limit) - targetOffset
    strategy.exit("exit", "open", amount, loss=loss, trail_price=targetPrice, trail_offset=offset)
    runtime.log("每点价格为:", syminfo.mintick, ",当前close:", close)
    isTrade := true 

if ((close > targetPrice and strategy.position_size > 0) or (close < targetPrice and strategy.position_size < 0)) and not barstate.ishistory
    high_lowPrice := na(high_lowPrice) ? close : high_lowPrice
    if strategy.position_size > 0 
        high_lowPrice := close > high_lowPrice ? close : high_lowPrice
    else 
        high_lowPrice := close < high_lowPrice ? close : high_lowPrice

plot(targetPrice, "trail_price 触发线")    
plot(strategy.position_size!=0 ? high_lowPrice : na, "当前最高价/最低价")
plot(strategy.position_size!=0 ? (strategy.position_size > 0 ? high_lowPrice-syminfo.mintick*offset : high_lowPrice+syminfo.mintick*offset) : na, "移动止损触发线")

حکمت عملی کا ڈیزائن پیچیدہ نہیں ہے اسے استعمال کرتے وقت، اسے عام طور پر “ریئل ٹائم پرائس ماڈل” پر سیٹ کرنے کی ضرورت ہوتی ہے کیونکہ قیمت کو ہر لمحہ چیک کرنے کی ضرورت ہوتی ہے۔

پائن زبان کا استعمال کرتے ہوئے ایک نیم خودکار تجارتی ٹول لکھیں۔

نوٹ کریں کہ پیرامیٹرز میں سٹاپ نقصان کا اظہار پوائنٹس (ایک قیمت میں چھلانگ) میں کیا جاتا ہے، اور آفسیٹ ٹریکنگ ٹیک پرافٹ آفسیٹ کو بھی پوائنٹس (ایک قیمت میں چھلانگ) میں ظاہر کیا جاتا ہے۔ targetOffset ٹیک-پرافٹ ٹرگر لائن کے آفسیٹ کو ٹریک کرتا ہے اور اسے قیمت کے فاصلے میں ظاہر کیا جاتا ہے (مثال کے طور پر، اگر آپ اسے 30 پر سیٹ کرتے ہیں، تو اس کا مطلب ہے 30 یوآن کا فاصلہ)۔ جب قیمت میں چھلانگ 1 ہے، 30 چھلانگ کا مطلب ہے 30 یوآن کا فاصلہ۔

یہ ٹرسٹمنٹ حکمت عملی نہ صرف ابتدائی لمبی پوزیشنوں کی اجازت دینے کے لیے بنائی گئی ہے بلکہ ابتدائی مختصر پوزیشنوں کی اجازت دینے کے لیے بھی بنائی گئی ہے۔ پھر سٹاپ نقصان اور ٹریلنگ منافع کو مختصر فروخت کی سمت کے مطابق سنبھالا جائے گا۔

آئیے ڈیزائن کے ذریعہ نافذ کردہ افعال کا مظاہرہ کریں:

1. جب یہ حکمت عملی چل رہی ہو، فوری طور پر ایک بنیادی پوزیشن کھولیں اور پھر پیرامیٹرز کے مطابق سٹاپ نقصان اور ٹریلنگ ٹیک پرافٹ سیٹ کریں۔

پائن زبان کا استعمال کرتے ہوئے ایک نیم خودکار تجارتی ٹول لکھیں۔

سمت لمبی پر سیٹ کی گئی ہے، حد کا پیرامیٹر 0 پر سیٹ کیا گیا ہے، جس کا مطلب ہے کہ حکمت عملی مارکیٹ میں داخل ہو جائے گی اور جب چلائی جائے گی تو فوراً ہی لمبی ہو جائے گی، اور رقم 1 پر سیٹ ہو گی، اور حکمت عملی 1 کی پوزیشن کھولے گی۔ معاہدہ

پائن زبان کا استعمال کرتے ہوئے ایک نیم خودکار تجارتی ٹول لکھیں۔

2. حد پیرامیٹر اور اندراج کی قیمت کی وضاحت کریں۔

دیگر پیرامیٹر سیٹنگز میں کوئی تبدیلی نہیں ہوئی، صرف حد پیرامیٹر کی قیمت اس طرح بیان کریں: 1276

پائن زبان کا استعمال کرتے ہوئے ایک نیم خودکار تجارتی ٹول لکھیں۔

3. پہلے سے طے شدہ حد پیرامیٹر -1 ہے، جس کا مطلب ہے کہ پوزیشنوں کو حادثاتی طور پر کھولنے سے روکنے کے لیے کوئی آپریشن نہیں کیا جاتا ہے۔

پائن زبان کا استعمال کرتے ہوئے ایک نیم خودکار تجارتی ٹول لکھیں۔

THE END

پائن لینگویج اسٹریٹجی کا استعمال کرتے وقت، پرائس جمپ ​​ڈیٹا پر خصوصی توجہ دیں۔ نظام کی مخصوص قیمت چھلانگ پیرامیٹرز میں “پرائسنگ کرنسی کی درستگی” سے متعلق ہے۔

پائن زبان کا استعمال کرتے ہوئے ایک نیم خودکار تجارتی ٹول لکھیں۔

“قیمتوں کا تعین کرنسی کی درستگی” کا پیرامیٹر 0 پر سیٹ کیا گیا ہے، جس کا مطلب ہے کہ قیمت کے اعداد و شمار کی قدر یونٹ ہندسے کے لیے درست ہے (یعنی اعشاریہ مقامات کی تعداد 0 ہے)۔ پھر قیمت کی تبدیلی کی کم از کم اکائی 1 ہے۔ چونکہ کچھ پیرامیٹرز کا تعلق قیمت میں اضافے سے ہے، اس لیے اس مقام پر خصوصی توجہ دی جانی چاہیے۔

ٹھیک ہے، مندرجہ بالا اس نیم خودکار ٹرسٹمنٹ حکمت عملی کا مکمل ڈیزائن مواد ہے، حالانکہ میں اسے حقیقی تجارت میں بھی استعمال کرتا ہوں۔ تاہم، ایسے ٹولز کو آپ کی اپنی تجارتی عادات کے مطابق سمجھنا اور استعمال کرنا چاہیے، اور آپ خود ان میں ترمیم اور اصلاح کر سکتے ہیں۔ یہاں حکمت عملی کوڈ صرف عوامی اشتراک، مواصلات اور ڈیزائن کے طریقوں اور منطق کو سیکھنے کے لیے ہے۔

یہ دیکھا جا سکتا ہے کہ پائن زبان استعمال کرنے میں بہت آسان، آسان اور سیکھنے میں آسان ہے۔ ہم پیچیدہ پروگرام ڈیزائن کے بارے میں فکر کیے بغیر اپنے مطلوبہ ٹولز کو تیزی سے ڈیزائن کرنے کے لیے پائن لینگویج کا استعمال کر سکتے ہیں۔