発明者による量化取引の紹介 - 基礎から実戦まで

作者: リン・ハーン優しさ作成日:2019年6月25日 15:48:58 更新日:2023年10月31日 21:01:08

価格が上から下へと転落し,つまりサポートラインを突破すると,空間の力が強くなると考え,下向きの波が形成され,売り出しのシグナルが生じます.img図4-20

買って開いた後,価格が再びブリンラインの中央線に下がると,多方力が弱くなっている,または空の力が強くなっていると考えて,平仓信号を生成します.

売買条件

複数の株を開設:如果无持仓,并且收盘价大于上轨,并且时间非14:45 空売り:如果无持仓,并且收盘价小于下轨,并且时间非14:45 多頭平衡:如果持多单,并且收盘价小于中轨,或者时间是14:45 空っぽの平行:如果持空单,并且收盘价大于中轨,或者时间是14:45

戦略コードの実装

戦略を実行するには,まず,どのデータが必要か,どのAPIで取得するか,取引論理をどのように計算するか,そしてどの方法で取引を行うか,考えなければなりません. 次に,ステップで実行してみましょう.

ステップ1:CTA戦略の枠組みを使用する

CTA戦略フレームワークとは,発明者による量化公式の標準的なフレームワークで,量化取引戦略の開発の些細な問題を考慮することなく,直接プログラミング取引論理に力を注ぐことができる.例えば,このフレームワークを使用していない場合,注文時に月間移転,注文の買出価格,注文の取引が終わると撤回または追記などの問題を考慮する必要があります.img図4-21

上図は,発明者の量化ツールを使用したCTA戦略の枠組みである. これは,すべての取引論理コードが第3行から記述される固定コードフォーマットである. 種類コードを修正する必要のある以外は,他の場所では変更を必要としない.

上図の品種コードはrb000/rb888であることに注意してください.これは,信号データにはrb000,取引データにはrb888が使用され,自動的に月間移転します.もちろん,特定の品種コードを指定することもできます.例えば,品種コードをrb1910にします.

FMZはJavaScriptのコンモディティ・フューチャー・トレード・クラスバックリを組み込み,策略編集インターフェースで直接クリック引用をコードで使用することができます:img

2つ目のステップ:様々なデータを得る

戦略取引の論理からわかったことは,まず現在の保有状態を取得し,閉店価格とブリンズ帯指標の中下線との相互関係を比較し,市場が閉店しようとしているかどうかを判断することです. 次に,これらのデータを入手しましょう.

K線データを取得する

まず,K線配列と上根K線の収束価格を得ること. K線配列があるので,ブリンズ帯指標を計算できます.img図4-22

グラフに示されているように: 4行目:K線配列を取得します.これは固定形式です. 5行目:K行の長さをフィルタリングします. ブリンバンド指標を計算するパラメータが20であるため,K行が20根未満の場合はブリンバンド指標を計算することはできません. 行6:取得したK線配列から,最初に取得した根K線のオブジェクトから,そのオブジェクトから閉じる価格を得ます. 取得した数列の負数第2要素は,この配列の長さを減2です. r[r.length - 2]); K線配列内の要素は,すべてのオブジェクトであり,オブジェクトには開き価格,最高価格,最低価格,閉じる価格,取引量,時間が含まれています. 閉じる価格を得るために,その後に直接を加えます. と属性名 ((r[r.length - 2].Close) が可能です.

K線タイムデータを取得する

日内戦略であるため,閉店前にポジションを平らにする必要があるので,現在のK線が閉店に近づいているかどうかを判断するには,閉店に近づいているK線であればポジションを平らにし,閉店に近づいていないK線であればポジションを開くことができます.img図4〜23

この写真が示すように: 行8 ルーツKの時間軸属性を取得し,時間オブジェクト ((new Date ((時間軸)) を作成します. 9行目:時間オブジェクトに基づいて,分数と時間数を計算し,根K線が14時45分であるかどうかを判断します.

倉庫データを取得

保有情報は取引戦略の定量化における重要な条件である.取引条件が確立されたとき,保有状態と保有数によって注文を決定することが必要である.例えば:購入開場取引条件が確立されたとき,保有があれば繰り返しの注文は不要である.保有がなければ,注文をすることができます.コードで記述されるのは:img図4-24 グラフに示されているように: 列11:現在の保有状態を取得します.複数注文がある場合,値は1;空き注文がある場合は,値は-1です.持っていない場合は,値は0です.

ブリン帯のデータを取得

次に,ブリン帯指標の軌道,中軌道,下軌道の数値を計算する.まずはブリン帯行列を取得し,行列から上中下軌道の数値を取得する.発明者の定量化ツールでは,ブリン帯行列を取得することは簡単で,直接ブリン帯APIを呼び出すことができます.

2次元の行列は,行列内の行列である. 取得順序は次のとおりです. まず行列から指定された行列を取得し,次に指定された行列から指定された要素を取得します.img図4-25

下図のように,行13〜19は,コードでブリン帯上軌,中軌,下軌の値を取得する.そのうちの行13は,発明者の量化ツールのAPIを直接使用して,ブリン帯配列を直接取得する.行14〜16は,2次元配列の上軌,中軌,下軌配列をそれぞれ取得する.行17〜19は,それぞれ上軌,中軌,下軌配列から,根基Kのブリン帯上軌,中軌,下軌値を取得する.img図4-26

3つ目:取引を完了する

上記のデータをもとに,取引論理と下令取引のコードを書き出すことができます. 形式も非常にシンプルで,最もよく使用されるのはif文です. 文字で記述することができます:条件1と条件2が成立した場合,下令;条件3または条件4が成立した場合,下令. 下図のように:img図4-27

上図では,21行から24行までの行は取引論理と下記の取引のコードである.上から下へは平多,平空,開多,開空である.

複数句 (※23行) を例として,これはif文のである.この文では,単一のコード行を実行した場合,括弧{}を省略することができる.この文は,現存値が0であり,閉じる価格が上線値よりも大きい場合,K行の時間が14:45でない場合,return 1である.

注意して見ると,この数行には,return 1return -1があることがわかります.これは固定形式です.つまり,買っている場合はreturn 1;売っている場合はreturn -1.多くの空白は買っているのでreturn 1;開いている場合はreturn -1.

策略コードの完全版

取引フレームワーク,取引データ,取引論理,買い買いなどを別々に書くことは簡単ではありませんか. 以下は,その戦略のコードです.img図4〜28

注意すべき2つのところがあります. できるだけ (しかし必須ではない) 戦略論理を,根線Kの条件が成立すると,下根Kの条件が成立すると,または上根Kの条件が成立すると,このような復習結果は実盤の結果とほぼ同じであるように書く.そう書いてもよいが,戦略論理が正しいかどうか注意してください. 一般的には,平衡の論理を開場論理の前に書く.そうする目的は,戦略論理があなたの期待に応えるようにする.例えば,戦略論理が逆手に追いつくとき,逆手の規則は,まず平衡し,新しいポジションを開くことです.新しいポジションを開くのではなく,平衡し,再び平衡します.もし私たちが直接平衡の論理を開場論理に書くと,このような問題は発生しません.

概要

上記では,完全な日中量化取引戦略の開発の各ステップについて学びました. 戦略概要,ブリング帯指標計算方法,戦略論理,売買条件,戦略コード実装などです. この戦略事例を通して,発明者の量化ツールのプログラミング方法だけでなく,このテンプレートに基づいて異なる戦略を改造することができます.

量化取引戦略は,主観的な取引経験やシステムの概要に過ぎません. もし私たちが主観的な取引で使った経験やシステムを,それぞれ書き,それをコードに翻訳するならば,戦略を書くことははるかに簡単です. 試してみてください.

予告

量化取引戦略開発において,一つのプログラミング言語しか選択できない場合,Pythonを選択することを躊躇することなく,データ取得から戦略回測,取引まで,Pythonはビジネスチェーン全体をカバーしている.金融量化投資分野では重要な位置を占めています.

授業後の宿題

1、このセクションの知識を使って,双方向の戦略を実現しようとします. 2, 発明者の量化ツール内のJavaScript言語を使用してKDJ指標アルゴリズムを実装してみる.

4.3 パイソン言語への素早い導入

概要

量化取引戦略開発において,一つのプログラミング言語しか選択できない場合,Pythonを選択することを躊躇することなく,データ取得から戦略回測,取引まで,Pythonはビジネスチェーン全体をカバーしている.金融量化投資分野では重要な位置を占めています.

プログラミング言語を学ぶのはなぜか

前回のレッスンを振り返ると,私たちは一緒に学びました: マスク言語,視覚化言語,JavaScript言語,このセクションで学ぶべきPython言語を含む.

実際には,すべてのプログラミング言語には独自の言語特性があり,これらの言語には優劣の分もありません.むしろ,どのプログラミング言語が戦略的に最適であるか,そしてこのプログラミング言語があなた自身に適合しているかを見る必要があります.

また,私たちは,あらゆるプログラミング言語の知識を普及させるために,量子化への扉を開くことを目指しています. 量子化は,私たちが想像するほど,深遠で,遠くには行きません.

量化取引 なぜPythonを使うのか

量化トランザクションのプロセスは,データ取得,分析,処理などである.データ分析において,他の言語は,Pythonのように計算精度も性能も維持できない.特に,タイムシーンのデータ (K線はタイムシーンのデータである) の処理において,Pythonはよりシンプルで便利な利点がある.また,他のプログラミング言語よりも,Pythonは簡潔で学習が容易で,読みやすいPythonプログラムは英語を読むように感じます.

Python を選択する5つの理由

1. 量化が広く利用される:

アメリカでQuantopianと国内で発明者が量化できるPythonは,

2. シンプルで簡単に学ぶ:

Pythonのデザイン哲学は,ユーザ中心であり,デビューが容易な解釈言語である.

3. オープンソース:

学習と使用の効率性を高めるための,利用料がなく,オープンソースの共有.

4. 豊かな図書館:

コンピュータは,データ処理,データ処理,視覚化,統計分析,技術分析,機械学習など,

5. アプリのインターフェース:

各プラットフォームのデータは,呼び出しを保存し,リアルタイムで取引をリンクして注文するインターフェースを取得します.

完全な戦略

このセクションの重要な知識を迅速に理解するために,発明者による量化JavaScript言語の簡単な紹介の前に,このセクションの名詞の概念について最初の理解があります.

複数の株を開設:現在のポジションがない場合,5周期均線が20周期均線より大きい.空売り:現在のポジションがない場合,5周期均線が20周期均線より小さい場合.多頭平衡:当時は複数の单元を保持している場合,5周期均線が20周期均線よりも小さい.空っぽの平行:現在空き注文を保持している場合,5サイクル平均線が20サイクル平均線よりも大きい.

Pythonでコードを書けば,こんな感じです.img図4〜29

上図のコードは,Pythonで書かれた完全な量化取引戦略である. リアルディスクで実行され,自動的に取引を注文できる. コード量から見ると,PythonはJavaScriptよりもはるかに多く,それはCTA取引フレームワークを使用していないからです.

しかし,戦略全体の設計プロセスはほぼ同じです. 市場種を設定し,K線データを取得し,保有情報を取得し,取引論理を計算し,買い買いをします. つまり,プログラミングの文法が異なるが,書き出す戦略論理は同じです. 次に,Pythonの基本的な文法を学びましょう.

バージョン選択

Pythonには2つのバージョンがあり,Python2とPython3です. かつては,Pythonは双管銃のようなもので,一度に1本しか弾丸を発射できないという段落がありましたが,どちらが正確なのかは決してわかりません. ですから,Pythonに初心者であれば,Python3を直接学ぶことをお勧めします. それは最新のものであり,Pythonコミュニティが常に維持しているからです.

アイデンティティ

変数の名前です. 次の図では,test,test10,test10,test10 といった変数の名前があります.デモなど.Pythonのすべての ((変数,関数名,操作者) は,大文字で区別される.つまり,変数名testと変数名Testは2つの異なる変数である.識別子 ((変数,関数,属性,関数パラメータ名) の最初の文字は文字,下図でなければならない.文字は数字でもあり,次の図のように表れます.img図4-30

コメント

解説とは,単行本とブロックレベルの解説を含む非常にシンプルなコードの翻訳または解説である.単行本は井戸号で始まり,ブロックの解説は3つの単引号で始まり,3つの双引号で終わります.img図4〜31

線と縮小

Python の特徴は,コードブロックを表示するために縮小を用いることであり,大括号 {} を使用する必要はない.縮小されたスペースの数は変数的であるが,同じコードブロックの文には同じ縮小スペースの数が含まれなければならない.以下の図のように:この例では,プログラムはエラーを返します.if 条件が成立しても,Trueを出力されません. Python はコードを実行する前に,コードの文法が正しいかどうかを自動的に検査し,コードのフォーマットが間違っている場合は,プログラムは実行されません.その理由は,5 行目のコードが統一されたコードの縮小形式を持っていないからです.img図4〜32

変数

変数は任意の種類のデータを保存できる.直接変数の名前を書くのは変数を作成することだが,変数を作成するときに変数の値が同時に設定される必要がある場合,プログラムがエラーを返します. ====================================================================================================================================================================================================================img図4〜33

データ

Pythonには6つのデータタイプがあり,そのうちの3つは不可変データと3つは可変データである.名義的に不可変データは,一度作成されたら,その値は変更できないし,メモリ内のアドレスがユニークである.可変データは,メモリ内のアドレスへの参照であり,その値が変化した場合,そのメモリアドレスは変化しない. 変えないデータ (※3):Number (※数字) ・String (※文字列) ・Tuple (※要素組) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列) ・Sync (※文字列 変数データ (※3):リスト (※リスト) ・辞書 (※辞典) ・セット (※集合) ・img図4〜34

数字について

Python の数字型は int (整数型),float (浮点型),bool (ブル型),complex (複数型) をサポートする.内蔵された type (型) は,変数の指すオブジェクト型を問い合わせる.img図4〜35

演算子

ほとんどの言語と同様に,Pythonの数学演算は非常に直感的なものである.算術演算子,比較演算子,論理演算子など,学校で学んだことと同じである.算術演算子とは,足し減りの数学演算子である.比較演算子では,2つの値が小さいか小さいかを比較することができる.論理演算子には主に:論理,論理,または,非論理がある.取引策略には,最もよく使用される文字列が簡単にである.例えば,取引策略では,最もよく使用される文字列は種コードである.例えば:rb1910,MA1910.img図4〜36

andは論理と,を代表し,を意味する. orは論理または,を代表し,またはを意味する. andは,すべての条件がtrueであるとき,最終条件がtrueである. orはすべての条件において,いずれかの条件がtrueである限り,最終条件はtrueである.

優先順位

100* (((10-1) /(10+5) という表現がある場合,プログラムはどのステップで最初に計算するのですか? 中学数学ではこう教えられます: (1) 同じレベルの演算である場合,通常は左から右に順番に計算します. (2) 足し算と減算の両方が存在する場合,最初に掛け算,再算と減算します. (3) 括弧がある場合,括弧の中に先行します. (4) 演算定律に準拠している場合,演算定律を使用して簡略化することができます.img図4〜37

ブル値

ブール型は真偽を表す.通常,条件判断とループ文に用いられる.Pythonでは2つの定数を定義している.TrueとFlaseは真偽を表す.実際には,任意のオブジェクトがブール型に変換され,条件判断に直接使用できる.img図4〜38

文字列

文字は文字で,種コードを設定するときにしばしば文字を使用します.例えば,if1905、Pythonの文字は単引数でまたは二引数で括り括りします.加号 + は文字の接続符である.img図4〜39

リスト

リストは,Pythonで最も頻繁に使用されるデータタイプで,リストを容器として想像できますが,容器内の要素は,左から右に順序付けされており,最初の要素は0で,第二の要素は1で,その他です.また,Pythonのリストは,任意のデータタイプを保存することができます.img図4-40

関数

Pythonの関数は,中学校の関数とは本質的に違います. 函数で計算したものを入力して,出力します.img図4-41

if 文

if ステートメントは日常生活でよく出てきます.例えば:今日雨が降ったら賭けます。つまり,条件が True と指定された場合にのみコードが実行されます。注意,コードの縮小形式に注意してください.そうでなければ Python のエラーを生成します!以下の図で示されています:img図4-42

if...else 文

if...else 文は,もし今日雨が降ったら賭ける;もし降ったら賭けないなど,よく使われる文でもある.img図4-43

elif 文

Pythonはスイッチ文をサポートしていないため,複数の条件を判断するときに,Pythonはelif文でしか実行できない.例えば:陽線であれば,私はもっと見ます.そうでなければ陰線であれば,私は空を見ます.そうでなければ,私は観察します.img図4〜44

for 回転する

時に,最近の数日のK線データを取得したい場合,K線配列から,K線データの位置に応じて順番に取得する必要があります.img図4〜45

ループをクリックします

市場が変化していることは知っています. 最新のK線配列を取得したい場合は,同じコードを繰り返し実行する必要があります. 条件がtrueである限り,ループは常に最新のK線配列を得ることができます.img図4-46

break 文とcontinue 文

ループは前提条件付きで,この前提条件がtrueであるときのみ,ループは繰り返し何かを始める.この前提条件がfalseであるときまで,ループは終わらない.しかし,break 文はループの実行中にすぐにループを跳ね出すことができる.continue 文は,あるループを中断し,次のループに続くことができる.img図4-47

返信文

return 文は,関数の実行を停止し,関数の値を返します. return 文は,関数の体内にのみ表示され,コードのどこでも表示されれば,文法エラーが発生します!img図4〜48

戦略構造

戦略構造は,戦略の固定フォーマットとして理解できる.発明者の量化ツールは,コンサルティングモデルを使用している.

その中の4行~7行は,プログラム全体のメイン入力関数である.つまり,コンピュータは4行からコードを実行し,直ぐに5行を実行すると,無限のループに入ります.それから無限のループの中でずっと策略論理関数 (onTick) と休眠関数 (Sleep) を実行します.onTick関数も1行のコードで,あなたは2行で策略論理を書きます.img図4-49

概要

以上は,Python言語の簡単な基礎知識であるものの,簡単な量化取引戦略を書くのに役立ちます. より複雑な戦略を書く必要がある場合は,発明者の量化ツールであるPython言語APIのドキュメントを参照してください.

予告

技術分析のトレンドクラスの戦略では,均線と通路突破は疑いなく2つの門口である. 両方の戦略は,価格動向を把握する目的であるが,両戦略の取引哲学とリスク特性はまったく異なる.このセクションのPython言語の入門を学んだ後,次のセクションでは,通路突破の定量化取引戦略を手本で書き上げる.

授業後の宿題

発明者の量化ツールにあるPython言語で歴史的なK線データを入手しようとします. 2、このセクションの初めの戦略コードを書き,注釈を書いてください.

4.4 Python を使って戦略取引を行う方法

概要

前回の記事では,Python言語の概要,基本的な文法,戦略フレームワークなどについて学びました. 内容は退屈ですが,取引戦略を実現するために必要なスキルであり,学ぶ必要があります.

戦略の概要

多くの取引戦略の中で,唐通路戦略は最も古典的な突破策の一つであるべきであり,1970年代には,外国企業が主流の程序化された取引戦略を専念してシミュレーションテストと研究を行ったとき,最も成功した戦略テストの結果を示した.

その後,アメリカでは,取引史上最も有名な海トレーダーの訓練が行われ,大きな成功を収めた.海の取引方法は秘密であったが,海の取引法が公表されてから10年以上経ってから,海の海が使用しているのが改良された唐通路戦略であることが明らかになった.

突破型取引戦略は,走勢が比較的流暢な取引種に適しています.最も一般的な突破型取引方法は,価格とサポートと抵抗の相対位置関係を利用して,特定の取引の買賣点を判断することです.このセクションの唐津通道戦略も,この原則に基づいています.

ドンチアン通りの戦略規則

ドンチアン通路は,傾向型指標であり,その表情と信号はブリンズ帯の指標と少し似ています.しかし,ドンチアン通路の価格は,一期間の最高価格と最低価格に基づいて構築されています.例えば,最近50のKラインの最高価格の最大値を計算すると,上向きになります.最近50のKラインの最低価格の最小値を計算すると,下向きになります. この指標は,3つの異なる色の曲線で構成され,20サイクル間の最高価格と最低価格が市場価格の変動を示すためにデフォルトで設定されています. 狭い通路は市場変動が少ないことを示し,反対の通路の幅は市場変動が大きいことを示します.

価格が上線を突破すると買い信号であり,反逆的に下線を突破すると売る信号である. 上線と下線は最高値と最低値で計算されるため,通常,価格が上線と下線を突破して上昇することは稀である.ほとんどの場合,価格は上線または下線の一方的な動き,または上線と下線の間の動きに沿っている.

通路計算方法

発明者の量化ツールでは,唐経路の計算方法は非常にシンプルで,指定されたサイクル内の最高価格または最低価格を直接利用して得ることができます.以下の図は示しています. 5行は50サイクル最高価格の最大値, 6行は50サイクル最低価格の最小値です.img図4-50

戦略的論理

ドンチアン通路の使い方はいくつかあり,単独でも使用し,他の指標と組み合わせても使用できます. 本課程では,最も簡単な使い方を採用します.すなわち,価格が下から上へと走行を突破し,上向きのプレッシャーラインを突破すると,多方勢力が強くなると考え,上向きの波動が形成され,買い出しの信号が発生します.価格が上から下向きに走行を突破し,支柱線を突破すると,上向きの力が強くなると考え,下向きの波動が形成され,売り出しの信号が発生します.img図4-51

買い開け後,価格が再び唐通道の中央線に落ちると,多方力が弱くなっている,または空の力が強くなっていると考えて,平衡信号を生成する.

売買条件 複数の株を開設持分がない場合,取引価格が上線値より高くなる場合空売り: 持分がない場合,取引価格が下線より低い場合多頭平衡: オーダー数が多ければ,中途半端な価格を下回る空っぽの平行: 空き切符を保持し,中途半端な価格よりも高値で閉店した場合

戦略コードの実装

戦略の実現の第一歩は,まずデータを取得することであり,データが取引戦略の前提要素であるため,どのようなデータが必要か,どのようにそれを入手するか,想像してみてください. その後,これらのデータに基づいて取引論理を計算し,最後に取引論理を組み合わせて取引を販売します. 具体的なステップは以下の通りです:

ステップ1: 取引データベースを使用する

取引データベースを機能のモジュールとして考えることができる.取引データベースを使うことの利点は,戦略の論理を書くことに力を注ぐということです.例:取引データベースを使用すると,取引先を開く時に,取引データベース内の下記のAPIを直接使用できます.しかし,取引データベースを使用していない場合,取引先を開くときに,取引先価格,請求書に関する問題,取引が完了しない問題,取り消しの問題などについて考える必要があります.img図4-52

上図は,発明者の量化ツールを使用したCTA戦略の枠組みである. これは固定されたコード形式で,すべてのトランザクションロジックコードは4行目から書き込まれています. 他の場所では変更はありません.

JavaScript のテンプレートクラスは組み込まれています. Python は,このテンプレートをコピーして保存する必要があります:https://www.fmz.com/strategy/24288│ │ │ │ │ │ │ │ │ │ │ │

img

2つ目のステップ:様々なデータを得る

戦略取引の論理からわかったことは,まず現在の保有状態を取得し,閉店価格とブリンズ帯指標の中下線との相互関係を比較し,市場が閉店しようとしているかどうかを判断することです. 次に,これらのデータを入手しましょう.

K線データを取得する

まず,K行列の配列と現在のK行列の収束価格を取得します.K行列があるため,N周期の最高価格または最低価格を得るAPIを呼び出すことができます.img図4-53 この写真が示すように: 4行目:K線配列を取得します.これは固定形式です. 5行目:K行の長さをフィルタリングします. N周期の最大値や最小値を計算したので,パラメータは50で,K行が50本未満の場合は計算できません. 6行目:len (レコード) - 1 を使って,K線配列の最後のデータ,つまり最新のK線データを得る.このデータは,次のデータを含むオブジェクトです.開通価格,最高価格,最低価格,閉じる価格,取引量,時間など.これはオブジェクトであるため,直接を使用します.Close () は,最新のK線閉じる価格を得る.

倉庫データを取得

保有情報は量化取引戦略の重要な条件であり,取引条件が確立されたとき,保有状態と保有数によって注文を決定することが必要である.例えば:買い入りのオープン・ポジション取引条件が確立されたとき,保有があれば繰り返し注文する必要はありません.保有がなければ注文することができます.今回は,直接保有情報を関数に包装し,この関数を呼び出すだけで使用できます.img図4-54

グラフに示されているように: これは,空の場合は 0 を返します.多重の場合は 1 を返します.空の場合は -1 を返します. 上記のコードを参照してください: 2行目:mpという名前で関数を作成します.この関数は参数がありません. 3行目: 固定形式の保持式を取得します. 4行目: ストレージの長さを判断します. その長さが等しい場合,それは必ず空格です. だから0を返します. 6行目: for ループを使用して,この行列を横切る. 次の論理は簡単です. 複数行列を保持すると 1 を返します. 空行列を保持すると -1 を返します. 18行目:ちょうど書いた取得情報保持関数mp を呼び出します.

最新の50のK線の最高値と最低値を取得します.

発明者の量化ツールでは,TA.HighestTA.Lowestの関数を直接使用して,論理を自分で書くことなく直接取得できます. そしてTA.HighestTA.Lowestの関数は,数列ではなく特定の値が返されます. これは非常に便利です. それだけでなく,公式には数百の指標関数が組み込まれています.img図4-55

グラフに示されているように: 行19:TA.Highest関数を呼び出し,50サイクル最高価格の最大値を得る 行20: 50 サイクル最低価格の最小値を得るTA.Lowest 関数を呼び出します 行21: 50 サイクル 最大値と 50 サイクル 最低値に基づいて平均値を計算する

3つ目:取引を完了する

上記のデータをもとに,取引論理と下令取引のコードを書き出すことができます. 形式も非常にシンプルで,最もよく使用されるのは,条件1と条件2が成立した場合,下令;条件3または条件4が成立した場合,下令です.img図4-56

この写真が示すように: 22行目: 固定形式のトランザクションクラスデータベースを使用します. 23・24行:これは,私たちが以前学んだ比較演算法と論理演算法を使って,平行多重演算の文です. つまり,当時は多重演算をしていて,閉じる価格が中間線以下であれば,すべてのポジションを平らにするということです. 25,26行: これは平空のリストの文で,私たちが以前学んだ比較演算法と論理演算法を使って,現在の空のリストを保持し,閉じる価格が中間線よりも大きい場合,すべてのポジションを平空にする. 列27:現在の保有状況判断,空置の場合,次のステップへ移動します. 28,29行:閉店価格が上走よりも大きいかどうかを判断し,閉店価格が上走を超えた場合,開場を購入します. 列30・31:閉店価格が下線を下回っているかどうかを判断し,閉店価格が下線を下回っている場合,開場を売却する.

概要

以上では,Pythonで完全な量化取引戦略の開発の各ステップについて学びました. 戦略概要,唐通路の計算方法,戦略論理,売買条件,戦略コード実装など. このセクションは単なる簡単な戦略であり,投球引数として,方法が1つ以上あり,あなたの取引システムに基づいて,異なる取引方法を重ねて,独自の量化取引戦略を形成することができます.

予告

量化取引戦略開発において,プログラミング言語の実行速度の観点から,どの言語が最も速いかは,C++だけが問題ではない.特に衍生品と高周波取引の分野では,C++が独自の言語特異性があり,C++は数値計算において優位性があり,JavaScriptとPythonに比べて速度を数級向上させることができる.将来,衍生品と高周波取引の分野に発展したい場合,これはあなたが見逃してはならないコースである.

授業後の宿題

1、 臨から,本節の戦略を実装する手始め、 2. このセクションの戦略に均線指標を追加して取引頻度を下げることを試みる.

第5章 戦略の復習・調整・改善

5.1 再測の意味と罠

概要

復習は,定量化取引と伝統的な取引が最も異なるところであり,歴史的に起こった実際の市場データ,迅速なシグナル誘発と撮影取引,期間中の業績報告などのデータに基づいています.国内外の株式,商品先物,外貨などの市場に対する戦略開発の最も重要な構成要素の一つです.

復習の意味

前回の章では,主流プログラミング言語の基礎を学び,これらのプログラミング基礎を活用して簡単な取引戦略を書く方法を教えました. 千里道の半分は既に行われています. しかし,策略が書き上げられれば,確実に直接実体化することはできません. 策略がモデルコンテンツを完全に実現し,スムーズに動作できるまで,継続的な復習,復習,復習,復習,復習等が必要です.

量化取引論理の観点から,戦略とは,市場についての認識と仮定の集合に基づいていることであり,リトーストは,これらの仮定が成立し安定しているかどうかを高効率に判断する.歴史的な不安定な時期にどのような損失をもたらす可能性があるか,そしてこれらの損失を防ぐための意思決定を支援する.

また,量化取引の実行の観点から,リトーストは,将来の関数,盗難値,多度適合等などの戦略論理のバグを検出するのに役立ちます.

  • 取引信号の正確性を検証する.
  • 取引の論理とあなたのアイデアが実行可能かどうかを検証します.
  • 取引システムに欠陥を発見し,原始戦略を改良する.

したがって,リトークの意味は,実際の取引過程を歴史的データから可能な限り真摯に復元し,戦略の有効性を検証し,間違った戦略の高額な代償を回避し,取引戦略をシフト,改善,最適化するのに役立ちます.

復習の罠

追いつくトラップの信号が点滅する:

トレーディング戦略は,リトレスの時に静止した歴史的データに基づいている. 実際の取引のデータは動的である. 例えば,最高価格が昨日の閉じる価格よりも大きい場合,オープンポジションを購入する. この開設条件は,実盤では,K線が終わっていない場合,最高価格が動的であり,取引信号が閃く可能性がある.リトレスのとき,リトレスのエンジンは静止した歴史的データに基づいている.

未来を測る罠の関数:

未来関数は未来価格を利用する,つまり現在の条件が将来に変更される可能性があり,同様に未来関数は信号の閃きを引き起こす原因である.したがって,任意の関数は未来関数の特性がある.例えば,の単語が関数に変換される.

下の図のように: の字の変換関数は,波のピークと波谷の転換点を指示し,最新のリアルタイム価格に合わせて自己評価を調整することができるが,現在の価格が変化した場合, の字の変換関数の計算の結果も変化する. 未来関数を持つ関数を使用すると,現在の下注信号が成立し,下注される可能性がありますが, しばらくして, この信号が成立しない可能性があります.img図5-1

トラップの盗難価格を復元する

盗価格行為とは,過去の価格を利用して取引を行うことを意味する.例えば:最高価格が一定の価格よりも大きい場合,開場価格で購入する.この条件は盗価格である.なぜなら,実盤では,最高価格が特定の価格よりも大きいとき,価格は開場価格より一定距離上にあり,開場価格で購入することはできません.しかし,リターンテストでは,購入信号があり,取引が可能である.

また,もし価格が戦略的に設定された固定価格と高く飛んだ場合,リターンで固定価格で取引できる場合もありますが,実盤では,この固定価格は明らかに買えません.

罠の不可能な価格を再測する

取引できない価格は,以下のようなケースに分類されます. 1つ目は,実盤では,停盤時に通常買えず,逆転でも落ちる.しかし,反テストでは取引できる.

2つ目は,取引所の撮影メカニズムは:価格優先,時間優先である. いくつかの品種の取引にはしばしば大量の注文があり,実際の取引では,取引が完了するまで,取引の厚さを待つ必要があります. しかし,再測では,取引が完了することができます.

第3の方法:利息戦略の場合,利息利回し利は高くなります. なぜなら,利回し策は毎回,これらの差を取ったと仮定しているからです. 実際,多くの差を取ることはできません,または片足しか取っていません. 一般的に,あなたの方向に不利な部分が必ず取引先です. その際,すぐに他の足を補う必要があります. この時点で滑り点は1,2ポイントではありません.

第4種:ブラック・スヴァン事件.赤い輪の下にあるように,外為スイスのブラック・スヴァン事件では,表面的には開盤価格,最高価格,最低価格,閉盤価格が見えているが,実際には,その日の極端な市場では,中間価格は空白であり,多くのストップ損失オーダーがあり,踏み台事件を引き起こし,流動性はゼロであり,取引の困難性は非常に大きいが,テストでは損失を止めることができる.img図5-2

トラップの過剰なフィットメントを検出

下の図を見るたびに,私はこう思う:ハハハ...下にある図から,荒唐なモデルが,十分複雑であれば,データに完璧に適応できるとわかる.img図5から5

量化取引の場合は,復習は歴史的データに基づいているが,取引戦略のパラメータがあまりにも多く,または取引論理があまりにも複雑である場合,取引戦略が過剰に歴史的データに適応することを導いた場合,歴史的データのサンプルが限られている.

量化戦略のモデリングプロセスは,本質的に,大量にランダムに見えるデータから局所的な非ランダムなデータを探すプロセスであり,統計学的な知識がなければ,過度に適合する罠に陥るのが容易である.

だから,自分を騙すな.もし,サンプル外データが不十分であることに気づいて,モデルを捨てるのが残念だと感じたり,自分のモデルがうまくいかないことを認めようとしない場合,サンプル外データも同様にうまくいかないまでモデルを最適化し続けると,最後の傷はあなたの本当の銀金でしょう.

トラップの生存者の偏差を復元する

ウォール・ストリートのジョークはこうです. "市場には1000匹のモンスターがいると仮定し,最初の年に500匹のモンスターを排除し,次の年に半分を排除し,250匹を排除し,3年目には125匹を排除します.img図5-4

9年目には最後のオウムが残っている. そして,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ,見ろ.

もちろんこれは冗談ですが,1000人のファンドマネージャーを10年後に10人のファンドマネージャーが10年連続で市場を勝ち取ると考えたことはありますか? しかし,これは偶然や運によって決定され,ファンドマネージャーのスキルとは関係ありません.

左側のリサーチ結果のように,投資家の過半数はすぐに成功すると確信しています.この投資戦略は非常に堅調で,大幅な引き下げはほとんどありません.img図5-5

右図のように,真実はそこにある.左側の回帰曲線は,多くの回帰の中で最もうまく機能する曲線に過ぎません.つまり,左側の回帰の中で,その後ろには多くの劣悪な状況があります.

トラップの衝撃コストを再測する

実際の取引環境では,価格は常に変動しており,あなたが取引機会を好み,注文した瞬間,価格は既に変化している可能性があります.したがって,主体取引と量化取引の両方で,スライドポイント問題は避けられません.

しかし,リトークは静的データに基づいているため,実際の取引環境をシミュレートすることは困難である.例:下注価格が1050の購入価格であるが,実際の取引価格が1051である可能性がある.この現象を引き起こす原理はたくさんあります.例えば:極端な市場時流動性の真空,ネットワークの遅延,ソフトウェア・ハードウェア・システム,サーバーの応答など.

滑らか点がない回測

img図5-6

上記の図のように,滑り点のない回測であり,資金曲線は比較的好ましいが,実物取引における実際の取引価格と戦略回測の理想的な取引価格には差がある.したがって,この誤差を軽減するために,戦略回測を行うとき,2つの滑り点を設定して,購入価格を上昇させたり,販売価格を低下させたりすることができる.

スライドポイントの回測

img図5-7

上の図のように,同じ戦略では,もし2跳躍点を加えた後,リトーストの結果が,リトースト結果と,リトースト結果と,大きく異なる場合,この戦略は改善または新しい戦略を廃止する必要があることを示唆する.特に,取引頻度が高い戦略では,リトースト時に1〜2跳躍点を加えたリトーストを,実際の取引環境に近いものにすることができる.

概要

取引の量化に多くの問題が生じる可能性があるので,私の戦略が問題がないことをどのように証明すべきか,という質問があるかもしれません. 実際には,答えは簡単です. 戦略が現実になる前に,取引のシミュレーションをしばらく行う必要があります. シミュレーション取引の取引価格と再測定時の取引価格がほとんど異なる場合は,この戦略は問題がないことを証明します. 少なくとも戦略論理は問題ありません.

いずれにせよ,経験豊富な取引システム開発者にとって,リトゲットは必須である. なぜなら,それは,戦略のアイデアが歴史的な取引で有効かどうかを証明できるかどうか教えてくれるからです. しかし,多くの場合,リトゲットは将来の利益を意味するものではありません. なぜならリトゲットには多くの穴があり,お金を払わずにレッスンを買うことができず,理解できないからです. そして,これらのレッスンは本物の金と銀で積み上げられています.

授業後の宿題

1 オーバーフィットとは何か? どうしたら避けられるのか? 2 現実生活における生存者偏差とは何か?

5.2 取引を量的に再評価する方法

概要

復習の意義と重要性は疑わぬものであり,量化復習を行うとき,戦略は,可能な限り歴史の真面目な環境に置くべきであり,歴史的環境の詳細を無視すると,全体的な量化復習が無効になる可能性がある.この記事は,量化取引復習を行う方法を説明します.

復習は,データの復習に相当する. 過去のK線データを復習し,実際の取引規則を模倣して買い買いを行い,最終的に時間帯間のシャープ比率,最大復習率,年収率,資金曲線などのデータを集めた.現在,様々な種類の文華金融,柔軟にカスタマイズできるVNPYなど,多くのソフトウェアが復習を行うことができる.

発明者は,商業用量化取引ソフトウェアとして量化し,高性能回測エンジンを搭載し,for-loop (輪回) 回測フレームワークを採用し,ベクトル量化計算をより速く実行し,回測と実盘のコードを統一し,部分的に回測が容易で,実盘が難しい困惑を解決した.

復習インターフェースの紹介

発明者による量化MMA戦略を例として,開発者による量化取引ツールのウェブサイトを立ち上げました.www.fmz.com) ; コントロールセンター, ポリシーパック, ポリシーを選択, 模擬再テストをクリックすると,次のページへアクセスします:img図5-8

復習配置インターフェイスでは,自分の実際のニーズに応じてカスタマイズできます.例えば:復習時間,K線周期,データ種類 (アナログレベルのデータまたは実力盤レベルのデータなど) を設定します. 対照的に,模擬レベルのデータの復習速度が速く,実力盤レベルのデータの復習がより正確です. また,復習時の手続費やアカウントの初期資金なども設定できます.

クリック・マークランゲージ・トレード・クラスバリオは,まず取引設定ラベルを,発明者の量化取引ツールにおけるマークランゲージ・戦略には,2つの回帰実行方法があります.すなわち,閉値モデルとリアルタイム価格モデル.閉値モデルは,現在のK線が終わるまでモデルを実行し,下根K線が始まると取引を実行することを指します.リアルタイム価格モデルは,価格変化ごとにモデルを実行し,取引信号が形成されるとすぐに取引することを指します.img図5-9

デフォルト開場手数とは,回計時開場平衡数を指す.最大単一の取引単位の数は,回計エンジンに委託された単一の取引の最大平衡数である.実盤の取引価格位と設定された取引価格位の間に偏差が生じる.この偏差は,一般的にトレーダーの不利な方向に移動し,取引が追加損失を引き起こすため,滑り点を追加することが必須である.国内商品先物通常,実際の取引環境を模擬するために,1〜2跳,またはそれ以上を追加する.

フューチャーオプションには,復習する契約種,例えばrb000またはrb888を記入する.実盤オプションは,主に実盤取引に使用され,復習中にデフォルト設定を維持することもできます.もし自動復旧進捗をtrueにクリックすると,ポリシーは実盤実行中にロボットを停止した後,ロボットが再起動すると,シグナルを再計算する必要なく,以前からのシグナル位置を自動的に復元します.単一の復試回数を20に設定し,当単位の失敗後に次の単語を再試します.ネットワーク隔離輪はロボットが毎回戦略コードを実行することを意味します.img図5-10

現金取引オプションは,主にデジタル通貨取引を対象とし,リトークでデフォルト設定を保持することもできます. 単一の取引量,最小取引量,定価通貨精度,取引品種の精度,手続費,口座同期時間,利益損失統計間隔などを指定できます. さらに,個々のデジタル通貨取引所については,レバレッジ倍数およびその他の関連設定を設定することもできます.img図 5-11

戦略の復習

復習する前に,まず自分の取引戦略を明確にしてください. ここでは,熱器のサーモスタット戦略を例に挙げます. この戦略は,市場の状況に応じて,トレンド市場においてトレンド戦略を採用し,波動市場において波動戦略を採用します. ソースコードは以下の図です. (また,発明者のウェブサイトの戦略広場から直接ダウンロードできます):img図5〜12 模擬回測インターフェイスで,回測設定を設定した後に,直接回測開始ボタンをクリックすると,数秒後に即座に回測結果が表示される.回測日誌には,回測使用時間,日誌総数,取引回数の記録がある.そのアカウント情報には,戦略回測最終業績の結果が印刷されている:平均利益/損失,保有損失,保証金,手続手数料,予想利益など.img図5-13

ステータス情報欄には,取引種,保有量,保有価格,最新の価格,最後のシグナル種類,保有後の最高価格と最低価格,更新回数と時間,資金情報が記録されている.また,浮動利損失ラベルには,口座の詳細な資金曲線が表示され,一般的に使用されるパフォーマンス指標も含まれています:収益率,年収率,シャープ比率,最大年収変動率,撤回率,基本的にはほとんどのユーザーのニーズを満たします.

その中でも最も重要な業績指標は,シャープ比率である.これは,利益とリスクの両方を考慮する総合指標であり,また,ファンド製品の重要な基準指標であり,一般的に話されるのは,あなたが1ドルあたりどれだけのリスクを負うかである.したがって,シャープ比率が高くなるほど,その価値は良い.

年間波動率は,その名前の通り,日間波動率 x 年間取引日数で,ファンドのリスクを測定する,しかし絶対的にすべてのリスクではない.例えば,戦略Aは波動率が高いが,常に上向きに波動し,利益は良好であり,戦略Bは波動率が小さいが,常に横向きに動いている.我々は戦略Bが戦略Aよりも優れていると言えるだろうか?img図5〜14

最後に,日記情報欄には,取引の特定の時間,取引所,取引所,取引所,取引先の種類,回計エンジンの撮影の取引完了価格,取引数,印刷情報など,回計の際に各取引の撮影状況が詳細に記録されています.img図5-15

復習後

多くの場合,あるいは過半数の場合,リトークの結果は,自分の期待とは大きく異なっています. 結局のところ,長期にわたって安定した収益性を維持する戦略は,簡単には得られません.それはあなたの市場認識力を必要とします.

もしあなたの戦略のリテスト結果が損である場合,絶望しないでください. これは,実際には正常です. まず,戦略論理が誤りなのか,極端なパラメータが採用されているのか,平衡条件が過剰なのか,など,必要に応じて,別の角度から自分の取引戦略と取引理念を再考することができますかを見てください.

もしあなたの戦略の回測結果が非常に良く,資金曲線が非常に完璧で,シャープ比率が1以上またはそれ以上である場合.まずは,喜びを急げないでください. このような状況では,将来関数,または盗難価格,または過剰なマッチ,またはスライドポイントを設定していない場合など,多くの場合,サンプル外データとシミュレーションのリアルディスク取引を使用して,これらの問題を排除することができます.

概要

上記は,取引戦略の再評価の全過程の説明であり,あらゆる細部に具体化されていると言えます. 注意すべきは,歴史的なデータ再評価は,すべてのリスクが知られている理想的な環境です. したがって,戦略再評価の時間は,牛や熊市の一周を経験するのが最適であり,有効な取引回数は100回未満でなければならないので,部分的な生存者偏差を避ける必要があります.

市場は常に変化し進化している.歴史を振り返った良い戦略は,将来は必ず良いとは限らない. 戦略は,振り返る環境における既知のリスクのみに対応できず,将来の未知のリスクにも対応できる. したがって,戦略のリスク耐性および汎用性を高めることは非常に必要である.

授業後の宿題

1. このセクションのポリシーを複製して,パフォーマンスレポートを復習してみてください. 2. 取引経験に基づいて,このセクションの戦略を改善し最適化しようとします.

5.3 戦略回帰の業績報告をどのように読むか

概要

当社の戦略復習が完了すると,発明者による量化取引ツールは,様々なパフォーマンス指標や収益曲線図を含むWebページの出力をします. しかし,これらの指標の定義や内容があまり知られていないため,グループ判断の戦略がうまくいかない可能性があります. 本記事は,戦略復習の業績報告を読むために,戦略の優劣を識別するために,主要な指標概念から始めます. もちろん,ほとんどの量化取引ツールは,このような復習の業績報告を持っています.

客観的で完全な評価

リアルタイムの取引データ記録であれ,歴史的なデータバックテストを用いたリテストレポートであれ,モデルの優劣は取引状況の統計によって評価される.

まず,この例を見てみましょう. 次の図のように,同じ時間周期でテストされた2つのデータセットを仮定すると,どちらのモデルがよりうまく機能するか判断することができます.img図5から16

評価システムの一面性によって,定量化取引システムが不具合に陥る.

トレードシステムは,履歴回帰によって投入される必要があります.履歴回帰によって利用できない取引システムは,長期的に実取引で利益を得ることはできません.履歴回帰は,実盤への取引システムの投入の必須の前提要素です.

歴史的に復習できる取引システムは必ずしも有用な取引システムではないが,歴史的に復習できない取引システムは必ずしも有用ではない. 一般的には,安定性,持続性,期待されるかどうかなどの観点から業績報告を分析する必要がある.img図5から17

しかし,量化トレーダーに接触した人は,冗長で理解が難いリテストパフォーマンスのデータ用語の連鎖に遭遇しているかもしれません. これらのパフォーマンスデータの中で,多くのデータが相互矛盾しています.

上記の表のパフォーマンス指標名詞は,一般的にいくつかの大カテゴリーに分けることができる:パフォーマンス比率,周期分析,様々な曲線,極端な取引分析,など. 厳格なファンド製品の観点から見ても,ほとんどのものは,単なるリベート計算の結果の表示に過ぎず,実際には意味がほとんどない. 例えば:口座資金額需要,保有利益,信頼限界など.

重要な業績指標

最大資産引き下げ率 (Max Drawdown)

この式は,最大回帰計算の公式です.


関連性

もっと

ハイルヒドラ2素晴らしい記事です!

空虚の量化マーク