3
پر توجہ دیں
1444
پیروکار

دستی تجارت کی سہولت کے لیے ٹریڈنگ ٹرمینل پلگ ان استعمال کریں۔

میں تخلیق کیا: 2020-02-29 21:04:52, تازہ کاری: 2023-10-12 21:21:40
comments   2
hits   4054

[TOC] دستی تجارت کی سہولت کے لیے ٹریڈنگ ٹرمینل پلگ ان استعمال کریں۔

تعارف

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

دستی تجارت کی سہولت کے لیے ٹریڈنگ ٹرمینل پلگ ان استعمال کریں۔

پلگ ان کا اصول

پلگ ان آپریشن کے لیے دو طریقے ہیں: فوری آپریشن اور بیک گراؤنڈ آپریشن۔ پس منظر میں چلنا ایک روبوٹ بنانے کے مترادف ہے (عام چارجز لاگو ہوتے ہیں)۔ فوری آپریشن کا اصول وہی ہے جو ڈیبگنگ ٹول کا ہے: کوڈ کا ایک ٹکڑا ٹریڈنگ ٹرمینل پیج کے کسٹوڈین کو عمل درآمد کے لیے بھیجیں، اور چارٹس اور ٹیبلز کی واپسی کی حمایت کریں (ڈیبگنگ ٹول بھی اس وقت اس کی حمایت کے لیے اپ گریڈ کیا گیا ہے۔ اسی طرح، یہ صرف 5 منٹ کے لیے، بلا معاوضہ، اور لامحدود زبان کے لیے چلایا جا سکتا ہے۔ بہت کم عمل آوری کے اوقات والے پلگ ان فوری طور پر رن ​​موڈ کا استعمال کر سکتے ہیں، جبکہ پیچیدہ حکمت عملی جن کو چلانے کے لیے طویل وقت درکار ہوتا ہے پھر بھی چلانے والے روبوٹس کی ضرورت ہوتی ہے۔

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

استعمال کرنے کا طریقہ

  • 1. ایک حکمت عملی شامل کریں۔

جیسا کہ دکھایا گیا ہے براہ راست سرچ باکس میں تلاش کریں۔نوٹ کریں کہ صرف ٹریڈنگ پلگ ان قسم کی حکمت عملی چلائی جا سکتی ہے۔، اور پھر شامل کریں پر کلک کریں۔ عوامی پلگ ان Strategy Square پر مل سکتے ہیں: https://www.fmz.com/square/21/1

دستی تجارت کی سہولت کے لیے ٹریڈنگ ٹرمینل پلگ ان استعمال کریں۔ دستی تجارت کی سہولت کے لیے ٹریڈنگ ٹرمینل پلگ ان استعمال کریں۔

  • 2. پلگ ان چلائیں۔

پیرامیٹر سیٹنگ انٹرفیس میں داخل ہونے کے لیے حکمت عملی پر کلک کریں اگر کوئی پیرامیٹرز نہیں ہیں، تو یہ براہ راست چلائے گا، ٹریڈنگ ٹرمینل کی طرف سے منتخب کردہ K-line پیریڈ ڈیفالٹ متعلقہ پیرامیٹرز ہیں۔ عمل درآمد شروع کرنے کے لیے ایگزیکیوشن پالیسی پر کلک کریں، اور “ایکسکیوٹ ناؤ” موڈ کو منتخب کریں (آپ ڈیفالٹ رننگ موڈ کو یاد رکھ سکتے ہیں)۔ پلگ ان لاگ ان نہیں دکھائے گا۔

دستی تجارت کی سہولت کے لیے ٹریڈنگ ٹرمینل پلگ ان استعمال کریں۔

  • 3. پلگ ان کو روکیں۔

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

دستی تجارت کی سہولت کے لیے ٹریڈنگ ٹرمینل پلگ ان استعمال کریں۔

پلگ ان کے استعمال کی مثالیں۔

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

اسسٹڈ مینوئل فیوچرز کراس پیریڈ ہیجنگ

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

پہلی چیز جو میں متعارف کرانا چاہتا ہوں وہ ہے کراس پیریڈ قیمت میں فرق پلگ ان:

var chart = { 
   __isStock: true,    
   title : { text : '差价分析图'},                     
   xAxis: { type: 'datetime'},                 
   yAxis : {                                        
       title: {text: '差价'},                   
       opposite: false,                             
   },
   series : [                    
       {name : "diff", data : []}, 

   ]
}
function main() {
   exchange.SetContractType('quarter')
   var recordsA = exchange.GetRecords(PERIOD_M5) //周期可以自行定制
   exchange.SetContractType('this_week')
   var recordsB = exchange.GetRecords(PERIOD_M5)
   
   for(var i=0;i<Math.min(recordsA.length,recordsB.length);i++){
       var diff = recordsA[recordsA.length-Math.min(recordsA.length,recordsB.length)+i].Close - recordsB[recordsB.length-Math.min(recordsA.length,recordsB.length)+i].Close
       chart.series[0].data.push([recordsA[recordsA.length-Math.min(recordsA.length,recordsB.length)+i].Time, diff])
   }
   return chart
}

ایک کلک کے ساتھ، آپ پلگ ان کے ماخذ کوڈ کاپی ایڈریس: https://www.fmz.com/strategy/187755 کے حالیہ انٹر پیریڈ اسپریڈز کو دیکھ سکتے ہیں۔ دستی تجارت کی سہولت کے لیے ٹریڈنگ ٹرمینل پلگ ان استعمال کریں۔

پھیلاؤ کے تجزیے کے ساتھ، آپ کو معلوم ہوتا ہے کہ اسپریڈ کنور ہو رہا ہے، جو کہ سہ ماہی معاہدے کو مختصر کرنے کا موقع ہے اور اس وقت، آپ ایک کلک کے ساتھ ہیجنگ پلگ ان کا استعمال کر سکتے ہیں۔ خود بخود آپ کو سہ ماہی معاہدے کو مختصر کرنے اور موجودہ ہفتہ کو طویل کرنے میں مدد کرتا ہے، جو کہ دستی آپریشن سے زیادہ تیز ہے۔ حکمت عملی کے نفاذ کا اصول یہ ہے کہ آپ دھیرے دھیرے مطلوبہ پوزیشن تک پہنچنے کے لیے اسے کئی بار چلا سکتے ہیں اور آپ آرڈر دینے کے لیے پہلے سے طے شدہ پیرامیٹرز کو تبدیل کر سکتے ہیں۔ حکمت عملی کاپی ایڈریس: https://www.fmz.com/strategy/191348

function main(){
    exchange.SetContractType(Reverse ? Contract_B : Contract_A)
    var ticker_A = exchange.GetTicker()
    if(!ticker_A){return 'Unable to get quotes'}
    exchange.SetDirection('buy')
    var id_A = exchange.Buy(ticker_A.Sell+Slip, Amount)
    exchange.SetContractType(Reverse ? Contract_B : Contract_A)
    var ticker_B = exchange.GetTicker()
    if(!ticker_B){return 'Unable to get quotes'}
    exchange.SetDirection('sell')
    var id_B = exchange.Sell(ticker_B.Buy-Slip, Amount)
    if(id_A){
        exchange.SetContractType(Reverse ? Contract_B : Contract_A)
        exchange.CancelOrder(id_A)
    }
    if(id_B){
        exchange.SetContractType(Reverse ? Contract_B : Contract_A)
        exchange.CancelOrder(id_B)
    }
    return 'Position: ' + JSON.stringify(exchange.GetPosition())
}

قیمت کے فرق کے اکٹھے ہونے کا انتظار کرتے ہوئے، اگر آپ کو پوزیشن کو بند کرنے کی ضرورت ہے، تو آپ سب سے تیز رفتاری سے پوزیشن کو بند کرنے کے لیے ون کلک کلوزنگ پلگ ان چلا سکتے ہیں۔


function main(){
    while(ture){
        var pos = exchange.GetPosition()
        var ticker = exchange.GetTicekr()
        if(!ticker){return '无法获取ticker'}
        if(!pos || pos.length == 0 ){return '已无持仓'}
        for(var i=0;i<pos.length;i++){
            if(pos[i].Type == PD_LONG){
                exchange.SetContractType(pos[i].ContractType)
                exchange.SetDirection('closebuy')
                exchange.Sell(ticker.Buy, pos[i].Amount - pos[i].FrozenAmount)
            }
            if(pos[i].Type == PD_SHORT){
                exchange.SetContractType(pos[i].ContractType)
                exchange.SetDirection('closesell')
                exchange.Buy(ticker.Sell, pos[i].Amount - pos[i].FrozenAmount)
            }
        }
        var orders = exchange.Getorders()
        Sleep(500)
        for(var j=0;j<orders.length;j++){
            if(orders[i].Status == ORDER_STATE_PENDING){
                exchange.CancelOrder(orders[i].Id)
            }
        }
    }
}

اسسٹڈ اسپاٹ ٹریڈنگ

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

درج ذیل کوڈ آئس برگ آرڈر خریدنے والے پلگ ان کا سورس کوڈ ہے: https://www.fmz.com/strategy/191771۔ ماخذ کوڈ فروخت کریں: https://www.fmz.com/strategy/191772

function main(){
    var initAccount = _C(exchange.GetAccount)
    while(true){
        var account = _C(exchange.GetAccount)
        var dealAmount = account.Stocks - initAccount.Stocks
        var ticker = _C(exchange.GetTicker)
        if(BUYAMOUNT - dealAmount >= BUYSIZE){
            var id = exchange.Buy(ticker.Sell, BUYSIZE)
            Sleep(INTERVAL*1000)
            if(id){
                exchange.CancelOrder(id) // May cause error log when the order is completed, which is all right.
            }else{
                throw 'buy error'
            }
        }else{
            account = _C(exchange.GetAccount)
            var avgCost = (initAccount.Balance - account.Balance)/(account.Stocks - initAccount.Stocks)
            return 'Iceberg order to buy is done, avg cost is '+avgCost
        }
        
    }
}

ہمیشہ ایک خریدنا یا ایک قیمت فروخت کرنا بھی سامان کو آہستہ آہستہ بھیجنے کا ایک طریقہ ہے، جس کا بازار پر نسبتاً کم اثر پڑتا ہے۔ اس حکمت عملی میں بہتری کے لیے ابھی بھی کچھ شعبے باقی ہیں۔ خریدیں: https://www.fmz.com/strategy/191582 فروخت کریں: https://www.fmz.com/strategy/191730

function GetPrecision(){
    var precision = {price:0, amount:0}
    var depth = exchange.GetDepth()
    for(var i=0;i<exchange.GetDepth().Asks.length;i++){
        var amountPrecision = exchange.GetDepth().Asks[i].Amount.toString().indexOf('.') > -1 ? exchange.GetDepth().Asks[i].Amount.toString().split('.')[1].length : 0
        precision.amount = Math.max(precision.amount,amountPrecision)
        var pricePrecision = exchange.GetDepth().Asks[i].Price.toString().indexOf('.') > -1 ? exchange.GetDepth().Asks[i].Price.toString().split('.')[1].length : 0
        precision.price = Math.max(precision.price,pricePrecision)
    }
    return precision
}

function main(){
    var initAccount = exchange.GetAccount()
    if(!initAccount){return '无法获取账户信息'}
    var precision = GetPrecision()
    var buyPrice = 0
    var lastId = 0
    var done = false
    while(true){
        var account = _C(exchange.GetAccount)
        var dealAmount = account.Stocks - initAccount.Stocks
        var ticker = _C(exchange.GetTicker)
        if(BuyAmount - dealAmount > 1/Math.pow(10,precision.amount) && ticker.Buy > buyPrice){
            if(lastId){exchange.CancelOrder(lastId)}
            var id = exchange.Buy(ticker.Buy, _N(BuyAmount - dealAmount,precision.amount))
            if(id){
                lastId = id
            }else{
                done = true
            }
        }
        if(BuyAmount - dealAmount <= 1/Math.pow(10,precision.amount)){done = true}
        if(done){
            var avgCost = (initAccount.Balance - account.Balance)/dealAmount
            return 'order is done, avg cost is ' + avgCost  // including fee cost
        }
        Sleep(Intervel*1000)
    }
}

بعض اوقات، بہتر قیمت پر فروخت کرنے یا سودے کا انتظار کرنے کے لیے، آپ ایک مخصوص وقفہ پر متعدد آرڈر دے سکتے ہیں۔ یہ پلگ ان مستقبل کے زیر التواء آرڈرز کے لیے بھی استعمال کیا جا سکتا ہے۔ ماخذ کوڈ کاپی ایڈریس: https://www.fmz.com/strategy/190017


function main() {
    var ticker = exchange.GetTicker()
    if(!ticker){
        return  'Unable to get price'
    }
    for(var i=0;i<N;i++){
        if(Type == 0){
            if(exchange.GetName().startsWith('Futures')){
                exchange.SetDirection('buy')
            }
            exchange.Buy(Start_Price-i*Spread,Amount+i*Amount_Step)
        }else if(Type == 1){
            if(exchange.GetName().startsWith('Futures')){
                exchange.SetDirection('sell')
            }
            exchange.Sell(Start_Price+i*Spread,Amount+i*Amount_Step)
        }else if(Type == 2){
            exchange.SetDirection('closesell')
            exchange.Buy(Start_Price-i*Spread,Amount+i*Amount_Step)
        }
        else if(Type == 3){
            exchange.SetDirection('closebuy')
            exchange.Sell(Start_Price+i*Spread,Amount+i*Amount_Step)
        }
        Sleep(500)
    }
    return 'order complete'
}

معاون کموڈٹی فیوچر ٹریڈنگ

عام طور پر استعمال ہونے والے فیوچر ٹریڈنگ سافٹ ویئر میں اکثر آرڈر پلیسمنٹ کے بہت سے ایڈوانس فنکشن ہوتے ہیں، جیسے کہ سٹاپ لوس آرڈر دینا، مشروط آرڈر دینا وغیرہ، جنہیں آسانی سے پلگ ان میں لکھا جا سکتا ہے۔ یہاں ایک پلگ ان ہے جو آپ کو ایک زیر التواء آرڈر کو مکمل ہونے کے فوراً بعد بند کرنے کی اجازت دیتا ہے۔ ایڈریس کاپی کریں: https://www.fmz.com/strategy/187736

var buy = false
var trade_amount = 0
function main(){
    while(true){
        if(exchange.IO("status")){
            exchange.SetContractType(Contract)
            if(!buy){
                buy = true
                if(Direction == 0){
                    exchange.SetDirection('buy')
                    exchange.Buy(Open_Price, Amount)
                }else{
                    exchange.SetDirection('sell')
                    exchange.Sell(Open_Price, Amount)
                }
            }
            var pos = exchange.GetPosition()
            if(pos && pos.length > 0){
                for(var i=0;i<pos.length;i++){
                    if(pos[i].ContractType == Contract && pos[i].Type == Direction && pos[i].Amount-pos[i].FrozenAmount>0){
                        var cover_amount = math.min(Amount-trade_amount, pos[i].Amount-pos[i].FrozenAmount)
                        if(cover_amount >= 1){
                            trade_amount += cover_amount
                            if(Direction == 0){
                                exchange.SetDirection('closebuy_today')
                                exchange.Sell(Close_Price, cover_amount)
                            }else{
                                exchange.SetDirection('closesell_today')
                                exchange.Buy(Close_Price, cover_amount)
                            }
                        }
                    }
                }
            }
        } else {
            LogStatus(_D(), "未连接CTP !")
            Sleep(10000)
        }
        if(trade_amount >= Amount){
            Log('任务完成')
            return
        }
        Sleep(1000)
    }
}

خلاصہ کریں۔

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