From 25d9b89c2b095d369b3db1467484a9a042b70d96 Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 4 Apr 2019 00:00:16 +0100 Subject: [PATCH 01/66] Separates BT_TESTMODE and BT_TESTMODEL --- scripts/options.txt | 5 ++++- scripts/run_backtest.sh | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/options.txt b/scripts/options.txt index 885329d1..e0c16ac2 100644 --- a/scripts/options.txt +++ b/scripts/options.txt @@ -108,8 +108,11 @@ Supported options: Other supported variables (without options assigned): - BT_DAYS (uint/string) Specify days to test. Default: 1-31. +- BT_TESTMODE (uint) + This controls type of backtest data being downloaded. + Values: 0 (default) - Every tick, 1 - Control points, 2 - Open prices only - BT_TESTMODEL (uint) - This controls type of backtest data being downloaded and used. + This controls type of backtest data being tested. Values: 0 (default) - Every tick, 1 - Control points, 2 - Open prices only - OPT_NOERR (bool) Disables errexit flag to prevent exiting script on failure. diff --git a/scripts/run_backtest.sh b/scripts/run_backtest.sh index 6a1b6c36..fa45f067 100755 --- a/scripts/run_backtest.sh +++ b/scripts/run_backtest.sh @@ -717,7 +717,7 @@ if [ -n "$TEST_EXPERT" ]; then # Generate backtest files if not present. if [ -z "$(find "$TERMINAL_DIR" -name "${BT_SYMBOL}*_0.fxt" -print -quit)" ] || [ "${bt_data%.*}" != "$bt_key" ]; then env SERVER=$SERVER OPT_VERBOSE=$OPT_VERBOSE OPT_TRACE=$OPT_TRACE \ - $SHELL $SCR/get_bt_data.sh $BT_SYMBOL "$(join_by - ${BT_YEARS[@]:-2017})" ${BT_SRC:-DS} ${BT_PERIOD} ${BT_TESTMODEL} + $SHELL $SCR/get_bt_data.sh $BT_SYMBOL "$(join_by - ${BT_YEARS[@]:-2017})" ${BT_SRC:-DS} ${BT_PERIOD} ${BT_TESTMODE} if [ -n "$OPT_VERBOSE" ]; then cd "$TERMINAL_DIR" find . '(' -name "*.hst" -o -name "*.fxt" ')' -ls From 5aafb9e43bb11cc6f22ba761ef20f1a9a9f264f9 Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 4 Apr 2019 00:22:55 +0100 Subject: [PATCH 02/66] Assign BT_TESTMODE to correct SC2153 --- scripts/run_backtest.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/run_backtest.sh b/scripts/run_backtest.sh index fa45f067..37d15220 100755 --- a/scripts/run_backtest.sh +++ b/scripts/run_backtest.sh @@ -710,6 +710,7 @@ fi # Download backtest data if required. BT_PERIOD=$(ini_get ^TestPeriod) +BT_TESTMODE=${BT_TESTMODE} if [ -n "$TEST_EXPERT" ]; then echo "Checking backtest data (${BT_SRC:-DS})..." bt_key=$BT_SYMBOL-$(join_by - ${BT_YEARS[@]:-2017})-${BT_SRC:-DS} @@ -717,7 +718,7 @@ if [ -n "$TEST_EXPERT" ]; then # Generate backtest files if not present. if [ -z "$(find "$TERMINAL_DIR" -name "${BT_SYMBOL}*_0.fxt" -print -quit)" ] || [ "${bt_data%.*}" != "$bt_key" ]; then env SERVER=$SERVER OPT_VERBOSE=$OPT_VERBOSE OPT_TRACE=$OPT_TRACE \ - $SHELL $SCR/get_bt_data.sh $BT_SYMBOL "$(join_by - ${BT_YEARS[@]:-2017})" ${BT_SRC:-DS} ${BT_PERIOD} ${BT_TESTMODE} + "$SHELL" "$SCR"/get_bt_data.sh "$BT_SYMBOL" "$(join_by - "${BT_YEARS[@]:-2017}")" "${BT_SRC:-DS}" "${BT_PERIOD}" "${BT_TESTMODE}" if [ -n "$OPT_VERBOSE" ]; then cd "$TERMINAL_DIR" find . '(' -name "*.hst" -o -name "*.fxt" ')' -ls From 710bf2e16fa054e4959547583e2a920c23c010e4 Mon Sep 17 00:00:00 2001 From: kenorb Date: Sat, 6 Apr 2019 16:09:46 +0100 Subject: [PATCH 03/66] Adds function to disables optimization params --- scripts/.funcs.sets.inc.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/scripts/.funcs.sets.inc.sh b/scripts/.funcs.sets.inc.sh index 707e72f9..fde93b01 100644 --- a/scripts/.funcs.sets.inc.sh +++ b/scripts/.funcs.sets.inc.sh @@ -14,8 +14,14 @@ CWD="${CWD:-$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)}" # Usage: set_opt_params [param] [start] [end] (step) set_opt_params() { # Optimization settings (F-On, 1-Min, 2-Step, 3-Max). - input_set ^$1,F 1 # On. - input_set ^$1,1 $2 # Min. - input_set ^$1,2 ${4:-1} # Step. - input_set ^$1,3 $3 # Max. + input_set ^"$1",F 1 # On. + input_set ^"$1",1 "$2" # Min. + input_set ^"$1",2 "${4:-1}" # Step. + input_set ^"$1",3 "$3" # Max. +} + +# Disables optimization params +# Usage: dis_opt_params [param] +dis_opt_params() { + input_set ^"$1",F 0 # Off. } From 931d40401d32e157f05619f8a324969220961782 Mon Sep 17 00:00:00 2001 From: kenorb Date: Sat, 6 Apr 2019 16:15:20 +0100 Subject: [PATCH 04/66] Moves SET-related functions to .funcs.sets.inc.sh --- scripts/.funcs.cmds.inc.sh | 70 -------------------------------------- scripts/.funcs.sets.inc.sh | 70 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 70 deletions(-) diff --git a/scripts/.funcs.cmds.inc.sh b/scripts/.funcs.cmds.inc.sh index 6a7ca0a9..8f6aedc9 100644 --- a/scripts/.funcs.cmds.inc.sh +++ b/scripts/.funcs.cmds.inc.sh @@ -384,25 +384,6 @@ compile_and_test() { $CWD/run_backtest.sh -e "$@" } -# Experts SET file. Returns exported filename. -# Usage: export_set [EA/pattern] (dst/file) (...args) -export_set() { - local name=${1:-$TEST_EXPERT} - local dstfile=${2:-${name}.set} - local ea_path=$name - local ahk_path="$(winepath -w "$SCR"/ahk/export_set.ahk)" - [ ! -s "$name" ] && ea_path=$(ea_find "${name##/}") - [ ! -f "$EXPERTS_DIR/$ea_path" ] && { echo "Error: Cannot find EA: ${name}!" >&2; return; } - [[ "$ea_path" =~ 'mq' ]] && compile_ea "$name" >&2 - set_display >&2 - ini_set "^Expert" "$(basename ${ea_path/\//\\\\} .${ea_path##*.})" "$TERMINAL_INI" - WINEPATH="$(winepath -w "$TERMINAL_DIR");C:\\Apps\\AHK" \ - timeout 60 \ - wine AutoHotkey /ErrorStdOut "$ahk_path" "${dstfile}" ${@:3} - [ -n "$OPT_VERBOSE" ] && times >&2 - echo "${dstfile}" -} - # Copy ini settings from templates. # Usage: ini_copy ini_copy() { @@ -826,57 +807,6 @@ quick_run() { show_logs 40 } -# Set input value in the SET file. -# Usage: input_set [key] [value] [file] -input_set() { - local key="$1" - local value="$2" - local file="${3:-$TESTER_DIR/$EA_SETFILE}" - [ -s "$file" ] - read -ra vargs <<<$EX_ARGS - vargs+=("-u NONE") - if [ -n "$value" ]; then - echo "Setting '$key' to '$value' in $(basename "$file")" >&2 - ex +"%s/$key=\zs.*$/$value/" -scwq! ${vargs[@]} "$file" >&2 || exit 1 - else - echo "Value for '$key' is empty, ignoring." >&2 - fi -} - -# Get input value from the SET file. -# Usage: input_get [key] [file] -input_get() { - local key="$1" - local file="${2:-$TESTER_DIR/$EA_SETFILE}" - [ -s "$file" ] - value="$(grep -om1 "$key=[.0-9a-zA-Z-]\+" "$file" | cut -d= -f2-)" - echo $value -} - -# Copy input value from the SET file to MQL file. -# Usage: input_copy [key] [src_file] [dst_file] (dst_file2...) -input_copy() { - local key=$1 - local file_src=$2 - local retries=5 - read -ra files <<<${@:3} - read -ra vargs <<<$EX_ARGS - vargs+=("-u NONE") - [ -s "$file_src" ] - for file_dst in "${files[@]}"; do - [ -s "$file_dst" ] - value=$(input_get "^$key" "$file_src") - echo "Setting '$key' to '$value' in $(basename "$file_dst")" >&2 - retries=5 - while ! ex +"%s/\s${key}[^=]=[^0-9]\zs[^;]\+/${value}/" -scwq! ${vargs[@]} "$file_dst" >&2; do - sleep 1 - ((retries-=1)) - echo "Retrying ($retries left)..." >&2 - [ $retries -le 0 ] && break - done - done -} - # Set value in the INI file. # Usage: ini_set [key] [value] [file] ini_set() { diff --git a/scripts/.funcs.sets.inc.sh b/scripts/.funcs.sets.inc.sh index fde93b01..9191679c 100644 --- a/scripts/.funcs.sets.inc.sh +++ b/scripts/.funcs.sets.inc.sh @@ -25,3 +25,73 @@ set_opt_params() { dis_opt_params() { input_set ^"$1",F 0 # Off. } + +# Set input value in the SET file. +# Usage: input_set [key] [value] [file] +input_set() { + local key="$1" + local value="$2" + local file="${3:-$TESTER_DIR/$EA_SETFILE}" + [ -s "$file" ] + read -ra vargs <<<$EX_ARGS + vargs+=("-u NONE") + if [ -n "$value" ]; then + echo "Setting '$key' to '$value' in $(basename "$file")" >&2 + ex +"%s/$key=\zs.*$/$value/" -scwq! ${vargs[@]} "$file" >&2 || exit 1 + else + echo "Value for '$key' is empty, ignoring." >&2 + fi +} + +# Get input value from the SET file. +# Usage: input_get [key] [file] +input_get() { + local key="$1" + local file="${2:-$TESTER_DIR/$EA_SETFILE}" + [ -s "$file" ] + value="$(grep -om1 "$key=[.0-9a-zA-Z-]\+" "$file" | cut -d= -f2-)" + echo $value +} + +# Copy input value from the SET file to MQL file. +# Usage: input_copy [key] [src_file] [dst_file] (dst_file2...) +input_copy() { + local key=$1 + local file_src=$2 + local retries=5 + read -ra files <<<${@:3} + read -ra vargs <<<$EX_ARGS + vargs+=("-u NONE") + [ -s "$file_src" ] + for file_dst in "${files[@]}"; do + [ -s "$file_dst" ] + value=$(input_get "^$key" "$file_src") + echo "Setting '$key' to '$value' in $(basename "$file_dst")" >&2 + retries=5 + while ! ex +"%s/\s${key}[^=]=[^0-9]\zs[^;]\+/${value}/" -scwq! ${vargs[@]} "$file_dst" >&2; do + sleep 1 + ((retries-=1)) + echo "Retrying ($retries left)..." >&2 + [ $retries -le 0 ] && break + done + done +} + +# Experts SET file. Returns exported filename. +# Usage: export_set [EA/pattern] (dst/file) (...args) +export_set() { + local name=${1:-$TEST_EXPERT} + local dstfile=${2:-${name}.set} + local ea_path=$name + local ahk_path="$(winepath -w "$SCR"/ahk/export_set.ahk)" + [ ! -s "$name" ] && ea_path=$(ea_find "${name##/}") + [ ! -f "$EXPERTS_DIR/$ea_path" ] && { echo "Error: Cannot find EA: ${name}!" >&2; return; } + [[ "$ea_path" =~ 'mq' ]] && compile_ea "$name" >&2 + set_display >&2 + ini_set "^Expert" "$(basename ${ea_path/\//\\\\} .${ea_path##*.})" "$TERMINAL_INI" + WINEPATH="$(winepath -w "$TERMINAL_DIR");C:\\Apps\\AHK" \ + timeout 60 \ + wine AutoHotkey /ErrorStdOut "$ahk_path" "${dstfile}" ${@:3} + [ -n "$OPT_VERBOSE" ] && times >&2 + echo "${dstfile}" +} From 5220d3274e9b3c4bac109eb524adf23de9a196db Mon Sep 17 00:00:00 2001 From: kenorb Date: Sat, 6 Apr 2019 16:20:22 +0100 Subject: [PATCH 05/66] Shell syntax improvements --- README.md | 6 ------ scripts/.funcs.sets.inc.sh | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index d63ca639..02f69bf6 100644 --- a/README.md +++ b/README.md @@ -133,12 +133,6 @@ to list available commands. Here is the list: # Run platform and kill it. # Usage: quick_run -- -# Set input value in the SET file. -# Usage: input_set [key] [value] [file] --- -# Get input value from the SET file. -# Usage: input_get [key] [file] --- # Set value in the INI file. # Usage: ini_set [key] [value] [file] -- diff --git a/scripts/.funcs.sets.inc.sh b/scripts/.funcs.sets.inc.sh index 9191679c..93895037 100644 --- a/scripts/.funcs.sets.inc.sh +++ b/scripts/.funcs.sets.inc.sh @@ -33,11 +33,11 @@ input_set() { local value="$2" local file="${3:-$TESTER_DIR/$EA_SETFILE}" [ -s "$file" ] - read -ra vargs <<<$EX_ARGS + read -ra vargs <<<"$EX_ARGS" vargs+=("-u NONE") if [ -n "$value" ]; then echo "Setting '$key' to '$value' in $(basename "$file")" >&2 - ex +"%s/$key=\zs.*$/$value/" -scwq! ${vargs[@]} "$file" >&2 || exit 1 + ex +"%s/$key=\\zs.*$/$value/" -scwq! "${vargs[@]}" "$file" >&2 || exit 1 else echo "Value for '$key' is empty, ignoring." >&2 fi @@ -49,8 +49,8 @@ input_get() { local key="$1" local file="${2:-$TESTER_DIR/$EA_SETFILE}" [ -s "$file" ] - value="$(grep -om1 "$key=[.0-9a-zA-Z-]\+" "$file" | cut -d= -f2-)" - echo $value + value="$(grep -om1 "$key=[.0-9a-zA-Z-]\\+" "$file" | cut -d= -f2-)" + echo "$value" } # Copy input value from the SET file to MQL file. @@ -59,8 +59,8 @@ input_copy() { local key=$1 local file_src=$2 local retries=5 - read -ra files <<<${@:3} - read -ra vargs <<<$EX_ARGS + read -ra files <<<"${@:3}" + read -ra vargs <<<"$EX_ARGS" vargs+=("-u NONE") [ -s "$file_src" ] for file_dst in "${files[@]}"; do @@ -68,7 +68,7 @@ input_copy() { value=$(input_get "^$key" "$file_src") echo "Setting '$key' to '$value' in $(basename "$file_dst")" >&2 retries=5 - while ! ex +"%s/\s${key}[^=]=[^0-9]\zs[^;]\+/${value}/" -scwq! ${vargs[@]} "$file_dst" >&2; do + while ! ex +"%s/\\s${key}[^=]=[^0-9]\\zs[^;]\\+/${value}/" -scwq! "${vargs[@]}" "$file_dst" >&2; do sleep 1 ((retries-=1)) echo "Retrying ($retries left)..." >&2 @@ -83,15 +83,15 @@ export_set() { local name=${1:-$TEST_EXPERT} local dstfile=${2:-${name}.set} local ea_path=$name - local ahk_path="$(winepath -w "$SCR"/ahk/export_set.ahk)" + ahk_path="$(winepath -w "$SCR"/ahk/export_set.ahk)" [ ! -s "$name" ] && ea_path=$(ea_find "${name##/}") [ ! -f "$EXPERTS_DIR/$ea_path" ] && { echo "Error: Cannot find EA: ${name}!" >&2; return; } [[ "$ea_path" =~ 'mq' ]] && compile_ea "$name" >&2 set_display >&2 - ini_set "^Expert" "$(basename ${ea_path/\//\\\\} .${ea_path##*.})" "$TERMINAL_INI" + ini_set "^Expert" "$(basename "${ea_path/\//\\\\}" ."${ea_path##*.}")" "$TERMINAL_INI" WINEPATH="$(winepath -w "$TERMINAL_DIR");C:\\Apps\\AHK" \ timeout 60 \ - wine AutoHotkey /ErrorStdOut "$ahk_path" "${dstfile}" ${@:3} + wine AutoHotkey /ErrorStdOut "$ahk_path" "${dstfile}" "${@:3}" [ -n "$OPT_VERBOSE" ] && times >&2 echo "${dstfile}" } From 7ac8b60224e363dd1c2eda226b27850c37a6b122 Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 7 Apr 2019 01:17:56 +0100 Subject: [PATCH 06/66] Adds get_min/get_max --- scripts/.funcs.inc.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/scripts/.funcs.inc.sh b/scripts/.funcs.inc.sh index 32486053..bc5f172c 100644 --- a/scripts/.funcs.inc.sh +++ b/scripts/.funcs.inc.sh @@ -92,6 +92,18 @@ get_time() { fi } +# Get the max of two values. +# Usage: get_min (int) (int) +get_min() { + echo $(( $1 < ${2:-0} ? $1 : ${2:-0} )) +} + +# Get the max of two values. +# Usage: get_max (int) (int) +get_max() { + echo $(( $1 > ${2:-0} ? $1 : ${2:-0} )) +} + # Check logs for errors. # Usage: check_log_errors check_log_errors() { From f0058be54b56225bb2d015d2931c98e20e9c9058 Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 7 Apr 2019 13:49:22 +0100 Subject: [PATCH 07/66] Corrects shell quote syntax issues --- scripts/.funcs.sets.inc.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/.funcs.sets.inc.sh b/scripts/.funcs.sets.inc.sh index 93895037..43d21a00 100644 --- a/scripts/.funcs.sets.inc.sh +++ b/scripts/.funcs.sets.inc.sh @@ -33,11 +33,11 @@ input_set() { local value="$2" local file="${3:-$TESTER_DIR/$EA_SETFILE}" [ -s "$file" ] - read -ra vargs <<<"$EX_ARGS" + read -ra vargs <<<$EX_ARGS vargs+=("-u NONE") if [ -n "$value" ]; then echo "Setting '$key' to '$value' in $(basename "$file")" >&2 - ex +"%s/$key=\\zs.*$/$value/" -scwq! "${vargs[@]}" "$file" >&2 || exit 1 + ex +"%s/$key=\\zs.*$/$value/" -scwq! ${vargs[@]} "$file" >&2 || exit 1 else echo "Value for '$key' is empty, ignoring." >&2 fi @@ -59,8 +59,8 @@ input_copy() { local key=$1 local file_src=$2 local retries=5 - read -ra files <<<"${@:3}" - read -ra vargs <<<"$EX_ARGS" + read -ra files <<<${@:3} + read -ra vargs <<<$EX_ARGS vargs+=("-u NONE") [ -s "$file_src" ] for file_dst in "${files[@]}"; do @@ -68,7 +68,7 @@ input_copy() { value=$(input_get "^$key" "$file_src") echo "Setting '$key' to '$value' in $(basename "$file_dst")" >&2 retries=5 - while ! ex +"%s/\\s${key}[^=]=[^0-9]\\zs[^;]\\+/${value}/" -scwq! "${vargs[@]}" "$file_dst" >&2; do + while ! ex +"%s/\\s${key}[^=]=[^0-9]\\zs[^;]\\+/${value}/" -scwq! ${vargs[@]} "$file_dst" >&2; do sleep 1 ((retries-=1)) echo "Retrying ($retries left)..." >&2 From a36e0ee8a1afb63c58b97ab0ed00b39514912ca3 Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 7 Apr 2019 14:23:36 +0100 Subject: [PATCH 08/66] Renames BT_TESTMODE to BT_TESTMODEL_FXT to avoid confusion --- scripts/options.txt | 6 +++--- scripts/run_backtest.sh | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/options.txt b/scripts/options.txt index e0c16ac2..a6129da8 100644 --- a/scripts/options.txt +++ b/scripts/options.txt @@ -108,12 +108,12 @@ Supported options: Other supported variables (without options assigned): - BT_DAYS (uint/string) Specify days to test. Default: 1-31. -- BT_TESTMODE (uint) - This controls type of backtest data being downloaded. - Values: 0 (default) - Every tick, 1 - Control points, 2 - Open prices only - BT_TESTMODEL (uint) This controls type of backtest data being tested. Values: 0 (default) - Every tick, 1 - Control points, 2 - Open prices only +- BT_TESTMODEL_FXT (uint) + This controls type of backtest data being downloaded in FXT format. + Values: 0 (default) - Every tick, 1 - Control points, 2 - Open prices only - OPT_NOERR (bool) Disables errexit flag to prevent exiting script on failure. - RUN_ON_START (string) diff --git a/scripts/run_backtest.sh b/scripts/run_backtest.sh index 37d15220..5570a0d8 100755 --- a/scripts/run_backtest.sh +++ b/scripts/run_backtest.sh @@ -710,7 +710,7 @@ fi # Download backtest data if required. BT_PERIOD=$(ini_get ^TestPeriod) -BT_TESTMODE=${BT_TESTMODE} +BT_TESTMODEL_FXT=${BT_TESTMODEL_FXT:-0} if [ -n "$TEST_EXPERT" ]; then echo "Checking backtest data (${BT_SRC:-DS})..." bt_key=$BT_SYMBOL-$(join_by - ${BT_YEARS[@]:-2017})-${BT_SRC:-DS} @@ -718,7 +718,7 @@ if [ -n "$TEST_EXPERT" ]; then # Generate backtest files if not present. if [ -z "$(find "$TERMINAL_DIR" -name "${BT_SYMBOL}*_0.fxt" -print -quit)" ] || [ "${bt_data%.*}" != "$bt_key" ]; then env SERVER=$SERVER OPT_VERBOSE=$OPT_VERBOSE OPT_TRACE=$OPT_TRACE \ - "$SHELL" "$SCR"/get_bt_data.sh "$BT_SYMBOL" "$(join_by - "${BT_YEARS[@]:-2017}")" "${BT_SRC:-DS}" "${BT_PERIOD}" "${BT_TESTMODE}" + "$SHELL" "$SCR"/get_bt_data.sh "$BT_SYMBOL" "$(join_by - "${BT_YEARS[@]:-2017}")" "${BT_SRC:-DS}" "${BT_PERIOD}" "${BT_TESTMODEL_FXT}" if [ -n "$OPT_VERBOSE" ]; then cd "$TERMINAL_DIR" find . '(' -name "*.hst" -o -name "*.fxt" ')' -ls From 3e6dfcd3d3c23b1bb759b58b72d38c297b779e12 Mon Sep 17 00:00:00 2001 From: kenorb Date: Mon, 8 Apr 2019 19:17:48 +0100 Subject: [PATCH 09/66] Fixes issue when copying symbols file into non-existing folder --- scripts/.funcs.inc.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/scripts/.funcs.inc.sh b/scripts/.funcs.inc.sh index bc5f172c..e97f3d54 100644 --- a/scripts/.funcs.inc.sh +++ b/scripts/.funcs.inc.sh @@ -57,11 +57,10 @@ join_by() { } # Check required files. +# Usage: check_files check_files() { - if [ "$SERVER" != "default" ]; then - local symbols_raw_default="$HISTORY_DIR/default/symbols.raw" - local symbols_raw="$HISTORY_DIR/$SERVER/symbols.raw" - [ -s "$symbols_raw" ] || cp $VFLAG "$symbols_raw_default" "$symbols_raw" + if [ "$SERVER" != "default" ] && [ -w "$HISTORY_DIR/$SERVER" ]; then + [ -s "$symbols_raw" ] || cp $VFLAG "$HISTORY_DIR/default/symbols.raw" "$HISTORY_DIR/$SERVER/symbols.raw" fi } From 1f40c41a71204ae9fd3fb131a63985dd42335cbd Mon Sep 17 00:00:00 2001 From: kenorb Date: Mon, 8 Apr 2019 19:52:00 +0100 Subject: [PATCH 10/66] Allows overriding TERMINAL_ARG --- scripts/.vars.inc.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/.vars.inc.sh b/scripts/.vars.inc.sh index 9a8b5ba2..9945832c 100644 --- a/scripts/.vars.inc.sh +++ b/scripts/.vars.inc.sh @@ -26,7 +26,7 @@ MTEDITOR_EXE="$([ -d "$TERMINAL_DIR" ] && find "$TERMINAL_DIR" -name metaeditor. is_vm && set +x MQL_DIR="MQL4" if [ -n "$TERMINAL_DIR" ]; then - TERMINAL_ARG="/skipupdate /portable" + TERMINAL_ARG="${TERMINAL_ARG:-/skipupdate /portable}" TERMINAL_CNF="${TERMINAL_DIR}/config" TERMINAL_INI="${TERMINAL_INI:-$TERMINAL_CNF/$CONF_TERM}" TESTER_INI="${TESTER_INI:-$TERMINAL_CNF/$CONF_TEST}" From b8c08b0445de5e754b1bd42828165cc5df4c2968 Mon Sep 17 00:00:00 2001 From: kenorb Date: Mon, 8 Apr 2019 20:59:13 +0100 Subject: [PATCH 11/66] Uses winetricks command, instead of downloading file each time --- scripts/install_mt4.sh | 11 +++++++---- scripts/install_mt4x.sh | 18 ++++++++---------- scripts/install_mt5.sh | 9 ++++----- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/scripts/install_mt4.sh b/scripts/install_mt4.sh index fc192b5b..5030c882 100755 --- a/scripts/install_mt4.sh +++ b/scripts/install_mt4.sh @@ -2,18 +2,21 @@ # Script to install MT4 platform using winetricks. [ -n "$OPT_NOERR" ] || set -e [ -n "$OPT_TRACE" ] && set -x -CWD="$(cd -P -- "$(dirname -- "$0")" 2>/dev/null && pwd -P || pwd -P)" -WURL=${WURL:-https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks} +CWD="$( (cd -P -- "$(dirname -- "$0")" 2>/dev/null && pwd -P) || pwd -P)" +type winetricks >/dev/null # Load the shell functions. . "$CWD/.funcs.inc.sh" . "$CWD/.funcs.cmds.inc.sh" +# Activates display. +set_display + echo "Installing winhttp..." >&2 -sh -s winhttp < <(wget -qO- $WURL) +winetricks -q winhttp echo "Installing platform..." >&2 -sh -s "$CWD"/install_mt4.verb < <(wget -qO- $WURL) +winetricks -q "$CWD"/install_mt4.verb echo "Installation successful." >&2 echo "${BASH_SOURCE[0]} done." >&2 diff --git a/scripts/install_mt4x.sh b/scripts/install_mt4x.sh index 622c0f05..54ac8f33 100755 --- a/scripts/install_mt4x.sh +++ b/scripts/install_mt4x.sh @@ -2,24 +2,22 @@ # Script to install MT platform using xdotool. [ -n "$OPT_NOERR" ] || set -e [ -n "$OPT_TRACE" ] && set -x -CWD="$(cd -P -- "$(dirname -- "$0")" 2>/dev/null && pwd -P || pwd -P)" -DTMP=$(mktemp -d) +CWD="$( (cd -P -- "$(dirname -- "$0")" 2>/dev/null && pwd -P) || pwd -P)" EXEFILE=mt4setup.exe -WURL=${WURL:-https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks} # Check the dependencies. -type wget xdotool xwininfo wine ar >/dev/null +type winetricks wget xdotool xwininfo wine ar >/dev/null # Load the shell functions. . "$CWD/.funcs.inc.sh" . "$CWD/.funcs.cmds.inc.sh" echo "Installing winhttp..." >&2 -sh -s winhttp < <(wget -qO- $WURL) +winetricks -q winhttp echo "Downloading MT4 installer..." >&2 [ ! -f "$HOME/$EXEFILE" ] \ - && wget -O "$HOME/$EXEFILE" -ct3 --content-disposition ${MT_URL:-"https://download.mql5.com/cdn/web/8472/mt4/xmuk4setup.exe"} + && wget -O "$HOME/$EXEFILE" -ct3 --content-disposition "${MT_URL:-"https://download.mql5.com/cdn/web/8472/mt4/xmuk4setup.exe"}" [ -f "$HOME/$EXEFILE" ] # Prints information of the window status in the background. @@ -34,11 +32,11 @@ wine "$HOME/$EXEFILE" & echo "Waiting for installer to initialize..." >&2 while ! WID=$(xdotool getactivewindow 2>/dev/null); do sleep 2; done -echo "Installing $(xdotool getwindowname $WID)..." >&2 +echo "Installing $(xdotool getwindowname "$WID")..." >&2 while WID=$(xdotool getactivewindow); do - xdotool key --window $WID --delay 500 Alt+N + xdotool key --window "$WID" --delay 500 Alt+N sleep 20 - xdotool key --window $WID --delay 500 Tab space + xdotool key --window "$WID" --delay 500 Tab space done # Workaround for Chrome launching when installer finishes. @@ -47,7 +45,7 @@ pkill -KILL chrome || true echo "Waiting for platform to start..." >&2 while ! WID=$(xdotool getactivewindow 2>/dev/null); do sleep 5; done -xwininfo -id $WID -tree +xwininfo -id "$WID" -tree # Close running MT4 instance, first the two login popup window, secondly application itself. echo "Closing platform..." >&2 diff --git a/scripts/install_mt5.sh b/scripts/install_mt5.sh index 523b6bd6..436cc5b5 100755 --- a/scripts/install_mt5.sh +++ b/scripts/install_mt5.sh @@ -3,21 +3,20 @@ [ -n "$OPT_NOERR" ] || set -e [ -n "$OPT_TRACE" ] && set -x CWD="$(cd -P -- "$(dirname -- "$0")" 2>/dev/null; pwd -P)" -WURL="https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks" +type winetricks >/dev/null # Load the shell functions. . "$CWD/.funcs.inc.sh" . "$CWD/.funcs.cmds.inc.sh" -# Prints information of the window status in the background. +# Activates display. set_display -live_stats & echo "Installing winhttp..." >&2 -sh -s winhttp < <(wget -qO- $WURL) +winetricks -q winhttp echo "Installing platform..." >&2 -sh -s "$CWD"/install_mt5.verb < <(wget -qO- $WURL) +winetricks -q "$CWD"/install_mt5.verb echo "Installation successful." >&2 echo "${BASH_SOURCE[0]} done." >&2 From 40add568e82424be2a2e8e91492b2e780826eb7e Mon Sep 17 00:00:00 2001 From: kenorb Date: Mon, 8 Apr 2019 21:14:01 +0100 Subject: [PATCH 12/66] Installs p7zip-full to avoid winetricks issues --- scripts/provision.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 1f17bda9..2c102144 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -156,7 +156,8 @@ case "$(uname -s)" in fi # Install other CLI tools. - apt-get install -qq less binutils coreutils moreutils cabextract zip unzip # Common CLI utils. + apt-get install -qq less binutils coreutils moreutils # Common CLI utils. + apt-get install -qq cabextract zip unzip p7zip-full # Compression tools. apt-get install -qq git realpath links tree pv bc # Required commands. apt-get install -qq html2text jq # Required parsers. apt-get install -qq imagemagick # ImageMagick. From 2c4724d260599fbf7ecba227ce45ce9b70fcecea Mon Sep 17 00:00:00 2001 From: kenorb Date: Wed, 10 Apr 2019 19:26:54 +0100 Subject: [PATCH 13/66] Loads SETFILE as a second option --- scripts/.funcs.sets.inc.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/.funcs.sets.inc.sh b/scripts/.funcs.sets.inc.sh index 43d21a00..e6a76db4 100644 --- a/scripts/.funcs.sets.inc.sh +++ b/scripts/.funcs.sets.inc.sh @@ -32,6 +32,7 @@ input_set() { local key="$1" local value="$2" local file="${3:-$TESTER_DIR/$EA_SETFILE}" + file=${file:-$SETFILE} [ -s "$file" ] read -ra vargs <<<$EX_ARGS vargs+=("-u NONE") @@ -48,6 +49,7 @@ input_set() { input_get() { local key="$1" local file="${2:-$TESTER_DIR/$EA_SETFILE}" + file=${file:-$SETFILE} [ -s "$file" ] value="$(grep -om1 "$key=[.0-9a-zA-Z-]\\+" "$file" | cut -d= -f2-)" echo "$value" From 117e32b222e7dd5e69452fbd339dddb47d1b4a51 Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 2 May 2019 23:44:02 +0100 Subject: [PATCH 14/66] Adds support for BT_PERIOD_FXT, to use a different FXT file --- scripts/get_bt_data.sh | 6 +++--- scripts/options.txt | 3 +++ scripts/run_backtest.sh | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/get_bt_data.sh b/scripts/get_bt_data.sh index ad3ff648..c1328cc9 100755 --- a/scripts/get_bt_data.sh +++ b/scripts/get_bt_data.sh @@ -130,9 +130,9 @@ case $bt_src in wait # Wait for the background tasks to finish. echo "Extracting..." >&2 gunzip -kh >& /dev/null && keep="-k" || true # Check if gunzip supports -k parameter. - find "$dest_dir" -type f -name "*.gz" -print0 | while IFS= read -r -d '' file; do - gunzip $vflag $keep "$file" - done + cd "$dest_dir" + gunzip $vflag $keep ${fxt_files[@]} ${hst_files[@]} + cd - &> /dev/null echo "Moving..." >&2 find "$dest_dir" -type f -name "*.fxt" -exec mv $vflag "{}" "$TICKDATA_DIR" ';' find "$dest_dir" -type f -name "*.hst" -exec mv $vflag "{}" "$HISTORY_DIR/${SERVER:-default}" ';' diff --git a/scripts/options.txt b/scripts/options.txt index a6129da8..88490d46 100644 --- a/scripts/options.txt +++ b/scripts/options.txt @@ -111,6 +111,9 @@ Other supported variables (without options assigned): - BT_TESTMODEL (uint) This controls type of backtest data being tested. Values: 0 (default) - Every tick, 1 - Control points, 2 - Open prices only +- BT_PERIOD_FXT (string) + Overrides FXT file to use for the test. + By default, it is the same as BT_PERIOD. - BT_TESTMODEL_FXT (uint) This controls type of backtest data being downloaded in FXT format. Values: 0 (default) - Every tick, 1 - Control points, 2 - Open prices only diff --git a/scripts/run_backtest.sh b/scripts/run_backtest.sh index 5570a0d8..b00188bc 100755 --- a/scripts/run_backtest.sh +++ b/scripts/run_backtest.sh @@ -710,6 +710,7 @@ fi # Download backtest data if required. BT_PERIOD=$(ini_get ^TestPeriod) +BT_PERIOD_FXT=${BT_PERIOD_FXT:-$BT_PERIOD} BT_TESTMODEL_FXT=${BT_TESTMODEL_FXT:-0} if [ -n "$TEST_EXPERT" ]; then echo "Checking backtest data (${BT_SRC:-DS})..." @@ -718,7 +719,7 @@ if [ -n "$TEST_EXPERT" ]; then # Generate backtest files if not present. if [ -z "$(find "$TERMINAL_DIR" -name "${BT_SYMBOL}*_0.fxt" -print -quit)" ] || [ "${bt_data%.*}" != "$bt_key" ]; then env SERVER=$SERVER OPT_VERBOSE=$OPT_VERBOSE OPT_TRACE=$OPT_TRACE \ - "$SHELL" "$SCR"/get_bt_data.sh "$BT_SYMBOL" "$(join_by - "${BT_YEARS[@]:-2017}")" "${BT_SRC:-DS}" "${BT_PERIOD}" "${BT_TESTMODEL_FXT}" + "$SHELL" "$SCR"/get_bt_data.sh "$BT_SYMBOL" "$(join_by - "${BT_YEARS[@]:-2017}")" "${BT_SRC:-DS}" "${BT_PERIOD_FXT}" "${BT_TESTMODEL_FXT}" if [ -n "$OPT_VERBOSE" ]; then cd "$TERMINAL_DIR" find . '(' -name "*.hst" -o -name "*.fxt" ')' -ls From 3998c164c7ea313f2061195c5dfc9da37241bc2b Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 3 May 2019 02:34:06 +0100 Subject: [PATCH 15/66] Updates 2018 as default year --- scripts/run_backtest.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/run_backtest.sh b/scripts/run_backtest.sh index b00188bc..1f99f5f6 100755 --- a/scripts/run_backtest.sh +++ b/scripts/run_backtest.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Script to run backtest test. -# E.g. run_backtest.sh -v -t -e MACD -f "/path/to/file.set" -c USD -p EURUSD -d 2000 -m 1-2 -y 2017 -s 20 -b DS -r Report -O "_optimization_results" +# E.g. run_backtest.sh -v -t -e MACD -f "/path/to/file.set" -c USD -p EURUSD -d 2000 -m 1-2 -y 2018 -s 20 -b DS -r Report -O "_optimization_results" # Initialize variables. [ -n "$OPT_NOERR" ] || set -e @@ -17,7 +17,7 @@ type git pgrep xargs ex xxd od perl xdpyinfo >/dev/null usage() { printf "Usage: %s (args)\n\n" "$0" cat $CWD/options.txt - printf "\n\nExample: %s -v -t -e MACD -p EURUSD -c USD -d 2000 -y 2017 -m 1-2 -S 20 -b DS -T M30\n" "$0" + printf "\n\nExample: %s -v -t -e MACD -p EURUSD -c USD -d 2000 -y 2018 -m 1-2 -S 20 -b DS -T M30\n" "$0" } # Invoke on test success. @@ -293,7 +293,7 @@ while getopts $ARGS arg; do SCRIPT=${OPTARG} ;; - y) # Year to test (e.g. 2017, 2011-2015). + y) # Year to test (e.g. 2017, 2018, 2011-2015). BT_YEARS=${OPTARG} ;; @@ -714,12 +714,12 @@ BT_PERIOD_FXT=${BT_PERIOD_FXT:-$BT_PERIOD} BT_TESTMODEL_FXT=${BT_TESTMODEL_FXT:-0} if [ -n "$TEST_EXPERT" ]; then echo "Checking backtest data (${BT_SRC:-DS})..." - bt_key=$BT_SYMBOL-$(join_by - ${BT_YEARS[@]:-2017})-${BT_SRC:-DS} + bt_key=$BT_SYMBOL-$(join_by - ${BT_YEARS[@]:-2018})-${BT_SRC:-DS} bt_data=$(ini_get "bt_data" "$CUSTOM_INI") # Generate backtest files if not present. if [ -z "$(find "$TERMINAL_DIR" -name "${BT_SYMBOL}*_0.fxt" -print -quit)" ] || [ "${bt_data%.*}" != "$bt_key" ]; then env SERVER=$SERVER OPT_VERBOSE=$OPT_VERBOSE OPT_TRACE=$OPT_TRACE \ - "$SHELL" "$SCR"/get_bt_data.sh "$BT_SYMBOL" "$(join_by - "${BT_YEARS[@]:-2017}")" "${BT_SRC:-DS}" "${BT_PERIOD_FXT}" "${BT_TESTMODEL_FXT}" + "$SHELL" "$SCR"/get_bt_data.sh "$BT_SYMBOL" "$(join_by - "${BT_YEARS[@]:-2018}")" "${BT_SRC:-DS}" "${BT_PERIOD_FXT}" "${BT_TESTMODEL_FXT}" if [ -n "$OPT_VERBOSE" ]; then cd "$TERMINAL_DIR" find . '(' -name "*.hst" -o -name "*.fxt" ')' -ls From 896b24173ca8f063732ae103ae3d61e5039ca428 Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 5 May 2019 01:55:02 +0100 Subject: [PATCH 16/66] Updates MT build to 4.0.0.1170 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index fc081a60..66bf5af2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -42,7 +42,7 @@ RUN chown ubuntu:root $BT_DEST VOLUME $BT_DEST # Default backtest inputs. -ENV MT_VER 4.0.0.1010 +ENV MT_VER 4.0.0.1170 # Run test. USER ubuntu From 809f966502169000ac3794f25da8ac4fcb30d1dd Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 5 May 2019 02:29:23 +0100 Subject: [PATCH 17/66] Uses 2018 as default in INI file --- conf/mt4-tester.ini | 4 ++-- scripts/options.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/conf/mt4-tester.ini b/conf/mt4-tester.ini index e9dee144..598c8b18 100644 --- a/conf/mt4-tester.ini +++ b/conf/mt4-tester.ini @@ -153,12 +153,12 @@ TestDateEnable=true ; ; The date, from which to start testing, appeared as YYYY.MM.DD. ; If this parameter has not been specified, this date is 1970.01.01 -TestFromDate=2017.01.01 +TestFromDate=2018.01.01 ; ; The date, on which to finish testing, appeared as YYYY.MM.DD. ; If this parameter has not been specified, this date is 1970.01.01 -TestToDate=2017.01.31 +TestToDate=2018.01.31 ; ; The name of the test report file. diff --git a/scripts/options.txt b/scripts/options.txt index 88490d46..9205884a 100644 --- a/scripts/options.txt +++ b/scripts/options.txt @@ -97,7 +97,7 @@ Supported options: -X (file) Invoke script file n exit after the successful test. -y (year) - Year to test. Default: 2017 + Year to test. Default: 2018 Variable (uint/string): BT_YEARS -_ Dry run. From 533a79c98fdfc0e139fb7f96599d6e2c1f7870b1 Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 5 May 2019 02:56:14 +0100 Subject: [PATCH 18/66] Revert "Updates MT build to 4.0.0.1170" This reverts commit 896b24173ca8f063732ae103ae3d61e5039ca428. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 66bf5af2..fc081a60 100644 --- a/Dockerfile +++ b/Dockerfile @@ -42,7 +42,7 @@ RUN chown ubuntu:root $BT_DEST VOLUME $BT_DEST # Default backtest inputs. -ENV MT_VER 4.0.0.1170 +ENV MT_VER 4.0.0.1010 # Run test. USER ubuntu From 026100ebd17343f16689493a9df0fc6ec3fec08d Mon Sep 17 00:00:00 2001 From: kenorb Date: Wed, 8 May 2019 13:00:36 +0100 Subject: [PATCH 19/66] Do not install APT Recommends/Suggests --- scripts/provision.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/provision.sh b/scripts/provision.sh index 2c102144..4c07a552 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -70,6 +70,7 @@ case "$(uname -s)" in # For Ubuntu/Debian. echo "Configuring APT..." >&2 + apt-config dump | grep -we Recommends -e Suggests | sed s/1/0/ | tee /etc/apt/apt.conf.d/99norecommend if command -v dpkg-reconfigure > /dev/null; then # Perform an unattended installation of a Debian packages. From a9f5af637f7495745f2f4659160552bb72e59b21 Mon Sep 17 00:00:00 2001 From: kenorb Date: Wed, 8 May 2019 13:53:52 +0100 Subject: [PATCH 20/66] Perform Wine initialization --- scripts/provision.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/provision.sh b/scripts/provision.sh index 4c07a552..7b1e5529 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -201,6 +201,9 @@ case "$(uname -s)" in esac set +x +# Perform Wine initialization. +WINEDLLOVERRIDES="mscoree,mshtml=" wineboot -i & + # Set-up git. ( git config --system user.name $user From 1b454dc9ff56b68dda1a85858162e834f68a4386 Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 9 May 2019 13:19:04 +0100 Subject: [PATCH 21/66] Installs MT4 via winetricks from the fork --- scripts/install_mt4.sh | 2 +- scripts/provision.sh | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/install_mt4.sh b/scripts/install_mt4.sh index 5030c882..cb3480e3 100755 --- a/scripts/install_mt4.sh +++ b/scripts/install_mt4.sh @@ -16,7 +16,7 @@ echo "Installing winhttp..." >&2 winetricks -q winhttp echo "Installing platform..." >&2 -winetricks -q "$CWD"/install_mt4.verb +winetricks -q -v mt4 echo "Installation successful." >&2 echo "${BASH_SOURCE[0]} done." >&2 diff --git a/scripts/provision.sh b/scripts/provision.sh index 7b1e5529..d0e908be 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -126,7 +126,8 @@ case "$(uname -s)" in apt-get install -qq xvfb xdotool x11-utils xterm # Virtual frame buffer and X11 utils. # Install Winetricks. - curl -sL https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks | install /dev/stdin /usr/local/bin/winetricks + winetricks_url="https://raw.githubusercontent.com/kenorb-contrib/winetricks/mt4/src/winetricks" + curl -sL ${winetricks_url} | install /dev/stdin /usr/local/bin/winetricks # Install AHK. if [ -n "$PROVISION_AHK" ]; then From 07f41776b31227ad75a2e9be9fe075c1068a7b6d Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 9 May 2019 15:18:33 +0100 Subject: [PATCH 22/66] Updates to trusty --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2022ea1c..429c708a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: generic sudo: required -group: deprecated-2017Q4 +dist: trusty services: - docker addons: From a74667a10b87e5d03e1448bea147d40e0e972cfa Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 9 May 2019 15:24:15 +0100 Subject: [PATCH 23/66] Makes curl show an error message if it fails --- scripts/provision.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index d0e908be..412339ae 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -101,7 +101,7 @@ case "$(uname -s)" in # Add PPA/Wine repository. echo "Adding PPA/Wine repository..." >&2 # Adds GPG release key. - apt-key add < <(curl -sq https://dl.winehq.org/wine-builds/winehq.key) + apt-key add < <(curl -S https://dl.winehq.org/wine-builds/winehq.key) # APT dependencies (for the add-apt-repository). command -v add-apt-repository || apt-get install -qq software-properties-common python-software-properties # Adds APT Wine repository. From 20721db90623479731ef77f7831bf339238375a9 Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 9 May 2019 15:30:38 +0100 Subject: [PATCH 24/66] Adds CA certificates to allow SSL-based applications to check for the authenticity of SSL connections @refs: https://stackoverflow.com/a/55859036/55075 --- scripts/provision.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 412339ae..251eccd0 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -98,6 +98,9 @@ case "$(uname -s)" in command -v curl &>/dev/null || apt-get install -qq curl command -v wget &>/dev/null || apt-get install -qq wget + # CA certificates to allow SSL-based applications to check for the authenticity of SSL connections. + echo "Installing CA certificates..." >&2 + apt-get install -qq ca-certificates # Add PPA/Wine repository. echo "Adding PPA/Wine repository..." >&2 # Adds GPG release key. @@ -117,7 +120,6 @@ case "$(uname -s)" in echo "Installing APT packages..." >&2 apt-get install -qq build-essential # Install C, C++ compilers and development (make). apt-get install -qq language-pack-en # Language pack to prevent an invalid locale. - apt-get install -qq ca-certificates apt-get install -qq dbus # Required for Debian AMI on EC2. # Install wine and dependencies. From a500fb6c1ff418ea5eadec05eae935767f3151c9 Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 9 May 2019 23:00:05 +0100 Subject: [PATCH 25/66] Run `wineboot -u` due to some Wine issues --- scripts/install_mt4.sh | 5 +++++ scripts/install_mt5.sh | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/scripts/install_mt4.sh b/scripts/install_mt4.sh index cb3480e3..474fe2b9 100755 --- a/scripts/install_mt4.sh +++ b/scripts/install_mt4.sh @@ -10,8 +10,13 @@ type winetricks >/dev/null . "$CWD/.funcs.cmds.inc.sh" # Activates display. +echo "Configuring display..." >&2 set_display +# Updates Wine configuration. +echo "Updating configuration..." >&2 +wineboot -u + echo "Installing winhttp..." >&2 winetricks -q winhttp diff --git a/scripts/install_mt5.sh b/scripts/install_mt5.sh index 436cc5b5..5014c659 100755 --- a/scripts/install_mt5.sh +++ b/scripts/install_mt5.sh @@ -10,8 +10,13 @@ type winetricks >/dev/null . "$CWD/.funcs.cmds.inc.sh" # Activates display. +echo "Configuring display..." >&2 set_display +# Updates Wine configuration. +echo "Updating configuration..." >&2 +wineboot -u + echo "Installing winhttp..." >&2 winetricks -q winhttp From 985387d09ef50a3c70c4c132334b5f060c369dcb Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 9 May 2019 23:25:50 +0100 Subject: [PATCH 26/66] Exports WINETRICKS_DOWNLOADER_RETRIES to be recognized by winetricks --- scripts/install_mt4.sh | 3 +++ scripts/install_mt5.sh | 3 +++ 2 files changed, 6 insertions(+) diff --git a/scripts/install_mt4.sh b/scripts/install_mt4.sh index 474fe2b9..f23abb75 100755 --- a/scripts/install_mt4.sh +++ b/scripts/install_mt4.sh @@ -5,6 +5,9 @@ CWD="$( (cd -P -- "$(dirname -- "$0")" 2>/dev/null && pwd -P) || pwd -P)" type winetricks >/dev/null +# Load variables. +export WINETRICKS_DOWNLOADER_RETRIES=${WINETRICKS_DOWNLOADER_RETRIES:-10} + # Load the shell functions. . "$CWD/.funcs.inc.sh" . "$CWD/.funcs.cmds.inc.sh" diff --git a/scripts/install_mt5.sh b/scripts/install_mt5.sh index 5014c659..341f3a19 100755 --- a/scripts/install_mt5.sh +++ b/scripts/install_mt5.sh @@ -5,6 +5,9 @@ CWD="$(cd -P -- "$(dirname -- "$0")" 2>/dev/null; pwd -P)" type winetricks >/dev/null +# Load variables. +export WINETRICKS_DOWNLOADER_RETRIES=${WINETRICKS_DOWNLOADER_RETRIES:-10} + # Load the shell functions. . "$CWD/.funcs.inc.sh" . "$CWD/.funcs.cmds.inc.sh" From d61abe6ffce03dcd653db6bc511e7812a0c88c7b Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 10 May 2019 00:03:09 +0100 Subject: [PATCH 27/66] Uses the latest MT4 version --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index fc081a60..1782e3aa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -42,7 +42,7 @@ RUN chown ubuntu:root $BT_DEST VOLUME $BT_DEST # Default backtest inputs. -ENV MT_VER 4.0.0.1010 +ENV MT_VER 4 # Run test. USER ubuntu From 5cf59942e4cb5de655b4a7e87304b2426f1e5ef2 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 10 May 2019 00:34:42 +0100 Subject: [PATCH 28/66] Initialize Wine for the user, not root --- scripts/provision.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 251eccd0..64cbaa03 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -134,6 +134,7 @@ case "$(uname -s)" in # Install AHK. if [ -n "$PROVISION_AHK" ]; then echo "Installing AutoHotkey..." >&2 + su - $user -c "WINEDLLOVERRIDES=mscoree,mshtml= wineboot -i" su - $user -c " set -x export DISPLAY=:1.0 @@ -204,9 +205,6 @@ case "$(uname -s)" in esac set +x -# Perform Wine initialization. -WINEDLLOVERRIDES="mscoree,mshtml=" wineboot -i & - # Set-up git. ( git config --system user.name $user From 482ae4f84a5fe7f56f63a5224438b6e4b02f7504 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 10 May 2019 00:37:45 +0100 Subject: [PATCH 29/66] Avoids Gecko popup --- scripts/provision.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 64cbaa03..317c183e 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -134,12 +134,13 @@ case "$(uname -s)" in # Install AHK. if [ -n "$PROVISION_AHK" ]; then echo "Installing AutoHotkey..." >&2 - su - $user -c "WINEDLLOVERRIDES=mscoree,mshtml= wineboot -i" su - $user -c " set -x export DISPLAY=:1.0 + export WINEDLLOVERRIDES=mscoree,mshtml= echo \$DISPLAY xdpyinfo &>/dev/null || (! pgrep -a Xvfb && Xvfb \$DISPLAY -screen 0 1024x768x16) & + wineboot -i wget -qP /tmp -nc 'https://github.com/Lexikos/AutoHotkey_L/releases/download/v1.1.30.01/AutoHotkey_1.1.30.01_setup.exe' && \ wine /tmp/AutoHotkey_*.exe /S /D='C:\\Apps\\AHK' && \ rm -v /tmp/AutoHotkey_*.exe && \ From 03d4435a2bd10e4bf47dfb4e699b6def09925e59 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 10 May 2019 00:38:44 +0100 Subject: [PATCH 30/66] Show Apt configuration after the change --- scripts/provision.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/provision.sh b/scripts/provision.sh index 317c183e..253be66c 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -71,6 +71,7 @@ case "$(uname -s)" in # For Ubuntu/Debian. echo "Configuring APT..." >&2 apt-config dump | grep -we Recommends -e Suggests | sed s/1/0/ | tee /etc/apt/apt.conf.d/99norecommend + apt-config dump | grep -we Recommends -e Suggests if command -v dpkg-reconfigure > /dev/null; then # Perform an unattended installation of a Debian packages. From 4511ad15f9f48314510041cb6a8965bfaffb6057 Mon Sep 17 00:00:00 2001 From: kenorb Date: Wed, 15 May 2019 19:50:33 +0100 Subject: [PATCH 31/66] Installs MT4 via install_mt4.sh --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 1782e3aa..e6513db6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -48,7 +48,7 @@ ENV MT_VER 4 USER ubuntu ADD conf /opt/conf ADD tests /opt/tests -RUN eval.sh install_mt +RUN install_mt4.sh RUN eval.sh install_mteditor RUN run_backtest.sh -s PrintPaths -v From c60348582d0b234937d8c1bdad34deb8825a8309 Mon Sep 17 00:00:00 2001 From: kenorb Date: Wed, 15 May 2019 20:58:38 +0100 Subject: [PATCH 32/66] Displays ifconfig.me IP details --- scripts/install_mt4.sh | 4 ++++ scripts/install_mt5.sh | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/scripts/install_mt4.sh b/scripts/install_mt4.sh index f23abb75..b03006af 100755 --- a/scripts/install_mt4.sh +++ b/scripts/install_mt4.sh @@ -8,6 +8,10 @@ type winetricks >/dev/null # Load variables. export WINETRICKS_DOWNLOADER_RETRIES=${WINETRICKS_DOWNLOADER_RETRIES:-10} +# Initializing +echo "Initializing..." >&2 +curl -s ifconfig.me/all.json + # Load the shell functions. . "$CWD/.funcs.inc.sh" . "$CWD/.funcs.cmds.inc.sh" diff --git a/scripts/install_mt5.sh b/scripts/install_mt5.sh index 341f3a19..11d4b511 100755 --- a/scripts/install_mt5.sh +++ b/scripts/install_mt5.sh @@ -8,6 +8,10 @@ type winetricks >/dev/null # Load variables. export WINETRICKS_DOWNLOADER_RETRIES=${WINETRICKS_DOWNLOADER_RETRIES:-10} +# Initializing +echo "Initializing..." >&2 +curl -s ifconfig.me/all.json + # Load the shell functions. . "$CWD/.funcs.inc.sh" . "$CWD/.funcs.cmds.inc.sh" From 6ef6bbf0b475a3d6b122a042100cb4bf34758c8f Mon Sep 17 00:00:00 2001 From: kenorb Date: Wed, 15 May 2019 21:25:27 +0100 Subject: [PATCH 33/66] Uses winehq-staging --- scripts/provision.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 253be66c..37a1c0d9 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -125,7 +125,7 @@ case "$(uname -s)" in # Install wine and dependencies. # @see: https://wiki.winehq.org/Ubuntu - apt-get install -qq winehq-devel wine-gecko --install-recommends # Install Wine. + apt-get install -qq winehq-staging wine-gecko --install-recommends # Install Wine. apt-get install -qq xvfb xdotool x11-utils xterm # Virtual frame buffer and X11 utils. # Install Winetricks. From 819a6a568926e7e356968a0d0fa3f5919dd7421b Mon Sep 17 00:00:00 2001 From: kenorb Date: Wed, 15 May 2019 22:10:12 +0100 Subject: [PATCH 34/66] Revert "Updates to trusty" This reverts commit 07f41776b31227ad75a2e9be9fe075c1068a7b6d. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 429c708a..2022ea1c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: generic sudo: required -dist: trusty +group: deprecated-2017Q4 services: - docker addons: From a4e4b2298127a215ae963971a00c8f2203861bee Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 16 May 2019 09:18:19 +0100 Subject: [PATCH 35/66] Installs Wine Mono --- scripts/provision.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 37a1c0d9..48e52768 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -125,7 +125,8 @@ case "$(uname -s)" in # Install wine and dependencies. # @see: https://wiki.winehq.org/Ubuntu - apt-get install -qq winehq-staging wine-gecko --install-recommends # Install Wine. + apt-get install -qq winehq-staging # Install Wine. + apt-get install -qq wine-gecko wine-mono # Install Wine recommended libraries. apt-get install -qq xvfb xdotool x11-utils xterm # Virtual frame buffer and X11 utils. # Install Winetricks. From f75de29e02c0bdf52440717e5426270872287c85 Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 16 May 2019 10:12:08 +0100 Subject: [PATCH 36/66] Installs Charles proxy --- Dockerfile | 1 + scripts/provision.sh | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/Dockerfile b/Dockerfile index e6513db6..539bab40 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,6 +25,7 @@ WORKDIR /home/ubuntu ARG BT_DEST=/opt/results ARG MT_VER ARG PROVISION_AHK=1 +ARG PROVISION_CHARLES=0 ARG PROVISION_SSH=0 ARG PROVISION_SUDO=1 ARG PROVISION_VNC=1 diff --git a/scripts/provision.sh b/scripts/provision.sh index 48e52768..3b978b1f 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -111,6 +111,16 @@ case "$(uname -s)" in # Adds APT Wine repository. add-apt-repository -y "deb http://dl.winehq.org/wine-builds/ubuntu/ ${DISTRIB_CODENAME:-xenial} main" + # Install Charles proxy. + if [ -n "$PROVISION_CHARLES" ]; then + # Adds GPG release key. + apt-key add < <(curl -S https://www.charlesproxy.com/packages/apt/PublicKey) + # Adds APT Wine repository. + add-apt-repository -y "deb https://www.charlesproxy.com/packages/apt/ charles-proxy main" + # Install HTTPS transport driver. + apt-get install apt-transport-https + fi + # Update APT index. [ -z "$NO_APT_UPDATE" ] && ( echo "Updating APT packages..." >&2 @@ -157,6 +167,11 @@ case "$(uname -s)" in fi fi + # Install Charles proxy. + if [ -n "$PROVISION_CHARLES" ]; then + apt-get install charles-proxy3 + fi + # Setup VNC. if [ -n "$PROVISION_VNC" ]; then echo "Installing VNC..." >&2 From d3f4587746974da9a75dd61e08498a5b40aeec1f Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 16 May 2019 11:22:56 +0100 Subject: [PATCH 37/66] Installs Mono --- Dockerfile | 1 + scripts/provision.sh | 28 ++++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 539bab40..bd1db1d2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,6 +26,7 @@ ARG BT_DEST=/opt/results ARG MT_VER ARG PROVISION_AHK=1 ARG PROVISION_CHARLES=0 +ARG PROVISION_MONO=1 ARG PROVISION_SSH=0 ARG PROVISION_SUDO=1 ARG PROVISION_VNC=1 diff --git a/scripts/provision.sh b/scripts/provision.sh index 3b978b1f..353226ab 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -136,7 +136,7 @@ case "$(uname -s)" in # Install wine and dependencies. # @see: https://wiki.winehq.org/Ubuntu apt-get install -qq winehq-staging # Install Wine. - apt-get install -qq wine-gecko wine-mono # Install Wine recommended libraries. + apt-get install -qq wine-gecko # Install Wine recommended libraries. apt-get install -qq xvfb xdotool x11-utils xterm # Virtual frame buffer and X11 utils. # Install Winetricks. @@ -154,7 +154,7 @@ case "$(uname -s)" in xdpyinfo &>/dev/null || (! pgrep -a Xvfb && Xvfb \$DISPLAY -screen 0 1024x768x16) & wineboot -i wget -qP /tmp -nc 'https://github.com/Lexikos/AutoHotkey_L/releases/download/v1.1.30.01/AutoHotkey_1.1.30.01_setup.exe' && \ - wine /tmp/AutoHotkey_*.exe /S /D='C:\\Apps\\AHK' && \ + wine64 /tmp/AutoHotkey_*.exe /S /D='C:\\Apps\\AHK' && \ rm -v /tmp/AutoHotkey_*.exe && \ (pkill Xvfb || true) " @@ -172,6 +172,30 @@ case "$(uname -s)" in apt-get install charles-proxy3 fi + # Install Mono. + if [ -n "$PROVISION_MONO" ]; then + echo "Installing Wine Mono..." >&2 + apt-get install -qq wine-mono + su - $user -c " + set -x + export DISPLAY=:1.0 + export WINEDLLOVERRIDES=mscoree,mshtml= + echo \$DISPLAY + xdpyinfo &>/dev/null || (! pgrep -a Xvfb && Xvfb \$DISPLAY -screen 0 1024x768x16) & + wget -qP /tmp -nc 'http://dl.winehq.org/wine/wine-mono/4.8.3/wine-mono-4.8.3.msi' && \ + wine64 msiexec /i /tmp/wine-mono-4.8.3.msi + rm -v /tmp/*.msi && \ + (pkill Xvfb || true) + " + mono_path=$(su - $user -c 'winepath -u "C:\windows\mono"'); + if [ -d "$mono_path" ]; then + echo "Mono installed successfully!" >&2 + else + echo "Error: Mono installation failed!" >&2 + exit 1 + fi + fi + # Setup VNC. if [ -n "$PROVISION_VNC" ]; then echo "Installing VNC..." >&2 From d1bbe4ef7e26143b3b13a9df0ffa7f33481cd165 Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 16 May 2019 11:38:24 +0100 Subject: [PATCH 38/66] Corrects boolean conditions --- scripts/provision.sh | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 353226ab..a7a8b172 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -5,8 +5,8 @@ # # Initialize script. -[ -n "$OPT_NOERR" ] || set -e -[ -n "$OPT_TRACE" ] && set -x +(( "$OPT_NOERR" )) || set -e +(( "$OPT_TRACE" )) && set -x if [ ! -d /vagrant -a ! -d /home/travis -a ! -f /.dockerenv ]; then echo "Error: This script needs to be run within container." >&2 exit 1 @@ -90,7 +90,7 @@ case "$(uname -s)" in fi # Update APT index. - [ -z "$NO_APT_UPDATE" ] && ( + ! (( "${NO_APT_UPDATE:-0}" )) && ( echo "Updating APT packages..." >&2 apt-get -qq update ) @@ -112,17 +112,17 @@ case "$(uname -s)" in add-apt-repository -y "deb http://dl.winehq.org/wine-builds/ubuntu/ ${DISTRIB_CODENAME:-xenial} main" # Install Charles proxy. - if [ -n "$PROVISION_CHARLES" ]; then + if (( "$PROVISION_CHARLES" )); then # Adds GPG release key. apt-key add < <(curl -S https://www.charlesproxy.com/packages/apt/PublicKey) # Adds APT Wine repository. add-apt-repository -y "deb https://www.charlesproxy.com/packages/apt/ charles-proxy main" # Install HTTPS transport driver. - apt-get install apt-transport-https + apt-get install -qq apt-transport-https fi # Update APT index. - [ -z "$NO_APT_UPDATE" ] && ( + ! (( "${NO_APT_UPDATE:-0}" )) && ( echo "Updating APT packages..." >&2 apt-get -qq update ) @@ -144,7 +144,7 @@ case "$(uname -s)" in curl -sL ${winetricks_url} | install /dev/stdin /usr/local/bin/winetricks # Install AHK. - if [ -n "$PROVISION_AHK" ]; then + if (( "$PROVISION_AHK" )); then echo "Installing AutoHotkey..." >&2 su - $user -c " set -x @@ -168,12 +168,12 @@ case "$(uname -s)" in fi # Install Charles proxy. - if [ -n "$PROVISION_CHARLES" ]; then - apt-get install charles-proxy3 + if (( "$PROVISION_CHARLES" )); then + apt-get install -qq charles-proxy3 fi # Install Mono. - if [ -n "$PROVISION_MONO" ]; then + if (( "$PROVISION_MONO" )); then echo "Installing Wine Mono..." >&2 apt-get install -qq wine-mono su - $user -c " @@ -197,7 +197,7 @@ case "$(uname -s)" in fi # Setup VNC. - if [ -n "$PROVISION_VNC" ]; then + if (( "$PROVISION_VNC" )); then echo "Installing VNC..." >&2 apt-get install -qq x11vnc fluxbox fi @@ -219,14 +219,14 @@ case "$(uname -s)" in ) & # Setup SSH if requested. - if [ -n "$PROVISION_SSH" ]; then + if (( "$PROVISION_SSH" )); then apt-get install -qq openssh-server [ ! -d /var/run/sshd ] && mkdir -v /var/run/sshd sed -i'.bak' 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd fi # Setup sudo if requested. - if [ -n "$PROVISION_SUDO" ]; then + if (( "$PROVISION_SUDO" )); then apt-get install -qq sudo sed -i'.bak' "s/^%sudo.*$/%sudo ALL=(ALL:ALL) NOPASSWD:ALL/g" /etc/sudoers fi From 0fd5b4d833b4fe1a2f55f4e200cbcc3c2b0ffcd1 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 17 May 2019 10:13:34 +0100 Subject: [PATCH 39/66] Installs .NET instead of Mono --- Dockerfile | 2 +- scripts/install_mt4.sh | 3 +++ scripts/install_mt5.sh | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index bd1db1d2..bc3d682e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,7 +26,7 @@ ARG BT_DEST=/opt/results ARG MT_VER ARG PROVISION_AHK=1 ARG PROVISION_CHARLES=0 -ARG PROVISION_MONO=1 +ARG PROVISION_MONO=0 ARG PROVISION_SSH=0 ARG PROVISION_SUDO=1 ARG PROVISION_VNC=1 diff --git a/scripts/install_mt4.sh b/scripts/install_mt4.sh index b03006af..6cb29f8c 100755 --- a/scripts/install_mt4.sh +++ b/scripts/install_mt4.sh @@ -27,6 +27,9 @@ wineboot -u echo "Installing winhttp..." >&2 winetricks -q winhttp +echo "Installing .NET..." >&2 +winetricks -q dotnet472 + echo "Installing platform..." >&2 winetricks -q -v mt4 diff --git a/scripts/install_mt5.sh b/scripts/install_mt5.sh index 11d4b511..15253dff 100755 --- a/scripts/install_mt5.sh +++ b/scripts/install_mt5.sh @@ -27,6 +27,9 @@ wineboot -u echo "Installing winhttp..." >&2 winetricks -q winhttp +echo "Installing .NET..." >&2 +winetricks -q dotnet472 + echo "Installing platform..." >&2 winetricks -q "$CWD"/install_mt5.verb From fbdef0f34b72c643cc6b9c15bd6661c854c76a46 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 17 May 2019 11:11:50 +0100 Subject: [PATCH 40/66] Install Charles Root Certificate --- Dockerfile | 2 +- scripts/provision.sh | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index bc3d682e..dfe52830 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,7 @@ WORKDIR /home/ubuntu ARG BT_DEST=/opt/results ARG MT_VER ARG PROVISION_AHK=1 -ARG PROVISION_CHARLES=0 +ARG PROVISION_CHARLES=1 ARG PROVISION_MONO=0 ARG PROVISION_SSH=0 ARG PROVISION_SUDO=1 diff --git a/scripts/provision.sh b/scripts/provision.sh index a7a8b172..005049a7 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -113,6 +113,8 @@ case "$(uname -s)" in # Install Charles proxy. if (( "$PROVISION_CHARLES" )); then + # Install Charles Root Certificate (if available). + (curl -L chls.pro/ssl | grep CERTIFICATE) && curl -L chls.pro/ssl | tee -a /etc/ssl/certs/ca-certificates.crt # Adds GPG release key. apt-key add < <(curl -S https://www.charlesproxy.com/packages/apt/PublicKey) # Adds APT Wine repository. From 254be883b3382cea5053ad74f9eb4bee2f01adf9 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 17 May 2019 12:06:47 +0100 Subject: [PATCH 41/66] Improves installing Charles Root Certificate --- scripts/provision.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 005049a7..4fa15774 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -114,7 +114,7 @@ case "$(uname -s)" in # Install Charles proxy. if (( "$PROVISION_CHARLES" )); then # Install Charles Root Certificate (if available). - (curl -L chls.pro/ssl | grep CERTIFICATE) && curl -L chls.pro/ssl | tee -a /etc/ssl/certs/ca-certificates.crt + curl -L chls.pro/ssl > /usr/local/share/ca-certificates/charles.crt && update-ca-certificates # Adds GPG release key. apt-key add < <(curl -S https://www.charlesproxy.com/packages/apt/PublicKey) # Adds APT Wine repository. From cd4263fba5128eaa7a4c38c8fb1fc146bdde5d2a Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 17 May 2019 12:26:02 +0100 Subject: [PATCH 42/66] Adds HTTP_PROXY/HTTPS_PROXY as arguments --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index dfe52830..0cb0850f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,6 +23,8 @@ WORKDIR /home/ubuntu # Build-time variables. ARG BT_DEST=/opt/results +ARG HTTPS_PROXY +ARG HTTP_PROXY ARG MT_VER ARG PROVISION_AHK=1 ARG PROVISION_CHARLES=1 From ab0ad349bfa192c76ec71f106ae2df1642a40c22 Mon Sep 17 00:00:00 2001 From: kenorb Date: Mon, 20 May 2019 13:14:47 +0100 Subject: [PATCH 43/66] Caches /var/lib/docker for CI --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 2022ea1c..284d5aca 100644 --- a/.travis.yml +++ b/.travis.yml @@ -79,5 +79,6 @@ cache: apt: true pip: true directories: + - /var/lib/docker - $HOME/.cache - $HOME/.docker From 0b81eb7c3f4627ec8d39a7eebc20361cb1a6d59d Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 24 May 2019 23:38:21 +0100 Subject: [PATCH 44/66] Install Squid proxy --- Dockerfile | 1 + scripts/provision.sh | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/Dockerfile b/Dockerfile index 0cb0850f..3eb4fde5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,6 +30,7 @@ ARG PROVISION_AHK=1 ARG PROVISION_CHARLES=1 ARG PROVISION_MONO=0 ARG PROVISION_SSH=0 +ARG PROVISION_SQUID=1 ARG PROVISION_SUDO=1 ARG PROVISION_VNC=1 diff --git a/scripts/provision.sh b/scripts/provision.sh index 4fa15774..7d027065 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -95,6 +95,11 @@ case "$(uname -s)" in apt-get -qq update ) + # Install Squid proxy. + if (( "$PROVISION_SQUID" )); then + apt-get install -qq squid + fi + # Install curl and wget if not present. command -v curl &>/dev/null || apt-get install -qq curl command -v wget &>/dev/null || apt-get install -qq wget From 64353e0b72a7ed6b7acc2d7dd07ecafc01ee01e1 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 24 May 2019 23:38:26 +0100 Subject: [PATCH 45/66] Revert "Install Squid proxy" This reverts commit 0b81eb7c3f4627ec8d39a7eebc20361cb1a6d59d. --- Dockerfile | 1 - scripts/provision.sh | 5 ----- 2 files changed, 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3eb4fde5..0cb0850f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,7 +30,6 @@ ARG PROVISION_AHK=1 ARG PROVISION_CHARLES=1 ARG PROVISION_MONO=0 ARG PROVISION_SSH=0 -ARG PROVISION_SQUID=1 ARG PROVISION_SUDO=1 ARG PROVISION_VNC=1 diff --git a/scripts/provision.sh b/scripts/provision.sh index 7d027065..4fa15774 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -95,11 +95,6 @@ case "$(uname -s)" in apt-get -qq update ) - # Install Squid proxy. - if (( "$PROVISION_SQUID" )); then - apt-get install -qq squid - fi - # Install curl and wget if not present. command -v curl &>/dev/null || apt-get install -qq curl command -v wget &>/dev/null || apt-get install -qq wget From fb178964778c72ee5cb08e6d8bbf845e14c5f2c5 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 24 May 2019 23:39:46 +0100 Subject: [PATCH 46/66] Do not load and save Docker container --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 71423355..f80c24a4 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ DOCKER_CFG := ${HOME}/.docker/config.json BUILD_DATE := $(shell date -u +"%Y-%m-%dT%H:%M:%SZ") BUILD_VREF := $(shell git rev-parse --short HEAD) .PHONY: docker-load docker-build docker-login docker-tag docker-pull docker-push docker-run docker-save docker-clean -docker-ci: docker-load docker-build docker-save +docker-ci: docker-build docker-load: if [[ -f $(DOCKER_TAR) ]]; then gzip -dc $(DOCKER_TAR) | docker load; fi docker-build: From 5119f4cd735e0ebfe279a115c950fb34fa41fac4 Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 26 May 2019 01:07:06 +0100 Subject: [PATCH 47/66] Revert "Uses the latest MT4 version" This reverts commit d61abe6ffce03dcd653db6bc511e7812a0c88c7b. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 0cb0850f..4bd1a9b9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -46,7 +46,7 @@ RUN chown ubuntu:root $BT_DEST VOLUME $BT_DEST # Default backtest inputs. -ENV MT_VER 4 +ENV MT_VER 4.0.0.1010 # Run test. USER ubuntu From 1485b83e755660d222850e65803c6b2404f94216 Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 26 May 2019 01:42:30 +0100 Subject: [PATCH 48/66] Uses curl as winetricks downloader for shorter output --- scripts/install_mt4.sh | 1 + scripts/install_mt5.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/scripts/install_mt4.sh b/scripts/install_mt4.sh index 6cb29f8c..f0b506cb 100755 --- a/scripts/install_mt4.sh +++ b/scripts/install_mt4.sh @@ -7,6 +7,7 @@ type winetricks >/dev/null # Load variables. export WINETRICKS_DOWNLOADER_RETRIES=${WINETRICKS_DOWNLOADER_RETRIES:-10} +export WINETRICKS_DOWNLOADER=curl # Initializing echo "Initializing..." >&2 diff --git a/scripts/install_mt5.sh b/scripts/install_mt5.sh index 15253dff..b07c03b4 100755 --- a/scripts/install_mt5.sh +++ b/scripts/install_mt5.sh @@ -7,6 +7,7 @@ type winetricks >/dev/null # Load variables. export WINETRICKS_DOWNLOADER_RETRIES=${WINETRICKS_DOWNLOADER_RETRIES:-10} +export WINETRICKS_DOWNLOADER=curl # Initializing echo "Initializing..." >&2 From b4092b6566b297275d32cc6d798a0aebf3623955 Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 26 May 2019 01:47:27 +0100 Subject: [PATCH 49/66] Uses eval script to install specific platform version --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4bd1a9b9..4681da3e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,7 @@ WORKDIR /home/ubuntu ARG BT_DEST=/opt/results ARG HTTPS_PROXY ARG HTTP_PROXY -ARG MT_VER +ARG MT_VER=4.0.0.1010 ARG PROVISION_AHK=1 ARG PROVISION_CHARLES=1 ARG PROVISION_MONO=0 @@ -46,13 +46,13 @@ RUN chown ubuntu:root $BT_DEST VOLUME $BT_DEST # Default backtest inputs. -ENV MT_VER 4.0.0.1010 +ENV MT_VER $MT_VER # Run test. USER ubuntu ADD conf /opt/conf ADD tests /opt/tests -RUN install_mt4.sh +RUN eval.sh install_mt $MT_VER RUN eval.sh install_mteditor RUN run_backtest.sh -s PrintPaths -v From 58bceef135ffafc3ddfa307634ccbc8e7bc6d002 Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 26 May 2019 18:34:47 +0100 Subject: [PATCH 50/66] Updates accounts.ini with access to 5 digits --- conf/accounts-d5.ini | Bin 14403 -> 14403 bytes conf/mt4-tester.ini | 6 ++++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/conf/accounts-d5.ini b/conf/accounts-d5.ini index aa9382e292e830eb1e6236d559d21c52e3e8496f..0f0297d39c518af32333e9f1840eea0f16a7b52e 100644 GIT binary patch literal 14403 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 RVD#s58beF-FQS2~e*ufr09^n8 diff --git a/conf/mt4-tester.ini b/conf/mt4-tester.ini index 598c8b18..1cd1fb96 100644 --- a/conf/mt4-tester.ini +++ b/conf/mt4-tester.ini @@ -10,13 +10,15 @@ Profile=default ;MarketWatch=set2.set ; Login - the number of the account to connect to at startup. If this parameter is not specified, the current login will be used. -Login=1809640 +Login=3923113 ; Password - the password that allows entering the system. This parameter will be ignored if the client terminal stores personal data on the disk and the account to be connected is in the list. Password=xxx +; m1tsapk +; ple3eay (investor) ; Server - the name of the trade server to be connected to. The server name is the same as the name of the corresponding .srv file stored in the /config directory. This parameter will be ignored if the information about the account to be connected was stored on the disk (e.g. MetaQuotes-demo). -Server=default +Server=FXCM-USDDemo01 ; AutoConfiguration - "true" or "false" depending on whether the autoconfiguration setting should be enabled or not. If this parameter is not specified, the value from the current server settings will be used. AutoConfiguration=false From f5ffb8cd02febd25ad71ee4a30e24e5579646cdb Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 26 May 2019 18:46:53 +0100 Subject: [PATCH 51/66] Fixes 0037:err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution. --- scripts/provision.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/provision.sh b/scripts/provision.sh index 4fa15774..8b9e2dd5 100755 --- a/scripts/provision.sh +++ b/scripts/provision.sh @@ -138,7 +138,7 @@ case "$(uname -s)" in # Install wine and dependencies. # @see: https://wiki.winehq.org/Ubuntu apt-get install -qq winehq-staging # Install Wine. - apt-get install -qq wine-gecko # Install Wine recommended libraries. + apt-get install -qq wine-gecko winbind # Install Wine recommended libraries. apt-get install -qq xvfb xdotool x11-utils xterm # Virtual frame buffer and X11 utils. # Install Winetricks. From d77f8e555e943be77d062cdc773978bb2fb0d79c Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 26 May 2019 18:53:54 +0100 Subject: [PATCH 52/66] Enables CI test for lot step 5 as per fix in 58bceef135ffafc3ddfa307634ccbc8e7bc6d002 --- .travis.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 284d5aca..08f49d8a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,9 +28,7 @@ env: - CMD="docker-compose run $DOCKER_ARG RunCompileMql" - CMD="docker-compose run $DOCKER_ARG ScriptPrintPaths" - CMD="docker-compose run $DOCKER_ARG TestHSTHeader; docker-compose run TestFXTHeader" - - CMD="docker-compose run $DOCKER_ARG TestLotstep4" -# @fixme: Error: Expected lot step for 5 digits: 0.01, found: 0.1. -# - CMD="docker-compose run $DOCKER_ARG TestLotstep5" + - CMD="docker-compose run $DOCKER_ARG TestLotstep4; docker-compose run $DOCKER_ARG TestLotstep5" - CMD="docker-compose run $DOCKER_ARG TestTimeframes" - CMD="docker-compose run $DOCKER_ARG TestBands" - CMD="docker-compose run $DOCKER_ARG TestEnvelopes" From 80acff79e160c6fff61b326de27493b34c107016 Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 26 May 2019 20:11:44 +0100 Subject: [PATCH 53/66] Avoids copying accounts.ini when there is not write access --- scripts/.funcs.cmds.inc.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/.funcs.cmds.inc.sh b/scripts/.funcs.cmds.inc.sh index 8f6aedc9..4d9ecaf1 100644 --- a/scripts/.funcs.cmds.inc.sh +++ b/scripts/.funcs.cmds.inc.sh @@ -958,5 +958,7 @@ set_digits() { set_symbol_value $digits $SRAW_OFF_DIGITS psize="0.$(for ((i=1;i<=digits-1;i++)); do printf 0; done)1" set_symbol_double $psize $SRAW_OFF_PSIZE - cp $VFLAG "$ROOT/conf/accounts-d${digits}.ini" "$TERMINAL_DIR"/config/accounts.ini + if [ -w "$TERMINAL_DIR"/config/accounts.ini ]; then + cp $VFLAG "$ROOT/conf/accounts-d${digits}.ini" "$TERMINAL_DIR"/config/accounts.ini + fi } From ebf4660a9b57c6df322b32518b87598f54e28877 Mon Sep 17 00:00:00 2001 From: kenorb Date: Sun, 26 May 2019 20:17:29 +0100 Subject: [PATCH 54/66] Another attempt to fix 5 digits volume --- conf/accounts-d5.ini | Bin 14403 -> 14403 bytes conf/mt4-tester.ini | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/accounts-d5.ini b/conf/accounts-d5.ini index 0f0297d39c518af32333e9f1840eea0f16a7b52e..083e365784b867270bdc9e96776c6b11c8ed9671 100644 GIT binary patch literal 14403 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 Date: Mon, 27 May 2019 03:27:13 +0100 Subject: [PATCH 55/66] Disables CI test for 5 digit volume --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 08f49d8a..b3533047 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,8 @@ env: - CMD="docker-compose run $DOCKER_ARG RunCompileMql" - CMD="docker-compose run $DOCKER_ARG ScriptPrintPaths" - CMD="docker-compose run $DOCKER_ARG TestHSTHeader; docker-compose run TestFXTHeader" - - CMD="docker-compose run $DOCKER_ARG TestLotstep4; docker-compose run $DOCKER_ARG TestLotstep5" + - CMD="docker-compose run $DOCKER_ARG TestLotstep4" +# - CMD="docker-compose run $DOCKER_ARG TestLotstep5" # @fixme - CMD="docker-compose run $DOCKER_ARG TestTimeframes" - CMD="docker-compose run $DOCKER_ARG TestBands" - CMD="docker-compose run $DOCKER_ARG TestEnvelopes" From 669eb87df115c996f40ddb25029348252aea4e12 Mon Sep 17 00:00:00 2001 From: kenorb Date: Wed, 12 Jun 2019 23:49:48 +0100 Subject: [PATCH 56/66] Improves finding the source code for compiling, instead of binary --- scripts/.funcs.cmds.inc.sh | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/scripts/.funcs.cmds.inc.sh b/scripts/.funcs.cmds.inc.sh index 4d9ecaf1..f078f26a 100644 --- a/scripts/.funcs.cmds.inc.sh +++ b/scripts/.funcs.cmds.inc.sh @@ -409,8 +409,14 @@ ea_find() { file=${file##*/} fi [ -f "$file" ] && { echo "$file"; return; } - local exact=$(find -L . "$ROOT" ~ -maxdepth 4 -type f '(' -iname "$file" -o -iname "${file%.*}.mq?" -o -name "${file%.*}.ex?" ')' -print -quit) - local match=$(find -L . "$ROOT" ~ -maxdepth 4 -type f '(' -iname "*${file%.*}*.mq?" -o -iname "*${file%.*}*.ex?" ')' -print -quit) + exact=$( + find -L . "$ROOT" ~ -maxdepth 4 -type f '(' -iname "$file" -o -iname "${file%.*}.mq?" ')' -print -quit || \ + find -L . "$ROOT" ~ -maxdepth 4 -type f '(' -iname "$file" -o -name "${file%.*}.ex?" ')' -print -quit + ) + [ -z "$exact" ] && match=$( + find -L . "$ROOT" ~ -maxdepth 4 -type f -iname "*${file%.*}*.mq?" -print -quit || \ + find -L . "$ROOT" ~ -maxdepth 4 -type f -iname "*${file%.*}*.ex?" -print -quit + ) [ -n "$exact" ] && echo ${exact#./} || echo ${match#./} cd - &>/dev/null } @@ -429,8 +435,14 @@ script_find() { file=${file##*/} fi [ -f "$file" ] && { echo "$file"; return; } - local exact=$(find -L . "$ROOT" ~ -maxdepth 4 -type f '(' -iname "$file" -o -name "${file%.*}.ex?" ')' -print -quit) - local match=$(find -L . "$ROOT" ~ -maxdepth 4 -type f '(' -iname "*${file%.*}*.mq?" -o -iname "*${file%.*}*.ex?" ')' -print -quit) + exact=$( + find -L . "$ROOT" ~ -maxdepth 4 -type f '(' -iname "$file" -o -iname "${file%.*}.mq?" ')' -print -quit || \ + find -L . "$ROOT" ~ -maxdepth 4 -type f '(' -iname "$file" -o -iname "${file%.*}.ex?" ')' -print -quit + ) + [ -z "$exact" ] && match=$( + find -L . "$ROOT" ~ -maxdepth 4 -type f -iname "*${file%.*}*.mq?" -print -quit || \ + find -L . "$ROOT" ~ -maxdepth 4 -type f -iname "*${file%.*}*.ex?" -print -quit + ) [ -n "$exact" ] && echo ${exact#./} || echo ${match#./} cd - &>/dev/null } From 05dbe652e69a978364734b3bce673bb3718a33a0 Mon Sep 17 00:00:00 2001 From: kenorb Date: Tue, 18 Jun 2019 19:21:46 +0100 Subject: [PATCH 57/66] Do not copy accounts.ini as it is encrypted and bound to OS and hardware --- conf/accounts-d4.ini | Bin 20 -> 0 bytes conf/accounts-d5.ini | Bin 14403 -> 0 bytes scripts/.funcs.cmds.inc.sh | 3 --- 3 files changed, 3 deletions(-) delete mode 100644 conf/accounts-d4.ini delete mode 100644 conf/accounts-d5.ini diff --git a/conf/accounts-d4.ini b/conf/accounts-d4.ini deleted file mode 100644 index 2c583a2f71d019300ef349491453093dab27a425..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20 ccmbQl$iQ%VzTUb!3+7aJ1c;UAPJZ_c09X47rT_o{ diff --git a/conf/accounts-d5.ini b/conf/accounts-d5.ini deleted file mode 100644 index 083e365784b867270bdc9e96776c6b11c8ed9671..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14403 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 Date: Tue, 18 Jun 2019 23:23:27 +0100 Subject: [PATCH 58/66] Prints lot step when changing --- docker-compose.yml | 4 ++-- scripts/run_backtest.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 917ab732..e00d14c9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -95,7 +95,7 @@ services: BT_MONTHS: 1 RUN_ON_START: clean_ea TestLotstep4: - command: run_backtest -e TestLotstep -D 4 + command: run_backtest -e TestLotstep -D4 -l 0.1 image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts @@ -103,7 +103,7 @@ services: BT_DAYS: 10-12 BT_MONTHS: 1 TestLotstep5: - command: run_backtest -e TestLotstep -D 5 + command: run_backtest -e TestLotstep -D5 -l 0.01 image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts diff --git a/scripts/run_backtest.sh b/scripts/run_backtest.sh index 1f99f5f6..3fc5ccf7 100755 --- a/scripts/run_backtest.sh +++ b/scripts/run_backtest.sh @@ -664,7 +664,7 @@ fi # Sets a lot step if present. if [ -n "$BT_LOTSTEP" ]; then - echo "Configuring lot step ($BT_LOTSTEP)..." >&2 + echo "Setting lot step in FXT files ($BT_LOTSTEP)..." >&2 set_lotstep $BT_LOTSTEP fi From db6fde2a064211c82bf1234d08e338de57612da4 Mon Sep 17 00:00:00 2001 From: kenorb Date: Tue, 18 Jun 2019 23:55:32 +0100 Subject: [PATCH 59/66] Uses SymbolInfoDouble instead of MarketInfo --- tests/TestLotstep.mq4 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/TestLotstep.mq4 b/tests/TestLotstep.mq4 index e2932a5c..1f9d40d1 100644 --- a/tests/TestLotstep.mq4 +++ b/tests/TestLotstep.mq4 @@ -27,10 +27,11 @@ */ #property strict + int OnInit() { long symbol_spread = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD); int real_spread = (int)MathRound((Ask - Bid) * MathPow(10, Digits)); - double lot_step = MarketInfo(_Symbol, MODE_LOTSTEP); + double lot_step = SymbolInfoDouble(_symbol, SYMBOL_VOLUME_STEP); // Same as: MarketInfo(symbol, MODE_LOTSTEP); Print("Testing lot step..."); PrintFormat("Symbol digits : %g", Digits); PrintFormat("Lot step : %g", lot_step); From 10709cfc31af1a8e84fad76fc46c7c8818b35f89 Mon Sep 17 00:00:00 2001 From: kenorb Date: Wed, 19 Jun 2019 00:19:37 +0100 Subject: [PATCH 60/66] Adds test for account leverage --- docker-compose.yml | 9 +++++++++ tests/TestLeverage.mq4 | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 tests/TestLeverage.mq4 diff --git a/docker-compose.yml b/docker-compose.yml index e00d14c9..0de3c2eb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -94,6 +94,15 @@ services: BT_DAYS: 10-12 BT_MONTHS: 1 RUN_ON_START: clean_ea + TestLeverage: + command: run_backtest -e TestLeverage + image: ea31337/ea-tester:EURUSD-2018-DS + volumes: + - ./scripts:/opt/scripts + - ./tests:/opt/tests + environment: + BT_DAYS: 10-12 + BT_MONTHS: 1 TestLotstep4: command: run_backtest -e TestLotstep -D4 -l 0.1 image: ea31337/ea-tester:EURUSD-2018-DS diff --git a/tests/TestLeverage.mq4 b/tests/TestLeverage.mq4 new file mode 100644 index 00000000..77f1ba75 --- /dev/null +++ b/tests/TestLeverage.mq4 @@ -0,0 +1,36 @@ +//+------------------------------------------------------------------+ +//| TestLeverage | +//| Copyright 2016-2019, 31337 Investments Ltd | +//| https://github.com/EA31337 | +//+------------------------------------------------------------------+ + +/* + * This file is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +//+------------------------------------------------------------------+ +//| Test whether account leverage is correct. +//| @docs: https://www.mql5.com/en/docs/constants/environment_state/accountinformation +//+------------------------------------------------------------------+ + +#property strict + +/** + * Implements Init even handler. + */ +int OnInit() { + long leverage = AccountInfoInteger(ACCOUNT_LEVERAGE); + PrintFormat("Account leverage : %d", leverage); + return INIT_SUCCEEDED; +} From 3123c7a3d081358f86a2524384ebc03afe0ecdf4 Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 20 Jun 2019 23:22:18 +0100 Subject: [PATCH 61/66] Disables broken CI tests --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index b3533047..a21a1344 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,9 +34,9 @@ env: - CMD="docker-compose run $DOCKER_ARG TestBands" - CMD="docker-compose run $DOCKER_ARG TestEnvelopes" - CMD="docker-compose run $DOCKER_ARG TestModellingQuality" - - CMD="docker-compose run $DOCKER_ARG RunInstallMt4" - - CMD="docker-compose run $DOCKER_ARG RunInstallMt4x" - - CMD="docker-compose run $DOCKER_ARG RunInstallMt5" +# - CMD="docker-compose run $DOCKER_ARG RunInstallMt4" # @fixme +# - CMD="docker-compose run $DOCKER_ARG RunInstallMt4x" # @fixme +# - CMD="docker-compose run $DOCKER_ARG RunInstallMt5" # @fixme - CMD="docker-compose run $DOCKER_ARG DockerLargeFiles" # Tests which suppose to be working in older versions only. From 0d9b556b0b057751e30babfd15cd0e5dc33fe87b Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 20 Jun 2019 23:28:58 +0100 Subject: [PATCH 62/66] Adds extra local volumes --- docker-compose.yml | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 0de3c2eb..925b058f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -62,7 +62,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts -# - ../EA-Tester/scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -72,6 +73,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -81,6 +84,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -90,6 +95,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -100,6 +107,7 @@ services: volumes: - ./scripts:/opt/scripts - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -108,6 +116,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -116,6 +126,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -124,6 +136,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -132,6 +146,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -141,6 +157,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -149,6 +167,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -157,6 +177,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -165,6 +187,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -173,6 +197,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -181,6 +207,8 @@ services: image: ea31337/ea-tester:EURUSD-2018-DS volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf environment: BT_DAYS: 10-12 BT_MONTHS: 1 @@ -192,3 +220,5 @@ services: image: ea31337/ea-tester:dev volumes: - ./scripts:/opt/scripts + - ./tests:/opt/tests + - ./conf:/opt/conf From 00a5630f6267827e12a65bac6b06cf5f8bc8fd8f Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 20 Jun 2019 23:31:16 +0100 Subject: [PATCH 63/66] CI test to install MT4&5 after a build --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index a21a1344..e280de0e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,6 +24,7 @@ env: - CMD="docker-compose run RunHelp; scripts/eval.sh help; scripts/run_backtest.sh -?" - CMD="sudo scripts/provision.sh" - CMD="make docker-ci DOCKER_TAG=$DOCKER_TAG; [[ '$TRAVIS_PULL_REQUEST' = 'false' ]] && make docker-push DOCKER_TAG=$DOCKER_TAG || true" +# - CMD="make docker-ci DOCKER_TAG=$DOCKER_TAG && docker run ea-tester:$DOCKER_TAG install_mt 5" # @fixme - CMD="docker-compose run $DOCKER_ARG TestSyntaxVagrantfile; docker-compose run $DOCKER_ARG TestSyntaxBash; docker-compose run $DOCKER_ARG TestSyntaxShellcheck" - CMD="docker-compose run $DOCKER_ARG RunCompileMql" - CMD="docker-compose run $DOCKER_ARG ScriptPrintPaths" From 1f53e0ec0d25d5158b5e66a0cb1e814e5f3b13e0 Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 20 Jun 2019 20:28:00 +0100 Subject: [PATCH 64/66] Adds variables for MT5 --- scripts/.vars.inc.sh | 4 ++++ scripts/install_mt5.sh | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/scripts/.vars.inc.sh b/scripts/.vars.inc.sh index 9945832c..759f9dc1 100644 --- a/scripts/.vars.inc.sh +++ b/scripts/.vars.inc.sh @@ -23,6 +23,10 @@ is_vm && set -x TERMINAL_EXE="$(find "$ROOT" "$OUT" "$HOME" -not -path "*/WebInstall/*" -name terminal.exe -print -quit)" TERMINAL_DIR="${TERMINAL_DIR:-$([ -f "$TERMINAL_EXE" ] && dirname "$TERMINAL_EXE" || true)}" MTEDITOR_EXE="$([ -d "$TERMINAL_DIR" ] && find "$TERMINAL_DIR" -name metaeditor.exe -print -quit || true)" +TERMINAL5_EXE="$(find "$ROOT" "$OUT" "$HOME" -not -path "*/WebInstall/*" -name terminal64.exe -print -quit)" +TERMINAL5_DIR="${TERMINAL5_DIR:-$([ -f "$TERMINAL5_EXE" ] && dirname "$TERMINAL5_EXE" || true)}" +MTEDITOR5_EXE="$([ -d "$TERMINAL5_DIR" ] && find "$TERMINAL5_DIR" -name metaeditor64.exe -print -quit || true)" +MTTESTER5_EXE="$([ -d "$TERMINAL5_DIR" ] && find "$TERMINAL5_DIR" -name metatester64.exe -print -quit || true)" is_vm && set +x MQL_DIR="MQL4" if [ -n "$TERMINAL_DIR" ]; then diff --git a/scripts/install_mt5.sh b/scripts/install_mt5.sh index b07c03b4..ef5117f8 100755 --- a/scripts/install_mt5.sh +++ b/scripts/install_mt5.sh @@ -34,5 +34,12 @@ winetricks -q dotnet472 echo "Installing platform..." >&2 winetricks -q "$CWD"/install_mt5.verb -echo "Installation successful." >&2 +. "$CWD"/.vars.inc.sh +if [ -n "$TERMINAL5_DIR" ]; then + echo "Terminal path: $TERMINAL5_DIR" >&2 + echo "Installation successful." >&2 +else + echo "Installation failed!" >&2 + exit 1 +fi echo "${BASH_SOURCE[0]} done." >&2 From 2bbe2142fd2ff9ccca5d329f1eb1338d92140413 Mon Sep 17 00:00:00 2001 From: kenorb Date: Thu, 20 Jun 2019 23:35:42 +0100 Subject: [PATCH 65/66] Adds var cache folder for CI caching --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index e280de0e..d86988bc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -79,6 +79,7 @@ cache: apt: true pip: true directories: + - /var/cache - /var/lib/docker - $HOME/.cache - $HOME/.docker From 5686ea9528f7cf0e45e4a6493b87a4f73f10a348 Mon Sep 17 00:00:00 2001 From: kenorb Date: Fri, 21 Jun 2019 00:01:29 +0100 Subject: [PATCH 66/66] Fixes warning 181: implicit conversion from 'number' to 'string' --- tests/TestLotstep.mq4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/TestLotstep.mq4 b/tests/TestLotstep.mq4 index 1f9d40d1..47c57003 100644 --- a/tests/TestLotstep.mq4 +++ b/tests/TestLotstep.mq4 @@ -31,7 +31,7 @@ int OnInit() { long symbol_spread = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD); int real_spread = (int)MathRound((Ask - Bid) * MathPow(10, Digits)); - double lot_step = SymbolInfoDouble(_symbol, SYMBOL_VOLUME_STEP); // Same as: MarketInfo(symbol, MODE_LOTSTEP); + double lot_step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP); // Same as: MarketInfo(symbol, MODE_LOTSTEP); Print("Testing lot step..."); PrintFormat("Symbol digits : %g", Digits); PrintFormat("Lot step : %g", lot_step);