English Русский 中文 Español Deutsch Português
preview
クライアント端末での取引戦略の例の分析

クライアント端末での取引戦略の例の分析

MetaTrader 5 |
131 15
Artyom Trishkin
Artyom Trishkin

内容


はじめに

1990年代初頭、テクニカルアナリストのスティーブ・ニソンが開発した日本のローソク足チャートとローソク足パターンが西洋の金融市場に導入されました。それ以来、ローソク足パターンの知識は、古典的なテクニカル分析を適用する能力と同じくらいトレーダーにとって不可欠なものになりました。

しばらく前から、クライアント端末のEAディレクトリに新しいFree Robotsフォルダが表示されています。


このフォルダには28個のEAが含まれています。これは、独自の開発のために戦略で規定された原則を独自に研究および適用するための取引戦略の例です。Free Robotsフォルダに表示されている取引戦略は、インジケーターシグナルによってサポートされるローソク足パターンで取引するEAです。

ローソク足パターンのシグナルを確認するには、4つのオシレーター(CCIMFIRSIStochastic 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の動作のロジックを定義するためのセマフォです。テキスト変数は、操作ログにデータを表示するための値を受け取ります。
    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

    最後のコメント | ディスカッションに移動 (15)
    Artyom Trishkin
    Artyom Trishkin | 21 8月 2024 において 14:14
    Ivan Titov #:

    比較されたからこその質問だ:

    私はこれらのコードを作っていない。もし矛盾に気づいたら、自分のコードに追加してください。
    Ivan Titov
    Ivan Titov | 21 8月 2024 において 14:17
    Artyom Trishkin #:
    私はこれらのコードを作っていない。そのため、「矛盾に気づいたら、コードに追加してください」と書いたのです。

    これはMT5のアップデートの一部だと理解しています。私のコードに追加します - 次のターミナルの更新時に消去されます。

    Artyom Trishkin
    Artyom Trishkin | 21 8月 2024 において 14:21
    Ivan Titov #:

    これはMT5のアップデートの一部だと理解しています。次回のターミナルアップデートで消去されます。

    Expert Advisorを別のフォルダにコピーして、そこで必要なようにすべてを変更することを妨げるものは何ですか?

    それらはトレーニングであり、単なる例です。

    Ivan Titov
    Ivan Titov | 21 8月 2024 において 14:24
    Artyom Trishkin #:
    それらはチュートリアルであり、単なる例だ。

    我々は失敗から学ぶ......失敗をするために)

    Rashid Umarov
    Rashid Umarov | 16 9月 2024 において 11:43
    Ivan Titov #:
    ピアスラインをチェック

    おっしゃる通り、条件が左右対称に書かれていません。 原典(「世界最高のトレーダーの戦略」)を確認しましたが、同じことが書かれていました。

    私たちのミスではありませんが、訂正する必要があります。 他のソースにも書かれているので、そちらも見てみます。どうやら著者は、次の条件を付け加えるのを忘れていたようだ。


    取引におけるニューラルネットワーク:独立したチャネルへのグローバル情報の注入(InjectTST) 取引におけるニューラルネットワーク:独立したチャネルへのグローバル情報の注入(InjectTST)
    最新のマルチモーダル時系列予測方法のほとんどは、独立チャネルアプローチを使用しています。これにより、同じ時系列の異なるチャネルの自然な依存関係が無視されます。2つのアプローチ(独立チャネルと混合チャネル)を賢く使用することが、モデルのパフォーマンスを向上させる鍵となります。
    取引におけるニューラルネットワーク:TEMPO法の実践結果 取引におけるニューラルネットワーク:TEMPO法の実践結果
    TEMPO法について引き続き学習します。この記事では、実際の履歴データに対する提案されたアプローチの実際の有効性を評価します。
    動物移動最適化(AMO)アルゴリズム 動物移動最適化(AMO)アルゴリズム
    この記事は、生命と繁殖に最適な条件を求めて動物が季節的に移動する様子をモデル化するAMOアルゴリズムについて説明しています。AMOの主な機能には、トポロジカル近傍の使用と確率的更新メカニズムが含まれており、実装が容易で、さまざまな最適化タスクに柔軟に対応できます。
    人工蜂の巣アルゴリズム(ABHA):テストと結果 人工蜂の巣アルゴリズム(ABHA):テストと結果
    この記事では、人工蜂の巣アルゴリズム(ABHA)の探索を続け、コードの詳細を掘り下げるとともに、残りのメソッドについて考察します。ご存じのとおり、このモデルにおける各蜂は個別のエージェントとして表現されており、その行動は内部情報、外部情報、および動機付けの状態に依存します。さまざまな関数を用いてアルゴリズムをテストし、その結果を評価表としてまとめて提示します。