独自のトレーリングストップ注文を作成する方法
さらに、ポジションは価格があらかじめ定めた利得のレベル (利得取り:Take Profit) 、あるいは損失のレベル (損失停止:Stop Loss) に到達したとき自動的に終了できる。「終了」ボタンを用いてポジションを終了するのと違って、「損失停止」と「利得取り」による終了は端末から行うのではなく (トレーダーあるいはエキスパートによる)、ブローカーによって行われる。こうして、終了のポジションは完全に接続と電力供給に関わらず保証される。これにより、トレーダーがストップロスの使用を実用的に義務的な要素とするのである。
トレーダーが行うべき行動は - ストップロスレベルを設定するようにブローカーに命令を与えることである。言い換えれば、ポジションにストップロスを設定しなければならない (あるいはそのレベルでポジションを開始する)。ストップロスの設定は端末にて"Modify"のメニューコマンドを用いて行われる。ポジションのリストの中にあるポジションを右クリックで選択し、さらに「修正あるいは尺女」を選択する。次にポジションの対話ボックスで損失停止の必要なレベルを記入し、"修正"をクリックする。
図 3. ポジションのストップロスのレベルを設定する。1 - ポジション関連のメニューを開ける、 2 - "Modify or Delete"をクリックする, 3 - 値を設定する, 4 - "Modify"をクリックする。
図 4. 損失停止のポジションそのレベルは左端にslとラベルのついた赤の点線でマークされている。
多くの継続停止の変形があり、単に価格が所定の範囲に入った後で損失停止を引き上げることができる。ストップロスを直ちに始めなくても良い、しかしポジションがある利得のレベルに達したなら直ちに損益分離点のレベルに移動する。この変形は標準的なものでMetaTrader 5 のクライアントターミナルに組み込まれている。標準のストップロスを使うならポジションを右クリックし、「Trailing Stop」を選択する。
図 5. ターミナルの標準のストップロスを有効化する1 - ポジション関連のメニューを開き, 2 - "Trailing Stop"をクリック、 3 トレーリング ストップ とは - 値を選ぶ (値を設定)。
値(カスタム)を設定する命令はその関連メニューの一番下に あり 、そして画像には出ていない。
さらに直接の価格を監視するには、ストップロスをレクニカルインジケーターにもとづいて行える。例えば、短期の価格変化には反応しないようにできる移動平均に基づいて、Ichimokuインジケーター 、あるいはさらにこの目的に設計されたものではないが放物線 (Parabolic) SAR (停止と逆転)に基づいて。 図 6 参照
図 6. 放物線 トレーリング ストップ とは トレーリング ストップ とは SAR インジケーター
MQL4 手続きプログラミングにおいてストップロスは通常分離したファンクションであったり、あるいは他のファンクションに統合されていた。例えば、 MetaTrader 4に含まれていたMACDサンプルエキスパートでは、継続停止ファンクションはオーダーの市場終了のファンクションに統合されている。
Object-Oriented LanguageのMQL5 はエキスパートの設計にさらに多くの可能性を与える。これは汎用的で複数の関数を持つクラス を作成し、それは後ほど素早く簡単に大半のエキスパートにも統合できる。この記事ではこのようなクラスを開発する。
1. ストップロスの基礎クラスを作成する
- ポジションのタイプ (方向) を決定する
- 現在のポジションのストップロスのレベルを決定する。
- 新しいストップロスレベルを計算する
- 現ストップロスレベルを変える必要性をチェック
- ポジションのストップロスのレベルを修正する
テクニカルインジケーターを使う計画なので、その安定な動きを確実にするため定期的な装備を提供することが要求される。この目的のため タイマーを使用する。トレーリングストップのオン・オフの切り替えを行い、 (クラスを自動トレードシステムの部分として使うとき)、そのオン・オフにはgraphical object -ボタンを使う (クラスを補助エキスパートの部分として使うとき)。 これらの機能的要求に従って基礎クラスは次の一連のメソッドを持つ:
- StartTimer() - はタイマーをスタートさせるのに使い、インジケーターへの周期的なアクセスとそれを強制的に端末のキャッシュに保っておくために使う。
- Stoptimer() - はエキスパートの作業を終了し、タイマーを停止させるのに使う。
- On() - はトレーリングストップを可能にしそしてボタンを押された状態に設定する (ボタンを使う場合)。 トレーリング ストップ とは トレーリング ストップ とは
- Off() - はトレーリングストップを無効化しボタンを押されていない状態に設定する (ボタンを使う場合)。
- DoStoploss() - はポジションの損失停止レベルを制御する中心のメソッドである。
- EventHandle() - は チャートイベントの処理に使い、 特にボタンの位置によって、押されたボタンに対応し、トレーリングストップのオン・オフの切り替えを行うのに使う。
- Deinit() - はエキスパートがその作業を終えた際に呼ばれ、インジケーターのハンドルの開放を確実にする。
- Refresh() - はインジケーターの値を更新するのに使う。このメソッドはインジケーターの現在の値をストップロスの値を計算する前に決定するのに必要である。また、このメソッドは独立して使われる - これはタイマーによって周期的に呼ばれ、インジケーターを使える状態に保つ。
- SetParameters() - このメソッドを呼ぶとインジケーターのパラメーターを受け入れ、インジケーターは指定のパラメーターを供給される。
- Trend() - インジケーターで示されるトレンドを得るメソッド。もしインジケーターが上昇方向を示すと、1 の値を戻し、下降方向なら -1 を戻す。
- BuyStoploss() to SellStoploss() メソッドは売りと買いのポジションにインジケーターで計算された新しいストップロスの値を戻す。
1.1. Init() メソッド
Init() メソッドは最初のメソッドであり、クラスのインスタンスを作成した後で呼ばれる。これは、トレーリングストップのタイプから独立した一般のパラメーターを受け入れる:シンボル、時間枠、トレーリングストップモード (チックごとあるいはバーごと)、インジケーターをチャートに付ける・付けない、ボタンをつけるかどうかなどである。そしてそれは ボタンのプロパティも受け入れる: ボタンのX座標、Y座標、ボタンの色、ボタンのキャプションの色など。
更なる作業に必要なパラメーターはクラス変数に保存される。さらに Init() メソッドが動作するとき、それはトレーリングストップに重要な一貫した市場パラメーター、また小数点以下の桁数とポイントの値を決定する。最後に、トレーリングストップのタイプによって、ボタンの名前とキャプションを決める。もしボタンを使うのであれば、これにより作成完了である。
さて Init() メソッド自体を書こう。
ここでボタンの名前とキャプションを作成したときに どの値にも初期化されなかったm_typename 変数が使われる。そこに値を割り付けることはサブクラスのコンストラクターにおいて行われる。従ってトレーリングストップの別のメソッドを使うときには、それは使われるトレーリングストップのタイプに従って異なる値となる。
1.2. StartTimer() メソッド
StartTimer() メソッド はエキスパートの共通 タイマー をスタートする。
1.3. StopTimer() メソッド
StopTimer() メソッド はエキスパートの タイマー をストップする。
エキスパートが処理を終えると、このメソッドがタイマーを使った場合には停止させる。このメソッドはクラスの Deinit() メソッドを走らせるときに呼ばれる。
On() メソッドはトレーリングストップをオンにする。オンにするのは変数 m_onoff にtrue値を割り当てて行う。 もしボタンがクラスの初期化にて使用されるようセットされると、トレーリングストップがオンに切り替えられる。
1.5. Off() メソッド
Off() メソッドがトレーリングストップをオフに切り替える。オフにするには変数 m_onoff にfalse値を割り当てて行う。もしボタンがクラスの初期化に使用されるようセットされると、オフに切り替わる。
1.6. EventHandle() メソッド
EventHandle() メソッドは OnChartEvent() ファンクションから呼ばれ、それに伴って OnChartEvent() ファンクションに渡された全てのパラメーターを受け入れる。
CHARTEVENT_OBJECT_CLICK イベントが起こり、それが m_objname の名前 (イベントが起こったオブジェクトの名前が、 sparam 変数に渡される)を持ったボタンで起こった場合、ボタンの状態によって On() か Off() メソッドが実行される。
1.7. Deinit() メソッド
Refresh(), SetParameters(), Trend(), BuyStoploss() そして SellStoploss() 仮想メソッドは後ほどトレーリングストップサブクラスを作成するときに説明する。 さてベースクラスのメソッドを考えよう - the DoStoploss() メソッド。
1.8. DoStoploss() トレーリング ストップ とは メソッド
DoStoploss() メソッドは核となって働くメソッドであり、それはチックごとに OnTick() ファンクションから呼ばれる。もし m_onoff 変数の値が false であれば(トレーリングストップがオフ)、メソッドは直ちにその働きを終了する。
もしトレーリングストップがオンでありそして時刻のチェックをパスすると、メソッドの核部分が実行される - インジケーターの値が更新される (Refresh() メソッドが呼ばれる)。
そして、 Trend() メソッドから戻った値によって、買いあるいは売りのポジションに対してトレーリングストップが実行される。
もしポジションが選択できるなら、その種類がチェックされる。もしポジションのタイプがトレンドに対応するなら、 BuyStoploss() メソッドを用いて、必要な Stop Loss の値を得る(sl 変数に)。次に、Stop Loss トレーリング ストップ とは がセットできる許容されるレベルを決定する。 もし計算された値が近ければ許容され、 sl変数の値を合わせる。そして現在のStop Lossポジションの値を得 (possl 変数に)、そして sl と トレーリング ストップ とは possl の変数の値と比較する。 もし新しい Stop Loss id の値が現在の値より良ければ - ポジションを修正する。
修正の前に トレーリング ストップ とは トレーリング ストップ とは MqlTradeRequestストラクチャーの sl と tp フィールド を埋める。m_request.sl 変数が要求された Stop Lossの値で割り当てられ、 m_request.tp 変数は - Take Profit の既存の値を割り当てられる(変わらない)。残りのフィールドは Init() メソッドが実行されるときに埋められる。ストラクチャーを埋めた後 OrderSend() ファンクションが呼ばれる。
この処理を終えると m_result.retcode 変数の値がチェックされる。もしその値が TRADE_RETCODE_DONEと等しくなければ、 OrderSend() ファンクションの要請によって、ある理由により処理を実行することができない。同時にエラーの数とメソッドの完了がメッセージのログに記録される。OrderSend() function が成功裏に終了すると、バーの時刻を呼び出し、DoStoploss() メソッドの最後の仕事が行われる。エラーの場合、バーごとのモードでも、次のチックでメソッドの再試行が試みられる。この処理は成功裏に完了するまで続けられる。
以下は DoStopLoss() メソッドの全コードである。
買いと売りポジションのコードの違いに注意する。売りのポジションには、売りポジションがAsk 価格に近いため、SellStoploss() から戻る値はスプレッドの値だけ増加する。従って買いの Stop Loss 最小レベルのカウントダウンは Bid 価格から行われ、売りに対しては - ASk 価格からとなる。
2. 放物線 SAR のためのトレーリングストップサブクラス
CTrailingStop クラスは既にサブクラスの内容を告げた - SetParameters(), Refresh(), Trend(), BuyStoploss(), SellStoploss() メソッドと 継続停止の名前をセットするクラスコンストラクター。このクラスは CParabolicStopと名付けられる。 このクラスは CTrailingStop のサブクラスであるので、このことはその宣言部で述べられる。
2.1. CParabolicStop() メソッド
このメソッドはクラスそのものと同じ名前を持ち、このメソッドはコンストラクターと呼ばれる。これはクラスがロードされるとクラスの他のどのメソッドよりも前に自動的に実行される。CParabolicStop() メソッドではトレーリングストップの名前が m_typename 変数に割り当てられる。この変数はボタンの名前とキャプションを作成するのに (基本クラスの Init() メソッド)使われる。
2.2. SetParameters() メソッド
SetParameters() メソッド を呼ぶとそれはインジケーターのパラメーターを受け入れ、インジケーターがこれらのパラメーターと共にロードされる。m_indicator パラメーターは基本クラス Init() メソッドがセットされ、そしてインジケーターはチャート (ChartIndicatorAdd() function)ファンクションに添付される。
2.3. Refresh() メソッド
Refresh() メソッドは新しい価格を取得 、そしてインジケーターの値を更新する。クラスの"protected" 部分には価格の値の pricebuf 配列 とインジケーターの値のための indbuf 配列がある。どちらの配列も一つを持ち - それはバーを形成するあるいは形成した1つのみの価格の値とインジケーター の値 (m_shift パラメーターによって、基本クラスが初期化されたときにセットされる)のはずである。
2.4. Trend() メソッド
Trend() メソッド はインジケーターラインに相対的な価格の位置をチェックする。もし、価格がラインの上であれば、これは上昇トレンドであり、メソッドは 1 を戻す。もし、価格がラインの下であれば、これは下降トレンドであり、メソッドは -1 を戻す。価格がインジケーターのラインに等しい場合 (まれであるが可能である) を除外しない。その場合は0 を戻す。
2.5. BuyStoploss() と SellStoploss() メソッド
放物線 SAR インジケーターは1本のラインのみを持つので、どちらのメソッドも同一である。それらは Refresh() メソッドから得られた値を戻す。
これでトレーリングストップの準備ができた。それはただ1つのクラスしか持たないが、しかし既に使われている可能性がある。それをSample_TrailingStop.mqhの名前で \MQL5\Include フォルダーの別のインクルードファイルに保存する(ファイルはこの論説に添付されている)。
3. Parabolicのトレーリングストップをエキスパートに加える
3.1. MetaEditorの中のMy_First_EA エキスパート を開き、それを My_First_EA_SARTrailing として保存しよう。
3.2. トレーリングストップファイルをインクルード。このエキスパートのコード上の部分に (できれば外部変数の宣言の前に) そのラインを加える。
3.3. 外部変数が CParabolicStop クラスのインスタンスを作成した後 Trailing と名付ける。
そして OnInit() ファンクションのコードを加える。
3.5. エキスパートのコード OnTimer() ファンクションを見つける。OnTimer() ファンクションは My_First_EA では用いない、 そこでそれを加え、そしてその中に Refresh() ファンクションの呼び出しを加える。
3.6. OnTick() ファンクションの先頭で DoStoploss() メソッドの呼び出しを加える。
3.7. エキスパートをコンパイルし、それを試してみる。エキスパートの結果は図 7 に (継続停止なしで) そして図 8 に (継続停止ありで) on Figure 8 (トレーリング ストップ とは with trailing stop)に示されている。
図 7. トレーリングストップなしのエキスパートのテスト結果
図 8. トレーリングストップありのエキスパートのテスト結果
4. NRTRのためのトレーリングストップサブクラス
NRTR インジケーター (Nick Rypock 継続逆転) その名前と見え方(図 9)はその上に継続停止を作成しようとする関心を作る。
図 9. NRTR インジケーター.
このインジケーター はベースラインと目標ラインを引く(支持と抵抗のライン)。 価格が目標ラインを超えると、ベースラインは価格の動きの方向に移る。価格の細かな揺れは無視される。価格がベースラインに交差すると - それはトレンドの変化と考えられ、したがって、価格に関するベースラインと目標ラインの位置が変わっていく。上昇トレンドでの支持ラインと目標ラインは青で塗られ、下降トレンドでは - 赤で塗られる。
もう一つの継続停止を、今度は NRTR インジケーターで作成する。
CNRTRStop ベースクラスに含まれているもう一つのクラス CNRTRStop を宣言する。
NRTR サブクラスの継続停止は、Parabolic に対する継続停止とコンストラクター以外は全く同じメソッドを持ち - CNRTRStop() と名付けられる。
4.1. CNRTRStop() メソッド
そのクラスコンストラクターで m_typename 変数が用いられるインジケーターにしたがって NRTRの値を割り当てられる。
4.トレーリング ストップ とは 2. SetParameters() メソッド
SetParameters() メソッド を呼ぶとそれはインジケーターのパラメーターを受け入れ、ロードされる。そして、トレーリングストップの基本的なパラメーターによって、インジケーターがチャートに付けられる。
4.3. Refresh() メソッド
Refresh() メソッドは NRTR インジケーターの2つのバッファーをコピーする - 支持ラインバッファーと抵抗ラインバッファー。
"保護された"セクションでは、double sup[] と double res[]の二つの定格アンテナがある。
4.4. Trend() メソッド
Trend() メソッドはどちらのラインが現在存在するのかをチェックする。 それが支持ラインであると、インジケーターが上昇トレンドを示すと、メソッド自身は 1 を戻す。もしそれが抵抗ラインであると、メソッドは -1 トレーリング ストップ とは トレーリング ストップ とは を戻す。
4.5. BuyStoploss() メソッド
4.6. SellStoploss() メソッド
5. NRTR のトレーリングストップをエキスパートに加える
Parabolic に対するトレーリングストップと同様に NRTR に対する My_First_EA トレーリングストップをエキスパートに加える。
5.1. MetaEditorの中のMy_First_EA_SAR継続エキスパート を開き、それを My_First_EA_NRTR 継続として保存する。
5.2. Parabolic 用のトレーリングストップの外部パラメーターを NRTR 用のトレーリングストップパラメーターで置き換える。
5.3. CParabolicStop クラスのインスタンスを作成する代わりにCNRTRStop クラスのインスタンスを作成する。このコードは外部変数の後に置く。
5.4. OnInit() ファンクションにおいて SetParameters() メソッド 呼び出しのパラメーターを NRTR パラメーターに置き換える。
図 トレーリング ストップ とは 10. NRTR用のトレーリングストップありのエキスパートのテスト結果
あるトレーリングストップ戦略付きによるエキスパートアドバイザーの作業結果 (図 10) とトレーリングストップなしのエキスパートの作業 (図 7) と比べるとほとんど変化がない。Parabolic でのトレーリングストップの使用はこのエキスパートに対してより効果的であると証明された。一定の数のトレーリングストップの武器庫 (トレーリング ストップ とは 道具箱) がエキスパートを開発するのに非常に有益であると結論できる - 実験をし、もっとも適切なタイプのトレーリングストップを選択することができる。
6. エキスパート-アシスタント
6.1. MetaEditor に Sample_TrailingStop トレーリング ストップ とは と名付けた新しいエキスパートを作成する。
6.2.Sample_TrailingStop.mqh file をインクルードする。
インジケーターの外部パラメーターを宣言する。
6.4. エキスパートが処理を行うシンボルの配列を宣言する。
6.トレーリング ストップ とは 5. クラスをロードする配列を宣言する。
6.6. OnInit() ファンクションでクラスをロードする配列のサイズを シンボルの配列のサイズに従って再調整する。
6.7. 配列の各要素に対してループ しクラスインスタンスをロードする。
注意: Init() メソッドを呼ぶときにはボタンの座標を計算する。左側に放物線用のトレーリングストップの電源ボタンがあり、右側には - NRTR用がある。
6.8. OnTick() ファンクションの中で各トレーリングストップのインスタンスについて DoStoploss() メソッドの呼び出しを加える。
6.9. チャートイベントの取扱いを追加する。
6.10. Deinit() ファンクションの中で全てのクラスのインスタンスをディイニシャライゼーション(deinitialization)をし、それらを消去する。
コンパイルし、エキスパートをチャートに添付する。インジケーターとボタンがチャート上に現れる (図 11) - エキスパートアドバイザーの出番である。
図 11. Sample_TrailingStop をスタートした後のチャート上のボタンとインジケーター
1. Sample_TrailingStop.mqh fileをインクルードする。
2. 使用したトレーリングストップのインジケーターパラメーターで外部変数を宣言する。
3. クラスインスタンスを作成する。
4. OnInit()ファンクションからInit()、SetParameters()、 StartTimer() と On() メソッド の呼び出しを追加する 。
5.OnTimer()ファンクションからRefresh() メソッドの呼び出しを追加する。
6. OnTick()ファンクションからDoStopLoss() メソッドの呼び出しを追加する。
7. OnDeinit()ファンクションからDeinit() メソッドの呼び出しを追加する。
トレーリング ストップ とは
あらかじめ損切りのラインを決めつつ、利益を最大限に高めることができるため「損は早く、利食いは遅く」という投資上級者の戦略をシステムで実行できます。システムでルールに基づいた注文を実行するためレートの変動に一喜一憂することなく自動で利益を伸ばせるのが魅力です。
トレーリングストップの動作
トレーリングストップは約定価格から設定した値幅(トレーリングストップ幅)分有利に価格が変動して初めて機能します
- USD/JPY 1ドル トレーリング ストップ とは トレーリング ストップ とは = 100円のとき約定
- トレーリングストップ幅を1円に設定
- 現在レートから1円低いレート(99円)で逆指値注文が入る
- レートが約定価格の100円よりも高くなった場合、同じ値幅だけ指値注文の発注価格が上がる
- 102円まで上がった時、逆指値注文の発注価格は101円になっているので逆指値注文が発注される
- 現在レート105円でこれから大幅に下がり、その後反発して上昇トレンドになると予想
- 安値+1円のトレーリングストップを発注(逆指値106円)
- レートが発注時の105円より下がり、その後+1円された時点で買い注文が発注される
トレーリングストップの注意点
トレーリングストップを上手く使えば、リスクを最小にしつつ、大きな利益を出せます。しかしその仕組み上、一時的な価格変動に弱いといったデメリットもあります。例えば短期のトレードで一時的に価格が反発して不利な方向に動いた場合、ポジションを決済してしまい本来取れていた利益が取れないこともあります。
トレーリングストップを使えるトレーディングツール
トレーリングストップに対応しているツールは決して多くはありません。トレーリングストップを使うには主にMT4,MT5が現実的な選択肢となるでしょう。MT4,MT5はトレーリングストップを標準で使用することができます。
EAが使えるXM Trading - 特徴とメリット、ハイレバレッジの活かして投資効率を最大に高める方法
バックテストアプリContraでは
Contraでは期間最高値/最安値を使うことでトレーリングストップを設計することができます。
買いの場合、最安値を手仕舞いに設定することで上がり続けている時はずっと持ち続け、
設定した期間最安値を割ったときに手仕舞いできます。
Liberty
トレーリングストップを使った決済注文
図の通り、110円で新規買い注文をして買いポジションを持っている時に、トレーリングストップで1円幅の逆指値決済注文を発注します。買った時点からそのままレートが落ちていけば109円で逆指値決済されますが、図のように買った後にレートが上昇して行くと 決済注文レートも現在レートに合わせて上昇 していきます。つまり決済注文レートが、買った時点からの最高値より1円下のレート(トレーリングストップ幅として設定したレート幅)になるよう常にレートに追従します。そして、最終的に最高値から1円下がったところで逆指値決済が実行されます。
これがトレーリングストップの基本的な動きですが、単に逆指し値注文をするよりもトレーリングストップを利用した方が(逆指値決済により)リスクを抑えつつ、 含み益が出たらできる限り伸ばす ことができ、非常に合理的であることが分かります。
1-2.トレーリングストップは新規注文で使うとトレンドの切り替わりを狙い撃ちできる
トレーリングストップを使った新規注文
次にトレーリングストップを利用した新規注文について解説します。トレーリングストップを使うと トレンドの切り替わりを狙い撃ち してポジションを持つことができます。
しかし、素直に1円下がらず図のように上昇して行った場合は、 新規売り注文レートも現在レートに合わせて上昇 していき、最終的に最高値から1円下がったところで新規売り注文が約定して売りポジションを持つことになります。
図を見ると分かりますが、これはつまり 上昇トレンドから下降トレンドへの切り替わりを狙い撃ち できるということなので、非常に便利ですね。もちろん、約定したところで必ずトレンドが切り替わるとは言えませんが、テクニカル分析を行った上で適切にトレーリングストップを使うことでより正確にトレンドの切り替わりを狙い撃つことができます。
2.トレーリングストップを利用できるFX業者
【トレーリングストップが利用できるFX業者】
・SBI FXトレード
・ヒロセ通商[LION FX]
・外為どっとコム[外為ネクストネオ]
・YJFX[外貨ex]
・アイネット証券[ループイフダン]
・アイネット証券[アイネットFX]
・サクソバンク証券[スタンダードコース]
・サクソバンク証券[アクティブトレーダーコース]
・セントラル短資FX[FXダイレクトプラス]
・外為オンライン[外為オンラインFX]
・外為オンライン[くりっく365]
・FXブロードネット[ブロードライトコース]
・FXブロードネット[ブロードコース]
・FXブロードネット(クリック365)[スタンダードコース]
・楽天証券[楽天MT4]
・ゴールデンウェイ・ジャパン[FXTF MT4]
・JFX[MATRIX TRADER]
・マネーパートナーズ[パートナーズFX]
・マネースクエア
・IG証券
・IG証券[大口]
・岡三オンライン証券[くりっく365]
・岡三オンライン証券[岡三アクティブFX]
・ライブスター証券[ライブスターFX]
・ひまわり証券[ループ・イフダン口座]
・ひまわり証券[レギュラー口座]
・マネックス証券[FX PLUS]
・ゲインキャピタル・ジャパン[MT4]
・FOREX EXCHANGE[俺のMT4]
・フィリップ証券[フィリップFX ミニ口座]
【トレーリングストップが利用できないFX業者】
・GMOクリック証券[FXネオ]
・GMOクリック証券[くりっく365]
・トレイダーズ証券[みんなのFX]
・DMM FX
・マネーパートナーズ[パートナーズFX nano]
・FXプライム byGMO
・インヴァスト証券
・セントラル短資FX[セントラルミラートレーダー]
・外為ジャパンFX
・トレイダーズ証券[みんなのシストレ]
・楽天証券[楽天FX]
・FXブロードネット(くりっく365)[シストレ365コース]
・新生銀行[新生銀行FX]
・ジャパンネット銀行[JNB-FX PLUS一般タイプ]
以上、トレーリングストップの解説とトレーリングストップが利用できる/できない国内FX業者の紹介でした!僕がおすすめしている国内FX業者のDMM FXは残念ながらトレーリングストップが利用できませんが、おすすめの海外FX業者であるXMでは利用できます!以下の記事でもお話ししていますがXMは 0円からFXが始められる ので是非試して見てください。では、また!
MQL4言語入門|自作EAに簡単に実装できるトレーリングストップ
MQL言語入門
今回は、MT4のサンプルEAを使って「トレーリングストップ」のソースコードを解説します。
トレーリングストップとは
トレーリングストップとは、価格の動きにロスカットラインを追跡させていく投資手法のことです。
MetaEditor の起動
トレーリングストップのソースコード
外部パラメーター「TrailingStop」の宣言
買いポジションのトレーリングストップ発動条件
- パラメーター「TrailingStop」でトレール幅を設定していること
- 現在の売値(Bid)から建値(OrderOpenPrice())を差し引いた値が、トレール幅よりも大きいこと
- 逆指値(OrderStopLoss())が、現在の売値(Bid)からトレール幅を差し引いた値よりも小さいこと
ストップロスオーダーの変更
OrderModify関数は、保有中や待機中の注文を修正する関数で、正常に終了した場合はtrue、失敗した場合はfalseを返します。
売りポジションのトレーリングストップ発動条件
- パラメーター「TrailingStop」でトレール幅を設定していること
- 建値(OrderOpenPrice)から現在の買値(Ask)を差し引いた値が、トレール幅よりも大きいこと
- 逆指値(OrderStopLoss)が、現在の買値(Ask)にトレール幅を加えた値よりも大きいこと、または逆指値注文が設定されていないこと
ストップロスオーダーの変更
バックテスト
MT4トレーダー必見!
公式サイトへ
MT4トレーダー必見!
MT4をするなら XMTrading がおすすめです。 24時間日本語対応、レバレッジ888倍、お得なボーナスなどで、日本で人気No.1のFX業者です。 スマホ・PC・Macすべて同じ口座で取引できます。
MT4をVPS稼働したいなら、このMT4専用VPSがおすすめです。 安心の東証一部上場企業、実績も十分、初期費用0円なので気楽に試してみましょう♪
MT4用のPC購入をお考えなら、豊富な品揃えと価格の安さで、メーカー直販の レノボ・ショッピング がおすすめです。 大幅値引きの期間限定セールをお見逃しなく!
公式サイトへ
●免責及び注意事項●
当サイトの全てのコンテンツは管理人自身による情報の提供を目的としており、投資行動を勧誘・助言するものではありません。
当サイトに掲載している全ての情報について、その正確性、完全性、有用性等について保証するものではありません。
個々の取引において生じたいかなる損失について、当サイトの管理人は一切の責任を負いかねます。
取引にあたっては、FXという金融商品のリスクを十分に理解した上で、ご自身の判断と責任でなさるようお願いいたします。
当サイトの記載内容は、予告なしに変更することがあります。
サイト管理人の鈴木亜留人です。
いろいろあって会社が辛くなり、転職や独立起業を夢みて、資格勉強、FX、心理学など始める。
すると、副産物(各種専門知識や心理学効果で業績UP)のおかげで評価が上がり、出世もしたので、とりあえず同じ会社でリーマン継続。
いろいろやって気付いたノウハウがたくさんあるので、このサイトですべて公開します。
似た境遇の方には役立つ情報がきっとあるはず!
設定利益pips達したらストップロスセット・その後トレーリングストップ
FX
ポジションが設定したpipsプラスになったら、ストップロスをセット。同時にトレーリングストップをスタートするExpert Advisor:EA 『hjEA_SelectPositionTrailingStop100』
EA名が長くなってしまいました。このEAは、ポジション取りはせず、すでに存在するポジションに対して動作するので、他との区別で悩んだ末に SelectPosition を付記しました。
ご依頼主は、ハンドルネーム『ぱせり』さんです。ご提案文章の内容、理解できているといいのですが・・・取引状況もイメージしながら作成しています。イメージが合ってるといいけど・・・
なお、チャート右肩のタイム表示は、別インジケーターです。
hjEA_SelectPositionTrailingStop100 仕様
保有ポジションの含み益(pips換算)が設定値に達したら、最初のストップロスを設定。
その後、設定した pips 幅でトレーリングストップをスタート。
- トレーリングストップスタート要件
- ポジションの含み益:pips が設定値に達したとき
- 通貨ペアひとつに対し、ポジション一つの場合のみ動作
★この EA はポジション取りしないため、各通貨ペア1ポジションに限定。チケットNo指定など、考慮すると利便性は良くなるかもしれません。
- ストップロスは、pips 指定
- トレーリングストップ幅は pips 指定
パラメーター
最初のストップロス pips とトレーリングストップ pips は、設定値によっては、最初のストップロスが無意味になる場合もあります。
試行していただくとわかると思います。使 用 例
動作中の例
トレーリング ストップ とは トレーリング ストップ とは
インジケーターセット例
パラメーター変更例
EAが動作しない状況だった場合の通知
- 1つの通貨ぺアで、複数ポジションを保持中
- トレーリングストップ開始+pips < ストップレベル
- 最初のストップロス pips < ストップレベル
- トレーリングストップ pips < ストップレベル
上記4つの通知は、その条件から外れると消えます。同時に EA は動作するようになります。
最初のストップロス pips < ストップレベル
トレーリングストップ pips < ストップレベル
ダウンロード
hjEA_SelectPositionTrailingStop100
ライントレード用インジケーター|トレンド反転・押し・戻し判断用
MT4 水平線ブレイクエントリーEAコラボ|hjskEA_LineBreak
予め引いておいた、エントリー用の水平線を抜けたら自動エントリー、また、その水平線をブレイクした足の高値・安値を抜けたらエントリ-する EA(Expert Advisor)『hjskEA_LineBreakシリーズ』のまとめ
ストキャスティクス、G.C.・D.トレーリング ストップ とは C.|設定ラインタッチ・クロスサイン表示インジケーターV103!
ストキャスティクス、設定ライン到達後に、%K と %D が D.C. ・G.C. 、%K が設定ラインへタッチまたは設定ラインへのタッチ・クロスでサイン、音・メール・プッシュ通知するインジケーターhj_STOcross103
ストキャスティクスクロス、クロス直前感知インジケーター!
MTF-CCI-100マルチタイムCCIインジケーター!
15分足クロス円チャート記録|2017年5月29日の週!
私がスキャルピング専用で利用しているFX業者は、
スプレッドが狭くてとても良いのですが、一方でストップレベルがかなり広いため、
損切り幅を自由に決められずトレーリングストップが機能を発揮できません。先日たまたまインターネットサーフィンをしていて勉強したのですが
EAで決済するには下記3パターンのどれかに該当するとのことでした。
①エントリーと同時に、TP・SL注文を出す「OrderSend()関数」を使用するパターン。
②エントリーした後に、修正注文としてTP・SL注文を出す「OrderModify()関数」を使用するパターン。
③エントリーした後に、別途、保有ポジションに対する決済注文を出す「OrderClose()関数」を使用するパターン。HappyJiJi より:
ぱせりさん、
現在の仕様は、最初のストップロス値は、業者のストップレベルより広くしてエラー文続出を防いでいます。
業者のストップレベルに無関係に決済するには、パセリさんのリサーチ結果通り、Closeで可能です。
正確には、可能と思います。
業者によっては、なんらかの制御を追加している場合がある可能性がないとは言い切れないので、試行してみないと正確には?です。決済ラインの描画は無くても構いません。
と言うのも、基本的にはスマホから裁量エントリーをしているので、
エントリー後はPC版MT4に任せきりで、決済されるまでの途中経過を見ていないためです。HappyJiJi より:
ぱせりさん、
気になる点があります。
ご利用FX業者で、次の2つのパラメーター
・最初のストップロスpips
・トレーリングストップロスpips
を1.5pipsに設定して、期待通りに動作しなかったのでしょうか?HappyJiJiさん、こんにちは。
1週間テスト使用をした感想をご報告します。
結論から言うと『素晴らしいEA』の一言です。
私はスマホからエントリーすることが多いのですが、
トレーリング機能を使う場合、エントリー後にアナログで都度設定する必要があり、
非常に効率の悪さを感じていました。
そのため、今回こちらのEAを作成いただいたことでトレード環境が数倍に向上しました。
心より感謝しております。
ありがとうございました。HappyJiJi より:
ぱせりさん、
お役に立ててなによりです。
使っていて、改善点・新規案浮かびましたら遠慮なくコメントください。HappyJiJiさん、テスト結果の報告になります。
私のPC環境が悪いせいかもですが、何故かEAが動作しない状況の場合の通知機能が動作しません。
それと、設定項目にはないはずですがS/Lが自動で設定されました。
ご確認お願いいたします。HappyJiJi より:
確認のため、以下教えてください。
1)EAが動作しない状況は、どの状況ですか? 4つともかなぁ・・・
2)パラメーター値、上から順に数値だけでもかまいません。
3)ターミナルのエキスパートにエラーは出力されていますか?
出力されていたら、その文章を教えてください。
4)EAをセットしたFX業者名2)パラメーター値、上から順に数値だけでもかまいません。 トレーリング ストップ とは
例えば、上から
・6pips 7pips 3pips
・5pips 3pips 1pips などにしてテストしました。3)ターミナルのエキスパートにエラーは出力されていますか?
エラーは表示されていません。 トレーリング ストップ とは
hjEA_SelectPositionTrailingStop100 EURUSD,H1: initializedHappyJiJi より:
ぱせりさん、
情報ありがとうございます。
以下は、EAが正常に稼働してるとして記しています。
また、MT4上でEAが正常に動作していても、取引できる状態でないとEAは動作しない仕様にしていることもご理解ください。1)2)EAが動作しない状況について
4つともメッセージ表示されないとのこと。当方のMT4では意図通りメッセージが表示されますので、?状態です。
4つの内、パラメーターでセットする3つの設定値は、ストップレベルより少ないpipsを設定していたら通知し、この通知はポジションの有無に関係なく表示される仕様です。
また、複数ポジション保持でのメッセージは、同一通貨ペアで二つ以上のポジションを持ってたら通知する仕様です。3)ターミナルエラーが出力されていないとのことですので、ひょっとしたらストップレベルがとても小さいか0かもしれないですね。
もしくは、取引可能状態でないかもしれません。
ストップレベル値がいくつか気になりますので、セットしているチャートの通貨ペアのストップレベルを確認してください。4)ご利用業者FBSについて
私の使ってる業者だったらすぐに検証しようと思ったのですが・・・
FBS 多分デモ口座開設できると思いますので、確認してみます。繰り返しのお願いになりますが、以下二点教えてください。
・USDJPY・GBPJPY のストップレベル
・お好みの通貨ペアにEAをセットして稼働させ、ポジションを2つ持ってください。
もちろん、デモ口座でお願いします。リアル口座でしたらやめてくださいね。当方は、FBS でのデモ口座開設と確認を行い、結果を報告します。
以上、よろしくお願いします。HappyJiJi より:
ぱせりさん、 トレーリング ストップ とは
FBSデモ口座:スタンダード、開設し、確認しました。
同じ口座かどうかは?ですが、仕様通り動作することを確認しました。EURUSD は、ストップレベルが、0.1pipsですね。
なので、パラメーター値を 0.1より小さく、例えば、0.05とかにセットしてみてください。HappyJiJi より:
動作確認とれた、とのこと。
よかったです。
当初のご希望のパラメーター値で正常動作することをデモで確認してくださいね。
ご自分の目で確認することがとても重要だと思っています。HappyJiJiさん、こんにちは。
この度は決済EAを作成していただきありがとうございます。
説明を読む限りでは、私の依頼通りの機能に出来上がっていると思います。
さらに、EAが動作しない状況だった場合の通知機能を追加していただきありがとうございます。
さっそく来週に動作確認をしてみます。
ありがとうございました。関連記事
コメント