
前回の記事では、暗号通貨、プログラム取引、定量取引の基本的な概念を数多く学びました。最後に、本題に入り、戦略そのものについてお話しします。この記事では、シンプルな戦略の実装方法を学びます。 【グリッド戦略】に関しては、トレードをする人なら誰でも聞いたことがあるはずです。聞いたことがなくても問題ありません。交換いずれも独自のプログラム型および定量型取引機能を導入している。最も一般的で使いやすい戦略はグリッド戦略。ただし、各取引所が提供するグリッド戦略の機能と詳細は異なります。定量的暗号通貨サークルに参入することを計画しているためです。私たち自身でグリッド戦略を実装してみませんか?
このとき、生徒の中には次のように言う人もいるかもしれません。 「コードが書けない!」 「コードヘッドが大きいのがわかります!」
それは確かにそうですね。コンピュータソフトウェアを専攻しておらず、プログラミングの経験もない学生が、独力で完全な取引戦略を開発するのは、実に困難です。取引所のインターフェースに接続することから始まる一連の準備作業を行う必要があるためです(トレーディングロジックプログラムは 100 行だけかもしれませんが、他のコーディング作業はたくさんあり、トレーディングロジックを記述するよりも困難です)。 )
このとき、便利なツールがあれば、かなり簡単になり、少なくとも難易度は 70% 軽減されます。トランザクションロジック自体を記述するだけで、交換インターフェースのドッキング、署名の検証、構成ファイル、動作環境の構築、UIインターフェースの記述、インタラクションの記述などの他の機能がすべて既成のものであれば、どれほど便利で高速になるか想像できます。 。
信じられませんか? ぜひ試してみましょう!
私たちが使用するツールは、Inventor Quantitative Trading Platform (FMZ.COM) です。グリッド戦略設計の核となるのは、実際にはグリッドの売買のロジックであるため、これは戦略を設計する前に明確にしておく必要があります。私たちの目標は、戦略をシンプルで理解しやすいように設計することです。そのため、パラメータが少なく、ロジックがシンプルであるほど良いです。
戦略を設計するための基本的なプロセスは次のとおりです。
簡単に言えば、これはあなたの戦略が何をするのか、どのように実行されるのか、どのような機能を持つのかなどです。この情報は、実際に戦略を書く前に、文書(メモ帳など)に書き込むことができます。戦略コード。 FMZ で戦略を立てるのはとても簡単です。プラットフォームにはこれらのニーズに対するソリューションが用意されており、これらのニーズをノートに書き込む必要はありません (管理するのはあまり便利ではありません)。戦略要件を戦略ノートに直接書き留めます。

戦略を書いた後は、必ず保存してください。次に、戦略要件を記述します (戦略要件は固定されておらず、開発中に記録できます)。
この戦略はスポット取引戦略として設計されており、取引ペアはXXX_USDT、例えば:BTC_USDT。
グリッドは等間隔に配置されるように設計されています。つまり、グリッド上の 2 つの隣接するポイント間の距離は固定された広がりになります。
グリッドは、無限に拡張できる無限グリッドとして設計されています。
注文方法は成行注文を使用します。
不明瞭なアイデアについては、分析のために図を描くことから始めることができます。

開始価格を基準点として使用して、上方向と下方向の両方にグリッドを構築できます。いわゆるグリッドは、買いラインと売りラインのレイヤーです。チャートから、各線には 2 つの可能性があることがわかります。 1. 価格が上がる。 2. 価格が下がる。 価格が上向きに交差することは、価格が上昇していることを示しており、売却し、価格が下がるのを待ってから買い戻して利益を得る必要があります。 下方価格浸透は、価格が下がっているため購入し、その後価格が上昇するのを待って売却し利益を得る必要があることを示しています。 したがって、各グリッド ラインには、買いと売りの 2 つの取引方法があります。そして、各グリッド ラインには固有のプロパティがあり、それがこのラインによって示される価格です。たとえば、図の A/B/C/D の表現。 戦略を設計する際には、まず何をしたいのかを理解する必要があります。何そうすれば便利になります。
グリッド データ構造を構築する関数を記述します。
function createNet(begin, diff) { // begin,diff是参数,begin是初始价格,diff是网格间距(等差网格的间距是价格)
var oneSideNums = 10 // 网格向上、向下一边生成10条线,上图是一边生成2条(AB一边,CD一边),生成10条的自行脑补画面
var up = [] // 用来储存向上的“网格线”数据结构
var down = [] // 用来储存向下的“网格线”数据结构
for (var i = 0 ; i < oneSideNums ; i++) { // 根据oneSideNums的大小确定次数,循环构造“网格线”数据结构
var upObj = { // 构造一条向上的“网格线”数据结构
buy : false, // 买入标记,初始标记为false ,意思为没有买入
sell : false, // 卖出标记....
price : begin + diff / 2 + i * diff, // 这条“网格线”表示的价格位,可以观察根据循环进行,价格位是依次升高的
}
up.push(upObj) // 构造好的“网格线”数据结构放入up数组
var j = (oneSideNums - 1) - i // 循环时 j 的变动是:9 ~ 0
var downObj = {
buy : false,
sell : false,
price : begin - diff / 2 - j * diff,
}
if (downObj.price <= 0) { // 价格不能小于等于0
continue
}
down.push(downObj) // 构造好的“网格线”数据结构放入down
}
return down.concat(up) // 把up加在down之后,形成一个网格线价格从小到大的网格数组结构
}
この関数を単独で実行して効果を確認することができます。 FMZ の [デバッグツール] や [バックテストシステム] は、このような小さなコードをデバッグするのに非常に便利です。

構築されたデータを観察することができます。
[
{"buy":false,"sell":false,"price":5},
{"buy":false,"sell":false,"price":15},
{"buy":false,"sell":false,"price":25},
{"buy":false,"sell":false,"price":35},
{"buy":false,"sell":false,"price":45},
{"buy":false,"sell":false,"price":55},
{"buy":false,"sell":false,"price":65},
{"buy":false,"sell":false,"price":75},
{"buy":false,"sell":false,"price":85},
{"buy":false,"sell":false,"price":95},
{"buy":false,"sell":false,"price":105}, // 100是起始价格,从105开始向上第一条线,间距10
{"buy":false,"sell":false,"price":115}, // ...
{"buy":false,"sell":false,"price":125},
{"buy":false,"sell":false,"price":135},
{"buy":false,"sell":false,"price":145},
{"buy":false,"sell":false,"price":155},
{"buy":false,"sell":false,"price":165},
{"buy":false,"sell":false,"price":175},
{"buy":false,"sell":false,"price":185},
{"buy":false,"sell":false,"price":195}
]
グリッドのデータ構造を分析した後、グリッド戦略の具体的な売買ロジックを考慮する必要があります。実際、売買のロジックも非常に単純です。上の図にそれを描きました。買うということは、特定のラインより下を通過することを意味し、売るということは、特定のラインより上を通過することを意味します。では、上下を着用することはどのように表現するのでしょうか?これも非常に簡単です。判断するには、2 つの時点の価格ポジションを比較するだけです。
前の絵を使いましょう。

t1は瞬間であり、t2はt1の後の瞬間であり、線Cの交差を判断するには、P1 < CそしてP2 > C。
同様に、線Bの交差を判断するには、P1 > BそしてP3 < B。
その時は、トラバース(トラバースは一般に一つずつ見てみましょう) グリッド配列内の各線について、それが上を横切るか下を横切るかを判断するだけです。簡単じゃないですか?
価格が上昇または下降しているのを見つけた場合、これらのアクションがトリガーされたときに注文を出すことはできますか? もちろん、これは絶対に不可能です。価格がライン上で繰り返し上下する場合、同じ価格で繰り返し取引することで取引手数料を無駄にしていることになるのではないでしょうか。したがって、上向きと下向きの交差をトリガーするための一連の判断条件がまだあり、構築したグリッド線データ構造の買い/売りタグを使用する必要があります(例:{“buy”:false,“sell “:false,“price”:5})。
読んでいただきありがとうございました。次号でも引き続き解説と学習を進めていきます。