システムトレード

MetaTrader 5用のColor_PEMA_Envelopes_Digit_Systemによるブレイクアウトトレード
MetaTrader5
MetaTrader 5用のColor_PEMA_Envelopes_Digit_Systemによるブレイクアウトトレード

今回は、Color_PEMA_Envelopes_Digit_Systemインジケーターに基づいたブレイクアウトトレーディングシステムをご紹介します。このシステムでは、バーがクローズする際に、色付きのバーが出現し、かつ前のバーが異なる色または無色であった場合にシグナルが生成されます。 このエキスパートアドバイザー(EA)は、Color_PEMA_Envelopes_Digit_System.ex5というコンパイル済みインジケーターファイルを使用して動作します。これを<terminal_data_folder>\MQL5\Indicatorsに保存してください。 注意が必要なのは、TradeAlgorithms.mqhライブラリファイルを使うことで、ノンゼロスプレッドを提供するブローカーでもエキスパートアドバイザーを使用でき、ポジションオープン時にストップロスとテイクプロフィットを設定することが可能です。ライブラリの他のバリエーションは、以下のリンクからダウンロードできます: Trade Algorithms。 以下に示すテストでは、エキスパートアドバイザーのデフォルトの入力パラメータが使用されました。テスト中はストップロスやテイクプロフィットは設定されていませんでした。 Fig. 1. チャート上の取引例 2015年のGBPUSD H12でのテスト結果は以下の通りです: Fig. 2. テスト結果チャート

2017.11.03
MetaTrader 5のためのColor_QEMA_Envelopes_Digit_Systemのブレイクアウトトレーディングシステム
MetaTrader5
MetaTrader 5のためのColor_QEMA_Envelopes_Digit_Systemのブレイクアウトトレーディングシステム

今回は、Color_QEMA_Envelopes_Digit_Systemインディケーターに基づいたブレイクアウトトレーディングシステムをご紹介します。このシステムは、バーがクローズする際に信号が生成され、色付きのバーが現れ、前のバーが異なる色であったり、無色であった場合にトレードサインが出ます。 このエキスパートアドバイザー(EA)は、Color_QEMA_Envelopes_Digit_System.ex5というコンパイル済みインディケーターファイルを使用して動作します。このファイルを<terminal_data_folder>\MQL5\Indicatorsに保存してください。 なお、TradeAlgorithms.mqhライブラリファイルを利用することで、ノンスプレッドを提供するブローカーでのEAの使用が可能になります。また、ポジションオープン時にストップロスとテイクプロフィットを設定するオプションもあります。さまざまなバリエーションのライブラリを以下のリンクからダウンロードできます:Trade Algorithms。 以下に示すテストでは、エキスパートアドバイザーのデフォルトの入力パラメータを使用しました。テスト中にはストップロスとテイクプロフィットは使用しませんでした。 Fig. 1. 取引の例 2015年のEURUSD H8でのテスト結果: Fig. 2. テスト結果チャート

2017.11.03
マルチアービトレーション 1.000 - MetaTrader 5用トレーディングシステム
MetaTrader5
マルチアービトレーション 1.000 - MetaTrader 5用トレーディングシステム

セキュリティを安い価格で買い(BUYポジションをオープン)、高い価格で売る(SELLポジションをオープン)というのが基本です。 バージョン1.000では、このエキスパートアドバイザーは一つのシンボル(入力パラメータの「Symbol」)しか取引しません。 基本的なポジションオープンの原則は以下の通りです: 全てのBUYポジションの利益が全てのSELLポジションの利益より少ない場合、現在のトレンドは下落していると判断し、SELLをオープンします。 全てのSELLポジションの利益が全てのBUYポジションの利益より少ない場合、現在のトレンドは上昇していると判断し、BUYをオープンします。       if(profit_buys<profit_sells) // トレンド下落          m_trade.Buy(m_symbol.LotsMin(),m_symbol.Name());       else if(profit_sells<profit_buys) // トレンド上昇       m_trade.Sell(m_symbol.LotsMin(),m_symbol.Name());       else if(profit_buys==0.0 && profit_sells==0.0)          m_trade.Buy(m_symbol.LotsMin(),m_symbol.Name()); テスト結果(EURUSD, H4): 長期的なトレンドの間、証拠金の負荷が大幅に増加します。この問題はまだ解決されていません。

2017.11.03
SaveTicks:MetaTrader 5用のティック記録ツール
MetaTrader5
SaveTicks:MetaTrader 5用のティック記録ツール

皆さん、こんにちは!今日はMetaTrader 5で使える便利なツール「SaveTicks」についてお話ししたいと思います。このユーティリティプログラムは、ティック価格をテキスト(CSV形式)やバイナリ(BIN形式)で記録するためのものです。ファイルはMQL5\Filesフォルダに保存されます。ティックは一定のサンプリング頻度で記録されるため、数学的なプログラムでの分析が非常に便利になります。 入力パラメータ 記録間隔 - ティック記録の間隔をミリ秒単位で設定します。 選択したシンボルの方法 - 書き込みに使用するシンボルの選択方法。 全シンボル - ブローカーが提供するすべてのシンボルを記録します。 マーケットウォッチシンボル - マーケットウォッチからのすべてのシンボルを記録します。 ファイルからシンボルリストを読み込む - シンボルのリストをファイルから読み込みます。 全シンボル名を含むファイル名 - シンボルのリストを含むファイル名、例:「InputSymbolList.txt」。 記録形式 - CSVまたはバイナリ。 時間形式 - 時間の設定。サーバー時間またはコンピュータ時間のいずれかを選択できます。 次に、「ファイルからシンボルリストを読み込む」のアルゴリズムの例を紹介します。 任意のパラメータでエキスパートアドバイザーを実行し、EAをアンロードします。 結果として得られるファイル「\MQL5\Files\AllSymbols_SaveTicks.txt」には、ブローカーが提供するすべてのシンボル名が含まれます。 このファイルの名前を「InputSymbolList.txt」などに変更します。 「InputSymbolList.txt」を編集し、必要なシンボルだけを残します。最初の行にはファイル内のシンボル数を記載します。詳細はページ上部のダウンロードリストにある例をご覧ください。 必要な設定でEAを再度実行すると、リストにあるシンボルのティックを記録します。 「\MQL5\Files\*****」フォルダをチェックし、EURUSD_SaveTicks.csvのような名前のファイルがあることを確認してください。

2017.11.03
トレーリングプロフィット - MetaTrader 5用のシステムトレーディング
MetaTrader5
トレーリングプロフィット - MetaTrader 5用のシステムトレーディング

アイデアの作者 — Vitaly、MQL5コードの作者 — barabashkakvnです。このシステムトレーディングは、ターミナル内のすべてのオープンポジションを管理します(全シンボルとすべてのマジックナンバーに対応)。もし合計利益が「minimum_profit」に達していない場合、EAは待機します。合計利益が「minimum_profit」に達した場合、EAは利益のドローダウンの割合を設定し、トラッキングを開始します。「percent_of_profit」はパーセントで指定されます。例えば、minimum_profitが1000、percent_of_profitが20の場合、すべてのオープンポジションの合計利益が1000に達します。もし利益が800(1000 - 20%)に落ちると、ポジションはクローズされます。利益が続けて増加し、例えば2000に達した場合、許容ドローダウンは400(2000 - 20%)となります。つまり、合計利益1600で全ポジションがクローズされます。固定のドローダウン制限は設けていません。絶対値を使用することは有用ではないと考えているからです。理論的には、パーセントを0に設定することも可能です。これは合計テイクプロフィットとして機能します。パーセントを100に設定すると、トレードはブレイクイーブンとして機能します(いくつかのオーダーがクローズされると、他のオーダーは損失を抱える可能性があることを忘れずに)。注意!このシステムトレーディングは、3秒間隔で動作します:void OnTick()   { //--- 3秒ごとに動作を許可    static datetime prev_time=0;    datetime time_current=TimeCurrent();    if(time_current-prev_time<3)       return;    prev_time=time_current; //--- }

2017.08.10
MetaTrader 5用のEA「ExpertClor_v01」でポジション管理を効率化
MetaTrader5
MetaTrader 5用のEA「ExpertClor_v01」でポジション管理を効率化

アイデア提供者 — ジョン・スミス、MQL5コードの作成者 — barabashkakvn。このEAは、ポジションをクローズするためのアシスタントです。主にポジションのクローズを行います:ポジションはブレイクイーブンに移動され、ストップロスはStopATR_autoインジケーターに基づいて計算されます。また、ポジションは2つの移動平均線(MA)の交差でクローズされます。このEAを運用するためには、コンパイル済みのStopATR_autoインジケーターを、フォルダーMQL5\Indicators\Downloadsに追加してください://+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit()   { //--- ... //--- create handle of the indicator iCustom    handle_iCustom=iCustom(m_symbol.Name(),TimeFrame,"Downloads\\StopATR_auto",                           CountBarsForAverage,                           Target                           ); このエキスパートアドバイザーはポジションをクローズするだけですが、ポジションをオープンするための小さなコード部分も追加しています://+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick()   { //---    if(MQLInfoInteger(MQL_DEBUG) || MQLInfoInteger(MQL_PROFILER) ||       MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_OPTIMIZATION))      {       static long counter=-50;       static bool trade_buy=true;       if(counter==0)          m_trade.Buy(m_symbol.LotsMin());       else if(counter%1500==0)         {          if(RefreshRates())            {             if(trade_buy)               {                OpenBuy(m_symbol.LotsMin());                trade_buy=false;               }             else               {                OpenSell(m_symbol.LotsMin());                trade_buy=true;               }            }          else             counter=counter-9;         }       counter++;      } //--- このユニットは、テストまたは最適化中にのみ機能します。1,500ティックごとにポジションがオープンされます。

2017.08.10
MetaTrader 5のためのRSI・ストキャスティクス・MAを活用したEAの使い方
MetaTrader5
MetaTrader 5のためのRSI・ストキャスティクス・MAを活用したEAの使い方

アイデアの作者は、Oksana Berenkoさんで、mq5コードの作者は、barabashkakvnさんです。このエキスパートアドバイザー(EA)は、MA(150)、RSI(3)(レベル80と20)、ストキャスティクス(6, 3, 3)(レベル70と30)の3つのインジケーターを使用しています。これらのパラメーターは自由に変更できますので、自分の値を設定してみてください。1. トレードエントリーの方向トレードのエントリー方向は、MA(移動平均)に基づいて決定されます。一方向に対してのみ1つのトレードがオープンされます。BidがMAより大きければ、買い方向を検討します。AskがMAより小さければ、売り方向を検討します。2. ポジションエントリーRSIとストキャスティクスの条件が満たされたときにポジションエントリーが行われます。RSIとストキャスティクスが下限レベル(RSI < 20、ストキャスティクス < 30)を下回っている場合、買いを行います。RSIとストキャスティクスが上限レベル(RSI > 80、ストキャスティクス > 70)を上回っている場合、売りを行います。3. エグジットの方法エグジットはストキャスティクスに基づいています。利益ポイントでのエグジット。(トレーリングストップ = 0) トレーリングストップがゼロに設定されている場合、トレードが一定の利益を得ている場合、反対のストキャスティクスレベルに達した時にポジションをクローズします。b) ストキャスティクス > 70 かつ オープンプライス = Ask の場合、SELLをクローズ(トレーリングストップ > 0) トレーリングストップの値が指定されている場合、反対のストキャスティクスレベルに達した時にポジションのストップロスを、新しいキャンドルが開くたびにトレーリングします。ただし、この場合、ストップロスが直ちにブレイクイーブンレベルに移動しないことがあるため、損失でクローズされる可能性があります。損失ポイントでのクローズ。(許容損失 = 0) 「許容損失」が0に設定されている場合、トレードが一定の損失を被っている場合、反対のストキャスティクスレベルに達した時にポジションをクローズします。b) ストキャスティクス > 70 かつ オープンプライス > Bid の場合、BUYをクローズs) ストキャスティクス < 30 かつ オープンプライス < Ask の場合、SELLをクローズ(許容損失 > 0) 「許容損失」が指定され、ストキャスティクスに従ってポジションエントリーゾーンを抜けている場合、トレードが指定されたポイント以上の損失を被っている場合、ポジションをクローズします。b) ストキャスティクス > 30 かつ オープンプライス - Bid >= 許容損失のポイントb) ストキャスティクス < 70 かつ Ask - オープンプライス >= 許容損失のポイントEURUSD,H1でのテスト結果:

2017.08.10
RabbitM2 - MetaTrader 5向け自動売買システムの紹介
MetaTrader5
RabbitM2 - MetaTrader 5向け自動売買システムの紹介

アイデアの作者はPeterで、mq5コードの作者はbarabashkakvnです。このシステムでは、2つの移動平均線(早期と遅延)に基づいてトレンドが決定されます。また、初期シグナルも生成されます。もし早期MA &lt; 遅延MAの場合://--- 買いと売りの判断 &nbsp;&nbsp; if(ema_fast&lt;ema_slow) &nbsp;&nbsp;&nbsp;&nbsp; { ... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sell=true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buy=false; &nbsp;&nbsp;&nbsp;&nbsp; } この場合、売りポジションをオープンするシグナルとなります。もし早期MA &gt; 遅延MAの場合:&nbsp;&nbsp; if(ema_fast&gt;ema_slow) &nbsp;&nbsp;&nbsp;&nbsp; { ... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sell=false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buy=true; &nbsp;&nbsp;&nbsp;&nbsp; } この場合、買いポジションをオープンするシグナルとなります。シグナルはWPRインジケーターを使って確認され(ゼロまたは最初のバーで)、CCIインジケーターの値と「CCI売りレベル」または「CCI買いレベル」を比較することで確認されます。各利益のあるポジションは、利益がしきい値「預金通貨での正の利益」より大きいかどうかを確認されます。もしそうであれば、次のポジションは「ボリュームステップ」を増やしてオープンされます。EURUSDでのテスト結果は以下の通りです:

2017.08.10
ネヴァリャシュカ・ブレイクダウンレベル:MT5用EAの解説
MetaTrader5
ネヴァリャシュカ・ブレイクダウンレベル:MT5用EAの解説

アイデアの作者 — Vladimir Khlystov、MQL5コードの作者 — barabashkakvn。このトレーディング戦略は、指定した時間帯における高値・安値のブレイクアウトを利用します。損失を回復するために、EAは「ネヴァリャシュカ」戦略とマーチンゲール手法を用いてロットを増やします。EAは指定した時間帯の高値と安値を次のように計算します:「タイムスタート」から「タイムエンド」までの価格です。価格がこの期間の高値を上回ると、BUYポジションがオープンされます。逆に、価格が安値を下回ると、SELLポジションがオープンされます。ストップロスは、ポジションの逆側の境界に設定され、BUYポジションには安値、SELLポジションには高値が適用されます。テイクプロフィットは、コントロール期間の高さに基づいて設定されます。「使用時間クローズ」がtrueに設定されている場合、タイムクローズパラメータ(すべてのポジションをクローズする時間)が有効になります。パラメータの「タイムスタート」、「タイムエンド」、「タイムクローズ」には、時間と分のみが考慮されます。ストップロスによるクローズはOnTradeTransactionで監視されます。「DEAL_ENTRY_OUT」が見つかると、この取引のコメント欄をチェックします。コメントに「sl」が含まれている場合、その取引はストップロスでクローズされたことを意味します:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(deal_symbol==m_symbol.Name() &amp;&amp; deal_magic==m_magic) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(deal_entry==DEAL_ENTRY_OUT) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MqlDateTime str1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TimeToStruct(TimeCurrent(),str1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- これはテイクプロフィットでクローズされた可能性があります &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(StringFind(deal_comment,"tp",0)!=-1 || deal_profit&gt;=0.0) &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; TradeDey=str1.day; &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;&nbsp;&nbsp;//--- これはストップロスでクローズされた可能性があります &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(StringFind(deal_comment,"sl",0)!=-1) &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; if(TradeDey!=str1.day) &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;Print("ストップロスによるクローズが検出されました!"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double loss=MathAbs(deal_profit/m_symbol.TickValue()/deal_volume); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(deal_type==DEAL_TYPE_SELL) // 買いポジションがクローズされた &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; double SL=m_symbol.Bid()+loss*m_symbol.Point(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double TP=m_symbol.Bid()-loss*m_symbol.Point(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double Lot=LotCheck(deal_volume*InpK_martin); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Lot==0.0) &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; OpenSell(SL,TP,Lot,"ネヴァリャシュカ"); &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;if(deal_type==DEAL_TYPE_BUY) // 売りポジションがクローズされた &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; double SL=m_symbol.Ask()-loss*m_symbol.Point(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double TP=m_symbol.Ask()+loss*m_symbol.Point(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double Lot=LotCheck(deal_volume*InpK_martin); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(Lot==0.0) &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; OpenBuy(SL,TP,Lot,"ネヴァリャシュカ"); &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;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;} 閉じたポジションとは逆のポジションをオープンします(取引タイプが「DEAL_TYPE_SELL」の場合はBUYポジションが閉じられ、「DEAL_TYPE_BUY」の場合はSELLポジションが閉じられたことを意味します)し、ロットは「K.マーチン」で倍増します。ポジションがプラスの利益でクローズされた場合、EAは次の期間の開始時間「タイムエンド」を待ち、上記の手順を繰り返します。「ノーロス」パラメータはブレイクイーブンを意味し、ポジションの利益が半分に達すると、ストップロスはポジションのオープン価格に移動されます。例として、EURUSD、M30でのテスト結果を示します:

2017.08.10
DoubleZigZagでMetaTrader 5を活用する方法
MetaTrader5
DoubleZigZagでMetaTrader 5を活用する方法

アイデアの作者はMaksimで、mq5コードの作者はbarabashkakvnです。このエキスパートアドバイザーは、2つのZigZagインジケーターを使って分析を行います。小さいZigZagはパラメータが (13.5,3)、大きいZigZagはパラメータが8倍されたものです (13*8,5*8,3*8)。//--- インジケーターのハンドルを作成 &nbsp;&nbsp; handle_iCustom=iCustom(Symbol(),Period(),"Examples\ZigZag",13,5,3); //--- ハンドルが作成できなかった場合 &nbsp;&nbsp; if(handle_iCustom==INVALID_HANDLE) &nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- 失敗を通知し、エラーコードを出力 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintFormat("iCustomインジケーターのハンドル作成に失敗しました。シンボル %s/%s, エラーコード %d", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Symbol(), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnumToString(Period()), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- インジケーターが早期に停止 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(INIT_FAILED); &nbsp;&nbsp;&nbsp;&nbsp; } //--- iCustomX8インジケーターのハンドルを作成 &nbsp;&nbsp; handle_iCustomX8=iCustom(Symbol(),Period(),"Examples\ZigZag",13*8,5*8,3*8); //--- ハンドルが作成できなかった場合 &nbsp;&nbsp; if(handle_iCustomX8==INVALID_HANDLE) &nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- 失敗を通知し、エラーコードを出力 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintFormat("iCustomX8インジケーターのハンドル作成に失敗しました。シンボル %s/%s, エラーコード %d", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Symbol(), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnumToString(Period()), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- インジケーターが早期に停止 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(INIT_FAILED); &nbsp;&nbsp;&nbsp;&nbsp; } トレードの判断を下すために、大きいZigZagの最後のピークの2つの脚 (13*8,5*8,3*8) を分析し、その脚に含まれる小さいZigZag (13,5,3) のピークの数をカウントします。もしBUYポジションを開くシグナルが出た場合、すべてのSELLポジションはクローズされます。逆に、SELLポジションを開くシグナルが出た場合、すべてのBUYポジションがクローズされます。エキスパートアドバイザーのパラメータ:k: 大きいZigZagの脚にある小さいZigZagのピーク数の比率k2: 大きいZigZagのピーク間の価格差の比率例:大きいZigZag (13*8,5*8,3*8) は赤で表示され、小さいZigZag (13,5,3) は黄色です。それぞれ、ABC は大きいZigZag (13*8,5*8,3*8) のピークです。脚 AB と AC には、小さいZigZag (13,5,3) の9つのピークが含まれています。テスト結果 (EURUSD,M1):

2017.08.10
Exp_XROC2_VG_X2: MetaTrader 5用トレンドフォローEAの紹介
MetaTrader5
Exp_XROC2_VG_X2: MetaTrader 5用トレンドフォローEAの紹介

皆さん、こんにちは!今日は、MetaTrader 5用のトレンドフォローEA「Exp_XROC2_VG_X2」についてご紹介します。このシステムは、2つのXROC2_VGインジケーターから生成されるシグナルに基づいています。 最初のインジケーターは、メインラインとシグナルラインの位置に基づいて、遅いトレンドの方向を判断します。2つ目のインジケーターは、ラインが交差したり触れたりするタイミングで取引を開始するポイントを決定します。以下の2つの条件が満たされた場合に、バーのクローズ時にエントリーシグナルが生成されます: 速いトレンドと遅いトレンドのシグナルが一致すること。 速いトレンドが方向を変えたこと。 EAの入力パラメーター: //+-------------------------------------------------+ //| EAインジケーターの入力パラメーター | //+-------------------------------------------------+ input string Trade="トレード管理";&nbsp;&nbsp;&nbsp;&nbsp;//+================ トレード管理 ================+ input double MM=0.1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //取引における預金の割合 input MarginMode MMMode=LOT;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ロット値検出方法 input uint&nbsp;&nbsp;&nbsp;&nbsp;StopLoss_=1000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ストップロス(ポイント) input uint&nbsp;&nbsp;&nbsp;&nbsp;TakeProfit_=2000;&nbsp;&nbsp;&nbsp;&nbsp;//テイクプロフィット(ポイント) input string MustTrade="取引許可";&nbsp;&nbsp;&nbsp;&nbsp;//+=============== 取引許可 ===============+ input int&nbsp;&nbsp;&nbsp;&nbsp;Deviation_=10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //最大価格偏差(ポイント) input bool&nbsp;&nbsp; BuyPosOpen=true;&nbsp;&nbsp;&nbsp;&nbsp; //ロングポジションのエントリー許可 input bool&nbsp;&nbsp; SellPosOpen=true;&nbsp;&nbsp;&nbsp;&nbsp;//ショートポジションのエントリー許可 //+-------------------------------------------------+ //| フィルターインジケーターの入力パラメーター&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+-------------------------------------------------+ input string Filter="遅いトレンドパラメーター";&nbsp;&nbsp;&nbsp;&nbsp;//+============== トレンドパラメーター ==============+ input ENUM_TIMEFRAMES TimeFrame=PERIOD_H6;&nbsp;&nbsp;//1トレンドのチャート期間 input uint ROCPeriod1=8; input Smooth_Method MA_Method1=MODE_JJMA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//最初のインジケーターの平均化方法 input uint Length1=5;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input int Phase1=15;&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; //最初のスムージングのパラメーター //---- JJMAの場合は-100 ... +100の範囲で、遷移プロセスの質に影響します; //---- VIDIAの場合はCMOの期間、AMAの場合は遅い平均期間 input uint ROCPeriod2=14; input Smooth_Method MA_Method2=MODE_JJMA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//2つ目のインジケーターの平均化方法 input uint Length2 = 5;&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;//2つ目のスムージングの深さ input int Phase2=15;&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; //2つ目のスムージングのパラメーター //---- JJMAの場合は-100 ... +100の範囲で、遷移プロセスの質に影響します; //---- VIDIAの場合はCMOの期間、AMAの場合は遅い平均期間 input ENUM_TYPE ROCType=MOM; input uint SignalBar=1; //エントリーシグナルを受け取るバーインデックス input bool&nbsp;&nbsp; BuyPosClose=true;&nbsp;&nbsp;&nbsp;&nbsp; //トレンドによるロングポジションの終了許可 input bool&nbsp;&nbsp; SellPosClose=true;&nbsp;&nbsp;&nbsp;&nbsp;//トレンドによるショートポジションの終了許可 //+-------------------------------------------------+ //| エントリーインジケーターの入力パラメーター&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+-------------------------------------------------+ input string Input="エントリーパラメーター";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //+=============== エントリーパラメーター ==============+ input ENUM_TIMEFRAMES TimeFrame_=PERIOD_M30;&nbsp;&nbsp;//2エントリーのチャート期間 input uint ROCPeriod1_=8; input Smooth_Method MA_Method1_=MODE_JJMA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//最初のインジケーターの平均化方法 input uint Length1_=5;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input int Phase1_=15;&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; //最初のスムージングのパラメーター //---- JJMAの場合は-100 ... +100の範囲で、遷移プロセスの質に影響します; //---- VIDIAの場合はCMOの期間、AMAの場合は遅い平均期間 input uint ROCPeriod2_=14; input Smooth_Method MA_Method2_=MODE_JJMA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//2つ目のインジケーターの平均化方法 input uint Length2_ = 5;&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;//2つ目のスムージングの深さ input int Phase2_=15;&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; //2つ目のスムージングのパラメーター //---- JJMAの場合は-100 ... +100の範囲で、遷移プロセスの質に影響します; //---- VIDIAの場合はCMOの期間、AMAの場合は遅い平均期間 input ENUM_TYPE ROCType_=MOM; input uint SignalBar_=1;//エントリーシグナルを受け取るバーインデックス input bool&nbsp;&nbsp; BuyPosClose_=false;&nbsp;&nbsp;&nbsp;&nbsp; //シグナルによるロングポジションの終了許可 input bool&nbsp;&nbsp; SellPosClose_=false;&nbsp;&nbsp;&nbsp;&nbsp;//シグナルによるショートポジションの終了許可 入力パラメーターのテキストは、EAの入力パラメーターウィンドウの視覚化のためにのみ使用されています。 EAにおけるXROC2_VG_HTFインジケーターは、戦略テスターでのトレンド視覚化のためのものであり、他の動作モードでは無効です。 コンパイルされたExpert Advisorを適切に機能させるためには、コンパイルされたXROC2_VG.ex5およびXROC2_VG_HTF.ex5インジケーターファイルを&lt;terminal_data _folder&gt;\MQL5\Indicatorsに追加する必要があります。 TradeAlgorithms.mqhライブラリファイルは、非ゼロスプレッドを提供するブローカーで、ポジションオープン時にストップロスおよびテイクプロフィットを設定するオプションを使用することができます。ライブラリの他のバリエーションを以下のリンクからダウンロードできます:トレードアルゴリズム。 以下に示すテストでは、デフォルトの入力パラメーターが使用されました。テスト中にはストップロスおよびテイクプロフィットは使用されませんでした。 図1: チャート上の取引の例 2015年のAUDUSDに関するテスト結果、H6での遅いトレンド、M30での速いトレンドによるエントリー: 図2: テスト結果チャート

2017.08.10
MetaTrader 5向けのExp_XROC2_VG_Tm EAの使い方と設定ガイド
MetaTrader5
MetaTrader 5向けのExp_XROC2_VG_Tm EAの使い方と設定ガイド

こんにちは、トレーダーの皆さん!今日は、MetaTrader 5で使えるExp_XROC2_VG_Tmという自動売買システム(EA)についてお話しします。このEAは、XROC2_VGというオシレーターから生成されるシグナルに基づいて取引を行います。また、厳密な取引時間を設定することも可能です。 取引シグナルは、バーが閉じるときに形成され、インジケーターの色が変わった場合(メインインジケーターラインがシグナルラインをクロスしたとき)に発生します。 設定パラメータに取引時間を指定することで、指定した時間帯に取引を行うことができます。以下のように設定できます: input bool&nbsp;&nbsp; TimeTrade=true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//指定した時間帯での取引を許可 input HOURS&nbsp;&nbsp;StartH=ENUM_HOUR_0;&nbsp;&nbsp;//取引開始時間(時) input MINUTS StartM=ENUM_MINUT_0; //取引開始時間(分) input HOURS&nbsp;&nbsp;EndH=ENUM_HOUR_23;&nbsp;&nbsp; //取引終了時間(時) input MINUTS EndM=ENUM_MINUT_59;&nbsp;&nbsp;//取引終了時間(分) 取引開始時間と終了時間には、それぞれ時間と分の変数が用意されています。 デフォルト設定では、EAは0:00から取引を開始し、23:59にすべてのポジションをクローズします。もし開始時間が指定された終了時間より遅い場合、EAは翌日の指定した時間にポジションをクローズします。 このEAが正しく機能するためには、XROC2_VG.ex5というコンパイル済みのインジケータファイルを、&lt;terminal_data_folder&gt;\MQL5\Indicatorsに保存してください。 また、TradeAlgorithms.mqhライブラリファイルを使用することで、非ゼロスプレッドを提供するブローカーとともに、ポジションオープン時にストップロスやテイクプロフィットを設定することができます。ライブラリの他のバリエーションは、こちらからダウンロードできます:Trade Algorithms。 以下に示すテストでは、デフォルトの入力パラメータが使用されました。テスト中はストップロスやテイクプロフィットは使用していません。 Fig. 1. 取引の例 2015年のXAUUSD H4でのテスト結果: Fig. 2. テスト結果のグラフ

2017.08.10
最初 前へ 24 25 26 27 28 29 30 31 32 33 34 次へ 最後