اگرچہ زیادہ سے زیادہ تاجر ایسے ہیں جو مکمل طور پر خودکار تجارت کے لئے پروگرام لکھتے ہیں ، تاجروں کا بڑا گروہ اب بھی دستی تاجر ہے۔ در حقیقت ، دستی ذہنی تاجر اپنے ذہنی تجارت میں ان کی مدد کے لئے چھوٹے ٹولز بھی لکھ سکتے ہیں۔ مثال کے طور پر ، بعض اوقات آپ کو ایک اچھی انٹری پوزیشن مل جاتی ہے اور ابتدائی پوزیشن پر فکسڈ اسٹاپ نقصان اور ٹریلنگ منافع طے کرنے کا منصوبہ بناتے ہیں۔ پھر بعد میں مارکیٹ کی نگرانی جیسی زیادہ توانائی سے بھرپور چیزوں سے گریز کریں ، اپنے قائم کردہ اسٹاپ نقصان اور منافع لینے کے منصوبے کی عین مطابق پیروی کریں ، اور پروگرام کو آپ کے لئے مارکیٹ کی نگرانی کرنے دیں۔ ہارنے کے لئے نقصان کو روکیں ، دستی تجارت میں مدد کے لئے جیتنے کے لئے منافع کو پیچھے چھوڑیں۔
پائین زبان کا استعمال کرتے ہوئے اس طرح کی ضروریات کو ڈیزائن کرنے کی حکمت عملی بہت آسان ہے۔ ضروریات کے مطابق فنکشن کو حاصل کرنے کے لئے درج ذیل پیرامیٹرز کو ڈیزائن کرنے کی ضرورت ہے۔
/*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("Tracking loss and profit stopping entrustment", 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", "Tracking stop loss and stop profit offset")
varip limit = input(-1, "limit", "Initial opening price: - 1 means no opening, 0 means immediate opening, and other specific values are price limits")
varip amount = input(1, "amount", "amount of opening positions")
varip loss = input(30, "loss", "stop loss")
varip targetOffset = input(30, "targetOffset", "trigger tracking profit and loss stop offset")
varip minTick = input(1, "minTick", "the minimum unit of price fluctuation")
tradeType = input.string("long", "direction", tooltip="order direction, long: go long, short: go short", options=["long", "short"])
if not barstate.ishistory and not isAlertMinTick
runtime.log("check whether syminfo.mintick is correct! syminfo.mintick:", syminfo.mintick, "#FF0000")
if syminfo.mintick < minTick
runtime.error("system syminfo.mintick < minTick parameter", "#FF0000")
isAlertMinTick := true
if not barstate.ishistory and limit == -1 and not isAlert
runtime.log("No open price is set, current limit is -1 (to prevent false openings, initial default limit is -1), openings are prohibited", "#FF0000")
isAlert := true
if isTrade and strategy.position_size == 0 and not isAlertFinished
runtime.log("All order processes executed, position is 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("The price per point is:", syminfo.mintick, ", current 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 trigger line")
plot(strategy.position_size!=0 ? high_lowPrice : na, "current highest/lowest price")
plot(strategy.position_size!=0 ? (strategy.position_size > 0 ? high_lowPrice-syminfo.mintick*offset : high_lowPrice+syminfo.mintick*offset) : na, "moving stop loss trigger line")
حکمت عملی کا ڈیزائن پیچیدہ نہیں ہے، لیکن اسے
نوٹ کریں کہ اسٹاپ نقصان کو پوائنٹس (minTick) میں ظاہر کیا جاتا ہے اور آفسیٹ کو بھی پوائنٹس (minTick) میں ظاہر کیا جاتا ہے۔ ہدف آفسیٹ ٹریلنگ اسٹاپ منافع ٹرگر لائن کا آفسیٹ قیمت کے فاصلے کے لحاظ سے ظاہر کیا جاتا ہے (مثال کے طور پر ، 30 پر مقرر کیا جاتا ہے ، جو فاصلے کے لئے RMB30 ہے۔ جب من ٹِک 1 ہے تو ، 30 کا مطلب فاصلے کے لئے RMB30 ہے۔
اس کمیشن کی حکمت عملی کو نہ صرف ابتدائی بیس پوزیشنوں کو طویل کرنے کی اجازت دینے کے لئے ڈیزائن کیا گیا ہے ، بلکہ ابتدائی بیس پوزیشنوں کو مختصر کرنے کی بھی اجازت ہے۔ پھر اسٹاپ نقصان اور ٹریلنگ منافع کو مختصر سمت میں سنبھالا جاتا ہے۔
چلو مندرجہ ذیل کے طور پر ڈیزائن کے نفاذ کا مظاہرہ:
1. جب حکمت عملی چل رہی ہے تو ، بیس پوزیشن کو فوری طور پر کھولا اور داخل کیا جائے گا ، اور پھر پیرامیٹرز کے مطابق اسٹاپ نقصان اور ٹریکنگ اسٹاپ منافع مقرر کیا جائے گا۔
سمت طویل پر مقرر کیا جاتا ہے، حد پیرامیٹر 0 پر مقرر کیا جاتا ہے، یہ ہے کہ، حکمت عملی میں داخل ہونے اور فوری طور پر جب یہ چل رہا ہے طویل جانے دو، رقم 1 پر مقرر کیا جاتا ہے، یہ ہے کہ، حکمت عملی 1 معاہدے کی پوزیشن کھولنے.
2. حد پیرامیٹر کی وضاحت کریں، داخلہ کی قیمت کی وضاحت کریں
دیگر پیرامیٹر کی ترتیبات میں کوئی تبدیلی نہیں آئی ہے، سوائے اس کے کہ پیرامیٹر کی مخصوص حد کی قیمت: 1276 ہے۔
ڈیفالٹ حد پیرامیٹر ہے - 1، جو کچھ بھی کام نہیں کرتا اور پوزیشنوں کی حادثاتی افتتاحی کو روکتا ہے
پائن زبان کی حکمت عملی کا استعمال کرتے وقت ، minTick کے اعداد و شمار پر خصوصی توجہ دینا ضروری ہے۔ سسٹم میں قیمت کے منٹ ٹِک کی عین مطابق تعداد پیرامیٹر میں
پیرامیٹر
ٹھیک ہے ، مذکورہ بالا اس نیم خودکار کمیشن حکمت عملی کا پورا ڈیزائن ہے ، حالانکہ میں اسے اصلی بوٹ ٹریڈنگ کے لئے بھی استعمال کرتا ہوں۔ لیکن اس طرح کے ٹولز کو سمجھنے کے ل your آپ کی اپنی تجارتی عادات کے مطابق بھی استعمال کرنا چاہئے ، مخصوص ترمیم ، اصلاحات خود ہی کی جاسکتی ہیں۔ یہاں حکمت عملی کا کوڈ صرف عوامی اشتراک ، تبادلہ سیکھنے کے ڈیزائن اور منطق کے لئے ہے۔
جیسا کہ ہم دیکھ سکتے ہیں ، پائن زبان استعمال کرنا بہت آسان ہے ، اور یہ آسان اور سیکھنا آسان ہے۔ ہم پیچیدہ پروگرامنگ کے بارے میں فکر کرنے کے بغیر ، تیزی سے مطلوبہ ٹولز کو ڈیزائن کرنے کے لئے پائن زبان کا استعمال کرسکتے ہیں ، اور ایف ایم زیڈ کی کوانٹیٹیٹیو ٹریڈنگ پلیٹ فارم پر مقداری تجارت کو آسان بنانے کے لئے پائن زبان کا استعمال کرسکتے ہیں۔