Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
ai
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
ai
Commits
8e583ece
Commit
8e583ece
authored
May 09, 2022
by
Ahmad Nemati
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
git pu
parent
49655c01
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
208 additions
and
327 deletions
+208
-327
ai.js
ai.js
+208
-327
No files found.
ai.js
View file @
8e583ece
...
...
@@ -12,36 +12,33 @@ let timeFrame = 0
let
avgRunup
=
0
let
avgDrawdown
=
0
let
avgProfit
=
0
let
startt
=
30
let
startt
=
30
//
function
run
(
data
,
config
,
risk
,
pfTrade
,
riskFreeLevel
,
detail
,
loss
,
durs
,
maxTradeDays
,
targetPercentage
,
candlesData
,
fft
,
ProfitZeroProfit
,
fftRunup
,
ProfitZeroProfitRunup
,
ProfitZeroDrawDownProfit
,
ProfitZeroDrawDown
,
ddPlusRunCount
,
RunupDrawDownZeroRunupDrawDown
,
ProfitZeroRunupProfit
,
ProfitZeroRunupDrawDown
,
RunUpDrawDownZeroProfit
,
RunUpDrawDownZeroDrawDownProfit
,
RunUpDrawDownZeroDrawdown
,
RunUpDrawDownZeroRunupProfit
,
RunupZeroRunupDrawDown
,
RunupZeroProfit
,
RunupZeroProfitDrawDown
,
RunupZeroDrawDown
,
RunupZeroProfitRunup
,
DrawDownZeroDrawDown
,
DrawDownnZeroProfit
,
DrawDownZeroProfitDrawDown
,
DrawDownZeroProfitRunup
,
DrawDownZeroRunupDrawDown
,
ProfitDrawDownZeroDrawDown
,
ProfitDrawDownZeroProfit
,
ProfitDrawDownZeroProfitDrawDown
,
ProfitDrawDownZeroProfitRunup
,
ProfitDrawDownZeroRunupDrawDown
,
ProfitRunupZeroDrawDown
,
ProfitRunupZeroProfit
,
ProfitRunupZeroProfitDrawDown
,
ProfitRunupZeroProfitRunup
,
ProfitRunupZeroRunupDrawDown
,
usage
)
{
let
data2
=
[]
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
let
ft
=
data
[
i
].
openDate
.
split
(
'
-
'
)
let
y
=
parseFloat
(
ft
[
0
])
let
m
=
parseFloat
(
ft
[
1
])
if
(
y
<
2017
)
continue
if
(
y
>
2017
)
{
data2
.
push
(
data
[
i
])
continue
}
if
(
y
===
2017
)
{
if
(
m
<
9
)
continue
else
data2
.
push
(
data
[
i
])
}
}
data
=
data2
function
run
(
data
,
config
,
risk
,
pfTrade
,
riskFreeLevel
,
detail
,
loss
,
durs
,
maxTradeDays
,
targetPercentage
,
candlesData
,
fft
,
ProfitZeroProfit
,
fftRunup
,
ProfitZeroProfitRunup
,
ProfitZeroDrawDownProfit
,
ProfitZeroDrawDown
,
ddPlusRunCount
,
RunupDrawDownZeroRunupDrawDown
,
ProfitZeroRunupProfit
,
ProfitZeroRunupDrawDown
,
RunUpDrawDownZeroProfit
,
RunUpDrawDownZeroDrawDownProfit
,
RunUpDrawDownZeroDrawdown
,
RunUpDrawDownZeroRunupProfit
,
RunupZeroRunupDrawDown
,
RunupZeroProfit
,
RunupZeroProfitDrawDown
,
RunupZeroDrawDown
,
RunupZeroProfitRunup
,
DrawDownZeroDrawDown
,
DrawDownnZeroProfit
,
DrawDownZeroProfitDrawDown
,
DrawDownZeroProfitRunup
,
DrawDownZeroRunupDrawDown
,
ProfitDrawDownZeroDrawDown
,
ProfitDrawDownZeroProfit
,
ProfitDrawDownZeroProfitDrawDown
,
ProfitDrawDownZeroProfitRunup
,
ProfitDrawDownZeroRunupDrawDown
,
ProfitRunupZeroDrawDown
,
ProfitRunupZeroProfit
,
ProfitRunupZeroProfitDrawDown
,
ProfitRunupZeroProfitRunup
,
ProfitRunupZeroRunupDrawDown
,
usage
)
{
let
data2
=
[]
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
let
ft
=
data
[
i
].
openDate
.
split
(
'
-
'
)
let
y
=
parseFloat
(
ft
[
0
])
let
m
=
parseFloat
(
ft
[
1
])
if
(
y
<
2017
)
continue
if
(
y
>
2017
)
{
data2
.
push
(
data
[
i
])
continue
}
if
(
y
===
2017
)
{
if
(
m
<
9
)
continue
else
data2
.
push
(
data
[
i
])
}
}
data
=
data2
let
type
=
config
.
type
+
'
param:
'
+
config
.
param
+
'
base:
'
+
config
.
base
+
'
target:
'
+
config
.
target
+
'
targetPercentage:
'
+
targetPercentage
.
enable
...
...
@@ -61,117 +58,63 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
type
=
type
+
'
'
+
usage
+
'
'
+
ddPlusRunCount
}
else
if
(
usage
===
'
RunupDrawDownZeroRunupDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
RunupDrawDownZeroRunupDrawDown
}
else
if
(
usage
===
'
ProfitZeroRunupProfit
'
)
{
}
else
if
(
usage
===
'
ProfitZeroRunupProfit
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
ProfitZeroRunupProfit
}
else
if
(
usage
===
'
ProfitZeroRunupDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitZeroRunupDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
ProfitZeroRunupDrawDown
}
else
if
(
usage
===
'
RunUpDrawDownZeroProfit
'
)
{
}
else
if
(
usage
===
'
RunUpDrawDownZeroProfit
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
RunUpDrawDownZeroProfit
}
else
if
(
usage
===
'
RunUpDrawDownZeroDrawDownProfit
'
)
{
}
else
if
(
usage
===
'
RunUpDrawDownZeroDrawDownProfit
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
RunUpDrawDownZeroDrawDownProfit
}
else
if
(
usage
===
'
RunUpDrawDownZeroDrawdown
'
)
{
}
else
if
(
usage
===
'
RunUpDrawDownZeroDrawdown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
RunUpDrawDownZeroDrawdown
}
else
if
(
usage
===
'
RunUpDrawDownZeroRunupProfit
'
)
{
}
else
if
(
usage
===
'
RunUpDrawDownZeroRunupProfit
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
RunUpDrawDownZeroRunupProfit
}
else
if
(
usage
===
'
RunupZeroRunupDrawDown
'
)
{
}
else
if
(
usage
===
'
RunupZeroRunupDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
RunupZeroRunupDrawDown
}
else
if
(
usage
===
'
RunupZeroProfit
'
)
{
}
else
if
(
usage
===
'
RunupZeroProfit
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
RunupZeroProfit
}
else
if
(
usage
===
'
RunupZeroProfitDrawDown
'
)
{
}
else
if
(
usage
===
'
RunupZeroProfitDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
RunupZeroProfitDrawDown
}
else
if
(
usage
===
'
RunupZeroDrawDown
'
)
{
}
else
if
(
usage
===
'
RunupZeroDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
RunupZeroDrawDown
}
else
if
(
usage
===
'
RunupZeroProfitRunup
'
)
{
}
else
if
(
usage
===
'
RunupZeroProfitRunup
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
RunupZeroProfitRunup
}
else
if
(
usage
===
'
RunupZeroProfitRunup
'
)
{
}
else
if
(
usage
===
'
RunupZeroProfitRunup
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
RunupZeroProfitRunup
}
else
if
(
usage
===
'
DrawDownZeroDrawDown
'
)
{
}
else
if
(
usage
===
'
DrawDownZeroDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
DrawDownZeroDrawDown
}
else
if
(
usage
===
'
DrawDownnZeroProfit
'
)
{
}
else
if
(
usage
===
'
DrawDownnZeroProfit
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
DrawDownnZeroProfit
}
else
if
(
usage
===
'
DrawDownZeroProfitDrawDown
'
)
{
}
else
if
(
usage
===
'
DrawDownZeroProfitDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
DrawDownZeroProfitDrawDown
}
else
if
(
usage
===
'
DrawDownZeroProfitRunup
'
)
{
}
else
if
(
usage
===
'
DrawDownZeroProfitRunup
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
DrawDownZeroProfitRunup
}
else
if
(
usage
===
'
DrawDownZeroRunupDrawDown
'
)
{
}
else
if
(
usage
===
'
DrawDownZeroRunupDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
DrawDownZeroRunupDrawDown
}
else
if
(
usage
===
'
ProfitDrawDownZeroDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitDrawDownZeroDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
ProfitDrawDownZeroDrawDown
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfit
'
)
{
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfit
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
ProfitDrawDownZeroProfit
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfitDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfitDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
ProfitDrawDownZeroProfitDrawDown
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfitRunup
'
)
{
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfitRunup
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
ProfitDrawDownZeroProfitRunup
}
else
if
(
usage
===
'
ProfitDrawDownZeroRunupDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitDrawDownZeroRunupDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
ProfitDrawDownZeroRunupDrawDown
}
else
if
(
usage
===
'
ProfitRunupZeroDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitRunupZeroDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
ProfitRunupZeroDrawDown
}
else
if
(
usage
===
'
ProfitRunupZeroProfit
'
)
{
}
else
if
(
usage
===
'
ProfitRunupZeroProfit
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
ProfitRunupZeroProfit
}
else
if
(
usage
===
'
ProfitRunupZeroProfitDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitRunupZeroProfitDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
ProfitRunupZeroProfitDrawDown
}
else
if
(
usage
===
'
ProfitRunupZeroProfitRunup
'
)
{
}
else
if
(
usage
===
'
ProfitRunupZeroProfitRunup
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
ProfitRunupZeroProfitRunup
}
else
if
(
usage
===
'
ProfitRunupZeroRunupDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitRunupZeroRunupDrawDown
'
)
{
type
=
type
+
'
'
+
usage
+
'
'
+
ProfitRunupZeroRunupDrawDown
}
let
saveData
=
[]
candles
=
candlesData
timeFrame
=
candles
[
1
].
t
-
candles
[
0
].
t
...
...
@@ -186,22 +129,22 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
let
maxDays
=
0
let
startDays
=
0
let
allTotal
=
0
let
targetDone
=
0
let
targetDonePer
=
0
let
lossDone
=
0
let
allDone
=
0
let
allDonePer
=
0
let
allLongDone
=
0
let
allLongDonePer
=
0
let
lossLongDone
=
0
let
lossLongDonePer
=
0
let
allShortDone
=
0
let
allShortDonePer
=
0
let
lossShortDone
=
0
let
lossShortDonePer
=
0
let
lossDonePer
=
0
let
lossPlusDone
=
0
let
lossPlusDonePer
=
0
let
targetDone
=
0
let
targetDonePer
=
0
let
lossDone
=
0
let
allDone
=
0
let
allDonePer
=
0
let
allLongDone
=
0
let
allLongDonePer
=
0
let
lossLongDone
=
0
let
lossLongDonePer
=
0
let
allShortDone
=
0
let
allShortDonePer
=
0
let
lossShortDone
=
0
let
lossShortDonePer
=
0
let
lossDonePer
=
0
let
lossPlusDone
=
0
let
lossPlusDonePer
=
0
let
listDays
=
[]
let
maxReserve
=
0
let
maxMeta
=
0
...
...
@@ -213,7 +156,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
let
realProfit
=
0
let
dateString
=
''
let
runupString
=
''
let
profitLossString
=
''
let
profitLossString
=
''
let
sideString
=
''
// console.log(data)
...
...
@@ -237,9 +180,9 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
let
RunUpDrawDownAllLossProfit
=
0
let
drawDownPlusRunUpCount
=
0
let
drawDownPlusRunUpPercent
=
0
let
VarProfitZeroRunupProfit
=
0
let
VarDrawDownZeroProfit
=
0
let
VarProfitZeroRunupDrawDown
=
0
let
VarProfitZeroRunupProfit
=
0
let
VarDrawDownZeroProfit
=
0
let
VarProfitZeroRunupDrawDown
=
0
let
countDropRunup
=
0
let
ProfitZeroDrawDownPercent
=
0
...
...
@@ -249,37 +192,32 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
let
diffDrawdownProfitAll
=
0
let
RunupDrawDownDiffDrawdownProfitAll
=
0
let
VarRunupZeroDrawDown
=
0
let
VarRunupZeroProfit
=
0
let
VarRunupZeroProfitDrawDown
=
0
let
VarRunupZeroProfitRunup
=
0
let
VarRunupZeroRunupDrawDown
=
0
let
VarRunupZeroDrawDown
=
0
let
VarRunupZeroProfit
=
0
let
VarRunupZeroProfitDrawDown
=
0
let
VarRunupZeroProfitRunup
=
0
let
VarRunupZeroRunupDrawDown
=
0
let
VarDrawDownZeroDrawDown
=
0
let
VarDrawDownnZeroProfit
=
0
let
VarDrawDownZeroProfitDrawDown
=
0
let
VarDrawDownZeroProfitRunup
=
0
let
VarDrawDownZeroRunupDrawDown
=
0
let
VarDrawDownZeroDrawDown
=
0
let
VarDrawDownnZeroProfit
=
0
let
VarDrawDownZeroProfitDrawDown
=
0
let
VarDrawDownZeroProfitRunup
=
0
let
VarDrawDownZeroRunupDrawDown
=
0
let
VarProfitDrawDownZeroDrawDown
=
0
let
VarProfitDrawDownZeroProfit
=
0
let
VarProfitDrawDownZeroProfitDrawDown
=
0
let
VarProfitDrawDownZeroProfitRunup
=
0
let
VarProfitDrawDownZeroRunupDrawDown
=
0
let
VarProfitDrawDownZeroDrawDown
=
0
let
VarProfitDrawDownZeroProfit
=
0
let
VarProfitDrawDownZeroProfitDrawDown
=
0
let
VarProfitDrawDownZeroProfitRunup
=
0
let
VarProfitDrawDownZeroRunupDrawDown
=
0
let
VarProfitRunupZeroDrawDown
=
0
let
VarProfitRunupZeroProfit
=
0
let
VarProfitRunupZeroProfitDrawDown
=
0
let
VarProfitRunupZeroProfitRunup
=
0
let
VarProfitRunupZeroRunupDrawDown
=
0
let
VarProfitRunupZeroDrawDown
=
0
let
VarProfitRunupZeroProfit
=
0
let
VarProfitRunupZeroProfitDrawDown
=
0
let
VarProfitRunupZeroProfitRunup
=
0
let
VarProfitRunupZeroRunupDrawDown
=
0
let
dur
...
...
@@ -311,7 +249,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
for
(
let
i
=
0
;
i
<
data
.
length
;
i
++
)
{
if
(
allDonePer
<
-
70
)
if
(
allDonePer
<
-
70
)
return
null
if
(
maxDays
>
maxTradeDays
)
return
null
...
...
@@ -357,178 +295,132 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
ProfitZeroRunupProfit
'
)
{
}
else
if
(
usage
===
'
ProfitZeroRunupProfit
'
)
{
if
(
VarProfitZeroRunupProfit
>
ProfitZeroRunupProfit
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
ProfitZeroRunupDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitZeroRunupDrawDown
'
)
{
if
(
VarProfitZeroRunupDrawDown
>
ProfitZeroRunupDrawDown
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
RunUpDrawDownZeroProfit
'
)
{
}
else
if
(
usage
===
'
RunUpDrawDownZeroProfit
'
)
{
if
(
RunUpDrawDownAllLossProfit
>
RunUpDrawDownZeroProfit
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
RunUpDrawDownZeroDrawDownProfit
'
)
{
}
else
if
(
usage
===
'
RunUpDrawDownZeroDrawDownProfit
'
)
{
if
(
RunupDrawDownDiffDrawdownProfitAll
>
RunUpDrawDownZeroDrawDownProfit
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
RunUpDrawDownZeroDrawdown
'
)
{
}
else
if
(
usage
===
'
RunUpDrawDownZeroDrawdown
'
)
{
if
(
runUpDrawDownZeroDrawDownPercent
>
RunUpDrawDownZeroDrawdown
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
RunUpDrawDownZeroRunupProfit
'
)
{
}
else
if
(
usage
===
'
RunUpDrawDownZeroRunupProfit
'
)
{
if
(
VarDrawDownZeroProfit
>
RunUpDrawDownZeroRunupProfit
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
RunupZeroRunupDrawDown
'
)
{
}
else
if
(
usage
===
'
RunupZeroRunupDrawDown
'
)
{
if
(
VarRunupZeroRunupDrawDown
>
RunupZeroRunupDrawDown
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
RunupZeroProfit
'
)
{
}
else
if
(
usage
===
'
RunupZeroProfit
'
)
{
if
(
VarRunupZeroProfit
>
RunupZeroProfit
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
RunupZeroProfitDrawDown
'
)
{
}
else
if
(
usage
===
'
RunupZeroProfitDrawDown
'
)
{
if
(
VarRunupZeroProfitDrawDown
>
RunupZeroProfitDrawDown
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
RunupZeroDrawDown
'
)
{
}
else
if
(
usage
===
'
RunupZeroDrawDown
'
)
{
if
(
VarRunupZeroDrawDown
>
RunupZeroDrawDown
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
RunupZeroProfitRunup
'
)
{
}
else
if
(
usage
===
'
RunupZeroProfitRunup
'
)
{
if
(
VarRunupZeroProfitRunup
>
RunupZeroProfitRunup
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
DrawDownZeroDrawDown
'
)
{
}
else
if
(
usage
===
'
DrawDownZeroDrawDown
'
)
{
if
(
VarDrawDownZeroDrawDown
>
DrawDownZeroDrawDown
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
DrawDownnZeroProfit
'
)
{
}
else
if
(
usage
===
'
DrawDownnZeroProfit
'
)
{
if
(
VarDrawDownnZeroProfit
>
DrawDownnZeroProfit
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
DrawDownZeroProfitDrawDown
'
)
{
}
else
if
(
usage
===
'
DrawDownZeroProfitDrawDown
'
)
{
if
(
VarDrawDownZeroProfitDrawDown
>
DrawDownZeroProfitDrawDown
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
DrawDownZeroProfitRunup
'
)
{
}
else
if
(
usage
===
'
DrawDownZeroProfitRunup
'
)
{
if
(
VarDrawDownZeroProfitRunup
>
DrawDownZeroProfitRunup
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
DrawDownZeroRunupDrawDown
'
)
{
}
else
if
(
usage
===
'
DrawDownZeroRunupDrawDown
'
)
{
if
(
VarDrawDownZeroRunupDrawDown
>
DrawDownZeroRunupDrawDown
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
ProfitDrawDownZeroDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitDrawDownZeroDrawDown
'
)
{
if
(
VarProfitDrawDownZeroDrawDown
>
ProfitDrawDownZeroDrawDown
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfit
'
)
{
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfit
'
)
{
if
(
VarProfitDrawDownZeroProfit
>
ProfitDrawDownZeroProfit
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfitDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfitDrawDown
'
)
{
if
(
VarProfitDrawDownZeroProfitDrawDown
>
ProfitDrawDownZeroProfitDrawDown
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfitRunup
'
)
{
}
else
if
(
usage
===
'
ProfitDrawDownZeroProfitRunup
'
)
{
if
(
VarProfitDrawDownZeroProfitRunup
>
ProfitDrawDownZeroProfitRunup
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
ProfitDrawDownZeroRunupDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitDrawDownZeroRunupDrawDown
'
)
{
if
(
VarProfitDrawDownZeroRunupDrawDown
>
ProfitDrawDownZeroRunupDrawDown
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
ProfitRunupZeroDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitRunupZeroDrawDown
'
)
{
if
(
VarProfitRunupZeroDrawDown
>
ProfitRunupZeroDrawDown
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
ProfitRunupZeroProfit
'
)
{
}
else
if
(
usage
===
'
ProfitRunupZeroProfit
'
)
{
if
(
VarProfitRunupZeroProfit
>
ProfitRunupZeroProfit
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
ProfitRunupZeroProfitDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitRunupZeroProfitDrawDown
'
)
{
if
(
VarProfitRunupZeroProfitDrawDown
>
ProfitRunupZeroProfitDrawDown
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
ProfitRunupZeroProfitRunup
'
)
{
}
else
if
(
usage
===
'
ProfitRunupZeroProfitRunup
'
)
{
if
(
VarProfitRunupZeroProfitRunup
>
ProfitRunupZeroProfitRunup
)
runBefore
=
false
else
runBefore
=
true
}
else
if
(
usage
===
'
ProfitRunupZeroRunupDrawDown
'
)
{
}
else
if
(
usage
===
'
ProfitRunupZeroRunupDrawDown
'
)
{
if
(
VarProfitRunupZeroRunupDrawDown
>
ProfitRunupZeroRunupDrawDown
)
runBefore
=
false
else
...
...
@@ -536,48 +428,25 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
}
//
}
if
((
data
[
i
].
profit
+
data
[
i
].
runUp
)
<
0
)
{
VarProfitRunupZeroRunupDrawDown
=
VarProfitRunupZeroRunupDrawDown
+
(
data
[
i
].
runUp
+
data
[
i
].
drawDown
)
VarProfitRunupZeroProfit
=
VarProfitRunupZeroProfit
+
data
[
i
].
profit
VarProfitRunupZeroProfitDrawDown
=
VarProfitRunupZeroProfitDrawDown
+
(
data
[
i
].
drawDown
-
data
[
i
].
profit
)
VarProfitRunupZeroDrawDown
=
VarProfitRunupZeroDrawDown
+
data
[
i
].
drawDown
VarProfitRunupZeroProfitRunup
=
VarProfitRunupZeroProfitRunup
+
(
data
[
i
].
runUp
+
data
[
i
].
profit
)
VarProfitRunupZeroProfitRunup
=
VarProfitRunupZeroProfitRunup
+
(
data
[
i
].
runUp
+
data
[
i
].
profit
)
}
else
{
VarProfitRunupZeroDrawDown
=
0
VarProfitRunupZeroProfit
=
0
VarProfitRunupZeroProfitDrawDown
=
0
VarProfitRunupZeroProfitRunup
=
0
VarProfitRunupZeroRunupDrawDown
=
0
VarProfitRunupZeroDrawDown
=
0
VarProfitRunupZeroProfit
=
0
VarProfitRunupZeroProfitDrawDown
=
0
VarProfitRunupZeroProfitRunup
=
0
VarProfitRunupZeroRunupDrawDown
=
0
}
if
((
data
[
i
].
profit
+
data
[
i
].
drawDown
)
<
0
)
{
...
...
@@ -585,14 +454,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
VarProfitDrawDownZeroProfit
=
VarProfitDrawDownZeroProfit
+
data
[
i
].
profit
VarProfitDrawDownZeroProfitDrawDown
=
VarProfitDrawDownZeroProfitDrawDown
+
(
data
[
i
].
drawDown
-
data
[
i
].
profit
)
VarProfitDrawDownZeroDrawDown
=
VarProfitDrawDownZeroDrawDown
+
data
[
i
].
drawDown
VarProfitDrawDownZeroProfitRunup
=
VarProfitDrawDownZeroProfitRunup
+
(
data
[
i
].
runUp
+
data
[
i
].
profit
)
VarProfitDrawDownZeroProfitRunup
=
VarProfitDrawDownZeroProfitRunup
+
(
data
[
i
].
runUp
+
data
[
i
].
profit
)
}
else
{
VarProfitDrawDownZeroDrawDown
=
0
VarProfitDrawDownZeroProfit
=
0
VarProfitDrawDownZeroProfitDrawDown
=
0
VarProfitDrawDownZeroProfitRunup
=
0
VarProfitDrawDownZeroRunupDrawDown
=
0
VarProfitDrawDownZeroDrawDown
=
0
VarProfitDrawDownZeroProfit
=
0
VarProfitDrawDownZeroProfitDrawDown
=
0
VarProfitDrawDownZeroProfitRunup
=
0
VarProfitDrawDownZeroRunupDrawDown
=
0
}
...
...
@@ -601,33 +470,33 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
VarDrawDownnZeroProfit
=
VarDrawDownnZeroProfit
+
data
[
i
].
profit
VarDrawDownZeroProfitDrawDown
=
VarDrawDownZeroProfitDrawDown
+
(
data
[
i
].
drawDown
-
data
[
i
].
profit
)
VarDrawDownZeroDrawDown
=
VarDrawDownZeroDrawDown
+
data
[
i
].
drawDown
VarDrawDownZeroProfitRunup
=
VarDrawDownZeroProfitRunup
+
(
data
[
i
].
runUp
+
data
[
i
].
profit
)
VarDrawDownZeroProfitRunup
=
VarDrawDownZeroProfitRunup
+
(
data
[
i
].
runUp
+
data
[
i
].
profit
)
}
else
{
VarDrawDownZeroDrawDown
=
0
VarDrawDownnZeroProfit
=
0
VarDrawDownZeroProfitDrawDown
=
0
VarDrawDownZeroProfitRunup
=
0
VarDrawDownZeroRunupDrawDown
=
0
VarDrawDownZeroDrawDown
=
0
VarDrawDownnZeroProfit
=
0
VarDrawDownZeroProfitDrawDown
=
0
VarDrawDownZeroProfitRunup
=
0
VarDrawDownZeroRunupDrawDown
=
0
//zero
}
//console.log(VarRunupZeroProfit)
// console.log(VarRunupZeroProfitRunup,RunupZeroProfitRunup)
// console.log(VarRunupZeroProfitRunup,RunupZeroProfitRunup)
if
(
data
[
i
].
runUp
<
avgRunup
)
{
VarRunupZeroRunupDrawDown
=
VarRunupZeroRunupDrawDown
+
(
data
[
i
].
runUp
+
data
[
i
].
drawDown
)
VarRunupZeroProfit
=
VarRunupZeroProfit
+
data
[
i
].
profit
VarRunupZeroProfitDrawDown
=
VarRunupZeroProfitDrawDown
+
(
data
[
i
].
drawDown
-
data
[
i
].
profit
)
VarRunupZeroDrawDown
=
VarRunupZeroDrawDown
+
data
[
i
].
drawDown
VarRunupZeroProfitRunup
=
VarRunupZeroProfitRunup
+
(
data
[
i
].
runUp
+
data
[
i
].
profit
)
VarRunupZeroProfitRunup
=
VarRunupZeroProfitRunup
+
(
data
[
i
].
runUp
+
data
[
i
].
profit
)
}
else
{
VarRunupZeroRunupDrawDown
=
0
VarRunupZeroProfit
=
0
VarRunupZeroProfitDrawDown
=
0
VarRunupZeroDrawDown
=
0
VarRunupZeroProfitRunup
=
0
VarRunupZeroRunupDrawDown
=
0
VarRunupZeroProfit
=
0
VarRunupZeroProfitDrawDown
=
0
VarRunupZeroDrawDown
=
0
VarRunupZeroProfitRunup
=
0
//zero
}
...
...
@@ -637,14 +506,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
RunUpDrawDownAllLossProfit
=
RunUpDrawDownAllLossProfit
+
data
[
i
].
profit
RunupDrawDownDiffDrawdownProfitAll
=
RunupDrawDownDiffDrawdownProfitAll
+
(
data
[
i
].
drawDown
-
data
[
i
].
profit
)
runUpDrawDownZeroDrawDownPercent
=
runUpDrawDownZeroDrawDownPercent
+
data
[
i
].
drawDown
VarDrawDownZeroProfit
=
VarDrawDownZeroProfit
+
(
data
[
i
].
runUp
+
data
[
i
].
profit
)
VarDrawDownZeroProfit
=
VarDrawDownZeroProfit
+
(
data
[
i
].
runUp
+
data
[
i
].
profit
)
}
else
{
drawDownPlusRunUpCount
=
0
drawDownPlusRunUpPercent
=
0
RunUpDrawDownAllLossProfit
=
0
RunupDrawDownDiffDrawdownProfitAll
=
0
runUpDrawDownZeroDrawDownPercent
=
0
VarDrawDownZeroProfit
=
0
RunUpDrawDownAllLossProfit
=
0
RunupDrawDownDiffDrawdownProfitAll
=
0
runUpDrawDownZeroDrawDownPercent
=
0
VarDrawDownZeroProfit
=
0
}
...
...
@@ -652,13 +521,13 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
allLossProfit
=
allLossProfit
+
data
[
i
].
profit
diffDrawdownProfitAll
=
diffDrawdownProfitAll
+
(
data
[
i
].
drawDown
-
data
[
i
].
profit
)
ProfitZeroDrawDownPercent
=
ProfitZeroDrawDownPercent
+
data
[
i
].
drawDown
VarProfitZeroRunupProfit
=
VarProfitZeroRunupProfit
+
(
data
[
i
].
runUp
+
data
[
i
].
profit
)
VarProfitZeroRunupDrawDown
=
VarProfitZeroRunupDrawDown
+
(
data
[
i
].
runUp
+
data
[
i
].
drawDown
)
VarProfitZeroRunupProfit
=
VarProfitZeroRunupProfit
+
(
data
[
i
].
runUp
+
data
[
i
].
profit
)
VarProfitZeroRunupDrawDown
=
VarProfitZeroRunupDrawDown
+
(
data
[
i
].
runUp
+
data
[
i
].
drawDown
)
countDrop
++
}
else
{
allLossProfit
=
0
VarProfitZeroRunupProfit
=
0
VarProfitZeroRunupDrawDown
=
0
VarProfitZeroRunupProfit
=
0
VarProfitZeroRunupDrawDown
=
0
diffDrawdownProfitAll
=
0
countDrop
=
0
ProfitZeroDrawDownPercent
=
0
...
...
@@ -696,8 +565,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
if
(
data
[
i
].
side
===
'
LONG
'
)
{
allLongDone
++
}
else
{
}
else
{
allShortDone
++
}
if
(
step
===
0
)
{
...
...
@@ -706,7 +574,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
sideString
=
sideString
+
data
[
i
].
side
+
'
_
'
}
canCreateRunupPercent
=
false
// runBefore = true
// runBefore = true
let
obj
if
(
step
===
0
)
{
// unixStart = data[i].unixOpen
...
...
@@ -772,8 +640,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
obj
=
d
obj
.
signal
=
data
[
i
]
obj
.
avgRunup
=
avgRunup
obj
.
avgDrawdown
=
avgDrawdown
obj
.
avgRunup
=
avgRunup
obj
.
avgDrawdown
=
avgDrawdown
// obj.signal.openTimeStamp = data[i].unixOpen
...
...
@@ -859,14 +727,14 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
lastMoney
=
0
allTotal
++
targetDone
++
allDonePer
=
allDonePer
+
config
.
target
targetDonePer
=
targetDonePer
+
config
.
target
allDonePer
=
allDonePer
+
config
.
target
targetDonePer
=
targetDonePer
+
config
.
target
if
(
data
[
i
].
side
===
'
LONG
'
)
allLongDonePer
=
allLongDonePer
+
config
.
target
allLongDonePer
=
allLongDonePer
+
config
.
target
else
allShortDonePer
=
allShortDonePer
+
config
.
target
allShortDonePer
=
allShortDonePer
+
config
.
target
if
(
!
d
.
riskFree
)
total
++
...
...
@@ -875,36 +743,32 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
profitLossString
=
profitLossString
+
data
[
i
].
profit
+
'
_
'
lossDone
++
lossDonePer
=
lossDonePer
+
data
[
i
].
profit
-
0.1
allDonePer
=
allDonePer
+
data
[
i
].
profit
-
0.1
lossDonePer
=
lossDonePer
+
data
[
i
].
profit
-
0.1
allDonePer
=
allDonePer
+
data
[
i
].
profit
-
0.1
if
(
data
[
i
].
side
===
'
LONG
'
)
{
allLongDonePer
=
allLongDonePer
+
data
[
i
].
profit
-
0.1
if
(
data
[
i
].
profit
<=
0.1
)
{
if
(
data
[
i
].
profit
<=
0.1
)
{
lossLongDone
++
lossLongDonePer
=
lossLongDonePer
+
(
data
[
i
].
profit
+
-
0.1
)
lossLongDonePer
=
lossLongDonePer
+
(
data
[
i
].
profit
+
-
0.1
)
}
}
else
{
}
else
{
allShortDonePer
=
allShortDonePer
+
data
[
i
].
profit
-
0.1
if
(
data
[
i
].
profit
<=
0.1
)
{
if
(
data
[
i
].
profit
<=
0.1
)
{
lossShortDone
++
lossShortDonePer
=
lossShortDonePer
+
(
data
[
i
].
profit
+
-
0.1
)
lossShortDonePer
=
lossShortDonePer
+
(
data
[
i
].
profit
+
-
0.1
)
}
}
if
(
data
[
i
].
profit
>
0.1
)
{
if
(
data
[
i
].
profit
>
0.1
)
{
lossPlusDone
++
lossPlusDonePer
=
lossPlusDonePer
+
(
data
[
i
].
profit
+
-
0.1
)
lossPlusDonePer
=
lossPlusDonePer
+
(
data
[
i
].
profit
+
-
0.1
)
}
// unixMid = data[i].unixClose
// step++
step
=
0
// step++
step
=
0
profit
=
profit
+
d
.
profit
lastMoney
=
d
.
lastMoney
lastCom
=
lastCom
+
d
.
com
...
...
@@ -1050,22 +914,22 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
type
:
type
,
total
:
total
,
allTotal
:
allTotal
,
allDone
:
allDone
,
allDonePer
:
allDonePer
,
allLongDone
:
allLongDone
,
allLongDonePer
:
allLongDonePer
,
allShortDone
:
allShortDone
,
allShortDonePer
:
allShortDonePer
,
targetDone
:
targetDone
,
targetDonePer
:
targetDonePer
,
lossDone
:
lossDone
,
lossDonePer
:
lossDonePer
,
lossPlusDone
:
lossPlusDone
,
lossPlusDonePer
:
lossPlusDonePer
,
lossLongDone
:
lossLongDone
,
lossLongDonePer
:
lossLongDonePer
,
lossShortDone
:
lossShortDone
,
lossShortDonePer
:
lossShortDonePer
,
allDone
:
allDone
,
allDonePer
:
allDonePer
,
allLongDone
:
allLongDone
,
allLongDonePer
:
allLongDonePer
,
allShortDone
:
allShortDone
,
allShortDonePer
:
allShortDonePer
,
targetDone
:
targetDone
,
targetDonePer
:
targetDonePer
,
lossDone
:
lossDone
,
lossDonePer
:
lossDonePer
,
lossPlusDone
:
lossPlusDone
,
lossPlusDonePer
:
lossPlusDonePer
,
lossLongDone
:
lossLongDone
,
lossLongDonePer
:
lossLongDonePer
,
lossShortDone
:
lossShortDone
,
lossShortDonePer
:
lossShortDonePer
,
avgLevel
:
maxLevel
/
total
,
maxLevel
:
maxLevel
,
dur
:
dur
,
...
...
@@ -1081,7 +945,7 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
dateString
:
dateString
,
runupString
:
runupString
,
sideString
:
sideString
,
profitLossString
:
profitLossString
,
profitLossString
:
profitLossString
,
firstMaxAllocatedMoney
:
firstMaxAllocatedMoney
,
maxAllocatedMoney
:
maxAllocatedMoney
,
avgAllocatedMoney
:
maxAllocatedMoney
/
total
,
...
...
@@ -1106,8 +970,8 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
}
if
(
opt
.
allDonePer
<
1
)
return
null
if
(
opt
.
allDonePer
<
1
)
return
null
// if (opt.allDone <60)
// return null
...
...
@@ -1123,9 +987,26 @@ function run(data, config, risk, pfTrade, riskFreeLevel, detail, loss, durs, max
}
delete
opt
.
allTotal
delete
opt
.
avgLevel
delete
opt
.
maxDays
delete
opt
.
avgDays
delete
opt
.
maxRuntime
delete
opt
.
allLoss
delete
opt
.
totalFinal
delete
opt
.
totalPlus
delete
opt
.
firstMaxAllocatedMoney
delete
opt
.
maxAllocatedMoney
delete
opt
.
avgAllocatedMoney
delete
opt
.
avgReserve
delete
opt
.
percentage
delete
opt
.
allocatedReserve
delete
opt
.
minus
delete
opt
.
risk
delete
opt
.
levels
return
opt
return
opt
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment