My-1 ویلیو اوسط کی حکمت عملی

مصنف:لیزا، تاریخ: 2015-12-20 23:05:41
ٹیگز:تجارتی امداد

اصلی ڈسک:https://www.fmz.com/m/robot/26018یہ حکمت عملی بٹ کوائن کے بارے میں طویل عرصے سے خوشگوار سوچنے والوں کے لئے موزوں ہے ، جو اوسط قیمت کی حکمت عملی کا استعمال کرتے ہوئے سرمایہ کاری کرتے ہیں ، جو مارکیٹ میں اتار چڑھاؤ کا مؤثر طریقے سے مقابلہ کرسکتے ہیں۔

بنیادی خیال یہ ہے کہ پہلے یہ سوچیں کہ آپ ہر مہینے کتنی رقم لگانا چاہتے ہیں (اسٹریٹیجی متغیر: MoneyEveryMonth) اور پھر فیصلہ کریں کہ آپ ایک بار کتنی دیر تک تجارت کرتے ہیں ، اور تجارت کے وقفے کو 5 منٹ سے کم نہیں کرنے کی سفارش کی جاتی ہے (اسٹریٹیجی پیرامیٹر: InvestInternal) ۔

یہاں ایک مثال ہے جو حکمت عملی کے خیالات اور خرید و فروخت کے اوقات کو ظاہر کرتی ہے۔ فرض کریں کہ آپ 72000 یوآن کے بکٹکو خریدنا چاہتے ہیں جو ہر مہینے (حساب کرنے میں آسان ہے) ہر گھنٹے میں ایک بار تجارت کرتے ہیں ، یعنی آپ ہر مہینے 24 * 30 = 720 بار تجارت کرنے کا ارادہ رکھتے ہیں ، اور ہر بار آپ کی منصوبہ بندی کی سرمایہ کاری کی قیمت 72000 / 720 = 100 یوآن ہے (متغیر A) ۔

اور اب یہ ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر 1 400 0 0 CE=0 AB-F=100 G/C=0.25
2 200 100 0.25 2000.25=50 1002-50=150 0.75 3 1000 250 1 1000 1003-1000=-700 -0.7 4 500 -550 0.3 150 1004-150=250 0.5

آخر کار ، 300 کی سرمایہ کاری کے ساتھ ، 0.8 بٹ کوائن خریدے گئے (جس کی قیمت 400 ڈالر ہے) ، جس کی اوسط قیمت 375 ڈالر ہے۔

وضاحت: پروگرام ہر بار اکاؤنٹ میں موجود فنڈز اور بٹ کوائنز کی جانچ پڑتال کرتا ہے اور شروع ہونے کے وقت کے فرق کا حساب لگاتا ہے تاکہ ہر بار خریدنے کی ضرورت کی مقدار کا حساب لگایا جاسکے ، لہذا دوسرے روبوٹ کے ساتھ عوامی اکاؤنٹ کا استعمال نہ کریں اور نہ ہی دستی طور پر خرید و فروخت کی کارروائی کریں۔ اگر کسی تجارت میں تمام ریڈ اور نمایاں ہوجاتا ہے تو ، اسے پروگرام کے انٹرایکٹو حصے میں پُر کیا جانا چاہئے ، ورنہ پروگرام غلطی کا حساب کرے گا۔


var initAccount;
var startTime; //unix timestamp
var pause = false; //pause execution of strategy or continue
var moneyDeposit = 0; // positive means deposit, negative means withdraw
var sotckDeposit = 0; // positive means deposit, negative means withdraw

function AdjustFloat(v) {
    return Math.floor(v * 1000)/1000;
}

function GetAccount() {
    var account = null;
    while (!(account = exchange.GetAccount())) {
        Log('Get Account Error');
        Sleep(ErrorInterval);
    }
    return account;
}

function GetCurrentPrice() {
    var ticker = null;
    while (!(ticker = exchange.GetTicker())) {
        Log('Get Ticker Error');
        Sleep(ErrorInterval);
    }
    return AdjustFloat(ticker.Last);
}

function GetOrders(){
    var orders = null;
    while (!(orders = exchange.GetOrders())) {
        Log('Get Orders Error');
        Sleep(ErrorInterval);
    }
    return orders;
}

function CancelPendingOrders() {
    while(true){
        var orders = GetOrders();
        if (orders.length === 0) {
            return;
        }

        for (var i = 0; i < orders.length; i++) {
            exchange.CancelOrder(orders[i].Id);
            if (i < (orders.length-1)) {
                Sleep(ErrorInterval);
            }
        }
    }
}

function ProcessCommand() {
    var command = GetCommand();

    if (command !== null) {
        Log('command:', command);
        if (command === 'pause') {
            pause = true;
        }
        if (command === 'Continue') {
            pause = false;
        }
        if(command.indexOf('MoneyChange:') === 0){
            moneyDeposit += parseFloat(command.replace("MoneyChange:", ""));
            Log('Deposit Money:', moneyDeposit);
        }
        if(command.indexOf('StockChange:') === 0){
            stockDeposit += parseFloat(command.replace("StockChange:", ""));
            Log('Deposit Stock:',stockDeposit);
        }
    }
}

function CaculateMoneyToInvest(currentPrice,investCount)
{
    var moneyEveryInvest = MoneyEveryMonth * InvestInternal / (30 * 24 * 60);
    var totalStockInvested = 0.0;
    var totalMoneyInvested = 0.0;
    var totalValueInvested = 0.0;
    var moneyToInvestThisTime = 0.0;

    CancelPendingOrders();
    var accountNow = GetAccount();
    totalMoneyInvested = initAccount.Balance + initAccount.FrozenBalance + moneyDeposit - accountNow.Balance - accountNow.FrozenBalance;
    totalStockInvested = accountNow.Stocks + accountNow.FrozenStocks - initAccount.Stocks - initAccount.FrozenStocks - stockDeposit;

    Log('Total Money Invested:',totalMoneyInvested);
    Log('Total Stock Invested:',totalStockInvested);

    totalValueInvested = AdjustFloat(totalStockInvested * currentPrice);
    Log('Total Value Invested:',totalValueInvested);

    var averagePrice = 0;
    if(totalStockInvested !== 0){
        averagePrice = AdjustFloat(totalMoneyInvested / totalStockInvested);
    }

    moneyToInvestThisTime = AdjustFloat(moneyEveryInvest * investCount - totalValueInvested);
    Log('Money to Invest This Time:', moneyToInvestThisTime);

    var profit = totalValueInvested - totalMoneyInvested;
    var totalValueNow = (accountNow.Stocks + accountNow.FrozenStocks) * currentPrice + accountNow.Balance + accountNow.FrozenBalance;
    LogStatus('Account Value Now:' + totalValueNow + '\n' + 'Count:',investCount,'  Money:', totalMoneyInvested, 'Stock:', totalStockInvested, 'Average:', averagePrice,'Profit:',profit);
    LogProfit(profit);

    return moneyToInvestThisTime;
}

function onTick(investCount) {
    var currentPrice = GetCurrentPrice();
    Log('Current Price', currentPrice);

    var moneyToInvestThisTime = CaculateMoneyToInvest(currentPrice,investCount);
    var stockToInvestThisTime = 0;
    if(moneyToInvestThisTime > 0){ //Buy
        stockToInvestThisTime = AdjustFloat(moneyToInvestThisTime / (currentPrice + SlidePrice));
    }else{ //Sell
        stockToInvestThisTime = AdjustFloat(moneyToInvestThisTime / (currentPrice - SlidePrice));
    }

    var minPrice = exchange.GetMinPrice();
    if(Math.abs(moneyToInvestThisTime) < minPrice){
        Log('Invest Less Than MinPrice:', minPrice);
        return;
    }

    var minStock = exchange.GetMinStock();
    if(Math.abs(stockToInvestThisTime) < minStock){
        Log('Invest Less Than MinStock:',minStock);
        return;
    }

    var account = GetAccount();
    if(stockToInvestThisTime > 0){ //Buy
        if(account.Balance < moneyToInvestThisTime){
            Log('Money not Enough.#ff0000@');
            return;
        }
    }else{ //Sell
        if(account.Stocks < Math.abs(stockToInvestThisTime)){
            Log('Stock not Enough.#ff0000@');
            return;
        }
    }

    var orderID = -1;
    if(stockToInvestThisTime > 0){ //Buy
        Log('Buy Stock:',stockToInvestThisTime);
        orderID = exchange.Buy(currentPrice + SlidePrice,stockToInvestThisTime);
    }

    if(stockToInvestThisTime < 0){ //Sell
        Log('Sell Stock:',Math.abs(stockToInvestThisTime));
        orderID = exchange.Sell(currentPrice - SlidePrice,Math.abs(stockToInvestThisTime));
    }


}

function main() {
    //exchange.IO("websocket");
    initAccount = _G('InitAccount');
    if(initAccount === null){
        initAccount = GetAccount();
        _G('InitAccount',initAccount);
        Log('Set Init account.');
        Log(exchange.GetName(), exchange.GetCurrency(), initAccount);
    }
    else{
        Log('Read Init Account:', initAccount);
    }

    startTime = _G('StartTime');
    if(startTime === null){
        startTime = new Date().getTime();
        _G('StartTime',startTime);
        Log('Set Start Time:', startTime);
    }else{
        Log('Read Start Time',new Date().setTime(startTime));
    }

    var investCount = _G('InvestCount' );
    if(investCount === null){
        investCount = 1;
        Log('Set Invest Starting from Count 1.');
    }
    else{
        Log('Invest Continuing from:', investCount);
    }

    moneyDeposit = _G('MoneyDeposit');
    if(moneyDeposit === null){
        moneyDeposit = 0;
        Log('Set Money Deposit 0.');
    }
    else{
        Log('Read Money Deposit:', moneyDeposit);
    }

    stockDeposit = _G('StockDeposit');
    if(stockDeposit === null){
        stockDeposit = 0;
        Log('Set Stock Deposit 0.');
    }
    else{
        Log('Read Stock Deposit:', stockDeposit);
    }

    while (true) {
        ProcessCommand();
        if (!pause) {
            Log('=================================================');
            Log('Invest Count', investCount);
            onTick(investCount);
            investCount += 1;
            _G('InvestCount',investCount);
        }
        Sleep(InvestInternal * 1000 * 60);
    }
}

function onexit(){
    _G('MoneyDeposit',moneyDeposit);
    _G('StockDeposit', stockDeposit);

    Log('Robot Stopped!#ff0000@');
}

متعلقہ

مزید

لنگڑاکیا آپ اب بھی دوڑ رہے ہیں؟

شوان شوانشکریہ شیئر کرنے کے لیے۔ بہت اچھا۔ امید ہے کہ جاری رکھیں گے۔

ننگ ڈکشیئر کرنے کا شکریہ

لیزاکیا آپ کے پاس کوڈ دیکھنے کے لیے کوئی مدد گار ہے؟

صفرشکریہ شیئر کرنے کے لئے ، سرمایہ کاری کرنا ایک طویل مدتی سرمایہ کاری کے مترادف ہے جس کا وزن وقت پر ہوتا ہے ، اور یہ ایک قابل اعتماد سرمایہ کاری کی حکمت عملی ہے!