डिजिटल मुद्रा वायदा द्वि-समान रेखा मोड़ रणनीतियाँ (अध्यापन)

लेखक:छोटे सपने, दिनांक: 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:"मार्जिन अपर्याप्त है. "} क्या मतलब है ~ एक मिनट में एक बार

स्वर्ग से धनछोटी सपना टीचरः क्या आप अपना वी-शैप जोड़ सकते हैं, कृपया मुझे निजी बात करें?

स्वर्ग से धनक्या यह रणनीति वास्तविक डिस्क पर चल सकती है?

सिलक9macd क्रॉस ऊपर खरीदने के लिए नीचे बेचने के लिए और एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में एक ही समय में

13826543292भगवान का शुक्र है, यह बहुत अच्छा है

छोटे सपनेअच्छा, यह अध्ययन है।

xxs1xxs1क्या आप एक रणनीति बना सकते हैं जो लॉकडाउन को बंद कर दे? या विचार भी काम करता है? हम इस रणनीति को रोकना चाहते हैं, लेकिन यह बहुत तेज है। हम लॉकडाउन को जोड़ना चाहते हैं और अगले बाजार की प्रतीक्षा करते हैं।

छोटे सपनेठीक है, हम भविष्य में अधिक रणनीतियों को साझा करेंगे, एफएमजेड का समर्थन करने के लिए धन्यवाद।

xxs1xxs1आप केवल कह सकते हैं कि आप वास्तव में 666 हैं। मैं सिर्फ लाभ लाभ का उपयोग कर रहा हूँ. आप ईओएस परीक्षण करने के लिए जा रहे हैं. इस साल के लिए अभी तक. 10000% मैं एक अध्ययन करने जा रहा हूं कि क्या वास्तविक मूल्य नहीं है। वर्तमान में यह वास्तविक मूल्य भुगतान के लिए पर्याप्त नहीं है। क्या आप बीएनए के साथ बीएसडी अनुबंध करने का प्रयास कर सकते हैं?

छोटे सपनेइस तरह की एक बड़ी संख्या में लोगों ने अपने खाते में पैसे जमा किए हैं।

छोटे सपनेआम तौर पर, पुनर्मूल्यांकन के समय लीवरेज 10 गुना होता है।

छोटे सपनेX.X राशि, मैं भी नहीं कह सकता। लेकिन बात यह है कि आपके अनुकूलित संस्करण 666 के बारे में, शार्प कितना ऊंचा है /upload/asset/16ab6c51ed93be64d383.

स्वर्ग से धनक्या यह आपका अनुबंध है या लीवर?

छोटे सपनेआपके खाते में पर्याप्त जमा नहीं है, पर्याप्त भुगतान नहीं किया गया है।

छोटे सपनेआवश्यकताओं के अनुसार कोड लिखें. उदाहरणों के लिए रणनीति वर्ग पर जाएं.