氷山委託 (購入) - ジェイソン

作者: リン・ハーンジェイソン・M・J開催日:2021年4月12日 (火) 10:00:35
タグ:パイソンアイスバーグ

1. 前提:氷山は,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログを書き,ブログに"ブログを書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログ"を書き,ブログに"ブログを書き,ブログに"ブログを書き,ブログに"ブログを書き,ブログに"ブログに"ブログを書き,ブログに"ブログを書き,ブログに"ブログに この記事では,大の戦略を引用しています.https://www.fmz.com/strategy/188435基本的には大の戦略とほとんど変わらないが,書き方は少し粗略である.

2.前因大量取引を行う場合,取引金額が大きいため,購入/販売したい通貨の市場価格に影響を与える可能性があります.引いた売り上げも増やしましたプレート│ │ 引き上げ:価格を引き上げ,コインの価格を上げ 2 チェンジ:価格に関係なく,コインを直接売り,コインの価格を下げる 3 取引通貨 ストック:取引に使用される通貨,BTC/USDT取引対を例として,BTCは取引通貨です4 料金通貨 バランス: BTC/USDT取引対の例として,ユーザーの料金通貨.USDTは価格通貨です

アイスマンの委託:オペレーション: オーダーを自動的に分割する複数の委託顧客が設定した価格戦略と最新の買/売価格に基づいて,自動小注文をします.前回の委託が完全に取引された場合,または最新の価格が現在の委託から大きく偏った場合,自動的に再委託します.効果: 大量購入/販売の注文が市場価格に影響を及ぼす影響を減らす.大額決済により価格上昇を防ぐために,自分の購入コストを増加させる売れたら,売れる.売り上げが大きくなり,価格が下がるため,売り上げの利益が減少するのを防ぐこと

データのパラメータ対照:

  1. 委託価格=最新購入価格1X ((1-委託深さ)
  2. 実際の市場委託深さ= (最終取引価格 - 前回の委託価格) / 前回の委託価格
  3. ランダム・シングル購入数=シングル購入数平均値 X ((100−シングル平均値浮点数) % + (シングル平均値浮点数 X2) %Xシングル購入数平均値 X ランダム数 0~1
  4. 利用可能な金額=口座開算通貨,ランダムな単一の購入量,購入残りの総金額の最小値
  5. 購入量=利用可能金額/委託価格
  6. 購入余分な総額=購入総額- ((初期口座開算通貨-口座開算通貨)

ルール:

  1. 最新取引価格が委託から距離が委託深度X2を超えると自動的に撤回 (偏差が大きすぎることを示す)
  2. 戦略の総取引が総委託数に等しいとき,委託を停止します.
  3. 最新の取引価格が最高値を超えた 購入価格停止委託
  4. 最新取引価格が最高制限以下で購入価格を再開する委託

主なパラメータ:

  1. 購入する金額
  2. 単一の購入量
  3. 委託深さ
  4. 最高価格
  5. 価格調査間隔
  6. 単一の購入数 平均浮点数
  7. 最小取引量

考えるのは

  1. 注文をすべて取り,キャンセル
  2. 初期化口座の残高を入手し,購入総額よりも大きいかどうかを判断します.
  3. 委託価格を計算する
  4. 単一の購入数を計算する
  5. 利用可能な金額を計算する
  6. 購入量を計算する
  7. 購入を実行する
  8. 休憩時間
  9. 前回の注文が成功したか否かを判断する
  10. ログが成功しました
  11. 偏差が大きすぎるか,大きすぎると撤回すべきか判断する失敗

推薦

  1. ETH_USDT を使って再測することをお勧めします.

策略が不十分で,通り過ぎたいと願う大が2つ指差している.


import random


def main():
    # 获取账户所有未成交订单
    Log("取消所有未成交订单")
    orders = _C(exchange.GetOrders)
    if len(orders) > 0:
        for i in range(len(orders)):
            exchange.CancelOrder(orders[i]["Id"])
            Sleep(priceInterval*1000)

    # 对比账户余额
    Log("获取用户初始化账户")
    initAccount = _C(exchange.GetAccount)
    if initAccount["Balance"] < buyAmount:
        Log("账户余额不足")
        return
    
    #比较单笔购买数量均值*市场买一价是否大于账户余额
    ticker = _C(exchange.GetTicker)
    if (ticker['Last'] * buyNum) > initAccount['Balance']:
        Log("单次购买均值价格大于账户余额,请调整参数")
        return

    lastBuyPrice = 0

    while (True):
        Sleep(priceInterval*1000)
        #获取账户信息
        account = _C(exchange.GetAccount)
        #获取当下行情
        ticker = _C(exchange.GetTicker)
        # 上次购买价格不为空,查看订单是否完成,没有完成则取消
        if lastBuyPrice > 0:
            orders1 = exchange.GetOrders()
            if len(orders1) > 0:
                for j in range(len(orders1)):
                    #计算实际市场委托深度
                    if ticker["Last"] > lastBuyPrice and ((ticker["Last"] - lastBuyPrice)/lastBuyPrice) > (2* (depthStatus/100)):
                        Log("委托价格偏离过多,最新成交价:",ticker["Last"],"委托价",lastBuyPrice)
                        exchange.CancelOrder(orders1[j]["Id"])
                        lastBuyPrice = 0
                continue
            else:
                Log("买单完成, 累计花费:", _N(initAccount["Balance"] - account["Balance"]), "平均买入价:", _N((initAccount["Balance"] - account["Balance"]) / (account["Stocks"] - initAccount["Stocks"])))
                lastBuyPrice = 0
                continue     
        else:
            Log("剩余余额:",account["Balance"])
            #委托价格 = 最新买一价*(1-委托深度/100)
            entrustPrice = _N(ticker["Buy"]*(1-depthStatus/100))
            Log("委托价格:",entrustPrice)
            #判断委托价格是否大于最高价格限定
            if entrustPrice > highPrice:
                continue
            #随机购买数量 = 单次购买数量均值 * ((100-单次均值浮点数)/100)+(单次均值浮点数*2 /100* 单次购买数量均值 *随机数0~1)  
            randomBuyNum = (buyNum*((100-buyOncePoint)/100))+(buyOncePoint*2/100 *buyNum*random.random())
            #可用数量金额 
            useMoney = min(account["Balance"],randomBuyNum,buyAmount - (initAccount["Balance"] - account["Balance"]))
            #购买数量
            orderBuyNum = _N(useMoney/entrustPrice)
            Log("交易数量:",orderBuyNum)
            #判断是否小于最小交易量
            if orderBuyNum < minBuyNum:
                break
            #因为要扣手续费,所以大概为账户99.7%
            if (entrustPrice*orderBuyNum)>(account["Balance"]*0.997):
                Log("金额为",(entrustPrice*orderBuyNum))
                Log("账户余额为",(account["Balance"]))
                continue
            #更新上次购买价格
            lastBuyPrice = entrustPrice
            #下单
            exchange.Buy(entrustPrice,orderBuyNum)
            
    account = _C(exchange.GetAccount)  
    Log("冰山委托买单完成,共计花费:",_N(initAccount["Balance"]-account["Balance"]),"平均单价为:",_N((initAccount["Balance"]-account["Balance"])/(account["Stocks"]-initAccount["Stocks"])))        


関連性

もっと