システムトレード

MAトレンド 2 - MetaTrader 5用のシステムトレーディング
MetaTrader5
MAトレンド 2 - MetaTrader 5用のシステムトレーディング

最初のバージョンのMAトレンドが開発されました。新たに取引タイプの制限パラメータが追加されました。BUYのみ - BUYのポジションのみをオープンできますSELLのみ - SELLのポジションのみをオープンできます両方 - BUYとSELLの両方をオープンできます。このシステムトレーディングは、iMA(移動平均、MA)インジケーターに基づいて動作します。多くの設定があります:一つのポジションのみ - 市場で保有できるのは一つのポジションのみ逆転 - 取引信号を反転させる対立ポジションを閉じる - 取引信号を受信した際に、対立するポジションを強制的に閉じる。全てのパラメータがデフォルトに設定されている時の取引信号の生成方法は以下の通りです:現在のASK価格がバー#1のインジケーター値より高い時 -> BUYポジションをオープンする信号現在のBID価格がバー#1のインジケーター値より低い時 -> SELLポジションをオープンする信号。MQL5コードでの表現は以下の通りです:      if(m_symbol.Ask()>ma[1])          m_need_open_buy=true;       else if(m_symbol.Bid()<ma[1])          m_need_open_sell=true;一つのポジションのみのパラメータがfalseとtrueの時の動作例は以下の通りです:次の例は、一つのポジションのみがtrue、逆転がfalse、対立ポジションを閉じるがtrueの場合です:BUYポジションがオープンされ、しばらくしてSELLポジションをオープンする信号が受信されました。対立ポジションを閉じるがtrueであるため、最初にBUYポジションが閉じられ(信号に対して反対のため)、その後にSELLポジションがオープンされました。

2025.04.04
iCHOトレンドCCIDualOnMAフィルター:MetaTrader 5用のトレーディングシステム
MetaTrader5
iCHOトレンドCCIDualOnMAフィルター:MetaTrader 5用のトレーディングシステム

トレーディング戦略このExpert Advisor(EA)は、iCHO(チャイキンオシレーター)とカスタムのCCIDualOnMAという2つのインジケーターを使用します。iCHOはトレンドインジケーターとして機能し、インジケーターがゼロを越えるとポジションをクローズします。一方、CCIDualOnMAはポジションを追加するためのフィルターとして使われます。これらのインジケーターは指定された「ワーキングタイムフレーム」で作成され、このタイムフレームが新しいバーの誕生の瞬間を決定するために使用されます(必要に応じてパラメータ「トレーリング...」と「シグナル検索...」に関連します)。トレーディングシグナル:CHOインジケーターがゼロを越えたときのポジションのクローズ:クロッシングポジション: リバーストレードモード下から上へのクロス'false' -> すべてのSELLポジションをクローズ('BUYポジションのみ許可' または 'BUYとSELLポジション両方許可') -> BUYポジションをオープン'true' -> すべてのBUYポジションをクローズ('SELLポジションのみ許可' または 'BUYとSELLポジション両方許可') -> SELLポジションをオープン上から下へのクロス'false' -> すべてのBUYポジションをクローズ('SELLポジションのみ許可' または 'BUYとSELLポジション両方許可') -> SELLポジションをオープン'true' -> すべてのSELLポジションをクローズ('BUYポジションのみ許可' または 'BUYとSELLポジション両方許可') -> BUYポジションをオープン通常のシグナル(ポジション追加)CHOインジケーターがゼロを越え、ファストCCIがスロウCCIを下から上へクロスし、ファストCCIがゼロ未満であるときは、BUYを開くシグナルです。CHOインジケーターがゼロ未満で、ファストCCIがスロウCCIを上から下へクロスし、ファストCCIがゼロを越えているときは、SELLを開くシグナルです。図1. iCHOトレンドCCIDualOnMAフィルター特徴:このExpert Advisorはワーキングタイムフレームを最適化できます(「ワーキングタイムフレーム」)バーごとに「市場エントリー」トレードは1つだけ可能です(これは内部パラメータで、入力パラメータには含まれず、「Only one positions」パラメータとは無関係です)。「インサイドバー」モードで動作する場合、「シグナル検索...」パラメータは「バー#0 (毎ティックで)」であり、現在のバーはバー#0です。新しいバーが生じるときのみ動作する場合は、「シグナル検索...」パラメータは「バー#1 (新しいバーで)」であり、現在のバーはバー#1です。トレードモード: 取引の側面を制限します。'BUYポジションのみ許可'、'SELLポジションのみ許可'、'BUYとSELLポジション両方許可'の値を取ります。'時間制御の使用'パラメータは、トレーディングシグナルを検索するための時間間隔を'開始時間':'開始分'から'終了時間':'終了分'まで設定します。時間範囲は1日内で設定することも、日を跨いで設定することもできます。各パラメータのグループについて詳しく見ていきましょう:トレーディング設定:'ワーキングタイムフレーム' -ワーキングタイムフレーム。このタイムフレームでインジケーターが作成され、新しいバーが検索されます。ストップロス、テイクプロフィット、トレーリングは、ポイントで設定されます。いずれのパラメータ('ストップロス'、'テイクプロフィット'、'トレーリングストップ')も無効にできます - 選択したパラメータを'0.0'に設定してください。トレーリングがどのように機能するかは、TrailingStopコードの画像で示されています。ポジションサイズ管理(ロット計算)ロットは一定('マネーマネジメント'を'定数ロット'に設定し、'マネーマネジメントの値'にロットサイズを設定)または動的('マネーマネジメント'を'取引ごとのリスク割合'に設定し、'マネーマネジメントの値'にリスク割合を設定)にすることができます。また、最小ロットに等しい一定ロットを設定することも可能です - 'マネーマネジメント'を'最小ロット'に設定します。時間制御:このセクションでは、トレーディングシグナルを検索するための時間範囲を設定します。時間範囲は'時間制御の使用'を介して有効にされ、トレーディングシグナルを検索するための時間間隔を'開始時間':'開始分'から'終了時間':'終了分'まで設定します。時間範囲は1日内で設定することも、日を跨いで設定することもできます。トレーリングには影響しません。追加機能:'ポジション: 一つのみ'フラグを'true'に設定すると、Expert Advisorは市場にポジションを一つだけ持つことができます。注意: 'ポジション: 一つのみ'を'true'に設定しても、「ポジション: 反転」の設定は無効になりません。つまり、反対のポジションはまずクローズされます。この'ポジション: 反転'フラグは、シグナルの反転を制御します。また、興味深いフラグ'ポジション: 反対をクローズ'は、'true'に設定すると、ポジションをオープンする前に反対のポジションを削除します。'プリント'ログは、すべての操作の高度なロギングを出力します。'フリーズおよびストップレベル係数'パラメータは、シンボルのストップおよびフリーズレベルがゼロである場合の係数を設定します。値は'3'を使用することを推奨します。

2025.04.04
新しいバーやキャンドルの開始を検出する方法 - MetaTrader 5用のシステムトレーディング
MetaTrader5
新しいバーやキャンドルの開始を検出する方法 - MetaTrader 5用のシステムトレーディング

皆さん、こんにちは!今日は、MetaTrader 5で新しいバー(キャンドル)の開始を検出する方法についてお話ししたいと思います。システムトレーディング(EA)を使っていると、新しいティック(tick)が受信されると、標準のOnTick()イベント処理関数が呼び出されるのですが、新しいバーが開始される際の標準的なイベント処理関数はないんですね。 新しいバーの開始を検出するには、最新のバーのオープン時間を監視する必要があります。オープン時間が変わると、新しいバーの開始を示すことになり、その状況に応じて反応してイベントを処理することができます。以下に示すのは、MQL4とMQL5の両方で動作するコード例です。 // 標準のティックイベントハンドラー    void OnTick()    {       // 新しいバーを確認(MQL4およびMQL5に対応)          static datetime dtBarraCorrente   = WRONG_VALUE;                 datetime dtBarraPrecedente = dtBarraCorrente;                          dtBarraCorrente   = iTime( _Symbol, _Period, 0 );                 bool     bEventoBarraNova  = ( dtBarraCorrente != dtBarraPrecedente );       // 新しいバーのイベントに反応し、状況を処理する          if( bEventoBarraNova )          {             // 最初のティックを受信したかどうかを確認                /* 例えば、グラフに最初に適用されたとき、バーが進行中で、実際には新しいバーの開始ではない場合 */                if( dtBarraPrecedente == WRONG_VALUE )                {                   // 最初のティックまたはバーの途中で何かを実行...                }                else                {                   // 通常のバーが現れたときに何かを実行...                };       // 前の条件に関係なく何かを実行...      }          else          {             // 別のことを実行...          };       // その他の処理...    }; このコードでは、static変数がバーのオープン時間を記録します。これは、OnTick()関数から戻ってもデータを保持するため、現在のバーのオープン時間の変化を検出するための重要なポイントです。 また、EAが初めてチャートに配置されるとき、前述のコードは新しいバーが開いたかのように反応します。この条件は、異なる状況で処理が必要な場合には特別な対応が求められますので、注意が必要です。 最後に、私のCodeBaseの公開物に関するソースコードは、MetaEditorの「Public Projects」から「FMIC」という名前でアクセス可能になっていますので、ぜひご覧ください。

2025.04.03
MT5用キャンドル分析EA R1 - リスク管理に優れたトレードシステム
MetaTrader5
MT5用キャンドル分析EA R1 - リスク管理に優れたトレードシステム

こんにちは、トレーダーの皆さん!今日は、MetaTrader 5向けのキャンドル分析EA R1についてお話しします。このEAは、マルチタイムフレームのキャンドルパターン分析とファンダメンタルイベントフィルタリングを組み合わせて、リスク管理を徹底したトレードを実現します。以下に主な特徴をまとめてみました。コア戦略プライスアクション重視:トレードシグナルは、3つの時間足(M5、H1、H4)でのキャンドルパターン(ピンバー、エンゴルフィング、ハンマー/シューティングスター)に依存します。マルチTFコンフルエンス:5分足のトリガーと高時間足(H1/H4)のトレンド構造が一致することが求められます。リスク管理1.5:1リスク・リワード比:自動的にストップロスの1.5倍の距離でテイクプロフィットを計算します。マージン保護:デフォルトでマージン使用率を30%未満に制限し、ポジションサイズを自動調整します。ダイナミックストップ:ATRのボラティリティスケーリングや固定ピップ距離を使用してストップロスを配置します。ニュースフィルタイベント前シャットダウン:高インパクトニュースイベント(GDP、NFP、CPI)の2時間前にすべてのポジションをクローズします。ボラティリティ回避:予定された高リスク期間中は新たなトレードを防止します。運用設計5分間のエグゼキューション:M5チャートでトレードをトリガーしつつ、H1/H4のコンテキストを尊重します。セッション制限:サーバー時間で午前8時から午後5時のピーク流動性時間帯のみでトレードします。強み純粋なプライスアクション分析を通じてインジケーターの遅延を排除固定RR比とマージン制限による厳格なリスク管理トレンド市場とレンジ市場の両方に適応可能理想的なトレーダーEURUSDや他の流動性の高い通貨ペアを活発なセッションでトレードするトレーダーイベントリスクを考慮したシステム的なエグゼキューションを求めるトレーダーこのEAは、テクニカルパターンの認識とマクロ経済の意識をバランス良く組み合わせており、資本保全を優先しつつ、1.5:1のリワードシナリオを狙っています。

2025.03.31
MT5での出金追跡:EAを活用する方法
MetaTrader5
MT5での出金追跡:EAを活用する方法

こんにちは、トレーダーの皆さん!今日は、MetaTrader 5(MT5)で出金を追跡するためのコードについてお話しします。このコードを既存のEA(エキスパートアドバイザー)に追加することで、運用している口座からの出金を効率的にモニタリングできるようになります。 多くのEAは、パラメータが変更されることを避けるために、仮想プライベートサーバー(VPS)でホストされています。これにより、時間足やチャートテンプレートが変更されても、設定がリセットされる心配がなくなります。 しかし、時にはロットサイズが増加する一方で、損失が出ても減少することはありません。これは、すべての損失を回収することを期待して、ロットサイズを増やし続けるためです。 EAは損失を回収するためにロットサイズを増やしますが、出金後にはそのサイズを減少させることができません。これは、出金と損失を区別できないためです。 もし損失が発生した場合、EAは最後に知られているロットサイズを維持し続け、回復を試みます。一方で、出金があった場合は、新しい残高に適応するためにロットサイズを減少させる必要があります。 このコードを使うことで、出金を監視するだけでなく、EAが新しいバランスに応じてロットサイズを調整することも可能になります。ぜひ活用してみてください!

2025.03.31
MT4での出金管理 - トレードをさらに効率化する方法
MetaTrader4
MT4での出金管理 - トレードをさらに効率化する方法

こんにちは、トレーダーの皆さん!今日は、MetaTrader 4(MT4)を使っている方に役立つ出金管理のコードについてお話しします。このコードを既存のEA(エキスパートアドバイザー)に追加することで、アカウントからの出金を追跡することができます。 多くのEAは、パラメータが変更されるたびにリセットを避けるために、仮想プライベートサーバー(VPS)上でホストされています。これにより、安定したトレード環境が確保されます。 ただ、ロットサイズが増加する設定になっている場合、出金があってもロットサイズが減少することはありません。トレーダーは、損失を取り戻すためにロットを増やすことを望むあまり、出金後も同じロットサイズで取引を続けてしまいます。 EAは、損失を取り戻すためにロットサイズを増やしますが、出金と損失を区別することができないため、出金後にロットサイズを減らすことができません。このため、出金があった場合、EAは新しい残高に適応するためにロットサイズを減少させる必要があります。 このコードを使えば、出金を監視するだけでなく、ロットサイズの調整も行えるようになります。トレードの安定性を高めるために、ぜひこの機能を取り入れてみてください!

2025.03.31
RRS Tangled EA - MetaTrader 4用の革新的な自動売買ツール
MetaTrader4
RRS Tangled EA - MetaTrader 4用の革新的な自動売買ツール

こんにちは、トレーダーの皆さん!今日は、RRS Chaotic EAやRRS Randomness in Nature EAの進化版とも言える「RRS Tangled EA」についてご紹介します。このEAは、通貨ペア、ロットサイズ、注文タイプをランダムに選択して取引を行います。テクニカル指標やファンダメンタル分析には依存せず、自然界のランダム性を活用してトレードを開始します。 適切な設定(テイクプロフィット、ストップロス、トレーリング、リスク管理など)を行うことで、このEAはかなりの利益を生むことが可能です。 このEAはマルチカレンシーまたはマルチアセット型で、特定の通貨ペアのチャートに接続していても、他の通貨ペアの取引を行い、オープンしたトレードに関連するすべての操作を管理できます。 変数名 値の種類 説明 minLot_Size ダブル値 ロットサイズのランダム性がこの値を下回らないようにするための最小ロットサイズ。 maxLot_Size ダブル値 ロットサイズのランダム性がこの値を超えないようにするための最大ロットサイズ。 StopLoss 整数値 ストップロスの値をポイント/ピップで設定します(資産の最小価格変動単位)。ストップロスを0に設定すると、無効化されます。 TakeProfit 整数値 テイクプロフィットの値をポイント/ピップで設定します。テイクプロフィットを0に設定すると、無効化されます。 Trailing_Start 整数値(ポイント/ピップ) トレード価格からトレーリングを開始するためのピップ数を指定します。トレーリングスタートを0に設定すると、トレーリング操作が無効化されます。 Trailing_Gap 整数値(ポイント/ピップ) 現在の市場価格とトレーリングストップロスの間のピップ数のギャップを設定します。トレーリングギャップを0に設定すると、トレーリング操作が無効化されます。 Risk_In_Money_Type FixedMoney, BalancePercentage FixedMoney: マイナスの浮動が指定した金額に達すると、すべてのオープントレードをクローズします。BalancePercentage: アカウント残高に基づいて自動的に計算し、指定した制限に達したらすべてのトレードをクローズします。 Money_In_Risk 整数値 Risk_In_Money_TypeがFixedMoneyに設定されている場合、失うことができる金額を入力します。 BalancePercentageに設定すると、EAはアカウント残高に基づいてリスクを自動で計算し、その制限に達したらすべてのトレードをクローズします。 Max_Spread 整数値(ポイント/ピップ) 最大許容スプレッドを設定します。現在のスプレッドがこの値を超えると、EAはトレードを行わず、スプレッドが指定された制限内に戻るのを待ちます。 Slippage 整数値(ポイント/ピップ) 注文執行のために許容される最大スリッページを設定します。 MaxOpenTrade 整数値 オープン可能な最大トレード数を設定します。 皆さん、頑張ってトレードを楽しんでください!

2025.03.23
RRSカオティックEA - MetaTrader 4向けトレーディングアドバイザー
MetaTrader4
RRSカオティックEA - MetaTrader 4向けトレーディングアドバイザー

こんにちは、トレーダーの皆さん!今日は、RRSカオティックEAについてお話ししたいと思います。これは、ランダムな通貨ペアやロットサイズ、注文タイプで取引を行う、シンプルながらも効果的なEAです。このEAは、テクニカルスキルやインディケーター、プライスアクション、ニュースカレンダー、キャンドルパターンなどに頼ることなく、様々な取引戦略やリスク管理プランを提供しています。 ランダム性をもって取引を行うにも関わらず、適切な設定を行うことで良好な利益を上げることが可能です。 変数名 値 説明 minLot_Size 倍精度値 ロットサイズのランダム性がこの値を下回らないようにするための最小ロットサイズです。 maxLot_Size 倍精度値 ロットサイズのランダム性がこの値を超えないようにするための最大ロットサイズです。 StopLoss 整数値 ストップロスの値をポイント/ピップで設定します(資産の最小価格変動単位)。 ストップロスを0に設定すると無効になります。 TakeProfit 整数値 テイクプロフィットの値をポイント/ピップで設定します。 テイクプロフィットを0に設定すると無効になります。 Risk_In_Money_Type FixedMoney, BalancePercentage FixedMoney: 指定した金額に達した場合、すべてのオープントレードを閉じます。BalancePercentage: アカウント残高に基づいて自動的に計算し、制限に達したらすべてのトレードを閉じます。 Money_In_Risk 整数値 Risk_In_Money_TypeがFixedMoneyに設定されている場合、失うことができる金額を入力します。 BalancePercentageに設定した場合、EAはアカウント残高に基づいてリスクを自動計算し、制限に達したらすべてのトレードを閉じます。 Max_Spread 整数値(ポイント/ピップ) 許容される最大スプレッドを設定します。現在のスプレッドがこの値を超えた場合、EAは取引を行わず、スプレッドが指定した制限内に戻るのを待ちます。 Slippage 整数値(ポイント/ピップ) 注文執行のために許可される最大スリッページを設定します。 MaxOpenTrade 整数値 許可されるオープントレードの最大数です。 注意: EAの動作に不具合やエラーが発生した場合は、EAコードの8行目から#property strictを削除してください。 それでは、幸運を祈ります。楽しいトレーディングを!

2025.03.19
ランダム性を活かした取引!RRSランダムネスEAのご紹介
MetaTrader4
ランダム性を活かした取引!RRSランダムネスEAのご紹介

皆さん、こんにちは!今日は、RRSランダムネスEAについてご紹介します。このEAは本当にランダム性を活かした取引を行います。通貨ペアやロットサイズ、オーダータイプをランダムに選ぶため、特定のテクニカルスキル(インジケーターやプライスアクション、ニュースカレンダー、キャンドルパターンなど)には依存しません。 さまざまな取引戦略やリスク管理プラン、カスタマイズ可能な設定を提供しており、使い勝手も抜群です。 このEAはランダム性に基づいていますが、しっかりとした利益を上げているのが魅力的ですね。 変数 値 説明 取引戦略 OneSide, DoubleSide OneSide: EAが一回の取引を行います(買いまたは売り)。 DoubleSide: EAが一回の買いと一回の売りの取引を行います。 最小ロットサイズ 倍精度値 ロットサイズのランダム性がこの値を下回らないようにするための最小ロットサイズです。 最大ロットサイズ 倍精度値 ロットサイズのランダム性がこの値を超えないようにするための最大ロットサイズです。 ストップロス 整数値 ストップロスの値をポイント/ピップで設定します(資産の最小価格変動単位)。 ストップロスを0に設定すると、ストップロスが無効になります。 テイクプロフィット 整数値 テイクプロフィットの値をポイント/ピップで設定します。 テイクプロフィットを0に設定すると、テイクプロフィットが無効になります。 トレーリング開始 整数値(ポイント/ピップ) トレードオープン価格からトレーリングを開始するポイント数を指定します。 トレーリング開始を0に設定すると、トレーリング操作が無効になります。 トレーリングギャップ 整数値(ポイント/ピップ) 現在の市場価格とトレーリングストップロスの間のギャップを設定します。 トレーリングギャップを0に設定すると、トレーリング操作が無効になります。 リスクタイプ FixedMoney, BalancePercentage FixedMoney: 指定した金額に達したらすべてのオープントレードをクローズします。 BalancePercentage: アカウント残高に基づいて自動的に計算し、指定した限度に達したらすべてのトレードをクローズします。 リスク金額 整数値 リスクタイプがFixedMoneyの場合、失ってもよい金額を入力します。 BalancePercentageに設定すると、EAがアカウント残高に基づいてリスクを自動的に計算し、その限度に達したらすべてのトレードをクローズします。 最大スプレッド 整数値(ポイント/ピップ) 許容される最大スプレッドを設定します。現在のスプレッドがこの値を超えると、EAは取引を行わず、スプレッドが指定した限度内に戻るのを待ちます。 スリッページ 整数値(ポイント/ピップ) オーダー実行のための最大許容スリッページを設定します。 注意:EAの動作に不具合やエラーがある場合は、EAコードの8行目から#property strictを削除してください。 幸運を祈ります!楽しいトレーディングを!

2025.03.19
RRSノンディレクショナルEA - メタトレーダー4用のトレーディングアシスタント
MetaTrader4
RRSノンディレクショナルEA - メタトレーダー4用のトレーディングアシスタント

今回は、ノンディレクショナルバイアスEAについてご紹介します。このEAは、インジケーターやプライスアクション、ニュースカレンダー、キャンドルパターンなどのテクニカルスキルに依存せず、さまざまなトレーディング戦略やリスク管理計画、カスタマイズ可能な設定を提供します。選択した戦略に基づいて、EAは連続的かつランダムに取引を行います。ランダム性に基づいて動作するEAですが、適切なリスク管理設定を行うことで利益を上げることができます。変数値説明トレーディング戦略ヘッジスタイル, ランダム売買, 売買, 自動スワップ, 買い注文, 売り注文ヘッジスタイル: 同時に買いと売りの取引をオープンします。ランダム売買: 一度にランダムに買いまたは売りの取引をオープンします。売買: 前回のクローズドオーダータイプに基づいて取引をオープンします。前回のクローズドオーダーが買いだった場合、売りの取引をオープンします。自動スワップ: ポジティブスワップの方向に基づいてのみ、買いまたは売りの取引をオープンします。ネガティブスワップの方向の取引は無視します。買い注文: 買いの取引のみをオープンします。売り注文: 売りの取引のみをオープンします。新規取引真/偽真: EAが取引を行います。偽: EAは取引を行いません。ロットサイズダブル値EAによって実行される各取引の希望ロットサイズを選択してください。ストップロスの種類バーチャルSL, クラシックSLバーチャルSL: 指定したストップロスに達するとEAは取引をクローズしますが、ストップロスレベルはブローカーのサーバーには表示されません(ローカルPCに残ります)。クラシックSL: EAはブローカーのサーバーに反映される可視のストップロスを設定します。この機能は、ブローカーがハイパーアクティブなEAをサポートしていない場合や、1日に変更できるクォータに制限がある場合、またはブローカーがストップロスを狙っていると疑う場合に便利です。ストップロス整数値ポイント/ピップでストップロスの値を設定します(資産の最小価格変動単位)。ストップロスを0に設定すると無効になります。テイクプロフィットの種類バーチャルTP, クラシックTPバーチャルTP: テイクプロフィットレベルはブローカーのサーバーには表示されません。クラシックTP: テイクプロフィットレベルはブローカーのサーバーに表示されます。テイクプロフィット整数値ポイント/ピップでテイクプロフィットの値を設定します。テイクプロフィットを0に設定すると無効になります。トレーリングの種類バーチャルトレーリング, クラシックトレーリングバーチャルトレーリング: ストップロスの変更はローカルPCに保持され、ブローカーのサーバーには反映されません。クラシックトレーリング: ストップロスの変更は直接ブローカーのサーバーに更新されます。この機能は、ブローカーがハイパーアクティブなEAをサポートしていない場合や、1日に変更できるクォータに制限がある場合、またはブローカーがストップロスを狙っていると疑う場合に便利です。トレーリング開始整数値(ポイント/ピップ)トレードオープンプライスからトレーリングを開始するためのピップ数を指定します。トレーリングギャップ整数値(ポイント/ピップ)現在の市場価格とトレーリングストップロスの間のギャップを設定します。トレーリングギャップを0に設定するとトレーリング操作が無効になります。資金リスクの種類固定資金, バランスパーセント固定資金: ネガティブフローティングが指定した金額に達したときに、すべてのオープントレードをクローズします。バランスパーセント: アカウントの残高に基づいて自動的に計算し、この制限に達したときにすべての取引をクローズします。リスクの金額整数値資金リスクの種類が固定資金に設定されている場合、失うことができる金額を入力します。バランスパーセントに設定されている場合、EAはアカウントの残高に基づいてリスクを自動的に計算し、その制限に達したときにすべての取引をクローズします。最大スプレッド整数値(ポイント/ピップ)最大許容スプレッドを設定します。この値を超えると、EAは取引を行わず、スプレッドが指定した制限内に戻るのを待ちます。スリッページ整数値(ポイント/ピップ)注文実行のための最大許容スリッページを設定します。注意: EAの動作に不具合やエラーが発生した場合は、EAコードの6行目から#property strictを削除してください。幸運を祈ります!ハッピー・トレーディング!

2025.03.17
MeanReversionTrendEA - MetaTrader 5向けのトレーディングシステム
MetaTrader5
MeanReversionTrendEA - MetaTrader 5向けのトレーディングシステム

1. 概要MeanReversionTrendEAは、移動平均とATRに基づくボラティリティ測定を使用し、トレンドフォローと平均回帰の戦略を組み合わせています。これにより、様々な市場環境において信頼性の高い取引執行が可能です。2. 主な機能デュアル戦略: トレンドフォロー(MAクロスオーバー)と平均回帰(価格とMAの乖離)を組み合わせています。適応信号: トレンド特定のために速い移動平均と遅い移動平均を使用します。ボラティリティ統合: 平均回帰エントリーのためにATRを利用して市場のボラティリティを測定します。内蔵バリデーター: ボリューム、マージン、ストップレベルをチェックする包括的な取引検証システムです。安全メカニズム: バックテスト検証用の安全取引機能を含んでいます。防御的ポジション管理: 適切なバリデーションを伴う固定または比例のSL/TPを設定します。マルチアセット対応: 外国為替、コモディティ、インデックス、株式に対応し、適切なロットサイズで運用可能です。3. 仕組み移動平均のクロスを監視し、トレンド方向の変化を捉えます。ATRに基づくボラティリティバンドを使用して、遅いMAからの価格乖離を測定します。速いMAが遅いMAを上回るか、価格がボラティリティバンドを下回った場合に買い信号を生成します。速いMAが遅いMAを下回るか、価格がボラティリティバンドを上回った場合に売り信号を生成します。適切なリスク管理パラメータで取引を検証し、執行します。4. 入力パラメータFast_MA_Period (20)、Slow_MA_Period (50)、ATR_Period (14)平均回帰バンド計算用のATR_Multiplier (2.0)ポジションサイズのためのLotSize (0.1)リスク管理のためのSL_Points (500)、TP_Points (1000)注文識別用のMagic_Number (123456)5. 使用上の注意主要通貨ペアや流動性の高い商品に最適です。全ての時間足で動作しますが、H1-H4の使用を推奨します。適切なインディケーター計算のために十分な過去データが必要です。トレンド市場での平均回帰の機会を捉えるのに最適です。強力なバリデーションシステムでブローカー間の適切な実行を保証します。6. コード構造CTradeValidator: 包括的な取引検証クラスです。インディケーターの初期化とデータ処理機能。トレンドと平均回帰のロジックを組み合わせた信号生成。適切なバリデーションとリスク管理を伴う取引執行。バックテストの整合性を保つための安全メカニズム。7. 免責事項教育目的で提供されています。過去の成績は将来の結果を保証するものではありません。ライブ取引の前にデモアカウントで十分にテストしてください。

2025.03.14
複数のEAをマジックナンバーで管理する利益・損失ダッシュボード【MT5対応】
MetaTrader5
複数のEAをマジックナンバーで管理する利益・損失ダッシュボード【MT5対応】

それぞれの戦略の洞察 一つの口座で複数の戦略を運用する際の大きな課題は、それぞれのパフォーマンスを明確に分けることです。マジックナンバーがなければ、トレードコメントやチケット範囲のようなあいまいな情報に頼らざるを得ません。しかし、マジックナンバーを使うことで、EAが自動的に付与する体系的な番号タグを活用できます。 正確なパフォーマンストラッキング どのシステムがドローダウンを抱えているのか、またはどのシステムが優れたパフォーマンスを発揮しているのかをすぐに特定できます。この知識は、パフォーマンスが低いロボットを一時停止するか、勝っている戦略に資金を追加するかの迅速な意思決定をサポートします。 分析と記録の簡素化 ログや履歴タブをくまなく探すのではなく、各EAの総閉じた利益、取引数、関連するコメントフィールドを集約したシンプルな「パネル」を持つことができます。これにより、記録管理、戦略の最適化、さらには他人のアカウントを管理している場合のクライアント報告にも役立ちます。完全なコードは添付されています。 使用のヒント スクリプト/EAをチャートに添付し、MT5でコンパイル後、各マジックナンバーのテーブルがすぐに表示されます。 チャートサイズの確認: チャートウィンドウが非常に狭い場合、テキストの一部が画面の右側に延びることがあります。チャートを広げるか、フォントサイズを下げて視認性を向上させましょう。 フォントの設定: 列の整列にはCourier Newが推奨されますが、異なる外観を希望する場合はコード内で変更可能です。 更新間隔の調整: デフォルトでは、スクリプトは5秒ごとに更新されます。もっと頻繁または少ない更新を希望する場合は、EventSetTimer(5)を変更してください。

2025.02.25
MetaTrader 5のシンボル履歴を全てダウンロードする方法
MetaTrader5
MetaTrader 5のシンボル履歴を全てダウンロードする方法

皆さん、こんにちは!今日はMetaTrader 5を使って、シンボルのすべてのティックデータをダウンロードする方法についてお話しします。このエキスパートアドバイザー(EA)は、ユーザーのブローカーのマーケットウォッチをスキャンし、利用可能なティックをすべてダウンロードします。また、特定の日付までのティックもダウンロードできます。 この方法を使えば、バックテスト用のシンボル履歴を簡単に取得したり、そのティックからカスタムチャートを作成するのに役立ちます。 ティックデータは、データフォルダ内にキャッシュされるので、十分なハードドライブの空き容量を確保してくださいね。 シンボルのダウンロードをスムーズに行うために、まずはダウンロードマネージャーを用意します。 CDownloadManager構造体には、必要な情報が全て含まれています。 struct CDownloadManager {&nbsp;&nbsp;&nbsp;&nbsp;bool m_started, m_finished;&nbsp;&nbsp;&nbsp;&nbsp;string m_symbols[], m_current;&nbsp;&nbsp;&nbsp;&nbsp;int m_index;} この構造体では、以下の情報を管理します: ダウンロードの状態(開始/終了) スキャンするシンボルのリスト 現在のシンボル スキャン中のシンボルのインデックス また、ハードドライブへの読み書きが必要なので、シンボルに関しては、バイナリファイルから文字列を読み書きするための2つの簡単な関数を作成します。 ファイルに文字列を保存する関数: void writeStringToFile(int f, string thestring) {&nbsp;&nbsp;&nbsp;&nbsp;//シンボル文字列を保存&nbsp;&nbsp;&nbsp;&nbsp;char sysave[];&nbsp;&nbsp;&nbsp;&nbsp;int charstotal = StringToCharArray(thestring, sysave, 0, StringLen(thestring), CP_ACP);&nbsp;&nbsp;&nbsp;&nbsp;FileWriteInteger(f, charstotal, INT_VALUE);&nbsp;&nbsp;&nbsp;&nbsp;for(int i = 0; i < charstotal; i++) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileWriteInteger(f, sysave[i], CHAR_VALUE);&nbsp;&nbsp;&nbsp;&nbsp;}} この関数は以下を受け取ります: ファイルハンドル f(書き込み用に開かれたファイル) ファイルに書き込む文字列 この関数は、文字列内の文字数を整数として書き込み、その後各文字を保存します。 ファイルから文字列を読み込む関数: string readStringFromFile(int f) {&nbsp;&nbsp;&nbsp;&nbsp;string result = "";&nbsp;&nbsp;&nbsp;&nbsp;//シンボル文字列を読み込む&nbsp;&nbsp;&nbsp;&nbsp;char syload[];&nbsp;&nbsp;&nbsp;&nbsp;int charstotal = (int)FileReadInteger(f, INT_VALUE);&nbsp;&nbsp;&nbsp;&nbsp;if(charstotal > 0) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayResize(syload, charstotal, 0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int i = 0; i < charstotal; i++) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;syload[i] = (char)FileReadInteger(f, CHAR_VALUE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result = CharArrayToString(syload, 0, charstotal, CP_ACP);&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;return(result);} この関数は以下を受け取ります: ファイルハンドル f(バイナリとして読み込み用に開かれたファイル) この関数はファイル内で期待される文字数を整数として読み込み、その後、その文字をchar配列に読み込み、最終的に文字列を作成して返します。 次に、CDownloadManager構造体を初期化し、マーケットウォッチからデータを取得する方法を見ていきましょう。 //+------------------------------------------------------------------+//| マーケットウォッチからシンボルを取得 |//+------------------------------------------------------------------+void grab_symbols() {&nbsp;&nbsp;&nbsp;&nbsp;//! マーケットウォッチからのみ&nbsp;&nbsp;&nbsp;&nbsp;int s = SymbolsTotal(true);&nbsp;&nbsp;&nbsp;&nbsp;ArrayResize(m_symbols, s, 0);&nbsp;&nbsp;&nbsp;&nbsp;for(int i = 0; i < ArraySize(m_symbols); i++) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_symbols[i] = SymbolName(i, true);&nbsp;&nbsp;&nbsp;&nbsp;}} 非常にシンプルな流れですね: マーケットウォッチに存在するシンボルの数を取得する m_symbols配列を必要なサイズにリサイズする 全シンボルをループし、シンボル名を取得する ダウンロードの管理を行うための関数も必要になります。これが実質的なマネージャーの役割を果たします: //+------------------------------------------------------------------+//| シンボルのダウンロードプロセスを管理 |//+------------------------------------------------------------------+void manage(string folder, string filename) {&nbsp;&nbsp;&nbsp;&nbsp;// 新規または継続のダウンロードを判定&nbsp;&nbsp;&nbsp;&nbsp;if(ArraySize(m_symbols) > 0) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//開始されていない場合&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!m_started) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_started = true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//最初のシンボルに移動&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_current = m_symbols[0];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_index = 1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;save(folder, filename);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(_Symbol != m_current) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChartSetSymbolPeriod(ChartID(), m_current, _Period);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENUM_TIMEFRAMES new_period = PERIOD_M1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int p = 0; p < ArraySize(TFS); p++) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(_Period != TFS[p]) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_period = TFS[p];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChartSetSymbolPeriod(ChartID(), m_current, new_period);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//開始されている場合&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_index++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(m_index

2025.02.22
最初 前へ 1 2 3 4 5 6 7 8 9 次へ 最後