QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILE

Программирование

QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILE。
トレーディングロボットは、プログラムコードと同様に、特定の言語で作成できます。QPILEはその1つです。この記事では、この言語を検討し、QPILE言語と
LUA言語を比較し、この言語のロボットの例も示します。

QPILEに関する一般情報

QPILEは、QUIK Programmable Interface andLogicEnvironmentの略語です。

これは、QUIKワークステーションによって解釈される一連のコマンドです。これは主に証券ポートフォリオの価格を計算するために使用されます。この言語は次の目的にも使用されます。

  • ブローカーのデスクトップとポートフォリオ内のクライアントの資産の価格の動的な再計算。後者の場合、それらの合計価格も再計算されます。
  • 証拠金貸付のための独自のアルゴリズムとデータを使用して、欠落している指標を見つける。
  • 適切な取引戦略を開発する。

言語は、テーブルの構造(列と行の指定、数式)を記述します。後者では、数学演算、変数、他のテーブルのデータを計算に使用できます。QUIKサーバーまたはユーザーのディスクからロードされたプログラムコードは、数式の値を計算する言語インタープリターによって処理されます。1つのプログラムのテーブルには1つのデータソースがありますが、計算は複製されず、システムの効率に影響を与えません。QUIKテーブルを操作する場合、QPILEのテーブルには標準機能があります。職場のQUIKにはQPILEコードデバッガーが搭載されています。https://articles.opexflow.com/software-trading/torgovyj-terminal-quik.htmこの言語を使用すると、特定の構造で新しいテーブルを記述したり、特定の値でセルを強調表示したり、数式に基づいてフィールドを計算したりできます。ユーザーは、音声信号またはテキストメッセージの形式で通知を受け取ります。QPILEのテーブルは、ODBCおよびDDEサーバーを介して編集、印刷、コピー、エクスポートできます。初期データはQUIKテーブルからのものです。

  • 実行および非人称を含むトランザクション。
  • 店頭取引および注文のストップ注文を含む注文-決済取引の取引のレポート。
  • 「クライアントポートフォリオ」、「購入/販売」
  • お金、取引口座、商品による参加者のポジションからのデータ。

QPILEに基づくテーブルは、コンテキストメニューを介してテキストファイルにコピーしたり、テクニカル分析システムにエクスポートしたりすることはできません。また、それらに基づいてチャートを作成することもできません。QPILEベースのテーブルはフィルタリングまたはソートできません。

テーブルでの作業

プログラムコードをロードするには、サービスメニューを選択してから、QPILEスクリプトを選択する必要があります。Ctrl+F11の組み合わせを使用することもできます。「追加」をクリックして目的のファイルを選択する必要があります。拡張子は.qplで、その名前は[使用可能なスクリプト]リストに表示されます。
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILEプログラムにエラーが発生した場合、システムは「メッセージウィンドウ」に通知を送信します。この通知には、欠陥のあるファイルの名前とエラーのある行番号が含まれています。ファイルに障害が見つからなかった場合、次のデータがフィールドに表示されます。

  • テーブル名;
  • 列とクライアントの数。
  • 識別子とクライアントのリスト。
  • パラメータのリストとファイルのソースコード。

QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILE[ローカルにダウンロード]ボタンを使用すると、ファイルからテーブルを取得できます。[サーバーにアップロード]ボタンを使用すると、プログラムがサーバーに送信され、すべてのユーザーがアクセスできるようになります。テーブルを作成するには、[テーブルの作成]をクリックします。「使用可能なスクリプト」で、実行する必要のあるプログラムを選択し、「クライアントフィルター」を通過する行数を設定し、必要な列とその順序を定義します。
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILE計算の一時停止と再開、計算の再開とデバッグモード、説明のファイルへの保存、式のデモンストレーション、およびスクリプトパラメーターはコンテキストメニューで使用できます。

QPILEコンストラクト

データ型

  • 文字列-文字列。
  • Doubleは浮動小数点数です。
  • コレクション-コレクション。
  • マップ-連想配列-キーごとに情報を取得できるようにするペアのシーケンス。

加算、減算、乗算、除算の算術演算が適用されます。論理式「and」、「or」、equals、more、less、不等式、条件付き構文「if …then…」も使用されます。

機能

関数はプログラムのどこにでも配置でき、異なる名前を付けることができます。合計で18の数学関数と関数のグループを使用して、テーブルとパラメーター、連想配列、テーブルのリスト、およびその他のタスクの値を取得できます。一年生:

  1. 引数のサイン、コサイン、タンジェント、コタンジェントの値を返したり、引数の指数を計算したり、ランダムな数値を生成したりできる数学関数。
  2. 一般的なコマンド:グローバル変数を初期化するためのNEW_GLOBALとメッセージを開くためのMESSAGE。

使用する関数:

  • オブジェクトのコレクション(コレクション)。これらを使用すると、新しいコレクションを作成したり、必要な数の要素を返したり、目的の値を置き換えたり挿入したりできます。
  • 連想配列(MAP)。アレイの作成と管理に役立ちます。
  • ファイル-テキストファイルを操作し、プログラムのログログを維持します。ファイル名には、そのファイルへのパスが含まれている場合があります。
  • 文字列
  • グラフ。関数GET_CANDLEはキャンドルデータにアクセスし、GET_CANDLEEXは連想配列を返します。
  • アプリケーション。注文を作成して取引システムに送信します。
  • タグ。チャート上のそれらの構造と設置。1つまたはすべてのラベルの追加、削除、特定のラベルのパラメーターの取得と設定。

次の機能もあります。

  1. 任意のQUIKテーブルの行と使用可能なパラメータのリストにアクセスするため。職場のテーブルデータへのアクセス。これには、MAPを返すGET_ITEMと、エントリ数を返すGET_NUMBER_OFが含まれます。
  2. プログラム可能なテーブルを操作するには。これらのコマンドは、OWNテーブルで動作します。前の段落の標準関数とこれらの関数で読み取ることができます。このグループには、インデックス付きの行を追加、変更、削除し、OWNテーブルを完全にクリアするためのコマンドが含まれています。

値を取得するには:

  1. 現在の取引の表。GET_PARAM(_EX)コマンドを使用して交換情報パラメーターを取得します。
  2. 見積もりウィンドウ。金融商品相場の値を取得する。
  3. 楽器とお金によるポジションの表。コードによるクライアント、会社、商品、デポアカウントのデータの取得。

サービス機能-現在の取引セッションの日付、連想系列、現在の日付と時刻を返し、接続状態を決定し、計算モードを中断します。

プログラムのデバッグ

プログラムの動作の段階的な制御は、「デバッグ」ウィンドウで実行されます。コンテキストメニュー「デバッグモードで計算を開始」から開きます。また、breakpoint()コマンドで開くこともでき、プログラム行は赤で強調表示されます。ウィンドウには、プログラムコードと変数値のフィールドが含まれています。ウィンドウの下部には、「次のステップ」、「実行の続行」、「計算の停止」のボタンがあります。F5を押すとプログラムの実行が続行され、Shift + F5の組み合わせでデバッグが停止し、F10キーが次の行に移動します。

QPILEまたはLUA?

LUAは、トレーディングロボットを作成するための新しいプログラミング言語です。QPILEと同様に、QUIK端末に実装されます。https://articles.opexflow.com/programming/lua.htm取引用の取引ロボットの開発専用のサイトは、QPILEに対するLUA言語の利点を示しています。そのため、開発者ツールとオブジェクト指向プログラミングメカニズムを備えた、コンパイルされていないスクリプトおよびバイトコードとして機能できます。他のプログラミング言語で書かれたオブジェクトは、LUAプログラムに接続できます。LUAは、メタテーブルを含む8つのデータ型を提供します。LUA言語はマルチスレッドで高速であり、トランザクションとターミナルイベントは非同期です。LUAはQPILEよりも一般的であり、多くの拡張機能が作成されています。

QPILE言語は非推奨になりました。フォーラムの専門家はLUAの使用を推奨しています。有用で効果的なプログラムはまだ使用されていますが。

ただし、QPILE言語はLUAに比べて単純なので、プログラミングの経験がない場合は、QPILEを選択することをお勧めします。この言語では、複雑な計算を実行する必要がない場合は、単純なロボットを作成できます。

QPILEでトレーディングロボットを作成するにはどうすればよいですか?

トレーディングアドバイザーを作成するには、次のプログラムが必要です。

  1. ITSクイック。
  2. Notepad++コードエディタ。
  3. QPILEへのガイド。
  4. Notepad++でコードを検出するためのXMLプラグイン。

これらのプログラムをダウンロードしてインストールします。userDefineLang.xmlをパスC:\ Users \ User \ AppData \ Roaming \ Notepad ++ \に配置して、言語構文を有効にします。
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILEまず、以下の取引戦略を作成しましょう。スクリプトは、毎分最後の数本のろうそく足の高値と安値を計算し、楽器の現在の価格を確認する必要があります。証券の価格がその期間の最大値または最小値に達した場合、ポジションは必要な方向に開かれます。ショートのシグナルを受信すると、ロングポジションは自動的にクローズされます。ロボットはGAZPツールを使用し、時間枠は1分に設定されています。高低測定深度は5キャンドルに設定されています。Longを入力するには、ルールが設定され、期間の最大値の現在の価格の共通部分が設定されます。現在の価格がこれらの5つのキャンドルの最小値を超えると、ロボットはショートに入ります。基本設定とサーバーの日付と時刻を使用して、Notepad++でコードのブロックを記述します。このコードは次の図に示されています。
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILEコードの最初の4行は、プログラムヘッダーを形成します。6行目と44行目の間は、ロボットの内容を含むプログラムの本体です。7〜12行目には、機器、グループ、クライアントのコード、MICEXのアカウント番号などのユーザー設定が含まれています。これらの値は、プログラムの実行中に変更されません。13〜16行目は、変数の初期値です。これらは、反復パスごとにゼロにリセットされます。17〜21行目には、サーバーの日付と時刻を使用するための指示が含まれています。このデータはDATETIME関数に渡され、テキスト形式に変換されます。22〜29行目は、受信したデータをテーブルに送信します。コードを保存し、qpl拡張子を指定する必要があります。
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILECtrl + F10を押し、生成されたqplファイルを選択して、QUIKでプログラムを開きます。Ctrl + F11の組み合わせを使用して、[ポートフォリオの操作]ウィンドウを開き、ポートフォリオの計算期間を5分に設定します。Ctrl + F12を押して、テーブルに表示する列を設定します。写真はロボットの作業結果です。
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILEプログラムにさらにいくつかの関数と条件を追加しましょう。
「ユーザー設定」ブロックには、最後のN個のバーを取得する機能で使用されるNUMBER変数とINTERVAL変数が追加されています。DATETIME関数はサーバーの日付と時刻を設定し、現在の日付と時刻の関数CURDATEとCURTIMEがサーバーから呼び出されます。現在の時刻は24行目の数値に変換されます。26行目は、アルゴリズムが実行される時刻を10:00:01から18:40:00UTCまで設定します。
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILE
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILE
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILEQUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILEほとんどの場合、インジケーター、オシレーター、統計計算は、チャートの最後のN個のキャンドルによって計算されます。QPILEには、N期間前のろうそく足の数を収集する関数はありませんが、テキスト形式で日付と時刻によってチャート上のろうそく足にアクセスするGET_CANDLE関数があります。このコードには、最後のN個のバーOHLC()を取得する関数が含まれています。COLLECTIONリストにネストされた最後のキャンドルのパラメーターを使用してコレクションを作成します。プログラムはINTERVAL値をチェックし、0〜60の範囲内にない場合は、値が許可された範囲に対応していないことを示すメッセージが表示されます。キャンドルを含むMAPコレクションが88行目に作成されています。新しいキャンドルから古いキャンドルへのINTERVALステップを使用して、チャートを必要な深さまでポーリングするFORループ。90行目では、サイクルが宣言された後、ロボットはインターバルを戻します。GET_CANDLEでキャンドルを入手すると、INSERT_COLLECTION_TEAM関数を使用して、それをBARLISTコレクションに配置します。OHLC()コマンドの操作の結果として、BARLISTには、商品チャートの最後のろうそくがNUMBERの量で補充されます。コレクション内の要素の数は、GET_COLLECTION_COUNT()コマンドによって要求され、BARCOUNT変数によって報告されます。サーバーの日付、時刻、INSTRUMENT変数とBARCOUNT変数の値は、OUTPUTのSET_VALUE()関数によって報告されます。この配列は、CREATE_MAP()コマンドによって作成されます。データはカスタムテーブルに分類されます。これは下の写真で確認できます。INSTRUMENT変数とBARCOUNT変数の値は、OUTPUTのSET_VALUE()関数によって報告されます。この配列は、CREATE_MAP()コマンドによって作成されます。データはカスタムテーブルに分類されます。これは下の写真で確認できます。INSTRUMENT変数とBARCOUNT変数の値は、OUTPUTのSET_VALUE()関数によって報告されます。この配列は、CREATE_MAP()コマンドによって作成されます。データはカスタムテーブルに分類されます。これは下の写真で確認できます。
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILE

QPILEでのロボットの取引-既製のソリューション

移動平均ロボット

デモロボットは実際の取引には適していません。
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILEロボットには5つのパラメータが含まれています。DATE、TIME、PRICE識別子の値はレベル30に設定されています。MOVINGおよびTP識別子はゼロ精度に設定されています。QPILEで記述された移動平均のロボットコード:

N.モロシュキン位置計算機

現在のアスク価格とビッド価格でのロングポジションとショートポジションの最大許容ドローダウンとターゲットのレベルを計算するためのプログラム。レベルは、ポジションエントリーボリュームの2つの値に対して計算されます。ロボットは、バーの上方向のポジションを開く計算を使用して、始値から1ステップでストップオーダーを割り当てるときに、許容ポジションボリュームを見つけます。見つかったレベルはターミナルウィンドウに入力され、その後価格チャートに反映されます。トランザクションは、特定の商品に対して固定されています。ポジションが開かれると、ロボットはそのパラメータの計算を開始します。位置の変更に応じて、割り当てられた注文が調整されます。
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILE
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILE

ボリュームフィルター

ろうそく足の体積の算術平均を計算し、それをX係数による平均積と比較するためのロボットポートフォリオ。選択した期間にプロットされたチャートで正しく機能します。
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILE

オプションギリシャ人

オプションの「ギリシャ文字」を計算して表示するためのポートフォリオ。ブラックシャワー方式とは異なります。
QUIKのトレーディングロボットをプログラミングするためのアルゴリズム言語QPILE

QUIK用TRIXトレーディングロボット

プログラムはTRIXインジケーターに基づいています。インジケーターが指定されたレベルのゼロラインより上で閉じると、ロボットはロングポジションになります。ポジションは、テイクプロフィット、ストップロス、またはトレーリングストップによってクローズされます。

M4プリプロセッサ

QPILEおよびLuaを使用するためのプログラム。実行可能ファイルを含むアーカイブ、ドキュメント、および正規表現解析を含むDLLファイルが含まれます。プログラムを使用するには、実行可能ファイルを解凍し、regexp2をC:\Windowsパスに配置する必要があります。QPILE for QUIKに関するレッスン:https://youtu.be/vMTXwDUujpI QuikターミナルのQPILEにスクリプトをインストールする:https://youtu.be/0B7qL8Svh7Iに組み込まれているQPILEアルゴリズム言語の使用について説明しているgithubのセクションリンクにあるQUIKシステムワークステーション-https://euvgub.github.io/quik_user_manual/ch8.html。QPILEは時代遅れの言語ですが、非常にシンプルで、初心者のトレーダーでもアクセスできます。長い間証明されてきたトレーディングロボットやプログラムは、引き続き取り組んでいます。ただし、より複雑なタスクの場合は、LUAを使用することをお勧めします。

info
Rate author

  1. Владимир Геннадьевич Евсеев

    返信