前回のセクションを勉強した後,私たちは最終的に定量的な取引戦略を書く準備ができています. これは手動取引から定量的な取引への入門の最も重要なステップになります. 実際,それはそれほど神秘的ではありません. 戦略を書くことは,コードであなたのアイデアを実現する以上のものではありません. このセクションは,ゼロから定量的な取引戦略を実装します. 研究の後,誰もがFMZ Quantシステムで戦略を書く方法を知ることができます.
まず,FMZ Quantの公式ウェブサイトを開いてアカウントにログインします.
前章では,移動平均戦略を紹介しました.つまり:価格が過去10日の平均価格よりも高くなった場合,ロングポジションを開きます.価格が過去10日の平均価格よりも低くなった場合,ショートします.しかし,価格が市場の状況を直接反映できるものの,依然として多くの誤った突破信号があります.したがって,私たちはこの戦略をアップグレードし,改善する必要があります.
まず,トレンド方向を判断するために,より大きな期間の移動平均値を選択します. 誤った突破信号の少なくとも半分はフィルタリングされています. 大きいサイクルの移動平均は遅いですが,より安定します. その後,開口ポジションの成功率を高めるために,別の条件を追加します. この大きなサイクルの移動平均値は少なくとも上向きです. 最後に,価格,短期移動平均と長期移動平均の相対位置関係が完全な取引戦略を形成するために使用されます.
上記の戦略のアイデアを使って,この戦略の論理を構築してみることができます. ここでの論理は,天体の動きの法則を計算させないことです. それはそれほど複雑ではありません. これは,以前の戦略のアイデアを言葉で表現する以上のものではありません.
オープン・ロング・ポジション: 現在,ポジションがない場合,閉じる価格が短期移動平均より高く,閉じる価格が長期移動平均より高く,短期移動平均が長期移動平均より高く,長期移動平均が上昇している場合.
オープン・ショートポジション:現在ポジションがない場合,閉じる価格が短期移動平均を下回り,閉じる価格が長期移動平均を下回り,短期移動平均が長期移動平均を下回り,長期移動平均が下がっている場合.
ロングポジションを閉じる:現在ロングポジションを保有している場合,閉じる価格は長期移動平均を下回り,または短期移動平均は長期移動平均を下回り,または長期移動平均が下がっている場合.
クローズ・ショートポジション:現在のショートポジションを保持し,閉じる価格が長期移動平均値よりも高くなったり,短期移動平均値が長期移動平均値よりも高くなったり,長期移動平均値が上昇している場合
上記は戦略全体の論理です. この戦略のテキストバージョンをコードに変換すると,市場コートの取得,指標の計算,ポジションの開閉命令,これらの3つのステップを含むでしょう.
M言語では,閉じる価格を得るAPIは: CLOSEです. つまり,最新のK線閉じる価格を得るためには,コード領域に CLOSEを入力するだけです.
次に指標を計算する.この戦略では,短期間移動平均と長期移動平均という2つの指標を使用します. 短期移動平均は10期移動平均,長期移動平均は50期移動平均であると仮定します. この2つを表現するためにコードを使用するには,以下を参照してください:
MA10:=MA(CLOSE,10); // Get the 10-cycle moving average of the latest K-line and save the result in variable MA10
MA50:=MA(CLOSE,50); // Get the 50-cycle moving average of the latest K-line and save the result in variable MA50
手動取引では,50期移動平均が上昇しているか低下しているか一目で確認できますが,それをコードで表現するにはどうすればよいですか? 移動平均が上昇しているか否かを判断して,注意深く考えてみてください.K線の現在の移動平均は前のK線の移動平均より大きいですか? それとも前回の2つのK線よりも高いですか? 答えはイエスです.移動平均が激落していると言えるでしょう. 同じ方法で下落も判断できます.
MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10
MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling
上記のコードの行8と9に,単語
最後のステップは,注文を出すことであり,論理コードの後に購入販売操作を実行するためにFMZ Quant
MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10
MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling
CLOSE>MA10 AND CLOSE>MA50 AND MA10>MA50 AND MA50_ISUP,BK; //open long position
CLOSE<MA10 AND CLOSE<MA50 AND MA10<MA50 AND MA50_ISUP,SK; //open short position
CLOSE<MA50 OR MA10<MA50,SP;//close long position
CLOSE>MA50 OR MA10>MA50,BP;//close short position
上記の 13 行と 14 行に,別の論理演算子である
上記は,Mプログラミング言語を使用してFMZ Quantプラットフォームで取引戦略を書く全プロセスです. 戦略アイデアを持つことから,戦略思考,論理を記述するためにテキストを使用すること,そして最終的にコードで完全な取引戦略を実装することまで,合計で3つのステップがあります. これは単純な戦略ですが,戦略の戦略とデータ構造が異なります. したがって,このセクションの定量戦略プロセスを理解している限り,FMZ Quantプラットフォームで定量戦略研究と実践を行うことができます.
このセクション の 戦略 を 自分 で 実行 する よう 努力 し て みてください.
このセクションの戦略に基づいて,ストップ・ロースとテイク・プロフィートの関数を追加します.
定量的な取引戦略の開発において,プログラミング言語は武器のようなもので,良いプログラミング言語は,努力の半分で2倍の結果を得るのに役立ちます.例えば,定量的な取引の世界で最も一般的に使用されるPython,C++,Java,C#,EasyLanguage,M言語は12種類以上あります.戦場で戦うためにどの武器を選ぶべきですか?次のセクションでは,これらの一般的なプログラミング言語,および各プログラミング言語の特徴を紹介します.