ডিজিটাল মুদ্রা ফিউচার দ্বি-সমতল বিন্দু কৌশল (পাঠ্য)

লেখক:ছোট্ট স্বপ্ন, তারিখঃ 2021-12-03 11:25:28
ট্যাগঃ

সম্পর্কিত নিবন্ধঃhttps://www.fmz.com/bbs-topic/8479


/*backtest
start: 2021-09-01 00:00:00
end: 2021-12-02 00:00:00
period: 1h
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

var LONG = 1 
var SHORT = -1
var IDLE = 0

function getPosition(positions, direction) {
    var ret = {Price : 0, Amount : 0, Type : ""}
    _.each(positions, function(pos) {
        if (pos.Type == direction) {
            ret = pos
        }
    })
    return ret 
}

function cancellAll() {
    while (true) {
        var orders = _C(exchange.GetOrders)
        if (orders.length == 0) {
            break
        } else {
            for (var i = 0 ; i < orders.length ; i++) {
                exchange.CancelOrder(orders[i].Id, orders[i])
                Sleep(500)
            }
        }
        Sleep(500)
    }
}

function cover(tradeFunc, direction) {
    var mapDirection = {"closebuy": PD_LONG, "closesell": PD_SHORT}
    var positions = _C(exchange.GetPosition)
    var pos = getPosition(positions, mapDirection[direction])
    if (pos.Amount > 0) {
        cancellAll()
        exchange.SetDirection(direction)
        if (tradeFunc(-1, pos.Amount)) {
            return true 
        } else {
            return false 
        }
    }
    return true 
}

function main() {
    if (okexSimulate) {
        exchange.IO("simulate", true) // 切换到OKEX V5模拟盘测试 
        Log("切换到OKEX V5模拟盘")
    }    
    exchange.SetContractType(ct)
    var state = IDLE
    var holdPrice = 0
    var preTime = 0

    while (true) {
        var r = _C(exchange.GetRecords)
        var l = r.length
        if (l < Math.max(ema1Period, ema2Period)) {
            Sleep(1000)
            continue
        }
        var ema1 = TA.EMA(r, ema1Period)
        var ema2 = TA.EMA(r, ema2Period)
        
        // 画图
        $.PlotRecords(r, 'K线')
        if(preTime !== r[l - 1].Time){
            $.PlotLine('ema1', ema1[l - 2], r[l - 2].Time)
            $.PlotLine('ema2', ema2[l - 2], r[l - 2].Time)
            
            $.PlotLine('ema1', ema1[l - 1], r[l - 1].Time)
            $.PlotLine('ema2', ema2[l - 1], r[l - 1].Time)
            preTime = r[l - 1].Time
        } else {
            $.PlotLine('ema1', ema1[l - 1], r[l - 1].Time)
            $.PlotLine('ema2', ema2[l - 1], r[l - 1].Time)
        }
        
        var up = (ema1[l - 2] > ema1[l - 3] && ema1[l - 4] > ema1[l - 3]) && (ema2[l - 2] > ema2[l - 3] && ema2[l - 4] > ema2[l - 3])
        var down = (ema1[l - 2] < ema1[l - 3] && ema1[l - 4] < ema1[l - 3]) && (ema2[l - 2] < ema2[l - 3] && ema2[l - 4] < ema2[l - 3])
        if (up && (state == SHORT || state == IDLE)) {
            if (state == SHORT && cover(exchange.Buy, "closesell")) {
                state = IDLE
                holdPrice = 0
                $.PlotFlag(r[l - 1].Time, 'coverShort', 'CS')
            }
            exchange.SetDirection("buy")
            if (exchange.Buy(-1, amount)) {
                state = LONG
                holdPrice = r[l - 1].Close
                $.PlotFlag(r[l - 1].Time, 'openLong', 'L')
            }
        } else if (down && (state == LONG || state == IDLE)) {
            if (state == LONG && cover(exchange.Sell, "closebuy")) {
                state = IDLE
                holdPrice = 0
                $.PlotFlag(r[l - 1].Time, 'coverLong', 'CL')
            }
            exchange.SetDirection("sell")
            if (exchange.Sell(-1, amount)) {
                state = SHORT
                holdPrice = r[l - 1].Close
                $.PlotFlag(r[l - 1].Time, 'openShort', 'S')
            }
        }
        
        // 止盈
        if (state == LONG && r[l - 1].Close - holdPrice > profitTarget && cover(exchange.Sell, "closebuy")) {            
            state = IDLE
            holdPrice = 0
            $.PlotFlag(r[l - 1].Time, 'coverLong', 'CL')
        } else if (state == SHORT && holdPrice - r[l - 1].Close > profitTarget && cover(exchange.Buy, "closesell")) {            
            state = IDLE
            holdPrice = 0
            $.PlotFlag(r[l - 1].Time, 'coverShort', 'CS')
        }
        LogStatus(_D())
        Sleep(500)        
    }
}

আরো

xxs1xxs1ভাই, আমি আপনার ছোট্টটা একটু পরিবর্তন করেছি, ফল ভালো লাগছে। আপনি কি পরামর্শ দিচ্ছেন? ঝুঁকি ও অপ্টিমাইজেশন https://www.fmz.com/m/edit-strategy/359761

স্বর্গীয় সম্পদশিক্ষকঃ আপনার এই পরীক্ষার শিক্ষণ কৌশল কত গুণ?

স্বর্গীয় সম্পদআমি শুরু করলাম, কিন্তু কোন প্রতিক্রিয়া নেই।

স্বর্গীয় সম্পদ/upload/asset/2152afd2a78355e8ce25b.png

স্বর্গীয় সম্পদBuy ((-1, 5): 400: {"কোডঃ-2019,"msg:"Margin is insufficient. "} এর অর্থ কী?

স্বর্গীয় সম্পদছোট্ট স্বপ্নের শিক্ষকঃ আপনি কি আপনার উইকিমিডিয়া যোগ করতে পারেন, দয়া করে আমার সাথে ব্যক্তিগতভাবে কথা বলুন

স্বর্গীয় সম্পদএই কৌশলটি কি বাস্তব ডিস্কে চলতে পারে?

সিলিক9macd ক্রস আপ ক্রয় এবং ডাউন বিক্রয় একই সময়ে বিপরীত আদেশ, না শুধুমাত্র জয়ী, শুধুমাত্র স্টপ লস কিভাবে লিখুন

13826543292ঈশ্বরকে ধন্যবাদ, দারুণ।

ছোট্ট স্বপ্নএই গবেষণাটি ভাল।

xxs1xxs1আপনি কি একটি লক-আউট কৌশল বের করতে পারেন? অথবা ধারণাটিও কাজ করে। আমাদের এই কৌশলটি সরাসরি স্টপ লস করার জন্য খুব শক্তিশালী।

ছোট্ট স্বপ্নভাল, ভবিষ্যতে প্ল্যাটফর্মটি আরও কৌশল ভাগ করবে, এফএমজেড সমর্থন করার জন্য ধন্যবাদ।

xxs1xxs1শুধু বলবেন, "হুজুর, আপনি সত্যিই ৬৬৬। আমি শুধু মুনাফার সুবিধা নিয়েছি. তুমি ইওএস ট্রায়াল টেস্ট করো. এ বছর থেকে এখন পর্যন্ত. ১০,০০০%। আমি গবেষণা করতে যাচ্ছি এবং দেখতে চাইছি যে, হয়তো না। বর্তমানে, এই ডিস্কটি অপারেটিং ফি প্রদানের জন্য যথেষ্ট নয়। আপনি কি বিএনএনের বিএসডি চুক্তি করতে পারবেন?

ছোট্ট স্বপ্নতবে, এই অ্যাকাউন্টের সম্পদ কম আছে।

ছোট্ট স্বপ্নসাধারণভাবে, রিটেস্টের সময় লিভারেজ ১০ গুণ বেশি হয়।

ছোট্ট স্বপ্নএক্স.এক্স পরিমাণ, আমিও বলেছি না। কিন্তু আপনার এই অপ্টিমাইজড সংস্করণ 666 এর কথা বললে, শার্পের উচ্চতা কত?

স্বর্গীয় সম্পদএটা আপনার চুক্তি, তাই না?

ছোট্ট স্বপ্নআপনার অ্যাকাউন্ট, গ্যারান্টি পর্যাপ্ত নয়, অর্ডার করার জন্য পর্যাপ্ত নয়।

ছোট্ট স্বপ্নকোডটি প্রয়োজন অনুসারে লিখুন। উদাহরণগুলির জন্য কৌশল স্কোয়ার দেখুন।