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

FMZ ابتدائی سبق

مصنف:گھاس, تخلیق: 2019-04-09 11:29:07, تازہ کاری: 2024-02-06 17:35:38

[TOC]

img

1.ایف ایم زیڈ پلیٹ فارم سے شروع کریں

ہمارے پلیٹ فارم کا استعمال کرنے کے لئے شکریہ. یہ beginners کے لئے ایک بنیادی ہدایات ہے, ہمارے API دستاویزات کا ایک مکمل ورژن کے لئے, پر چیک کریںایف ایم زیڈ اے پی آئی. بہت سے واضح وضاحتیں ہیں جو اس سبق میں احاطہ نہیں کیا گیا ہے آپ کو دریافت کرنے کے لئے چھوڑ دیا.

مکمل سبق سیکھنے کے بعد، آپ کو FMZ کام کرتا ہے اور کچھ بنیادی حکمت عملی لکھنے کے قابل ہو جائے گا کہ کس طرح پتہ چل جائے گا.

1.1 FMZ پلیٹ فارم کے بارے میں

ایف ایم زیڈ پلیٹ فارم کیا ہے؟

ایف ایم زیڈ کریپٹوکرنسی تاجروں کے لئے ایک خودکار تجارتی پلیٹ فارم ہے جس میں بہت سے بٹ کوائن / ایتھ / الٹکوئن ایکسچینج مارکیٹوں کی حمایت ہے۔

FMZ آپ کے لئے کیا کر سکتے ہیں؟

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

ایف ایم زیڈ کون سے کریپٹوکرنسی تبادلے کی حمایت کرتا ہے؟

FMZ تقریبا تمام تبادلے کی حمایت کرتا ہے جو مقبول ہیں، جیسےBinance, Bitfinex, Bitstamp, OKEX, Huobi, Poloniex، وغیرہ آپ بھی فیوچر پر تجارت کر سکتے ہیںOKEXاورBitMEXمکمل سپورٹ کی فہرست چیک کریںAPIآپ کو صرف ایک حکمت عملی لکھنے کی ضرورت ہے اور اسے بغیر کسی تبدیلی کے تمام تبادلے پر چلائیں.

ایف ایم زیڈ کون سی پروگرامنگ زبانوں کی حمایت کرتا ہے؟

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

کیا آپ کی API KEY محفوظ ہے؟

جی ہاں، آپ کے API-KEYs خفیہ کاری کے بعد محفوظ کر رہے ہیں. یہ کیسے کام کرتا ہے.

  • آپ کو FMZ پاس ورڈ درج کرنے کی ضرورت ہے جب کلید شامل کریں. ویب براؤزر آپ API کلید کو خفیہ کرے گا اور FMZ سرور کو خفیہ کردہ کلید کو منتقل کریں گےhttps.
  • آپ کو FMZ پاس ورڈ داخل کرنے کی ضرورت ہے جب آپ اپنے سرور یا کمپیوٹر پر ڈوکر چلائیں.
  • ایف ایم زیڈ آپ کے ڈوکر کو https کا استعمال کرتے ہوئے خفیہ کردہ کلید بھیجے گا جب آپ بوٹ شروع کرتے ہیں۔ ڈوکر کلید حاصل کرنے کے لئے خفیہ کاری کرے گا۔
  • FMZ آپ کا پاس ورڈ محفوظ نہیں کرتا ((صرف پاس ورڈ ہیش) ۔ لہذا ہم بھی آپ API کلید نہیں جانتے.
  • آپ کو اپنے پاس ورڈ اور ڈوکر سرور کی حفاظت کرنے کی ضرورت ہے۔ دوسرا توثیقی لاگ ان FMZ استعمال کرنا بہتر ہے۔

موجودہ خصوصیت کی فہرست:

  • کراس پلیٹ فارم، تمام اہم کریپٹوکرنسی تبادلے کے لئے معاونت جلد ہی مزید
  • 2.مثال کے تبادلے کے لئے معاونت۔ https://wex.app/
  • 3.ایک مؤثر مشابہت بیک ٹسٹنگ سسٹم ہے۔
  • ای میلز بھیجنے، اپنے ٹیلیگرام اکاؤنٹ میں پیغامات بھیجنے کی حمایت کرتا ہے۔
  • 5.ویب پر مبنی کنٹرول جس تک آپ کے فون کے ذریعے رسائی حاصل کی جاسکتی ہے۔
  • 6.پایتھون\C++\جاوا اسکرپٹ پروگرامنگ کی حمایت کرتا ہے۔
  • 7. لاگت انتہائی کم ہے۔ 0.125 RMB فی گھنٹہ، تقریبا 0.018 ڈالر۔
  • 8.Noاے پی آئی-کی یا پاس ورڈ ہمارے سرور پر محفوظ ہیں۔ ایف ایم زیڈ چار سال سے زیادہ عرصے سے بغیر کسی حفاظتی مسائل کے چل رہا ہے۔

1.2 ایف ایم زیڈ پلیٹ فارم کا استعمال کرنے کے لئے ایک فوری آغاز

ایک بوٹ چلانے کے لئے، آپ کو ایک حکمت عملی کی ضرورت ہے، ایک تبادلہ شامل کریں، پہلے ایک ڈوکر تعینات کریں. ڈوکر آپ کی حکمت عملی کا عملدرآمد ہے جو آپ کے اپنے کمپیوٹر یا سرور پر چل رہا ہے.

مرکزی صفحہ کا ایک مختصر نظارہ

img

  • 1.آپ کا مرکزی کنٹرول پیج
  • اپنے تمام بوٹس کا انتظام کریں (شروع کریں، روکیں، حذف کریں، کھولیں، وغیرہ)
  • اپنی تمام حکمت عملیوں کا انتظام کریں کوڈ
  • اپنے ڈوکر کو تعینات اور منظم کریں
  • 5.نئے تبادلے شامل کریں
  • 6.آپ نے جوڑنے والے تبادلے پر دستی تجارت
  • 7.اپنا بل ادا کریں
  • 8.یہاں کوئی بھی سوال پوچھیں
  • 9۔ ایف ایم زیڈ کا نمونہ تبادلہ
  • 10.ڈیبگ ٹول جہاں آپ بوٹ شروع کیے بغیر کوڈ کا ایک بلاک چلا سکتے ہیں۔
  • 11.ہر قسم کے پیغام
  • 12.اسٹریٹیجی مربع جہاں اوپن سورس اور چارجنگ کی حکمت عملیوں کی فہرست ہے
  • 13.لائیو روبوٹ جہاں تمام رواں روبوٹ درج ہیں۔
  • فورم جہاں آپ کسی بھی متعلقہ سوال پر تبادلہ خیال کرنے کے لئے ایک پوسٹ پوسٹ کرسکتے ہیں۔
  • 15.کسی سے آپ کے لئے کوڈ لکھنے یا دوسروں کے لئے یہ سروس فراہم کرنے کے لئے کہیں۔
  • 16.ایکسچینج اور ایجنسیوں کے لئے مصنوعات.
  • 17.API دستاویزات.
  • 18.کچھ مفید اوزار، خود چیک کریں۔
  • 19.آپ کے اکاؤنٹ کی معلومات۔

تبادلہ شامل کریں

میں شامل کریںhttps://www.fmz.com/m/add-platform، یا کلک کریںPlatformلیبل. آپ کی رسائی کی کلید اور خفیہ کلید کو کریپٹوکرنسی ایکسچینج میں لاگو کیا جاسکتا ہے۔ API-KEY کا استعمال تجارت کرنے اور ایکسچینج سے نجی معلومات حاصل کرنے کے لئے کیا جاتا ہے۔ ہم اپنے سرور پر کوئی API-KEY یا پاس ورڈ محفوظ نہیں کرتے ہیں۔ آپ ایف ایم زیڈ پر رجسٹر کر سکتے ہیںنقلی تبادلہاور اسے ٹیسٹنگ کے لیے شامل کریں۔

img

ایک ڈوکر تعینات کریں

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

ونڈوز کے لئے، یہ بہت آسان ہے، صرف ہدایات پر عمل کریںhttps://www.fmz.com/m/add-node

img

لینکس کے ل you ، آپ ہماری ویب سائٹ پر وی پی ایس کرایہ پر لے سکتے ہیں ، جو ڈوکر کو خود بخود تعینات کرے گا۔ اپنے لینکس سرور پر تعینات کرنے کے اقدامات یہ ہیں (تجویز کردہ):

  • ایمیزون یا گوگل سے کلاؤڈ سرور (وی پی ایس) خریدیں ، سب سے کم اور سستا کنفیگریشن کافی ہے۔ آپ کو اکثر طویل عرصے تک مفت آزمائش ہوسکتی ہے۔
  • اپنے سرور میں لاگ ان کریں، اپنے سرور فراہم کنندہ کی ہدایات پر عمل کریں یا اسے گوگل کریں۔
  • آپ کے سسٹم کے ورژن کے مطابق ڈوکر کا انتخاب کریں، زیادہ تر وقت، یہ 64 بٹ ہے.
  • 4۔ سینٹو کے لیے، بھاگیںwget www.fmz.com/dist/robot_linux_amd64.tar.gz، کمانڈ نہیں ملا؟ پہلے انسٹال کریںyum install wget -y.
  • 5.Run tar -xzvf robot_linux_amd64.tar.gzکھولنے کے لئے.
  • 6.Run ./robot -s node.fmz.com/xxxxx -p -p yourFMZpassword، آپ کو کچھ اس طرح دیکھنا چاہئے2018/07/05 05:04:10 Login OK, SID: 62086, PID: 7226, Name: host.localdomain، جس کا مطلب ہے کہ سب کچھ کام کر رہا ہے.node.fmz.com/xxxxxہر صارف کے لئے منفرد ہے، پر آپ کی اپنی تلاشhttps://www.fmz.com/m/add-node.
  • 7.اب ڈوکر پس منظر میں نہیں چل رہا ہے، اگر آپ SHH کلائنٹ کو بند کرتے ہیں، تو ڈوکر رک جائے گا. پریسctrl + Cڈاکر کو روکنے کے لئے.
  • 8.Run nohup ./robot -s node.fmz.com/xxxxx -p yourFMZpassword &پس منظر میں چلانے کے لئے. یہ قدم بھی کیا جا سکتا ہے کی طرف سےScreen command.
  • 9۔ چیک کریںhttps://www.fmz.com/m/nodes، سب کچھ ٹھیک ہے تو، آپ وہاں تعینات ڈوکر تلاش کر سکتے ہیں.

ایک حکمت عملی لکھیں

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

img

  • اپنے کوڈ میں ترمیم کریں
  • 2.Backtesting، ہم ایک انٹرمیڈیٹ ٹیوٹوریل پر اس حصے کا احاطہ کریں گے
  • 3.آپ کے کوڈ کے پروگرامر زبان، جاوا اسکرپٹ اس ڈیمو میں استعمال کیا گیا تھا
  • 4.عنوان، چینی اور انگریزی عنوان کو تقسیم کرتا ہے جس میں سے ایک کو ظاہر کیا جائے گا FMZ ویب سائٹ کی زبان کی طرف سے فیصلہ کیا جاتا ہے
  • آپ کی حکمت عملی کی قسم، ڈیفالٹ عام ہے
  • 6.آپ کی حکمت عملی کا زمرہ۔ اگر آپ کے پاس بہت زیادہ ہیں تو آپ اپنی حکمت عملیوں کو مختلف زمروں میں تقسیم کرسکتے ہیں
  • ہماری ویب سائٹ کے بجائے اپنے آئی ڈی ای سے اپنے کوڈ میں دور دراز ترمیم کریں
  • 8.اے پی آئی دستاویز کا لنک
  • 9.اسٹریٹیجی کے نوٹ (صرف آپ کے ذریعہ دیکھے جائیں) ۔ آپ یہاں خیالات کو ریکارڈ کرسکتے ہیں۔
  • 10.اسٹریٹیجی کی تفصیلات۔ اگر آپ اپنی حکمت عملی کو اسکوائر پر شیئر یا فروخت کرتے ہیں تو دوسرے لوگ اس کی تفصیلات دیکھیں گے۔
  • 11.اسٹریٹیجی کا دستی، صرف اس وقت دیکھا جاسکتا ہے جب کسی نے آپ کی حکمت عملی خریدی ہو۔
  • 12.اپنا کوڈ محفوظ کریں، یاCtrl+Sترمیم موڈ پر.
  • 13.کوڈ پر بیک ٹیسٹنگ کی تشکیل محفوظ کریں.
  • 14.Downloadحکمت عملی فائل
  • 15.تمام پیرامیٹرز کو برقرار رکھتے ہوئے حکمت عملی کو برآمد اور درآمد کریں
  • فونٹ کا سائز تبدیل کریں اور تھیم میں ترمیم کریں
  • 17.کوڈ کو خود بخود فارمیٹ کریں
  • 18.ترمیم کرنے کے لئے VIM موڈ استعمال کریں۔

ذیل میں حکمت عملی کی مکمل وضاحت ہے۔ اپنے فون پر پیغام بھیجنے کے لئے ، آپ کو ٹیلیگرام کو اپنے اکاؤنٹ سے منسلک کرنے کی ضرورت ہےhttps://www.fmz.com/m/account

/*
This strategy will send a message to your telegram when the price is higher or lower than
the set price.
All strategies must have a main function as the entrance.
*/
function main() {
     //change symbol,will cover the default symbol which was set when start a bot.Currency is a strategy arguments
    exchange.IO("currency", Currency)   
    var lastPushTime = 0    //the variable of last push timestamp.
    while(true){    //run a infinite loop, which is the basic structure
        //_C() function can retry the request automatically after failure. not necessary. var ticker = exchange.GetTicker() is ok.
        var ticker = _C(exchange.GetTicker) // for information about GetTicker, check on https://fmz-docs.readthedocs.io/en/latest/code_Instruction/Market%20API.html#getticker
        if(ticker.Last > UpPrice || ticker.Last < LowPrice){    //ticker.Last represents the last deal price
            if(Date.now() - lastPushTime > 300*1000){    //only push once in 5 mins, Date.now() return ms.
                lastPushTime = Date.now()    //update lastPushTime
                Log(Currency, 'Price is: ', ticker.Last, '@')    //Log the price on the bot's page and sent the message. '@' in the end means push message
            }
        }
        Log(Currency, 'Price is: ', ticker.Last) //just log the price
        Sleep(Interval*1000)    //check the last price again after Interval seconds
    }
}

روبوٹ چلائیں

آخر میں، یہ ایک روبوٹ چلانے کا وقت ہے. پرRobotصفحہ، کلک کریںAdd robot، یا دورہhttps://www.fmz.com/m/add-robotبراہ راست ایک بوٹ شامل کرنے کے لئے.img

  • 1.بوٹ کا نام
  • 2.اس بوٹ کو چلانے کے لئے ڈوکر
  • 3.چلانے کی حکمت عملی
  • 4۔ پیرامیٹرز، ڈیفالٹ ویلیو کو تبدیل کیا جا سکتا ہے۔
  • 5، ڈیفالٹ کلین مدت جب استعمال تبادلہ.GetRecords(
  • 6.Exchange
  • 7.Tradingعلامت یا جوڑے
  • 8.اگر آپ کی ضرورت کا تجارتی علامت فہرست میں نہیں ہے، تو آپ اسے خود ہی ٹائپ کر سکتے ہیں۔
  • 9.Clickتبادلہ شامل کرنے کے لئے
  • 10۔اسٹورج کو پہلے ہی شامل کیا گیا ہے۔ ایک بوٹ پر متعدد اسٹورز شامل کیے جاسکتے ہیں ،exchanges[0], exchanges[1]
  • 11.Clickروبوٹ چلانے کے لئے!

بوٹ کا انتظام کریں

پرRobotصفحہ، آپ دیکھ سکتے ہیں کہ روبوٹ چل رہا ہے.img

  • 1.بوٹ کا نام، بوٹ پیج پر جانے کے لیے یہاں کلک کریں۔
  • 2.اسٹریٹیجی جو بوٹ کے ذریعے چلائی جاتی ہے،اسٹریٹیجی پیج پر یہاں کلک کریں۔
  • 3.بوٹ کی حالت. چلانے، روکنے، غلطی ہو سکتی ہے.
  • 4.بوٹ کی آمدنی، گزری ہوئیLogProfit()، آپ چاہتے ہیں کسی بھی نمبر ہو سکتا ہے.
  • 5.تاریخ تخلیق، آخری مواصلات کے وقت میں تبدیل کیا جا سکتا ہے۔
  • 6.بوٹ کی نگرانی کریں۔ ایف ایم زیڈ آپ کو ایک پیغام بھیجے گا جب بوٹ کو غلطی سے روکا گیا ہو
  • 7. روبوٹ کو روکیں.

مزید معلومات کے لیے بوٹ کے نام پر کلک کریں:img

2.سب سے زیادہ استعمال شدہ API تعارف

اس حصے میں کچھ سب سے زیادہ عام طور پر استعمال API متعارف کرایا جائے گا، ہمارے API دستاویزات کا ایک مکمل ورژن کے لئے، چیک کریںایف ایم زیڈ اے پی آئی. یہ انتہائی beginners کے لئے ڈیمو کوڈ پر چلانے کے لئے سفارش کی جاتی ہےڈیبگ صفحہ.

2.1 لاگ

استعمال کریں: Log(msg) پیرامیٹرز:تاریں یا اعدادتفصیل:روبوٹ لاگ صفحہ پر ایک پیغام لاگ.واپسی:کوئی نہیںڈیمو:

function main() {
    var msg = 'msg string'
    Log(msg)
    Log('hello', 'world', 123)
    Log("red color message", "#FF0000")
    Log("push this message to telegram!@") // won't push on debug page
}

2.2 گیٹ ٹکر

استعمال کریں: exchange.GetTicker() پیرامیٹرز:کوئی نہیںتفصیل:موجودہ مارکیٹ ٹکر حاصل کریں.واپسی:

{"Info:{}, "High":5226.69, "Low":5086.37,"Sell":5210.63, "Buy":5208.5, "Last":5208.51, "Volume":1703.1245, "OpenInterest":0, "Time":1554884195976}

ڈیمو:

function main() {
    var ticker = exchange.GetTicker()
    Log(ticker)
    Log('Last Price: ',ticker.Last, 'Bid Price: ', ticker.Buy)
}

2.3 گہرائی حاصل کریں

استعمال کریں: exchange.GetDepth() پیرامیٹرز:کوئی نہیںتفصیل:موجودہ مارکیٹ کے آرڈر بک حاصل کریں.واپسی:

{
    "Info":null,
    "Asks":[
        {"Price":5866.38,"Amount":0.068644},
        {"Price":5866.39,"Amount":0.263985},
        {"Price":5866.73,"Amount":0.05},
        {"Price":5866.77,"Amount":0.05},
        {"Price":5867.01,"Amount":0.15},
        {"Price":5875.89,"Amount":0.05},
        ......
        ]
    "Bids":[
        {"Price":5865.13,"Amount":0.001898},
        {"Price":5865,"Amount":0.085575},
        {"Price":5864.15,"Amount":0.013053},
        {"Price":5863.65,"Amount":0.016727},
        {"Price":5863.51,"Amount":0.128906},
        {"Price":5863.15,"Amount":0.2}
        ......
        ],
    "Time":1530241857399
}

ڈیمو:

function main() {
    var depth = exchange.GetDepth()
    Log(depth)
    Log('Bid one: ', depth.Bids[0].Price, 'Ask one: ', depth.Asks[0].Price)
}

2.4 GetRecords

استعمال کریں: exchange.GetRecords(), exchange.GetRecords(Period) پیرامیٹرز:

نام قسم لازمی تفصیل
مدت گلوبل واربل نہیں Klines سائیکل، اختیاری پیرامیٹرز، روبوٹ شروع کرتے وقت ڈیفالٹ K لائن سائیکل مقرر کیا جاتا ہے.

تمام ممکنہ پیرامیٹرز:PERIOD_M11 منٹ،PERIOD_M5پانچ منٹ،PERIOD_M1515:15 منٹ،PERIOD_M30:30 منٹ،PERIOD_H11h،PERIOD_D11d.تفصیل:موجودہ مارکیٹ کے لئے کلین / موم بتیوں کی سلاخیں حاصل کریں.واپسی:

[
    {"Time":1526616000000,"Open":7995,"High":8067.65,"Low":7986.6,"Close":8027.22,"Volume":9444676.27669432},
    {"Time":1526619600000,"Open":8019.03,"High":8049.99,"Low":7982.78,"Close":8027,"Volume":5354251.80804935},
    {"Time":1526623200000,"Open":8027.01,"High":8036.41,"Low":7955.24,"Close":7955.39,"Volume":6659842.42025361},
    ......
]

ڈیمو:

//A useful JavaScript example using Records to get a close array:
function main(){
    var close = []
    var records = exchange.GetRecords(PERIOD_H1)
    Log('total bars: ', records.length)
    for(var i=0;i<records.length;i++){
        close.push(records[i].Close)
    }
    return close
}

2.5 اکاؤنٹ حاصل کریں

استعمال کریں: exchange.GetAccount() پیرامیٹرز:کوئی نہیںتفصیل:اکاؤنٹ کی معلومات حاصل کریںواپسی:

{
    "Stocks":0.38594816,// free base asset
    "FrozenStocks":0,    //locked base asset
    "Balance":542.858308,//free quote asset
    "FrozenBalance":0     //locked quote asset
    "Info":{} //the raw data
}

ڈیمو:

//A useful JavaScript example of Log your account value for a certain trading pair:
function main(){
    while(true){
        var ticker = exchange.GetTicker()
        var account = exchange.GetAccount()
        var price = ticker.Buy
        var stocks = account.Stocks + account.FrozenStocks
        var balance = account.Balance + account.FrozenBalance
        var value = stocks*price + balance
        Log('Account value is: ', value)
        LogProfit(value)
        Sleep(3000)//sleep 3000ms(3s), A loop must has a sleep, or the rate-limit of the exchange will be exceed
        //when run in debug tool, add a break here
    }
}

2.6 خریدیں

استعمال کریں: exchange.Buy(Price, Amount), exchange.Buy(Price, Amount, Msg) پیرامیٹرز:

نام قسم لازمی تفصیل
قیمت نمبر ہاں حد آرڈر کی خرید قیمت
رقم نمبر ہاں حد آرڈر کی مقدار خریدیں
پی ایس جی تار نہیں لاگ صفحہ پر ایک اضافی پیغام شامل کریں

تفصیل:بوٹس کے صفحے پر خرید آرڈر اور خرید لاگ بھیجیںواپسی:اگر کامیابی ہو تو آرڈر آئی ڈی واپس کریں،nullاگر نہیں.ڈیمو:

//A useful JavaScript example of Buy for buy certain amount of bitcoin at a certain price:
function main(){
    while(true){
        var ticker = exchange.GetTicker()
        var price = ticker.Sell
        if(price >= 7000){
            exchange.Buy(price+5, 1, 'BTC-USDT')
        }
        Sleep(3000)//Sleep 3000ms
    }
}

2.7 فروخت کریں

استعمال کریں: exchange.Sell(Price, Amount), exchange.Sell(Price, Amount, Msg) پیرامیٹرز:

نام قسم لازمی تفصیل
قیمت نمبر ہاں حد آرڈر کی فروخت کی قیمت
رقم نمبر ہاں حد آرڈر کی رقم فروخت کریں
پی ایس جی تار نہیں لاگ صفحہ پر ایک اضافی پیغام شامل کریں

تفصیل:بوٹس کے صفحے پر فروخت آرڈر اور فروخت لاگ بھیجیںواپسی:اگر کامیابی ہو تو آرڈر آئی ڈی واپس کریں،nullاگر نہیں.ڈیمو:

//A useful JavaScript example of Buy for buy certain amount of bitcoin at a certain price:
function main(){
    while(true){
        var ticker = exchange.GetTicker()
        var price = ticker.Buy
        if(price >= 7000){
            var id = exchange.Sell(price-5, 1, 'BTC-USDT')
            Log('OrderId: ', id)
        }
        Sleep(3000)
    }
}

2.8 GetOrder

استعمال کریں: exchange.GetOrder(OrderId) پیرامیٹرز:

نام قسم لازمی تفصیل
حکم نمبر ہاں آرڈر ID

تفصیل:آرڈر کی تفصیلات آرڈر آئی ڈی کے ذریعے حاصل کریں.واپسی:

{
    "Id":125723661,
    "Amount":0.01,
    "Price":7000,
    "DealAmount":0,
    "AvgPrice":0,
    "Status":0, // 0:Not filled, 1:Filled, 2:Canceled
    "Type":1,// 0:Buy, 1:Sell
    "ContractType":"",//just for futures contract orders
    "Info":{} //raw info from exchange
    }
}

ڈیمو:

//A JavaScript example of using this API, which will buy until your account has 5 coins:
function main(){
    while(true){
        var amount = exchange.GetAccount().Stocks
        var ticker = exchange.GetTicker()
        var id = null
        if(5-amount>0.01){
            id = exchange.Buy(ticker.Sell, Math.min(10-amount,0.2))
        }else{
            Log('Job completed')
            return //return the main function, bot will stop
        }
        Sleep(3000) //Sleep 3000ms
        if(id){
            var status = exchange.GetOrder(id).Status
            if(Status == 0){
                exchange.CancelOrder(id)
            }
        }
    }
}

2.9 GetOrders

استعمال کریں: exchange.GetOrders() پیرامیٹرز:کوئی نہیںتفصیل:آپ کے ٹریڈنگ علامتوں کے لئے تمام کھلی احکامات حاصل کریں.واپسی:کھلے احکامات کی ایک فہرست، نتیجہ کے طور پر ایک ہی معنی ہےGetOrder()

[
    {
        "Info":{},
        "Id":16387538,
        "Amount":1123,
        "Price":0.00012826,
        "DealAmount":0,
        "AvgPrice":0,
        "Status":0,
        "Type":1,
        "ContractType":""
    }
]

ڈیمو:

//A JavaScript example of using this API, which will cancel all open orders for trading symbol:
fuction CancelAll(){
    var orders = exchange.GetOrders()
    for(var i=0;i<orders.length,i++){
        exchange.CancelOrder(orders[[i].Id) // cancel order by orderID
    }
}
function main(){
    CancelAll()
    while(true){
        //do something
        Sleep(10000)
    }
}

2.10 آرڈر منسوخ کریں

استعمال کریں: exchange.CancelOrder(OrderId) پیرامیٹرز:

نام قسم لازمی تفصیل
حکم نمبر ہاں آرڈر ID

تفصیل:آرڈر ID کے ذریعے آرڈر منسوخ کریں.واپسی:بول ٹائپtrueاس کا مطلب یہ ہے کہ آرڈر کی درخواست کی منسوخی کامیاب ہوگئی ہے۔falseاس کا مطلب ہے کہ آرڈر کی درخواست کی منسوخی ناکام ہوگئی ہے۔

2.11 سیٹ کنٹریکٹ ٹائپ

استعمال کریں: exchange.SetContractType(ContractType) پیرامیٹرز:

نام قسم لازمی تفصیل
معاہدہ کی قسم تار ہاں معاہدہ کی قسم

تفصیل:مستقبل کی تجارت کے لئے معاہدے کی قسم مقرر کریں. دوسرے نجی API کا استعمال کرنے سے پہلے پہلے مقرر کیا جانا چاہئے.واپسی:کوئی نہیںڈیمو:

exchange.SetContractType("this_week") //OKEX future has “this_week”, “next_week”, “quarter” , "swap"
exchange.SetContractType("XBTUSD") //BitMEX future has "XBTUSD","XBTM19",etc

2.12 گیٹ پوزیشن

استعمال کریں: exchange.GetPosition() پیرامیٹرز:کوئی نہیںتفصیل:موجودہ پوزیشن کی معلومات حاصل کریں، صرف فیوچر ٹریڈنگ کے لیے۔واپسی:پوزیشنوں کی فہرست، خالی فہرست واپس کرے گا اگر اکاؤنٹ میں کوئی پوزیشن نہیں ہے.ڈیمو:

// Note: GetPosition function obtains all positions.
function main(){
    exchange.SetContractType("this_week") //for OKEX future
    var position = exchange.GetPosition()
    if(position.length>0){
        Log("Amount:", position[0].Amount, "FrozenAmount:", position[0].FrozenAmount, "Price:",
            position[0].Price, "Profit:", position[0].Profit, "Type:", position[0].Type, "ContractType:",                     position[0].ContractType)
    }
}

2.13 سیٹ ڈائریکشن

استعمال کریں: exchange.SetDirection(Direction) پیرامیٹرز:

نام قسم لازمی تفصیل
سمت تار ہاں ہو سکتا ہےbuy, closebuy, sell, closesell.

تفصیل:صرف فیوچر ٹریڈنگ کے لیے خرید یا فروخت کے آرڈر کی اقسام مقرر کریں۔واپسی:کوئی نہیںڈیمو:

function main(){
    exchange.SetContractType("this_week");
    exchange.SetMarginLevel(5) // Set the leverage to 5 times
    exchange.SetDirection("buy") // Set the order type to buy long
    exchange.Buy(5000, 2) //buy long at the price 1000, quantity of 2
    exchange.SetDirection("closebuy")
    exchange.Sell(4999, 2) //close long position
}

2.14 دیگر عام طور پر استعمال شدہ فنکشن:

FMZ پر ان افعال کے بارے میں مزید تفصیلات چیک کریںAPI دستاویزات

نام تفصیل مثال
LogStatus بوٹس کی حالت بار پر ایک پیغام یا میزیں لاگ، ہر بار تازہ کاری کریں گے LogStatus('msg')
_C دوبارہ کوشش کریں فنکشن _C(exchange.GetRecords,PERIOD_H1),_C(exchange.GetTicker)
_N پوزیشن فنکشن _N(4001.512,2),_N(num,0)
_G عالمی لغت جو روبوٹ کو دوبارہ شروع کرنے کے بعد محفوظ کی جا سکتی ہے۔ _G('initValue', 1000);_G('initValue')
_D ٹائم اسٹیمپ لوٹاتا ہے _D(), _D(1478570053241)
TA TA-Lib اشارے لائبریری. سپورٹMACD, EMA, KDJوغیرہ... TA.MACD(records)
Math سپروٹ ریاضی کی تقریب، چیک پرhttps://mathjs.org/ Math.min(1,2), Math.sqrt(2)

3.دو مکمل حقیقی حکمت عملی

میں بہت سی تدریسی حکمت عملی موجود ہیںhttps://www.fmz.com/square/s:tag:Study/1، جو کہ ابتدائیوں کے لیے آسان اور آسان ہے۔

3.1 ہائی فریکوئینسی مارکیٹر اسپاٹ حکمت عملی

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

var floatAmountBuy = 20
var floatAmountSell = 20
var diffPrice = 3
var Interval = 3000

function CancelPendingOrders() {
    var orders = _C(exchange.GetOrders);
    for (var j = 0; j < orders.length; j++) {
        exchange.CancelOrder(orders[j].Id, orders[j])
    }
}

function GetPrice(depth) {
    var price = {buy:0, sell:0}
    var askAmount = 0
    var bidAmount = 0
    for(var i=0; i<depth.Bids.length; i++){
        askAmount += depth.Asks[i].Amount
        bidAmount += depth.Bids[i].Amount
        if(askAmount >= floatAmountBuy && !price.buy){
            price.buy = depth.Asks[i].Price
        }
        if(bidAmount >= floatAmountSell && !price.sell){
            price.sell = depth.Bids[i].Price
        }
    }
    if(!price.buy || !price.sell){
        price = {buy:depth.Asks[depth.Asks.length-1].Price, sell:depth.Bids[depth.Bids.length-1].Price}
    }
    return price
}

function onTick() {
    var price = GetPrice(_C(exchange.GetDepth))
    var buyPrice = price.buy + 0.01
    var sellPrice = price.sell - 0.01
    if ((sellPrice - buyPrice) <= diffPrice){
        buyPrice -= 10
        sellPrice += 10
    }
    CancelPendingOrders()
    var account = _C(exchange.GetAccount)
    var amountBuy = _N((account.Balance / buyPrice-0.01), 2)
    var amountSell = _N((account.Stocks), 2)
    if (amountSell > 0.02) {
        exchange.Sell(sellPrice, amountSell)
    }
    if (amountBuy > 0.02) {
        exchange.Buy(buyPrice, amountBuy)
    }
}

function main() {
    while (true) {
        onTick()
        Sleep(Interval)
    }
}

3.2 ڈبل تھرو OKEX خصوصیت

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

var ChartCfg = {
    __isStock: true,
    title: {
        text: 'Dual Thrust Up-Down Track'
    },
    yAxis: {
        plotLines: [{value: 0,
            color: 'red',
            width: 2,
            label: {
                text: 'Up Track',
                align: 'center'}
                },
            {value: 0,
            color: 'green',
            width: 2,
            label: {
                text: 'Down Track',
                align: 'center'},
            }
        ]
    },
    series: [{type: 'candlestick',
        name: 'current cycle',
        id: 'primary',
        data: []
        },
        {type: 'flags',
        onSeries: 'primary',
        data: [],
        }
    ]
};

var STATE_IDLE = 0;
var STATE_LONG = 1;
var STATE_SHORT = 2;
var State = STATE_IDLE;

var LastBarTime = 0;
var UpTrack = 0;
var BottomTrack = 0;
var chart = null;
var InitAccount = null;
var LastAccount = null;
var Counter = {
    w: 0,
    l: 0
};

function GetPosition(posType) {
    var positions = exchange.GetPosition();
    for (var i = 0; i < positions.length; i++) {
        if (positions[i].Type === posType) {
            return [positions[i].Price, positions[i].Amount];
        }
    }
    return [0, 0];
}

function CancelPendingOrders() {
    while (true) {
        var orders = exchange.GetOrders();
        for (var i = 0; i < orders.length; i++) {
            exchange.CancelOrder(orders[i].Id);
            Sleep(Interval);
        }
        if (orders.length === 0) {
            break;
        }
    }
}

function Trade(currentState, nextState) {
    var pfn = nextState === STATE_LONG ? exchange.Buy : exchange.Sell;
    if (currentState !== STATE_IDLE) {
        exchange.SetDirection(currentState === STATE_LONG ? "closebuy" : "closesell");
        while (true) {
            var amount = GetPosition(currentState === STATE_LONG ? PD_LONG : PD_SHORT)[1];
            if (amount === 0) {
                break;
            }
            // pfn(amount);
            pfn(nextState === STATE_LONG ? _C(exchange.GetTicker).Sell * 1.001 : _C(exchange.GetTicker).Buy * 0.999, amount);
            Sleep(Interval);
            CancelPendingOrders();
        }
        var account = exchange.GetAccount();

        if (account.Stocks > LastAccount.Stocks) {
            Counter.w++;
        } else {
            Counter.l++;
        }

        LogProfit(_N(account.Stocks - InitAccount.Stocks), "Profit rate:", _N((account.Stocks - InitAccount.Stocks) * 100 / InitAccount.Stocks) + '%');
        LastAccount = account;
    }
    exchange.SetDirection(nextState === STATE_LONG ? "buy" : "sell");
    while (true) {
        var pos = GetPosition(nextState === STATE_LONG ? PD_LONG : PD_SHORT);
        if (pos[1] >= AmountOP) {
            Log("Average Price", pos[0], "amount:", pos[1]);
            break;
        }
        // pfn(AmountOP-pos[1]);
        pfn(nextState === STATE_LONG ? _C(exchange.GetTicker).Sell * 1.001 : _C(exchange.GetTicker).Buy * 0.999, AmountOP-pos[1]);
        Sleep(Interval);
        CancelPendingOrders();
    }
}

function onTick(exchange) {
    var records = exchange.GetRecords();
    if (!records || records.length <= NPeriod) {
        return;
    }
    var Bar = records[records.length - 1];
    if (LastBarTime !== Bar.Time) {
        var HH = TA.Highest(records, NPeriod, 'High');
        var HC = TA.Highest(records, NPeriod, 'Close');
        var LL = TA.Lowest(records, NPeriod, 'Low');
        var LC = TA.Lowest(records, NPeriod, 'Close');

        var Range = Math.max(HH - LC, HC - LL);

        UpTrack = _N(Bar.Open + (Ks * Range));
        DownTrack = _N(Bar.Open - (Kx * Range));
        if (LastBarTime > 0) {
            var PreBar = records[records.length - 2];
            chart.add(0, [PreBar.Time, PreBar.Open, PreBar.High, PreBar.Low, PreBar.Close], -1);
        } else {
            for (var i = Math.min(records.length, NPeriod * 3); i > 1; i--) {
                var b = records[records.length - i];
                chart.add(0, [b.Time, b.Open, b.High, b.Low, b.Close]);
            }
        }
        chart.add(0, [Bar.Time, Bar.Open, Bar.High, Bar.Low, Bar.Close]);
        ChartCfg.yAxis.plotLines[0].value = UpTrack;
        ChartCfg.yAxis.plotLines[1].value = DownTrack;
        ChartCfg.subtitle = {
            text: 'Up Track: ' + UpTrack + '  Down Track: ' + DownTrack
        };
        chart.update(ChartCfg);
        chart.reset(PeriodShow);

        LastBarTime = Bar.Time;
    } else {
        chart.add(0, [Bar.Time, Bar.Open, Bar.High, Bar.Low, Bar.Close], -1);
    }

    LogStatus("Price:", Bar.Close, "Up:", UpTrack, "Down:", DownTrack, "Wins: ", Counter.w, "Losses:", Counter.l, "Date:", new Date());
    var msg;
    if (State === STATE_IDLE || State === STATE_SHORT) {
        if (Bar.Close >= UpTrack) {
            msg  = 'Long Price: ' + Bar.Close + ' Up Track:' + UpTrack;
            Log(msg);
            Trade(State, STATE_LONG);
            State = STATE_LONG;
            chart.add(1, {x:Bar.Time, color: 'red', shape: 'flag', title: 'Long', text: msg});
        }
    }

    if (State === STATE_IDLE || State === STATE_LONG) {
        if (Bar.Close <= DownTrack) {
            msg = 'Short Price: ' + Bar.Close + ' Down Track:' + DownTrack;
            Log(msg);
            Trade(State, STATE_SHORT);
            chart.add(1, {x:Bar.Time, color: 'green', shape: 'circlepin', title: 'Short', text: msg});
            State = STATE_SHORT;
        }
    }
}

function onexit() {
    var pos = exchange.GetPosition();
    if (pos.length > 0) {
        Log("Warning, has positions when exiting", pos);
    }
}

function main() {
    if (exchange.GetName() !== 'Futures_OKCoin') {
        throw "Only support OKEX features";
    }
    exchange.SetRate(1);
    exchange.SetContractType(["this_week", "next_week", "quarter"][ContractTypeIdx]);
    exchange.SetMarginLevel([10, 20][MarginLevelIdx]);

    if (exchange.GetPosition().length > 0) {
        throw "Can't have Positions when start.";}

    CancelPendingOrders();

    InitAccount = LastAccount = exchange.GetAccount();
    LoopInterval = Math.min(1, LoopInterval);
    Log('Exchange Name:', exchange.GetName(), InitAccount);
    LogStatus("Ready...");

    LogProfitReset();
    chart = Chart(ChartCfg);
    chart.reset();

    LoopInterval = Math.max(LoopInterval, 1);
    while (true) {
        onTick(exchange);
        Sleep(LoopInterval * 1000);
    }
}


مزید

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