私たちのファンページに参加してください
Position sizing from risk, using the broker's own tick value and volume step - MetaTrader 5のためのライブラリ
- ビュー:
- 15
- 評価:
- パブリッシュ済み:
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
1ピップの価値を10ドルと仮定するロットサイズ計算ツールは、金、指数、円クロス、そして米ドル建てではないあらゆる口座において誤った結果を出します。そして、まさにこうした場面で、過剰なロットサイズが弊害をもたらすのです。このヘッダーでは、代わりにサーバーが当該銘柄について実際に公開しているデータに基づいて計算を行います。
機能の説明
CalcLots()は、口座通貨建てのリスク額、エントリー価格、ストップ価格を受け取り、ブローカーの制約が適用された後に、実際にその取引量でどれだけのリスクを負うかとともに、取引すべきロット数を返します。
- 取引量は常に ブローカーの取引単位に「切り下げ」て丸めます。切り上げると、指定した以上のリスクが黙って生じてしまうため、これはロット計算ルーチンが絶対にやってはならないことです。
- 要求されたリスクが最小ロット数より小さい場合、この関数は無理な計算を行いません。 最小ロット数を返し、clamped_minを設定し、そのポジションが実際に負うリスク(要求値よりも大きくなります)を報告します。
- この処理はサイド(ロング/ショート)を問いません。 ストップはエントリー価格の上にも下にも設定可能です。
また、ストップまでの距離をポイント単位で返し、1.00ロットあたりの1ポイントの価値も返すため、呼び出し側は単なる数値だけでなく、その計算過程を示すことができます。
計算部分が別のヘッダーになっている理由
Calc.mqh はターミナル状態を保持しません。この関数は SymbolSpec 構造体(ポイント、ティックサイズ、ティック値、出来高の最小値/最大値/ステップ、桁数)を受け取るため、サイズ設定ロジック全体を合成銘柄に対してオフラインで実行することができます。
SpecFromSymbol() は、ライブデータへの唯一の橋渡し役です。 この関数はまず SYMBOL_TRADE_TICK_VALUE_LOSS を読み取ります。これは、取引が不利な方向に進んだ際にサーバーが使用する数値であり、まさにストップロスが設定される側に対応する値だからです。損失の変数がゼロに設定されているブローカーの場合は、SYMBOL_TRADE_TICK_VALUE にフォールバックします。
この分離があってこそ、同梱のテストスクリプトが実現可能となっているのです。
テストスクリプト
RiskLotCalculatorTests.mq5 は、ブローカーへの接続や履歴がなくても、どのチャートでも実行可能です。このスクリプトは、以下の 41 種類のケースを検証します: ボリュームステップの丸め処理、両方のクランプとそのフラグ、ティックサイズとポイントサイズが異なる場合のポイント値のスケーリング、5桁のメジャー通貨、金、0.1ロットステップの指数、両方の取引方向、およびすべての拒否パターン(リスクゼロ、負のリスク、エントリーポイントにストップが設定されている場合、ティックデータの欠落)です。
これをチャートにドラッグして、「エキスパート」タブを確認してください。結果は「ALL PASS、passed=41、failed=0」で終了します。
どちらのファイルも独立しています。同じフォルダに配置すれば、テストスクリプトはそのままコンパイルされます。
MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/77488
RiskPilot Pro — 損益分岐点、トレーリングストップ、日次損失制限機能を備えた「ドラッグ・トゥ・トレード」リスクパネル
ストップロスを実際に設定したい位置までドラッグし、「買い」または「売り」をクリックするだけで、ロット数は自動的に適正な値に設定されます。電卓もスプレッドシートも不要です。損益分岐点やトレーリングストップにも対応しており、損失制限に達した場合はその日の取引を自動的に終了します。
スプレッドモニター
Spread Monitor — MetaTrader 5用のシンプルな情報インジケーターです。
Contract Sizer: ladder, floor and a breaker that survives a deposit
それぞれ異なる働きをする3つのポジションサイズ調整による保護機能。これらを混同してしまうことが、多くの口座が全損してしまう原因です: - ラダー:残高Xごとに1契約。手動でのロットサイズ設定の場合でも、常に上限(CAP)として適用されます; - フロア(floor):最低資本額を下回ると取引を行わず、新たな入金が求められます; - ブレーカー(breaker):口座残高の規模に関わらず、ピーク値からX%下落した時点で取引を停止し、自動的に再起動することはありません。 このライブラリが解決し、他のほとんどが解決できていない問題:入金は利益ではなく、出金は損失ではありません。 ブレーカーは、残高のピーク値に対する下落幅を測定します。この処理を行わない場合、ドローダウン中に追加入金がされると、残高とピーク値が同時に上昇し、保護機能が最も役立つべきタイミングで下落を検知できなくなってしまいます。この場合、入出金によってピーク値が同額だけずれてしまいます。 ピーク値はファイルに保存されます。ターミナルの再起動時にピーク値を忘れてしまうブレーカーは、ブレーカーとは言えません。 デモでは、ドローダウンの底値での入金状況をシミュレートしています。「入金」をオンとオフの両方で実行し、「下落」の列を比較してみてください。
Accelerator Oscillator (AC)
アクセルレーション/デセレレーションインジケーター(AC)は現在の市場を動かす力の加速と減速を測ります。