トレーディング戦略の構築のための可視化モジュール - 先進的な理解

作者: リン・ハーンリディア, 作成日:2022-12-13 14:11:36, 更新日:2023-09-20 09:53:59

img

トレーディング戦略の構築のための可視化モジュール - 先進的な理解

ビジュアルモジュール構築とスペイジングの概念的な理解を持っています. 次に,他のモジュールの使い方を学ぶことは簡単です. より複雑な機能を組み合わせることも可能です.

取引カテゴリモジュール

先の学習とテストでは,いくつかの"取引カテゴリー"モジュールに触れられました. 例えば: Exchange Get Tickerモジュール Exchange Get OHLCモジュール ... ほら

繰り返すつもりはない.

1. 交換数を得る

img

ロボット取引の戦略を書くとき,ヘッジ戦略のような 1 つ以上の交換オブジェクトを追加できます. あるいは,市場にアクセスするために,取引所を1つずつ訪問する必要があります. 交換の数を得るモジュールが 役立っています

シンプルな構造で印刷することができます.

img

プログラミングの戦略コードを呼び出すようなものです

function main () {
    Log(exchanges.length)
}

この組み合わせのモジュールの実行結果を見てみましょう.

img img img

バックテストログの出力結果は 3 です. テストログの出力結果は 3 です.

2. 交換の名前を取得

img

3つの交換オブジェクトを追加すると,ドロップダウンボックスは3つのオプションを表示します. ループタイプでループモジュールを事前に学ぶ.

img

条件判断のモジュールを事前に学ぶ:

img

判断条件は次のように書ける:

img

ループモジュールを使って 追加された交換名を横断します 状態判断モジュールを用いて 現在のループ数と 印刷される交換の名前に一致するかどうかを判断します

img

バックテスト結果:

img

JavaScriptの戦略コードのように:

function main () {
    for (var i = 1 ; i <= exchanges.length ; i++) {
        if (i == 1) {
            Log(exchanges[0].GetName())
        } else if (i == 2) {
            Log(exchanges[1].GetName())
        } else {
            Log(exchanges[2].GetName())
        }
    }
}

3. 取引所の現在の取引ペアを取得

img

簡単な例として,現在設定されている最初の交換オブジェクトの取引ペアを取得し,それをテキスト変数 (変数カテゴリで事前に作成) に割り当てます.

img

バックテスト結果:

img img img

JavaScriptの戦略コードを呼び出す場合:

function main () {
    var text = exchange.GetCurrency()
    Log(text)
}

4. オーダーモジュール

img

このモジュールはオーダー操作にとって非常に重要です.最初のテンオン (円) ポジションには価格変数が埋め込まれ,これはオーダー価格を指定するために使用されます.また,固定値を直接入力できます. 第2のテンオン (形) の位置は,注文量変数と組み込まれ,注文量指定に使用されます.

例えば,購入注文の例を,現在のティック市場データの最新価格に基づいて 10元の変動価格を追加し,注文量を0.1コインに設定し,注文IDをプリントします.

img

バックテスト結果:

img

この JavaScript 戦略コードのようなものです

function main () {
    var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
    Log(id)
}

5. 現在の取引ペアモジュールの待機注文を取得

img

このモジュールは,現在の取引ペアの未完了状態にあるすべての待機注文を返します.リストタイプモジュール (横断操作など) によって処理できるリスト構造 (配列) を返します. 例えば,上記の例の注文モジュール[4]をわずかに修正し,注文を出すときに追加された10元の価格をマイナス10元に変更しました.注文は直ちに閉鎖されませんが,取引の深さ (つまり1つ購入,2つ購入,Nで一定のレベルを購入) に配置されます.この方法で,注文は完了を待っている待機注文の状態になります. 次に,当取引ペアの待機注文を取得するモジュールを用いて,PENDING状態 (満たされるのを待っている) の注文のリストを取得します. 後続の市場でオーダーが満たされるため,バックテストの最終的な観察に影響を避けるため,モジュール"現在の取引ペアの待機中のオーダーを取得する"が実行された後,オーダーリストをプリントし,モジュール"例外を投げる"をすぐにプログラム停止するために使用します.

img

バックテストでは

img

その時の最新価格より10元低かったので すぐに完了しません 注文を待機中の取引状態で取得し,それを印刷してください. 最後に,プログラム停止のために例外が投げられます.

組み立てられたモジュールは JavaScript 戦略への呼び出しのようなものです

function main () {
    var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
    Log(id)
    Log(exchange.GetOrders())
    throw "stop"
}

6. 注文モジュールをキャンセル

img

このモジュールは,注文をキャンセルするために使用されます.

戦略を書く際にこのような操作を必要とするシナリオはたくさんあります.

待機中の注文をキャンセル

キャンセルオーダーモジュールを学習する際に,当時の取引ペアモジュールの待機中のオーダーを取得するために,[5]を使用し,この機能を達成するために組み合わせることができます.

まず,すべての注文のキャンセルをテストするために,注文をするのは明らかではありません. 2つの注文を配置し始め,価格と量は2つの注文を区別するために異なります.

img

Loopモジュールのリストのすべての要素を横切る を使って,現在待機中の注文のリストの注文を横切る.

img

トラバーサール中に,取得された各オーダーは,変数モジュールオーダーに値が割り当てられます (下記のように変数モジュールタイプで作成されます:)

img

Utilモジュールを使用:

img

注文IDを取り出し,それをキャンセル注文モジュールのテンオン (凸) 位置に渡し,キャンセル注文モジュールは注文キャンセルを実行します.

バックテスト操作:

img

JavaScript 戦略説明を使用する:

function main () {
    var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
    Log(id)
    var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2)
    Log(id2)
    var orders = exchange.GetOrders()
    Log(orders)
    for (var i in orders) {
        var order = orders[i]
        Log(exchange.CancelOrder(order.Id))
    }
}

オーダーIDに基づいて注文の詳細を取得するためのモジュール

img

モジュールのテンン (凸) 位置はオーダーID変数モジュールに接続され,オーダーの詳細が返される.

img

実行後に返される順序に注意してください:

img

例 [5] の実行結果と比較すると,印刷された注文は,[]括弧のない別々の注文情報であることがわかります. なぜなら,例 [5] はリストを返すが,この例は別々の順序情報を返す (ID変数モジュールから,モジュールが渡したテンオン位置に基づいて得られる).

上記の例は,JavaScript 戦略の実行に類似しています.

function main () {
    var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
    Log(exchange.GetOrder(id))
}

8. フューチャー取引モジュール

商品先物としてテスト交換を設定します. テスト先物としてテスト先物としてテスト交換を設定します.

バックテスト設定:

img

次の例では,設定に基づいてバックテストを行います.

  • CTPの商品先物と先物会社のサーバーとの間の接続状態モジュールを判断

img

商品先物には開業時間と閉店時間があります 市場が閉ざされると接続できません

  • セット契約モジュール

img

取引対象が先物取引所として設定されている場合,取引所が契約を設定せず,直接市場情報を入手した場合,エラーが報告されます.

MA909という契約を設定しました メタノールの主要契約です

この方法で,MA909契約の現在のチケット市場での最新の価格値が得られます.

  • フューチャー取引のオーダー方向モジュールを設定

実行命令モジュールで

img

オーダーの方向は指定する必要があります. 未来取引には以下の条件があります. 買い: オープン・ロング・ポジション 売り: オープンショートポジション Closebuy: ロングポジションを閉じる クローズセール: ショートポジションを閉じる 4つの方向性 (商品先物取引にはさらに2つの方向性があります.今日,ロングポジションを閉じる場合は closebuy_today,今日,ショートポジションを閉じる場合は closesell_today).

例えば,オーダーモジュールが"買え"と設定されている場合,ロングポジションを開くとショートポジションを閉じるには2つの意味があります.これは曖昧です. したがって,明瞭なオーダー方向を設定するために,先物取引のためのオーダー方向を設定するモジュールが必要である.

img

バックテスト表示:

img

JavaScriptの戦略コードのように

function main () {
    while (true) {
        if (exchange.IO("status")) {
            exchange.SetContractType("MA909")
            Log(exchange.GetTicker().Last)
            exchange.SetDirection("buy")
            Log(exchange.Buy(1000, 1))
            throw "stop"
        } else {
            Log("The commodity futures front-end processor is not connected")
        }
        Sleep(1000)
    }
}

9. デジタル通貨先物取引モジュール

デジタル通貨先物取引の利用は,上記 [8] の商品先物取引と基本的には同じである.

  • OKEX を例に挙げると,契約コードは以下のとおりである.
    • this_week: この週
    • next_week: 来週
    • 四半期: 四半期
    • スワップ:永続
  • ビットメックス:
    • XBTUSD
    • ETHUSD
  • セットレバレッジモジュール

img

デジタル通貨の先物に対するレバレッジを設定するために使用されます.

#Note: Backtesting is not supported.

JavaScriptの戦略のように

function main () {
    exchange.SetMarginLevel(10)
}

視覚化戦略の例:

https://www.fmz.com/strategy/121404 https://www.fmz.com/strategy/129895 https://www.fmz.com/strategy/123904 https://www.fmz.com/strategy/122318より多くの戦略については,以下を参照してください.https://www.fmz.com/square

このシリーズの他の記事

  • トレーディング戦略の構築のための可視化モジュール - 詳細 (https://www.fmz.com/digest-topic/9509) について トレーディング戦略の構築のための可視化モジュール - 初対面 (https://www.fmz.com/bbs-topic/9814) について 退屈なプログラミングは簡単にブロックで完了できます. 試してみるのはとても面白いです!

関連性

もっと