カスタム Pine スクリプト ストック スクリーナーの構築における課題を克服する
Pine Script で特定の取引所から証券を取得し、カスタム条件でフィルタリングして、チャートに表示できるかどうか考えたことはありますか?あなたは一人ではありません!多くの開発者やトレーダーがこの考えを打破しようと試みてきましたが、Pine Script の組み込み機能の制限に直面するだけでした。 🤔
Pine Script はテクニカル指標や視覚化の適用に優れていますが、特定の取引所で動的に動作する株価スクリーナーの作成はネイティブ機能ではありません。ただし、適切なコーディング ロジックと創造性があれば、これらの制約を回避できます。課題は、セキュリティ データを効果的に取得して処理する方法を理解することにあります。
私自身の旅でも、同様の障害に直面しました。たとえば、特定の取引所のハイテク株のスクリーナーを作成しようとしたとき、Pine Script には取引所のすべての証券を直接クエリする機能がないことがすぐにわかりました。これには、すぐに使える発想と、外部データ処理と Pine Script 機能の組み合わせが必要でした。 💻
この記事では、このカスタム機能の実装における中心的な課題、特に証券を取得する最初のステップについて詳しく説明します。この野心的な計画が実現可能かどうかを一緒に検討し、スクリーナーを実現するための実用的な回避策を見つけていきます。 🚀
指示 | 使用例 |
---|---|
array.new_string() | Pine スクリプトで文字列を格納するための新しい配列を作成します。ティッカーや有価証券のリストを動的に管理する場合に便利です。 |
array.push() | 配列の末尾に要素を追加します。この場合、証券リストにティッカー シンボルを動的に追加するために使用されます。 |
request.security() | 別の時間枠またはチャートから特定のティッカー シンボルのデータを取得します。これにより、Pine スクリプトがフィルタリング目的でセキュリティ情報にアクセスできるようになります。 |
label.new() | チャート上の指定された位置に新しいラベルを作成します。フィルターされたティッカーを視覚的にカスタマイズしてチャート上に直接表示するためにここで使用されます。 |
str.split() | 指定された区切り文字に基づいて文字列を部分文字列の配列に分割します。単一の文字列としてインポートされたティッカーのリストを処理する場合に便利です。 |
input.string() | ユーザーが Pine スクリプト設定を介して文字列を入力できるようにします。この例では、外部ティッカー データをスクリプトにロードするために使用されます。 |
for loop | 項目の配列またはリストを反復処理します。この場合、証券またはフィルタリングされたリスト内の各ティッカーを処理するために使用されます。 |
axios.get() | JavaScript で HTTP GET リクエストを実行します。事前フィルタリングの目的で外部 API から証券データを取得するために使用されます。 |
response.data.filter() | カスタム ロジックに基づいて JavaScript でデータ オブジェクトの配列をフィルターします。ここでは、証券を Pine スクリプトに渡す前にボリュームでフィルタリングするために使用されます。 |
fs.writeFileSync() | Node.js 内のファイルにデータを同期的に書き込みます。ここでは、後で Pine スクリプトで使用するために JavaScript からフィルタリングされたティッカーを保存するために使用されます。 |
Pine スクリプトと外部ツールを使用したカスタム株式スクリーナーの構築
前に紹介したスクリプトは、カスタム株式スクリーナーを作成する際の問題を解決することを目的としています。 パインスクリプト、プラットフォーム固有の制限を克服します。最初のスクリプトは完全に Pine Script 内で動作し、配列を利用してティッカー シンボルのリストを手動で管理します。 `array.new_string()` および `array.push()` コマンドを使用して、このリストに動的に値を入力します。ティッカーが定義されると、スクリプトは「request.security()」を使用して各シンボルのデータを取得し、ボリュームしきい値などの事前定義された条件に基づいてリアルタイムのフィルタリングを有効にします。配列を反復処理することにより、スクリプトは「label.new()」を使用してチャート上で基準を満たすティッカーを直接識別し、強調表示します。このアプローチはシンプルですが手動であり、スクリプト自体内でティッカー入力が必要です。 🚀
2 番目のスクリプトは、次のことを組み合わせて、より高度なルートをたどります。 JavaScript データ集約には Pine Script、視覚化には Pine Script を使用します。 JavaScript は外部 API と対話するために使用され、指定された取引所に基づいて証券データを動的に取得します。 `axios.get()` コマンドはデータを取得し、`response.data.filter()` 関数はボリュームなどのフィルターを適用します。これにより、証券選択プロセスをリアルタイムでプログラム的に制御できるようになります。フィルタリングされたティッカーは、「fs.writeFileSync()」を使用してファイルに保存され、後で Pine スクリプトで読み取って視覚化に使用できます。この方法ではプロセスが合理化されますが、外部ツールを使用した 2 段階のワークフローが必要です。 🤔
Python ベースのソリューションは、同様のハイブリッド アプローチを採用しており、Python の堅牢なライブラリを利用して API からデータを取得して処理します。このスクリプトは、Python の「requests」ライブラリを使用して API 呼び出しを行い、ボリュームしきい値に基づいて証券をフィルタリングする関数「fetch_securities()」を定義します。次にティッカーは、JavaScript ソリューションと同様に、Python の単純な構文を使用してファイルに書き込まれます。このデータは、最終的な視覚化のために Pine スクリプトにインポートできます。 Python は柔軟性と使いやすさがあるため、この設定でのバックエンド処理、特に大規模なデータセットや複雑なフィルターを扱う場合に最適です。 💡
基本的に、これらのソリューションは、Pine Script のグラフ作成の強みとデータ取得における限界との間のギャップを埋める方法を示しています。純粋な Pine スクリプトを使用する場合でも、JavaScript や Python などの外部ツールを統合する場合でも、鍵となるのは、データのフィルタリングと視覚化に最適化された方法を活用することです。 Pine スクリプトの「request.security()」や JavaScript の「axios.get()」などのコマンドを使用することで、開発者は独自のニーズに合わせてカスタマイズされた強力なスクリーナーを構築できます。ツールを組み合わせることで、Pine Script の機能が拡張されるだけでなく、証券分析に対するより効率的でスケーラブルなアプローチが保証されます。 🚀
Pine スクリプトの動的株式スクリーナー: 証券の取得、フィルター、表示
モジュラーロジックで証券をフィルタリングするためのバックエンド Pine スクリプト ソリューション
// Step 1: Define security list (manual input as Pine Script lacks database access)
var securities = array.new_string(0)
array.push(securities, "AAPL") // Example: Apple Inc.
array.push(securities, "GOOGL") // Example: Alphabet Inc.
array.push(securities, "MSFT") // Example: Microsoft Corp.
// Step 2: Input filter criteria
filter_criteria = input.float(100, title="Minimum Volume (in millions)")
// Step 3: Loop through securities and fetch data
f_get_filtered_securities() =>
var filtered_securities = array.new_string(0)
for i = 0 to array.size(securities) - 1
ticker = array.get(securities, i)
[close, volume] = request.security(ticker, "D", [close, volume])
if volume > filter_criteria
array.push(filtered_securities, ticker)
filtered_securities
// Step 4: Plot filtered securities on the chart
var filtered_securities = f_get_filtered_securities()
for i = 0 to array.size(filtered_securities) - 1
ticker = array.get(filtered_securities, i)
label.new(bar_index, high, ticker, style=label.style_circle, color=color.green)
代替アプローチ: データ集計には JavaScript を使用し、グラフ作成には Pine スクリプトを使用する
データの前処理のための JavaScript と結果を視覚化するための Pine スクリプトの組み合わせ
// JavaScript Code: Fetch and filter securities from an API
const axios = require('axios');
async function fetchSecurities(exchange) {
const response = await axios.get(`https://api.example.com/securities?exchange=${exchange}`);
const filtered = response.data.filter(security => security.volume > 1000000);
return filtered.map(security => security.ticker);
}
// Save tickers to a file for Pine Script
const fs = require('fs');
fetchSecurities('NASDAQ').then(tickers => {
fs.writeFileSync('filtered_tickers.txt', tickers.join(','));
});
// Pine Script Code: Import and visualize filtered securities
// Load tickers from an external source
filtered_tickers = str.split(input.string("AAPL,GOOGL,MSFT", "Filtered Tickers"), ",")
// Plot the tickers on the chart
for i = 0 to array.size(filtered_tickers) - 1
ticker = array.get(filtered_tickers, i)
label.new(bar_index, high, ticker, style=label.style_circle, color=color.green)
データ管理に Python を使用し、レンダリングに Pine スクリプトを使用する
データの取得と証券の事前フィルタリングのための Python バックエンド
# Python Code: Fetch securities and write filtered data to a file
import requests
def fetch_securities(exchange):
response = requests.get(f'https://api.example.com/securities?exchange={exchange}')
data = response.json()
return [sec['ticker'] for sec in data if sec['volume'] > 1000000]
tickers = fetch_securities('NASDAQ')
with open('filtered_tickers.txt', 'w') as file:
file.write(','.join(tickers))
// Pine Script Code: Visualize pre-filtered data
filtered_tickers = str.split(input.string("AAPL,GOOGL,MSFT", "Filtered Tickers"), ",")
for i = 0 to array.size(filtered_tickers) - 1
ticker = array.get(filtered_tickers, i)
label.new(bar_index, high, ticker, style=label.style_circle, color=color.green)
Pine Script Screener をカスタマイズして機能を強化する
株式スクリーナーを構築する上で重要な側面の 1 つは、 パインスクリプト 取引所から直接データにアクセスする場合の限界を理解しています。 Pine Script は高度な計算とチャート オーバーレイを処理できますが、取引所から証券の完全なリストを取得することはネイティブにはサポートされていません。これに対処するために、開発者は多くの場合、Pine スクリプトと外部データ ソースを組み合わせます。たとえば、Alpha Vantage や Quandl などの API を使用すると、データの取得に役立ち、出来高しきい値、RSI 値、移動平均クロスオーバーなどの条件に合わせて処理できます。このアプローチにより、トレーダーはデータに基づいた洞察を戦略に組み込むことができます。 📊
もう 1 つの手法は Pine スクリプトを利用することです 安全 創造的に機能します。これは従来、特定のシンボルのタイムフレーム全体でデータを取得するために使用されていましたが、一部の開発者はこれを利用して、複数の事前定義されたティッカーから指標を取得しています。この方法では、ティッカーの配列を設定し、それらを反復処理し、満たされた条件に基づいてチャートを動的に更新します。この方法は新しいティッカーに対しては動的ではありませんが、事前定義されたウォッチリストや人気のあるインデックスに対してはうまく機能します。 💡
スクリーナーを確実に効果的にするには、フィルタリングの条件を最適化することが不可欠です。たとえば、「出来高が 100 万を超え、終値が 50 日 SMA を超えるティッカーのみを表示する」などのルールを追加すると、スクリーナーを実行可能にすることができます。このようなルールを使用すると、色付きのラベルやプロット マーカーなどの視覚補助機能を使用して、潜在的な候補を迅速に特定することができます。 Pine Script の機能と外部データ処理を組み合わせることで、トレーダーは独自の取引戦略に合わせて高度にカスタマイズされたスクリーナーを作成できます。 🚀
Pine Script カスタム スクリーナーに関するよくある質問への回答
- スクリーナーを作成する場合の Pine スクリプトの主な制限は何ですか?
- Pine Script は、取引所からすべての証券のリストを動的に取得することはできません。ティッカーを手動で入力するか、外部 API に依存する必要があります。
- キャンパインスクリプト security 関数は複数のティッカーのデータを取得しますか?
- はい、ただし配列内のティッカーを手動で指定する必要があります。事前定義されたリストにはうまく機能しますが、リアルタイムの取得はサポートしていません。
- 外部 API はどのように Pine Script を補完できるのでしょうか?
- Alpha Vantage や Quandl などの API は、取引所全体のデータをフェッチできます。 Python または JavaScript で処理し、その結果を Pine Script で使用できます。
- 複数のシンボルを動的にプロットすることは可能ですか?
- 直接ではありません。シンボルを事前定義するか、リストをインポートしてから、次を使用する必要があります。 label.new() または plot() それらを視覚化するために。
- Pine Script の株式スクリーナーに最適なフィルターは何ですか?
- 一般的なフィルターには、出来高しきい値、SMA クロスオーバー、RSI 買われ過ぎ/売られ過ぎレベル、MACD シグナルが含まれます。これらは条件を使用してコード化され、ループ経由で適用されます。
カスタマイズされたスクリーニング ソリューションの作成
Pine Script を使用して株式スクリーナーを構築するには、創造性とその機能の理解が必要です。のようなツールを活用することで、 安全 動的データ取得のための外部スクリプトを使用すると、プラットフォームの制限を克服できます。このアプローチにより、トレーダーはカスタマイズされたフィルターを戦略に効果的に統合できます。 💡
Pine Script は取引所からの証券の取得をネイティブにサポートしていない可能性がありますが、そのチャートの強みと外部ソリューションを組み合わせることでギャップを埋めます。適切なフィルタリングおよび視覚化テクニックを使用すると、トレーダーは実用的な洞察を作成し、市場での意思決定プロセスを改善できます。既成概念にとらわれずに考える人にとって、可能性は無限大です。 📊
Pine Script Screener 開発のソースとリファレンス
- Pine Script の機能と制限について詳しく説明します。ドキュメントのソース: TradingView Pine スクリプトのドキュメント 。
- データ処理を強化するための API 統合を検討します。外部ソース: アルファヴァンテージAPI 。
- 取引自動化における JavaScript と Python の創造的な使用法について説明します。ブログソース: 中 - プログラミングとトレーディング 。
- 株式スクリーニング担当者向けに外部データと Pine スクリプトを組み合わせることに関する洞察を提供します。コミュニティのディスカッション: スタック オーバーフロー - Pine スクリプト タグ 。