mql5-indicator-patterns について
mql5-indicator-patterns は、MetaTrader 5 向けの MQL5 カスタムインジケーターを作成・デバッグするスキルです。表示設定、バッファ管理、再計算のパターンを扱い、よくある描画問題の回避に役立ちます。
主な機能
- 01小さな値に合わせた表示スケール設定
- 02表示・非表示バッファの構成
- 03新しいバーの検出と再計算管理
- 04ウォームアップ範囲と描画位置の計算
- 05表示や更新に関する問題の診断
活用シーン
- 01カスタム MQL5 インジケーターの作成
- 02空白やずれのある描画の修正
- 03再計算時のローリングウィンドウのずれ防止
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill mql5-indicator-patternsインストール後、Claude Code で/mql5-indicator-patternsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/buffer-patterns.mdcomplete-template.mddebugging.mddisplay-scale.mdevolution-log.mdrecalculation.md詳細
MQL5 ビジュアルインジケーターパターン
適切な表示、バッファ管理、リアルタイム更新を備えたカスタム MQL5 インジケーターを作成するための、実戦で検証済みのパターンです。
自己進化するスキル:このスキルは使用することで改善されます。手順に誤りがある、パラメーターがずれている、または回避策が必要になった場合は、後回しにせず、すぐにこのファイルを修正してください。実際に再現できる問題がある場合にのみ更新してください。
このスキルを使用する場面
次のような場合に、このスキルを使用してください。
- MetaTrader 5 用のカスタム MQL5 インジケーターを作成するとき
- インジケーターの表示やバッファの問題をデバッグするとき
- 適切なウォームアップ処理を伴う OnCalculate を設定するとき
- 新しいバーを検出するパターンを実装するとき
クイックリファレンス
基本パターン
表示スケール(小さい値が 1.0 未満の場合):
IndicatorSetDouble(INDICATOR_MINIMUM, 0.0);
IndicatorSetDouble(INDICATOR_MAXIMUM, 0.1);
バッファ設定(表示用+非表示):
SetIndexBuffer(0, BufVisible, INDICATOR_DATA); // Visible
SetIndexBuffer(1, BufHidden, INDICATOR_CALCULATIONS); // Hidden
新しいバーの検出(ずれを防止):
static int last_processed_bar = -1;
bool is_new_bar = (i > last_processed_bar);
ウォームアップ計算:
int StartCalcPosition = underlying_warmup + own_warmup;
PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, StartCalcPosition);
よくある落とし穴
何も表示されない:明示的にスケールを設定してください(「表示スケール」リファレンスを参照)
ローリングウィンドウのずれ:非表示バッファと新しいバーの検出を使用してください(「再計算」リファレンスを参照)
プロットの位置ずれ:正しい PLOT_DRAW_BEGIN を計算してください(「完全なテンプレート」リファレンスを参照)
前方インデックス配列:常に ArraySetAsSeries(buffer, false) を設定してください
主なパターン
本番環境向けの MQL5 インジケーターでは:
- 小さい値(範囲が 1.0 未満)には明示的なスケールを設定する
- 再計算の追跡には非表示バッファを使用する
- 新しいバーの検出によってローリングウィンドウのずれを防ぐ
- 静的変数で状態を効率よく維持する
- 適切なウォームアップ計算で位置ずれを防ぐ
- コードを分かりやすくするために前方インデックスを使用する
これらのパターンにより、実際の MT5 開発で発生する最も一般的なインジケーター開発の問題を解決できます。
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| インジケーターウィンドウに何も表示されない | 小さい値に対するスケールが未設定 | INDICATOR_MINIMUM/MAXIMUM を明示的に設定する |
| 値が時間とともにずれていく | ローリングウィンドウがリセットされていない | 非表示バッファと新しいバーの検出を使用する |
| プロット開始位置のずれ | PLOT_DRAW_BEGIN が誤っている | underlying_warmup + own_warmup を計算する |
| 配列インデックスが逆になる | シリーズモードが有効になっている | ArraySetAsSeries(buffer, false) を呼び出す |
| バッファ値が正しくない | INDICATOR_DATA 型が誤っている | 非表示バッファには INDICATOR_CALCULATIONS を使用する |
| バッファに関するコンパイルエラー | バッファ数が一致していない | #property indicator_buffers と SetIndexBuffer の値を一致させる |
| インジケーターが更新されない | OnCalculate の戻り値が誤っている | 計算が成功したことを示すため、rates_total を返す |
| パフォーマンスの問題 | すべてのバーを再計算している | prev_calculated 以降のみ再計算する |
リファレンスドキュメント
詳しい情報については、以下を参照してください。
- 表示スケール - 小さい値でインジケーターウィンドウに何も表示されない問題を解決
- バッファパターン - 表示用および非表示バッファの構成
- 再計算 - バーの検出とローリングウィンドウの状態管理
- 完全なテンプレート - すべてのパターンを含む、動作する完全な例
- デバッグ - 表示問題のトラブルシューティング用チェックリスト
実行後の振り返り
このスキルの実行後、終了する前に次の点を確認してください。
- コマンドは成功しましたか? — 失敗した場合は、失敗の原因となった手順またはエラーテーブルを修正してください。
- パラメーターや出力に変更はありましたか? — 基盤となるツールのインターフェースに変更があった場合は、使用例とパラメーターテーブルを更新して、実際の内容と一致させてください。
- 回避策が必要でしたか? — 別のフラグや追加手順などの工夫が必要だった場合は、次回同じ回避策を使わなくて済むように、この SKILL.md を更新してください。
問題が実際に再現できる場合にのみ更新してください。推測に基づく更新はしないでください。