この記事の内容
この記事を読むと…
- deal・order・共有positionを推測せず結び付ける。
- 明示規約で数量を配賦する。
- 確定・含み・費用を同時点で総合照合する。
記事内で用語を調べる
エキスパートアドバイザー(EA) ロット コミッション(売買手数料)netting口座では二つのEAと手動注文が一つの共有建玉を変えます。口座損益だけで各EAの損益は分かりません。実約定と関係を復元し、明示した数量・費用配賦規則で分析します。broker履歴や税務処理の代替ではありません。
magic numberは共有建玉を分割しない
MT5 nettingは一銘柄一建玉で後続約定が数量を変更。注文一つが複数dealを生む場合もあります。program名が違っても独立portfolioにはなりません。
DEAL_MAGICは約定magic、DEAL_REASONは発生元・原因。注文番号、position ID、時刻も保存。magic0だけで手動判断とは証明できません。program名とIDの対応も別に記録します。
手動exitはA・Bが作った共有exposureを減らせますが、exitのlabelだけでは先のどの数量を閉じたと分析するか決まりません。発注元と分析上の数量所有者を別列にします。
deal・order・positionの関連を復元
番号は計算用の数量ではなく識別子として保存。DEAL_ORDERと注文、DEAL_POSITION_IDとcycleを結びます。POSITION_IDENTIFIERは履歴の関連に使い、現在のPOSITION_TICKETはserverのservice操作などで変わり得ます。銘柄、方向、実数量、fill価格と時刻を保存。
HistorySelectByPositionはposition identifierで注文・deal履歴を取得。成功と取得範囲を確認し、一画面の可視一覧を全必要記録と見なしません。欠けたentryをexit commentからEAへ割当てず、元recordを保存して解釈を追加します。
手数料、fee、金利、口座通貨損益も含め、balance操作は売買と別にします。split注文は実際の部分数量と価格を保存し、要求数量で代替しません。ここでは照合済み履歴を分析し、新規発注の操作は行いません。
同じ口座から異なるEA結果が出る理由
二つの買いと二つの手動exitの元模型
架空線形EUR/USD、1lot100000EUR、USD口座、初期建玉なし。全価格は買いAsk・売りBidでの実約定仮定。四つ全約定し、各手数料1USD、fee・swap0。spreadはfillに含まれているため再控除しません。
| deal/order | 発生元 | 実約定 | 後の建玉 |
|---|---|---|---|
| 7001/5001 | EA A | 買い0.10@1.1000 | 買い0.10 |
| 7002/5002 | EA B | 買い0.10@1.1020 | 買い0.20 |
| 7003/5003 | 手動exit | 売り0.10@1.1010 | 買い0.10 |
| 7004/5004 | 手動exit | 売り0.10@1.1030 | なし |
第二約定後の共有買平均1.1010。第一縮小の価格損益0USD、第二は20USD。四手数料後20−4=16USDが閉じたcycleの結果です。実口座観測でなく与えた仮定。
分析FIFOは古い数量から。7003をAへ割当て10000×(1.1010−1.1000)=10USD、7004をBへ10000×(1.1030−1.1020)=10USD。各EAに開始と対応exit手数料を各1ずつ配ればA8・B8。
分析LIFOは新しい数量から。7003でB価格−10USD、7004でA+30。費用後B−12・A28、合計は同じ16。これは分析のFIFO/LIFOでMT5server会計の選択や普遍的税規則ではありません。都合で規約を黙って変えません。
同じ合計16USDでもEA配賦は変わる
横にスクロールすると図全体を確認できます。
最初のexit後にrealisedだけ比べてはいけない
7003後、現在Bid1.1010と仮定。共有建玉はrealised0・unrealised0の価格損益。FIFOならAの確定+10、残るBの含み−10で合計0。分析確定だけをserver確定欄と比較すると違います。
三約定の手数料は3USDで、両表示とも総合−3。7004でcycleが閉じれば含みはなく合計16です。確定・含み損益を同じ評価価格で合わせます。合計一致だけで分析目的にどの規約が適切かは決まりません。
実履歴には部分約定、反転、訂正、別計上費用もあります。欠落entry・価格・発注元を捏造して一致させず未解決理由を残します。規約変更は分析手法の変更として表示。各EAの制限と口座管理は実際の共有exposureへ適用されます。
新しい円例:不均等数量の部分exitを三通りで照合
架空USD/JPYでA6000USDを150.00、B4000USDを150.20で買い、手動で5000USDを150.10で売るとします。現評価Bidも150.10、累計別手数料150JPY、ほかの費用なし。価格はfill仮定でspread再控除なし。
共有平均は(6000×150+4000×150.20)/10000=150.08。共有模型では確定100JPY、残る5000USDの含み100、価格合計200、費用後50JPY。
分析FIFOならA5000を閉じ確定500。残るA1000は+100、B4000は−400で含み−300。合計500−300−150=50JPY。分析LIFOならB4000の−400とA1000の+100を閉じ確定−300、残A5000の含み+500。合計−300+500−150も50です。
確定の100・500・−300だけを順位付けしてrobotの良否としません。ここではEA別の費用配賦までは決めず合計費用150を一度だけ引いており、個別net評価には別の明示規則が必要。日本の税用FIFO等を認定する例ではありません。
確定だけの比較は分析規約の差をrobot成績と誤認する。費用配賦を個別に決めるまではEA別netを推測しません。
小さな画面では横にスクロールするか、図を拡大できます。数値と要点は下のテキストにも記載しています。
- 共有平均150.08
- 確定100+含み100 – 費用後50JPY。
- 分析FIFO
- 確定500・含み−300 – 費用後50JPY、A1000とB4000が残る。
- 分析LIFO
- 確定−300・含み500 – 費用後50JPY、A5000が残る。
二robot評価前の記録
- 一銘柄の閉じたcycleを選び元exportを保管。deal・order・position ID、実数量と全費用を照合。例作りのため本番取引をしません。
- robot結果の前に数量・費用配賦規約を明記。発注元と分析所有者を分け、欠落をclosing magicだけで補いません。
- 閉じたcycleは口座履歴へ総合照合。開いたcycleは同じ時点の確定+含み+費用を合わせ、両viewを日誌へ保存。分析は将来利益の証明ではありません。
理解度を確認
練習の目安: 約2分.
答えと解説を見る
10−10−3=−3。共有価格損益0から三手数料を引いた値とも一致します。
よくある質問
closing magicで利益のEAが分かる?
FIFOはbroker会計や税規則?
最初exit後の確定がserverと違う理由は?
欠落entryをexit commentから補える?
出典と検証
- www.metatrader5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
- www.mql5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
- www.mql5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
- www.mql5.com
内容の参考資料。記事に記載した範囲と前提を確認してください。
計算例には前提条件を明記しています。現在の市場データや提供会社の取引条件の代わりにはなりません。
