দ্বি-মুখী চুক্তি গ্রিড লেনদেন v1.0.2

লেখক:বাতাস, তারিখ: ২০২১-০৬-২৪ ১৫ঃ৩৭ঃ১৭
ট্যাগঃগ্রিড

দ্বি-মুখী চুক্তি গ্রিড লেনদেন v1.0.2

বৈশিষ্ট্য

চুক্তি গ্রিড লেনদেন একই সময়ে, অতিরিক্ত কাজ করে পার্থক্যের মুনাফা অর্জন করুন। এই দুই-মুখী কৌশলগুলি হুমকির সম্ভাবনা কম।

  • বিলম্বিত ক্রয়
  • দ্বিগুণ
  • স্বয়ংক্রিয় অ্যাকাউন্ট
  • প্রবণতা উন্মুক্ত (উন্নয়ন, ফি সংস্করণ)
  • হ্রাস গতি গতিশীল পরিবর্তন আনলক সংখ্যা ((উন্নয়ন, চার্জ সংস্করণ)
  • সোনার ফর্ক মরা ফর্কের প্রবণতা যোগদান (উন্নয়ন, ফি সংস্করণ)

তথ্য পুনরুদ্ধার

img

img

২০০০-এর প্রথমার্ধে দ্বিগুণ তবে, এর সুবিধাগুলো স্পষ্ট, বড় বা ছোট যে কোনো অবস্থাতেই তা আটকাতে পারে।

সংরক্ষণ

ক্রমাগত উন্নতি



/*backtest
start: 2021-01-01 00:00:00
end: 2021-06-21 23:59:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":2000}]
*/

// 首次买入
let FIRST_BUY = true;
// 已存在买涨订单
let MANY_BUYING = false;
// 已存在做空订单
let SHORT_BUYING = false;
// 买涨订单创建时间
let MANY_BUY_TIME = null;
// 做空订单创建时间
let SHORT_BUY_TIME = null;
// 买涨空仓时间
let MANY_EMPTY_STEP_TIME = null;
// 做空空仓时间
let SHORT_EMPTY_STEP_TIME = null;
// 校验空仓时间
let CHECK_TIME = null;

let QUANTITY = [0.001, 0.002, 0.004, 0.008, 0.016, 0.032, 0.064];
// 下次购买价格(多仓)
let MANY_NEXT_BUY_PRICE = 0;
// 下次购买价格(空仓)
let SHORT_NEXT_BUY_PRICE = 0;
// 当前仓位(多仓)
let MANY_STEP = 0;
// 当前仓位(空仓)
let SHORT_STEP = 0;
// 止盈比率
let PROFIT_RATIO = 1;
// 补仓比率
let DOUBLE_THROW_RATIO = 1.5;
// 卖出后下次购买金额下浮比率
let BUY_PRICE_RATIO = 1;
// 交易订单列表(多仓)
let MANY_ORDER_LIST = [];
// 交易订单列表(空仓)
let SHORT_ORDER_LIST = [];

function getManyQuantity() {
    if (MANY_STEP < QUANTITY.length) {
        return QUANTITY[MANY_STEP]
    }
    return QUANTITY[0]
}

function getShortQuantity() {
    if (SHORT_STEP < QUANTITY.length) {
        return QUANTITY[SHORT_STEP]
    }
    return QUANTITY[0]
}

function firstManyBuy(ticker) {
    if (MANY_BUYING) {
        return
    }
    exchange.SetDirection("buy")
    let orderId = exchange.Buy(ticker.Last, getManyQuantity())
    if (!orderId) {
        return
    }
    MANY_BUYING = true
    while (true) {
        exchange.SetDirection("buy") 
        let order = exchange.GetOrder(orderId)
        if (null === order) {
            continue
        }
        if (1 === order.Status || 2 === order.Status) {
            MANY_NEXT_BUY_PRICE = order.Price * ((100 - DOUBLE_THROW_RATIO) / 100)
            MANY_STEP = MANY_STEP + 1
            MANY_BUYING = false
            MANY_EMPTY_STEP_TIME = null
            let sellPrice = order.Price * ((100 + PROFIT_RATIO) / 100)
            MANY_ORDER_LIST.push({
                buyPrice: order.Price,
                sellPrice: sellPrice,
                quantity: order.Amount,
                isSell: false,
            })
            break
        }
    }
}

function firstShortBuy(ticker) {
    if (SHORT_BUYING) {
        return
    }
    exchange.SetDirection("sell")
    let orderId = exchange.Sell(ticker.Last, getShortQuantity())
    if (!orderId) {
        return
    }
    SHORT_BUYING = true
    while (true) {
        let order = exchange.GetOrder(orderId)
        if (null === order) {
            continue
        }
        if (1 === order.Status || 2 === order.Status) {
            SHORT_NEXT_BUY_PRICE = order.Price * ((100 + DOUBLE_THROW_RATIO) / 100)
            SHORT_STEP = SHORT_STEP + 1
            SHORT_BUYING = false
            SHORT_EMPTY_STEP_TIME = null
            let sellPrice = order.Price * ((100 - PROFIT_RATIO) / 100)
            SHORT_ORDER_LIST.push({
                buyPrice: order.Price,
                sellPrice: sellPrice,
                quantity: order.Amount,
                isSell: false,
            })
            break
        }
    }
}

function manyBuy(ticker) {
    if (MANY_BUYING) {
        return
    }
    Log('ticker: ' + ticker.Last + ' MANY_NEXT_BUY_PRICE: ' + MANY_NEXT_BUY_PRICE)
    if (ticker.Last > MANY_NEXT_BUY_PRICE) {
        return
    }
    exchange.SetDirection("buy")
    let orderId = exchange.Buy(ticker.Last, getManyQuantity())
    if (!orderId) {
        return
    }
    MANY_BUYING = true
    MANY_BUY_TIME = Unix()
    while (true) {
        let now = Unix()
        let order = exchange.GetOrder(orderId)
        let expire = MANY_BUY_TIME + (60 * 30)
        if (null === order) {
            continue
        }
        // 买入成功处理
        if (1 === order.Status || 2 === order.Status) {
            MANY_NEXT_BUY_PRICE = order.Price * ((100 - DOUBLE_THROW_RATIO) / 100)
            MANY_STEP = MANY_STEP + 1
            MANY_BUYING = false
            MANY_EMPTY_STEP_TIME = null
            let sellPrice = order.Price * ((100 + PROFIT_RATIO) / 100)
            MANY_ORDER_LIST.push({
                buyPrice: order.Price,
                sellPrice: sellPrice,
                quantity: order.Amount,
                isSell: false,
            })
            break
        }
        // 买入超时处理
        if (now >= expire) {
            exchange.CancelOrder(orderId)
            MANY_BUYING = false
            MANY_BUY_TIME = null
            MANY_NEXT_BUY_PRICE = ticker.Last * ((100 - DOUBLE_THROW_RATIO) / 100)
            return
        }
    }
}

function shortBuy(ticker) {
    if (SHORT_BUYING) {
        return
    }
    Log('ticker: ' + ticker.Last + ' SHORT_NEXT_BUY_PRICE: ' + SHORT_NEXT_BUY_PRICE)
    if (ticker.Last < SHORT_NEXT_BUY_PRICE) {
        return
    }
    exchange.SetDirection("sell")
    let orderId = exchange.Sell(ticker.Last, getShortQuantity())
    if (!orderId) {
        return
    }
    SHORT_BUYING = true
    SHORT_BUY_TIME = Unix()
    while (true) {
        let now = Unix()
        let expire = SHORT_BUY_TIME + (60 * 30)
        let order = exchange.GetOrder(orderId)
        if (null === order) {
            continue
        }
        // 买入成功处理
        if (1 === order.Status || 2 === order.Status) {
            SHORT_NEXT_BUY_PRICE = order.Price * ((100 + DOUBLE_THROW_RATIO) / 100)
            SHORT_STEP = SHORT_STEP + 1
            SHORT_BUYING = false
            SHORT_EMPTY_STEP_TIME = null
            let sellPrice = order.Price * ((100 - PROFIT_RATIO) / 100)
            SHORT_ORDER_LIST.push({
                buyPrice: order.Price,
                sellPrice: sellPrice,
                quantity: order.Amount,
                isSell: false,
            })
            break
        }
        // 买入超时处理
        if (now >= expire) {
            exchange.CancelOrder(orderId)
            SHORT_BUYING = false
            SHORT_BUY_TIME = null
            SHORT_NEXT_BUY_PRICE = ticker.Last * ((100 + DOUBLE_THROW_RATIO) / 100)
            return
        }
    }
}


function manySell(ticker) {
    // 遍历卖出订单
    for (let item of MANY_ORDER_LIST) {
        if (item.isSell) {
            continue
        }
        if (ticker.Last >= item.sellPrice) {
            item.isSell = true;
            exchange.SetDirection("closebuy")
            let orderId = exchange.Sell(ticker.Last, item.quantity)
            if (!orderId) {
                return
            }
            while (true) {
                let order = exchange.GetOrder(orderId)
                if (null === order) {
                    continue
                }
                if (1 === order.Status || 2 === order.Status) {
                    MANY_NEXT_BUY_PRICE = ticker.Last * ((100 - BUY_PRICE_RATIO) / 100)
                    MANY_STEP = MANY_STEP - 1
                    if (0 === MANY_STEP) {
                        MANY_EMPTY_STEP_TIME = Unix()
                    }
                    break
                }
            }
        }
    }
}

function shortSell(ticker) {
    // 遍历卖出订单
    for (let item of SHORT_ORDER_LIST) {
        if (item.isSell) {
            continue
        }
        if (ticker.Last <= item.sellPrice) {
            item.isSell = true;
            exchange.SetDirection("closesell")
            let orderId = exchange.Buy(ticker.Last, item.quantity)
            if (!orderId) {
                return
            }
            while (true) {
                let order = exchange.GetOrder(orderId)
                if (null === order) {
                    continue
                }
                if (1 === order.Status || 2 === order.Status) {
                    SHORT_NEXT_BUY_PRICE = ticker.Last * ((100 + BUY_PRICE_RATIO) / 100)
                    SHORT_STEP = SHORT_STEP - 1
                    if (0 === SHORT_STEP) {
                        SHORT_EMPTY_STEP_TIME = Unix()
                    }
                    break
                }
            }
        }
    }
}

function check(ticker) {
    let now = Unix()
    if (null !== CHECK_TIME) {
        let expire = CHECK_TIME + (60 * 10)
        if (now < expire) {
            return
        }
    }
    CHECK_TIME = now

    if (null !== MANY_EMPTY_STEP_TIME) {
        let expire = MANY_EMPTY_STEP_TIME + (60 * 30)
        if (now >= expire) {
            MANY_NEXT_BUY_PRICE = ticker.Last * ((100 - DOUBLE_THROW_RATIO) / 100)
            Log('没有买涨持仓, 调整买入价: ' + MANY_NEXT_BUY_PRICE)
        }
    }
    
    if (null !== SHORT_EMPTY_STEP_TIME) {
        let expire = SHORT_EMPTY_STEP_TIME + (60 * 30)
        if (now >= expire) {
            SHORT_NEXT_BUY_PRICE = ticker.Last * ((100 + DOUBLE_THROW_RATIO) / 100)
            Log('没有做空持仓, 调整买入价: ' + SHORT_NEXT_BUY_PRICE)
        }
    }
}

function onTick() {
    // 在这里写策略逻辑,将会不断调用,例如打印行情信息
    let ticker = exchange.GetTicker()
    if (!ticker) {
        return
    }
    if (FIRST_BUY) {
        // 首次做多购买
        firstManyBuy(ticker)
        // 首次做空购买
        firstShortBuy(ticker)
        FIRST_BUY = false
        return
    }
    
    // 做多买入
    manyBuy(ticker)
    // 做空买入
    shortBuy(ticker)
    // 做多卖出
    manySell(ticker)
    // 做空卖出
    shortSell(ticker)
    // 空仓检测
    check(ticker)
}

function main() {
    // 开合约
    exchange.SetContractType("swap")

    while(true){
        onTick()
        // Sleep函数主要用于数字货币策略的轮询频率控制,防止访问交易所API接口过于频繁
        Sleep(60000)
    }
}


সম্পর্কিত

আরো

হেক্সি৮মাল্টি মুদ্রা কি সম্ভব?

রিচ_ররিcheck বলতে কি বোঝায়?

আর্ট্রনকেন এই প্যারামিটার সেট করা হয় না?

Exodus[সম্পাদনা]এছাড়াও সমস্যাটি পাওয়া গেছে যে, 2020-1-1 থেকে 2020 জুন পর্যন্ত রিটার্নিংয়ের সময়, 3-30 এ পুরো রোবটটি বন্ধ হয়ে যায়, এছাড়াও, 2021-1-1 থেকে 201-6-21 পর্যন্ত পরীক্ষার সময় ETH পরীক্ষা করার সময় 1-2 এ বন্ধ হয়ে যায় কিনা তা জানা যায় না। লেখক নিজেই পরীক্ষা করতে পারেন।

ইভানএটা আসল হেকিং হতে পারে না। এটা ঠিক কন্ট্রাক্ট গ্রিডের মত।

Exodus[সম্পাদনা]এই ভিডিওতে আমরা দেখছি যে, এই অ্যাপটি 7 দিন ধরে কাজ করছে, 200 টি চামড়া এবং 70 টি সোনার চামড়ার সাথে। ১. দ্বি-মুখী একক খোলা ফাংশনটি কি স্বাভাবিক? দেখুন নীতিতে বলা হয়েছে দ্বি-মুখী একক খোলা, বিকশিত হওয়ার সম্ভাবনা খুব কম, তবে সাত দিনের মধ্যে রোবটটি সবেমাত্র চালু হওয়ার সময় দ্বি-মুখী একক খোলা, খুব কমই দ্বি-মুখী একক খোলা, আমার গবেষণার পরে দেখা গেছে যে 10 মিনিটের জন্য একটি একক খোলা অবস্থান আপডেট করা হয়, যার ফলে ধীর গতিতে পরিবর্তন হয়, এটি অর্থহীন, এবং দ্বি-মুখী একক খোলা হয় না, যেমন আজ বিটিসি আজ 5% হ্রাস পেয়েছে তবে কোনও একক খোলা হয় না? এখানে কি অপ্টিমাইজেশান প্রয়োজন? উদাহরণস্বরূপ, দীর্ঘায়িত সনাক্তকরণের ব্যবধান? এছাড়াও, বড় বাজারে যদি একক খোলা হয়, তবে যদি একক ভাঙ্গনটি সর্বনিম্ন হয় তবে এটি খুব বেশি বোঝা যায় না। ২. ডিফল্টভাবে বাড়ানো তহবিলের জন্য, 1000 থেকে 2000 তহবিলের বেশি তহবিল নিশ্চিত করার প্রয়োজন নেই, আমি আজ 200 তহবিল পেয়েছি, আমি অস্থায়ীভাবে জাগ্রত হয়েছি। যদি যথেষ্ট তহবিল না থাকে তবে আপনি নিজেরাই বাড়ানোর পরিমাণটি ম্যানুয়ালি সামঞ্জস্য করতে পারেন। ৩. দয়া করে জিজ্ঞাসা করুন, কারণ আপনি কখনই হারাবেন না, তাই যদি পর্যাপ্ত মূলধন থাকে তবে আপনি কখনই বিপর্যয় করবেন না, তবে পুনর্বিবেচনায় কেন ক্ষতি হবে? তত্ত্ব অনুসারে ক্ষতি হ'ল বিপর্যয়, অর্থ শূন্য হয়ে যায়। ঠিক আছে, আমি কোথায় ভুল বুঝতে পেরেছি, নির্দেশনা চাই। এই কৌশলটি আমি পছন্দ করি, আপনি দিক নির্বিশেষে মুনাফা অর্জন করতে পারেন, আপনার বিনিয়োগের পরিমাণ এবং মূলধন সংশোধন করতে পারেন, তবে আপনি ঝুঁকিও নিতে পারবেন না, আপনি অনুভব করতে পারেন যে আপনি আপনার বিনিয়োগের পরিমাণ এবং মূলধন যোগ করার উপর নির্ভর করে আপনার বিনিয়োগের পরিমাণ এবং আরও অনেক কিছু সামঞ্জস্য করতে পারেন।

হ্যাঁXভাইয়ের উইকিমিডিয়া

Exodus[সম্পাদনা]বিএনএনের বিনিময়ে কাজ শেষ

Exodus[সম্পাদনা]আমার টোকন bch চালু করলে ভুল হবে, Sell ((490.14, 0.001): map[err_code:1067 err_msg:The volume field is illegal. Please re-enter. status:error ts:1.625132342294e+12]. চুক্তির পিছনে পৃষ্ঠা সংখ্যা নেই, কেন বিজোড় সংখ্যা?

wbsyকোন বাস্তব প্লেট নেই?

Exodus[সম্পাদনা]এই মুনাফা কার্ভটা ভয়ঙ্কর, ১২০% এরও বেশি।

মদ্যপানে লাইট জ্বালিয়ে তলোয়ার দেখতেআমাকে হাসতে দেখে।

Exodus[সম্পাদনা]আজকে আমরা খুব খারাপ সময় পার করছি, আশা করছি ২.০। দয়া করে আমাকে বলুন কিভাবে আমি নতুন কৌশলটি অনুভব করতে পারি?

বাতাসএই সমস্যাগুলো ২.০ সংস্করণে দেখা গেছে। এই কারণেই, আমরা শূন্য মূল্য কিনতে পারি না, কারণ শূন্য মূল্যের শতাংশ স্থির, অর্থাৎ, এক শতাংশ বৃদ্ধি, শূন্য মূল্য, এক শতাংশ হ্রাস, এবং শূন্য মূল্যের হার, এক শতাংশ হ্রাস। যেহেতু পতন হল এক শতাংশ, পতন ক্রয়ের শতকরা হার এক, 1000 টন থেকে 1500 টন পর্যন্ত, 1000 শতাংশ এবং 1500 শতাংশের মধ্যে পার্থক্য রয়েছে, তাই খালি করা তুলনামূলকভাবে কঠিন, এবং দাম পরিবর্তন খুব ঘন ঘন হয়, যার ফলে খালি করা সম্ভবত কেনা যায় না স্টপ লস সমস্যা, ২.০ সংস্করণে একটি নির্দিষ্ট প্রক্রিয়াকরণ করা হয়েছে, এটি একটি সহজ স্টপ লস প্রক্রিয়াকরণ, তবে রিটার্নিং ডেটা থেকে দেখা যায় যে প্রভাবটিও সম্ভব, যখন আপনি একটি নির্দিষ্ট থ্রেশহোল্ডে পৌঁছেছেন তখন আপনি একটি শুল্ক কিনতে বা একটি শূন্য অবস্থান তৈরি করতে শুরু করেন, ১.০ প্রক্রিয়াজাত করা হয়নি তাই কিছু অর্ডার কখনই কার্যকর হতে পারে না, যেমন বিটিসি 65000 ক্রেতাদের সংখ্যা 0.001, তাহলে বিটিসি পড়েছে এই এককটি কখনই বের হতে পারে না /upload/asset/2034c4ec56c423120b9c6.png /upload/asset/203032c94e60a3915cc9f.png /upload/asset/2030b880b030476977f4b.png /upload/asset/2030d89e9fd59f528be4c.png

বাতাসআমি বিয়ানান দিয়ে রিসেট করেছি যে ডিস্কটি চলছে, অন্য প্ল্যাটফর্মগুলি কিছু ত্রুটি রিপোর্ট করতে পারে

বাতাসরিয়েল ডিস্ক এখনও চলছে, সময় লাগবে

বাতাসআপনি যদি এই নতুন কার্ভটি দেখেন, তাহলে আপনি দেখতে পাবেন যে এর আগের কার্ভটিতে একটি বাগ ছিল।