システムトレード

移動平均線を活用したEAの使い方とサンプルコード - MetaTrader 4用エキスパート
MetaTrader4
移動平均線を活用したEAの使い方とサンプルコード - MetaTrader 4用エキスパート

1. エントリールール ロングエントリー: ゴールデンクロスでロングポジションを取ります。 前回の移動平均線の値が短期の移動平均線よりも高い。 2つ前の移動平均線の値が短期の移動平均線よりも低い。 2つ前の移動平均線の値が前回の短期の移動平均線の値よりも低い。 この3つの条件が満たされれば、ゴールデンクロスとみなしてロングポジションを取ります。 ショートエントリー: デッドクロスでショートポジションを取ります。 前回の移動平均線の値が短期の移動平均線よりも低い。 2つ前の移動平均線の値が短期の移動平均線よりも高い。 2つ前の移動平均線の値が前回の短期の移動平均線の値よりも高い。 この3つの条件が満たされれば、デッドクロスとみなしてショートポジションを取ります。 2. エグジットルール エントリーオーダーは、ストップロスオーダーとテイクプロフィットリミットオーダーで管理します。 ストップロスのポイントは、中期の移動平均線からストップロス値の距離に設定します。 テイクプロフィットリミットオーダーは、ストップオーダーと同じ距離をプラス側に設定し、公平性をもたらします。 3. バックテスト結果

2023.09.16
RSIとマーチンゲールを活用したMetaTrader 5用自動売買システム
MetaTrader5
RSIとマーチンゲールを活用したMetaTrader 5用自動売買システム

この自動売買システムは、RSIインジケーターを活用し、市場の最適なエントリーとエグジットポイントを見極めるために、最小値と最大値を適応的に検索します。システムは、最近の`BarsForCondition`本のキャンドルを分析して、現在の市場状況を評価します。 エントリーとエグジット戦略 エントリー:このシステムは、RSIインジケーターからのシグナルに基づいてポジションをオープンします。 ・買い:指定された`BarsForCondition`本のバーでRSIが最小値に達した場合。 ・売り:指定された`BarsForCondition`本のバーでRSIが最大値に達した場合。 エグジット:ポジションは、設定された`TakeProfit`または`StopLoss`レベルに達した際にクローズされます。 シグナルフィルタリング 時間:このシステムは、`StartTime`と`EndTime`の間に指定された時間帯のみでトレードを行います。 ニュース回避:`NewsTimeToAvoid`パラメータに指定された期間中はトレードを避けます。 スプレッド:最大許容スプレッド値は`MaxSpread`パラメータを通じて設定されます。 追加設定 マーチンゲール:このシステムは、市場の逆転時にロットサイズを増加させるためにマーチンゲール戦略を採用できます。この機能は、`Upheaval`パラメータと`MartingaleMultiplier`によって有効化されます。

2023.09.12
MetaTrader 4用のMaybeAwo EA - トレーダー必見の機能
MetaTrader4
MetaTrader 4用のMaybeAwo EA - トレーダー必見の機能

主な特徴: 移動平均エントリー:このEAはシンプルな移動平均を利用して、エントリーポイントを特定します。市場の状況が移動平均のクロスオーバー戦略と一致すると、買いまたは売りの注文を自動で開くことができます。 カスタマイズ可能なパラメーター:移動期間、ロットサイズ、ストップロス、テイクプロフィット、ブレイクイーブンレベル、希望するブレイクイーブンの距離、取引時間などの入力パラメーターを調整することで、EAの動作を最適化できます。これにより、異なるトレーディングスタイルや資産クラスに合わせてEAを適応させることが可能です。 ブレイクイーブン機能:このEAには2つのブレイクイーブンレベルが組み込まれています。トレードが利益を上げると、ストップロスをブレイクイーブンレベルに自動的に移動させ、利益を保護します。希望するブレイクイーブンの距離はお好みに応じて調整可能です。 トレイリングストップ:EAはトレードが有利に進行するにつれてストップロスレベルを追従することができ、強いトレンドの中で利益を確保する手助けをします。 開始・終了時間:EAがアクティブに取引を行う時間を指定できます。この機能により、特定の市場セッションに集中して取引活動を行うことができます。 お願い: 入力パラメーターを慎重に確認し、あなたのトレーディング戦略に合うように最適化してください。 ライブトレード環境で使用する前に、デモ口座でEAをテストしてください。 EAのパフォーマンスを監視し、市場の状況に応じてパラメーターを調整してください。 # 取引にはリスクが伴います。このEAは利益を保証するものではありません。責任を持って使用し、自動取引に関連するリスクを認識してください。

2023.09.10
新しい発想:トレーリングテイクプロフィットの活用法 - MetaTrader 5向け
MetaTrader5
新しい発想:トレーリングテイクプロフィットの活用法 - MetaTrader 5向け

皆さん、こんにちは!今日は新しいトレーディングの概念、「トレーリングテイクプロフィット」についてお話ししたいと思います。従来のトレーリングストップとは異なり、この手法はポジションが損失を抱えているときに、利益確定を価格に追従させるというものです。最終的には、損失でポジションがクローズされることになります。 例えば、ポジションが損失を抱えているときに、現在の価格がトレーリングTPスタート(例:500ポイント)に達すると、損失が-500ポイントの場合、テイクプロフィットが価格に追従し始めます。このとき、トレーリングTP距離は、テイクプロフィットと現在の価格の最大距離を示します。 この概念があなたにとって役立つかは分かりませんが、ストップロスなしで一部のEAに利用することで、損失を軽減する可能性があります。 トレーリングテイクプロフィットの設定手順 トレーリングテイクプロフィットのEAを実行する。 TrailingTP_Modeがtrueの場合、EAが作動します。 EAに通貨ペア名(例:GBPUSD)を入力します。 トレーリングTPスタートを設定します。これは、現在の価格からテイクプロフィットが稼働し始めるポイントです。 トレーリングTP距離を設定します。これは、テイクプロフィットと現在の価格の間の最大ポイント距離です。

2023.07.11
AK-47スキャルパーEA - MetaTrader 5向けの効果的なシステムトレーディング
MetaTrader5
AK-47スキャルパーEA - MetaTrader 5向けの効果的なシステムトレーディング

トレーダーの皆さん、今日は「AK-47スキャルパーEA」についてお話しします。このEAは、MetaTrader 5で使用できる優れたスキャルピングツールです。簡単に設定でき、効果的なトレーディングが可能です。 1. 入力パラメータ #define ExtBotName "AK-47 EA" //ボット名 #define Version "1.00" // 入力クラスのインポート #include &lt;Trade\PositionInfo.mqh&gt; #include &lt;Trade\Trade.mqh&gt; #include &lt;Trade\SymbolInfo.mqh&gt; #include &lt;Trade\AccountInfo.mqh&gt; #include &lt;Trade\OrderInfo.mqh&gt; // コードの可読性向上のための定義 #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) //--- 入力パラメータ input string EASettings = "---------------------------------------------"; //-------- &lt;EA設定&gt; input int InpMagicNumber = 124656; //マジックナンバー input string MoneySettings = "---------------------------------------------"; //-------- &lt;資金設定&gt; input bool isVolume_Percent = true; //ボリュームパーセントの許可 input double InpRisk = 3; //リスク割合(%) input string TradingSettings = "---------------------------------------------"; //-------- &lt;トレーディング設定&gt; input double Inpuser_lot = 0.01; //ロット数 input double InpSL_Pips = 3.5; //ストップロス(ピップ) input double InpTP_Pips = 7; //TP(ピップ)(0 = TPなし) input int InpMax_slippage = 3; //最大スリッページ input double InpMax_spread = 5; //最大許容スプレッド(ポイント)(0 = フローティング) input string TimeSettings = "---------------------------------------------"; //-------- &lt;取引時間設定&gt; input bool InpTimeFilter = true; //取引時間フィルター input int InpStartHour = 2; //開始時間 input int InpStartMinute = 30; //開始分 input int InpEndHour = 21; //終了時間 input int InpEndMinute = 0; //終了分 2. ローカル変数の初期化 //--- 変数 int Pips2Points; // スリッページ 3ピップ 3=ポイント 30=ポイント double Pips2Double; // ストップロス 15ピップ 0.015 bool isOrder = false; int slippage; long acSpread; string strComment = ""; CPositionInfo m_position; // トレードポジションオブジェクト CTrade m_trade; // トレーディングオブジェクト CSymbolInfo m_symbol; // シンボル情報オブジェクト CAccountInfo m_account; // アカウント情報ラッパー COrderInfo m_order; // 保留中のオーダーオブジェクト 3. メインコード a/ Expert初期化関数 int OnInit() { // 3または5桁の検出 // ピップとポイント if (_Digits % 2 == 1) { Pips2Double = _Point * 10; Pips2Points = 10; slippage = 10 * InpMax_slippage; } else { Pips2Double = _Point; Pips2Points = 1; slippage = InpMax_slippage; } if (!m_symbol.Name(Symbol())) // シンボル名を設定 return (INIT_FAILED); RefreshRates(); m_trade.SetExpertMagicNumber(InpMagicNumber); m_trade.SetMarginMode(); m_trade.SetTypeFillingBySymbol(m_symbol.Name()); m_trade.SetDeviationInPoints(slippage); return (INIT_SUCCEEDED); } b/ Expertティック関数 void OnTick() { if (TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) == false) { Comment("LazyBot\nTrade not allowed."); return; } MqlDateTime structTime; TimeCurrent(structTime); structTime.sec = 0; // 開始時間の設定 structTime.hour = InpStartHour; structTime.min = InpStartMinute; datetime timeStart = StructToTime(structTime); // 終了時間の設定 structTime.hour = InpEndHour; structTime.min = InpEndMinute; datetime timeEnd = StructToTime(structTime); acSpread = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD); strComment = "\n" + ExtBotName + " - v." + (string)Version; strComment += "\nサーバー時間 = " + TimeToString(TimeCurrent(), TIME_DATE | TIME_SECONDS) + " - " + DayOfWeekDescription(structTime.day_of_week); strComment += "\nトレーディング時間 = [" + (string)InpStartHour + "h" + (string)InpStartMinute + " --&gt; " + (string)InpEndHour + "h" + (string)InpEndMinute + "]"; strComment += "\n現在のスプレッド = " + (string)acSpread + " ポイント"; Comment(strComment); // 値を更新 UpdateOrders(); TrailingStop(); // マイセッションに基づく取引条件 if (InpTimeFilter) { if (TimeCurrent() >= timeStart && TimeCurrent() < timeEnd) { if (!isOrder) OpenOrder(); } } else { if (!isOrder) OpenOrder(); } } 3.1 オーダーを送信するためのシグナルを計算 void OpenOrder() { ENUM_ORDER_TYPE OrdType = ORDER_TYPE_SELL; // デフォルトはSELL double TP = 0; double SL = 0; string comment = ExtBotName; // ロット数の計算 double lot1 = CalculateVolume(); if (OrdType == ORDER_TYPE_SELL) { double OpenPrice = Bid - NormalizeDouble(InpSL_Pips / 2 * Pips2Double, _Digits); TP = OpenPrice - NormalizeDouble(InpTP_Pips * Pips2Double, _Digits); SL = Ask + NormalizeDouble(InpSL_Pips / 2 * Pips2Double, _Digits); if (CheckSpreadAllow() && CheckVolumeValue(lot1) && CheckOrderForFREEZE_LEVEL(ORDER_TYPE_SELL_STOP, OpenPrice) && CheckStopLoss(OpenPrice, SL, TP) && CheckMoneyForTrade(m_symbol.Name(), lot1, ORDER_TYPE_SELL)) { if (!m_trade.SellStop(lot1, OpenPrice, m_symbol.Name(), SL, TP, ORDER_TIME_GTC, 0, comment)) Print(__FUNCTION__, "--> OrderSend error ", m_trade.ResultComment()); } } // BUYタイプの処理は省略していますが、同様のロジックで追加できます。 } 3.2 ボリュームの計算 double CalculateVolume() { double LotSize = 0; if (isVolume_Percent == false) { LotSize = Inpuser_lot; } else { LotSize = (InpRisk) * m_account.FreeMargin(); LotSize = LotSize / 100000; double n = MathFloor(LotSize / Inpuser_lot); LotSize = n * Inpuser_lot; if (LotSize < Inpuser_lot) LotSize = Inpuser_lot; if (LotSize > m_symbol.LotsMax()) LotSize = m_symbol.LotsMax(); if (LotSize < m_symbol.LotsMin()) LotSize = m_symbol.LotsMin(); } return (LotSize); } 3.3 EAにはトレーリングストップ機能があります void TrailingStop() { double SL_in_Pip = 0; for (int i = PositionsTotal() - 1; i >= 0; i--) { if (m_position.SelectByIndex(i)) { // インデックスでオーダーを選択 if ((m_position.Magic() == InpMagicNumber) && (m_position.Symbol() == m_symbol.Name())) { if (m_position.PositionType() == POSITION_TYPE_BUY) { SL_in_Pip = NormalizeDouble(Bid - m_position.StopLoss(), _Digits) / Pips2Double; if (SL_in_Pip > InpSL_Pips) { double newSL = NormalizeDouble(Bid - InpSL_Pips * Pips2Double, _Digits); if (!m_trade.PositionModify(m_position.Ticket(), newSL, m_position.TakeProfit())) { Print(__FUNCTION__, "--> OrderModify error ", m_trade.ResultComment()); continue; } } } else if (m_position.PositionType() == POSITION_TYPE_SELL) { SL_in_Pip = NormalizeDouble(m_position.StopLoss() - Bid, _Digits) / Pips2Double; if (SL_in_Pip > InpSL_Pips) { double newSL = NormalizeDouble(Bid + (InpSL_Pips) * Pips2Double, _Digits); if (!m_trade.PositionModify(m_position.Ticket(), newSL, m_position.TakeProfit())) { Print(__FUNCTION__, "--> OrderModify error ", m_trade.ResultComment()); continue; } } } } } } }

2023.06.12
MetaTrader 5での株式ポジションのクローズ方法
MetaTrader5
MetaTrader 5での株式ポジションのクローズ方法

株式ポジションをスムーズにクローズするためのガイド皆さん、こんにちは!今日はMetaTrader 5を使って株式ポジションをクローズする方法についてお話しします。トレードをしていると、利益を確定したり、損失を最小限に抑えたりするために、ポジションをクローズするタイミングがとても重要ですよね。ポジションをクローズする際のポイント以下のポイントを押さえておくと、よりスムーズにポジションをクローズできます:ポジションの状況を常に確認するトレードの計画に基づいて行動する感情に流されず、冷静に判断する特にMetaTrader 5では、クローズボタンの調整が簡単にできるので、直感的に操作できるのが魅力です。クローズボタンの使い方クローズボタンを使うことで、瞬時にポジションをクローズできます。以下の手順で操作してみましょう:取引ウィンドウを開くクローズしたいポジションを選択するクローズボタンをクリックするこれだけで、簡単にポジションをクローズできます!いかがでしたか?MetaTrader 5を使ったポジションのクローズ方法が少しでもお役に立てれば嬉しいです。今後もトレードに関する役立つ情報をお届けしますので、ぜひチェックしてみてくださいね!

2023.05.27
マーチンゲール方式を活用した資金管理手法 - MetaTrader 5向けEA
MetaTrader5
マーチンゲール方式を活用した資金管理手法 - MetaTrader 5向けEA

こんにちは、トレーダーの皆さん!今日は、資金管理に役立つEA(エキスパートアドバイザー)についてお話しします。このEAは、マーチンゲール方式を取り入れた取引ポジションの開閉を行うアルゴリズムです。 このEAを使えば、リスクをコントロールしながら効率的にトレードを行うことができますよ。 マーチンゲールEAの設定方法 ポジションを開く前にEAを起動して、最高の結果を得るようにしましょう。 任意のチャートで「MartingaleEA-5Levels」を実行します。 「マーチンゲールモード」を有効にしてください。 取引する通貨ペアの名前(例:EURUSDやGBPUSD)を入力します。 マーチンゲールの倍率を選んで、「マーチンゲールボリューム倍率」に入力します。例えば、ここに「2」と入力すると、初めのポジションが1ロットであれば、次のポジションは2ロット、さらにその次は4ロットになります。 このEAは最大5つのマーチンゲールポジションを開くことができるので、「マーチンゲール取引数」には1から5の間の数字を入れてください。 「距離1」から「距離5」までのフィールドには、各ポジションを開く際のピップスやポイントを入力します。 「総テイクプロフィットが○○の時に全てのポジションを閉じる」フィールドには、例えば「100」と入力します。これにより、全てのマーチンゲールポジションが$100に達した時点で、全てのポジションが閉じられます。 「総ストップロスが○○の時に全てのポジションを閉じる」フィールドには、例えば「-500」と入力します。これにより、全てのマーチンゲールポジションが-$500に達した時点で、全てのポジションが閉じられます。 この設定を活用して、資金管理の精度を高めていきましょう。皆さんのトレードがうまくいくことを願っています!

2023.05.24
ダイナミックトレーリングストップロスと利益目標管理 - MetaTrader 5向けのシステムトレーディング
MetaTrader5
ダイナミックトレーリングストップロスと利益目標管理 - MetaTrader 5向けのシステムトレーディング

トレーダーの皆さん、こんにちは!今日は、MetaTrader 5で使えるダイナミックトレーリングストップロスと利益目標を管理するためのシステムトレーディングについてお話しします。 このコードは、リスク管理の戦略として、エキスパートアドバイザー(EA)が既存のポジションを管理するためのものです。利益や損失の閾値に達したときにポジションを閉じることに焦点を当て、トレーリングストップロスを利用して、トレードがトレーダーに有利に進むにつれて利益を固定します。 以下に、このコードの簡単な説明をします: 取引とシンボル情報クラスのために必要なヘッダーファイルが含まれています。 リスクパーセンテージ、利益パーセンテージ、トレーリングストップポイントのための入力パラメータが定義されています。 取引とシンボル情報オブジェクトのためのグローバル変数が宣言されています。 OnInit関数はシンボル情報オブジェクトを初期化し、エラーを確認します。 OnDeinit関数はこの場合、何も行いません。 OnTick関数は新しいティックが受信されるたびに呼び出され、CheckTrades関数を呼び出します。 CheckTrades関数は、すべてのオープンポジションを反復処理し、ポジションが現在のシンボルに属しているかをチェックします。もしそうであれば、現在の利益を計算し、利益や損失の閾値に達しているかを判断します。どちらかの閾値に達した場合、ポジションを閉じます。 いずれの閾値にも達していない場合、ポジションのタイプが買いまたは売りの注文であるかを確認し、トレーリングストップロスを使ってストップロスレベルを更新します。新しいストップロスレベルが現在のレベルよりも有利な場合、ポジションは新しいストップロスレベルで修正されます。 このコードは、トレーリングストップロスを基にストップロスレベルを動的に調整し、利益や損失の閾値に達したときにポジションを閉じることで、既存のトレードを管理するためのシンプルなリスク管理戦略を提供します。

2023.04.28
ユーザー入力に基づいて複数の売買注文を開くためのシステムトレーディング
MetaTrader5
ユーザー入力に基づいて複数の売買注文を開くためのシステムトレーディング

こんにちは、トレーダーの皆さん!今日は、MetaTrader 5(MT5)用のシステムトレーディングについてお話ししたいと思います。このシステムトレーディングは、ユーザーの入力に基づいて複数の売買注文を自動で開くことができる便利なツールです。 このシステムトレーディングには、売買注文の数、取引ごとのリスク割合、ストップロス、テイクプロフィット、スリッページなどの設定ができる入力変数があります。また、シンプルなユーザーインターフェースがあり、買いと売りのボタンをクリックすることで、簡単に複数の注文を開くことができます。 システムトレーディングは、指定されたリスク割合とストップロスに基づいて適切なロットサイズを計算します。さらに、注文を出す前に設定されたスリッページとスプレッドを確認します。平均価格が現在のアスク価格を上回る場合は買い注文を、現在のビッド価格を下回る場合は売り注文をオープンします。 ユーザーが買いまたは売りのボタンをクリックすると、システムトレーディングは計算されたロットサイズ、ストップロス、テイクプロフィットを設定した上で、指定された数の買いまたは売り注文を開きます。 ただし、このシステムトレーディングはあくまで簡単な例であり、実際の取引に使用する前に追加の修正や最適化が必要です。実際の資金を使う前に、デモ口座などの安全な環境で取引アルゴリズムをテストすることが重要です。

2023.04.27
CheckTrades - MetaTrader 5用リスク管理EA
MetaTrader5
CheckTrades - MetaTrader 5用リスク管理EA

こんにちは、トレーダーの皆さん!今日は、MetaTrader 5用のリスク管理に特化したEA「CheckTrades」をご紹介します。 このコードは、MQL5で書かれたエキスパートアドバイザー(EA)で、ユーザーが設定した利益または損失の閾値に達した場合にオープンポジションをクローズするというアイデアに基づいています。これらの閾値は、アカウント残高のパーセンテージとして計算されます。 このEAは、エントリーシグナルや市場タイミングのルールを提供するものではなく、主な目的は、既存ポジションのリスクを管理し、一定の利益または損失の閾値に達したときにそれらをクローズすることです。 使用される外部変数 RiskPercentage : この変数は、1回の取引で許可される最大損失をアカウント残高のパーセンテージとして表します。オープンポジションの現在の損失がこのパーセンテージに達した場合、そのポジションはリスクを制限するためにクローズされます。 ProfitPercentage : この変数は、1回の取引で得たい利益をアカウント残高のパーセンテージとして表します。オープンポジションの現在の利益がこのパーセンテージに達した場合、そのポジションは利益を確保するためにクローズされます。 このEAはリスク管理に特化しており、特定の市場指標に依存しないため、どのシンボルや時間枠にも適用できます。ただし、エントリーシグナルやその他の取引管理ルールを含むトレーディング戦略と組み合わせることが重要です。これにより、完全なトレーディングシステムとして機能します。 このコードをインクルードファイル(MQL5\Includeフォルダーに配置)として使用する場合、ユーザーが定義した利益と損失の閾値に基づいてポジションをクローズするためのリスク管理が主な目的となります。 また、このインクルードファイルは、アカウントリスクに基づいたポジションサイズ計算やトレーリングストップロスなど、特定の目的を持つ他のインクルードファイルと組み合わせることができます。そのためには、メインのEAファイル内で#includeディレクティブを使用してこのファイルをインクルードし、必要に応じてCheckTrades()関数を呼び出してオープンポジションを管理してください。

2023.04.25
MT4用チャートボタンクラス - トレードを便利にするツール
MetaTrader4
MT4用チャートボタンクラス - トレードを便利にするツール

こんにちは、トレーダーの皆さん!今日は、MetaTrader 4(MT4)で使える「チャートボタンクラス」についてお話ししたいと思います。このクラスを使うと、チャート上にボタンを作成でき、まるでチャートオブジェクトのように扱うことができます。ボタンは時間と価格の座標を持っていて、チャート上でドラッグしたり、スクロールしてもその位置を維持します。 もしオブジェクト指向プログラミングを学びたい、チャートイベントの仕組みを理解したい、あるいはグラフィカルなインターフェースを作成したいと考えているなら、これを学ぶことで多くのことを得られますよ。 このクラスの主なアイデアは、チャートの変更やマウスの動きに反応することです。マウスが指定された条件を満たすと、ボタンが選択され、ドラッグ可能になります。ドラッグの状態はカスタムチャートイベント「EVENT_DRAG」で監視しています。ボタンのonChartEvent関数は、常に内蔵のOnChartEvent関数内で呼び出され、さまざまなハンドラ関数に情報を渡します。 基本的なアイデアを示すチュートリアル動画も作成しましたので、ぜひチェックしてみてください!

2023.04.24
最初 前へ 4 5 6 7 8 9 10 11 12 13 14 次へ 最後