CTA戦略の商品フューチャー

作者: リン・ハーンゼロ3192, 日時: 2021-04-23 21:06:05
タグ:

"つ目 概要

マティンゲル戦略は18世紀のフランスで最初に生まれたが,その頃はゲームテーブルで用いられていたが,その後すぐにヨーロッパで広く知られるようになった.理論上は100%に近い確率で,現在まで多くの取引市場,例えば外為,先物,デジタル通貨市場で存在している.しかし,それは本当に信頼できるのか?それは本当に伝説の戦いの無敵なのか?この記事では,商品先物を作って簡単にマティンゲル戦略を証明する.

2 マーティンゲルの戦略原理

マッティンゲルは取引戦略でも取引メカニズムでもなく,資金管理の方法である.その原理は単純である.トレーダーは,ある程度の損失を伴うたびに,次の注文量を倍にします.利益になるまで,次の注文量を元の値に戻します.そうすることで,一度だけ利益を得ることができ,前回の損失を回収するだけでなく,最初の注文量の利益を得ることができます.これは明らかに逆転倍増の資金管理の方法です.

現在,正面と逆面が同じ重さのコインがあり,繰り返しコインを投げると,正面と逆面が出る確率は約50%です. 次に,このコインを投げると,最初の賭け金額は1元で,正面が出ると1元,逆面が出ると1元です.理論的には,コインが正面と逆面が出る確率は同じです.

マルチンの戦略原理によれば,負けたときの賭け額を前回の賭け金額の2倍に調整し,一度勝っただけで以前の損失をすべて取り戻す.しかし,連続した損失の場合,何も失うこともない.本金が10元で,最初の賭け金は1元で,逆負荷は1元で,口座残高は9元;第二賭け金は2元で,逆負荷は2元で,口座残高は7元;第三賭け金は4元で,逆負荷は4元で,口座残高は3元です.このとき,十分な資金が押金されていません.

3 戦略的再テスト

  • 復習開始日:2015-06-01
  • 復習終了日:2021-04-01
  • データ種類:菜食指数
  • データサイクルの日記
  • 滑り点:平衡点から2跳

復元配置 img テスト結果 img 資金の曲線 img 日記情報 img

4 マーティンゲルの戦略はアップグレード

マティンゲルの戦略最大のリスクは,市場が常に片方的に動いていることであり,トレーダーの持股方向が市場方向に逆らっている場合,累積したポジションは非常に恐ろしくなる.トレーダーの初期資金が1万元で,損失を2倍に増やす場合,連続損失を7回しか持たない.しかし,倍投を1.5に変更すると,状況はかなり良くなり,連続損失を12回しか持たない.倍投を1.1に変更すると,連続損失を49回必要とする.占有資金が比較的小さいため,操作するリスクは比較的小さい.

img

上図は倍投数と資金投入比率の図である.したがって,低倍投数を使用すると,占拠する資金が非常に小さく,戦略的リスク抵抗力が強いことがわかります. そのため,資金の安全性を確保するために,実盤は低倍投数を使用することをお勧めします.実盤の前に計算する倍投数を推奨します.

5 概要

取引の概率は取引の本質であり,誰も1回の注文で百パーセントの利益を保証する気はない.良い理由とタイミングで注文すると,リスクは既に存在していると言える.マルティンゲルの戦略は,特にトレンド市場に適用される.トレーダーは,トレンドを合理的に判断し,トレンドの方向に沿って取引を開始し,良いリスク・リターン比を設定する限り,非常に安定したリターンを得ることができます.


/*backtest
start: 2015-06-01 00:00:00
end: 2022-04-01 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_usdt"}]
*/

MarginLevel =20//合约杠杆 
unit =0.015//初始下单量
profits =1//盈亏间距
bei =1//倍率



function main() {
    exchange.SetContractType("swap")
    exchange.SetMarginLevel(MarginLevel)
    while (true) {
        let depth = exchange.GetDepth();
        if (!depth) return;
        let ask = depth.Asks[0].Price==-1;
        let bid = depth.Bids[0].Price==-1;
        let position = exchange.GetPosition()
        if (position.length == 0) {
            let redom = Math.random()
            unit =0.015
            if (redom > 0.5) {
                exchange.SetDirection("sell")
                exchange.Sell(-1, unit, "开空")
            }
            if (redom < 0.5 ) {
                exchange.SetDirection("buy")
                exchange.Buy(-1, unit, "开多")
            }
        }
        if (position.length > 0) {
            let type = position[0].Type;
            let profit = position[0].Profit;
            let amount = position[0].Amount;
            if (type == 0) {
                if (profit > profits) {
                    exchange.SetDirection("closebuy")
                    exchange.Sell(-1, amount, "多头止盈,当前盈利:" + profit)
                      unit = 0.015
                }       
            
                if (profit <-profits ) {
                    unit = unit * bei
                    exchange.SetDirection("buy")
                    exchange.Buy(-1, unit, "多头加仓,当前盈利:" + profit)
                }
            }
        
        
            if (type == 1) {
                if (profit > profits) {
                    exchange.SetDirection("closesell")
                    exchange.Buy(-1, amount, "空头止盈,当前盈利:" + profit)
                    unit = 0.015
            }
                    
                
                if (profit < -profits) {
                    unit = unit * bei
                    exchange.SetDirection("sell")
                    exchange.Sell(-1, unit, "空头加仓,当前盈利:" + profit)
                }
            
              }
          } 

        Sleep(1000 )
    }
}




もっと