Last active
August 18, 2018 22:42
-
-
Save flare9x/b61818485854fdac04662e582b88e1a8 to your computer and use it in GitHub Desktop.
Indicator level exit
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Built on Julia v1.0 | |
# Indicator Exit | |
######################################## | |
# No overnight trades | |
######################################## | |
# dummy h l c | |
c = [2,3,4,5,6,7,10,7,4,5,5,3,2,1,3,4,5,10,11,12,13,14,15,11,5,6,5,6,7,8] | |
some_entry_signal = [0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0] # any type of signal entry | |
indicator_level = [0.1,0.1,0.5,0.9,0.9,0.9,0.9,0.9,0.2,0.1,0.5,0.4,0.8,0.9,0.95,0.1,0.1,0.5,0.9,0.9,0.9,0.9,0.9,0.2,0.1,0.5,0.4,0.8,0.9,0.95] | |
time_index = ["09:00","09:30","10:00","10:30","15:00","11:30","15:00","11:00","13:00","13:30","11:00","15:00","12:00","09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30","15:00","09:30","10:00", | |
"10:30","11:00","11:30","12:00","12:30","13:00"] | |
# Set indicator_levelicator exit cross over threshold | |
exit_level = 0.9 | |
# for loop for indicator exit | |
# note trade_state switches between on and off so we only trigger exit when in a trade | |
entry_out = zeros(size(some_entry_signal,1)) | |
exit_out = zeros(size(some_entry_signal,1)) | |
let trade_state = "off" | |
for i = 2:size(indicator_level,1) | |
#i = 19 | |
if some_entry_signal[i] == 1 | |
trade_state = "on" | |
entry_out[i] = 1 | |
else | |
entry_out[i] = 0 | |
end | |
# Only fire exit signal if in a trade | |
if trade_state == "on" && time_index[i] != "15:00" | |
if (indicator_level[i] >= exit_level) & (indicator_level[i-1] < exit_level) | |
exit_out[i] = 2 | |
trade_state = "off" | |
# if not in a trade do not trigger an exit | |
# Cross over | |
elseif (indicator_level[i] >= exit_level) & (indicator_level[i-1] < exit_level) && trade_state == "off" | |
exit_out[i] = 0 | |
end | |
elseif trade_state == "on" && time_index[i] == "15:00" | |
exit_out[i] = 2.0 | |
trade_state = "off" | |
end | |
end | |
end | |
# combine entry and exit | |
signal = entry_out .+ exit_out | |
# Fill the trade between entry and exit with 1's | |
all_signal = zeros(size(indicator_level,1)) | |
for i = 2:length(signal) | |
if signal[i] == 1.0 | |
all_signal[i] = 1.0 | |
end | |
if signal[i] == 0.0 && all_signal[i-1] == 1.0 | |
all_signal[i] = 1 | |
end | |
if signal[i-1] == 2.0 && signal[i] == 0.0 | |
all_signal[i-1] = 1.0 | |
end | |
end | |
# validate output is as intended | |
validation = hcat(other_signal_type,indicator_level,entry_out,exit_out,all_signal,time_index) | |
########################################### | |
# indicator_level entry and exit | |
########################################### | |
entry_level = 0.1 | |
exit_level = 0.9 | |
entry_out = zeros(size(signal,1)) | |
exit_out = zeros(size(signal,1)) | |
let trade_state = "off" | |
for i = 2:size(indicator_level,1) | |
#i = 19 | |
if (indicator_level[i] <= entry_level) && (indicator_level[i-1] > entry_level) == 1 | |
trade_state = "on" | |
entry_out[i] = 1 | |
else | |
entry_out[i] = 0 | |
end | |
# Only fire exit signal if in a trade | |
if trade_state == "on" && time_index[i] != "15:00" | |
if (indicator_level[i] >= exit_level) & (indicator_level[i-1] < exit_level) | |
exit_out[i] = 2 | |
trade_state = "off" | |
# if not in a trade do not trigger an exit | |
# Cross over | |
elseif (indicator_level[i] >= exit_level) & (indicator_level[i-1] < exit_level) && trade_state == "off" | |
exit_out[i] = 0 | |
end | |
elseif trade_state == "on" && time_index[i] == "15:00" | |
exit_out[i] = 2.0 | |
trade_state = "off" | |
end | |
end | |
end | |
# combine entry and exit | |
signal = entry_out .+ exit_out | |
# Fill the trade between entry and exit with 1's | |
all_signal = zeros(size(indicator_level,1)) | |
for i = 2:length(signal) | |
if signal[i] == 1.0 | |
all_signal[i] = 1.0 | |
end | |
if signal[i] == 0.0 && all_signal[i-1] == 1.0 | |
all_signal[i] = 1 | |
end | |
if signal[i-1] == 2.0 && signal[i] == 0.0 | |
all_signal[i-1] = 1.0 | |
end | |
end | |
# validate output is as intended | |
validation = hcat(other_signal_type,indicator_level,entry_out,exit_out,all_signal,time_index) | |
#################################################################### | |
# Carry trades into next session | |
#################################################################### | |
# Built on Julia v1.0 | |
# Indicator Exit | |
# dummy h l c | |
c = [2,3,4,5,6,7,10,7,4,5,5,3,2,1,3,4,5,10,11,12,13,14,15,11,5,6,5,6,7,8] | |
some_entry_signal = [0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0] # any type of signal entry | |
indicator_level = [0.1,0.1,0.5,0.9,0.9,0.9,0.9,0.9,0.2,0.1,0.5,0.4,0.8,0.9,0.95,0.1,0.1,0.5,0.9,0.9,0.9,0.9,0.9,0.2,0.1,0.5,0.4,0.8,0.9,0.95] | |
# Set indicator_levelicator exit cross over threshold | |
exit_level = 0.9 | |
# for loop for indicator exit | |
# note trade_state switches between on and off so we only trigger exit when in a trade | |
entry_out = zeros(size(some_entry_signal,1)) | |
exit_out = zeros(size(some_entry_signal,1)) | |
let trade_state = "off" | |
for i = 2:size(indicator_level,1) | |
#i = 19 | |
if some_entry_signal[i] == 1 | |
trade_state = "on" | |
entry_out[i] = 1 | |
else | |
entry_out[i] = 0 | |
end | |
# Only fire exit signal if in a trade | |
if (indicator_level[i] >= exit_level) & (indicator_level[i-1] < exit_level) && trade_state == "on" | |
exit_out[i] = 2 | |
trade_state = "off" | |
# if not in a trade do not trigger an exit | |
# Cross over | |
elseif (indicator_level[i] >= exit_level) & (indicator_level[i-1] < exit_level) && trade_state == "off" | |
exit_out[i] = 0 | |
end | |
end | |
end | |
# combine entry and exit | |
signal = entry_out .+ exit_out | |
# Fill the trade between entry and exit with 1's | |
all_signal = zeros(size(indicator_level,1)) | |
for i = 2:length(signal) | |
if signal[i] == 1.0 | |
all_signal[i] = 1.0 | |
end | |
if signal[i] == 0.0 && all_signal[i-1] == 1.0 | |
all_signal[i] = 1 | |
end | |
if signal[i-1] == 2.0 && signal[i] == 0.0 | |
all_signal[i-1] = 1.0 | |
end | |
end | |
# validate output is as intended | |
validation = hcat(other_signal_type,indicator_level,entry_out,exit_out,all_signal) | |
# indicator_level entry and exit | |
entry_level = 0.1 | |
exit_level = 0.9 | |
entry_out = zeros(size(signal,1)) | |
exit_out = zeros(size(signal,1)) | |
let trade_state = "off" | |
for i = 2:size(indicator_level,1) | |
#i = 19 | |
if (indicator_level[i] <= entry_level) && (indicator_level[i-1] > entry_level) == 1 | |
trade_state = "on" | |
entry_out[i] = 1 | |
else | |
entry_out[i] = 0 | |
end | |
# Only fire exit signal if in a trade | |
if (indicator_level[i] >= exit_level) & (indicator_level[i-1] < exit_level) && trade_state == "on" | |
exit_out[i] = 2 | |
trade_state = "off" | |
# if not in a trade do not trigger an exit | |
# Cross over | |
elseif (indicator_level[i] >= exit_level) & (indicator_level[i-1] < exit_level) && trade_state == "off" | |
exit_out[i] = 0 | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment