وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ڈیجیٹل کرنسی کے معاہدے روبوٹ کے ذریعے آسانی سے ٹریک کیے جاتے ہیں

مصنف:ایجاد کاروں کی مقدار - خواب، تاریخ: 2021-04-07 15:14:23
ٹیگز:تجارتی امداد

ڈیجیٹل کرنسی کے معاہدے روبوٹ کے ذریعے آسانی سے ٹریک کیے جاتے ہیں

متعلقہ مضامین:https://www.fmz.com/bbs-topic/6821


/*backtest
start: 2021-03-18 00:00:00
end: 2021-04-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"},{"eid":"Futures_OKCoin","currency":"BTC_USD"},{"eid":"Futures_OKCoin","currency":"BTC_USD"}]
*/

function test() {
    // 测试函数
    var ts = new Date().getTime()    
    if (ts % (1000 * 60 * 60 * 6) > 1000 * 60 * 60 * 5.5) {
        Sleep(1000 * 60 * 10)
    	var nowPosAmount = getPosAmount(_C(exchange.GetPosition), refCt)
    	var longPosAmount = nowPosAmount.long
    	var shortPosAmount = nowPosAmount.short
        var x = Math.random()
        if (x > 0.7) {
        	exchange.SetDirection("buy")
            exchange.Buy(-1, _N(Math.max(1, x * 10), 0), "参考账户测试开单#FF0000")
        } else if(x < 0.2) {
        	exchange.SetDirection("sell")
            exchange.Sell(-1, _N(Math.max(1, x * 10), 0), "参考账户测试开单#FF0000")
        } else if(x >= 0.2 && x <= 0.5 && longPosAmount > 4) {
        	exchange.SetDirection("closebuy")
        	exchange.Sell(-1, longPosAmount, "参考账户测试平仓#FF0000")
        } else if(shortPosAmount > 4) {
        	exchange.SetDirection("closesell")
        	exchange.Buy(-1, _N(shortPosAmount / 2, 0), "参考账户测试平仓#FF0000")
        }
    }
}

function getPosAmount(pos, ct) {
    var longPosAmount = 0
    var shortPosAmount = 0
    _.each(pos, function(ele) {
    	if (ele.ContractType == ct && ele.Type == PD_LONG) {
    		longPosAmount = ele.Amount
    	} else if (ele.ContractType == ct && ele.Type == PD_SHORT) {
    		shortPosAmount = ele.Amount
    	}
    })
    return {long: longPosAmount, short: shortPosAmount}
}

function trade(e, ct, type, delta) {
    var nowPosAmount = getPosAmount(_C(e.GetPosition), ct)
    var nowAmount = type == PD_LONG ? nowPosAmount.long : nowPosAmount.short
    if (delta > 0) {
        // 开仓
        var tradeFunc = type == PD_LONG ? e.Buy : e.Sell
        e.SetDirection(type == PD_LONG ? "buy" : "sell")
        tradeFunc(-1, delta)
    } else if (delta < 0) {
        // 平仓
        var tradeFunc = type == PD_LONG ? e.Sell : e.Buy
        e.SetDirection(type == PD_LONG ? "closebuy" : "closesell")
        if (nowAmount <= 0) {
        	Log("未检测到持仓")
        	return 
        }
        tradeFunc(-1, Math.min(nowAmount, Math.abs(delta)))
    } else {
    	throw "错误"
    }
}

function main() {
    LogReset(1)
    if (exchanges.length < 2) {
        throw "没有跟单的交易所"
    }
    var exName = exchange.GetName()
    // 检测参考交易所
    if (!exName.includes("Futures_")) {
        throw "仅支持期货跟单"
    }
    Log("开始监控", exName, "交易所", "#FF0000")
    
    // 检测跟单交易所
    for (var i = 1 ; i < exchanges.length ; i++) {
        if (exchanges[i].GetName() != exName) {
            throw "跟单的期货交易所和参考交易所不同!"
        }
    }
    
    // 设置交易对、合约
    _.each(exchanges, function(e) {
    	if (!IsVirtual()) {
    		e.SetCurrency(refCurrency)
            if (isSimulate) {
                if (e.GetName() == "Futures_OKCoin") {
                    e.IO("simulate", true)
                }
            }
    	}
        e.SetContractType(refCt)
        // 设置精度
        e.SetPrecision(pricePrecision, amountPrecision)
        Log("设置", e.GetName(), e.GetLabel(), "价格精度:", pricePrecision, "下单量精度:", amountPrecision)
    })

    var initRefPosAmount = getPosAmount(_C(exchange.GetPosition), refCt)
    while(true) {
        if (IsVirtual()) {    // 回测时才模拟
        	test()            // 测试函数,模拟参考账户主动交易,触发跟单账户跟单        
        }
    	Sleep(5000)
        var nowRefPosAmount = getPosAmount(_C(exchange.GetPosition), refCt)
        var tbl = {
            type : "table", 
            title : "持仓",
            cols : ["名称", "标签", "多仓", "空仓", "账户资产(Stocks)", "账户资产(Balance)"],
            rows : []
        }
        _.each(exchanges, function(e) {
            var pos = getPosAmount(_C(e.GetPosition), refCt)
            var acc = _C(e.GetAccount)
            tbl.rows.push([e.GetName(), e.GetLabel(), pos.long, pos.short, acc.Stocks, acc.Balance])
        })
        LogStatus(_D(), "\n`" + JSON.stringify(tbl) + "`")
        
        // 计算仓位变动量
        var longPosDelta = nowRefPosAmount.long - initRefPosAmount.long
        var shortPosDelta = nowRefPosAmount.short - initRefPosAmount.short

        // 检测变动
        if (longPosDelta == 0 && shortPosDelta == 0) {
        	continue
        } else {
        	// 检测到仓位变动
        	for (var i = 1 ; i < exchanges.length ; i++) {
        		// 执行多头动作
        		if (longPosDelta != 0) {
        			Log(exchanges[i].GetName(), exchanges[i].GetLabel(), "执行多头跟单,变动量:", longPosDelta)
        		    trade(exchanges[i], refCt, PD_LONG, longPosDelta)
        		}
        		// 执行空头动作
        		if (shortPosDelta != 0) {
        			Log(exchanges[i].GetName(), exchanges[i].GetLabel(), "执行空头跟单,变动量:", shortPosDelta)
        		    trade(exchanges[i], refCt, PD_SHORT, shortPosDelta)
        		}
        	}
        }

        // 执行跟单操作后,更新
        initRefPosAmount = nowRefPosAmount
    }
}


متعلقہ

مزید

pw1013ہیلو، کیا آپ مجھے بتا سکتے ہیں کہ کس طرح ایک سے زیادہ ٹرانزیکشنز شامل کرنے کے لئے؟

کالی مرچ 886کیا آپ v جمع کر سکتے ہیں؟

lt4691888@163.comبھائی، کیا یہ ٹکٹ کراس پلیٹ فارم ہے؟

اِکٹکیا آپ V شامل کر سکتے ہیں؟

17331171117براہ مہربانی حکمت عملی کے پیرامیٹرز کو شامل کریں

fxhoverاس کے بعد سے ، ہم نے اس کی جانچ پڑتال کی ہے ، اور ہم نے اس کی جانچ پڑتال کی ہے۔

ایجاد کاروں کی مقدار - خواباس میں کوڈ میں ترمیم کرنا پڑسکتی ہے ، ایک اکاؤنٹ میں موجود تمام مجموعی اسٹوریج کی معلومات کی جانچ پڑتال کرنا پڑسکتی ہے ، اور پھر انفرادی طور پر اس پر عمل کرنا پڑسکتا ہے۔

pw1013آپ کے جواب کا شکریہ ، لیکن اگر میں کسی اکاؤنٹ میں تمام ٹرانزیکشنز کاپی کرنا چاہتا ہوں تو ، براہ کرم مجھے بتائیں کہ یہ کیسے کریں ، ایک کو شامل کرنا بہت پریشانی کا باعث ہے ، اور یہ مسئلہ مجھے کافی عرصے سے پریشان کر رہا ہے -

ایجاد کاروں کی مقدار - خواباسٹریٹجک طور پر ، آپ کو متعدد ایکسچینج اشیاء شامل کرنے کی ضرورت ہے۔

ایجاد کاروں کی مقدار - خوابہیلو ، آپ ایف ایم زیڈ کے سرکاری ٹیلیگرام گروپ میں شامل ہوسکتے ہیں ، یہ پلیٹ فارم کے ہوم پیج پر ہے ، میں بھی اس گروپ میں ہوں۔

ایجاد کاروں کی مقدار - خوابآپ کا یہ V3 ہے، API KEY نے V5 کی تشکیل کا تعین کیا ہے، FMZ پر تشکیل کے وقت V5 اختیارات کو منتخب کرنے کا تعین کیا ہے۔

17331171117v5 کی تخلیق میں کئی ناکام

ایجاد کاروں کی مقدار - خوابآپ کی API KEY کی ترتیب غلط ہے، چیک کریں۔

17331171117/upload/asset/18859d9a5a19f334f87be.png یہ کیا ہو رہا ہے؟

17331171117/upload/asset/18859d9a5a19f334f87be.png

ایجاد کاروں کی مقدار - خواب/upload/asset/1695c1168b60c8160718.png

ایجاد کاروں کی مقدار - خواباس کی حکمت عملی کی وضاحت میں مضمون کا پتہ ہے ، مضمون کو دیکھیں ، کوڈ کو اوپن سورس کریں یا براہ راست کوڈ پر تحقیق کریں۔

fxhoverکیا آپ کے پاس یہ روبوٹ ہے؟

ایجاد کاروں کی مقدار - خوابیہ ایک روبوٹ ہے جو صرف ادائیگی کرتا ہے۔ اس سے اسے کیا فائدہ ہوگا۔