FMZ.COM, একটি পরিমাণগত ট্রেডিং প্ল্যাটফর্ম হিসাবে, প্রধানত প্রোগ্রাম্যাটিক ব্যবসায়ীদের পরিবেশন করা হয়। তবে এটি একটি প্রাথমিক ট্রেডিং টার্মিনালও সরবরাহ করে। যদিও ফাংশনটি সহজ, তবে কখনও কখনও এটি কার্যকর হতে পারে। উদাহরণস্বরূপ, যদি এক্সচেঞ্জটি ব্যস্ত থাকে এবং পরিচালনা করা যায় না তবে এপিআই এখনও কাজ করে। এই সময়ে, আপনি অর্ডার প্রত্যাহার করতে পারেন, অর্ডার স্থাপন করতে পারেন এবং টার্মিনালের মাধ্যমে সেগুলি দেখতে পারেন। ট্রেডিং টার্মিনালের অভিজ্ঞতা উন্নত করতে, প্লাগ-ইনগুলি এখন যুক্ত করা হয়। কখনও কখনও, আমাদের লেনদেনের সহায়তার জন্য একটি ছোট ফাংশন প্রয়োজন, যেমন সিঁড়ি মুলতুবি অর্ডার, আইসবার্গ অর্ডার, এক-ক্লিক হেজিং, এক-ক্লিক বন্ধ অবস্থান এবং অন্যান্য ক্রিয়াকলাপ। রোবট এক্সিকিউশন লগটি দেখার দরকার নেই। একটি নতুন প্লাগ-ইন তৈরি করা কিছুটা জটিল। কেবল টার্মিনালের প্লাগ-ইনটি ক্লিক করুন, সংশ্লিষ্ট প্লাগ-ইন ফাংশনগুলি অবিল
প্লাগ-ইন অপারেশনের দুটি মোড রয়েছে, তাত্ক্ষণিক অপারেশন এবং ব্যাকগ্রাউন্ড অপারেশন। ব্যাকগ্রাউন্ডে চালানো একটি রোবট তৈরির সমতুল্য (স্বাভাবিক চার্জ) । তাত্ক্ষণিক অপারেশনের নীতিটি ডিবাগিং সরঞ্জামের মতোইঃ কার্যকর করার জন্য ট্রেডিং টার্মিনাল পৃষ্ঠার ডকারের কাছে একটি কোডের টুকরো প্রেরণ করুন এবং চার্ট এবং টেবিল ফেরত দেওয়ার জন্য সমর্থন করুন (ডিবাগিং সরঞ্জামটি বর্তমানে সমর্থন করার জন্যও আপগ্রেড করা হয়েছে), একইটি কেবল 5 মিনিটের জন্য কার্যকর করা যেতে পারে, কোনও ফি, কোনও বিধিনিষেধ নেই ভাষা। স্বল্প কার্যকর সময় সহ প্লাগ-ইনগুলি তাত্ক্ষণিক রান মোড ব্যবহার করতে পারে, যখন জটিল এবং দীর্ঘমেয়াদী চলমান কৌশলগুলি এখনও রোবটগুলি চালানোর প্রয়োজন।
একটি কৌশল লেখার সময়, আপনি একটি প্লাগ ইন হিসাবে কৌশল টাইপ নির্বাচন করতে হবে.main
ফাংশনreturn
প্লাগ-ইন এর অপারেশন শেষ হওয়ার পর টার্মিনালে পপ আপ হবে, স্ট্রিং, অঙ্কন এবং টেবিল সমর্থন. কারণ প্লাগ ইন বাস্তবায়ন লগ দেখতে পারবেন না, আপনি করতে পারেনreturn
প্লাগ-ইনের কার্যকর ফলাফল।
ছবিতে দেখানো অনুসন্ধান বাক্সে সরাসরি অনুসন্ধান করুন। মনে রাখবেন যে শুধুমাত্র ট্রেডিং প্লাগইন টাইপ কৌশল চালানো যেতে পারে, এবং তারপর যোগ ক্লিক করুন। পাবলিক প্লাগইন কৌশল স্কয়ার পাওয়া যাবেঃhttps://www.fmz.com/square/21/1
পরামিতি সেটিং ইন্টারফেস প্রবেশ করতে কৌশল ক্লিক করুন। যদি কোন পরামিতি না থাকে, এটি সরাসরি চালানো হবে। ডকার, ট্রেডিং জোড়া, এবং ট্রেডিং টার্মিনাল দ্বারা নির্বাচিত কে-লাইন সময়কাল হল ডিফল্ট সংশ্লিষ্ট পরামিতি। কার্যকরকরণ শুরু করতে কার্যকরকরণ কৌশল ক্লিক করুন, এবং
প্লাগ-ইন বন্ধ করতে আইকন অবস্থানে ক্লিক করুন। যেহেতু সকল প্লাগ-ইন ডিবাগিং টুল প্রক্রিয়ার মধ্যে চালানো হয়, তাই সকল প্লাগ-ইন বন্ধ করা হবে।
প্লাগ-ইন একটি নির্দিষ্ট সময়ের জন্য কোড সম্পাদন করতে পারে এবং কিছু সহজ ক্রিয়াকলাপ সম্পাদন করতে পারে। অনেক ক্ষেত্রে, পুনরাবৃত্তি অপারেশন প্রয়োজন যে ম্যানুয়াল অপারেশন লেনদেন সহজতর করতে প্লাগ-ইন সঙ্গে বাস্তবায়িত করা যেতে পারে। নিম্নলিখিত নির্দিষ্ট উদাহরণ পরিচয় করিয়ে দেবে, এবং উৎস কোড দেওয়া আপনার নিজস্ব কৌশল কাস্টমাইজ করার জন্য রেফারেন্স হিসাবে ব্যবহার করা যেতে পারে।
ফিউচার ইন্টারটেম্পোরাল হেজিং ট্রেডিং একটি খুব সাধারণ কৌশল। যেহেতু ফ্রিকোয়েন্সি খুব বেশি নয়, তাই অনেক লোক এটি ম্যানুয়ালি পরিচালনা করবে। একটি চুক্তি দীর্ঘ এবং একটি চুক্তি সংক্ষিপ্ত করা প্রয়োজন, তাই স্প্রেড প্রবণতা বিশ্লেষণ করা ভাল। ট্রেডিং টার্মিনালে প্লাগ-ইন ব্যবহার করে আপনার শক্তি সাশ্রয় করবে।
প্রথম প্রবর্তন হল সময়ের মধ্যে দামের পার্থক্য প্লাগইন আঁকাঃ
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
স্প্রেড বিশ্লেষণের সাথে, এটি পাওয়া যায় যে স্প্রেডটি একত্রিত হচ্ছে। এটি ত্রৈমাসিক চুক্তিটি সংক্ষিপ্ত করার এবং বর্তমান সপ্তাহের জন্য দীর্ঘ যাওয়ার সুযোগ। এটি এক-ক্লিক হেজিং প্লাগইন ব্যবহার করার সুযোগ, এক ক্লিক স্বয়ংক্রিয়ভাবে আপনাকে ত্রৈমাসিক এবং দীর্ঘ সাপ্তাহিককে সংক্ষিপ্ত করতে সহায়তা করবে, যা ম্যানুয়াল অপারেশনের চেয়ে দ্রুত। কৌশলটির বাস্তবায়ন নীতিটি হ'ল স্লাইডিং দামের সাথে একই সংখ্যক অবস্থান খোলার। আপনি বাজারে প্রভাব ফেলতে এড়াতে আপনার পছন্দসই অবস্থানে ধীরে ধীরে পৌঁছানোর জন্য আরও বেশ কয়েকবার চালাতে পারেন। আপনি অর্ডারগুলি দ্রুত রাখার জন্য ডিফল্ট পরামিতিগুলি পরিবর্তন করতে পারেন। কৌশল অনুলিপি ঠিকানাঃ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
}
}
}
এটি ধীরে ধীরে
কিনুন: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)
}
}
কখনও কখনও, একটি ভাল
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)
}
}
অনেক ছোট ছোট ফাংশন পড়ার পর, আপনার নিজের ধারণাও থাকা উচিত। আপনি আপনার ম্যানুয়াল ট্রেডিং সহজ করার জন্য একটি প্লাগ-ইন লিখতে চাইতে পারেন।