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

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

مصنف:نیکی, تخلیق: 2020-07-30 11:39:54, تازہ کاری: 2023-10-25 19:56:42

img

تعارف

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

img

پلگ ان اصول

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

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

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

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

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

img img

  • پلگ ان چلائیں

پیرامیٹر سیٹنگ انٹرفیس میں داخل ہونے کے لئے حکمت عملی پر کلک کریں۔ اگر کوئی پیرامیٹرز نہیں ہیں تو ، یہ براہ راست چلتا ہے۔ ڈوکر ، تجارتی جوڑی ، اور ٹریڈنگ ٹرمینل کے ذریعہ منتخب کردہ K لائن کی مدت ڈیفالٹ کے مساوی پیرامیٹرز ہیں۔ عمل درآمد شروع کرنے کے لئے عمل درآمد کی حکمت عملی پر کلک کریں ، اور Execute Now موڈ کو منتخب کریں (آپ پہلے سے طے شدہ آپریشن موڈ کو یاد رکھ سکتے ہیں۔ پلگ ان لاگ کو ظاہر نہیں کرے گا۔

img

  • پلگ ان بند کریں

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

img

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

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

فیوچرز کے درمیان دستی ہیجنگ ٹریڈنگ میں مدد کرنا

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

پہلا تعارف یہ ہے کہ مدت کے درمیان قیمت کے فرق کا پلگ ان تیار کیا جائے:

var chart = { 
   __isStock: true,    
   title : { text : 'Spread analysis chart'},                     
   xAxis: { type: 'datetime'},                 
   yAxis : {                                        
       title: {text: 'Spread'},                   
       opposite: false,                             
   },
   series : [                    
       {name : "diff", data : []}, 

   ]
}
function main() {
   exchange.SetContractType('quarter')
   var recordsA = exchange.GetRecords(PERIOD_M5) //Cycle can be customized
   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

img

اسپریڈ تجزیہ کے ساتھ ، یہ معلوم ہوتا ہے کہ پھیلاؤ متفق ہے۔ یہ سہ ماہی معاہدے کو مختصر کرنے اور موجودہ ہفتے کے لئے طویل عرصے تک جانے کا موقع ہے۔ یہ ایک کلک ہیجنگ پلگ ان کا استعمال کرنے کا موقع ہے ، ایک کلک آپ کو سہ ماہی اور طویل ہفتہ وار کو مختصر کرنے میں خود بخود مدد فراہم کرے گا ، جو دستی آپریشن سے تیز ہے۔ حکمت عملی کے نفاذ کا اصول سلائڈنگ قیمت کے ساتھ ایک ہی تعداد میں پوزیشنیں کھولنا ہے۔ آپ مارکیٹ پر اثر انداز ہونے سے بچنے کے لئے اپنی مطلوبہ پوزیشن تک آہستہ آہستہ پہنچنے کے لئے کئی بار چل سکتے ہیں۔ آپ آرڈر کو تیزی سے رکھنے کے لئے ڈیفالٹ پیرامیٹرز کو تبدیل کرسکتے ہیں۔ حکمت عملی کاپی ایڈریس: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 'Unable to get ticker'}
        if(!pos || pos.length == 0 ){return 'No holding position'}
        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
        }
        
    }
}

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

خریدیں: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 'Unable to get account information'}
    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 is not connected!")
            Sleep(10000)
        }
        if(trade_amount >= Amount){
            Log('mission completed')
            return
        }
        Sleep(1000)
    }
}

خلاصہ

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


متعلقہ

مزید