TradingViewでインジケーターを書く方法を例と取引設定を使って学ぶ
この記事では、TradingViewでインジケーターを作成し、段階的に実装する方法を学びます。また、セキュリティと取引所への接続に関する重要なポイントについても説明します。.

TradingViewでインジケーターを書く方法を例と取引設定を使って学ぶ

この記事では、TradingViewでインジケーターを作成し、Pine Scriptを使用して取引所に接続する方法を説明します。実装の詳細、セキュリティ、そして安全かつ効果的な取引のための技術的なヒントについても解説します。.
0 株式
0
0
0
0

 

TradingView でインジケーターと戦略を記述し、取引所に接続するにはどうすればよいですか?

この包括的かつ実践的なガイドでは、Pine Scriptバージョン5を使ったインジケーターとストラテジーの作成方法、TradingViewでのWebhookアラームの作成方法、Flaskとccxtを使った安全なWebhookサーバーの設定方法、そしてレイテンシを削減するための技術/セキュリティに関するヒントとロケーションの選択方法を段階的に解説します。この記事は、トレーダー、開発者、運用チームに適しています。.

 

パート1 - Pine Script(バージョン5)の使い方

Pine Script バージョン5には新機能と高度な機能が追加されました。始めるには:

  • バージョンを選択: から //@バージョン=5 使用。.
  • 2つの主なタイプ: インジケータ (チャート上の表示と信号生成用)および 戦略 (バックテストおよび仮想注文の実行用).
  • 入力変数: 関数から 入力 ユーザーが変更可能なパラメータに使用します。.
  • アラーム: から 警告状態 これを使用して、TradingView で使用可能なアラーム条件を定義します。.

 

シンプルなインジケーターの例(EMAクロスオーバー + RSIフィルター)

//@version=5
indicator("EMA Crossover + RSI Filter", overlay=true)

// Inputs
shortLen = input.int(9, "EMA Short Length")
longLen  = input.int(21, "EMA Long Length")
rsiLen   = input.int(14, "RSI Length")
rsiThresh = input.int(50, "RSI Threshold")

// Price
price = close

// Indicators
emaShort = ta.ema(price, shortLen)
emaLong  = ta.ema(price, longLen)
rsi = ta.rsi(price, rsiLen)

// Signals
bull = ta.crossover(emaShort, emaLong) and rsi > rsiThresh
bear = ta.crossunder(emaShort, emaLong) and rsi < rsiThresh

plot(emaShort, color=color.blue)
plot(emaLong, color=color.orange)
plotshape(bull, title="Long", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")
plotshape(bear, title="Short", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")

// Alerts
alertcondition(bull, title="Long Alert", message="LONG_SIGNAL")
alertcondition(bear, title="Short Alert", message="SHORT_SIGNAL")

実用的なヒント: アラーム メッセージは、Web サーバーが簡単に解析できるように、JSON 形式または特定の構造にする必要があります。例: {"シグナル":"LONG","シンボル":"BTCUSDT","時間枠":"1分"}.

 

リスク管理を伴うシンプルな戦略例

//@version=5
strategy("EMA Crossover Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1)

// inputs ...
// (same indicators as above)
shortLen = input.int(9, "EMA Short Length")
longLen  = input.int(21, "EMA Long Length")
rsiLen   = input.int(14, "RSI Length")
rsiThresh = input.int(50, "RSI Threshold")

price = close
emaShort = ta.ema(price, shortLen)
emaLong  = ta.ema(price, longLen)
rsi = ta.rsi(price, rsiLen)

bull = ta.crossover(emaShort, emaLong) and rsi > rsiThresh
bear = ta.crossunder(emaShort, emaLong) and rsi < rsiThresh

if bull
    strategy.entry("Long", strategy.long)
if bear
    strategy.entry("Short", strategy.short)

// Example Stop Loss / Take Profit
strategy.exit("Exit Long", from_entry="Long", loss=100, profit=200)
strategy.exit("Exit Short", from_entry="Short", loss=100, profit=200)

説明: より正確なバックテストのために 戦略 使用方法とパラメータ ストップロス そして 利益確定 そしてポジションサイズを調整します。.

 

パート2 — TradingViewのアラームとWebhookの構造

チャートにインジケーターまたは戦略を追加したら、「アラート」メニューから新しいアラートを作成します。設定で以下の操作を行います。

  • アラートの種類: オプション ウェブフックURL サーバーアドレスを選択して入力します (例: https://trade.example.com/webhook).
  • メッセージ: 標準JSONを使用する。フィールドを含める シンボルアクション価格時間枠uuid そして タイムスタンプ.

アラームメッセージの例:

{"symbol":"BTCUSDT","action":"LONG","price":"${close}","timeframe":"1m","strategy":"EMA_CROSS_V1"}

 

パート3 - アラームを受信して取引所に注文を送信するためのWebサーバーの設定

提案されたアーキテクチャ:

  • TradingView(アラート)→ HTTPS Webhook(NGINX + Flask/Node)→ Bot(ビジネスロジック)→ Exchange API(ccxtまたはSDK)

前提条件のインストール(Ubuntuの例)

sudo apt update
sudo apt install -y python3 python3-venv python3-pip
python3 -m venv venv
source venv/bin/activate
pip install flask ccxt

Flaskとccxtを使ったサンプルapp.py

from flask import Flask, request, jsonify
import ccxt, os, hmac, hashlib, time

app = Flask(__name__)

API_KEY = os.getenv("EXCHANGE_API_KEY")
API_SECRET = os.getenv("EXCHANGE_API_SECRET")

exchange = ccxt.binance({
    'apiKey': API_KEY,
    'secret': API_SECRET,
    'enableRateLimit': True,
})

@app.route('/webhook', methods=['POST'])
def webhook():
    data = request.json
    # simple validation: check data presence (use HMAC in production)
    if not data:
        return jsonify({"error":"no data"}),400

    symbol = data.get("symbol")
    action = data.get("action")
    qty = data.get("qty", 0.001)

    try:
        if action == "LONG":
            order = exchange.create_market_buy_order(symbol, qty)
        elif action == "SHORT":
            order = exchange.create_market_sell_order(symbol, qty)
        else:
            return jsonify({"error":"unknown action"}),400
        return jsonify(order)
    except Exception as e:
        return jsonify({"error":str(e)}),500

 

パート4 — セキュアなサーバーのデプロイメント (Linux/Docker/systemd)

推奨事項: リバース プロキシとして nginx を使用し、TLS には certbot を使用した Docker Compose を使用します。.

docker-compose.yml の例

version: '3.8'
services:
  app:
    build: .
    restart: always
    environment:
      - EXCHANGE_API_KEY
      - EXCHANGE_API_SECRET
  nginx:
    image: nginx:stable
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./certs:/etc/letsencrypt
    ports:
      - "80:80"
      - "443:443"

Docker なしで実行する systemd ユニットの例

[Unit]
Description=Trading Webhook Bot
After=network.target

[Service]
User=trade
WorkingDirectory=/home/trade/app
Environment=EXCHANGE_API_KEY=your_key_here
Environment=EXCHANGE_API_SECRET=your_secret_here
ExecStart=/home/trade/venv/bin/gunicorn -w 4 -b 127.0.0.1:5000 app:app
Restart=always

[Install]
WantedBy=multi-user.target

管理コマンドの例:

sudo systemctl daemon-reload
sudo systemctl enable --now tradebot.service
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp

 

セクション5 — セキュリティと安定性に関するヒント

  • API キーの安全な保管: 環境変数から、 chmod 600 または、Secret Manager を使用します。.
  • TLS: HTTPS には有効な証明書 (certbot + nginx) を使用します。.
  • メッセージの確認: 受信した TradingView メッセージを検証するには、HMAC-SHA256 を使用します。.
  • 制限と再試行: レート制限と再試行/バックオフ アルゴリズムを実装します。.
  • 監視とログ記録: Prometheus + Grafana または ELK を使用して、健全性と応答時間を監視します。.
  • 攻撃に対する保護: パブリック エンドポイントには、Fail2Ban、iptables、Anti-DDoS または CDN サービスを使用します。.

 

セクション6 — バックテスト、最適化、フォワードテスト

  • バックテスト: 関数から 戦略。* 履歴分析には Pine を使用しますが、Pine のパラメトリック制限に注意してください。.
  • 最適化: パラメータを手動でテストするか、外部スクリプトを使用してテストします (例: 異なるパラメータを使用して複数のチャートを生成する)。.
  • フォワードテスト: 必ずバックテストを行った後、デモ アカウントで、または低レイテンシの VPS で少量の取引でテストしてください。.
  • スリッページとレイテンシーの測定: Webhook の受信時間と取引所での注文実行時間を記録し、分析します。.

 

セクション7 — 取引のためのデータセンターの立地比較

データセンターの立地は、高頻度アクセス戦略の成功において、1ミリ秒単位の精度を左右します。立地選定は、エクスチェンジとBGPルートに基づいて行う必要があります。.

  • ヨーロッパ(フランクフルト、アムステルダム): 欧州の取引所および一部の流動性ファンドに適しています。.
  • 米国東部(ニューヨーク、ニュージャージー): Coinbase およびニューヨークの関連市場に適しています。.
  • アジア(シンガポール、東京、香港): Binance Asia、OKX、アジア市場に適しています。.

主に Binance やアジアの取引所で取引する場合は、シンガポールまたは東京の VPS の方が適しています。米国の取引所の場合は、ニューヨーク/ニュージャージーの VPS の方が適しています。.

 

セクション8 — 取引に推奨されるサーバー構成

取引用VPS(低遅延)

  • CPU: 2~4 個の高周波 vCPU
  • RAM: 4~8 GB
  • ストレージ: NVMe SSD 50~100GB
  • ネットワーク: 低遅延/1Gbps、必要に応じてBGP/エニーキャスト

大量の計算/バックテストを行うサーバー

  • CPU: 8個以上のvCPU
  • RAM: 32 GB以上
  • ストレージ: NVMe 1TB
  • GPU: モデルの処理にML/AIが必要な場合

さらに、Anti-DDoS、プライベート ネットワーキング、ファイアウォール管理などのセキュリティ機能を使用して、サービスの安定性とセキュリティを向上させます。.

 

第9章 取引自動化におけるリスク軽減のための実践的なヒント

  • ストップロスと最大エクスポージャー: 各注文のストップロスと最大エクスポージャー額を設定します。.
  • API アカウントのステータス: 制限とKYCステータスを確認してください。.
  • サーキットブレーカー: エラーが増加したり、遅延が大幅に増加したりした場合は、ボットを停止します。.
  • 健康モニタリング: 稼働時間、待ち時間、充填ステータスを監視し、サポート チームにアラートを設定します。.

 

結論

このガイドでは、Pine Script (バージョン 5) でのインジケーターと戦略の記述、TradingView での Webhook アラームの作成、Flask/ccxt を使用した安全な Webhook サーバーの設定、重要なセキュリティ上の考慮事項、データセンターの場所の選択、推奨されるサーバー構成まで、主な手順について説明しました。.

低遅延 VPS、アンチ DDoS サーバー、高負荷処理向けグラフィック サーバー サービスなどのインフラストラクチャ ソリューションが必要な場合、当社は世界 85 か所以上の拠点でこれらの施設を提供しており、インフラストラクチャの設定と最適化が可能です。.

 

よくある質問

あなたも気に入るかもしれない