複数ポジションを保有していると、損益分岐点(ブレイクイーブン)の計算は意外と手間がかかるものです。本記事では、**損益分岐点を自動で計算し、リスクゼロの位置にストップ注文を出すMT4用スクリプト「Break even」**を無料で提供しています。
自動でストップ注文を最適化し、資金の保全と感情の排除を実現するこのツールは、裁量トレードにもEA運用にも活用可能です。インストールや使い方も初心者向けに丁寧に解説していますので、ぜひ最後までご覧ください。
以下より、MT4専用スクリプト「Break even(ブレイクイーブン)」を無料でダウンロードできます。
損益分岐点の自動計算とリスク管理にぜひご活用ください。
MT4で損益分岐点にストップ注文を自動設定する方法|本記事の内容
FXトレードで複数ポジションを持っていると、損益分岐点の管理は難しくなります。本記事では、MT4で使えるスクリプト「Break even」を使って、**自動で損益分岐点を計算し、ストップ注文を入れる方法**を解説します。さらに、ツールの導入手順や、リスク管理に役立つ活用法も紹介しています。
損益分岐点を自動で計算し、ブレイクイーブン注文を出す方法
MT4で複数ポジションを保有している場合、手動での損益分岐点の計算は煩雑です。本記事で紹介するスクリプトを使えば、全ポジションの平均取得価格をもとに、自動でブレイクイーブンの位置にストップ注文を出すことが可能になります。
スクリプトの導入手順と使い方
ダウンロードしたスクリプトは、MT4の「データフォルダ」内にある「Scripts」フォルダに移動させるだけで導入できます。使い方もシンプルで、チャートにドラッグ&ドロップするだけで起動でき、パラメーター設定も直感的です。
リスク管理を強化する活用のポイント
このスクリプトは、利益が一定水準に達したポジションに対してのみストップ注文を発動する仕様となっており、リスクを限定しながら利益を守るトレードを支援します。裁量トレードでもEA運用でも、感情に左右されず安定した資金管理を行いたい方に最適です。
ブレイクイーブンとは?|損益分岐点の基本と重要性
FXにおける「ブレイクイーブン(Break Even)」とは、損益がゼロの状態、つまりトレードで損も得もしていない損益分岐点の価格を指します。
この価格にストップ注文(逆指値)を入れることで、最悪でも損失ゼロで取引を終えられるため、リスク管理の第一歩として非常に重要です。
ブレイクイーブンは、トレードで利益が乗った後にストップロスを建値に移動する戦略としても用いられ、資金の保全や感情の暴走防止につながります。以下では、ブレイクイーブンの基本的な意味と、FXトレードにおける実践的な活用方法を解説します。
損益分岐点の意味とFXにおける活用
損益分岐点とは、ポジションの取得価格と同じ価格で決済した場合に損も利益も発生しないラインを指します。
特に複数ポジションを持っている場合、この平均取得価格の算出は複雑になりがちですが、自動化することで効率的なエントリー・エグジット戦略が実現します。
FXでは、このブレイクイーブンの価格にストップロスを移動させることで、「利が乗ったら損失リスクをゼロにする」運用が可能になります。
これは長期的に資金を守るうえで非常に有効な戦略です。
感情に左右されない損切り管理の実現
FXで失敗する大きな原因の一つが、「損切りができない」「含み益を伸ばしすぎて反転する」といった感情的な判断です。
ブレイクイーブン戦略は、一定の利益が乗った段階であらかじめ設定したルール通りに自動でストップを移動させるため、迷いが生じません。
このように、感情に左右されずにリスクを限定できることが、トレードを継続するうえでの安定性と信頼性につながります。
MT4スクリプト「Break even」の特徴とできること
「Break even」は、損益分岐点(ブレイクイーブン)でストップ注文を自動設定するMT4用スクリプトです。
裁量トレードでもEA運用でも活用でき、ポジションの平均取得価格や利益水準に応じた柔軟なリスク管理を実現します。
以下では、このスクリプトでできる主な機能について紹介します。
複数ポジションの平均取得価格を自動計算
FXでは複数ポジションを保有している場合、それぞれのロット数や取得価格に応じて加重平均で損益分岐点を計算する必要があります。
「Break even」スクリプトは、これを自動で処理し、手動計算の手間を省きながら正確なストップロス位置を算出します。
これにより、より精度の高い損失回避が可能となります。
買い・売り・すべての注文に対応
このスクリプトは、適用対象を「買い注文のみ」「売り注文のみ」「すべての注文」から選択可能です。
通貨ペアごとの戦略に合わせて設定できるため、一方向のポジションだけにストップを入れたい場合にも柔軟に対応します。
また、「現在のチャートシンボルのみ適用」機能もあるため、マルチ通貨運用時にも誤動作を防ぐ設計になっています。
指定利益幅に達したら自動でストップ注文を実行
スクリプトには、「この利益を超えたらブレイクイーブンを設定する」といった利益条件の設定項目があります。
指定した利益幅に達したポジションにのみストップ注文が発動されるため、早すぎる損益調整や利確を防ぎ、利益の伸ばしとリスク回避のバランスを最適化できます。
この機能により、戦略的なトレード管理が実現可能です。
MT4スクリプト「Break even」のダウンロード方法と導入手順
ここでは、MT4専用スクリプト「Break even」のダウンロード方法と、MT4への導入手順をわかりやすく解説します。
初心者の方でも簡単に使えるよう、画像付きの手順ガイドとして活用できる内容になっています。
スクリプトファイル(.ex4)のダウンロード
「Break even」スクリプトは、以下のリンクから無料でダウンロードできます。
ファイル形式は.ex4(コンパイル済みの実行ファイル)で、MQL4のスクリプトフォルダに配置するだけで使用可能です。
ファイルに不正なコードや悪意のある挙動は一切含まれておらず、当サイトで検証済みのものを提供していますので、安心してご利用ください。
MT4へのインストール手順(データフォルダ操作)
スクリプトの導入は以下の手順で行えます。

- MT4を起動し、メニューから「ファイル」→「データフォルダを開く」を選択
- 表示されたフォルダ内の MQL4 → Scripts フォルダへアクセス
- ダウンロードした .ex4 ファイルをこの Scripts フォルダにコピー
- MT4を再起動し、「ナビゲーター」ウィンドウ内の「スクリプト」から使用可能に
この操作だけで、MT4チャート上からドラッグ&ドロップで簡単にスクリプトを実行できるようになります。
万が一動作しない場合は、オートトレードが有効になっているか、スクリプト実行の許可設定がONになっているかをご確認ください。
スクリプトBreak evenの使い方とパラメーター解説
MT4にスクリプト「Break even」をインストールした後は、チャート上で簡単に起動して設定を行うだけで運用がスタートできます。ここでは、スクリプトの基本的な使い方と、リスク管理に関わる重要なパラメーターの意味・推奨設定について解説します。
ナビゲーターからスクリプトを呼び出す
スクリプトの起動はとても簡単です。MT4画面左側の「ナビゲーター」ウィンドウから「スクリプト」カテゴリを展開し、Break evenを目的のチャートにドラッグ&ドロップするか、ダブルクリックで実行できます。
実行時にはパラメーター設定画面が自動で表示され、損益分岐点の計算条件や注文の対象範囲をカスタマイズできます。
これにより、裁量トレードや自動売買の補助ツールとしても柔軟に活用できます。
設定できるパラメーターの意味と推奨値
スクリプトには、トレードスタイルや資金状況に応じて調整可能なパラメーターが複数用意されています。以下に、主なパラメーターとその意味をまとめます。

パラメーター名 | 説明 |
---|---|
現在のチャートシンボルのみ | チャート上の通貨ペアのみを対象とするか |
適用する注文 | 適用する注文の種類(すべて/買いのみ/売りのみ) |
適用開始の利益 | ブレイクイーブン適用を開始する最小利益(ポイント) |
獲得する利益 | ブレイクイーブンの位置に追加する利益幅(ポイント) |
これらの設定を使うことで、「ある程度の利益が出たときにだけ建値にストップを置く」といった戦略的運用が可能になります。
併用推奨ツール|注文を一括取消できる「DeleteOrders」スクリプト
「Break even」スクリプトでストップ注文を自動設定した後、状況に応じてその注文を取り消したい場面も出てきます。
そんなときに便利なのが、**MT4上でストップロス(SL)・テイクプロフィット(TP)注文を一括で削除できる無料スクリプト「DeleteOrders」**です。
このツールは、複数ポジションに対して個別にキャンセル操作を行う必要がなく、わずか数秒で全注文の指値・逆指値を削除できるため、時間と労力の大幅な節約になります。
【利用シーンの具体例】
- 「Break even」で自動設定されたストップ注文を一時的に取り消したいとき
- 手動でトレールや新たなストップ注文を入れ直すとき
- 相場急変時にすべての逆指値・利確設定を一括で外したいとき
「Break even」と「DeleteOrders」を併用することで、損益分岐点でのストップ管理と、柔軟なキャンセル操作を組み合わせた高度なリスク管理が可能になります。
📄SL、TP注文を一括で削除できる「DeleteOrders」についてはこちらからどうぞ
MT4スクリプト活用による損益分岐点ストップ注文の3大メリット
MT4スクリプト「Break even」は、損益分岐点での自動ストップ注文を通じて、リスク管理・取引精度・時間効率のすべてに効果を発揮します。
ここでは、このスクリプトを活用することで得られる代表的な3つのメリットを解説します。
リスクゼロ運用による資金保護
ブレイクイーブンのストップ注文を活用すれば、利益が乗った時点で損失ゼロに設定できるため、想定外の逆行による資金損失を防げます。
特に複数ポジションを運用している場合は、手動では難しい平均取得価格のストップ設定を自動化できる点が大きな強みです。
「できるだけ損は出したくない」「勝率は低くても、負け額は最小限にしたい」といった堅実な戦略を支える、強力な資金保護ツールとなります。
感情トレードの回避と自動判断
トレーダーが損切りや利確の判断に迷い、感情に左右された取引をしてしまうことは少なくありません。
このスクリプトはあらかじめ決めた条件でストップ注文を実行するため、心理的なブレを排除し、常にルール通りの取引を実現できます。
特に初心者や短期トレードの多い方には、メンタル負荷を下げる補助ツールとしておすすめです。
効率的な資産運用と時間の有効活用
スクリプトの自動化により、チャートを常時監視する必要がなくなるため、トレードにかかる時間を大幅に削減できます。
結果として、複数通貨ペアの運用や本業との両立、副業トレーダーとしての運用にも適しています。
また、人的ミスや操作の遅れによる損失リスクを減らすことで、資産運用全体の効率が向上します。
このように「Break even」は、単なるストップ注文スクリプト以上に、取引の安定性と生産性を向上させる実践的なツールです。
初心者から中上級者まで、幅広いトレーダーにとって導入価値の高いスクリプトといえるでしょう。
ここでは、MT4用スクリプト「Break even」の完全なMQL4ソースコードを公開しています。
自動で損益分岐点を計算し、指定条件に達したポジションにストップ注文を出すロジックがどのように構成されているかを確認できます。
このコードは、当サイトで安全性を検証した上で提供しており、悪意のある処理や外部通信は一切含まれていません。学習目的やカスタマイズ用途としても活用可能です。
※コード編集や再配布の際は、自己責任にてご利用ください。
【このソースコードでできること】
- 複数ポジションの平均取得価格を算出
- 最小利益や追加利益の条件に応じてブレイクイーブン価格を計算
- 対象注文(買い・売り・すべて)を選別し、自動でストップロスを調整
- オートトレード・通信状態を事前にチェックし、安全に実行
この後のセクションで、ソースコードの構成要素と動作の流れを解説しています。MQL4に不慣れな方でも理解できるよう、関数やパラメーターの意味を丁寧に説明していますので、参考にしてください。
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
enum ENUM_ORDER_TYPES
{
ALL_ORDERS = 1, // 全ての注文
ONLY_BUY = 2, // 買い注文のみ
ONLY_SELL = 3 // 売り注文のみ
};
input bool OnlyCurrentSymbol = false; // 現在のチャートのシンボルのみ
input ENUM_ORDER_TYPES OrderTypeFilter = ALL_ORDERS; // 適用する注文
input int MinimumProfit = 0; // 適用開始の利益(ポイント)
input int AdditionalProfit = 0; // 獲得する利益(ポイント)
void OnStart()
{
if (!TerminalInfoInteger(TERMINAL_CONNECTED))
{
Print("トレードサーバーに接続されていません。終了します。");
return;
}
if ((!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)) || (!MQLInfoInteger(MQL_TRADE_ALLOWED)))
{
Print("オートトレードが無効です。有効にしてください。終了します。");
return;
}
double totalLots = 0.0;
double totalPrice = 0.0;
int orders_total = OrdersTotal();
for (int i = 0; i < orders_total; i++)
{
if (!OrderSelect(i, SELECT_BY_POS))
{
Print("エラー - 注文が選択できません - ", GetLastError());
continue;
}
if (OrderProfit() <= 0) continue; // 損失の注文はスキップ
// フィルター条件を確認
if ((OrderTypeFilter == ONLY_SELL) && (OrderType() == OP_BUY)) continue;
if ((OrderTypeFilter == ONLY_BUY) && (OrderType() == OP_SELL)) continue;
if ((OnlyCurrentSymbol) && (OrderSymbol() != Symbol())) continue;
totalLots += OrderLots(); // ロット数の合計
if (OrderType() == OP_BUY)
{
totalPrice += OrderOpenPrice() * OrderLots(); // 買いポジションの価格合計
}
else if (OrderType() == OP_SELL)
{
totalPrice += OrderOpenPrice() * OrderLots(); // 売りポジションの価格合計
}
}
if (totalLots > 0)
{
double averagePrice = totalPrice / totalLots; // 平均エントリープライス
double point = SymbolInfoDouble(Symbol(), SYMBOL_POINT);
double extra_be_distance = AdditionalProfit * point;
int digits = (int)SymbolInfoInteger(Symbol(), SYMBOL_DIGITS);
// 平均価格に基づいたブレイクイーブン価格の計算
double BE_price_buy = NormalizeDouble(averagePrice + extra_be_distance, digits);
double BE_price_sell = NormalizeDouble(averagePrice - extra_be_distance, digits);
for (int i = 0; i < orders_total; i++)
{
if (!OrderSelect(i, SELECT_BY_POS))
{
Print("エラー - 注文が選択できません - ", GetLastError());
continue;
}
if ((OrderTypeFilter == ONLY_SELL) && (OrderType() == OP_BUY)) continue;
if ((OrderTypeFilter == ONLY_BUY) && (OrderType() == OP_SELL)) continue;
if ((OnlyCurrentSymbol) && (OrderSymbol() != Symbol())) continue;
if (OrderType() == OP_BUY)
{
if ((SymbolInfoDouble(OrderSymbol(), SYMBOL_BID) >= BE_price_buy) && (BE_price_buy > OrderStopLoss()))
{
if (!OrderModify(OrderTicket(), OrderOpenPrice(), BE_price_buy, OrderTakeProfit(), OrderExpiration()))
Print("OrderModify Buy BE failed ", GetLastError(), " for ", OrderSymbol());
else
Print(OrderSymbol() + " BUY-order #" + IntegerToString(OrderTicket()) + " - Stop Loss moved to BE.");
}
}
else if (OrderType() == OP_SELL)
{
if ((SymbolInfoDouble(OrderSymbol(), SYMBOL_ASK) <= BE_price_sell) && ((BE_price_sell < OrderStopLoss()) || (OrderStopLoss() == 0)))
{
if (!OrderModify(OrderTicket(), OrderOpenPrice(), BE_price_sell, OrderTakeProfit(), OrderExpiration()))
Print("OrderModify Sell BE failed ", GetLastError(), " for ", OrderSymbol());
else
Print(OrderSymbol() + " SELL-order #" + IntegerToString(OrderTicket()) + " - Stop Loss moved to BE.");
}
}
}
}
else
{
Print("適用するポジションがありません。");
}
return;
}
MQL4初心者向け|MT4スクリプト『Break even』のコード構造と動作の仕組み
このセクションでは、「Break even」スクリプトのMQL4コードを初学者にもわかりやすく解説します。
MT4スクリプトの開発やカスタマイズを行いたい方にとって、MQL4の基本構造を理解するうえで実践的な例となる内容です。
列挙型とパラメーター設計
コード冒頭には、注文の種別を選択するための列挙型 ENUM_ORDER_TYPES が定義されています。
enum ENUM_ORDER_TYPES {
ALL_ORDERS = 1,
ONLY_BUY = 2,
ONLY_SELL = 3
};
このような列挙型を使うことで、スクリプト内の条件分岐が直感的かつ拡張性の高い設計になります。
また、以下のように input を使って、ユーザーがMT4のUI上で設定可能なパラメーターが定義されています。
input bool OnlyCurrentSymbol = false;
input ENUM_ORDER_TYPES OrderTypeFilter = ALL_ORDERS;
input int MinimumProfit = 0;
input int AdditionalProfit = 0;
これにより、対象通貨ペアの選択、注文タイプ、利益幅の指定などを柔軟にカスタマイズできます。
エントリープライスの平均化とロジック概要
複数ポジションを持っている場合、それぞれの取得価格をロット数で加重平均し、損益分岐点(Break Even)価格を求めるのが本スクリプトの核となる処理です。
double totalLots = 0.0;
double totalPrice = 0.0;
for (...) {
totalLots += OrderLots();
totalPrice += OrderOpenPrice() * OrderLots();
}
double averagePrice = totalPrice / totalLots;
この処理により、すべての対象ポジションの取得価格を正確に反映したブレイクイーブンラインを計算します。
さらに、AdditionalProfit を使ってそのラインに利益幅を追加できるため、戦略的なストップ位置の設定が可能です。
注文修正処理の条件と動作
最後に、実際にストップ注文を動的に変更するロジックが展開されています。
OrderModify() 関数を使用して、現在の価格が条件を満たしたときにストップロスを建値(+利益)に変更します。
if ((OrderType() == OP_BUY) && (Bid >= BE_price_buy)) {
OrderModify(..., BE_price_buy, ...);
}
- 買い注文:Bid が BEライン以上ならストップをBEへ
- 売り注文:Ask が BEライン以下ならストップをBEへ
このような条件式により、ポジションが一定の利益を確保した段階で、損失ゼロの状態を自動で確保します。
注意点と安全な利用のためのチェックリスト
MT4スクリプト「Break even」は便利なツールですが、正しく安全に使うためにはいくつかの注意点があります。
以下では、スクリプトを使用する前に確認しておくべきポイントをチェックリスト形式で紹介します。
スクリプト実行前に記録する
スクリプトを実行する前には、必ず現在のポジション情報や口座状態を記録しておきましょう。
とくに初回使用時や設定を変更した際は、想定外の動作を防ぐためにも**「事前に復旧できる状態にしておく」**ことが基本です。
万が一、不具合や誤操作が起きた場合でも、損失や混乱を最小限に抑えることができます。
自動売買の許可とMT4の接続状態を確認
MT4でスクリプトが正常に動作するためには、次の設定が必要です:
- 自動売買の許可がONになっていること(ツールバーの「自動売買」ボタン)
- オプション設定で「スクリプトの自動売買を許可」にチェックが入っていること
- トレードサーバーに正しく接続されていること(左下の接続状態が「接続中」または「○ kb」になっている)
これらが無効になっていると、スクリプトは起動しても注文処理が実行されないため、あらかじめ確認しておくことが重要です。
EAや他スクリプトとの干渉リスクに注意
「Break even」はポジションのストップロスを変更する機能を持つため、他のEAやスクリプトが同時に同じ注文を制御していると干渉が発生する可能性があります。
特に以下のようなケースでは注意が必要です:
- EAがストップロスやトレーリングを自動調整している
- 別のスクリプトが同じタイミングで注文を変更しようとしている
- 複数チャートで同じポジションを異なるロジックで制御している
「Break even」は単体での利用、または他の自動売買処理と明確に役割を分けて運用することが推奨されます。
このような事前確認とリスク管理を徹底することで、安全かつ安定的にスクリプトを活用でき、予期せぬ損失を未然に防ぐことが可能になります。
まとめ|Break evenで自動リスク管理を実現しよう
MT4スクリプト「Break even」は、複数ポジションの損益分岐点を自動で計算し、最適なタイミングでストップ注文を設定できる無料ツールです。
特に、損失ゼロのブレイクイーブンラインに自動で注文を入れることで、資金を守りながらトレードの精度と安定性を高めることが可能になります。
さらに、設定項目もシンプルで柔軟性が高く、裁量トレード・EA運用どちらの場面でも活用できる点が大きな魅力です。
スクリプトの導入・設定・実行は数分で完了し、感情に左右されない自動リスク管理を手軽に導入できるのもポイントです。
資産を守りながら効率よくトレードを行いたい方は、ぜひこの「Break even」スクリプトを活用して、より戦略的で安定したFX運用を実現してください。
多くのトレーダーが求めているのは、信頼できて無料で使えるEAです。
当サイトでは、MT4対応の無料EAを厳選して紹介しています。