日本株メタトレーダー5その他投資関連マーケティング生産性アップTipsホームその他メタトレーダー5【MT5】MQLウィザードでトレーリングストップを実装してみるメタトレーダー5TwitterFacebook0はてブ0Pocket22020.05.22日本の証券会社で米国株[チャレンジ32か月目]2023.05.01ノンプログラミングで自動売買EAを作れるMQL5ウィザードですが、トレーリングストップが組み込めるようになっています。以前の記事で取り上げたウィザードを使ってのプログラム作成では、プロフラムの簡略化のためにルンルンでスキップさせてもらいましたが、今の私はトレーリングストップのことが書きたくて書きたくて震えてます。いうことで、今回の記事ではトレーリングストップの実装について書きます。最適化するパラメータ結果発表あとがきトレーリングストップとはトレーリングストップとは、相場の価格の変動に合わせてストップロス(損切り)注文を動かしていく手法です。トレーリングは追従という意味です。相場の動きに合わせて損切り注文を動かすことにより損失を抑えながら利益を伸ばしていくことで「損小利大」を実現しようとしています。うまく相場の流れに乗ることができれば、大きく利益を伸ばすことができます。実装の仕方ちょちょいのちょいで実装できるので、まずは実装の方法をお伝えします。MQLウィザードの4番目の画面で「エキスパートアドバイザのトレーリングプロパティ」が出てきますので、お好みのトレーリングストップの方法を選択します。SARパラボリックSARに基づくトレーリングストップトレーリングストップを使った決済方法MQLウィザードでは、トレーリングストップでの決済が選択できるようになっています。その機能を活用することで「トレーリングストップのみ」「トレーリングストップ+利食い」の2つのパターンを構築できます。トレーリングストップは、3種類の方法が選べます。(後で見ていきます)トレーリングストップが発動するまでは固定の損切りを入れておくということも可能です。トレーリングストップのみ1つ目は、トレーリングストップのみを仕掛ける方法です。相場の流れに乗ることができれば、想像を超える利益が転がり込んでくる可能性があります。その一方、ここまで行けば利食いをしたいという価格まで達したにも関わらずそこから下落(売りの場合は上昇)した価格で決済されることがあります。トレーリングストップ+利食い2つ目は、トレーリングストップにプラスして利食いも仕掛ける方法です。この方法では、相場の流れに乗って利益を伸ばすという部分を取り入れながら、ここまで行けば利益を確定するというポイントを作ることができます。することで目標価格に達した場合は、すぐに利益を確定できます。固定幅でのトレーリングストップを利用すると利食いに対してもトレーリングを仕掛けることができます。次は、MQLウィザードを使って実装ができるトレーリングストップの種類を見ていきます。単純な固定幅でストップロスの価格をずらしていく方法だけではなく、移動平均を使った方法、パラボリックSARを使った方法があります。ストップロスの価格が変更されるのは、新しい足に移ったタイミングです。ティックの動きに応じての変更はありません。パラメータは、決済に関連のあるパラメータのみを取り上げています。トレーリングストップは、発動条件を満たしたときに初めて有効になります。発動するまでは、通常の損切りが有効になっています。固定幅に基づくトレーリングストップこれは至極単純な話で、買いポジションを持ったのちに足の終値が高値を更新(売りポジションの場合は安値を更新)すると指定した固定幅に合うようにストップロスを調整していく方法です。勘違いしがちですが、高値の判断の対象となるのは足の終値です。その足の高値がいくら跳んでいようと足の終値に基づいてストップロスが調整されます。points)新規注文の際の損切り(ストップロス)を指定します。points)新規注文の際の利食い(テイクプロフィット)を指定します。points)トレーリングストップを指定します。0はトレーリングストップなしです。points)トレーリング利食い(テイクプロフィット)を指定します。0はトレーリングの利食いなしです。points)を設定すると足の終値が高値(買いポジションの場合)を更新すると、それに合わせてテイクプロフィットが調整されます。高値を更新するたびに現在より値が設定されるので約定することがないのではと思ってましたが、その足内で達した場合に利食いが発動する仕組みになっていました。TrailingFixedPips.mphのソースコードから確認します。ソースコードはメタエディターの寝ナビゲーターから選択します。トレーリングストップ関連ファイルは「Include」→「Expert」→「Trailing」配下にあります。現在値(Bid)-損切り値>トレーリングストップの設定値×調整値コードm_symbol.Bid()-position.StopLoss()>m_stop_level*m_adjusted_pointposition.StopLoss()(損切り値)が設定されてない場合は、position.PriceOpen()(買い値)が使われます。設定がない場合は、ポジションの買値/売値が入ります。調整値は通貨ペアごとに違います。ドル円やユーロ円は0.01が入ります。トレーリング利食いも同じ発動条件です。移動平均に基づくトレーリングストップ相場の変動に合わせて追ってくる移動平均でストップロスを調整していく方法です。固定幅での指定では、相場が上下どちらにもあまり動かない膠着状態になった場合は決済されませんが、移動平均を使うことで膠着状態が続けば利食い(損切り)するようにできます。points)新規注文の際の損切り(ストップロス)を指定します。points)新規注文の際の利食い(テイクプロフィット)を指定します。MA移動平均指標の平均化の期間を指定します。MA移動平均指標をずらす(シフトする)幅を指定します。averaging移動平均指標の平均化手法を4種類から指定します。series移動平均指標を算出する価格を7種類から指定します。TrailingMA.mphのソースコードから確認します。以下の2つの条件が正になった場合にトレーリングストップが発動します。m_MA.Main(1)<m_symbol.Bid()-m_symbol.StopsLevel()*m_symbol.Point()position.StopLoss()(損切り値)が設定されてない場合は、position.PriceOpen()(買い値)が使われます。発動バッファ(勝手に命名)は、トレーリングストップが買値のすぐ上で発動するのをさけるために入れられているバッファのようです。コードm_symbol.StopsLevel()*m_symbol.Point()m_symbol.StopsLevel()とm_symbol.Point()は、通貨ペアごとに設定されています。0.001どこで設定されているのかが分からない場合もprintfを使って操作ログに出力すると数値が確認できます。以下の2つの条件が正になった場合にトレーリングストップが発動します。m_MA.Main(1)+m_symbol.Spread()*m_symbol.Point()>m_symbol.Ask()+m_symbol.StopsLevel()*m_symbol.Point()スプレッドが表れている点が買いポジションとの違いです。移動平均の値はBidなのでスプレッドを足して疑似的なAskの値を作っているようです。パラボリックSARに基づくトレーリングストップパラボリックSARの位置でストップロスを調整していく方法です。パラボリックSAR...私は不勉強なので存じ上げていませんでした。どれぐらいの知名度なのか分かりませんが、パラボリックSARってなんぞやについても書いておきます。パラボリックSARとは、SAR(ストップ&リバースポイント)と呼ばれる点を用いたトレンドフォロー型の指標です。SARをつけないで「パラボリック」と表記されていることも多いです。ついては一番わかりやすかったOANDAの記事をご確認ください。※惜しむべくは「加速因子の加算」の部分が誤っている点です。加速因子の加算は、前の足で高値(上昇トレンド)もしくは安値(下降トレンド)を更新した場合にのみ行われます。FXで人気のインジケーターの使い方FXトレーダーに人気のテクニカル指標の一つであるパラボリックSARの使い方についてご案内しています。パラボリックSARはSARと呼ばれる点をチャートの価格の上下に描画するタイプのインジケーターで、上昇トレンド、下降トレンドを判断します。価格がSARに到達すると、トレンド転換となるインジケーターです。トレンドを素早く把握...www.oanda.jpパラボリックSARを使った場合も、相場が膠着状態になった際に利食い(損切り)が発動します。points)新規注文の際の損切り(ストップロス)を指定します。points)新規注文の際の利食い(テイクプロフィット)を指定します。incrementパラボリックSARの加速因子を指定します。TrailingParabolicSAR.mphのソースコードから確認します。以下の2つの条件が正になった場合にトレーリングストップが発動します。new_sl<m_symbol.Bid()-m_symbol.StopsLevel()*m_symbol.Point()posposition.StopLoss()(損切り値)が設定されてない場合は、position.PriceOpen()(買い値)が使われます。以下の2つの条件が正になった場合にトレーリングストップが発動します。m_sar.Main(1)+m_symbol.Spread()*m_symbol.Point()>m_symbol.Ask()+m_symbol.StopsLevel()*m_symbol.Point()m_symbol.StopsLevel()とm_symbol.Point()は、移動平均の場合と同じ値でした。(少なくともドル円、ユーロ円では)移動平均EAに固定幅TSを組み込んで最適化せっかくなので第二回で最適化した移動平均EAに固定幅トレーリングストップを組み込んだ新移動平均EAで勝負を挑んでみます。バックテストの対象は前回と同じく、2019年のドル円1時間足チャートです。points)を追加しました。【MT5】MQLウィザードで作成した移動平均EAを最適化してみるMQL5ウィザードを使って作成したプログラムに対して最適化を行います。points)は採用せず、0で固定としました。最適化結果だ!ドンッッッッ!!!!!極細最適化結果[クリックして拡大]残高推移グラフ[クリックして拡大]クノウパラメータが増えたんだから順当な結果だろうよ主要な項目を表にしてトレーリングストップなしとありの比較をしてみます。負けトレードの数値を比べると損小利大を実現できたと小声で言える結果となっています。取引数が約1/3となり、ポジションの保有時間が大きく伸びているのも大きな変化です。あとがきちょっとくせが強かったですが、なんとかトレーリングストップも攻略できたような気になってます。トレーリングストップはティックで作動させたいと思うのは私だけなのでしょうか...。トレーリングストップを実装して成績がかなり伸びましたが、そこには特に意味がありません。やりたいことをできるようになったというのが大切です。MQLウィザードシリーズを3回記事化してちょっと詳しくなってきたような気がします。MT5の記事は超絶ニッチだということも発覚してますが、誰かの役にたつこともあるでしょう(と思い込むしかない)。米国株ブログランキングに参加しています。応援のクリックお願いしますm(._.)mメタトレーダー5\この記事をシェアする/TwitterFacebook0はてブ0Pocket2\クノウをフォローする/0クノウ米国株にかける【MT5】MQLウィザードで作成した移動平均EAを最適化してみる関連記事メタトレーダー5【MT5】MQL5ウィザードを使って初めてのプログラム作成メタトレーダー5の最初の一歩としてMQL5ウィザードを使ってのプログラム作成を行います。取引決定のメカニズムを中心に気になった点を深掘りしています。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。date*日本語が含まれない投稿は無視されますのでご注意ください。@munokuno興味本位で投資の世界に飛び込み、溺れ続けるリーマン投資家。投資歴は無駄に長く20年弱。ライブドアショック、リアルリーマンショック経験者。逆指標として使えます。日本株メタトレーダー5その他投資関連マーケティング生産性アップTipsシェアするあなたのシェアが、力になる。TwitterFacebook0はてブ0Pocket2LINEフォローする\クノウをフォローする/キャッチ・ミー・イフ・ユー・キャン0。