রিসোর্স লোড হচ্ছে... লোডিং...

বাণিজ্য

exchange.Buy

দ্যexchange.Buy()এই ফাংশনটি ক্রয় অর্ডার দেওয়ার জন্য ব্যবহৃত হয়।Buy()ফাংশনটি এক্সচেঞ্জ অবজেক্ট {@var/EXCHANGE exchange} এর সদস্য ফাংশন।Buy()ফাংশন বিনিময় বস্তুর সাথে সংযুক্ত বিনিময় অ্যাকাউন্টে কাজ করেexchange. সদস্যদের কার্যাবলীর উদ্দেশ্য (পদ্ধতি)exchangeবস্তুর শুধুমাত্র সম্পর্কিত হয়exchange, এবং ডকুমেন্টেশন পরে এটি পুনরাবৃত্তি করা হবে না।

একটি সফল অর্ডার অর্ডার আইডি প্রদান করে, একটি ব্যর্থ অর্ডার একটি শূন্য মান প্রদান করে। বৈশিষ্ট্যIdঅর্ডার {@struct/Order Order} FMZ প্ল্যাটফর্মের কাঠামো এক্সচেঞ্জ পণ্য কোড এবং এক্সচেঞ্জ মূল অর্ডার আইডি, ইংরেজি কমা দ্বারা পৃথক গঠিত। উদাহরণস্বরূপ, বৈশিষ্ট্যIdস্পট ট্রেডিং জোড়ার বিন্যাসETH_USDTOKX এক্সচেঞ্জের অর্ডার হলঃETH-USDT,1547130415509278720. যখন কলexchange.Buy()একটি অর্ডার স্থাপন করার ফাংশন, রিটার্ন মান অর্ডারIdএর সাথে সামঞ্জস্যপূর্ণIdঅর্ডার {@struct/Order Order} কাঠামোর বৈশিষ্ট্য।

স্ট্রিং, null মান

বিনিময়. কেনা ((দাম, পরিমাণ) বিনিময়. কেনা ((দাম, পরিমাণ,...args)

দ্যpriceপ্যারামিটারটি অর্ডার মূল্য নির্ধারণ করতে ব্যবহৃত হয়। দাম সত্য সংখ্যা দ্যamountঅর্ডার পরিমাণ সেট করতে প্যারামিটার ব্যবহার করা হয়। পরিমাণ সত্য সংখ্যা বর্ধিত পরামিতি যা এই অর্ডার লগের সাথে তথ্য আউটপুট করতে পারে,argপ্যারামিটার একের বেশি পাস করা যেতে পারে। আরজি মিথ্যা string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্য যেকোনো টাইপ

function main() {
    var id = exchange.Buy(100, 1);
    Log("id:", id);
}
def main():
    id = exchange.Buy(100, 1)
    Log("id:", id)
void main() {
    auto id = exchange.Buy(100, 1);
    Log("id:", id);
}

দ্বারা ফেরত অর্ডার নম্বরexchange.Buy()অর্ডার তথ্য অনুসন্ধান এবং অর্ডার বাতিল করতে ব্যবহার করা যেতে পারে।

// The following is an error call
function main() {
    exchange.SetContractType("quarter")
  
    // Set the shorting direction
    exchange.SetDirection("sell")     
    // If you place a buy order, an error will be reported, and shorting can only be sold
    var id = exchange.Buy(50, 1)

    // Set the long direction
    exchange.SetDirection("buy")      
    // If you place a sell order, it will report an error, go long, only buy
    var id2 = exchange.Sell(60, 1)    
  
    // Set direction to close long positions
    exchange.SetDirection("closebuy")    
    // If you place a buy order, it will report an error, close long, only sell
    var id3 = exchange.Buy(-1, 1)        
  
    // Set direction to close short positions
    exchange.SetDirection("closesell")   
    // If you place a sell order, it will report an error, close short, only buy
    var id4 = exchange.Sell(-1, 1)       
}
# The following is an error call
def main():
    exchange.SetContractType("quarter")
    exchange.SetDirection("sell")
    id = exchange.Buy(50, 1)
    exchange.SetDirection("buy")
    id2 = exchange.Sell(60, 1)
    exchange.SetDirection("closebuy")
    id3 = exchange.Buy(-1, 1)
    exchange.SetDirection("closesell")
    id4 = exchange.Sell(-1, 1)
// The following is an error call
void main() {
    exchange.SetContractType("quarter");
    exchange.SetDirection("sell");
    auto id = exchange.Buy(50, 1);
    exchange.SetDirection("buy");
    auto id2 = exchange.Sell(60, 1);
    exchange.SetDirection("closebuy");
    auto id3 = exchange.Buy(-1, 1);
    exchange.SetDirection("closesell");
    auto id4 = exchange.Sell(-1, 1);
}

ক্রিপ্টোকারেন্সি ফিউচার চুক্তির জন্য অর্ডার দেওয়ার সময়, এটি নিশ্চিত করার জন্য যত্ন নেওয়া উচিত যে ট্রেডিং দিকটি সঠিকভাবে সেট করা হয়েছে, কারণ ট্রেডিং দিক এবং ট্রেডিং ফাংশনের মধ্যে একটি অসঙ্গতি একটি ত্রুটির ফলে হবেঃ

direction is sell, invalid order type Buy
direction is buy, invalid order type Sell
direction is closebuy, invalid order type Buy
direction is closesell, invalid order type Sell
// For example, the trading pair: ETH_BTC, place a buy order at the market price
function main() {
    // Place a buy order at the market price and buy ETH coins with a value of 0.1 BTC (denominated currency)
    exchange.Buy(-1, 0.1)    
}
def main():
    exchange.Buy(-1, 0.1)
void main() {
    exchange.Buy(-1, 0.1);
}

স্পট মার্কেট অর্ডার।

ফিউচার কন্ট্রাক্টের জন্য অর্ডার দেওয়ার সময়, আপনাকে অবশ্যই মনোযোগ দিতে হবে যে ট্রেডিং দিকটি সঠিকভাবে সেট করা আছে কিনা, কারণ ট্রেডিং দিক এবং ট্রেড ফাংশনটি মিলে না থাকলে একটি ত্রুটি রিপোর্ট করা হবে। ক্রিপ্টোকারেন্সি ফিউচার কন্ট্রাক্টগুলির জন্য অর্ডার আকারটি চুক্তির সংখ্যা যদি নির্দিষ্ট না হয়। প্যারামিটারpriceসেট করা আছে-1মার্কেট অর্ডার দেওয়ার জন্য, যার জন্য এক্সচেঞ্জের অর্ডার প্লেসমেন্ট ইন্টারফেসকে মার্কেট অর্ডার সমর্থন করতে হয়। ক্রিপ্টোকারেন্সি স্পট চুক্তির জন্য মার্কেট অর্ডার দেওয়ার সময়, প্যারামিটারটিamountঅর্ডারের মুদ্রায় অর্থের পরিমাণ। ক্রিপ্টোকারেন্সি ফিউচার চুক্তির জন্য বাজার অর্ডার স্থাপন করার সময়, পরিমাণ পরামিতিamountহল চুক্তির সংখ্যা। কিছু ক্রিপ্টোকারেন্সি এক্সচেঞ্জ রয়েছে যা লাইভ ট্রেডিংয়ের সময় মার্কেট অর্ডার ইন্টারফেস সমর্থন করে না। কিছু স্পট এক্সচেঞ্জে মার্কেট কেনার অর্ডারের অর্ডার পরিমাণ ট্রেডিং মুদ্রার সংখ্যা। দয়া করে পড়ুনবিনিময় সংক্রান্ত বিশেষ নির্দেশাবলীব্যবহারকারীর নির্দেশিকা বিস্তারিত জানার জন্য। যদি আপনি ডকারের একটি পুরোনো সংস্করণ ব্যবহার করছেন, অর্ডার রিটার্ন মানIdএরexchange.Buy()ফাংশন অর্ডার রিটার্ন মান থেকে ভিন্ন হতে পারেIdবর্তমান নথিতে বর্ণিত।

{@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}

exchange.Sell

দ্যexchange.Sell()ফাংশনটি বিক্রয় অর্ডার দেওয়ার জন্য ব্যবহৃত হয়।

একটি সফল অর্ডার অর্ডার আইডি প্রদান করে, একটি ব্যর্থ অর্ডার একটি শূন্য মান প্রদান করে।Idঅর্ডার {@struct/Order Order} FMZ প্ল্যাটফর্মের কাঠামো এক্সচেঞ্জ পণ্য কোড এবং এক্সচেঞ্জ মূল অর্ডার আইডি, ইংরেজি কমা দ্বারা পৃথক গঠিত। উদাহরণস্বরূপ, বৈশিষ্ট্যIdস্পট ট্রেডিং জোড়ার বিন্যাসETH_USDTOKX এক্সচেঞ্জের অর্ডার হলঃETH-USDT,1547130415509278720. যখন কলexchange.Sell()একটি অর্ডার স্থাপন করার ফাংশন, রিটার্ন মান অর্ডারIdএর সাথে সামঞ্জস্যপূর্ণIdঅর্ডার {@struct/Order Order} কাঠামোর বৈশিষ্ট্য। স্ট্রিং, null মান

বিনিময়.বিক্রয় ((দাম, পরিমাণ) বিনিময়.বিক্রয় ((দাম, পরিমাণ,... args)

দ্যpriceপ্যারামিটারটি অর্ডার মূল্য নির্ধারণ করতে ব্যবহৃত হয়। দাম সত্য সংখ্যা দ্যamountঅর্ডার পরিমাণ সেট করতে প্যারামিটার ব্যবহার করা হয়। পরিমাণ সত্য সংখ্যা বর্ধিত পরামিতি যা এই অর্ডার লগের সাথে তথ্য আউটপুট করতে পারে,argপ্যারামিটার একের বেশি পাস করা যেতে পারে। আরজি মিথ্যা string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্য যেকোনো টাইপ

function main(){
    var id = exchange.Sell(100, 1)
    Log("id:", id)
}
def main():
    id = exchange.Sell(100, 1)
    Log("id:", id)
void main() {
    auto id = exchange.Sell(100, 1);
    Log("id:", id);
}

দ্বারা ফেরত অর্ডার নম্বরexchange.Sell()অর্ডার তথ্য অনুসন্ধান এবং অর্ডার বাতিল করতে ব্যবহার করা যেতে পারে।

// The following is an error call
function main() {
    exchange.SetContractType("quarter")
  
    // Set the shorting direction
    exchange.SetDirection("sell")     
    // If you place a buy order, an error will be reported, and shorting can only be sold
    var id = exchange.Buy(50, 1)                  

    // Set the long direction
    exchange.SetDirection("buy")      
    // If you place a sell order, it will report an error, go long, only buy
    var id2 = exchange.Sell(60, 1)    
  
    // Set direction to close long positions
    exchange.SetDirection("closebuy")    
    // If you place a buy order, it will report an error, close long, only sell
    var id3 = exchange.Buy(-1, 1)        
  
    // Set direction to close short positions
    exchange.SetDirection("closesell")   
    // If you place a sell order, it will report an error, close short, only buy
    var id4 = exchange.Sell(-1, 1)       
}
# The following is an error call
def main():
    exchange.SetContractType("quarter")
    exchange.SetDirection("sell")
    id = exchange.Buy(50, 1)
    exchange.SetDirection("buy")
    id2 = exchange.Sell(60, 1)
    exchange.SetDirection("closebuy")
    id3 = exchange.Buy(-1, 1)
    exchange.SetDirection("closesell")
    id4 = exchange.Sell(-1, 1)
// The following is an error call
void main() {
    exchange.SetContractType("quarter");
    exchange.SetDirection("sell");
    auto id = exchange.Buy(50, 1);
    exchange.SetDirection("buy");
    auto id2 = exchange.Sell(60, 1);
    exchange.SetDirection("closebuy");
    auto id3 = exchange.Buy(-1, 1);
    exchange.SetDirection("closesell");
    auto id4 = exchange.Sell(-1, 1);
}

ক্রিপ্টোকারেন্সি ফিউচার চুক্তির জন্য অর্ডার দেওয়ার সময়, এটি নিশ্চিত করার জন্য যত্ন নেওয়া উচিত যে ট্রেডিং দিকটি সঠিকভাবে সেট করা হয়েছে, কারণ ট্রেডিং দিক এবং ট্রেডিং ফাংশনের মধ্যে একটি অসঙ্গতি একটি ত্রুটির ফলে হবেঃ

direction is sell, invalid order type Buy
direction is buy, invalid order type Sell
direction is closebuy, invalid order type Buy
direction is closesell, invalid order type Sell
// For example, the trading pair: ETH_BTC, place a sell order at the market price
function main() {
    // Note: place a market order to sell, sell 0.2 ETH
    exchange.Sell(-1, 0.2)   
}
def main():
    exchange.Sell(-1, 0.2)
void main() {
    exchange.Sell(-1, 0.2);
}

স্পট মার্কেট অর্ডার।

ফিউচার কন্ট্রাক্টের জন্য অর্ডার দেওয়ার সময়, আপনাকে অবশ্যই মনোযোগ দিতে হবে যে ট্রেডিং দিকটি সঠিকভাবে সেট করা আছে কিনা, কারণ ট্রেডিং দিক এবং ট্রেড ফাংশনটি মিলে না থাকলে একটি ত্রুটি রিপোর্ট করা হবে। ক্রিপ্টোকারেন্সি ফিউচার কন্ট্রাক্টের জন্য অর্ডার পরিমাণটি চুক্তির সংখ্যা যদি নির্দিষ্ট না হয়। প্যারামিটারpriceসেট করা আছে-1মার্কেট অর্ডার স্থাপনের জন্য, যার জন্য এক্সচেঞ্জের অর্ডার স্থাপনের ইন্টারফেসকে মার্কেট অর্ডার সমর্থন করতে হবে। ক্রিপ্টোকারেন্সি স্পট চুক্তির জন্য মার্কেট অর্ডার স্থাপনের সময়, পরিমাণ প্যারামিটারamountট্রেডিং মুদ্রায় পরিমাণ. ক্রিপ্টোকারেন্সি ফিউচার চুক্তির জন্য বাজার অর্ডার স্থাপন করার সময়, পরিমাণ পরামিতিamountকিছু ক্রিপ্টোকারেন্সি এক্সচেঞ্জ আছে যা লাইভ ট্রেডিংয়ের সময় মার্কেট অর্ডার ইন্টারফেস সমর্থন করে না। যদি আপনি ডকারের একটি পুরোনো সংস্করণ ব্যবহার করছেন, অর্ডার রিটার্ন মানIdএরexchange.Sell()ফাংশন অর্ডার রিটার্ন মান থেকে ভিন্ন হতে পারেIdবর্তমান নথিতে বর্ণিত।

{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}

exchange.CreateOrder

দ্যexchange.CreateOrder()ফাংশনটি অর্ডার দেওয়ার জন্য ব্যবহৃত হয়।

যদি অর্ডার সফলভাবে স্থাপন করা হয়, অর্ডার আইডি ফিরে আসে; যদি অর্ডার ব্যর্থ হয়, একটি শূন্য মান ফিরে আসে।Idঅর্ডার {@struct/Order Order} FMZ প্ল্যাটফর্মের কাঠামো এক্সচেঞ্জ পণ্য কোড এবং এক্সচেঞ্জ মূল অর্ডার আইডি, ইংরেজি কমা দ্বারা পৃথক গঠিত। উদাহরণস্বরূপ, বৈশিষ্ট্যIdস্পট ট্রেডিং জোড়ার অর্ডারের বিন্যাসETH_USDTওকেএক্স এক্সচেঞ্জের মূলধন হল:ETH-USDT,1547130415509278720. যখন কলexchange.CreateOrder(symbol, side, price, amount)অর্ডার দেওয়ার ফাংশন, অর্ডারের রিটার্ন মানIdএর সাথে সামঞ্জস্যপূর্ণIdঅর্ডার {@struct/Order Order} কাঠামোর বৈশিষ্ট্য। স্ট্রিং, null মান

exchange.CreateOrder ((প্রতীক, পাশ, মূল্য, পরিমাণ) exchange.CreateOrder ((প্রতীক, পাশ, মূল্য, পরিমাণ,...args)

প্যারামিটারsymbolঅর্ডারের নির্দিষ্ট ট্রেডিং জোড়া এবং চুক্তি কোড নির্দিষ্ট করতে ব্যবহৃত হয়।exchange.CreateOrder(symbol, side, price, amount)অর্ডার দেওয়ার ফাংশন,exchangeযদি অর্ডার denominated মুদ্রা USDT হয় এবং ট্রেডিং মুদ্রা BTC হয়, পরামিতিsymbolহচ্ছেঃ"BTC_USDT", ট্রেডিং জোড়া ফরম্যাটে FMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত।exchange.CreateOrder(symbol, side, price, amount)অর্ডার দেওয়ার ফাংশন,exchangeযদি অর্ডারটি বিটিসি এর ইউ-স্ট্যান্ডার্ড চিরস্থায়ী চুক্তি অর্ডার হয়, প্যারামিটারটিsymbolহচ্ছেঃ"BTC_USDT.swap", এবং ফরম্যাটটি হলট্রেডিং জুটিএবংচুক্তির কোডFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত, অক্ষর দ্বারা পৃথক ..exchange.CreateOrder(symbol, side, price, amount)অর্ডার দেওয়ার ফাংশন,exchangeযদি অর্ডারটি বিটিসি এর ইউ-স্ট্যান্ডার্ড অপশন কন্ট্রাক্ট অর্ডার হয়, তাহলে প্যারামিটারটিsymbolহচ্ছেঃ"BTC_USDT.BTC-240108-40000-C"(একটি উদাহরণ হিসাবে Binance Option BTC-240108-40000-C গ্রহণ), এবং বিন্যাস হলট্রেডিং জুটিFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত এবং এক্সচেঞ্জ দ্বারা সংজ্ঞায়িত নির্দিষ্ট বিকল্প চুক্তির কোড, অক্ষর . দ্বারা পৃথক। প্রতীক সত্য স্ট্রিং দ্যsideঅর্ডারের ট্রেডিং দিকনির্দেশনা নির্দিষ্ট করতে এই প্যারামিটার ব্যবহার করা হয়। স্পট এক্সচেঞ্জ অবজেক্টের জন্য,sideপরামিতি হলঃbuy, sell. buyঅর্থ ক্রয়, এবংsellমানে বিক্রি। ফিউচার এক্সচেঞ্জ অবজেক্টের জন্য,sideপরামিতি হলঃbuy, closebuy, sell, closesell. buyমানে লং পজিশন খোলার অর্থ,closebuyঅর্থ একটি দীর্ঘ পজিশন বন্ধ করা,sellশর্ট পজিশন খোলার অর্থ, এবংclosesellমানে শর্ট পজিশন বন্ধ করা।

পাশের সত্য স্ট্রিং প্যারামিটারpriceঅর্ডারের দাম নির্ধারণ করতে ব্যবহৃত হয়। -1 এর দাম নির্দেশ করে যে অর্ডারটি একটি বাজার অর্ডার। দাম সত্য সংখ্যা প্যারামিটারamountঅর্ডার পরিমাণ সেট করতে ব্যবহৃত হয়। দয়া করে মনে রাখবেন যে যখন অর্ডার একটি বাজার ক্রয় অর্ডার হয়, অর্ডার পরিমাণ ক্রয় পরিমাণ; কিছু স্পট এক্সচেঞ্জের বাজার ক্রয় অর্ডার অর্ডার পরিমাণ ট্রেডিং মুদ্রার সংখ্যা। বিস্তারিত জানার জন্য, দয়া করে পড়ুনবিনিময় সংক্রান্ত বিশেষ নির্দেশাবলীব্যবহারকারী নির্দেশিকা। পরিমাণ সত্য সংখ্যা বর্ধিত পরামিতি এই অর্ডার লগ অতিরিক্ত তথ্য আউটপুট করতে পারেন. একাধিকargপ্যারামিটারগুলি পাস করা যেতে পারে। আরজি মিথ্যা সিস্টেম দ্বারা সমর্থিত যে কোন প্রকার, যেমন স্ট্রিং, সংখ্যা, বুল, বস্তু, অ্যারে, শূন্য মান ইত্যাদি।

function main() {
    var id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01)           // Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
    // var id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01)   // Futures exchange objects place orders for BTC's U-standard perpetual contracts
    Log("Order Id:", id)
}
def main():
    id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01)          # Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
    # id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01)   # Futures exchange objects place orders for BTC's U-standard perpetual contracts
    Log("Order Id:", id)
void main() {
    auto id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01);           // Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
    // auto id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01);   // Futures exchange objects place orders for BTC's U-standard perpetual contracts
    Log("Order Id:", id);
}

স্পট এক্সচেঞ্জ অবজেক্ট এবং ফিউচার এক্সচেঞ্জ অবজেক্টকেexchange.CreateOrder()অর্ডার দেওয়ার ফাংশন।

{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}

exchange.CancelOrder

দ্যexchange.CancelOrder()ফাংশনটি অর্ডার বাতিল করতে ব্যবহৃত হয়। বৈশিষ্ট্যIdঅর্ডার {@struct/Order Order} FMZ প্ল্যাটফর্মের কাঠামো এক্সচেঞ্জ পণ্য কোড এবং এক্সচেঞ্জ মূল অর্ডার আইডি, ইংরেজি কমা দ্বারা পৃথক গঠিত। উদাহরণস্বরূপ, বৈশিষ্ট্যIdস্পট ট্রেডিং জোড়ার অর্ডারের বিন্যাসETH_USDTওকেএক্স এক্সচেঞ্জের মূলধন হল:ETH-USDT,1547130415509278720. প্যারামিটারorderIdকল করার সময় পাসexchange.CancelOrder()একটি অর্ডার বাতিল করার ফাংশনIdঅর্ডার {@struct/Order Order} কাঠামোর বৈশিষ্ট্য।

দ্যexchange.CancelOrder()ফাংশন একটি সত্য মান ফেরৎ, উদাহরণস্বরূপtrueমানে বাতিল আদেশ অনুরোধ সফলভাবে পাঠানো হয়েছে. যদি এটি একটি মিথ্যা মান ফেরত, যেমনfalse, এর মানে হল যে বাতিল আদেশ অনুরোধ পাঠানো ব্যর্থ হয়েছে। রিটার্ন মান শুধুমাত্র বিনিময় আদেশ বাতিল কিনা তা নির্ধারণ করতে পাঠানো অনুরোধের সাফল্য বা ব্যর্থতা প্রতিনিধিত্ব করে। আপনি কল করতে পারেনexchange.GetOrders()অর্ডারটি বাতিল করা হয়েছে কিনা তা নির্ধারণ করতে। বুল

বিনিময়.অর্ডার বাতিল করুন (অর্ডার আইডি) বিনিময়.অর্ডার বাতিল করুন (অর্ডার আইডি,...আর্গ)

দ্যorderIdপ্যারামিটারটি বাতিল করা অর্ডার নির্দিষ্ট করতে ব্যবহৃত হয়। অর্ডার সত্য সংখ্যা, স্ট্রিং প্রসারিত পরামিতি, আপনি এই প্রত্যাহার লগ সংযুক্ত তথ্য আউটপুট করতে পারেন,argপ্যারামিটার একের বেশি পাস করা যেতে পারে। আরজি মিথ্যা string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্য যেকোনো টাইপ

function main(){
    var id = exchange.Sell(99999, 1)
    exchange.CancelOrder(id)
}
def main():
    id = exchange.Sell(99999, 1)
    exchange.CancelOrder(id)
void main() {
    auto id = exchange.Sell(99999, 1);
    exchange.CancelOrder(id);
}

অর্ডার বাতিল করো।

function main() {
    if (exchange.GetName().includes("Futures_")) {
        Log("Set the contract as: perpetual contract, set the trade direction as: open long position.")
        exchange.SetContractType("swap")
        exchange.SetDirection("buy")
    }
    
    var ticker = exchange.GetTicker()
    exchange.Buy(ticker.Last * 0.5, 0.1)
    
    var orders = exchange.GetOrders()
    for (var i = 0 ; i < orders.length ; i++) {
        exchange.CancelOrder(orders[i].Id, "Cancelled orders:", orders[i])
        Sleep(500)
    }
}
def main():
    if exchange.GetName().find("Futures_") != -1:
        Log("Set the contract as: perpetual contract, set the trade direction as: open long position.")
        exchange.SetContractType("swap")
        exchange.SetDirection("buy")
    
    ticker = exchange.GetTicker()
    exchange.Buy(ticker["Last"] * 0.5, 0.1)            

    orders = exchange.GetOrders()
    for i in range(len(orders)):
        exchange.CancelOrder(orders[i]["Id"], "Cancelled orders:", orders[i])
        Sleep(500)
void main() {
    if (exchange.GetName().find("Futures_") != std::string::npos) {
        Log("Set the contract as: perpetual contract, set the trade direction as: open long position.");
        exchange.SetContractType("swap");
        exchange.SetDirection("buy");
    }            

    auto ticker = exchange.GetTicker();
    exchange.Buy(ticker.Last * 0.5, 0.1);            

    auto orders = exchange.GetOrders();
    for (int i = 0 ; i < orders.size() ; i++) {
        exchange.CancelOrder(orders[i].Id, "Cancelled orders:", orders[i]);
        Sleep(500);
    }
}

এফএমজেড এপিআই ফাংশন যা লগ আউটপুট ফাংশন যেমনঃLog(), exchange.Buy(), exchange.CancelOrder()প্রয়োজনীয় পরামিতিগুলির পরে কিছু সহগামী আউটপুট পরামিতি অনুসরণ করা যেতে পারে। উদাহরণস্বরূপঃexchange.CancelOrder(orders[i].Id, orders[i]), যাতে আদেশ বাতিল করার সময় যার আইডি হয়orders[i].Id, অর্ডার s তথ্য এটির সাথে আউটপুট হয়। অর্থাৎ, {@struct/Order Order} এর কাঠামোorders[i].

আপনি যদি ডকারের একটি পুরোনো সংস্করণ ব্যবহার করেন, তবে এক্সচেঞ্জ.ক্যান্সেলঅর্ডার ()) ফাংশনের অর্ডারআইডি প্যারামিটারটি বর্তমান নথিতে বর্ণিত অর্ডারআইডি থেকে আলাদা হতে পারে।

{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}

exchange.GetOrder

দ্যexchange.GetOrder()ফাংশন অর্ডার তথ্য পেতে ব্যবহৃত হয়।

ক্যোয়ারী সফল হলে ক্যোয়ারী নম্বর অনুযায়ী অর্ডার বিবরণ অনুসন্ধান করুন এবং {@struct/Order Order} কাঠামোটি ফেরত দিন, অথবা ক্যোয়ারী ব্যর্থ হলে null ফেরত দিন। {@struct/Order Order}, শূন্য মান

বিনিময়.GetOrder ((orderId)

দ্যorderIdপ্যারামিটারটি অনুসন্ধান করার আদেশ নির্দিষ্ট করতে ব্যবহৃত হয়। বৈশিষ্ট্যIdঅর্ডার {@struct/Order Order} FMZ প্ল্যাটফর্মের কাঠামো এক্সচেঞ্জ পণ্য কোড এবং এক্সচেঞ্জ মূল অর্ডার আইডি, ইংরেজি কমা দ্বারা পৃথক গঠিত। উদাহরণস্বরূপ, বৈশিষ্ট্যIdস্পট ট্রেডিং জোড়ার অর্ডারের বিন্যাসETH_USDTওকেএক্স এক্সচেঞ্জের মূলধন হল:ETH-USDT,1547130415509278720. প্যারামিটারorderIdকল করার সময় পাসexchange.GetOrder()ফাংশন একটি অর্ডার অনুসন্ধান করার জন্যIdঅর্ডার {@struct/Order Order} কাঠামোর বৈশিষ্ট্য।

অর্ডার সত্য স্ট্রিং

function main(){
    var id = exchange.Sell(1000, 1)
    // Parameter id is the order number, you need to fill in the number of the order you want to query
    var order = exchange.GetOrder(id)      
    Log("Id:", order.Id, "Price:", order.Price, "Amount:", order.Amount, "DealAmount:",
        order.DealAmount, "Status:", order.Status, "Type:", order.Type)
}
def main():
    id = exchange.Sell(1000, 1)
    order = exchange.GetOrder(id)
    Log("Id:", order["Id"], "Price:", order["Price"], "Amount:", order["Amount"], "DealAmount:", 
        order["DealAmount"], "Status:", order["Status"], "Type:", order["Type"])
void main() {
    auto id = exchange.Sell(1000, 1);
    auto order = exchange.GetOrder(id);
    Log("Id:", order.Id, "Price:", order.Price, "Amount:", order.Amount, "DealAmount:", 
        order.DealAmount, "Status:", order.Status, "Type:", order.Type);
}

দ্যexchange.GetOrder()এই ফাংশনটি কিছু এক্সচেঞ্জ দ্বারা সমর্থিত নয়।AvgPrice{@struct/Order Order} স্ট্রাকচারে রিটার্ন মানের বৈশিষ্ট্যটি হল লেনদেনের গড় মূল্য। কিছু এক্সচেঞ্জ এই ক্ষেত্রটি সমর্থন করে না, এবং যদি তারা না করে, এটি 0 এ সেট করা হয়। যদি আপনি ডকারের একটি পুরোনো সংস্করণ ব্যবহার করছেন,orderIdপ্যারামিটারexchange.GetOrder()ফাংশন থেকে ভিন্ন হতে পারেorderIdবর্তমান ডকুমেন্টেশনে বর্ণিত। এক্সচেঞ্জ যে সমর্থন করে নাexchange.GetOrder()ফাংশনঃ

ফাংশনের নাম সমর্থিত না হওয়া স্পট এক্সচেঞ্জ সমর্থিত নয় এমন ফিউচার এক্সচেঞ্জ
অর্ডার পান Zaif / Coincheck / বিটস্ট্যাম্প

{@struct/Order Order}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}

exchange.GetOrders

দ্যexchange.GetOrders()এই ফাংশনটি অপ্রত্যাশিত অর্ডার পেতে ব্যবহৃত হয়।

দ্যexchange.GetOrders()ফাংশন {@struct/Order Order} স্ট্রাকচারগুলির একটি অ্যারে ফেরত দেয় যদি ডেটা অনুরোধ সফল হয়, এবং যদি ডেটা অনুরোধ ব্যর্থ হয় তবে এটি শূন্য মান ফেরত দেয়। {@struct/Order Order} অ্যারে, শূন্য মান

বিনিময়.GetOrders ((() exchange.GetOrders (প্রতীক)

প্যারামিটারsymbolসেট করতে ব্যবহৃত হয়লেনদেনের প্রতীকঅথবালেনদেনের প্রতীক পরিসীমাজিজ্ঞাসাবাদ করা হবে। স্পট এক্সচেঞ্জের জন্য, যদিsymbolপ্যারামিটারটি পাস করা না হলে, সমস্ত স্পট পণ্যের অসম্পূর্ণ অর্ডার ডেটা অনুরোধ করা হবে। ফিউচার এক্সচেঞ্জের জন্য, যদিsymbolপ্যারামিটারটি পাস করা না হলে, ডিফল্টরূপে বর্তমান ট্রেডিং জোড়া এবং চুক্তির কোডের মাত্রা পরিসরের সমস্ত জাতের অসম্পূর্ণ অর্ডার ডেটা অনুরোধ করা হয়।

প্রতীক মিথ্যা স্ট্রিং

/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

function main() {
    var arrSymbol = ["ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"]

    for (var symbol of arrSymbol) {
        var t = exchange.GetTicker(symbol)
        exchange.CreateOrder(symbol, "buy", t.Last / 2, 0.01)
    }

    var spotOrders = exchange.GetOrders()

    var tbls = []
    for (var orders of [spotOrders]) {
        var tbl = {type: "table", title: "test GetOrders", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
        for (var order of orders) {
            tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
        }
        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) +  "`")

    // Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
    return
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
'''

import json

def main():
    arrSymbol = ["ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"]

    for symbol in arrSymbol:
        t = exchange.GetTicker(symbol)
        exchange.CreateOrder(symbol, "buy", t["Last"] / 2, 0.01)

    spotOrders = exchange.GetOrders()

    tbls = []
    for orders in [spotOrders]:
        tbl = {"type": "table", "title": "test GetOrders", "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], "rows": []}
        for order in orders:
            tbl["rows"].append([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
        tbls.append(tbl)

    LogStatus("`" + json.dumps(tbls) +  "`")

    return
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

void main() {
    auto arrSymbol = {"ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"};
    
    for (const auto& symbol : arrSymbol) {
        auto t = exchange.GetTicker(symbol);
        exchange.CreateOrder(symbol, "buy", t.Last / 2, 0.01);
    }

    auto spotOrders = exchange.GetOrders();

    json tbls = R"([])"_json;
    std::vector<std::vector<Order>> arr = {spotOrders};
    for (const auto& orders : arr) {
        json tbl = R"({
            "type": "table", 
            "title": "test GetOrders", 
            "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"],
            "rows": []
        })"_json;

        for (const auto& order : orders) {
            json arrJson = R"([])"_json;

            arrJson.push_back("Symbol");
            arrJson.push_back("Id");
            arrJson.push_back(order.Price);
            arrJson.push_back(order.Amount);
            arrJson.push_back(order.DealAmount);
            arrJson.push_back(order.AvgPrice);
            arrJson.push_back(order.Status);
            arrJson.push_back(order.Type);
            arrJson.push_back(order.Offset);
            arrJson.push_back(order.ContractType);

            tbl["rows"].push_back(arrJson);
        }

        tbls.push_back(tbl);
    }
    
    LogStatus(_D(), "\n", "`" + tbls.dump() + "`");

    return;
}

স্পট এক্সচেঞ্জ অবজেক্ট ব্যবহার করে বর্তমান মূল্যের অর্ধেকের বিনিময়ে একাধিক ভিন্ন ট্রেডিং জোড়ার জন্য ক্রয় অর্ডার স্থাপন করুন এবং তারপরে অসমাপ্ত অর্ডার তথ্য অনুসন্ধান করুন।

/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

function main() {
    var arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]

    for (var symbol of arrSymbol) {
        var t = exchange.GetTicker(symbol)
        exchange.CreateOrder(symbol, "buy", t.Last / 2, 1)
        exchange.CreateOrder(symbol, "sell", t.Last * 2, 1)
    }

    var defaultOrders = exchange.GetOrders()
    var swapOrders = exchange.GetOrders("USDT.swap")
    var futuresOrders = exchange.GetOrders("USDT.futures")
    var btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap")

    var tbls = []
    var arr = [defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders]
    var tblDesc = ["defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"]
    for (var index in arr) {
        var orders = arr[index]
        var tbl = {type: "table", title: tblDesc[index], cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
        for (var order of orders) {
            tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
        }
        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) +  "`")

    // Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
    return
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''

import json

def main():
    arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]

    for symbol in arrSymbol:
        t = exchange.GetTicker(symbol)
        exchange.CreateOrder(symbol, "buy", t["Last"] / 2, 1)
        exchange.CreateOrder(symbol, "sell", t["Last"] * 2, 1)

    defaultOrders = exchange.GetOrders()
    swapOrders = exchange.GetOrders("USDT.swap")
    futuresOrders = exchange.GetOrders("USDT.futures")
    btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap")

    tbls = []
    arr = [defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders]
    tblDesc = ["defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"]
    for index in range(len(arr)):
        orders = arr[index]
        tbl = {"type": "table", "title": tblDesc[index], "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], "rows": []}
        for order in orders:
            tbl["rows"].append([order["Symbol"], order["Id"], order["Price"], order["Amount"], order["DealAmount"], order["AvgPrice"], order["Status"], order["Type"], order["Offset"], order["ContractType"]])
        tbls.append(tbl)

    LogStatus("`" + json.dumps(tbls) +  "`")

    return
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

void main() {
    auto arrSymbol = {"BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
    
    for (const auto& symbol : arrSymbol) {
        auto t = exchange.GetTicker(symbol);
        exchange.CreateOrder(symbol, "buy", t.Last / 2, 1);
        exchange.CreateOrder(symbol, "sell", t.Last * 2, 1);
    }
    
    auto defaultOrders = exchange.GetOrders();
    auto swapOrders = exchange.GetOrders("USDT.swap");
    auto futuresOrders = exchange.GetOrders("USDT.futures");
    auto btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap");
    
    json tbls = R"([])"_json;
    std::vector<std::vector<Order>> arr = {defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders};
    std::string tblDesc[] = {"defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"};
    for (int index = 0; index < arr.size(); index++) {
        auto orders = arr[index];
        json tbl = R"({
            "type": "table", 
            "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"],
            "rows": []
        })"_json;
        tbl["title"] = tblDesc[index];
    
        for (const auto& order : orders) {
            json arrJson = R"([])"_json;

            arrJson.push_back(order.Symbol);
            arrJson.push_back(to_string(order.Id));    // The Id attribute type in the Order structure is TId, which is encoded using a C++ function to_string built into the FMZ platform.
            arrJson.push_back(order.Price);
            arrJson.push_back(order.Amount);
            arrJson.push_back(order.DealAmount);
            arrJson.push_back(order.AvgPrice);
            arrJson.push_back(order.Status);
            arrJson.push_back(order.Type);
            arrJson.push_back(order.Offset);
            arrJson.push_back(order.ContractType);
    
            tbl["rows"].push_back(arrJson);
        }
    
        tbls.push_back(tbl);
    }
    
    LogStatus(_D(), "\n", "`" + tbls.dump() + "`");
    
    return;
}

একাধিক বিভিন্ন ট্রেডিং জোড়া এবং চুক্তি কোডের জন্য অর্ডার দেওয়ার জন্য ফিউচার এক্সচেঞ্জ অবজেক্টগুলি ব্যবহার করুন। প্রতিপক্ষের দাম থেকে দূরে দামগুলিতে অর্ডার দিন, অর্ডারগুলি একটি অসম্পূর্ণ অবস্থায় রাখুন এবং একাধিক উপায়ে অর্ডার অনুসন্ধান করুন।

function main() {
    var orders = exchange.GetOrders("BTC_USDT")           // Examples of spot products
    // var orders = exchange.GetOrders("BTC_USDT.swap")   // Examples of futures products
    Log("orders:", orders)
}
def main():
    orders = exchange.GetOrders("BTC_USDT")          # Examples of spot products
    # orders = exchange.GetOrders("BTC_USDT.swap")   # Examples of futures products
    Log("orders:", orders)
void main() {
    auto orders = exchange.GetOrders("BTC_USDT");           // Examples of spot products
    // auto orders = exchange.GetOrders("BTC_USDT.swap");   // Examples of futures products
    Log("orders:", orders);
}

যখন কলexchange.GetOrders()ফাংশন, পাসSymbolএকটি নির্দিষ্ট ট্রেডিং জোড়া এবং চুক্তির কোডের জন্য অর্ডার ডেটা অনুরোধ করার জন্য প্যারামিটার।

এ বিষয়েGetOrdersফাংশন, প্রতীক পরামিতি ব্যবহারের দৃশ্যাবলী নিম্নরূপ সংক্ষিপ্ত করা হয়ঃ

এক্সচেঞ্জ অবজেক্ট শ্রেণীবিভাগ প্রতীক পরামিতি কোয়েরি পরিধি মন্তব্য
স্পট প্রতীক পরামিতি পাস করবেন না সমস্ত স্পট ট্রেডিং জোড়া অনুসন্ধান করুন সমস্ত কলিং দৃশ্যকল্পের জন্য, যদি এক্সচেঞ্জ ইন্টারফেস এটি সমর্থন না করে, একটি ত্রুটি রিপোর্ট করা হবে এবং একটি শূন্য মান ফেরত দেওয়া হবে। আরও ব্যাখ্যা দেওয়া হবে না।
স্পট ট্রেডিং টাইপ উল্লেখ করুন, প্রতীক প্যারামিটার হলঃ BTC_USDT নির্দিষ্ট বিটিসি_ইউএসডিটি ট্রেডিং জোড়া অনুসন্ধান করুন স্পট এক্সচেঞ্জ অবজেক্টের জন্য প্রতীক পরামিতি বিন্যাসঃ BTC_USDT
ফিউচার প্রতীক পরামিতি পাস করবেন না বর্তমান ট্রেডিং জোড়া এবং চুক্তি কোড মাত্রা পরিসীমা মধ্যে সমস্ত ট্রেডিং পণ্য অনুসন্ধান যদি বর্তমান ট্রেডিং জোড়াটি BTC_USDT হয় এবং চুক্তির কোডটি swap হয়, তাহলে সমস্ত USDT-মার্জিনযুক্ত চিরস্থায়ী চুক্তি অনুসন্ধান করা হবে। এটি কল করার সমতুল্যGetOrders("USDT.swap")
ফিউচার ট্রেডিং টাইপ উল্লেখ করুন, প্রতীক প্যারামিটার হলঃ BTC_USDT.swap একটি নির্দিষ্ট বিটিসির জন্য ইউএসডিটি ভিত্তিক চিরস্থায়ী চুক্তি অনুসন্ধান করুন ফিউচার এক্সচেঞ্জ অবজেক্টের জন্য প্যারামিটার প্রতীক বিন্যাস হলঃট্রেডিং জুটিএবংচুক্তির কোডFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত, চিহ্ন দ্বারা পৃথক"..
ফিউচার ট্রেডিং পণ্যের পরিসীমা উল্লেখ করুন, প্রতীক পরামিতি হলঃ USDT.swap সমস্ত ইউএসডিটি ভিত্তিক স্থায়ী চুক্তি অনুসন্ধান করুন -
বিকল্প সমর্থনকারী ফিউচার এক্সচেঞ্জ প্রতীক পরামিতি পাস করবেন না বর্তমান ট্রেডিং জোড়া মাত্রা পরিসীমা মধ্যে সমস্ত বিকল্প চুক্তি অনুসন্ধান যদি বর্তমান ট্রেডিং জোড়াটি BTC_USDT হয়, তবে চুক্তিটি একটি বিকল্প চুক্তিতে সেট করা হয়, উদাহরণস্বরূপ, Binance বিকল্প চুক্তিঃ BTC-240108-40000-C
বিকল্প সমর্থনকারী ফিউচার এক্সচেঞ্জ নির্দিষ্ট ট্রেডিং পণ্য নির্দিষ্ট করুন নির্দিষ্ট বিকল্প চুক্তির অনুসন্ধান করুন উদাহরণস্বরূপ, বিন্যান্স ফিউচার এক্সচেঞ্জের জন্য, প্রতীক পরামিতি হলঃ BTC_USDT.BTC-240108-40000-C
বিকল্প সমর্থনকারী ফিউচার এক্সচেঞ্জ ট্রেডিং প্রোডাক্টের পরিসীমা উল্লেখ করুন, প্রতীক প্যারামিটারটি হলঃ USDT.option সমস্ত ইউএসডিটি ভিত্তিক বিকল্প চুক্তি অনুসন্ধান করুন -

এ বিষয়েGetOrdersফাংশন, ফিউচার এক্সচেঞ্জ বস্তু অনুসন্ধান পরিমাপ পরিসীমা নিম্নরূপ সংক্ষিপ্ত করা হয়ঃ

প্রতীক পরামিতি অনুরোধ পরিসীমা সংজ্ঞা মন্তব্য
USDT.swap ইউএসডিটি ভিত্তিক চিরস্থায়ী চুক্তি পরিসীমা। জন্য

এক্সচেঞ্জ এপিআই ইন্টারফেসে সমর্থিত নয় এমন মাত্রা, একটি ত্রুটি রিপোর্ট করা হবে এবং একটি শূন্য মান ফিরে আসবে যখন ডাকছে। ইউএসডিটি ভবিষ্যৎ ইউএসডিটি ভিত্তিক ডেলিভারি চুক্তির পরিসীমা। ∙ ∙ ইউএসডি.সোয়াপ ∙ ∙ ∙ মুদ্রা ভিত্তিক স্থায়ী চুক্তি। ইউএসডি.ভবিষ্যৎ। মুদ্রা ভিত্তিক ডেলিভারি পরিসীমা চুক্তি। ইউএসডিটি.অপশন ইউএসডিটি-ভিত্তিক বিকল্প চুক্তি পরিসীমা। ইউএসডি.অপশন। মুদ্রা ভিত্তিক বিকল্প চুক্তি পরিসীমা। USDT.futures_combo। CFD সমন্বয়ের পরিসীমা। ফিউচার_ডেরিবিট এক্সচেঞ্জ। ইউএসডি.ফ্যুচারস_এফএফ। মিশ্র মার্জিন ডেলিভারি চুক্তির পরিসর। ফিউচারস_ক্রাকেন এক্সচেঞ্জ। ইউএসডি.সোয়াপ_পিএফ। মিশ্র মার্জিন স্থায়ী চুক্তির পরিসীমা। ∙∙ ফিউচার_ক্র্যাকেন এক্সচেঞ্জ ∙

যখন অ্যাকাউন্ট বিনিময় বস্তু দ্বারা প্রতিনিধিত্ব করা হয়exchangeএর মধ্যে কোন অপেক্ষমান অর্ডার নেইঅনুসন্ধান পরিসীমাঅথবানির্দিষ্ট ট্রেডিং ইনস্ট্রুমেন্ট(একটি অ্যাক্টিভ অর্ডার একটি অসম্পূর্ণ অবস্থায়), এই ফাংশন কলিং একটি খালি অ্যারে ফেরত দেয়, অর্থাৎঃ[]. নিম্নলিখিত এক্সচেঞ্জগুলির জন্য বর্তমানে অসম্পূর্ণ অর্ডারগুলি অনুসন্ধান করার সময় ইনস্ট্রুমেন্ট প্যারামিটারে পাস করা প্রয়োজন। এই এক্সচেঞ্জগুলির সাথে গেটঅর্ডার্স ফাংশনটি কল করার সময়, যদি ইনস্ট্রুমেন্ট প্যারামিটারটি পাস না করা হয় তবে কেবলমাত্র বর্তমান ইনস্ট্রুমেন্টের অসম্পূর্ণ অর্ডারগুলি অনুরোধ করা হয়, সমস্ত ইনস্ট্রুমেন্টের অসম্পূর্ণ অর্ডারগুলি নয় (কারণ এক্সচেঞ্জ ইন্টারফেস এটি সমর্থন করে না) । জাইফ, এমইএক্সসি, এলব্যাঙ্ক, কর্বিত, কয়েন, বিটমার্ট, বিথাম্ব, বিটফ্লায়ার, বিগোন।

এক্সচেঞ্জ যে সমর্থন করে নাexchange.GetOrders()ফাংশনঃ

ফাংশনের নাম সমর্থিত না হওয়া স্পট এক্সচেঞ্জ সমর্থিত নয় এমন ফিউচার এক্সচেঞ্জ
অর্ডার পান ফিউচার_বিবক্স

{@struct/Order Order}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}

exchange.GetHistoryOrders

দ্যexchange.GetHistoryOrders()এই ফাংশনটি বর্তমান ট্রেডিং জোড়া, চুক্তির জন্য ঐতিহাসিক অর্ডার পেতে ব্যবহৃত হয়; এটি নির্দিষ্ট ট্রেডিং জাতের নির্দিষ্টকরণকে সমর্থন করে।

দ্যexchange.GetHistoryOrders()ফাংশন {@struct/Order Order} স্ট্রাকচারগুলির একটি অ্যারে ফেরত দেয় যদি তথ্যের অনুরোধ সফল হয়, এবং অনুরোধ ব্যর্থ হলে শূন্য। {@struct/Order Order} অ্যারে, শূন্য মান

exchange.GetHistoryOrders ((() exchange.GetHistoryOrders ((প্রতীক) exchange.GetHistoryOrders ((প্রতীক, যেহেতু) exchange.GetHistoryOrders ((প্রতীক, যেহেতু, সীমা) বিনিময়.GetHistoryOrders ((সেই থেকে) exchange.GetHistoryOrders (যেহেতু, সীমা)

দ্যsymbolএই প্যারামিটারটি ট্রেড সিম্বল নির্দিষ্ট করতে ব্যবহৃত হয়।BTC_USDTউদাহরণস্বরূপ, যখনexchangeএকটি স্পট এক্সচেঞ্জ অবজেক্ট, জন্য পরামিতি বিন্যাসsymbolহয়BTC_USDTযদি এটি একটি ফিউচার এক্সচেঞ্জ অবজেক্ট হয়, উদাহরণস্বরূপ চিরস্থায়ী চুক্তি গ্রহণ করে, প্যারামিটার বিন্যাসsymbolহচ্ছেঃBTC_USDT.swap. আপনি যদি বিকল্প চুক্তির অর্ডার তথ্য অনুসন্ধান করছেন, প্যারামিটার সেট করুনsymbolথেকে"BTC_USDT.BTC-240108-40000-C"(উদাহরণস্বরূপ Binance Option BTC-240108-40000-C) ।ট্রেডিং জুটিFMZ প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত এবং এক্সচেঞ্জ দ্বারা সংজ্ঞায়িত নির্দিষ্ট বিকল্প চুক্তির কোড, অক্ষর . দ্বারা পৃথক। যদি এই প্যারামিটারটি পাস না করা হয়, তাহলে বর্তমানে সেট করা ট্রেডিং জোড়া এবং চুক্তি কোডের অর্ডার ডেটা ডিফল্টরূপে অনুরোধ করা হবে।

প্রতীক মিথ্যা স্ট্রিং দ্যsinceপ্যারামিটারটি মিলিসেকেন্ডে ক্যোয়ারির শুরু টাইমস্ট্যাম্প নির্দিষ্ট করতে ব্যবহৃত হয়। যেহেতু মিথ্যা সংখ্যা দ্যlimitপ্যারামিটারটি ক্যোয়ারির অর্ডারের সংখ্যা নির্দিষ্ট করতে ব্যবহৃত হয়। সীমা মিথ্যা সংখ্যা

function main() {
    var historyOrders = exchange.GetHistoryOrders()
    Log(historyOrders)
}
def main():
    historyOrders = exchange.GetHistoryOrders()
    Log(historyOrders)
void main() {
    auto historyOrders = exchange.GetHistoryOrders();
    Log(historyOrders);
}
  • কখনsymbol, since, limitপ্যারামিটারগুলি নির্দিষ্ট করা হয় না, ডিফল্ট অনুসন্ধানটি বর্তমান ট্রেডিং জোড়া, চুক্তির ঐতিহাসিক আদেশ। বর্তমান সময়ের নিকটতম একটি নির্দিষ্ট পরিসরের মধ্যে ঐতিহাসিক আদেশগুলি অনুসন্ধান করে, অনুসন্ধান পরিসীমা এক্সচেঞ্জ ইন্টারফেসের একক অনুসন্ধান পরিসরের উপর নির্ভর করে।
  • যখনsymbolপ্যারামিটারটি নির্দিষ্ট করা হলে, সেট ট্রেড টাইপের জন্য অর্ডারের ইতিহাস অনুসন্ধান করুন।
  • যখনsinceপ্যারামিটার নির্দিষ্ট করা হয়, বর্তমান সময় ব্যবহার করে দিক অনুসন্ধানsinceসময় স্ট্যাম্প হিসাবে শুরু সময়.
  • যদিlimitপ্যারামিটারটি নির্দিষ্ট করা হলে, যথেষ্ট সংখ্যক এন্ট্রি করার পর ক্যোয়ারীটি ফিরে আসে।
  • এই ফাংশনটি শুধুমাত্র এক্সচেঞ্জগুলির জন্য সমর্থিত যা একটি ঐতিহাসিক অর্ডার অনুসন্ধান ইন্টারফেস সরবরাহ করে।

এক্সচেঞ্জ যে সমর্থন করে নাexchange.GetHistoryOrders()ফাংশনঃ

ফাংশনের নাম সমর্থিত না হওয়া স্পট এক্সচেঞ্জ সমর্থিত নয় এমন ফিউচার এক্সচেঞ্জ
GetHistoryঅর্ডার Zaif / Upbit / Coincheck / Bitstamp / Bithumb / BitFlyer / BigONE ফিউচার_ডিওয়াইডিএক্স / ফিউচার_বিবক্স / ফিউচার_অ্যাপোলোএক্স

{@struct/Order Order}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}

exchange.SetPrecision

exchange.SetPrecision()ফাংশন সঠিকতা সেট করতে ব্যবহার করা হয়exchangeবিনিময় বস্তুদামএবংঅর্ডার পরিমাণ, সেটিং করার পর, সিস্টেম স্বয়ংক্রিয়ভাবে অতিরিক্ত তথ্য উপেক্ষা করবে।

exchange.SetPrecision ((pricePrecision, amountPrecision) বিনিময় করুন।

দ্যpricePrecisionদামের তথ্যের নির্ভুলতা নিয়ন্ত্রণ করতে এই প্যারামিটার ব্যবহার করা হয়। মূল্যনির্দিষ্টতা সত্য সংখ্যা দ্যamountPrecisionপ্যারামিটারটি অর্ডার করা তথ্যের পরিমাণের নির্ভুলতা নিয়ন্ত্রণ করতে ব্যবহৃত হয়। পরিমাণনির্দিষ্টতা সত্য সংখ্যা

function main(){
    // Set the decimal precision of price to 2 bits, and the decimal precision of variety order amount to 3 bits
    exchange.SetPrecision(2, 3)
}
def main():
    exchange.SetPrecision(2, 3)
void main() {
    exchange.SetPrecision(2, 3);
}

ব্যাকটেস্টিং সিস্টেম এই ফাংশন সমর্থন করে না, এবং ব্যাকটেস্টিং সিস্টেমের সংখ্যাসূচক নির্ভুলতা স্বয়ংক্রিয়ভাবে পরিচালিত হয়।

{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}

exchange.SetRate

এক্সচেঞ্জ অবজেক্টের বর্তমান বিনিময় হার সেট করুন।

exchange.SetRate (রেট)

দ্যrateরূপান্তর বিনিময় হার নির্দিষ্ট করতে এই পরামিতি ব্যবহার করা হয়। হার সত্য সংখ্যা

function main(){
    Log(exchange.GetTicker())
    // Set exchange rate conversion
    exchange.SetRate(7)
    Log(exchange.GetTicker())
    // Set to 1, no conversion
    exchange.SetRate(1)
}
def main():
    Log(exchange.GetTicker())
    exchange.SetRate(7)
    Log(exchange.GetTicker())
    exchange.SetRate(1)
void main() {
    Log(exchange.GetTicker());
    exchange.SetRate(7);
    Log(exchange.GetTicker());
    exchange.SetRate(1);
}

যদি বিনিময় হারের মান নির্ধারণ করা হয়exchange.SetRate()ফাংশন, যেমন 7. তারপর বর্তমান দ্বারা প্রতিনিধিত্ব বিনিময় জন্য টিকার, গভীরতা, অর্ডার দাম, ইত্যাদি হিসাবে সমস্ত মূল্য তথ্যexchangeবিনিময় বস্তুর রূপান্তর করা হবে 7 এর নির্ধারিত বিনিময় হার দ্বারা এটি গুণ করে। উদাহরণস্বরূপ,exchangeমার্কিন ডলারের সাথে মুদ্রা বিনিময়।exchange.SetRate(7), লাইভ মার্কেটে সমস্ত দামকেসিএনওয়াই৭ দিয়ে গুণ করে নামকরণ।

{@fun/Market/exchange.GetRate বিনিময়.GetRate}

exchange.IO

দ্যexchange.IO()ফাংশনটি এক্সচেঞ্জ অবজেক্টের সাথে সম্পর্কিত অন্যান্য ইন্টারফেস কলগুলির জন্য ব্যবহৃত হয়।

দ্যexchange.IO()ফাংশন এক্সচেঞ্জ অবজেক্টের সাথে সম্পর্কিত অন্যান্য ইন্টারফেসগুলিকে কল করে, একটি সফল কলের জন্য অনুরোধ করা প্রতিক্রিয়া ডেটা ফেরত দেয় এবং এটি ব্যর্থ কলের জন্য null ফেরত দেয়। string, number, bool, object, array, null, এবং সিস্টেম দ্বারা সমর্থিত অন্য কোন টাইপ

exchange.IO(k,...args)

দ্যkপ্যারামিটার কল টাইপ সেট করতে ব্যবহৃত হয়, ঐচ্ছিক মান সঙ্গে"api", "currency", "base", "trade_margin", "trade_normal", "public_base", "mbase", selfTradePreventionMode, simulate, cross, dual, unifiedইত্যাদি। k সত্য স্ট্রিং প্রসারিত পরামিতি, নির্দিষ্ট কল দৃশ্যকল্প অনুযায়ী পাস,argপ্যারামিটার একের বেশি পাস করা যেতে পারে।exchange.IO()ফাংশন, বিভিন্ন পরামিতি সেটিং বিভিন্ন ফাংশন অনুরূপ।exchange.IO()ফাংশন অনির্দিষ্ট। আরজি সত্য string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্য যেকোনো টাইপ

function main() {
    var arrOrders = [
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ]
    
    // Call exchange.IO to access the exchange's bulk order interface directly
    var ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", JSON.stringify(arrOrders))
    Log(ret)
}
import json
def main():
    arrOrders = [
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}, 
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ]
    ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", json.dumps(arrOrders))
    Log(ret)
void main() {
    json arrOrders = R"([
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
        {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
    ])"_json;
    auto ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", arrOrders.dump());
    Log(ret);
}

ব্যবহার করেexchange.IO("api", httpMethod, resource, params, raw)কল ফর্মexchange.IO()ফাংশন, এটি এক্সচেঞ্জের এপিআই ইন্টারফেস বুঝতে এবং প্রাসঙ্গিক ডকুমেন্টেশন পরীক্ষা করা প্রয়োজন। এটি আপনাকে FMZ প্ল্যাটফর্মে যোগ করা হয় না এমন কার্যকারিতা প্রসারিত করার অনুমতি দেবে।POSTঅনুরোধ আপনাকে এনক্রিপশন, স্বাক্ষর, বা পরামিতি যাচাই করার বিষয়ে চিন্তা করতে হবে না, যা ইতিমধ্যে নীচে FMZ দ্বারা পরিচালিত হয়, যতক্ষণ আপনি সংশ্লিষ্ট পরামিতি পূরণ করুন। আপনি ব্যাচ অর্ডার উদাহরণটি উল্লেখ করতে পারেনOKX এক্সচেঞ্জফিউচার চুক্তি, এবং প্যারামিটার ব্যবহারrawঅর্ডার প্যারামিটার পাস করার জন্যঃ

var amount = 1
var price = 10
var basecurrency = "ltc"
function main () {
    // Note that both amount.toString() and price.toString() have a ' character on the left and right side
    var message = "symbol=" + basecurrency + "&amount='" + amount.toString() + "'&price='" + price.toString() + "'&side=buy" + "&type=limit"
    var id = exchange.IO("api", "POST", "/v1/order/new", message)
}
amount = 1
price = 10
basecurrency = "ltc"
def main():
    message = "symbol=" + basecurrency + "&amount='" + str(amount) + "'&price='" + str(price) + "'&side=buy" + "&type=limit"
    id = exchange.IO("api", "POST", "/v1/order/new", message)
void main() {
    auto amount = 1.0;
    auto price = 10.0;
    auto basecurrency = "ltc";
    string message = format("symbol=%s&amount=\"%.1f\"&price=\"%.1f\"&side=buy&type=limit", basecurrency, amount, price);
    auto id = exchange.IO("api", "POST", "/v1/order/new", message);
}

যদি মূল মানparamsপ্যারামিটার (যেমন, HTTP অনুরোধ প্যারামিটার) একটি স্ট্রিং, এটি প্যারামিটার মান আবৃত করতে প্যারামিটার মান চারপাশে একক উদ্ধৃতি (যেমন, চিহ্ন ') লিখতে হবে।

function main() {
    var ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
    Log(ret)
}
def main():
    ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
    Log(ret)
void main() {
    auto ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC");
    Log(ret);
}

এটি সম্পূর্ণ ইউআরএল পরামিতি পাস সমর্থন করে, যা বেস ঠিকানা সুইচিং অপারেশন বাদ দিতে পারেনexchange.SetBase()ফাংশন) ।

function main(){
    var ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
    Log(ret)
}
def main():
    ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
    Log(ret)
void main() {
    auto ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT");
    Log(ret);
}

প্যারামিটার ছাড়াই একটি কলের উদাহরণraw:

function main() {
    // For example, if you set the current trading pair of the exchange object to BTC_USDT at the beginning of the live trading, print the current trading pair tickers
    Log(exchange.GetTicker())
    // Switch the trading pair to LTC_BTC      
    exchange.IO("currency", "LTC_BTC")
    Log(exchange.GetTicker())
}
def main():
    Log(exchange.GetTicker())
    exchange.IO("currency", "LTC_BTC")
    Log(exchange.GetTicker())
void main() {
    Log(exchange.GetTicker());
    exchange.IO("currency", "LTC_BTC");
    Log(exchange.GetTicker());
}

বর্তমান এক্সচেঞ্জের ট্রেডিং জোড়া পরিবর্তন করুন, যাতে এটি কোড দ্বারা কনফিগার করা ট্রেডিং জোড়া পরিবর্তন করবেলাইভ ট্রেডিং সৃষ্টিতেঅথবাব্যাকটেস্টে.

function main () {
    // exchanges[0] is the first exchange object added when the live trading is created 
    exchanges[0].IO("base", "https://api.huobi.pro")
}
def main():
    exchanges[0].IO("base", "https://api.huobi.pro")
void main() {
    exchanges[0].IO("base", "https://api.huobi.pro");
}```
For example, the default base address when the exchange object is wrapped is ```https://api.huobipro.com```, and when you need to switch to ```https://api.huobi.pro```, use the following code to switch:
```javascript
function main() {
    exchange.SetBase("https://api.bitfinex.com")
    exchange.IO("mbase", "https://api-pub.bitfinex.com")
}
def main():
    exchange.SetBase("https://api.bitfinex.com")
    exchange.IO("mbase", "https://api-pub.bitfinex.com")
void main() {
    exchange.SetBase("https://api.bitfinex.com");
    exchange.IO("mbase", "https://api-pub.bitfinex.com");
}

টিকার ইন্টারফেস এবং ট্রেডিং ইন্টারফেস জন্য বিভিন্ন বেস ঠিকানা সঙ্গে এক্সচেঞ্জ জন্য, উদাহরণস্বরূপ, Bitfinex ফিউচার দুটি ঠিকানা আছে, টিকার ইন্টারফেস জন্য এক এবং ট্রেডিং ইন্টারফেস জন্য অন্য. Bitfinex ফিউচার ব্যবহার করে ব্যক্তিগত ইন্টারফেস বেস ঠিকানা পরিবর্তনexchange.SetBase("xxx"). Bitfinex ফিউচার পাবলিক ইন্টারফেস বেস ঠিকানা পরিবর্তন ব্যবহার করেexchange.IO("mbase", "xxx").

I. ক্রিপ্টোকারেন্সি-কেন্দ্রিক এক্সচেঞ্জের জন্য অন্যান্য API ইন্টারফেস কলগুলি যা পরামিতি সহ অভিন্নভাবে ক্যাপসুল করা হয় নাkসেট করুন"api":

exchange.IO("api", httpMethod, resource, params, raw)
  • httpMethod : প্যারামিটারটি একটি স্ট্রিং টাইপ, অনুরোধ টাইপ পূরণ করুনPOST, GETইত্যাদি।
  • resource: প্যারামিটারটি স্ট্রিং টাইপের এবং অনুরোধ পথ পূরণ করে; এটি সম্পূর্ণ অনুরোধ পথ ব্যবহার সমর্থন করে, বিস্তারিত জানার জন্য রেফারেন্স উদাহরণ দেখুন।
  • প্যারামিটার: প্যারামিটারটি একটি স্ট্রিং টাইপ, যা অনুরোধ প্যারামিটার দিয়ে ভরা, যা কোড করা হয়URL.
  • raw: প্যারামিটারটি হল raw স্ট্রিং প্যারামিটার এবং বাদ দেওয়া যেতে পারে।

দ্যexchange.IO("api", httpMethod, resource, params, raw)ফাংশন কল এক্সচেঞ্জ ইন্টারফেসে অ্যাক্সেস করবে এবং কল ব্যর্থ হলে এবং একটি ত্রুটি ঘটে গেলে null ফেরত দেবে। শুধুমাত্র বাস্তব ট্রেডিং সমর্থন কলexchange.IO("api", httpMethod, resource, params, raw) function.

II. ট্রেডিং জোড়া পরিবর্তন করার জন্য, পরামিতিkসেট করা আছে"currency":

exchange.IO("currency", currency)
  • মুদ্রাঃ পরামিতিটি একটি স্ট্রিং টাইপ যা একটি অভিন্ন বড় হাতের ফরম্যাটের সাথে, পৃথক করার জন্য একটি underscore ব্যবহার করেbaseCurrencyথেকেquoteCurrencyযেমন-BTC_USDT.

    1. ব্যাকটেস্টিং সিস্টেম এখন ট্রেডিং জোড়া স্যুইচিং সমর্থন করে (শুধুমাত্র ডিজিটাল মুদ্রা স্পট এক্সচেঞ্জ বস্তুর জন্য), যখন ব্যাকটেস্টিং, আপনি মনোযোগ দিতে হবে যে আপনি শুধুমাত্র একই denominated মুদ্রা সঙ্গে ট্রেডিং জোড়া স্যুইচ করতে পারেন, উদাহরণস্বরূপ, বর্তমান ট্রেডিং জোড়া হয়ETH_BTCশুধুমাত্র পরিবর্তন করতে পারেনLTC_BTC, নাLTC_USDT.
    2. ক্রিপ্টোকারেন্সি ফিউচার চুক্তির ক্ষেত্রে এক্সচেঞ্জ অবজেক্ট ট্রেডিং জোড়া পরিবর্তন করে এবং কোন চুক্তিটি ট্রেড করা হবে তা নির্ধারণের জন্য চুক্তির কোডটি আবার সেট করতে হবে।
    3. {@fun/Account/exchange.SetCurrency exchange.SetCurrency} ফাংশন ব্যবহার করে ট্রেডিং জোড়া স্যুইচ করার জন্য ব্যবহার ঠিক একইexchange.IO("currency", currency)ট্রেডিং জোড়া পরিবর্তন করতে।

iii. ক্রিপ্টোকারেন্সি স্পট এক্সচেঞ্জ অবজেক্ট লিভারেজড অ্যাকাউন্ট মোড স্যুইচ করতে ব্যবহৃত হয়ঃ

  • প্যারামিটারkসেট করা আছে"trade_margin"এক্সচেঞ্জের স্পট লিভারেজ অ্যাকাউন্ট মোডে স্যুইচ করার জন্য। অর্ডার দেওয়া এবং অ্যাকাউন্টের সম্পদ পাওয়া এক্সচেঞ্জের স্পট লিভারেজ ইন্টারফেসে অ্যাক্সেস পাবে। যদি এক্সচেঞ্জ স্পট লিভারেজের ক্ষেত্রে পূর্ণ মার্জিন এবং বিচ্ছিন্ন মার্জিনের মধ্যে পার্থক্য করে, তাহলে ব্যবহার করুনঃexchange.IO("trade_super_margin")লিভারেজযুক্ত অ্যাকাউন্টের জন্য পূর্ণ মার্জিনে স্যুইচ করতে হবে এবংexchange.IO("trade_margin")লিভারেজযুক্ত অ্যাকাউন্টের জন্য আইসোলেটেড মার্জিনে স্যুইচ করতে হবে।
  • প্যারামিটারkসেট করা আছে"trade_normal"স্বাভাবিক স্পট অ্যাকাউন্ট মোডে ফিরে যেতে।

স্পট এক্সচেঞ্জ যা লিভারেজযুক্ত অ্যাকাউন্ট মডেলগুলির মধ্যে স্যুইচিং সমর্থন করেঃ

বিনিময় বিশেষ মন্তব্য
ঠিক আছে লিভারেজযুক্ত অ্যাকাউন্ট মোডে ট্রেডিং জোড়া স্বাভাবিকগুলির থেকে আলাদা, কিছু ট্রেডিং জোড়া তাদের নাও থাকতে পারে।exchange.IO("trade_super_margin")লিভারেজযুক্ত অ্যাকাউন্টের জন্য পূর্ণ পজিশনে স্যুইচ করা এবং ব্যবহার করাexchange.IO("trade_margin")অবস্থান দ্বারা অবস্থান পরিবর্তন করতে.trade_normalসাধারণ স্পট মোডে স্যুইচ করতে।exchange.IO("tdMode", "cross")সরাসরি লিভারেজ মোড নির্দিষ্ট করতে।
হুবি লিভারেজড অ্যাকাউন্ট মোড ট্রেডিং জোড়া স্বাভাবিকের থেকে আলাদা, কিছু ট্রেডিং জোড়া তাদের নাও থাকতে পারে। হুবি লিভারেজড অ্যাকাউন্টে পূর্ণ অবস্থান এবং অবস্থান দ্বারা অবস্থান রয়েছে। ব্যবহার করুনtrade_marginপজিশন অনুযায়ী লিভারেজ অ্যাকাউন্ট পজিশনে স্যুইচ করতে, ব্যবহারtrade_super_marginলিভারেজ অ্যাকাউন্টের পূর্ণ অবস্থানে স্যুইচ করতে।trade_normalস্বাভাবিক মুদ্রা-মুদ্রা মোডে স্যুইচ করতে।
বিন্যান্স লিভারেজযুক্ত অ্যাকাউন্টের মোডটি পজিশন অনুযায়ী পজিশন এবং পূর্ণ পজিশনে বিভক্ত, ব্যবহারtrade_marginঅবস্থান দ্বারা অবস্থান পরিবর্তন করতে, ব্যবহারtrade_super_marginপূর্ণ অবস্থানে স্যুইচ করতে, ব্যবহারtrade_normalস্বাভাবিক মুদ্রা-মুদ্রা মোডে স্যুইচ করতে।
গেটআইও লিভারেজযুক্ত অ্যাকাউন্টের মোডটি পজিশন অনুযায়ী পজিশন এবং পূর্ণ পজিশনে বিভক্ত, ব্যবহারtrade_marginঅবস্থান দ্বারা অবস্থান পরিবর্তন করতে, ব্যবহারtrade_super_marginপূর্ণ অবস্থানে স্যুইচ করতে, ব্যবহারtrade_normalস্বাভাবিক মুদ্রা-মুদ্রা মোডে স্যুইচ করতে।
AscendEx ব্যবহারexchange.IO("trade_margin")লিভারেজ অ্যাকাউন্ট মোডে স্যুইচ করতে এবংexchange.IO("trade_normal")স্বাভাবিক অ্যাকাউন্ট মোডে ফিরে যেতে।
উও ব্যবহারexchange.IO("trade_margin")লিভারেজ অ্যাকাউন্ট মোডে স্যুইচ করতে এবংexchange.IO("trade_normal")স্বাভাবিক অ্যাকাউন্ট মোডে ফিরে যেতে।
কয়েন এক্স ব্যবহারexchange.IO("trade_margin")লিভারেজযুক্ত অ্যাকাউন্ট মোডে স্যুইচ করতে এবংexchange.IO("trade_normal")স্বাভাবিক অ্যাকাউন্ট মোডে ফিরে যেতে।

IV. অন্যান্য সুইচিং ফাংশনঃদেখুনexchange.IO()জন্য ফাংশনঅন্যান্য সুইচিং ফাংশনব্যবহারকারীর নির্দেশিকায়।

{@fun/NetSettings/exchange.SetBase exchange.SetBase}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@var EXCHANGE_OP_IO_CONTROL}

exchange.Log

দ্যexchange.Log()ফাংশনটি লগ কলাম এলাকায় অর্ডার স্থাপন এবং প্রত্যাহারের লগ আউটপুট করতে ব্যবহৃত হয়। যখন কল করা হয়, কোন অর্ডার স্থাপন করা হয় না, শুধুমাত্র লেনদেন লগ আউটপুট এবং রেকর্ড করা হয়।

exchange.Log ((অর্ডারপ্রকার, মূল্য, পরিমাণ) exchange.Log ((orderType, price, amount,...args) অর্ডারের ধরন, মূল্য, পরিমাণ,...args)

দ্যorderTypeপ্যারামিটারটি আউটপুট লগ টাইপ সেট করতে ব্যবহৃত হয়, ঐচ্ছিক মানগুলি হল {@var/LOG_TYPE/LOG_TYPE_BUY LOG_TYPE_BUY}, {@var/LOG_TYPE/LOG_TYPE_SELL LOG_TYPE_SELL}, {@var/LOG_TYPE/LOG_TYPE_CANCEL LOG_TYPE_CANCEL}. অর্ডারপ্রকার সত্য সংখ্যা দ্যpriceপ্যারামিটারটি আউটপুট লগ-এ প্রদর্শিত দাম সেট করতে ব্যবহৃত হয়। দাম সত্য সংখ্যা দ্যamountএই প্যারামিটারটি আউটপুট লগ-এ প্রদর্শিত অর্ডারের পরিমাণ সেট করতে ব্যবহৃত হয়। পরিমাণ সত্য সংখ্যা প্রসারিত প্যারামিটার যা এই লগের সাথে তথ্য আউটপুট করতে পারে,argপ্যারামিটার একের বেশি পাস করা যেতে পারে। আরজি মিথ্যা string, number, bool, object, array, null এবং সিস্টেম দ্বারা সমর্থিত অন্য যেকোনো টাইপ

var id = 123
function main() {
    // Order type buy, price 999, amount 0.1
    exchange.Log(LOG_TYPE_BUY, 999, 0.1)      
    // Cancel the order
    exchange.Log(LOG_TYPE_CANCEL, id)         
}
id = 123
def main():
    exchange.Log(LOG_TYPE_BUY, 999, 0.1)
    exchange.Log(LOG_TYPE_CANCEL, id)
void main() {
    auto id = 123;
    exchange.Log(LOG_TYPE_BUY, 999, 0.1);
    exchange.Log(LOG_TYPE_CANCEL, id);
}

ব্যবহারexchange.Log(orderType, price, amount)এটি পরীক্ষার পরে লাইভ ট্রেডিং অর্ডারের জন্য ব্যবহার করা যেতে পারে, সিমুলেটেড অর্ডার স্থাপন, এবং এটি অর্ডার স্থানান্তর লগিংয়ে সহায়তা করতে পারে। সর্বাধিক সাধারণ দৃশ্যকল্পগুলির মধ্যে একটি হল {@fun/Trade/exchange.IOexchange.IO} ফাংশনটি শর্তাধীন অর্ডার তৈরির জন্য এক্সচেঞ্জের ইন্টারফেসে অ্যাক্সেস করতে পারে, কিন্তুexchange.IO()ফাংশন লাইভ ট্রেডিং লগ রেকর্ডে লেনদেন লগ তথ্য আউটপুট দেয় না।exchange.Log()অর্ডার স্থানান্তর তথ্য রেকর্ড করার জন্য আউটপুট লগকে সম্পূরক করতে এই ফাংশন ব্যবহার করা যেতে পারে এবং অর্ডার প্রত্যাহারের ক্ষেত্রেও একই কথা সত্য।

যখনorderTypeপ্যারামিটার হলLOG_TYPE_CANCEL,priceপ্যারামিটার হল প্রত্যাহারকৃত অর্ডারের অর্ডার আইডি, যা অর্ডারটি সরাসরি প্রত্যাহার করা হলে প্রত্যাহারের লগটি মুদ্রণের জন্য ব্যবহৃত হয়।exchange.IO()ফাংশন।exchange.Log()ফাংশন হল {@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টের সদস্য ফাংশন, যা গ্লোবাল ফাংশন {@fun/Log Log} থেকে আলাদা।

{@fun/Log Log}, {@var/EXCHANGE exchange}, {@var/LOG_TYPE/LOG_TYPE_BUY LOG_TYPE_BUY}, {@var/LOG_TYPE/LOG_TYPE_SELL LOG_TYPE_SELL}, {@var/LOG_TYPE/LOG_TYPE_CANCEL LOG_TYPE_CANCEL}

exchange.Encode

দ্যexchange.Encode()ফাংশনটি স্বাক্ষর এনক্রিপশন গণনার জন্য ব্যবহৃত হয়।

দ্যexchange.Encode()ফাংশন হিসাব করা হ্যাশ মান কোডিং ফেরত দেয়। স্ট্রিং

exchange.Encode ((algo, inputFormat, outputFormat, data) exchange.Encode ((algo, inputFormat, outputFormat, data, keyফরম্যাট, কী)

প্যারামিটারalgoহ'ল এনকোডিং গণনার জন্য ব্যবহৃত অ্যালগরিদম। সমর্থিত সেটিংস হ'লঃ raw (কোন অ্যালগরিদম ব্যবহার করা হয়নি), sign, signTx, md4, md5, sha256, sha512, sha1, keccak256, sha3.224, sha3.256, sha3.384, sha3.512, sha3.keccak256, sha3.keccak512, sha512.384, sha512.256, sha512.224, emd160, blake2ripb.256, blake2b.512, blake2s.128, blake2s.256।algoএছাড়াও সমর্থন করেঃ text.encoder.utf8, text.decoder.utf8, text.encoder.gbk, text.decoder.gbk, এনকোডিং এবং ডিকোডিং স্ট্রিং জন্য।algoএছাড়াও সমর্থন করেঃ ed25519 অ্যালগরিদম। এটি বিভিন্ন হ্যাশ অ্যালগরিদম ব্যবহার সমর্থন করে, উদাহরণস্বরূপ, প্যারামিটারalgoed25519.md5, ed25519.sha512 ইত্যাদি হিসাবে লেখা যেতে পারেed25519.seedগণনা। কিছু সত্য স্ট্রিং তথ্য বিন্যাস নির্দিষ্ট করতে ব্যবহৃত হয়dataপ্যারামিটার।inputFormatপ্যারামিটারটি raw, hex, base64, এবং string এর মধ্যে একটিতে সেট করা যেতে পারে। raw এর অর্থ ডেটা কাঁচা ডেটা, hex এর অর্থ ডেটাhexকোড করা, base64 মানে তথ্যbase64এনকোড করা হয়, এবং string মানে ডাটা একটি স্ট্রিং। ইনপুটফরম্যাট সত্য স্ট্রিং আউটপুট ডেটা ফরম্যাট নির্দিষ্ট করতে ব্যবহৃত হয়।outputFormatপ্যারামিটার নিম্নলিখিত সেটিংস সমর্থন করেঃ raw, hex, base64, string. raw মানে ডাটা কাঁচা ডাটা, hex মানে ডাটাhexকোড করা, base64 মানে তথ্যbase64এনকোড করা হয়, এবং string মানে ডাটা একটি স্ট্রিং। আউটপুটফর্ম্যাট সত্য স্ট্রিং প্যারামিটারdataযে তথ্যগুলো প্রক্রিয়া করা হবে। তথ্য সত্য স্ট্রিং তথ্য বিন্যাস নির্দিষ্ট করতে ব্যবহৃত হয়keyপ্যারামিটার।keyপ্যারামিটারটি raw, hex, base64, এবং string এর মধ্যে একটিতে সেট করা যেতে পারে। raw এর অর্থ ডেটা কাঁচা ডেটা, hex এর অর্থ ডেটাhexকোড করা, base64 মানে তথ্যbase64এনকোড করা হয়, এবং string মানে ডাটা একটি স্ট্রিং। keyফরম্যাট মিথ্যা স্ট্রিং দ্যkeyপ্যারামিটার স্বাক্ষর হিসাব ব্যবহৃত কী উল্লেখ করতে ব্যবহৃত হয়, এবং এটি একটি সরল পাঠ্য স্ট্রিং হিসাবে ব্যবহার করা যেতে পারে. আপনি ব্যবহার করতে পারেন"{{accesskey}}", "{{secretkey}}"উল্লেখ করার জন্যaccessKeyএবংsecretKey{@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টে কনফিগার করা। চাবি মিথ্যা স্ট্রিং

function main() {
    var APIKEY = "your Access Key(Bitmex API ID)"
    var expires = parseInt(Date.now() / 1000) + 10
    var signature = exchange.Encode("sha256", "string", "hex", "GET/realtime" + expires, "hex", "{{secretkey}}")
    var client = Dial("wss://www.bitmex.com/realtime", 60)
    var auth = JSON.stringify({args: [APIKEY, expires, signature], op: "authKeyExpires"})
    var pos = 0
    client.write(auth)
    client.write('{"op": "subscribe", "args": "position"}')
    while (true) {
        bitmexData = client.read()
        if(bitmexData.table == 'position' && pos != parseInt(bitmexData.data[0].currentQty)){
            Log('position change', pos, parseInt(bitmexData.data[0].currentQty), '@')
            pos = parseInt(bitmexData.data[0].currentQty)
        }
    }
}
import time
def main():
    APIKEY = "your Access Key(Bitmex API ID)"
    expires = int(time.time() + 10)
    signature = exchange.Encode("sha256", "string", "hex", "GET/realtime" + expires, "hex", "{{secretkey}}")
    client = Dial("wss://www.bitmex.com/realtime", 60)
    auth = json.dumps({"args": [APIKEY, expires, signature], "op": "authKeyExpires"})
    pos = 0
    client.write(auth)
    client.write('{"op": "subscribe", "args": "position"}')
    while True:
        bitmexData = json.loads(client.read())
        if "table" in bitmexData and bitmexData["table"] == "position" and len(bitmexData["data"]) != 0 and pos != bitmexData["data"][0]["currentQty"]:   
            Log("position change", pos, bitmexData["data"][0]["currentQty"], "@")
            pos = bitmexData["data"][0]["currentQty"]
void main() {
    auto APIKEY = "your Access Key(Bitmex API ID)";
    auto expires = Unix() + 10;
    auto signature = exchange.Encode("sha256", "string", "hex", format("GET/realtime%d", expires), "hex", "{{secretkey}}");
    
    auto client = Dial("wss://www.bitmex.com/realtime", 60);
    json auth = R"({"args": [], "op": "authKeyExpires"})"_json;            

    auth["args"].push_back(APIKEY);
    auth["args"].push_back(expires);
    auth["args"].push_back(signature);
    auto pos = 0;
    client.write(auth.dump());
    client.write("{\"op\": \"subscribe\", \"args\": \"position\"}");
    while(true) {
        auto bitmexData = json::parse(client.read());
        if(bitmexData["table"] == "position" && bitmexData["data"][0].find("currentQty") != bitmexData["data"][0].end() && pos != bitmexData["data"][0]["currentQty"]) {
            Log("test");
            Log("position change", pos, bitmexData["data"][0]["currentQty"], "@");
            pos = bitmexData["data"][0]["currentQty"];
        }
    }
}

BitMEX অবস্থান পরিবর্তন চাপের উদাহরণ (wss প্রোটোকল):

শুধুমাত্র বাস্তব ট্রেডিং সমর্থন কলexchange.Encode()ফাংশন।"{{accesskey}}", "{{secretkey}}"রেফারেন্স শুধুমাত্র বৈধ যখনexchange.Encode()ফাংশন ব্যবহার করা হয়.

{@var/EXCHANGE exchange}, {@fun/Global/Encode Encode}

exchange.Go

মাল্টি-থ্রেইড অ্যাসিনক্রোনস সাপোর্ট ফাংশনগুলি সমস্ত সমর্থিত ফাংশনগুলির ক্রিয়াকলাপকে অ্যাসিনক্রোনস সমান্তরাল এক্সিকিউশনে পরিণত করতে পারে।

দ্যexchange.Go()ফাংশন অবিলম্বে একটি সমান্তরাল বস্তু ফেরত, এবং আপনি ব্যবহার করতে পারেনwait()একই সাথে অনুরোধের ফলাফল পেতে যে সমান্তরাল বস্তুর পদ্ধতি. বস্তু

exchange.Go পদ্ধতি) বিনিময়.Go ((পদ্ধতি,... args)

দ্যmethodপ্যারামিটারটি সমান্তরাল ফাংশনের নাম নির্দিষ্ট করতে ব্যবহৃত হয়। লক্ষ্য করুন যে প্যারামিটারটি একটি ফাংশন নাম স্ট্রিং, একটি ফাংশন রেফারেন্স নয়। পদ্ধতি সত্য স্ট্রিং প্যারামিটারএকযোগে ফাংশন সম্পাদন, একের বেশি প্যারামিটার থাকতে পারেarg. প্যারামিটারের ধরন এবং সংখ্যাargপ্যারামিটার উপর নির্ভর করেসমান্তরাল সম্পাদন ফাংশন. আরজি মিথ্যা string, number, bool, object, array, function, null, এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য সকল টাইপ

function main(){
    // The following four operations are concurrently executed asynchronously by multiple threads and do not take time and return immediately
    var a = exchange.Go("GetTicker")
    var b = exchange.Go("GetDepth") 
    var c = exchange.Go("Buy", 1000, 0.1)
    var d = exchange.Go("GetRecords", PERIOD_H1)
           
    // Call the wait method to wait for the return of the ticker results asynchronously 
    var ticker = a.wait()            
    // Returns the depth, or null if it fails 
    var depth = b.wait()             
    // return order number, limited to 1 second timeout, if timeout, returns undefined, the object can continue to call wait if the last wait timeout 
    var orderId = c.wait(1000)
    if(typeof(orderId) == "undefined") {
        // Timeout, reacquire
        orderId = c.wait()
    }
    var records = d.wait()
}
def main():
    a = exchange.Go("GetTicker")
    b = exchange.Go("GetDepth")
    c = exchange.Go("Buy", 1000, 0.1)
    d = exchange.Go("GetRecords", PERIOD_H1)            

    ticker, ok = a.wait()
    depth, ok = b.wait()
    orderId, ok = c.wait(1000)
    if ok == False:
        orderId, ok = c.wait()
    records, ok = d.wait()
void main() {
    auto a = exchange.Go("GetTicker");
    auto b = exchange.Go("GetDepth");
    auto c = exchange.Go("Buy", 1000, 0.1);
    auto d = exchange.Go("GetRecords", PERIOD_H1);            

    Ticker ticker;
    Depth depth;
    Records records;
    TId orderId;
    a.wait(ticker);
    b.wait(depth);
    if(!c.wait(orderId, 300)) {
        c.wait(orderId);
    }
    d.wait(records);
}

Exchange.Go()ফাংশন ব্যবহারের উদাহরণ, নির্ধারণ করতেundefinedব্যবহার করাtypeof(xx) === "undefined"কারণnull == undefinedজাভাস্ক্রিপ্টে বৈধ।

function main() {
    var d = exchange.Go("GetRecords", PERIOD_H1)
    // Waiting for K-line results
    var records = d.wait()
    // Here waits an asynchronous operation that has been waited and finished, it will return null, and log the error message
    var ret = d.wait()
}
def main():
    d = exchange.Go("GetRecords", PERIOD_H1)
    records, ok = d.wait()
    ret, ok = d.wait()
void main() {
    auto d = exchange.Go("GetRecords", PERIOD_H1);
    Records records;
    d.wait(records);
    Records ret;
    d.wait(ret);
}

কলিংwait()একটি সমান্তরাল বস্তুর উপর পদ্ধতি যা মুক্তি দেওয়া হয়েছে একটি ত্রুটি রিপোর্ট করবেঃ

function main() {
    while(true) {
        var beginTS = new Date().getTime()
        var arrRoutine = []
        var arrTicker = []
        var arrName = []
        for(var i = 0; i < exchanges.length; i++) {
            arrRoutine.push(exchanges[i].Go("GetTicker"))
            arrName.push(exchanges[i].GetName())
        }            

        for(var i = 0; i < arrRoutine.length; i++) {
            arrTicker.push(arrRoutine[i].wait())
        }
        var endTS = new Date().getTime()            

        var tbl = {
            type: "table", 
            title: "ticker", 
            cols: ["index", "name", "latest-deal-price"], 
            rows: []
        }
        
        for(var i = 0; i < arrTicker.length; i++) {
            tbl.rows.push([i, arrName[i], arrTicker[i].Last])
        }            

        LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", endTS - beginTS, "millisecond", "\n", "`" + JSON.stringify(tbl) + "`")
        Sleep(500)
    }
}
import time 
import json
def main():
    while True:
        beginTS = time.time()
        arrRoutine = []
        arrTicker = []
        arrName = []
        for i in range(len(exchanges)):
            arrRoutine.append(exchanges[i].Go("GetTicker"))
            arrName.append(exchanges[i].GetName())            

        for i in range(len(exchanges)):
            ticker, ok = arrRoutine[i].wait()
            arrTicker.append(ticker)            

        endTS = time.time()
        tbl = {
            "type": "table", 
            "title": "ticker", 
            "cols": ["index", "name", "latest-deal-price"], 
            "rows": [] 
        }            

        for i in range(len(arrTicker)):
            tbl["rows"].append([i, arrName[i], arrTicker[i]["Last"]])            

        LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", endTS - beginTS, "second", "\n", "`" + json.dumps(tbl) + "`")
        Sleep(500)
void main() {
    while(true) {
        int length = exchanges.size();
        auto beginTS = UnixNano() / 1000000;
        Ticker arrTicker[length] = {};
        string arrName[length] = {};
        
        // Note that to add several exchange objects, several exchanges[n].Go functions have to be executed here, this example is to add four exchange objects, the details can be modified
        auto r0 = exchanges[0].Go("GetTicker");
        auto r1 = exchanges[1].Go("GetTicker");
        auto r2 = exchanges[2].Go("GetTicker");
        auto r3 = exchanges[3].Go("GetTicker");
        GoObj *arrRoutine[length] = {&r0, &r1, &r2, &r3};
        
        for(int i = 0; i < length; i++) {
            arrName[i] = exchanges[i].GetName();
        }            

        for(int i = 0; i < length; i++) {
            Ticker ticker;
            arrRoutine[i]->wait(ticker);
            arrTicker[i] = ticker;
        }        
        auto endTS = UnixNano() / 1000000;            

        json tbl = R"({
            "type": "table", 
            "title": "ticker", 
            "cols": ["index", "name", "latest-deal-price"], 
            "rows": [] 
        })"_json;            

        for(int i = 0; i < length; i++) {
            json arr = R"(["", "", ""])"_json;
            arr[0] = format("%d", i);
            arr[1] = arrName[i];
            arr[2] = format("%f", arrTicker[i].Last);
            tbl["rows"].push_back(arr);
        }            

        LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", format("%d", endTS - beginTS), "millisecond", "\n", "`" + tbl.dump() + "`");
        Sleep(500);
    }
}

একাধিক এক্সচেঞ্জ টিকার একযোগে অ্যাক্সেসঃ

function main() {
    /*  
        Testing with OKX futures order interface
        POST /api/v5/trade/order        
    */
    
    var beginTS = new Date().getTime()
    var param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
    var ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
    var ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
    var ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
    
    var id1 = ret1.wait()
    var id2 = ret2.wait()
    var id3 = ret3.wait()
    var endTS = new Date().getTime()                

    Log("id1:", id1)
    Log("id2:", id2)
    Log("id3:", id3)
    Log("Concurrent order placement time consumption:", endTS - beginTS, "millisecond")
}
import time
import json
def main():
    beginTS = time.time()
    param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
    ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
    ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
    ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))            

    id1, ok1 = ret1.wait()
    id2, ok2 = ret2.wait()
    id3, ok3 = ret3.wait()
    endTS = time.time()            

    Log("id1:", id1)
    Log("id2:", id2)
    Log("id3:", id3)
    Log("Concurrent order placement time consumption:", endTS - beginTS, "second")
void main() {
    auto beginTS = UnixNano() / 1000000;
    json param = R"({"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"})"_json;
    auto ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
    auto ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
    auto ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());            

    json id1 = R"({})"_json;
    json id2 = R"({})"_json;
    json id3 = R"({})"_json;            

    ret1.wait(id1);
    ret2.wait(id2);
    ret3.wait(id3);
    auto endTS = UnixNano() / 1000000;            

    Log("id1:", id1);
    Log("id2:", id2);
    Log("id3:", id3);
    Log("Concurrent order placement time consumption:", endTS - beginTS, "millisecond");
}

একযোগে আহ্বানexchange.IO("api", ...)ফাংশনঃ

এই ফাংশনটি কেবলমাত্র বাস্তব ট্রেডিংয়ে চলার সময় মাল্টি-থ্রেডড এক্সিকিউশন টাস্ক তৈরি করে, ব্যাকটেস্টিং মাল্টি-থ্রেডড সমান্তরাল টাস্ক এক্সিকিউশন সমর্থন করে না (ব্যাকটেস্টিং উপলব্ধ, তবে এখনও ক্রমিকভাবে কার্যকর হয়) । এর পরexchange.Go()ফাংশন একটি বস্তু ফেরত, তারwait()ফাংশনটি থ্রেড দ্বারা ফেরত দেওয়া তথ্য পেতে সেই বস্তুর মাধ্যমে কল করা হয়।wait()ফাংশন স্বয়ংক্রিয়ভাবে থ্রেড মুক্তি হবে আগে তথ্য পেতে কল করা আবশ্যক।wait()একটি থ্রেডের ফলাফল স্বয়ংক্রিয়ভাবে মুক্তি পাওয়ার আগে পাওয়া উচিত (একযোগে অ্যাক্সেসের জন্য ইন্টারফেস কলের সাফল্য বা ব্যর্থতার নির্বিশেষে) । সহজ কথায়, অনুরোধ করা থ্রেডটি অবশ্যইwait()ফাংশন নির্বিশেষে নির্বাহ সফল বা ব্যর্থ হয় কিনা, এবং থ্রেড অনুরোধ রিসোর্সexchange.Go()ফাংশন ডকার দ্বারা স্বয়ংক্রিয়ভাবে মুক্তি দেওয়া আবশ্যক। দ্যwait()পদ্ধতিটি একটি টাইমআউট প্যারামিটার সমর্থন করেঃ টাইমআউট প্যারামিটার ছাড়া, অর্থাৎ,wait()অথবা টাইমআউট প্যারামিটার ০, অর্থাৎ,wait(0).wait()ফাংশন ব্লক এবং অপেক্ষা করে যতক্ষণ না সমান্তরাল থ্রেডটি চালানো শেষ হয়, সমান্তরাল থ্রেডের এক্সিকিউশনের ফলাফল ফেরত দেয়। টাইমআউট প্যারামিটার সেট করুন -1, অর্থাৎwait(-1).wait()ফাংশন অবিলম্বে ফেরত দেয়, বিভিন্ন প্রোগ্রামিং ভাষার জন্য বিভিন্ন রিটার্ন মান সহ, একটি উদাহরণ কলের জন্য এই উপবিভাগটি দেখুন। নির্দিষ্ট টাইমআউট প্যারামিটার সেট করুন,wait(300), এবংwait()ফাংশনটি ফিরে আসার আগে সর্বোচ্চ ৩০০ মিলিসেকেন্ড অপেক্ষা করবে।

যদি ফাইনাল ফলাফল ফিরেwait()ফাংশনটি পাওয়া যায়নি, থ্রেড রিসোর্সগুলি স্বয়ংক্রিয়ভাবে মুক্তি পাবে না, যা অনুরোধ করা থ্রেডগুলির জমে উঠতে পারে এবং 2000 এর বেশি ত্রুটি রিপোর্ট করবেঃ"too many routine wait, max is 2000". সমর্থিত ফাংশনঃGetTicker, GetDepth, GetTrades, GetRecords, GetAccount, GetOrders, GetOrder, CancelOrder, Buy, Sell, GetPositions, IO. এই সমস্ত ফাংশন বর্তমান {@var/EXCHANGE exchange} এক্সচেঞ্জ অবজেক্টের উপর ভিত্তি করে একই সাথে কল করা হয়। পাইথন ভাষা এবং জাভাস্ক্রিপ্ট ভাষার মধ্যে পার্থক্য হল যেwait()পাইথন ভাষায় সমান্তরাল বস্তুর ফাংশন দুটি পরামিতি ফেরত দেয়। প্রথম প্যারামিটারটি একটি অ্যাসিনক্রোন এপিআই কল দ্বারা ফেরত দেওয়া ফলাফল, এবং দ্বিতীয় প্যারামিটারটি নির্দেশ করে যে অ্যাসিনক্রোন কলটি সম্পন্ন হয়েছে কিনা।


def main():
    d = exchange.Go("GetRecords", PERIOD_D1)
    # ok will return True definitely, unless the strategy is stopped
    ret, ok = d.wait()          
    # If the wait times out, or if it waits for an instance that has already ended, ok returns False
    ret, ok = d.wait(100)  

{@fun/Global/Mail_Go Mail_Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}, {@fun/Global/EventLoop ইভেন্টলুপ}

বাজার অ্যাকাউন্ট