ডিজিটাল মুদ্রা ফিউচার ক্লাস মার্টিন কৌশল নকশা

লেখক:ছোট্ট স্বপ্ন, তৈরিঃ 2021-07-02 14:35:34, আপডেটঃ 2023-09-21 21:09:56

img

ডিজিটাল মুদ্রা ফিউচার ক্লাস মার্টিন কৌশল নকশা

সাম্প্রতিক সময়ে এফএমজেড অফিসিয়াল গ্রুপে মার্টিন টাইপ কৌশল সম্পর্কে অনেক আলোচনা হয়েছে এবং প্ল্যাটফর্মে ডিজিটাল মুদ্রা চুক্তি সম্পর্কে খুব কম মার্টিন কৌশল রয়েছে। সুতরাং, এই সুযোগটি ব্যবহার করে একটি সহজ ডিজিটাল মুদ্রা ফিউচার মার্টিন কৌশল ডিজাইন করা হয়েছে। কেন মার্টিন কৌশল বলা হয়, কারণ সম্ভাব্য ঝুঁকি সত্যিই ছোট নয়, এটি মার্টিন কৌশল অনুসারে সম্পূর্ণরূপে ডিজাইন করা হয়নি। তবে এই ধরণের কৌশলগুলি এখনও বেশ ঝুঁকিপূর্ণ এবং মার্টিন টাইপ কৌশল পরামিতি সেটিং সম্পর্কিত এবং ঝুঁকি সুদ, ঝুঁকির জন্য সর্বদা উপেক্ষা করা যায় না।

এই নিবন্ধটি মূলত মার্টিন টাইপ কৌশলগুলির নকশার মাধ্যমে শেখার বিষয়ে আলোচনা করেছে, কৌশলগত চিন্তাভাবনা নিজেই স্পষ্ট, আমরা এফএমজেড ব্যবহারকারী হিসাবে কৌশলগত নকশার দিকে আরও বেশি মনোযোগ দিই।

সামগ্রিক অধিকার লাভ

ডিজিটাল মুদ্রার ফিউচার কৌশল ডিজাইন করার সময় প্রায়শই সামগ্রিক অধিকার লাভের তথ্য ব্যবহার করা হয়। কারণ আয় গণনা করা হয়, বিশেষত যখন ভাসমান আয় গণনা করা প্রয়োজন হয়। কারণ হোল্ডিংটি গ্যারান্টিযুক্ত, হোল্ডিংটিও রয়েছে। এই সময়ে এফএমজেড প্ল্যাটফর্মের এপিআই ইন্টারফেসটি কল করা হয়।exchange.GetAccount()এটিতে উপলব্ধ সম্পদ এবং ফ্রিজড সম্পদের তালিকা রয়েছে। প্রকৃতপক্ষে, বেশিরভাগ ডিজিটাল মুদ্রা ফিউচার এক্সচেঞ্জগুলি এই সামগ্রিক স্বার্থের ডেটা সরবরাহ করে, তবে এফএমজেডে এই বৈশিষ্ট্যটি অভিন্নভাবে প্যাকেজ করা হয় না।

সুতরাং, আমরা বিভিন্ন এক্সচেঞ্জের উপর ভিত্তি করে বিভিন্ন ডিজাইন ফাংশন দিয়ে এই তথ্য সংগ্রহ করিঃ

// OKEX V5 获取总权益
function getTotalEquity_OKEX_V5() {
    var totalEquity = null 
    var ret = exchange.IO("api", "GET", "/api/v5/account/balance", "ccy=USDT")
    if (ret) {
        try {
            totalEquity = parseFloat(ret.data[0].details[0].eq)
        } catch(e) {
            Log("获取账户总权益失败!")
            return null
        }
    }
    return totalEquity
}

// 币安期货
function getTotalEquity_Binance() {
    var totalEquity = null 
    var ret = exchange.GetAccount()
    if (ret) {
        try {
            totalEquity = parseFloat(ret.Info.totalWalletBalance)
        } catch(e) {
            Log("获取账户总权益失败!")
            return null
        }
    }
    return totalEquity
}

কোডtotalEquityএবং তারপর আমরা একটি ফাংশন লিখব যেটি ইনপুট কল করবে এবং এক্সচেঞ্জের নামের উপর ভিত্তি করে একটি নির্দিষ্ট ফাংশন কল করবে।

function getTotalEquity() {
    var exName = exchange.GetName()
    if (exName == "Futures_OKCoin") {
        return getTotalEquity_OKEX_V5()
    } else if (exName == "Futures_Binance") {
        return getTotalEquity_Binance()
    } else {
        throw "不支持该交易所"
    }
}

কিছু সহায়ক ফাংশন ডিজাইন করুন

প্রধান ফাংশন, প্রধান লজিক ডিজাইন করার আগে, আমাদের কিছু প্রস্তুতি নিতে হবে এবং কিছু সহায়ক ফাংশন ডিজাইন করতে হবে।

  • সকল বর্তমান আপলোড বাতিল করুন

    function cancelAll() {
        while (1) {
            var orders = _C(exchange.GetOrders)
            if (orders.length == 0) {
                break
            }
            for (var i = 0 ; i < orders.length ; i++) {
                exchange.CancelOrder(orders[i].Id, orders[i])
                Sleep(500)
            }
            Sleep(500)
        }
    }
    

    এই ফাংশনটি বিশ্বাস করি যারা প্রায়শই এফএমজেড কৌশল স্কয়ারে কৌশল প্যাটার্ন কোডটি দেখে তাদের কাছে পরিচিত, অনেক কৌশল একই নকশা ব্যবহার করেছে। এর কাজটি হ'ল বর্তমান হ্যাং তালিকাটি অর্জন করা এবং একের পর এক বাতিল করা।

  • ফিউচারগুলির নিম্নোক্ত অপারেশন

    function trade(distance, price, amount) {
        var tradeFunc = null 
        if (distance == "buy") {
            tradeFunc = exchange.Buy
        } else if (distance == "sell") {
            tradeFunc = exchange.Sell
        } else if (distance == "closebuy") {
            tradeFunc = exchange.Sell
        } else {
            tradeFunc = exchange.Buy
        }
        exchange.SetDirection(distance)
        return tradeFunc(price, amount)
    }
    
    function openLong(price, amount) {
        return trade("buy", price, amount)
    }
    
    function openShort(price, amount) {
        return trade("sell", price, amount)
    }
    
    function coverLong(price, amount) {
        return trade("closebuy", price, amount)
    }
    
    function coverShort(price, amount) {
        return trade("closesell", price, amount)
    }
    

    ফিউচার ট্রেডিংয়ের চারটি দিক রয়েছেঃ ওপেন লং, ওপেন শর্ট, কভার লং, কভার শর্ট। তাই আমরা চারটি অর্ডার ফাংশন ডিজাইন করেছি যা এই ক্রিয়াকলাপগুলির সাথে সামঞ্জস্যপূর্ণ। যদি কেবল অর্ডারটি বিবেচনা করা হয় তবে কয়েকটি প্রয়োজনীয় কারণ রয়েছেঃ দিক, অর্ডার মূল্য, অর্ডার পরিমাণ। তাই আমরা একটি প্রকল্পও তৈরি করেছি যার নামঃtradeফাংশন যখন方向(distance)下单价格(price)下单量(amount)আমি মনে করি, এটা খুবই গুরুত্বপূর্ণ যে, আমরা সবাই সঠিক সময়ে কাজ করি। ওপেন লং, ওপেন শর্ট, কভার লং, কভার শর্ট এই ফাংশন কলগুলি শেষ পর্যন্তtradeএকটি ফাংশন একটি বাস্তব ফাংশন সম্পন্ন করে, অর্থাৎ একটি নির্ধারিত দিক, মূল্য, পরিমাণ অনুযায়ী ভবিষ্যৎ বিনিময় বিনিময় অর্ডার।

প্রধান ফাংশন

কৌশলগত ধারণাটি খুব সহজ, বর্তমান মূল্যের ভিত্তিতে একটি নির্দিষ্ট দূরত্বের জন্য বিক্রয় (খালি) বা ক্রয় (অধিক) অর্ডার স্থাপন করা হয়। একটি চুক্তি সম্পন্ন হওয়ার সাথে সাথে অবশিষ্ট সমস্ত অর্ডার বাতিল করা হয়, তারপরে ধারণকৃত মূল্যের ভিত্তিতে একটি নির্দিষ্ট দূরত্বে একটি নতুন স্থির অর্ডার স্থাপন করা হয়, আপডেটের পরে বর্তমান মূল্যের ভিত্তিতে একটি বাড়তি অর্ডার স্থাপন করা হয়, তবে অর্ডারযুক্ত অর্ডারগুলি ডাবল করে না।

  • প্রাথমিক কাজ যেহেতু আমরা অর্ডার লিঙ্ক করতে চাই, তাই আমরা দুটি গ্লোবাল ভেরিয়েবলের সাথে অর্ডার আইডি রেকর্ড করতে চাই।

    var buyOrderId = null
    var sellOrderId = null
    

    তারপর নীতি ইন্টারফেস প্যারামিটারে OKEX_V5 অ্যামুলেটরি ডিস্ক ব্যবহার করার বিকল্পটি ডিজাইন করা হয়েছে, তাই কোডে কিছু কাজ করা দরকারঃ

    var exName = exchange.GetName()    
    // 切换OKEX V5模拟盘
    if (isSimulate && exName == "Futures_OKCoin") {
        exchange.IO("simulate", true)
    }
    

    ইন্টারফেস প্যারামিটারে সমস্ত তথ্য পুনরায় ইনস্টল করার জন্য একটি বিকল্পও ডিজাইন করা হয়েছে, তাই কোডটিতেও এর অনুরূপ প্রক্রিয়া রয়েছেঃ

    if (isReset) {
        _G(null)
        LogReset(1)
        LogProfitReset()
        LogVacuum()
        Log("重置所有数据", "#FF0000")
    }
    

    আমরা কেবল চিরস্থায়ী চুক্তিতে দৌড়াতে পারি, তাই এখানে লেখা আছে, আমরা কেবল চিরস্থায়ী চুক্তিতে চলেছি।

    exchange.SetContractType("swap")
    

    তারপর আমরা অর্ডারের দামের নির্ভুলতা, অর্ডারের পরিমাণের নির্ভুলতা নিয়েও চিন্তা করি, যদি নির্ভুলতা ঠিকভাবে সেট না করা হয়, কৌশলগত গণনার সময় নির্ভুলতা হারিয়ে যায়, ডেটাতে প্রচুর সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক সংখ্যক

    exchange.SetPrecision(pricePrecision, amountPrecision)
    Log("设置精度", pricePrecision, amountPrecision)
    

    ডিজাইন করা সহজ ডেটা পুনরুদ্ধার

    if (totalEq == -1 && !IsVirtual()) {
        var recoverTotalEq = _G("totalEq")
        if (!recoverTotalEq) {
            var currTotalEq = getTotalEquity()
            if (currTotalEq) {
                totalEq = currTotalEq
                _G("totalEq", currTotalEq)
            } else {
                throw "获取初始权益失败"
            }
        } else {
            totalEq = recoverTotalEq
        }
    }
    

    যদি আপনি নীতিটি চালানোর সময় প্রাথমিক অ্যাকাউন্টের মোট অধিকার নির্ধারণ করতে চান তবে আপনি একটি পরামিতি সেট করতে পারেনtotalEqযদি এই প্যারামিটারটি -1 এ সেট করা হয়, তাহলে কৌশলটি সংরক্ষিত মোট সুবিধার ডেটা পড়বে, যদি সংরক্ষিত মোট সুবিধার ডেটা না থাকে, তবে বর্তমান পাঠ্য মোট সুবিধার সাথে কৌশলটি চালানোর অগ্রগতি হিসাবে প্রাথমিক মোট সুবিধার সাথে, তারপরে মোট সুবিধার বৃদ্ধি হ্রাস, মোট সুবিধার হ্রাস হ্রাস। যদি মোট সুবিধার ডেটা পড়া হয় তবে এই ডেটা ব্যবহার চালিয়ে যান।

  • মূল যুক্তি প্রাথমিক কাজ শেষ হওয়ার পরে, অবশেষে কৌশলটির মূল যৌক্তিকতার অংশটি আসে, যা আমি সহজেই ব্যাখ্যা করার জন্য সরাসরি কোডের মন্তব্যে লিখেছি।

      while (1) {                                  // 策略主要逻辑设计为一个死循环
          var ticker = _C(exchange.GetTicker)      // 首先读取当前行情信息,主要用到最新成交价
          var pos = _C(exchange.GetPosition)       // 读取当前持仓数据
          if (pos.length > 1) {                    // 判断持仓数据,由于这个策略的逻辑,是不太可能同时出现多空持仓的,所以发现同时出现多空持仓就抛出错误
              Log(pos)
              throw "同时有多空持仓"                  // 抛出错误,让策略停止
          }
          // 根据状态而定
          if (pos.length == 0) {                    // 根据持仓状态做出不同操作,pos.length == 0是当没有持仓时
              // 未持仓了,统计一次收益
              if (!IsVirtual()) {
                  var currTotalEq = getTotalEquity()
                  if (currTotalEq) {
                      LogProfit(currTotalEq - totalEq, "当前总权益:", currTotalEq)
                  }
              }
    
              buyOrderId = openLong(ticker.Last - targetProfit, amount)       // 挂开多仓的买单
              sellOrderId = openShort(ticker.Last + targetProfit, amount)     // 挂开空仓的卖单
          } else if (pos[0].Type == PD_LONG) {   // 有多头持仓,挂单位置、数量有所不同
              var n = 1
              var price = ticker.Last
              buyOrderId = openLong(price - targetProfit * n, amount)
              sellOrderId = coverLong(pos[0].Price + targetProfit, pos[0].Amount)
          } else if (pos[0].Type == PD_SHORT) {   // 有空头持仓,挂单位置、数量有所不同
              var n = 1
              var price = ticker.Last
              buyOrderId = coverShort(pos[0].Price - targetProfit, pos[0].Amount)
              sellOrderId = openShort(price + targetProfit * n, amount)
          }
    
          if (!sellOrderId || !buyOrderId) {   // 如果有一边挂单失败就取消所有挂单,重来
              cancelAll()
              buyOrderId = null 
              sellOrderId = null
              continue
          } 
    
          while (1) {  // 挂单完成,开始监控订单
              var isFindBuyId = false 
              var isFindSellId = false
              var orders = _C(exchange.GetOrders)
              for (var i = 0 ; i < orders.length ; i++) {
                  if (buyOrderId == orders[i].Id) {
                      isFindBuyId = true 
                  }
                  if (sellOrderId == orders[i].Id) {
                      isFindSellId = true 
                  }               
              }
              if (!isFindSellId && !isFindBuyId) {    // 检测到买卖单都成交了
                  cancelAll()
                  break
              } else if (!isFindBuyId) {   // 检测到买单成交
                  Log("买单成交")
                  cancelAll()
                  break
              } else if (!isFindSellId) {  // 检测到卖单成交
                  Log("卖单成交")
                  cancelAll()
                  break
              }
              LogStatus(_D())
              Sleep(3000)
          }
          Sleep(500)
      }
    

এই ছবিতে, আমি আমার নিজের সম্পর্কে কিছু কথা বলতে চাই।

পুনরায় পরীক্ষা

এদিকে, বাংলাদেশের বিভিন্ন রাজনৈতিক দলের নেতৃবৃন্দের মধ্যেও এ ধরনের আলোচনা হয়েছে।

img

img

আপনি দেখতে পাচ্ছেন, মার্টিনের মতো কৌশল এখনও ঝুঁকিপূর্ণ।

ওকেএক্স ভি 5 সিমুলেটেড ড্রাইভিং খেলুন

img

এই পাতাটি আলাপঃপ্রতিবন্ধী পাতা।https://www.fmz.com/strategy/294957

এই কৌশলটি মূলত শেখার জন্য, সত্যিকারের সিলভার সিকিউরিটি ~!


সম্পর্কিত

আরো

লিসা ২০২৩১মিনতি, আমি আপনাকে এই প্রশ্নটি করতে চাই। if (!isFindSellId &&!isFindBuyId) { // বিক্রয় ও ক্রয় সংক্রান্ত সমস্ত অর্ডার সনাক্ত করা হয়েছে যদি আপনি একটি অর্ডার সনাক্ত করার সময় একটি দ্রুত ইনপুট এবং একটি বিক্রয় আদেশের সাথে সাথে একটি ক্রয় এবং বিক্রয় অর্ডার সম্পন্ন করেন, তাহলে কি আপনি ভুল করবেন?

নিও১৮৯৮অন্যটি হল, চুক্তির মোডটি সম্পূর্ণ স্টক বা স্টক-এ-স্টক কীভাবে সেট করা হয়?

নিও১৮৯৮যদি চুক্তিটি খোলা থাকে, তাহলে কেন দ্বিগুণ চুক্তি করা হয়নি? কতবার বিক্রয় করা হয়েছে?

হালকা মেঘআমি এখন বুঝতে পারছি যে, আমি কি করতে পারি, আমি কি করতে পারি না। তারপর লিস্ট মনিটরিং শিখেছি, এবং তারপর একটি দ্বিপক্ষীয় মার্টিন লিখেছি। দুই দিন, 580 লাইন লিখেছি। [মুষ্টি]

hk পরিমাণ/upload/asset/1a9ebf427c4e2cbf1c327.png মিথ্যা সত্যের বিনিময়ে?

স্বপ্নের মূল্য আটটি সংখ্যা।যদি

স্বপ্নের মূল্য আটটি সংখ্যা।মালিকানা অধিকার সমষ্টি

শূন্যকি ক্ষতি বন্ধ করা দরকার?

btcrobotমার্টিন, পুনরায় গণনা করা হয়েছে, 0।

wqyআপনি কি বুঝতে পারছেন না যে, n=1?

ইভদালাইকৌশলটি কি বহু-স্পেস দ্বৈত? অথবা একক?

ছোট্ট স্বপ্নভুল করা হবে না. এখনও সব পেমেন্ট বাতিল করা হবে, বর্তমান চক্র থেকে বেরিয়ে আসা, এবং তারপর পেমেন্ট লজিক চালিয়ে যান.

ছোট্ট স্বপ্নসাধারণভাবে পুরো দোকান ব্যবহার করুন।

ছোট্ট স্বপ্নলিভারেজ আপনার নিজের ঝুঁকি পছন্দ অনুযায়ী এক্সচেঞ্জের উপর নির্দিষ্টভাবে সেট করা যেতে পারে।

ছোট্ট স্বপ্ন৬৬৬!

ছোট্ট স্বপ্নযদি এই ভেরিয়েবলটি isFindBuyId নামে থাকে তাহলে এটা ঠিক হবে না.

ছোট্ট স্বপ্নএই কৌশলটি ক্ষতি বন্ধ করার জন্য ডিজাইন করা হয় নি। সুতরাং, একটি বক্ররেখা দেখা যায় যে এটি একটি উপরের দিকে।

ছোট্ট স্বপ্নহাহা, মার্টিনের বাসস্থান । এই নিবন্ধটি মূলত শিক্ষার কৌশলগত নকশার জন্য এবং খুব বেশি মনোযোগ দেওয়ার প্রয়োজন নেই।

ছোট্ট স্বপ্নযে N পরবর্তী পরিবর্তন জন্য ব্যবহার করা হয়, উদাহরণস্বরূপ, n গুণ দূরত্ব যোগ করার জন্য, অস্থায়ীভাবে 1 স্থির করা যাবে।

ছোট্ট স্বপ্ন#এক্সক্লুসিভ