بینان پائیدار کثیر کرنسی ہیجنگ کی حکمت عملی کا اصل ورژن ((کافی اوور ڈراپ کرو خالی اوور پمپ کرو) اپریل 13 تازہ ترین سٹاپ نقصان ماڈیول)

مصنف:گھاس، تاریخ: 2020-04-04 21:24:43
ٹیگز:بائننس

یہ پالیسی فیس اپ گریڈ کے لئے دستیاب ہے، اور ویکیومنگ wangweibing_ustb مزید معلومات حاصل کریں.

اہم مواد!!

  • اس تحقیق کو دیکھنا ضروری ہے۔https://www.fmz.com/digest-topic/5294♦ حکمت عملی کے اصولوں، خطرات، تجارت کی جانچ پڑتال، پیرامیٹرز کو کیسے ترتیب دیا جائے، کھلی پوزیشنوں اور کل فنڈز کے تناسب وغیرہ کے بارے میں معلومات حاصل کریں۔
  • پچھلی تحقیق کو ڈاؤن لوڈ کرنے اور اپنی تحقیق کے ماحول میں اپ لوڈ کرنے کی ضرورت ہے۔ اصل ترمیم دوبارہ چلتی ہے۔ اگر آپ نے اس رپورٹ کو دیکھا ہے تو ، تازہ ترین ہفتہ کے اعداد و شمار کو تازہ کاری کریں۔
  • اگر روبوٹ طویل عرصے سے بند ہے تو ، اسے دوبارہ شروع کرنا ہوگا ، ڈیٹا کو دوبارہ ترتیب دینا ہوگا ، یا نیا روبوٹ بنانا ہوگا۔
  • حکمت عملیوں کو براہ راست دوبارہ نہیں کیا جا سکتا، انہیں تحقیق کے ماحول میں دوبارہ کیا جانا چاہئے۔
  • حکمت عملی کا کوڈ اور ڈیفالٹ پیرامیٹرز صرف تحقیق کے لئے ہیں ، اور ریئل ڈسک کو چلانے کے لئے محتاط رہنا ضروری ہے ، اپنی تحقیق کے مطابق پیرامیٹرز کا فیصلہ کریں۔اپنے آپ کو خطرے میں ڈالنا
  • حکمت عملی ہر روز منافع بخش نہیں ہوسکتی ہے ، تاریخ کو دیکھ کر ، 1-2 ہفتوں کے لائیوسٹ اور واپسی معمول کی بات ہے ، اور اسے صحیح طریقے سے سنبھالنے کی ضرورت ہے۔
  • کوڈ عوامی ہے ، آپ خود ہی ترمیم کرسکتے ہیں ، اگر کوئی مسئلہ ہے تو ، تبصرے اور رائے کا خیرمقدم کرتے ہیں ، بہتر ہے کہ موجدین کے بائنن گروپ میں شامل ہوں (تجزیاتی رپورٹوں میں شامل ہونے کا طریقہ موجود ہے) اور اپ ڈیٹ کے بارے میں مطلع کیا جائے۔
  • حکمت عملی صرف کرنسی کے مستقبل کی حمایت کرتی ہے ، اسے پورے اسٹاک موڈ میں چلانے کی ضرورت ہے ، دو طرفہ ہولڈنگ کی ترتیب نہ کریں!! ، روبوٹ کو تخلیق کرتے وقت ڈیفالٹ ٹریڈنگ جوڑے اور K لائن سائیکل کا استعمال کیا جاسکتا ہے ، حکمت عملی K لائن تک استعمال نہیں ہوتی ہے۔
  • اسٹریٹجی اور دیگر حکمت عملیوں کے ساتھ ساتھ دستی آپریشن کے درمیان تنازعہ ہے اور اس پر توجہ دینے کی ضرورت ہے۔
  • اس کے علاوہ ، یہ بھی ممکن ہے کہ آپ کو کسی دوسرے ملک سے کسی دوسرے ملک میں کام کرنے کی ضرورت ہو ، لیکن آپ کو اس کی ضرورت نہیں ہوگی۔https://www.fmz.com/bbs-topic/2848)
  • بئنآن کے فیوچر اور نوٹ کو الگ الگ شامل کرنے کی ضرورت ہے، بئنآن فیوچر کے لئےFutures_Binance
  • اس حکمت عملی کو دوبارہ شروع کرنے سے کوئی اثر نہیں پڑتا ہے ، لیکن نئی روبوٹ تاریخ کو دوبارہ ریکارڈ کرتی ہے۔
  • یہ پالیسی صارف کی رائے کے مطابق اپ ڈیٹ کی جاسکتی ہے ، براہ راست Ctrl + A کاپی کوڈ کا احاطہ محفوظ کریں (عام طور پر پیرامیٹرز کو اپ ڈیٹ نہیں کیا جاتا ہے) ، روبوٹ کو دوبارہ شروع کرنے کے بعد تازہ ترین کوڈ استعمال کیا جاسکتا ہے۔
  • حکمت عملی شروع میں تجارت نہیں کرتی ہے، پہلی بار شروع کرنے کے لئے اعداد و شمار کو ریکارڈ کرنے کی ضرورت ہوتی ہے، اور مارکیٹ میں تبدیلی کا انتظار کرنے کے لئے تجارت کی ضرورت ہوتی ہے.

4.16 تازہ کاری

خرابی کو روکنے کے لئے تبدیلی

ڈیفالٹ پیرامیٹرز تبدیل کر دیا گیا:

var Alpha = 0.001 //指数移动平均的Alpha参数,设置的越大,基准价格跟踪越敏感,最终持仓也会越低,降低了杠杆,但会降低收益,具体需要根据回测结果自己权衡
var Update_base_price_time_interval = 60 //多久更新一次基准价格, 单位秒,和Alpha参数相关,Alpha 设置的越小,这个间隔也可以设置的更小

4.13 تازہ ترین مواد

اسٹاپ_لوس سیٹ 0.8 کا مطلب ہے کہ جب فنڈز ابتدائی فنڈز کے 80 فیصد سے کم ہوجائیں تو ، اسٹاپ نقصان ، تمام پوزیشنوں کو خالی کرنا ، اسٹاپ کی حکمت عملی۔ جب حکمت عملی چلتی ہے تو ، اسٹاپ_لوس 1 سے زیادہ مقرر کیا جاسکتا ہے (دوبارہ شروع کرنے کے لئے) ، مثال کے طور پر 1000 ٹن سے 1500 تک ، اسٹاپ_لوس سیٹ 1.3 پر ، پھر 1300 یوآن تک اسٹاپ نقصان واپس لے لیا جاسکتا ہے۔ اگر آپ نہیں چاہتے ہیں کہ اسٹاپ نقصان اس پیرامیٹر کو ترتیب دیں تو یہ بہت چھوٹا ہے۔ خطرہ یہ ہے کہ ہر کوئی اس اسٹاپ نقصان کو استعمال کرے گا ، نقصان کو بڑھا دے گا۔ ابتدائی فنڈز کی حالت میں موجود init_balance فیلڈ ، اس طرح کے آپریشن کو متاثر کرے گا ، اس طرح کے آپریشن کو روکنے کے لئے محتاط نہ ہوں۔ اگر آپ کو بلیک ویٹ کے واقعے کا خوف ہے ، جیسے کہ کسی کرنسی کی واپسی 0 ، تو آپ اس پر توجہ دے سکتے ہیں۔

Max_diff اور Min_diff اس حد تک انحراف کو محدود کرتے ہیں جو آپ کو اپنے تجارتی قدر ، کل فنڈز اور خطرہ برداشت کرنے کی صلاحیت کے مطابق خود طے کرنے کی ضرورت ہے۔

ایک سادہ مثال کے طور پر، اگر 20 سکے کی تجارت کی جاتی ہے، تو ان میں سے ایک کی قیمت 0.4 کی طرف بڑھتی ہے، اور تجارت ختم ہوجاتی ہے، جبکہ دوسرے کی قیمتوں میں کوئی تبدیلی نہیں ہوتی ہے، trade_value کے 7 گنا کا نقصان ہوتا ہے. 0.3 کی طرف گرنے کے بعد trade_value کے 6 گنا کا نقصان ہوتا ہے.

var Stop_loss = 0.8 
var Max_diff = 0.4 //当偏差diff大于0.4时,不继续加空仓, 自行设置
var Min_diff = -0.3 //当diff小于-0.3时,不继续加多仓, 自行设置

4.10 تازہ ترین مواد

پالیسی کوڈ کو مقامی پالیسی میں کاپی کریں ، براہ راست محفوظ کرنے پر ڈھانپیں ، مشین کو دوبارہ شروع کریں اور اصل پوزیشن کو برقرار رکھیں

بئنآن فیوچرز کو خالی کرنے کے لئے اوورلوڈ کرنے کے لئے اوورلوڈ کرنے کے لئے اوورلوڈ کرنے کی حکمت عملی اہم ہےhttps://www.fmz.com/bbs-topic/5364

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

تازہ ترین کوٹیکن انڈیکس = mean ((sum (((کوٹیکن قیمت / بٹ کوائن قیمت) / ای ایم اے ((کوٹیکن قیمت / بٹ کوائن قیمت)))) ، یعنی قیمتوں کے مقابلے میں ، تازہ ترین قیمتوں میں ہونے والی تبدیلیوں کو ٹریک کرنے کے قابل ، زیادہ لچکدار ، اور دوبارہ جانچ پڑتال کرنے کے قابل ہے۔ یہ پتہ چلتا ہے کہ حکمت عملی کو برقرار رکھنے میں کمی واقع ہوئی ہے ، اور اس کے علاوہ واپسی بھی کم ہے۔ زیادہ مستحکم ہے۔ سب سے اہم بات یہ ہے کہ اصل حکمت عملی میں بہت زیادہ خطرہ ہے ، جوڑے کو شامل کرنے کے بعد بہت زیادہ خطرہ ہے ، ممکنہ طور پر دھماکہ خیز ہے ، لیکن اب اس سے زیادہ متاثر نہیں ہوتا ہے۔

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

الفا = 0.04 اشاریہ متحرک توازن کا الفا پیرامیٹر ، جو زیادہ سیٹ ہوتا ہے ، بیعانہ کی قیمتوں کا سراغ لگانا زیادہ حساس ہوتا ہے ، تجارت کی تعداد کم ہوتی ہے ، اور آخر میں ہولڈنگ بھی کم ہوجاتی ہے ، جس سے فائدہ کم ہوتا ہے ، لیکن منافع کم ہوجاتا ہے ، زیادہ سے زیادہ واپسی کو کم کرتا ہے ، اور تجارت میں اضافہ ہوسکتا ہے ، خاص طور پر ریٹیسٹ کے نتائج کے مطابق اپنے آپ کو وزن کرنا پڑتا ہے۔ Update_base_price_time_interval = 30*60 ایک بار بیسنس قیمت کو اپ ڈیٹ کرنے کا طویل عرصہ ، یونٹ سیکنڈ ، اور الفا پیرامیٹرز سے متعلق ہے ، الفا کی ترتیب جتنی چھوٹی ہوگی ، اتنا ہی چھوٹا وقفہ بھی ترتیب دیا جاسکتا ہے۔

اگر آپ اس مضمون کو پڑھ رہے ہیں اور تمام کرنسیوں میں تجارت کرنا چاہتے ہیں تو ، یہاں ایک فہرست ہے۔ETH,BCH,XRP,EOS,LTC,TRX,ETC,LINK,XLM,ADA,XMR,DASH,ZEC,XTZ,BNB,ATOM,ONT,IOTA,BAT,VET,NEO,QTUM,IOST

ویکیومنٹ گروپ میں شامل ہوں اور اپ ڈیٹس حاصل کریں

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

https://www.fmz.comimg

حکمت عملی کے اصول

اس حکمت عملی میں غیر متوازن پوزیشنوں کو بی ٹی سی کے ساتھ ہیجنگ نہیں کیا گیا ہے ، لیکن بی ٹی سی کو بھی تجارت میں شامل کیا جاسکتا ہے۔ حالیہ دو ماہ کی کارکردگی (تقریبا 3 گنا تک لیورج ، اعداد و شمار کو 4.8 پر اپ ڈیٹ کیا گیا ہے):img

اسٹریٹجک منطق

1۔ مارکیٹ اور اکاؤنٹ کو اپ ڈیٹ کریں ، پہلی بار چلنے پر ابتدائی قیمت ریکارڈ کی جائے گی ((نئی شامل کردہ کرنسیوں کا حساب شامل ہونے کے وقت کے مطابق کیا جاتا ہے) 2. انڈیکس کو اپ ڈیٹ کریں ، انڈیکس کا مطلب ہے سکے - بٹ کوائن قیمت کا اشاریہ = mean ((sum)) ((بٹ کوائن کی قیمت / بٹ کوائن کی قیمت) / ((بٹ کوائن کی ابتدائی قیمت / بٹ کوائن کی ابتدائی قیمت)) 3. انحراف انڈیکس کے مطابق زیادہ کام کرنے کا فیصلہ ، انحراف کے سائز کے مطابق پوزیشنوں کا فیصلہ 4۔ آرڈر کرنا اور مقدار کا فیصلہ آئس ماؤنٹین کی طرف سے کیا جاتا ہے اور قیمت کے مطابق کیا جاتا ہے۔مندرجہ ذیل حکم کے بعد فوری طور پر منسوخ (تو آپ کو بہت سے منسوخ کرنے میں ناکام سیل 400: {code:-2011,msg:Unknown order sent.}، معمول کا رجحان دیکھیں گے) 5.再次循环

ریاست کی ٹوکری میں لیوریج کا مطلب ہے کہ پیکیج کا تناسب ختم ہوچکا ہے اور اسے نئی پوزیشنوں کو پورا کرنے کے لئے کم رکھنے کی ضرورت ہے۔

حکمت عملی کے پیرامیٹرز

img

  • Trade_symbols: تجارت کی جانے والی کرنسی ، جس کی ضرورت ہے کہ وہ اپنے آپ کو تحقیق کے پلیٹ فارم کے مطابق فلٹر کرے ، یا BTC میں شامل ہو
  • Trade_value: ٹوکن کی قیمت (BTC کی قیمت) فی deviation 1٪ کی قدر رکھتا ہے ، جس کا فیصلہ آپ کی کل سرمایہ کاری اور خطرے کی ترجیحات کے مطابق کیا جانا چاہئے ، تجویز کردہ کل سرمایہ کاری کا 3-10٪ مقرر کرنا ہے۔ لیورج کی مقدار کو تحقیق کے ماحول میں جانچنے کے بعد دیکھا جاسکتا ہے ، Trade_value ایڈجسٹ_ویلیو سے کم ہوسکتا ہے ، مثال کے طور پر ایڈجسٹ_ویلیو کا آدھا حصہ ، جو 2٪ کی deviation کے برابر ہے۔
  • ایڈجسٹ_ویلیو: معاہدے کی قیمت (USDT قیمت) کو ایڈجسٹ کریں۔ جب اشاریہ * ٹریڈ_ویلیو - موجودہ ہولڈنگ > ایڈجسٹ_ویلیو ، یعنی ہدف ہولڈنگ اور موجودہ ہولڈنگ کے درمیان فرق اس قدر سے زیادہ ہے تو تجارت شروع ہوجائے گی۔ بہت زیادہ ایڈجسٹ سست ہے ، بہت چھوٹی تجارتیں کثرت سے ہوتی ہیں ، 10 سے کم نہیں ہوسکتی ہیں ، ورنہ کم سے کم ٹرانزیکشن تک نہیں پہنچ پائیں گے ، تجویز کردہ ٹریڈ_ویلیو کے 40٪ سے زیادہ پر سیٹ کریں۔
  • آئس_ویلیو: آئس مونڈ کی تفویض کی قیمت بھی 10 سے کم نہیں ہوسکتی ہے ، اصل میں صرف ایک ہی انتخاب کریں ایڈجسٹ_ویلیو اور آئس_ویلیو میں سے چھوٹا ، اگر زیادہ فنڈز مقرر کیے جاسکتے ہیں تو اس طرح کی ایڈجسٹمنٹ نسبتا large زیادہ تیز ہے ، اس کی سفارش کی جاتی ہے کہ ایڈجسٹ_ویلیو کے 20٪ سے کم نہ ہو ، تاکہ 5 بار آئس مونڈ ٹرانزیکشن مکمل کرسکے ، یقینا ، جب ٹریڈ_ویلیو بہت بڑا نہیں ہے تو ، آئس_ویلیو کی ترتیب نسبتا large بڑی ہوسکتی ہے ، ایک یا دو بار ایڈجسٹ ہوسکتی ہے۔
  • وقفہ: سائیکل سوتے وقت، جو 1s کے طور پر چھوٹے مقرر کیا جا سکتا ہے، لیکن بائنن فریکوئنسی کی حد سے زیادہ نہیں ہوسکتا ہے۔
  • ری سیٹ: تاریخی اعداد و شمار کو دوبارہ ترتیب دیں ، جو حکمت عملی کے حوالہ کے لئے ابتدائی قیمت کو موجودہ قیمت پر دوبارہ ترتیب دیں گے ، عام طور پر اس کی ضرورت نہیں ہے۔

اسٹریٹجک خطرات

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




var Alpha = 0.001 //指数移动平均的Alpha参数,设置的越大,基准价格跟踪越敏感,最终持仓也会越低,降低了杠杆,但会降低收益,具体需要根据回测结果自己权衡
var Update_base_price_time_interval = 60 //多久更新一次基准价格, 单位秒,和Alpha参数相关,Alpha 设置的越小,这个间隔也可以设置的更小

//Stop_loss设置为0.8表示当资金达到低于初始资金的80%时,止损,清空所有仓位,停止策略。
//随着策略运行,Stop_loss可以设置大于1(重启生效),比如从1000赚到1500,Stop_loss设置为1.3,则回撤到1300元止损。不想止损可以把这个参数设置的很小。
//风险是大家都用这种止损会形成踩踏,加大亏损。
//初始资金在状态栏的init_balance字段,注意提现等操作会影响,别不小心止损了。
//如果还是怕黑天鹅事件,比如某个币归0等,可以手动提现出来。

var Stop_loss = 0.8 
var Max_diff = 0.4 //当偏差diff大于0.4时,不继续加空仓, 自行设置
var Min_diff = -0.3 //当diff小于-0.3时,不继续加多仓, 自行设置

if(IsVirtual()){
    throw '不能回测,回测参考 https://www.fmz.com/digest-topic/5294 '
}
if(exchange.GetName() != 'Futures_Binance'){
    throw '只支持币安期货交易所,和现货交易所不同,需要单独添加,名称为Futures_Binance'
}
var trade_symbols = Trade_symbols.split(',')
var symbols = trade_symbols
var index = 1 //指数
if(trade_symbols.indexOf('BTC')<0){
    symbols = trade_symbols.concat(['BTC'])
}
var update_profit_time = 0
var update_base_price_time= Date.now()
var assets = {}
var init_prices = {}


var trade_info = {}
var exchange_info = HttpQuery('https://fapi.binance.com/fapi/v1/exchangeInfo')
if(!exchange_info){
    throw '无法连接币安网络,需要海外托管者'
}
exchange_info = JSON.parse(exchange_info)
for (var i=0; i<exchange_info.symbols.length; i++){
    if(symbols.indexOf(exchange_info.symbols[i].baseAsset) > -1){
       assets[exchange_info.symbols[i].baseAsset] = {amount:0, hold_price:0, value:0, bid_price:0, ask_price:0, 
                                                     btc_price:0, btc_change:1,btc_diff:0,
                                                     realised_profit:0, margin:0, unrealised_profit:0}
       trade_info[exchange_info.symbols[i].baseAsset] = {minQty:parseFloat(exchange_info.symbols[i].filters[1].minQty),
                                                         priceSize:parseInt((Math.log10(1.1/parseFloat(exchange_info.symbols[i].filters[0].tickSize)))),
                                                         amountSize:parseInt((Math.log10(1.1/parseFloat(exchange_info.symbols[i].filters[1].stepSize))))
                                                        }
    }
}
assets.USDT = {unrealised_profit:0, margin:0, margin_balance:0, total_balance:0, leverage:0, update_time:0, init_balance:0, stop_balance:0, short_value:0, long_value:0, profit:0}

function updateAccount(){ //更新账户和持仓
    exchange.SetContractType('swap')
    var account = exchange.GetAccount()
    var pos = exchange.GetPosition()
    if (!account || !pos){
        Log('update account time out')
        return
    }
    assets.USDT.update_time = Date.now()
    for(var i=0; i<trade_symbols.length; i++){
        assets[trade_symbols[i]].margin = 0
        assets[trade_symbols[i]].unrealised_profit = 0
        assets[trade_symbols[i]].hold_price = 0
        assets[trade_symbols[i]].amount = 0
    } 
    for(var j=0; j<account.Info.positions.length; j++){
        if(account.Info.positions[j].positionSide == 'BOTH'){
            var pair = account.Info.positions[j].symbol 
            var coin = pair.slice(0,pair.length-4)
            if(trade_symbols.indexOf(coin) < 0){continue}
            assets[coin].margin = parseFloat(account.Info.positions[j].initialMargin) + parseFloat(account.Info.positions[j].maintMargin)
            assets[coin].unrealised_profit = parseFloat(account.Info.positions[j].unrealizedProfit)
        }
    }
    assets.USDT.margin = _N(parseFloat(account.Info.totalInitialMargin) + parseFloat(account.Info.totalMaintMargin),2)
    assets.USDT.margin_balance = _N(parseFloat(account.Info.totalMarginBalance),2)
    assets.USDT.total_balance = _N(parseFloat(account.Info.totalWalletBalance),2)
    if(assets.USDT.init_balance == 0){
        if(_G('init_balance')){
            assets.USDT.init_balance = _N(_G('init_balance'),2)
        }else{
            assets.USDT.init_balance = assets.USDT.total_balance 
            _G('init_balance',assets.USDT.init_balance)
        }
    }
    assets.USDT.profit = _N(assets.USDT.margin_balance - assets.USDT.init_balance, 2)
    assets.USDT.stop_balance = _N(Stop_loss*assets.USDT.init_balance, 2)
    assets.USDT.total_balance = _N(parseFloat(account.Info.totalWalletBalance),2)
    assets.USDT.unrealised_profit = _N(parseFloat(account.Info.totalUnrealizedProfit),2)
    assets.USDT.leverage = _N(assets.USDT.margin/assets.USDT.total_balance,2)
    pos = JSON.parse(exchange.GetRawJSON())
    if(pos.length > 0){
        for(var k=0; k<pos.length; k++){
            var pair = pos[k].symbol
            var coin = pair.slice(0,pair.length-4)
            if(trade_symbols.indexOf(coin) < 0){continue}
            if(pos[k].positionSide != 'BOTH'){continue}
            assets[coin].hold_price = parseFloat(pos[k].entryPrice)
            assets[coin].amount = parseFloat(pos[k].positionAmt)
            assets[coin].unrealised_profit = parseFloat(pos[k].unRealizedProfit)
        }
    }
}

function updateIndex(){ //更新指数
    
    if(!_G('init_prices') || Reset){
        Reset = false
        for(var i=0; i<trade_symbols.length; i++){
            init_prices[trade_symbols[i]] = (assets[trade_symbols[i]].ask_price+assets[trade_symbols[i]].bid_price)/(assets.BTC.ask_price+assets.BTC.bid_price)
        }
        Log('保存启动时的价格')
        _G('init_prices',init_prices)
    }else{
        init_prices = _G('init_prices')
        if(Date.now() - update_base_price_time > Update_base_price_time_interval*1000){
            update_base_price_time = Date.now()
            for(var i=0; i<trade_symbols.length; i++){ //更新初始价格
                init_prices[trade_symbols[i]] = init_prices[trade_symbols[i]]*(1-Alpha)+Alpha*(assets[trade_symbols[i]].ask_price+assets[trade_symbols[i]].bid_price)/(assets.BTC.ask_price+assets.BTC.bid_price)
            }
            _G('init_prices',init_prices)
        }
        var temp = 0
        for(var i=0; i<trade_symbols.length; i++){
            assets[trade_symbols[i]].btc_price =  (assets[trade_symbols[i]].ask_price+assets[trade_symbols[i]].bid_price)/(assets.BTC.ask_price+assets.BTC.bid_price)
            if(!(trade_symbols[i] in init_prices)){
                Log('添加新的币种',trade_symbols[i])
                init_prices[trade_symbols[i]] = assets[trade_symbols[i]].btc_price / index
                _G('init_prices',init_prices)
            }
            assets[trade_symbols[i]].btc_change = _N(assets[trade_symbols[i]].btc_price/init_prices[trade_symbols[i]],4)
            temp += assets[trade_symbols[i]].btc_change
        }
        index = _N(temp/trade_symbols.length, 4)
    }
    
}

function updateTick(){ //更新行情
    var ticker = HttpQuery('https://fapi.binance.com/fapi/v1/ticker/bookTicker')
    try {
        ticker = JSON.parse(ticker)
    }catch(e){
        Log('get ticker time out')
        return
    }
    assets.USDT.short_value = 0
    assets.USDT.long_value = 0
    for(var i=0; i<ticker.length; i++){
        var pair = ticker[i].symbol 
        var coin = pair.slice(0,pair.length-4)
        if(symbols.indexOf(coin) < 0){continue}
        assets[coin].ask_price = parseFloat(ticker[i].askPrice)
        assets[coin].bid_price = parseFloat(ticker[i].bidPrice)
        assets[coin].ask_value = _N(assets[coin].amount*assets[coin].ask_price, 2)
        assets[coin].bid_value = _N(assets[coin].amount*assets[coin].bid_price, 2)
        if(trade_symbols.indexOf(coin) < 0){continue}
        if(assets[coin].amount<0){
            assets.USDT.short_value += Math.abs((assets[coin].ask_value+assets[coin].bid_value)/2)
        }else{
            assets.USDT.long_value += Math.abs((assets[coin].ask_value+assets[coin].bid_value)/2)
        }
        assets.USDT.short_value = _N(assets.USDT.short_value,0)
        assets.USDT.long_value = _N(assets.USDT.long_value,0)
    }
    updateIndex()
    for(var i=0; i<trade_symbols.length; i++){
        assets[trade_symbols[i]].btc_diff = _N(assets[trade_symbols[i]].btc_change - index, 4)
    }
}

function trade(symbol, dirction, value){ //交易
    if(Date.now()-assets.USDT.update_time > 10*1000){
        Log('更新账户延时,不交易')
        return
    }
    var price = dirction == 'sell' ? assets[symbol].bid_price : assets[symbol].ask_price
    var amount = _N(Math.min(value,Ice_value)/price, trade_info[symbol].amountSize)
    if(amount < trade_info[symbol].minQty){
        Log(symbol, '合约价值偏离或冰山委托订单的大小设置过小,达不到最小成交, 至少需要: ', _N(trade_info[symbol].minQty*price,0)+1)
        return
    }
    exchange.IO("currency", symbol+'_'+'USDT')
    exchange.SetContractType('swap')
    exchange.SetDirection(dirction)
    var f = dirction == 'buy' ? 'Buy' : 'Sell'
    var id = exchange[f](price, amount, symbol)
    if(id){
        exchange.CancelOrder(id) //订单会立即撤销
    }
    return id
}



function updateStatus(){ //状态栏信息
        var table = {type: 'table', title: '交易对信息', 
             cols: ['币种', '数量', '持仓价格',  '当前价格', '偏离平均', '持仓价值', '保证金', '未实现盈亏'],
             rows: []}
    for (var i=0; i<symbols.length; i++){
        var price = _N((assets[symbols[i]].ask_price + assets[symbols[i]].bid_price)/2, trade_info[symbols[i]].priceSize)
        var value = _N((assets[symbols[i]].ask_value + assets[symbols[i]].bid_value)/2, 2)
        var infoList = [symbols[i], assets[symbols[i]].amount, assets[symbols[i]].hold_price, price, assets[symbols[i]].btc_diff, value, _N(assets[symbols[i]].margin,3), _N(assets[symbols[i]].unrealised_profit,3)]
        table.rows.push(infoList)
    }
    var logString = _D() + '   ' + JSON.stringify(assets.USDT) + ' Index:' + index + '\n'
    LogStatus(logString + '`' + JSON.stringify(table) + '`')
    
    if(Date.now()-update_profit_time > Log_profit_interval*1000){
        LogProfit(_N(assets.USDT.margin_balance,3))
        update_profit_time = Date.now()
    }
    
}

function stopLoss(){ //止损函数
    while(true){
        if(assets.USDT.margin_balance < Stop_loss*assets.USDT.init_balance && assets.USDT.init_balance > 0){
            Log('触发止损,当前资金:', assets.USDT.margin_balance, '初始资金:', assets.USDT.init_balance)
            Ice_value = 200 //止损的快一些,可修改
            updateAccount()
            updateTick()
            var trading = false //是否正在交易
            for(var i=0; i<trade_symbols.length; i++){
                var symbol = trade_symbols[i]
                if(assets[symbol].ask_price == 0){ continue }
                if(assets[symbol].bid_value >= trade_info[symbol].minQty*assets[symbol].bid_price){
                    trade(symbol, 'sell', assets[symbol].bid_value)
                    trading = true
                }
                if(assets[symbol].ask_value <= -trade_info[symbol].minQty*assets[symbol].ask_price){
                    trade(symbol, 'buy', -assets[symbol].ask_value)
                    trading = true
                }
            }
            Sleep(1000)
            if(!trading){
                throw '止损结束,如果需要重新运行策略,需要调低止损'
            }
        }else{ //不用止损
            return
        }
    }    
}

function onTick(){ //策略逻辑部分
    for(var i=0; i<trade_symbols.length; i++){
        var symbol = trade_symbols[i]
        if(assets[symbol].ask_price == 0){ continue }
        var aim_value = -Trade_value * _N(assets[symbol].btc_diff/0.01,3)
        if(aim_value - assets[symbol].ask_value >= Adjust_value && assets[symbol].btc_diff > Min_diff && assets.USDT.long_value-assets.USDT.short_value <= 1.1*Trade_value){
            trade(symbol,'buy', aim_value - assets[symbol].ask_value)
        }
        if(aim_value - assets[symbol].bid_value <= -Adjust_value && assets[symbol].btc_diff < Max_diff && assets.USDT.short_value-assets.USDT.long_value <= 1.1*Trade_value){
            trade(symbol,'sell', -(aim_value - assets[symbol].bid_value))
        }
    }
}

function main() {
    while(true){
        updateAccount()
        updateTick()
        stopLoss() //止损
        onTick()
        updateStatus()
        Sleep(Interval*1000)
    }
}

متعلقہ

مزید

ٹائیگومبالسا@tmbs95 مجھے ٹیلیگرام پر شامل کریں، دلچسپی

شادی شدہ خواتین بھیبراہ کرم مجھے بتائیں کہ فنکشن onTick میں ایک لائن ہے، assets.USDT.long_value-assets.USDT.short_value <= 1.1*Trade_value، میں سمجھتا ہوں کہ یہ بہت زیادہ خلائی عدم توازن کو روکنے کے لئے مقرر کیا گیا ہے؛ لیکن، یہ حد، امید ہے کہ، کھولنے کی رفتار پر سنگین اثر پڑے گا.

مائیکلزکیا آپ نے ویکی میسج نہیں ڈھونڈا؟

سرمایہ کاری کا سلسلہMax_diff اور Min_diff 0.04 اور -0.03 نہیں ہونا چاہئے؟

فضائیہ کبھی غلام نہیں ہوگیاس بند دائرے کو دھوپ میں ڈالیں

گھاس/اپ لوڈ/اثاثہ/1b39347a88aa4cff916.jpg

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

شادی شدہ خواتین بھییہ دو چیزیں ہیں۔

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

گھاسیہ غلط ہے، wangweibing_ustb

اِزنگساناصل میں ، کوڈ کو دیکھ کر ، تمام کرنسیوں کے ٹیسٹ کے نتائج معلوم ہوجاتے ہیں ، آپ کو فکر کرنے کی ضرورت نہیں ہے۔ شامل ہونے پر ، الفا = 0.05 ، لنک ، ای ٹی سی ، بی این بی کو شامل کریں ، تاریخ کی ابتدائی واپسی 3٪ ہے ، انتہائی مارکیٹ میں زیادہ سے زیادہ واپسی 25٪ سے کم ہے ، ٹریڈ ویلیو 3٪ کے ساتھ محفوظ حد سے زیادہ کرنسی ہے۔