聞いたことがあるかもしれませんが、取引システムに適切なロットサイズを選択することは、優れたシステムを開発するための重要な要素です。 リスク、ロット サイズ、資金管理などの使用方法については、この MQL4 ロット パラメーターの記事をご覧ください。 Expert Advisor をプログラムするための変数。
内部変数でロット サイズを宣言するだけで、各注文の固定ロット サイズとしてロット サイズを指定できますが、詳しく見ていきます。利用可能な証拠金の割合としてロット サイズを計算する簡単な方法に基づく方法。
舞台裏で少し計算が必要ですが、基本的に、カスタム リスク設定 1 を選択した場合、1,000 株あたり 0.01 マイクロ ロットを取引することになります。サイズ。 したがって、カスタム リスク設定が 2 でアカウント サイズが 10,000 の場合、0.2 ロットから開始し、損益が 100 ドルごとに自動的に 0.01 ロットが加算または減算されます。 ロットサイズを自動的に調整するこの手法は非常にシンプルですが、利益を自動的に増やしたり、損失を減らしたり、口座の入出金を自動的に調整したりするのに非常に効果的です。
パラメータ
mm
Bool: 資金管理を使用するかどうか。
リスク
ダブル: 事前定義されたリスク設定。
ロット
ダブル: これは、MM がオフの場合に使用する手動ロット サイズです。
ロット サイズ
Double: これは、ブローカーが提供するロット サイズの小数点以下の桁数です。 ほとんどは小数点以下 2 桁ですが、1 桁しかないものもあります。
MT4 コード スニペット
外部ブール値 MM = TRUE;
外部ダブル リスク = 2;
extern double LotDigits = 0.1;
extern double LotDigits = 2;
double GetLots()
< p >{double minlot = MarketInfo(Symbol(), MODE_MINLOT);
double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
ダブル レバレッジ= AccountLeverage();
ダブルロットサイズ = MarketInfo(Symbol(), MODE_LOTSIZE);
ダブルストップレベル = MarketInfo(Symbol(), MODE_STOPLEVEL);
2 倍の MinLots = 0.01;
2 倍の MaximalLots = 50.0;
If (MM)
{
2 つのハンド = ハンド;
ダブルロット = NormalizeDouble(AccountFreeMargin() * リスク/100 / 1000.0, LotDigits);
if (lots < minlot) Lots = minlot;
if (lots > MaximalLots) Lot = MaximalLots;
if (AccountFreeMargin() < Ask * Lots * Lotsize / レバレッジ) {
Print("お金がありません。 Lots = ", Lots, " , フリーマージン = ", AccountFreeMargin()); p >
Comment("お金がありません。 Lots = ", Lots, " , 無料マージン = ", AccountFreeMargin());
}}
それ以外の場合は Lots = NormalizeDouble( many, number);
Return(many);
}
次のことがわかります。管理をオン (true) またはオフ (false) にする場合は、最初にいくつかの外部変数を宣言して、オンの場合はカスタム リスク設定が何になるのか、オンでない場合はデフォルトのロット サイズが何になるのかを決定する必要があります。
LotDigits は、ブローカーが許可する小数点以下の桁数です (たとえば、0.01 のようなマイクロロットを許可する場合、小数点以下の桁数は 2 桁になります)。
GetLots() はカスタム関数に付けた名前なので、すべての o (任意の名前にすることができます) とすべての内容はすべて次の計算です。この機能。 GetLots() を OrderSend() 関数の 3 番目のパラメーターに配置して呼び出し、前の固定ロット変数を置き換えるだけです。
MarketInfo() 関数を参照する変数 minlot を作成します。 MarketInfo() 関数は、買値または売値、スワップ値、桁数など、特定の通貨のさまざまな市場データを取得するために必要なものであり、目的のために、その通貨の最小ロット サイズも知ることができます。 どれだけ多くのロット計算が行われたとしても、それがブローカーの最小ロットより大きいことを確認したいのですが、それ以外の場合は minlot より小さい場合は minlot になります。
自動 MM ロットの主な計算は 1 行で行われます。
double Lot = NormalizeDouble(AccountEquity() * Risk/100 / 1000.0, LotDigits);
AccountEquity() は、現在のアカウント情報を返す多くのアカウント情報関数の 1 つです。口座資本。 AccountBalance() の代わりにアカウントの資本を返したいと考えています。これは、資本はアカウントの状態 (別名アカウントの資本) をより効率的に表すためです。 適切なロットサイズを計算するには、株式価値が必要です。 この資本価値にリスク価値を乗算し、100 で割って、さらに 1000 で割って、適切なロット サイズを決定します。
効果は、選択したリスク設定に応じてロットサイズに比例します。リスク設定は 1,000 ステーク 1 取引あたり 0.01 ロット、リスク設定は 1 取引あたり 0.01 ロットです。 1K エクイティ 2 は 0.02 ロットなどを取引します。 選択したリスク設定に応じて、多くの可能性が考えられます。 口座サイズが増減すると、取引ロットサイズも増減します。 たとえば、リスク設定が 2 の場合、10,000 口座で 0.2 ロットの取引が行われ、株式の損益が 100 ドルごとに 0.01 ロット増加または減少します。 ユーザーは、リスク許容度、EA 取引スタイル、アカウントサイズに合わせてリスク設定を簡単に調整できます。
MM が true に設定されている場合、資本に基づいてロット サイズを計算し、この値を Lot 変数に割り当てます。 MM が false の場合、ロットの値をロットの固定ロットに割り当てるだけです。
ご覧のとおり、上記のコードは比較的単純ですが、株式サイズの変化に基づいた自動ロット調整に大きな違いをもたらす可能性があります。 バッチ サイズを決定するにはもっと複雑な方法がありますが、場合によっては最も単純な方法が最適に機能します。
注:
EA 開発者またはエンドユーザーは、リスクに細心の注意を払い、厳格なバックテストに基づいて EA の適切なリスク設定を決定する必要があります。関連する統計 (平均損失トレード、連続損失トレード、および最大損失)。 通常、このリスク分析は最初に固定ロットサイズ (たとえば、5K アカウントの場合は 0.1) で実行されます。 すべてのリスク関連統計が固定ロットサイズに対してまとめられると、簡単に取引できるリスク設定を特定することが可能になります。