ٹرانزیکشن ٹرمینل پلگ ان کا استعمال کرتے ہوئے دستی ٹرانزیکشن کو آسان بنائیں

مصنف:گھاس, تخلیق: 2020-02-29 21:04:52, تازہ کاری: 2023-10-12 21:21:40

[TOC]img

پروفائل

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

img

پلگ ان اصول

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

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

استعمال

  • 1.添加策略

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

img img

  • 2.运行插件

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

img

  • 3.停止插件

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

img

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

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

معاون دستی فیوچر کراس ٹرم ہیجنگ

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

اس کے علاوہ ، آپ کو اس کے بارے میں مزید جاننے کی ضرورت ہے۔

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 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 '无法获取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)
    }
}

خلاصہ

آپ کو اس طرح کی چھوٹی چھوٹی خصوصیات کو دیکھ کر اپنے خیالات کا اظہار کرنا چاہئے۔ کیا آپ دستی طور پر تجارت کرنے کے لئے پلگ ان لکھ سکتے ہیں؟


متعلقہ

مزید

شیعہغلط اطلاع دینے کی وجہ کیا ہے؟ Error: Futures_OP 0: 400: {"error_message":"Open orders exist","code":35017,"error_code":"35017","message":"Open orders exist"} Buy ((5000, 0.1): 400: {"error_message":"order_size error","result":"true","error_code":"35063","order_id":"-1"}

گھاستبادلے کی دستاویزات چیک کریں یا تبادلے کی کسٹمر سروس سے مشورہ کریں