avatar of 发明者量化-小小梦 发明者量化-小小梦
پر توجہ دیں نجی پیغام
4
پر توجہ دیں
1271
پیروکار

مقداری سفر FMZ سے شروع ہوتا ہے۔

میں تخلیق کیا: 2025-04-18 09:31:42, تازہ کاری: 2025-04-26 11:50:01
comments   0
hits   941

مقداری سفر FMZ سے شروع ہوتا ہے۔

تعارف

کیا آپ نے کبھی سوچا ہے کہ آپ آسانی سے مقداری تجارت کے ساتھ شروع کر سکتے ہیں اور فریم ورک بنانے، UI کو ڈیزائن کرنے، اور مختلف ڈیزائن کی تفصیلات اور میکانزم خود بنانے کے لیے کوڈ لکھنے کے لیے رات بھر بیٹھے بغیر فوراً شروع کر سکتے ہیں؟ FMZ مقداری پلیٹ فارم پر سب کچھ ممکن ہو جاتا ہے۔ آپ کو ایک جدید پروگرامنگ پس منظر کی ضرورت نہیں ہے، اور نہ ہی آپ کو پیچیدہ تعیناتی کے عمل کے بارے میں فکر کرنے کی ضرورت ہے - آپ کو صرف ایک کمپیوٹر اور ایک اکاؤنٹ کی ضرورت ہے تاکہ آپ اپنے “کہیں بھی جائیں” مقداری سفر شروع کریں۔ یہ مضمون آپ کو شروع سے لے جائے گا، فوری طور پر FMZ کے ساتھ شروع کریں، خودکار ٹریڈنگ کے سحر کا تجربہ کریں، اور مارکیٹ کی تال میں مہارت حاصل کرنے کے لیے ڈیٹا اور حکمت عملیوں کا استعمال کریں۔ چاہے آپ ابتدائی ہیں یا تجربہ کار کارکردگی کو بہتر بنانے کے خواہاں ہیں، یہ سفر ایک کوشش کے قابل ہے۔

مقداری تجارت شروع کرنے والوں کی الجھن

میں اکثر پلیٹ فارم کے ابتدائی افراد کے ساتھ بات چیت اور بات چیت کرتا ہوں۔ مقداری تجارت کے آغاز کرنے والے عموماً مکمل ڈیزائن کے عمل سے الجھ جاتے ہیں۔ جب میرے پاس ٹریڈنگ آئیڈیاز ہوتے ہیں، تو میں اکثر نہیں جانتا ہوں کہ کہاں سے شروع کروں اور مغلوب ہوں۔

کے بارے میں الجھن:

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

آئیے مل کر مندرجہ بالا الجھن کو حل کریں۔

ڈیزائن کی وضاحت

مقداری تجارت کی دنیا میں، حکمت عملی کا ڈیزائن اکثر تلاش کا سفر ہوتا ہے جس کا کوئی اختتام نہیں۔ ہو سکتا ہے آپ نے اشارے لکھنے کی کوشش کی ہو، یا خرید و فروخت کے سگنلز پر آنکھیں بند کر کے عمل کرنے کی کوشش کی ہو، لیکن جو واقعی بہت دور جا سکتے ہیں وہ حکمت عملی کے نظام ہیں جو “مرئی، ایڈجسٹ اور مستحکم” ہو سکتے ہیں۔ FMZ مقداری پلیٹ فارم کی بنیاد پر، آپ کو “وقت پر جانے” کا عملی تجربہ حاصل ہو سکتا ہے۔ ایک سادہ حکمت عملی بنائیں، پیرامیٹر سیٹنگ، چارٹ ڈسپلے سے لے کر انٹرایکٹو فنکشنز اور نفع و نقصان کے حساب کتاب تک، حکمت عملی کے ڈیزائن کی ضروریات کو پوری طرح پورا کرنے کے لیے۔

حکمت عملی کا آئیڈیا اے ٹی آر، قدم بہ قدم گرڈ پوزیشن بلڈنگ لاجک (لمبی اور مختصر دو طرفہ)، اے ٹی آر ایڈاپٹیو اتار چڑھاؤ کیلکولیشن، اور پوزیشن لیکویڈیشن منطق (جب مارکیٹ مرکزی محور کی طرف پلٹ جاتی ہے) پر مبنی ایک قدم بہ قدم پوزیشن بڑھانے کی حکمت عملی ہے۔

یہ حکمت عملی مندرجہ ذیل ڈیزائن کی ضروریات پر مبنی ہے:

مختلف سطحوں پر قیمتوں کی کامیابیوں کے مطابق پوزیشنز اور قریبی پوزیشنز شامل کریں۔

پوزیشنوں کے بتدریج اضافے کو کنٹرول کرنے کے لیے دو صفیں ترتیب دیں۔

var arrUp = null 
var arrDown = null 

ہر بار جب آپ پوزیشن شامل کرتے ہیں، پوزیشن کی معلومات کو صف میں دھکیل دیا جاتا ہے، جس سے پوزیشن کو کنٹرول کرنا اور حکمت عملی کے ریئل ٹائم انٹرفیس پر ڈیٹا ڈسپلے کرنا آسان ہوجاتا ہے۔

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

            if (close > up && i >= arrUp.length && !isPaused) {
                var id = exchange.CreateOrder(symbol, "sell", -1, tradeAmount)
                if (!id) {
                    Log("下单失败")
                    continue
                }
                arrUp.push({"symbol": symbol, "ratio": (i + 1), "amount": tradeAmount, "price": close})
                _G("arrUp", arrUp)
                arrSignal.push([r[r.length - 1].Time, "short", close, tradeAmount])
                Log([r[r.length - 1].Time, "short", close, tradeAmount], "@")
            } else if (close < down && i >= arrDown.length && !isPaused) {
                var id = exchange.CreateOrder(symbol, "buy", -1, tradeAmount)
                if (!id) {
                    Log("下单失败")
                    continue 
                }
                arrDown.push({"symbol": symbol, "ratio": (i + 1), "amount": tradeAmount, "price": close})
                _G("arrDown", arrDown)
                arrSignal.push([r[r.length - 1].Time, "long", close, tradeAmount])
                Log([r[r.length - 1].Time, "long", close, tradeAmount], "@")
            } else if (((arrUp.length > 0 && close < mid) || (arrDown.length > 0 && close > mid)) && !isPaused) {
                clear(pos, r)
            }

انوینٹری کو صاف کریں اور اسے ہینڈل کرنے کے لیے ایک فنکشن استعمال کریں۔ ہر بار جب انوینٹری کو صاف کیا جاتا ہے تو کچھ ڈیٹا ڈھانچے کو دوبارہ ترتیب دینے کی ضرورت ہوتی ہے، لہذا کلیئرنگ فنکشن کو انٹرایکٹو ماڈیول میں دوبارہ استعمال کے لیے فنکشن میں سمیٹنے کی ضرورت ہے۔

function clear(positions, r) {
    var close = r[r.length - 1].Close
    for (var p of positions) {
        if (p.Type == PD_LONG) {
            var id = exchange.CreateOrder(symbol, "closebuy", -1, p.Amount)
            if (!id) {
                Log("下单失败")
                continue 
            }
            arrSignal.push([r[r.length - 1].Time, "closelong", close, p.Amount])
            Log([r[r.length - 1].Time, "closelong", close, p.Amount], "@")
        } else if (p.Type == PD_SHORT) {
            var id = exchange.CreateOrder(symbol, "closesell", -1, p.Amount)
            if (!id) {
                Log("下单失败")
                continue 
            }
            arrSignal.push([r[r.length - 1].Time, "closeshort", close, p.Amount])
            Log([r[r.length - 1].Time, "closeshort", close, p.Amount], "@")
        }
    }
    arrUp = []
    arrDown = []
    _G("arrUp", arrUp)
    _G("arrDown", arrDown)
    var profit = calcProfit()
    LogProfit(profit)
}

مرحلہ وار پوزیشن کی تقسیم

اسے متعدد سطحوں میں تقسیم کیا گیا ہے، اور زیادہ سے زیادہ سطح ہے: maxRatio۔ ہر درجہ ایک مختلف قیمت کی حد کا حساب لگاتا ہے۔

        for (var i = 0; i < maxRatio; i++) {                        
            var up = open + atr[atr.length - 1] * (i + 1)
            var mid = open
            var down = open - atr[atr.length - 1] * (i + 1)
            atrs.push([open, (i + 1), atr])
            
            var tradeAmount = baseAmount * Math.pow(2, i)
            if (isAmountForUSDT) {
                tradeAmount = tradeAmount * 1.05 / close
            }
            tradeAmount = _N(tradeAmount, amountPrecision)

            var balance = acc.Balance
            if (balance - initAcc.Equity * reserve < tradeAmount * close) {
                continue 
            }
        // ...
        }

متحرک پیرامیٹر ایڈجسٹمنٹ، موقوف آپریشن، فوری کلیئرنس اور دیگر تعاملات کی حمایت کریں۔

انٹرایکٹو فنکشنز، واضح انوینٹری، توقف، غیر موقوف، پیرامیٹرز میں ترمیم، وغیرہ ڈیزائن کریں۔ FMZ پر تعاملات کو ڈیزائن کرنا بہت آسان ہے، اور پلیٹ فارم بہت سے انٹرایکٹو کنٹرول فراہم کرتا ہے۔ ہمیں حکمت عملی میں صرف انٹرایکٹو کنٹرولز شامل کرنے کی ضرورت ہے، اور پھر حکمت عملی کوڈ میں پیغامات موصول ہونے پر مختلف شناخت اور پروسیسنگ کوڈز لکھنے کی ضرورت ہے۔

        var cmd = GetCommand()
        if (cmd) {
            Log("交互指令:", cmd)
            var arrCmd = cmd.split(":")
            if (arrCmd.length == 2) {
                var strCmd = arrCmd[0]
                var param = parseFloat(arrCmd[1])
                if (strCmd == "atrPeriod") {
                    atrPeriod = param
                    Log("修改ATR参数:", atrPeriod)
                }
            } else {
                if (cmd == "isPaused" && !isPaused) {
                    isPaused = true
                    Log("暂停交易")
                } else if (cmd == "isPaused" && isPaused) {
                    isPaused = false 
                    Log("取消暂停交易")
                } else if (cmd == "clearAndPaused") {
                    clear(pos, r)
                    isPaused = true
                    Log("清仓、暂停交易")
                }
            }
        }

کھولنے / بند کرنے کی یاد دہانی کے طریقہ کار کے ساتھ

حکمت عملی کو کھولتے یا بند کرتے وقت، آپ آسانی سے پیغامات کو آگے بڑھا سکتے ہیں۔میل، ایف ایم زیڈ اے پی پی، تھرڈ پارٹی انٹرفیس وغیرہ۔

Log([r[r.length - 1].Time, "long", close, tradeAmount], "@")  // 消息推送

پش اطلاعات موصول کریں (FMZ APP اور دیگر ایپس کو بھی پش اطلاعات موصول ہوں گی):

مقداری سفر FMZ سے شروع ہوتا ہے۔

حقیقی وقت کے اعدادوشمار اور منافع اور عہدوں کا ڈسپلے

نفع اور نقصان کا حساب لگانے کے فنکشن کو ہر بار جب کوئی پوزیشن بند کی جاتی ہے تو منافع اور نقصان کا حساب لگاتا ہے اور منافع اور نقصان کے وکر کو آؤٹ پٹ کرتا ہے۔

function calcProfit() {
    var initAcc = _G("initAcc")
    var nowAcc = _C(exchange.GetAccount)
    var profit = nowAcc.Equity - initAcc.Equity
    return profit
}

ریاستی استقامت کی حمایت کریں (بریک پوائنٹ ریکوری)

FMZ استعمال کریں۔_G()فنکشن، حکمت عملی پیش رفت کی وصولی کے طریقہ کار کو ڈیزائن کرنا آسان ہے۔

    if (isReset) {
        _G(null)
        LogProfitReset()
        LogReset(1)
        c.reset()
    }

    arrUp = _G("arrUp")
    if (!arrUp) {
        arrUp = []
        _G("arrUp", arrUp)
    }

    arrDown = _G("arrDown")
    if (!arrDown) {
        arrDown = []
        _G("arrDown", arrDown)
    }

رقم کے حساب سے آرڈر دینے کا ڈیزائن

تجارتی معاہدوں کے دوران، آرڈر انٹرفیس میں آرڈر کی مقدار معاہدوں کی تعداد ہوتی ہے، اس لیے صارفین اکثر پوچھتے ہیں کہ ہمارے نمبر میں آرڈر کیسے دیا جائے:

            if (isAmountForUSDT) {
                tradeAmount = tradeAmount * 1.05 / close
            }
            tradeAmount = _N(tradeAmount, amountPrecision)

یہ حقیقت میں بہت آسان ہے، بس رقم کو قیمت سے تقسیم کریں۔

ریزرو تناسب ڈیزائن

اگر آپ خطرے کے کنٹرول کے طور پر اپنے اکاؤنٹ میں فنڈز کی ایک مخصوص رقم ہمیشہ محفوظ رکھنا چاہتے ہیں، تو آپ اس آسان طریقہ کار کو ڈیزائن کر سکتے ہیں۔

            var balance = acc.Balance
            if (balance - initAcc.Equity * reserve < tradeAmount * close) {
                continue 
            }

ویژولائزیشن چارٹ

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

        if (isShowPlot) {
            r.forEach(function(bar, index) {
                c.begin(bar)
                for (var i in atrs) {
                    var arr = atrs[i]
                    var up = arr[0] + arr[2][index] * arr[1]
                    var mid = arr[0]
                    var down = arr[0] - arr[2][index] * arr[1]
                    c.plot(up, 'up_' + (i + 1))
                    c.plot(mid, 'mid_' + (i + 1))
                    c.plot(down, 'down_' + (i + 1))
                }

                for (var signal of arrSignal) {
                    if (signal[0] == bar.Time) {
                        c.signal(signal[1], signal[2], signal[3])
                    }
                }

                c.close()
            })
        }

        // ...

        var orderTbl = {"type": "table", "title": "order", "cols": ["symbol", "type", "ratio", "price", "amount"], "rows": []}
        for (var i = arrUp.length - 1; i >= 0; i--) {
            var order = arrUp[i]
            orderTbl["rows"].push([order["symbol"], "short", order["ratio"], order["price"], order["amount"]])
        }
        for (var i = 0; i < arrDown.length; i++) {
            var order = arrDown[i]
            orderTbl["rows"].push([order["symbol"], "long", order["ratio"], order["price"], order["amount"]])
        }

        var posTbl = {"type": "table", "title": "pos", "cols": ["symbol", "type", "price", "amount"], "rows": []}
        for (var i = 0; i < pos.length; i++) {
            var p = pos[i]
            posTbl["rows"].push([p.Symbol, p.Type == PD_LONG ? "long" : "short", p.Price, p.Amount])
        }

        LogStatus(_D(), "初始权益:" + initAcc.Equity, ", 当前权益:" + acc.Equity, ", 运行状态:" + (isPaused ? "暂停交易" : "运行中"), 
            "\n`" + JSON.stringify(orderTbl) + "`\n", "`" + JSON.stringify(posTbl) + "`")

آخر میں، کوڈ کی 200 سے زیادہ لائنوں نے ایک مکمل حکمت عملی کو نافذ کیا جسے حقیقی تجارت میں بیک ٹیسٹ اور لاگو کیا جا سکتا ہے۔ ہم نے اپنا حتمی مقصد حاصل کر لیا ہے: FMZ پر ایک ہمہ جہت مقداری تجارتی نظام بنانا جو “تصویر + تعامل + آٹومیشن” کو یکجا کرتا ہے۔

حکمت عملی کے آپریشن کا اثر اور بیک ٹیسٹنگ کے نتائج

بیک ٹیسٹنگ صرف حوالہ کے لیے ہے۔ وہ لوگ جو مقداری تجارت کرتے ہیں وہ جانتے ہیں کہ “بیک ٹیسٹنگ” اصل منظر نامے کی 100% نقل نہیں کر سکتی۔ بیک ٹیسٹنگ کا بنیادی مقصد حکمت عملی کی منطق کو جانچنا، حکمت عملی کی مضبوطی کو جانچنا اور بنیادی افعال کی جانچ کرنا ہے۔

مقداری سفر FMZ سے شروع ہوتا ہے۔

مقداری سفر FMZ سے شروع ہوتا ہے۔

حکمت عملی کوڈ، پیرامیٹر ڈیزائن

پیرامیٹر ڈیزائن:

مقداری سفر FMZ سے شروع ہوتا ہے۔

تعامل ڈیزائن:

مقداری سفر FMZ سے شروع ہوتا ہے۔

حکمت عملی کا ماخذ کوڈ:

/*backtest
start: 2024-04-27 18:40:00
end: 2025-04-10 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":100}]
*/

var atrPeriod = 20
var arrUp = null 
var arrDown = null 
var arrSignal = []

function calcProfit() {
    var initAcc = _G("initAcc")
    var nowAcc = _C(exchange.GetAccount)
    var profit = nowAcc.Equity - initAcc.Equity
    return profit
}

function clear(positions, r) {
    var close = r[r.length - 1].Close
    for (var p of positions) {
        if (p.Type == PD_LONG) {
            var id = exchange.CreateOrder(symbol, "closebuy", -1, p.Amount)
            if (!id) {
                Log("下单失败")
                continue 
            }
            arrSignal.push([r[r.length - 1].Time, "closelong", close, p.Amount])
            Log([r[r.length - 1].Time, "closelong", close, p.Amount], "@")
        } else if (p.Type == PD_SHORT) {
            var id = exchange.CreateOrder(symbol, "closesell", -1, p.Amount)
            if (!id) {
                Log("下单失败")
                continue 
            }
            arrSignal.push([r[r.length - 1].Time, "closeshort", close, p.Amount])
            Log([r[r.length - 1].Time, "closeshort", close, p.Amount], "@")
        }
    }
    arrUp = []
    arrDown = []
    _G("arrUp", arrUp)
    _G("arrDown", arrDown)
    var profit = calcProfit()
    LogProfit(profit)
}

function main() {
    var symbolInfo = symbol.split(".")
    if (symbolInfo.length != 2) {
        throw "error symbol:" + symbol
    } else {
        exchange.SetCurrency(symbolInfo[0])
        exchange.SetContractType(symbolInfo[1])
    }

    exchange.SetPrecision(pricePrecision, amountPrecision)

    let c = KLineChart({
        overlay: true
    }) 

    if (isReset) {
        _G(null)
        LogProfitReset()
        LogReset(1)
        c.reset()
    }

    arrUp = _G("arrUp")
    if (!arrUp) {
        arrUp = []
        _G("arrUp", arrUp)
    }

    arrDown = _G("arrDown")
    if (!arrDown) {
        arrDown = []
        _G("arrDown", arrDown)
    }

    var initAcc = _G("initAcc")
    if (!initAcc) {
        initAcc = _C(exchange.GetAccount)
        _G("initAcc", initAcc)
    }

    var isPaused = false     
    while (true) {
        var atrs = []        
        var r = _C(exchange.GetRecords, symbol)
        var pos = _C(exchange.GetPositions, symbol)
        var acc = _C(exchange.GetAccount)
        var open = r[r.length - 1].Open
        var close = r[r.length - 1].Close
        var atr = TA.ATR(r, atrPeriod)
        
        for (var i = 0; i < maxRatio; i++) {                        
            var up = open + atr[atr.length - 1] * (i + 1)
            var mid = open
            var down = open - atr[atr.length - 1] * (i + 1)
            atrs.push([open, (i + 1), atr])
            
            var tradeAmount = baseAmount * Math.pow(2, i)
            if (isAmountForUSDT) {
                tradeAmount = tradeAmount * 1.05 / close
            }
            tradeAmount = _N(tradeAmount, amountPrecision)

            var balance = acc.Balance
            if (balance - initAcc.Equity * reserve < tradeAmount * close) {
                continue 
            }

            if (close > up && i >= arrUp.length && !isPaused) {
                var id = exchange.CreateOrder(symbol, "sell", -1, tradeAmount)
                if (!id) {
                    Log("下单失败")
                    continue
                }
                arrUp.push({"symbol": symbol, "ratio": (i + 1), "amount": tradeAmount, "price": close})
                _G("arrUp", arrUp)
                arrSignal.push([r[r.length - 1].Time, "short", close, tradeAmount])
                Log([r[r.length - 1].Time, "short", close, tradeAmount], "@")
            } else if (close < down && i >= arrDown.length && !isPaused) {
                var id = exchange.CreateOrder(symbol, "buy", -1, tradeAmount)
                if (!id) {
                    Log("下单失败")
                    continue 
                }
                arrDown.push({"symbol": symbol, "ratio": (i + 1), "amount": tradeAmount, "price": close})
                _G("arrDown", arrDown)
                arrSignal.push([r[r.length - 1].Time, "long", close, tradeAmount])
                Log([r[r.length - 1].Time, "long", close, tradeAmount], "@")
            } else if (((arrUp.length > 0 && close < mid) || (arrDown.length > 0 && close > mid)) && !isPaused) {
                clear(pos, r)
            }
        }

        if (isShowPlot) {
            r.forEach(function(bar, index) {
                c.begin(bar)
                for (var i in atrs) {
                    var arr = atrs[i]
                    var up = arr[0] + arr[2][index] * arr[1]
                    var mid = arr[0]
                    var down = arr[0] - arr[2][index] * arr[1]
                    c.plot(up, 'up_' + (i + 1))
                    c.plot(mid, 'mid_' + (i + 1))
                    c.plot(down, 'down_' + (i + 1))
                }

                for (var signal of arrSignal) {
                    if (signal[0] == bar.Time) {
                        c.signal(signal[1], signal[2], signal[3])
                    }
                }

                c.close()
            })
        }

        var cmd = GetCommand()
        if (cmd) {
            Log("交互指令:", cmd)
            var arrCmd = cmd.split(":")
            if (arrCmd.length == 2) {
                var strCmd = arrCmd[0]
                var param = parseFloat(arrCmd[1])
                if (strCmd == "atrPeriod") {
                    atrPeriod = param
                    Log("修改ATR参数:", atrPeriod)
                }
            } else {
                if (cmd == "isPaused" && !isPaused) {
                    isPaused = true
                    Log("暂停交易")
                } else if (cmd == "isPaused" && isPaused) {
                    isPaused = false 
                    Log("取消暂停交易")
                } else if (cmd == "clearAndPaused") {
                    clear(pos, r)
                    isPaused = true
                    Log("清仓、暂停交易")
                }
            }
        }

        var orderTbl = {"type": "table", "title": "order", "cols": ["symbol", "type", "ratio", "price", "amount"], "rows": []}
        for (var i = arrUp.length - 1; i >= 0; i--) {
            var order = arrUp[i]
            orderTbl["rows"].push([order["symbol"], "short", order["ratio"], order["price"], order["amount"]])
        }
        for (var i = 0; i < arrDown.length; i++) {
            var order = arrDown[i]
            orderTbl["rows"].push([order["symbol"], "long", order["ratio"], order["price"], order["amount"]])
        }

        var posTbl = {"type": "table", "title": "pos", "cols": ["symbol", "type", "price", "amount"], "rows": []}
        for (var i = 0; i < pos.length; i++) {
            var p = pos[i]
            posTbl["rows"].push([p.Symbol, p.Type == PD_LONG ? "long" : "short", p.Price, p.Amount])
        }

        LogStatus(_D(), "初始权益:" + initAcc.Equity, ", 当前权益:" + acc.Equity, ", 运行状态:" + (isPaused ? "暂停交易" : "运行中"), 
            "\n`" + JSON.stringify(orderTbl) + "`\n", "`" + JSON.stringify(posTbl) + "`")
        Sleep(5000)
    }
}

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

حقیقی تجارت ایک طویل سفر ہے۔

مقداری سفر FMZ سے شروع ہوتا ہے۔

جی پی ٹی سے ایک شاعرانہ خلاصہ:

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

خلاصہ: حکمت عملی کی ترقی سے نظام کی سوچ تک

یہ مضمون نہ صرف ایک مکمل حکمت عملی متعارف کراتا ہے بلکہ اس سے بھی اہم بات یہ ہے کہ ایک “منظم” حکمت عملی کی ترقی کا خیال۔ حکمت عملی کے ڈیزائن، اسٹیٹس مینجمنٹ، رسک کنٹرول، چارٹ کے تعامل سے لے کر حقیقی نفاذ تک، یہ ٹیمپلیٹس کا ایک سیٹ ہے جسے بار بار استعمال کیا جا سکتا ہے، اور یہ پیشہ ورانہ کاری کی طرف بڑھنے کے لیے مقداری تجارت کا واحد راستہ بھی ہے۔

مجھے امید ہے کہ آپ FMZ پلیٹ فارم کو اپنا خودکار ٹریڈنگ سسٹم بنانے کے لیے استعمال کر سکتے ہیں تاکہ آپ کبھی بھی کسی سگنل سے محروم نہ ہوں۔

آپ کے پڑھنے اور تعاون کے لیے آپ کا شکریہ۔ حکمت عملی صرف تدریسی مقاصد کے لیے ہے۔ براہ کرم اسے حقیقی تجارت میں احتیاط کے ساتھ استعمال کریں۔