ڈیجیٹل کرنسی فیوچر کے لئے دوہرا یکساں موڑ کی حکمت عملی (تعلیم)

مصنف:چھوٹا سا خواب، تاریخ: 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)        
    }
}

مزید

ایکس ایکس ایکس ایکس ایکسمیں نے آپ کی چھوٹی سی تبدیلی کی ہے اور نتائج اچھے لگ رہے ہیں۔ آپ نے کچھ مشورے دیئے ہیں . https://www.fmz.com/m/edit-strategy/359761

آسمان سے بارش کی آمدٹیچر: آپ نے اس ٹیسٹ میں کتنی بار تدریسی حکمت عملی استعمال کی ہے؟

آسمان سے بارش کی آمدمیں نے ڈراپ شروع کیا، کوئی ردعمل نہیں

آسمان سے بارش کی آمد/upload/asset/2152afd2a78355e8ce25b.png

آسمان سے بارش کی آمدBuy ((-1, 5): 400: {"کوڈ":-2019, "msg:"مارجن insufficient ہے. "} کیا مطلب ہے؟ ~ ایک منٹ میں ایک بار

آسمان سے بارش کی آمدچھوٹی خواب ٹیچر: کیا آپ اپنا ویکی میسج شامل کر سکتے ہیں؟ براہ کرم مجھ سے ذاتی طور پر بات کریں

آسمان سے بارش کی آمدکیا یہ حکمت عملی اصلی ڈسک پر چل سکتی ہے؟ چھوٹی خواب ٹیچر: کیا اسے اپنی جگہ پر تبدیل کیا جاسکتا ہے؟

سائیکل9MACD کراس اوپر خریدیں اور نیچے فروخت کریں ایک ہی وقت میں تبدیل کرنے کے لئے، نہ صرف جیتنے کے لئے، صرف نقصان کو روکنے کے لئے کس طرح لکھنے

13826543292شکریہ، بہت زبردست۔

چھوٹا سا خواباچھا، یہ تحقیق ہے۔

ایکس ایکس ایکس ایکس ایکسکیا آپ کو لگتا ہے کہ آپ کو اس کے بارے میں مزید جاننے کی ضرورت ہے؟ ہم نے اس حکمت عملی کو روکنے کے لئے بہت زیادہ طاقت استعمال کی ہے۔ ہم نے اس کے ساتھ ہی ایک لاک ڈاؤن بھی شروع کیا ہے اور اگلے بازار کا انتظار کر رہے ہیں۔

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

ایکس ایکس ایکس ایکس ایکسآپ کو صرف اتنا کہنا ہے کہ آپ واقعی 666 ہیں۔ میں نے صرف منافع کا فائدہ اٹھایا ہے۔ آپ EOS کی آزمائش کریں۔ اس سال سے اب تک۔ 10000٪ میں تحقیق کر رہا ہوں کہ کیا یہ ممکن ہے کہ یہ ممکن نہیں ہے۔ فی الحال یہ تخمینہ لگایا گیا ہے کہ یہ کافی نہیں ہے کہ وہ آپریشنل فیس ادا کرے۔ کیا آپ بی این اے میں بی ایس ڈی معاہدہ کرنے کی کوشش کر سکتے ہیں؟

چھوٹا سا خواباس کا مطلب یہ ہے کہ اکاؤنٹ میں موجود اثاثے کم ہیں۔

چھوٹا سا خوابعام طور پر ریٹیسٹ کے وقت لیورج 10 گنا ہوتا ہے۔

چھوٹا سا خوابX.X رقم، میں نے یہ بھی کہا کہ نہیں..... لیکن بات یہ ہے کہ آپ کا یہ اصلاح شدہ ورژن 666 ، شارپ کتنا اونچا ہے /upload/asset/16ab6c51ed93be64d383.png

آسمان سے بارش کی آمدکیا یہ آپ کا معاہدہ ہے یا آپ کا لیور؟

چھوٹا سا خوابآپ کے اکاؤنٹ میں ، آپ کی ضمانت کے لئے کافی رقم نہیں ہے ، آپ کی ادائیگی کے لئے کافی رقم نہیں ہے۔

چھوٹا سا خوابکوڈ کو ضرورت کے مطابق لکھنا۔ مثال کے طور پر حکمت عملی اسکوائر ملاحظہ کریں۔