[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『初心者です。エラー』(あいり)
どうもはじめまして。
マクロ全くの初心者なのですが下記ネットのコピペなのですが
完全コピペですらエラーになってしまいます。
どなたか心優しい方原因を教えていただけないでしょうか。
昨日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.