[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『初心者です。エラー』(あいり)
どうもはじめまして。
マクロ全くの初心者なのですが下記ネットのコピペなのですが
完全コピペですらエラーになってしまいます。
どなたか心優しい方原因を教えていただけないでしょうか。
昨日3時間ほどずっと一人で調べて頑張って、Windows10なら
JAVAが8じゃないといけないということ調べたら8になってました。
Windows64bitにしました。
libreoffice 6.2じゃマクロはできないのでしょうか。
引数は省略できませんというエラーになります。
昨日も今日もずっとそのほかも色々なエラーになります。
'Copyright 2015, Life with FX
'Link - http://lifewithfx.jp
Sub CalcOptimalF()
Dim FVal As Double
Dim FStepVal As Double
Dim FLastVal As Double
Dim HPRVal As Double
Dim TWRVal As Double
Dim MinPips As Double
Dim OptimalF As Double
Dim MaxTWR As Double
Dim GeoMeaVal As Double
Dim LineIndicator As Long
Dim LastLineNumber As Long
Dim EARangeStarts As Long
Dim EARangeEnds As Long
Dim IndiRangeProcess As Long
Dim NumOfTrades As Long
Dim RecsSheetName As String
Dim TwrSheetName As String
Dim OptimalFSheetName As String
Dim RecPipsColInd As Integer
Dim TwrSheetRowInd As Integer
Dim TwrSheetColInd As Integer
Dim WinTradeCnt As Long
Dim LossTradeCnt As Long
Dim WinRate As Double
Dim AvgWinInPips As Double
Dim AvgLossInPips As Double
Dim TotalWinInPips As Double
Dim TotalLossInPips As Double
Dim PayoffRatio As Double
Dim WinTradeThresholdInPips As Double
'初期設定
RecsSheetName = Worksheets(1).Name
If Worksheets.Count < 3 Then
Worksheets.Add After:=Worksheets(RecsSheetName), Count:=(3 - Worksheets.Count)
End If
TwrSheetName = Worksheets(2).Name
OptimalFSheetName = Worksheets(3).Name
RecPipsColInd = 2
'結果の格納シートの初期化
Worksheets(TwrSheetName).Cells.Clear
Worksheets(TwrSheetName).Cells(1, 1) = "f"
Worksheets(OptimalFSheetName).Cells.Clear
Worksheets(OptimalFSheetName).Cells(1, 1) = "トレード数"
Worksheets(OptimalFSheetName).Cells(1, 2) = "想定最大損失(pips)"
Worksheets(OptimalFSheetName).Cells(1, 3) = "最大最終資産倍率(倍)"
Worksheets(OptimalFSheetName).Cells(1, 4) = "オプティマルf"
Worksheets(OptimalFSheetName).Cells(1, 5) = "幾何平均"
Worksheets(OptimalFSheetName).Cells(1, 6) = "勝ちトレード数"
Worksheets(OptimalFSheetName).Cells(1, 7) = "負けトレード数"
Worksheets(OptimalFSheetName).Cells(1, 8) = "勝率(%)"
Worksheets(OptimalFSheetName).Cells(1, 9) = "平均勝ちトレード(pips)"
Worksheets(OptimalFSheetName).Cells(1, 10) = "平均負けトレード(pips)"
Worksheets(OptimalFSheetName).Cells(1, 11) = "ペイオフレシオ"
'初期状態の準備
TwrSheetColInd = 1
LineIndicator = 2
EARangeStarts = 2
LastLineNumber = Worksheets(RecsSheetName).Range("B1").End(xlDown).Row
MaxTWR = -1
OptimalF = 0
MinPips = 100000
FVal = 0.001
FStepVal = 0.001
FLastVal = 0.999
WinTradeThresholdInPips = 0.001
WinTradeCnt = 0
LossTradeCnt = 0
WinRate = 0
AvgWinInPips = 0
AvgLossInPips = 0
TotalWinInPips = 0
TotalLossInPips = 0
PayoffRatio = 0
MsgBox "fの初期値::" & FVal & " fの変化値::" & FStepVal & " fの最大値::" & FLastVal & " にて計算処理を開始"
'処理本体
For LineIndicator = 2 To LastLineNumber Step 1
'最大損失を押さえる
If (MinPips > Worksheets(RecsSheetName).Cells(LineIndicator, RecPipsColInd)) Then
MinPips = Worksheets(RecsSheetName).Cells(LineIndicator, RecPipsColInd)
End If
'統計情報
If Worksheets(RecsSheetName).Cells(LineIndicator, RecPipsColInd) > WinTradeThresholdInPips Then
WinTradeCnt = WinTradeCnt + 1
TotalWinInPips = TotalWinInPips + Worksheets(RecsSheetName).Cells(LineIndicator, RecPipsColInd)
Else
LossTradeCnt = LossTradeCnt + 1
TotalLossInPips = TotalLossInPips + Worksheets(RecsSheetName).Cells(LineIndicator, RecPipsColInd)
End If
Next LineIndicator
'Max TWRを総当たりで計算し、OptimalFを導出する
EARangeEnds = LastLineNumber
NumOfTrades = LastLineNumber - 1
TwrSheetColInd = TwrSheetColInd + 1
TwrSheetRowInd = 1
'シートの見出しを設定する
Worksheets(TwrSheetName).Cells(TwrSheetRowInd, TwrSheetColInd) = "TWRs"
TwrSheetRowInd = TwrSheetRowInd + 1
'掛け率を変化させTWRの算出を行う
For FVal = 0.001 To FLastVal Step FStepVal
TWRVal = 1
For IndiRangeProcess = EARangeStarts To EARangeEnds Step 1
HPRVal = CalcHPR(Worksheets(RecsSheetName).Cells(IndiRangeProcess, RecPipsColInd), MinPips, FVal)
TWRVal = TWRVal * HPRVal
Next IndiRangeProcess
'1つのf値について、TWRの算出が完了した (データの記録とオプティマルfを保存する)
Worksheets(TwrSheetName).Cells(TwrSheetRowInd, 1) = FVal
Worksheets(TwrSheetName).Cells(TwrSheetRowInd, TwrSheetColInd) = TWRVal
TwrSheetRowInd = TwrSheetRowInd + 1
If MaxTWR < TWRVal Then
MaxTWR = TWRVal
OptimalF = FVal
End If
Next FVal
'統計情報の整備
If WinTradeCnt <> 0 Then
AvgWinInPips = TotalWinInPips / WinTradeCnt
Else
AvgWinInPips = 0
End If
If LossTradeCnt <> 0 Then
AvgLossInPips = TotalLossInPips / LossTradeCnt
ProfitFactor = TotalWinInPips / TotalLossInPips * -1
Else
AvgLossInPips = 0
ProfitFactor = 999
End If
WinRate = WinTradeCnt / (WinTradeCnt + LossTradeCnt) * 100
If AvgLossInPips <> 0 Then
PayoffRatio = AvgWinInPips / AvgLossInPips
Else
PayoffRatio = 999
End If
'0除算対策
If OptimalF < 0.01 Then
OptimalF = 0.001
End If
'幾何平均等の計算
GeoMeaVal = Exp((1 / NumOfTrades) * Log(MaxTWR))
'算出済みのオプティマルfを記録する
Worksheets(TwrSheetName).Cells(TwrSheetRowInd, 1) = "MaxTWR"
Worksheets(TwrSheetName).Cells(TwrSheetRowInd, TwrSheetColInd) = MaxTWR
Worksheets(TwrSheetName).Cells(TwrSheetRowInd + 1, 1) = "オプティマルf"
Worksheets(TwrSheetName).Cells(TwrSheetRowInd + 1, TwrSheetColInd) = OptimalF
Worksheets(OptimalFSheetName).Cells(TwrSheetColInd, 1) = NumOfTrades
Worksheets(OptimalFSheetName).Cells(TwrSheetColInd, 2) = Round(MinPips, 1)
Worksheets(OptimalFSheetName).Cells(TwrSheetColInd, 3) = Round(MaxTWR, 3)
Worksheets(OptimalFSheetName).Cells(TwrSheetColInd, 4) = Round(OptimalF, 5)
Worksheets(OptimalFSheetName).Cells(TwrSheetColInd, 5) = Round(GeoMeaVal, 4)
Worksheets(OptimalFSheetName).Cells(TwrSheetColInd, 6) = WinTradeCnt
Worksheets(OptimalFSheetName).Cells(TwrSheetColInd, 7) = LossTradeCnt
Worksheets(OptimalFSheetName).Cells(TwrSheetColInd, 8) = Round(WinRate, 2)
Worksheets(OptimalFSheetName).Cells(TwrSheetColInd, 9) = Round(AvgWinInPips, 1)
Worksheets(OptimalFSheetName).Cells(TwrSheetColInd, 10) = Round(AvgLossInPips, 1)
Worksheets(OptimalFSheetName).Cells(TwrSheetColInd, 11) = Abs(Round(PayoffRatio, 3))
MsgBox "Task Completed!!"
Worksheets(OptimalFSheetName).Activate
End Sub
Function CalcHPR(ByVal pips As Double, ByVal MinPips As Double, ByVal f As Double) As Double
CalcHPR = 1 + (f * (-1 * pips / MinPips))
End Function
< 使用 アプリ:libreoffice 6.2、使用 OS:Windows10 >
よく読んでください。 フルコンパチブルではなさそうです。 http://pineplanter.moo.jp/non-it-salaryman/2017/03/02/vba-on-libreoffice/ https://ts0818.hatenablog.com/entry/2017/12/24/225311 (seiya) 2019/03/11(月) 22:24
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.