-
-
Notifications
You must be signed in to change notification settings - Fork 328
166 lines (153 loc) 路 4.93 KB
/
optimize-tf.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
---
name: Optimize Timeframes
# yamllint disable-line rule:truthy
on:
push:
branches:
- 'optimize-tf'
jobs:
Compile:
runs-on: windows-latest
strategy:
matrix:
mode: [Lite, Advanced, Rider]
steps:
- uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Enables CLI mode
run: echo '#define __cli__' > src/include/common/mode.h
- name: Enables optimization mode
run: echo '#define __optimize__' >> src/include/common/mode.h
- name: Enables Advanced mode
if: matrix.mode == 'Advanced'
run: echo '#define __advanced__' >> src/include/common/mode.h
- name: Enables Rider mode
if: matrix.mode == 'Rider'
run: echo '#define __rider__' >> src/include/common/mode.h
- name: Compiles EA (MQL4)
uses: fx31337/mql-compile-action@master
with:
path: src\EA31337.mq4
verbose: true
- name: Compiles EA (MQL5)
uses: fx31337/mql-compile-action@master
with:
path: src\EA31337.mq5
verbose: true
- name: Moves file (MQL4)
run: mv -v src\*.ex4 "EA31337-${{ matrix.mode }}-${{ github.sha }}.ex4"
- name: Moves file (MQL5)
run: mv -v src\*.ex5 "EA31337-${{ matrix.mode }}-${{ github.sha }}.ex5"
- name: List compiled files
run: '(Get-ChildItem -Recurse -Path . -Include *.ex[45]).fullname'
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: EA31337-${{ matrix.mode }}
path: '*.ex?'
Process:
env:
SETS_DIR: sets/optimize/${{ matrix.mode }}/tf
outputs:
sets-list: ${{ steps.get-sets.outputs.sets }}
runs-on: ubuntu-latest
strategy:
matrix:
mode: [Lite, Advanced, Rider]
steps:
- uses: actions/checkout@v2
- name: Set output with list of sets
id: get-sets
run: |
import glob, json, os
os.chdir(os.getenv('SETS_DIR'))
files = glob.glob("*.set")
print("::set-output name=sets::{}".format(json.dumps(files)))
shell: python
- name: Display output
run: echo "${{ toJson(steps.get-sets.outputs.sets) }}"
- name: Upload sets
uses: actions/upload-artifact@v2
with:
name: sets-${{ matrix.mode }}
path: ${{ env.SETS_DIR }}
Optimize:
needs: [Compile, Process]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
mode: [Lite, Advanced, Rider]
months: [1-4, 5-8, 9-12]
setfile: ${{ fromJson(needs.Process.outputs.sets-list) }}
steps:
- uses: actions/download-artifact@v2
with:
name: EA31337-${{ matrix.mode }}
path: EA
- uses: actions/download-artifact@v2
with:
name: sets-${{ matrix.mode }}
path: sets
- name: Display SET file
run: cat sets/${{ matrix.setfile }}
- uses: ea31337/mql-tester-action@master
with:
BtDeposit: 100000
BtDest: ${{ github.workspace }}/_results
BtMonths: ${{ matrix.months }}
BtPair: EURUSD
BtTestModel: 1
BtYears: 2020
OptFormatBrief: true
OptFormatJson: true
OptOptimize: true
OptVerbose: true
SetFile: ${{ github.workspace }}/sets/${{ matrix.setfile }}
SetParams: ${{ steps.data.outputs.param }}
TestExpert: EA31337-${{ matrix.mode }}
TestLimitOpts: maxdrawdown_enable=1,maxdrawdown=1.3
TestPeriod: M1
TestReportName: Report-EA31337-${{ matrix.mode }}
- name: Upload result files
uses: actions/upload-artifact@v2
with:
name: results
path: ./_results/*.*
- name: Process results
run: |
pwd
ls
jq --version
jq . _results/*.json
jq -r '(."Result params"/";")[0]' _results/*.json
jq -r '((."Result params"/";")[0]/"=")[0]'
jq -r '(."Result params"/";")[0]' _results/*.json \
>> $GITHUB_ENV
jq -r '"pname="+((."Result params"/";")[0]/"=")[0]' \
_results/*.json >> $GITHUB_ENV
Results:
needs: Optimize
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false
# Otherwise, you will failed to push refs to dest repo.
fetch-depth: 0
- uses: actions/download-artifact@v2
with:
name: results
path: .results
- name: Parse results
run: |
cat << EOF >> $GITHUB_ENV
RES_DD=$(jq -rs '.[0]|."Drawdown %"' .results/*.json)
RES_PF=$(jq -rs '.[0]|."Profit factor"' .results/*.json)
RES_TT=$(jq -rs '.[0]|."Total trades"' .results/*.json)
EOF
shell: bash -ex {0}
- name: Check differences
id: git-details
run: echo "::set-output name=changed::$(git diff | wc -l)"