
最近、仮想通貨の世界ではニュースが多く、取引所に関するニュースも飛び交っています。一時期、暗号通貨の愛好家は皆、ブロックチェーン資産の安全性を心配してパニックに陥っていました。さまざまな暗号通貨グループには、使用されていない中古コインを 10% または 20% 割引で提供する小さな広告がたくさんあります。 「安定した損失と安定した利益を同時に求める」ために、さまざまな戦略を模索する人がたくさんいます。多くのコイン友達も、「お金を稼ぐ安定した方法があるのなら、なぜお金を失う安定した方法が必要なのか!」と冗談を言っていました。
確かに、着実に利益を生み、着実に損失を被るものはmoney printer、見つけるのは簡単ではありません。
私の下手な英語をお許しください。
しかし、契約ヘッジなどにより損失と利益を同時に得ることができるなど、不安定さは依然として存在します。
DEMO戦略
/*backtest
start: 2020-09-30 00:00:00
end: 2020-10-19 00:00:00
period: 1d
basePeriod: 1m
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"},{"eid":"Futures_HuobiDM","currency":"BTC_USD"}]
*/
var step = 20 // 加仓价格步长
function main() {
var pos1 = []
var pos2 = []
var ct = "quarter" // 例如用季度合约
exchanges[0].SetContractType(ct)
exchanges[1].SetContractType(ct)
var diff = 0
while (true) {
var r1 = exchanges[0].Go("GetDepth") // A交易所
var r2 = exchanges[1].Go("GetDepth") // B交易所
var depth1 = r1.wait()
var depth2 = r2.wait()
if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff) {
if(pos1.length == 0 && pos2.length == 0) {
var info1 = $.OpenShort(exchanges[0], ct, 10)
var info2 = $.OpenLong(exchanges[1], ct, 10)
pos1 = _C(exchanges[0].GetPosition)
pos2 = _C(exchanges[1].GetPosition)
diff = depth1.Bids[0].Price - depth2.Asks[0].Price
} else if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff + step) {
var info1 = $.OpenShort(exchanges[0], ct, 10)
var info2 = $.OpenLong(exchanges[1], ct, 10)
pos1 = _C(exchanges[0].GetPosition)
pos2 = _C(exchanges[1].GetPosition)
diff = depth1.Bids[0].Price - depth2.Asks[0].Price
}
}
if(pos1.length != 0 && pos1[0].Profit < -0.001) {
var info1 = $.CoverShort(exchanges[0], ct, pos1[0].Amount)
var info2 = $.CoverLong(exchanges[1], ct, pos2[0].Amount)
pos1 = _C(exchanges[0].GetPosition)
pos2 = _C(exchanges[1].GetPosition)
diff = 0
}
LogStatus(_D(), diff)
Sleep(500)
}
}


戦略ロジック: この戦略は、位置変数 pos1 と pos2 を空の配列として初期化することから始まります。この戦略はメインループに入り、各ループの開始時に 2 つの取引所の契約の深度データ (注文書データ) を取得し、価格差を計算します。価格差が「前回の価格差プラス1歩」を超えて拡大し続ける場合は、ヘッジを継続してポジションを増やします。ポジションを保有している場合、最初の取引ポジションの損失が一定値(例:-0.001)を超えると、ポジションはクローズされます。このプロセスは繰り返し繰り返されます。
原理は実は非常に単純で、価格差が大きい場合はヘッジに反対するということです。損失が予想される取引所が損失を抱えるまで待ってから、ポジションをクローズします。スプレッドが拡大し続ける場合は、損失が予想される取引所が損失を抱えるまで、ヘッジのためにポジションを増やし続けます。より重要なパラメータは、ポジションをクローズするために必要な損失額、ポジションを追加するための価格差のステップサイズ、およびヘッジ額です。
この戦略は比較的単純で、アイデアを検証するためにのみ使用されます。実際の取引には適用できません。実際の取引では、取引する契約が通貨ベースか U ベースか、取引所 A と B の異なる契約の乗数は同じかなど、考慮する必要がある問題がまだたくさんあります。
このように、ある取引所が損失を出した場合、その損失はほぼ別の取引所の利益になります(価格差により、ヘッジ損失が発生する場合があり、つまり損失が利益よりも大きくなります)。この戦略では先物取引ライブラリを使用します。$.CoverShort,$.OpenShortこれらはテンプレートのインターフェース関数です。上記の DEMO をバックテストして実行するには、このクラス ライブラリを参照する必要があります。
上記の戦略プロトタイプは、最も単純な検討に過ぎません。実際の運用では、さらに詳細を考慮する必要がある場合があります。たとえば、ポジションの増加量を増分的に設計できます。これは単なる出発点です。同様の戦略をさらに最適化できるはずです。専門家からの提案を歓迎します。