
クライアント端末での取引戦略の例の分析
内容
はじめに
1990年代初頭、テクニカルアナリストのスティーブ・ニソンが開発した日本のローソク足チャートとローソク足パターンが西洋の金融市場に導入されました。それ以来、ローソク足パターンの知識は、古典的なテクニカル分析を適用する能力と同じくらいトレーダーにとって不可欠なものになりました。
しばらく前から、クライアント端末のEAディレクトリに新しいFree Robotsフォルダが表示されています。
このフォルダには28個のEAが含まれています。これは、独自の開発のために戦略で規定された原則を独自に研究および適用するための取引戦略の例です。Free Robotsフォルダに表示されている取引戦略は、インジケーターシグナルによってサポートされるローソク足パターンで取引するEAです。
ローソク足パターンのシグナルを確認するには、4つのオシレーター(CCI、MFI、RSI、Stochastic Oscillator)のいずれかの値を使用します。したがって、ローソク足パターンで取引する7つのEAが研究用に提示され(それぞれ、1つはロングポジション用、もう1つはショートポジション用の2つのパターン)、これらのEAはそれぞれ、確認インジケーターの数に応じて4つのコピーで提示されます。
取引戦略の概要
各取引戦略では、方向と名前が異なる2つの類似したパターンを使用します。
1. BlackCrows WhiteSoldiers
![]() | 3 White Soldiers:買いシグナル:十分な実体を持つ3つの連続した白いローソク足。下降(弱気)トレンドの反転の可能性を示すシグナルとして使用されます。 |
![]() | 3 Black Crows:売りシグナル:十分な実体を持つ3本の連続した黒いローソク足。上昇(強気)トレンドの反転の可能性を示すシグナルとして使用されます。 |
上記のローソク足パターンに基づいて、端末は4つの訓練EAを提供します。
- BlackCrows WhiteSoldiers CCI.mq5:CCIインジケーターによるシグナルの確認を伴う、3つのWhite Soldiersパターンと3つのBlack Crowsパターンに基づくEA
- BlackCrows WhiteSoldiers MFI.mq5:MFIインジケーターによるシグナルの確認を伴う、3つのWhite Soldiersパターンと3つのBlack Crowsパターンに基づくEA
- BlackCrows WhiteSoldiers RSI.mq5:RSIインジケーターによるシグナルの確認を伴う、3つのWhite Soldiersパターンと3つのBlack Crowsパターンに基づくEA
- BlackCrows WhiteSoldiers Stoch.mq5:ストキャスティクスオシレーターによるシグナルの確認を伴う、3つのWhiteSoldiersパターンと3つのBlackCrowsパターンに基づくEA
2.BullishBearish Engulfing
![]() | Bullish Engulfing:買いシグナル「強気の包み線」(Bullish Engulfing)は、下降トレンド中に、弱気のローソク足の後に強気のローソク足が続き、その実体が弱気のローソク足の実体を完全に包み込む場合に発生します。これは下降(弱気)トレンドの反転の可能性があることを示すシグナルです。 |
![]() | Bearish Engulfing:売りシグナル「弱気の包み線」(Bearish Engulfing)は、上昇トレンド中に、強気のローソク足の後に弱気のローソク足が続き、その実体が強気のローソク足の実体を完全に飲み込む場合に発生します。これは上昇(強気)トレンドの反転の可能性があることを示すシグナルです。 |
上記のローソク足パターンに基づいて、端末は4つの訓練EAを提供します。
- BullishBearish Engulfing CCI.mq5:CCIインジケーターによるシグナルの確認を伴う、強気の包み線(Bullish Engulfing)と弱気の包み線(Bearish Engulfing)のパターンに基づくEA
- BullishBearish Engulfing MFI.mq5:MFIインジケーターによるシグナルの確認を伴う、強気の包み線(Bullish Engulfing)と弱気の包み線(Bearish Engulfing)のパターンに基づくEA
- BullishBearish Engulfing RSI.mq5:RSIインジケーターによるシグナルの確認を伴う、強気の包み線(Bullish Engulfing)と弱気の包み線(Bearish Engulfing)のパターンに基づくEA
- BullishBearish Engulfing Stoch.mq5:ストキャスティクスオシレーターによるシグナルの確認を伴う、強気の包み線(Bullish Engulfing)と弱気の包み線(Bearish Engulfing)のパターンに基づくEA
3.BullishBearish Harami
![]() | Bullish Harami:買いシグナル「強気ハラミ」(Bullish Harami)パターンは、下降トレンド中に、長い弱気ローソク足の後に強気ローソク足が続き、その実体が弱気ローソク足の実体に完全に含まれている場合に発生します。これは下降(弱気)トレンドの反転の可能性があることを示すシグナルです。 |
![]() | Bearish Harami:売りシグナル「弱気ハラミ」(Bearish Harami)パターンは、上昇トレンド中に、長い強気ローソク足の後に弱気ローソク足が続き、その実体が強気ローソク足の実体に完全に含まれている場合に発生します。これは上昇(強気)トレンドの反転の可能性があることを示すシグナルです。 |
上記のローソク足パターンに基づいて、端末は4つの訓練EAを提供します。
- BullishBearish Harami CCI.mq5:CCIインジケーターによるシグナルの確認を伴う、強気のはらみ線と弱気のはらみ線のパターンに基づくEA
- BullishBearish Harami MFI.mq5: MFIインジケーターによるシグナルの確認を伴う、Bullish HaramiおよびBearish Haramiパターンに基づく EA。
- BullishBearish Harami RSI.mq5: RSIインジケーターによるシグナルの確認を伴う、強気のはらみ線と弱気のはらみ線のパターンに基づくEA
- BullishBearish Harami Stoch.mq5:ストキャスティクスオシレーターによるシグナルの確認を伴う、強気のはらみ線と弱気のはらみ線のパターンに基づくEA
4.BullishBearish MeetingLines
![]() | Bullish Meeting Lines:買いシグナル「Bullish Meeting Lines」は、終値が同じ(または非常に近い)弱気のローソク足と強気のローソク足の組み合わせです。両方のローソク足の本体の長さは平均よりも長いです。これは下降(弱気)トレンドの反転の可能性があることを示すシグナルです。 |
![]() | Bearish Meeting Lines:売りシグナル「Bearish Meeting Lines」は、終値が同じ(または非常に近い)強気のローソク足と弱気のローソク足の組み合わせです。両方のローソク足の本体の長さは平均よりも長いです。これは上昇(強気)トレンドの反転の可能性があることを示すシグナルです。 |
上記のローソク足パターンに基づいて、端末は4つの訓練EAを提供します。
- BullishBearish MeetingLines CCI.mq5:CCIインジケーターによるシグナルの確認を伴う、Bullish Meeting LinesとBearish Meeting Linesのパターンに基づくEA
- BullishBearish MeetingLines MFI.mq5:MFIインジケーターによるシグナルの確認を伴う、Bullish Meeting LinesとBearish Meeting Linesのパターンに基づくEA
- BullishBearish MeetingLines RSI.mq5:RSIインジケーターによるシグナルの確認を伴う、、Bullish Meeting LinesとBearish Meeting Linesのパターンに基づくEA
- BullishBearish MeetingLines Stoch.mq5:ストキャスティクスオシレーターによるシグナルの確認を伴う、Bullish Meeting LinesとBearish Meeting Linesのパターンに基づくEA
5.DarkCloud PiercingLine
![]() | Piercing Line:買いシグナル「Piercing Line」は、弱気ローソク足と強気ローソク足の組み合わせです。これは、Dark Cloud Coverパターンの反対の類似物です。まず、大きな黒いローソク足があり、次のローソク足は低い値で始まり(前のローソク足の最低値を下回り)、最初のローソク足の真ん中より上で終値となります。これは下降(弱気)トレンドの反転の可能性があることを示すシグナルです。 |
![]() | Dark Cloud Cover:売りシグナル「Dark Cloud Cover」は、強気のローソク足と弱気のローソク足の組み合わせです。まず、大きな白いローソク足があり、次のローソク足は高値(前の高値より高い)で始まり、最初のローソク足の中央より下で終値となります。これは高値と安値が考慮される数少ないケースの1つです。これは上昇(強気)トレンドの反転の可能性があることを示すシグナルです。 |
上記のローソク足パターンに基づいて、端末は4つの訓練EAを提供します。
- DarkCloud PiercingLine CCI.mq5: CCIインジケーターによるシグナルの確認を伴う、PiercingLineとDark Cloud Coverのパターンに基づくEA
- DarkCloud PiercingLine MFI.mq5:MFI インジケーターによるシグナルの確認を伴う、PiercingLineとDark Cloud Coverのパターンに基づくEA
- DarkCloud PiercingLine RSI.mq5:RSIインジケーターによるシグナルの確認を伴う、PiercingLineとDark Cloud Coverのパターンに基づくEA
- DarkCloud PiercingLine Stoch.mq5 :ストキャスティクスオシレーターによるシグナルの確認を伴う、PiercingLineとDark Cloud Coverのパターンに基づくEA
6.HangingMan Hammer
![]() | Hammer:買いシグナル「ハンマー」は、下降トレンドの後に現れる、小さな本体と長い下ヒゲを持つローソク足です。ハンマーは弱気相場の終焉を示す強いシグナルです。 |
![]() | Hanging Man:売りシグナル「首吊り線」(Hanging Man)は、上昇トレンドの後に現れる、実体が小さく下ヒゲが長いローソク足です。首吊り線は上昇トレンドの終わりを示します。 |
上記のローソク足パターンに基づいて、端末は4つの訓練EAを提供します。
- HangingMan Hammer CCI.mq5:CCIインジケーターによるシグナルの確認を伴う、ハンマーと首吊り線のパターンに基づくEA
- HangingMan Hammer MFI.mq5:MFIインジケーターによるシグナルの確認を伴う、ハンマーと首吊り線のパターンに基づくEA
- HangingMan Hammer RSI.mq5:RSIインジケーターによるシグナルの確認を伴う、ハンマーと首吊り線のパターンに基づくEA
- HangingMan Hammer Stoch.mq5:ストキャスティクスオシレーターによるシグナルの確認を伴う、ハンマーと首吊り線のパターンに基づくEA
7.MorningEvening StarDoji
![]() | Morning Star:買いシグナル「明けの明星」(Morning Star)は3本のローソク足で構成され、下降トレンド中に現れます。 1.長い黒いローソク足の次には、黒いローソク足の実体と交差しない小さな実体(色は関係ありません)のローソク足が続きます。 2.2番目のローソク足の実体が小さいということは、市場が下降傾向から強気派と弱気派の力の均衡状態に移行したことを意味します。 3.このパターンの3番目のローソク足は強気です。その実体は通常、2番目のローソク足の実体と交差せず、終値は最初の(弱気)ローソク足の実体の内側に位置します。 このパターンは、下降(弱気)トレンドの反転の可能性を示すシグナルです。 |
![]() | Morning Doji Star:買いシグナル「三川明けの明星」(Morning Doji Star)は、明けの明星パターンの特殊なケースです。この場合、パターンの2番目のローソク足の始値と終値は同じになります。つまり、実体がないのです。このパターンは、下降(弱気)トレンドの反転の可能性を示すシグナルです。 |
![]() | Evening Star:売りシグナル「宵の明星」(Evening Star)も3本のローソク足で構成され、上昇トレンド中に現れます。 1.長い白いローソク足の次には、白いローソク足の本体と交差しない小さな本体のローソク足(色は関係ありません)が続きます。 2.2番目のローソク足の実体が小さいということは、市場が上昇トレンドから強気派と弱気派の力の均衡へと移行したことを意味します。 3.このパターンの3番目のローソク足は黒いローソク足で、その実体は通常2番目のローソク足の実体と交差せず、終値は最初の(強気)ローソク足の実体の内側に位置します。 このパターンは、上昇(強気)トレンドの反転の可能性を示すシグナルです。 |
![]() | Evening Doji Star:売りシグナル「三川宵の明星」(Evening Doji Star)は宵の明星パターンの特殊なケースです。この場合、パターンの2番目のローソク足の始値と終値は同じになります。つまり、実体がないのです。このパターンは、下降(弱気)トレンドの反転の可能性を示すシグナルです。 |
上記のローソク足パターンに基づいて、端末は4つの訓練EAを提供します。
- MorningEvening StarDoji CCI.mq5:CCIインジケーターによるシグナルの確認を伴う、(三川)明けの明星と(三川)宵の明星のパターンに基づくEA
- MorningEvening StarDoji MFI.mq5:MFIインジケーターによるシグナルの確認を伴う、(三川)明けの明星と(三川)宵の明星のパターンに基づくEA
- MorningEvening StarDoji RSI.mq5:RSIインジケーターによるシグナルの確認を伴う、(三川)明けの明星と(三川)宵の明星のパターンに基づくEA
- MorningEvening StarDoji Stoch.mq5:ストキャスティクスオシレーターによるシグナルの確認を伴う、(三川)明けの明星と(三川)宵の明星のパターンに基づくEA
EAで使用されるすべてのインジケーターは、ロングまたはショートポジションへのエントリを確認するため(ローソク足パターンからの適切なシグナルの場合)、およびインジケーターシグナルに基づいてポジションをクローズするために役立ちます。
以下の表は、ポジションエントリの確認とポジションのクローズに使用されるインジケーター値を示しています。
指標 | 買う | 売る |
---|---|---|
CCI | CCI(1)<-50:最後に完了したバーのCCIインジケーター値が-50未満 | CCI(1)>50:最後に完了したバーのCCIインジケーター値が-50を超える |
MFI | MFI(1)<40:最後に完了したバーのMFIインジケーター値が40未満 | MFI(1)>60:最後に完了したバーのMFIインジケーター値が60を超える |
RSI | RSI(1)<40:最後に完了したバーのRSIインジケーター値が40未満 | RSI(1)>60:最後に完了したバーのRSIインジケーター値が60を超える |
ストキャスティクス | ストキャスティクスシグナル(1)<30:最後に完了したバーのストキャスティクスシグナルラインの値が30未満 | ストキャスティクスシグナル(1)>70:最後に完了したバーのストキャスティクスシグナルラインの値が70を超える |
ポジションをクローズするためのテクニカル指標シグナルは、指標値が極端なゾーンの境界を越えたとき、つまり買われすぎまたは売られすぎのゾーンに入ったり出たりしたときに発生します。
指標 | ロングポジションのクローズ | ショートポジションのクローズ |
---|---|---|
CCI | CCI指標が80または-80のレベルを下方向にクロス | CCI指標が-80または80レベルを上方向にクロス |
MFI | MFI指標が70または30を下方向にクロス | MFI指標が30または70のレベルを上方向にクロス |
RSI | RSIインジケーターが70または30のレベルを下方向にクロス | RSIインジケーターが30または70のレベルを上方向にクロス |
ストキャスティクス | ストキャスティクスオシレーターのシグナルラインが80または20のレベルを下方向にクロス | ストキャスティクスオシレーターのシグナルラインが20または80のレベルを上方向にクロス |
1つの個別のEAは、反対方向のローソク足パターンのペアで動作し、確認インジケーターの4つのバージョンで提示されます。
その結果、単一の構造に従って編成された7*4=28の異なるEAが存在することになります。フロー図を使用して、すべてのEAの統一されたロジックを考えてみましょう。
一般的なロジック
コードエディターで上記のEAのいずれかを開いてコードを調べると、シンプルな構造がわかります。
EAのロジックは、グローバルレベルで宣言されたフラグと変数に基づいています。
- ExtSignalOpen:ポジションオープンシグナル(1:買い、-1:売り、0:シグナルなし)
- ExtSignalClose:ポジションクローズシグナル(2:ロング、-2:ショート、0:シグナルなし)
- ExtPatternInfo:現在見つかったパターンのテキスト説明
- ExtDirection:ポジションの方向のテキスト説明
- ExtPatternDetected:見つかったパターンフラグ(true/false)
- ExtConfirmed:インジケーターによって確認されたパターンシグナルのフラグ(true/false)
- ExtCloseByTime:ポジション保有時間に基づいて決済が必要であることを示すフラグ(true/false)
- ExtCheckPassed:データ取得成功フラグ(true/false)
EAのロジックは順次実行され、OnInit()ハンドラのフラグ初期化ブロックとOnTick()ハンドラの4つの処理手順で構成されます。
- 手順1:新しいバーをチェックし、環境とフラグの状態を更新する
- 手順2:ポジションを開く
- 手順3:ポジションをクローズする
- 手順4:有効期限が切れた後にポジションをクローズする
EAの動作ロジックを考えてみましょう。
EA操作ロジックフロー図
フロー図は、EAの作業の4つの段階を示しています。
手順1
- 新しいバーを確認します。
新しいバーの場合は、現在の状態を確認します。 - ローソク足の形成パターンを確認します。
- パターンが見つかった場合は、インジケーターを使用してパターンシグナルの確認を確認します。
- パターンシグナルが確認された場合、見つかったパターンに関する情報を操作ログに表示し、ポジションオープンフラグを設定します。
手順2
- ポジションを開くためのシグナルがあり、そのようなポジションが存在しない場合は、シグナルに関するメッセージを操作ログに表示し、ポジションを開きます。
- ポジションが開いている場合は、ポジションオープンフラグをリセットします。
手順3
- ポジションをクローズするシグナルがあり、そのようなポジションが存在する場合は、操作ログにポジションクローズシグナルに関するメッセージを出力し、ポジションをクローズします。
- ポジションが存在しない場合は、ポジションクローズフラグをリセットします。
手順4
- 有効期間が切れた後にポジションをクローズするシグナルがあり、そのようなポジションが存在する場合は、有効期間が切れたポジションをクローズします。
- ポジションが存在しない場合は、フラグをリセットします。
関数リスト
EA関数のリストとその簡単な説明を見てみましょう。
CheckState():環境の状態を確認する
- パターンが見つからない場合はfalseを返します。
- インジケーターでパターンを確認するときにエラーを受信した場合は、falseを返します。
- インジケーターシグナルによってパターンが確認されない場合、ポジションオープンフラグはリセットされます。
- ポジションの有効期間が終了した後にクローズを設定する場合は、対応するフラグを設定する必要があります。
PositionOpen():ポジションを開く
- 取引環境データが更新されます。
- シグナルとそれに応じたポジションの種類に応じて、ストップロスとテイクプロフィットのインストール価格は、始値とサーバー制限に応じて許容可能な値に調整されます。
- ポジションが開かれます。
- ポジションが開かれていない場合は、操作ログにエラーを報告し、falseを返します。
- 正常に開いた場合はtrueを返します。
CloseBySignal():シグナルによってポジションをクローズする
- クローズシグナルがない場合、関数から戻ります。
- クローズされるポジションのタイプは、シグナルの方向によって決まります。
- シグナル方向によって決定されるタイプのEAポジションはすべてクローズされます。
CloseByTime():有効期限が切れたポジションをクローズする
- EAが開いたポジションがない場合、関数から戻ります。
- 有効期限が切れたEAが開いたポジションはすべてクローズされます。
PositionExist():シグナル方向のポジションのフラグを返す
- シグナル方向に応じた位置タイプを決定します。
- シグナル方向によって決定されるタイプのEAポジションのフラグが返されます。
PositionExpiredByTimeExist():有効期限が切れたポジションのフラグを返す
- ポジションの存続期間のバーの数が定義されます。
- ポジションの存続期間が設定で指定されたバーの数を超えると、ポジションのフラグが返されます。
BarsHold():ポジションの有効期間のバーの数を返す
- ポジションオープン時間と現在のサーバー時間の間のバーの数を決定して返します。
Open()、Close()、Low()、High():インデックスによって対応するバーの価格を返す
- 対応する価格は指定されたバーから要求されます。
- 価格が受信されない場合は、エラーフラグが設定されます。
- 取得した価格が返されます。
MidPoint()、MidOpenClose()、AvgBody():計算された平均価格を返す
CheckPattern():パターンが存在するかどうかを確認する
- パターン検索アルゴリズムはショート方向で実行されます。
- パターンが見つかった場合は、見つかったパターンのフラグが設定され、trueが返されます。
- パターン検索アルゴリズムはロング方向に実行されます。
- パターンが見つかった場合、見つかったパターンのフラグが設定され、trueが返されます。
- パターンが見つからない場合はエラーフラグが返されます。このフラグは、価格を取得する関数でfalseに設定できます。
CheckConfirmation():インジケーターシグナルによって確認されているパターンシグナルのフラグをチェックして返す
CheckCloseSignal():インジケーターの値によってポジションクローズシグナルの条件をチェックする。シグナルが存在する場合は、ポジションクローズフラグを設定する
結論
Experts\Free Robotsフォルダ内の28個のEAはすべて同じロジックに従います。それらの唯一の違いは、ローソク足パターンを検索するアルゴリズムと、パターンシグナルを確認するために4つのインジケーターからデータを受信することにあります。したがって、これらのEAはいずれも、他のローソク足パターンで動作し、他のインジケーターからパターン確認を受け取る他のEAを作成するためのテンプレートとして使用できます。そのために必要なのは、EA操作の最初のステップでアクセスされるCheckState()関数から呼び出されるCheckPattern()関数で、ロング方向とショート方向のパターンを検索するロジックを変更することだけです。
//+------------------------------------------------------------------+ //| Returns true in case of successful pattern check | //+------------------------------------------------------------------+ bool CheckPattern() { ExtPatternDetected=false; //--- check if there is a pattern ExtSignalOpen=SIGNAL_NOT; ExtPatternInfo="\r\nPattern not detected"; ExtDirection=""; //--- check 3 Black Crows if((Open(3)-Close(3)>AvgBody(1)) && // long black (Open(2)-Close(2)>AvgBody(1)) && (Open(1)-Close(1)>AvgBody(1)) && (MidPoint(2)<MidPoint(3)) && // lower midpoints (MidPoint(1)<MidPoint(2))) { ExtPatternDetected=true; ExtSignalOpen=SIGNAL_SELL; ExtPatternInfo="\r\n3 Black Crows detected"; ExtDirection="Sell"; return(true); } //--- check 3 White Soldiers if((Close(3)-Open(3)>AvgBody(1)) && // long white (Close(2)-Open(2)>AvgBody(1)) && (Close(1)-Open(1)>AvgBody(1)) && (MidPoint(2)>MidPoint(3)) && // higher midpoints (MidPoint(1)>MidPoint(2))) { ExtPatternDetected=true; ExtSignalOpen=SIGNAL_BUY; ExtPatternInfo="\r\n3 White Soldiers detected"; ExtDirection="Buy"; return(true); } //--- result of checking return(ExtCheckPassed); }
確認インジケーターを変更するには、たとえばCCIに指定されたインジケータープロパティを入力内の必要なものに置き換えるだけです。
//--- Input parameters input int InpAverBodyPeriod=12; // period for calculating average candlestick size input int InpPeriodCCI =37; // CCI period input ENUM_APPLIED_PRICE InpPrice=PRICE_CLOSE; // price type
OnInit()ハンドラで、たとえばCCIを作成するブロックを別のインジケーターを作成するブロックに置き換えます。
//+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { Print("InpSL=", InpSL); Print("InpTP=", InpTP); //--- set parameters for trading operations ExtTrade.SetDeviationInPoints(InpSlippage); // slippage ExtTrade.SetExpertMagicNumber(InpMagicNumber); // Expert Advisor ID ExtTrade.LogLevel(LOG_LEVEL_ERRORS); // logging level ExtAvgBodyPeriod=InpAverBodyPeriod; //--- indicator initialization ExtIndicatorHandle=iCCI(_Symbol, _Period, InpPeriodCCI, InpPrice); if(ExtIndicatorHandle==INVALID_HANDLE) { Print("Error creating CCI indicator"); return(INIT_FAILED); } //--- OK return(INIT_SUCCEEDED); }
次に、シグナルを確認するCheckConfirmation()関数と、インジケーターシグナルによってポジションをクローズするCheckCloseSignal()関数で、パターンのロング方向とショート方向を確認するために必要な値を持つ新しいインジケーターのデータを使用します。
//+------------------------------------------------------------------+ //| Returns true in case of successful confirmation check | //+------------------------------------------------------------------+ bool CheckConfirmation() { ExtConfirmed=false; //--- if there is no pattern, do not search for confirmation if(!ExtPatternDetected) return(true); //--- get the value of the stochastic indicator to confirm the signal double signal=CCI(1); if(signal==EMPTY_VALUE) { //--- failed to get indicator value, check failed return(false); } //--- check the Buy signal if(ExtSignalOpen==SIGNAL_BUY && (signal<-50)) { ExtConfirmed=true; ExtPatternInfo+="\r\n Confirmed: CCI<-50"; } //--- check the Sell signal if(ExtSignalOpen==SIGNAL_SELL && (signal>50)) { ExtConfirmed=true; ExtPatternInfo+="\r\n Confirmed: CCI>50"; } //--- successful completion of the check return(true); }
//+------------------------------------------------------------------+ //| Check if there is a signal to close | //+------------------------------------------------------------------+ bool CheckCloseSignal() { ExtSignalClose=false; //--- if there is a signal to enter the market, do not check the signal to close if(ExtSignalOpen!=SIGNAL_NOT) return(true); //--- check if there is a signal to close a long position if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) { //--- there is a signal to close a long position ExtSignalClose=CLOSE_LONG; ExtDirection="Long"; } //--- check if there is a signal to close a short position if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)>80) && (CCI(2)<80))) { //--- there is a signal to close a short position ExtSignalClose=CLOSE_SHORT; ExtDirection="Short"; } //--- successful completion of the check return(true); }
したがって、これらのEAは、ほぼすべての適切なインジケーターからの確認を使用してさまざまなローソク足パターンをチェックするためのカスタムアルゴリズムを作成およびテストするための優れたテンプレートとなります。
MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/15479




- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
比較されたからこその質問だ:
私はこれらのコードを作っていない。そのため、「矛盾に気づいたら、コードに追加してください」と書いたのです。
これはMT5のアップデートの一部だと理解しています。私のコードに追加します - 次のターミナルの更新時に消去されます。
これはMT5のアップデートの一部だと理解しています。次回のターミナルアップデートで消去されます。
Expert Advisorを別のフォルダにコピーして、そこで必要なようにすべてを変更することを妨げるものは何ですか?
それらはトレーニングであり、単なる例です。
それらはチュートリアルであり、単なる例だ。
我々は失敗から学ぶ......失敗をするために)
ピアスラインをチェック
おっしゃる通り、条件が左右対称に書かれていません。 原典(「世界最高のトレーダーの戦略」)を確認しましたが、同じことが書かれていました。
私たちのミスではありませんが、訂正する必要があります。 他のソースにも書かれているので、そちらも見てみます。どうやら著者は、次の条件を付け加えるのを忘れていたようだ。