Skip to content

Instantly share code, notes, and snippets.

@flare9x
Last active August 18, 2018 22:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save flare9x/b61818485854fdac04662e582b88e1a8 to your computer and use it in GitHub Desktop.
Save flare9x/b61818485854fdac04662e582b88e1a8 to your computer and use it in GitHub Desktop.
Indicator level exit
# 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