【MAE:最大逆行幅 MFE:最大順行幅】ゴールド(金)FXのトレード反省【VBAマクロで分析】

MyFxBookに登録しておけば、MAE MFEが簡単に表示できると思っていたら、ゴールド(Gold)は対象外??ということで、自己流で分析してみようと思いました。

現状、負けがこんでいるので、こうなるとヤバいという参考になると思います。

あわせて読みたい
ボラティリティが高いゴールド(Gold・金・XAUUSD)は稼げる?メリット・デメリットを解説【XM(XMTrading)... ゴールド(金)FXが注目されるのは、ボラティリティが大きいことが理由です。しかし、同時に取引コストも大きいと、いくらボラティリティが大きくても効率的とは言えませ...
あわせて読みたい
【MAE:最大逆行幅 MFE:最大順行幅】GBPUSDのトレード反省【MyFxBookとMT4を比較】 先日はGold(金相場)について、MAE/MFEを確認してトレードの振り返りを行った。最近Goldの次に扱うのは、やはりボラの大きいGBPUSD。これも、同じようにMAE,MFEを確認し...
目次

MAE MFEについて

  • MFE Maximum Favorable Excursion:最大順行幅
  • MAE Maximum Adverse Excursion:最大逆行幅

のことである。MFEは最大含み益、MAEは最大含み損ということ。わたしはナンピン癖があるので、複数ポジションが総合して、口座を吹き飛ばしている訳だが、それでも、どのくらいで助からないのか・・・分析してみたいと考えた。

1分足データとトレード履歴

5分足のトレードでも、1分単位でエントリエグジットをしているわけで、1分足データを対象とする必要がある。1分足データは幾つか存在するが、最も手っ取り早く、MT4のヒストリカルデータを用いることとした。トレード履歴は、MT4から簡単に出力。

MT4 1分足データのエクスポート方法
エクスポートし終わったら、チャートの最大バーを小さくしておくことを忘れずに・・・

解析用VBAの準備(ガチ素人でも頑張る)

MT4のトレード履歴と1分足データを照らし合わせる下記VBAマクロで解析した。めちゃくちゃ時間がかかるので、PCが止まったか心配にさせてくれるマクロである、細かいチェックはしていない。また、解析結果を見ると、一部誤差が生じているので注意が必要。1分足データの始・終・高・安の値の平均を、その時間の価格として用いているが、1分以内に終了したトレードや、大幅に値動きがあった場合、特に誤差が生じている様子。素人はこれが限界。とりあえずのトレード反省用としては、出力結果はおおむね(多分)問題なさそうである。

Sub test()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Dim sec60 As Double
Dim posi_value_close, posi_value_open, MF, MB As Double


Dim trade_min, trade_max, bar_min, bar_max, bar_day_yoko, bar_time_yoko, bar_daytime_yoko, bar_close_yoko, bar_height_yoko, bar_low_yoko, bar_start, bar_posi_yoko As Long
Dim trade_ent_time, trade_exit_time, trade_buysell_yoko As Long
Dim posi_open, posi_close, write_yoko As Long


Dim if_buy, if_sell As String
Dim MF_time, MB_time As Double

Dim i, trade, deci As Long

Dim own_wb As Workbook
Dim trade_ws, bar_ws As Worksheet



Set own_wb = ThisWorkbook
Set trade_ws = own_wb.Worksheets("trade")
Set bar_ws = own_wb.Worksheets("bar")

'59秒のシリアル値を取得する--------------------
'sec60 = bar_ws.Cells(5, 3).Value
sec60 = 6.82904513888889E-04
'----------------------------------------------

'Goldの場合 deci=10   GBPUSDは10000
deci = 10


'毎回位置から読み出しするのは効率が悪いので、前回から検索する
posi_open = 0
'--------------------------------------------------------------

'読み出しの開始・終了の縦列を指定する--------------------------
trade_min = 5
trade_max = trade_ws.Cells(Rows.Count, 1).End(xlUp).Row
bar_min = 2
bar_max = bar_ws.Cells(Rows.Count, 1).End(xlUp).Row
'--------------------------------------------------------------

'1minのデータ横列を指定する----------------------------------------------
bar_day_yoko = 1
bar_time_yoko = 2
bar_close_yoko = 6      '終値でエントリ及びエグジットすることを想定
bar_height_yoko = 4
bar_low_yoko = 5
bar_daytime_yoko = 8    '!!!!!!これだけ出力する列を指定!!!!!!
bar_posi_yoko = 9    '!!!!!!これだけ出力する列を指定!!!!!!
'------------------------------------------------------------------------

'履歴のエントリ時間などの横列を指定する----
trade_ent_time = 2
trade_exit_time = 9
trade_buysell_yoko = 3 'BUYSELLの横列
if_buy = "buy"            'BUYポジションの文字列
if_sell = "sell"           'SELLポジションの文字列
'------------------------------------------

'出力する横列を指定----
write_yoko = 23
'----------------------




'1minデータの日付と時間を連結
For i = bar_min To bar_max


bar_ws.Cells(i, bar_day_yoko).Value = Replace(bar_ws.Cells(i, bar_day_yoko).Value, ".", "/")
bar_ws.Cells(i, bar_daytime_yoko).Value = bar_ws.Cells(i, bar_day_yoko).Value + bar_ws.Cells(i, bar_time_yoko).Value
bar_ws.Cells(i, bar_posi_yoko).Value = (bar_ws.Cells(i, 3).Value + bar_ws.Cells(i, 4).Value + bar_ws.Cells(i, 5).Value + bar_ws.Cells(i, 6).Value) / 4


Next i


'-----------------------------------------------------
'       ここから長い計算
'-----------------------------------------------------
For trade = trade_min To trade_max

    'エントリとエグジットの縦列を取得 ★毎回、初期位置から検索するのは時間がかかりそうなので、前回から検索する-----------
    If (posi_open > bar_min + 3) Then
    bar_start = posi_open - 2
    Else
    bar_start = bar_min
    End If

    For i = bar_start To bar_max

        If ((trade_ws.Cells(trade, trade_ent_time).Value >= bar_ws.Cells(i, bar_daytime_yoko).Value) And (trade_ws.Cells(trade, trade_ent_time).Value <= bar_ws.Cells(i, bar_daytime_yoko).Value + sec60)) Then
        posi_value_open = bar_ws.Cells(i, bar_posi_yoko).Value
        posi_open = i
        End If

        If ((trade_ws.Cells(trade, trade_exit_time).Value >= bar_ws.Cells(i, bar_daytime_yoko).Value) And (trade_ws.Cells(trade, trade_exit_time).Value <= bar_ws.Cells(i, bar_daytime_yoko).Value + sec60)) Then
        posi_value_close = bar_ws.Cells(i, bar_posi_yoko).Value
        posi_close = i
        Exit For
        End If

    Next i
    '--------------------------------------------------------------------------------------------------------------------

    'MFとMB計算の為の値をセット-----
    MF = posi_value_open
    MB = posi_value_open
    '-------------------------------

    'MFとMBの取得---------------------------------------------------------------
    For i = posi_open + 1 To posi_close - 1

        'BUYの場合
        If (trade_ws.Cells(trade, trade_buysell_yoko).Value = if_buy) Then
            If (MF < bar_ws.Cells(i, bar_height_yoko)) Then
            MF = bar_ws.Cells(i, bar_height_yoko).Value
            MF_time = bar_ws.Cells(i, bar_daytime_yoko).Value         '一応時間も取得しておく
            End If

            If (MB > bar_ws.Cells(i, bar_low_yoko)) Then
            MB = bar_ws.Cells(i, bar_low_yoko).Value
            MB_time = bar_ws.Cells(i, bar_daytime_yoko).Value         '一応時間も取得しておく
            End If
        End If

        'SELLの場合
        If (trade_ws.Cells(trade, trade_buysell_yoko).Value = if_sell) Then
            If (MF > bar_ws.Cells(i, bar_low_yoko)) Then
            MF = bar_ws.Cells(i, bar_low_yoko).Value
            MF_time = bar_ws.Cells(i, bar_daytime_yoko).Value         '一応時間も取得しておく
            End If

            If (MB < bar_ws.Cells(i, bar_height_yoko)) Then
            MB = bar_ws.Cells(i, bar_height_yoko).Value
            MB_time = bar_ws.Cells(i, bar_daytime_yoko).Value         '一応時間も取得しておく
            End If
        End If

    Next i
    '---------------------------------------------------------------------------

    '結果の書込み---------------------------------------------------------------
    'BUYの場合
    If (trade_ws.Cells(trade, trade_buysell_yoko).Value = if_buy) Then

        trade_ws.Cells(trade, write_yoko).Value = posi_value_open       'ポジション
        trade_ws.Cells(trade, write_yoko + 1).Value = posi_value_close  'クローズ
        trade_ws.Cells(trade, write_yoko + 2).Value = (posi_value_close - posi_value_open) * deci  '差分

        If ((posi_value_close - posi_value_open) >= 0) Then
        trade_ws.Cells(trade, write_yoko + 3).Value = (MF - posi_value_open) * deci 'win
        trade_ws.Cells(trade, write_yoko + 4).Value = (MB - posi_value_open) * deci
        Else
        trade_ws.Cells(trade, write_yoko + 5).Value = (MF - posi_value_open) * deci 'lose
        trade_ws.Cells(trade, write_yoko + 6).Value = (MB - posi_value_open) * deci
        End If

    End If


    'SELLの場合
    If (trade_ws.Cells(trade, trade_buysell_yoko).Value = if_sell) Then

        trade_ws.Cells(trade, write_yoko).Value = posi_value_open       'ポジション
        trade_ws.Cells(trade, write_yoko + 1).Value = posi_value_close  'クローズ
        trade_ws.Cells(trade, write_yoko + 2).Value = (posi_value_open - posi_value_close) * deci  '差分


        If ((posi_value_open - posi_value_close) >= 0) Then
        trade_ws.Cells(trade, write_yoko + 3).Value = (posi_value_open - MF) * deci 'win
        trade_ws.Cells(trade, write_yoko + 4).Value = (posi_value_open - MB) * deci
        Else
        trade_ws.Cells(trade, write_yoko + 5).Value = (posi_value_open - MF) * deci 'lose
        trade_ws.Cells(trade, write_yoko + 6).Value = (posi_value_open - MB) * deci
        End If

    End If
    '---------------------------------------------------------------------------

Next trade

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

ゴールドの結果

MFE vs MAE

なんとも言えない。良く分からない。

GOLD(ゴールド)トレード実績
MFE Maximum Favorable Excursion:最大順行幅
MAE Maximum Adverse Excursion:最大逆行幅



トレード損益 vs MAE 及び トレード損益 vs MFE

MAEについて、なんとなく-50pipsを下回った場合、ほぼ助かっていないという風に読み取れるか?-50pipsで損切してみるというのが、ドカンを防ぎつつ、利益確保できるひとつ改善策になるかもしれない。ゴールド相場はボラが大きいので、MAEは他通貨より大きいはずで、この目安は、ゴールド相場のみで使えるものだ。

MFEについて、負けトレードでも+20pips程度確保できている場合があるということ。+70pips近くも行って、-200pipsも派手に負けているトレードなんてあるのか?と思ったら、あった。強欲。

GOLD(ゴールド)トレード実績
トレード損益とMAE MFE
MFE Maximum Favorable Excursion:最大順行幅
MAE Maximum Adverse Excursion:最大逆行幅

まとめ

わたしのトレードにおいて、ゴールドは-50pipsを超えると、ほぼ助かっていない。-50pipsを一つ目安にしよう。複数ポジションなので、ざっくりある指定額で切ってしまう仕組み(EAで監視)も必要か。しかし、EAで監視させてもOFFしたら意味がない。

あわせて読みたい
ボラティリティが高いゴールド(Gold・金・XAUUSD)は稼げる?メリット・デメリットを解説【XM(XMTrading)... ゴールド(金)FXが注目されるのは、ボラティリティが大きいことが理由です。しかし、同時に取引コストも大きいと、いくらボラティリティが大きくても効率的とは言えませ...
あわせて読みたい
【MAE:最大逆行幅 MFE:最大順行幅】GBPUSDのトレード反省【MyFxBookとMT4を比較】 先日はGold(金相場)について、MAE/MFEを確認してトレードの振り返りを行った。最近Goldの次に扱うのは、やはりボラの大きいGBPUSD。これも、同じようにMAE,MFEを確認し...

XM(XMTrading)ボーナス情報

XM(XMTrading)

総合評価:

海外口座日本人No.1! ●圧倒的なボーナス群:新規口座ボーナス(¥13,000相当:入金不要)+入金ボーナス100%(¥50,000相当)+入金ボーナス20%(総額¥1,300,000相当) ●入金以上の損失無し(ゼロカット) ●長年の実績と信頼 ★新規登録でインジケータプレゼント中


TariTali(タリタリ):高キャッシュバック率と使いやすいサイト設計

TariTali(タリタリ)

総合評価:

高いキャッシュバック率 ●キャッシュバック額の確認が容易な使いやすいサイト設計 ●様々な出金方法(銀行振込/SticPay/bitwallet)に対応、1500円から出金可能


FXRoyalCashBack(ロイヤルキャッシュバック):高キャッシュバック率とWキャッシュキャンペーン

FXRoyalCashBack(ロイヤルキャッシュバック)

総合評価:

TariTaliと同等の高キャッシュバック率 ●サイトの使い勝手はTariTaliに劣るが、XMオートリベートなら関係なし ●Wキャッシュバックキャンペーン¥10,000は要チェック新規登録でインジケータプレゼント中

  • URLをコピーしました!
目次