Skip to content

Instantly share code, notes, and snippets.

@flare9x
Last active August 19, 2018 01:44
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/ed00a799c5fe299393eedb225d37d982 to your computer and use it in GitHub Desktop.
Save flare9x/ed00a799c5fe299393eedb225d37d982 to your computer and use it in GitHub Desktop.
n_bar hold
# Updated to Juli 0.7 - Fixed depreciation warnings
###################################
# n bar Hold - Stay in trade when repeat signals
###################################
# Dummy Data
signal = [0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
function RO_n_bar(x::Array{Int64}; nb::Int64=3)::Array{Int64}
n_bar = fill(0,length(x))
let i = 1, j = 1, n=0 # set n bar hold time
for i = 2:size(x,1)
if x[i] == 1
n_bar[i] = 1
j = 1
while(j < nb) # Set bar hold time,
n = i + j # carry over index position
if n >= length(x) # Check if n is bigger than the length of signal, if true break
break
end
n_bar[n] = 1
j = j + 1
end
j=1
n=1
end
end
end
return n_bar
end
out = RO_n_bar(signal,nb=3)
###################################
# nbar hold - avoid repeat signals
###################################
signal = [0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
function O_n_bar(x::Array{Int64}; nb::Int64=3)::Array{Int64}
n_bar = fill(0,length(x))
let i = 1, j = 1, n = 0, condition_i = 0 # set n bar hold time
for i = 2:length(x)
if x[i] == 1 && i > condition_i
n_bar[i] = 1
j = 1
#print("i =", i)
while(j < nb) # Set bar hold time,
n = i + j # carry over index position
if n >= length(x) # Check if n is bigger than the length of signal, if true break
break
end
n_bar[n] = 1
j = j + 1
end
condition_i = j
end
end
return n_bar
end
end
out = O_n_bar(signal)
###################################
# N bar hold - ignore repeat signals - do not carry trade to next day or evening session
###################################
signal = [0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
time_index = ["09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30","13:00","13:30","14:00","14:30","15:00","09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30","13:00"]
function DT_n_bar(x::Array{Int64}; nb::Int64=3)::Array{Int64}
n_bar = fill(0,length(x))
let i = 1,j = 1,nb = 3, n=0, condition_i = 0
for i = 2:length(x)
if x[i] == 1 && i > condition_i
n_bar[i] = 1
j = 1
while(j < nb) # Set bar hold time,
n = i + j # carry over index position
if n >= length(x) # Check if n is bigger than the length of signal, if true break
break
end
n_bar[n] = 1
j = j + 1
if time_index[n] == "15:00"
break
end
end
condition_i = j
end
end
end
return n_bar
end
test = DT_n_bar(signal)
###################################
# N bar hold - stay in trade on repeat signals - do not carry trade to next day or evening session
###################################
signal = [0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
time_index = ["09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30","13:00","13:30","14:00","14:30","15:00","09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30","13:00"]
function RDT_n_bar(x::Array{Int64}; nb::Int64=3)::Array{Int64}
n_bar = fill(0,length(x))
let i = 1, j = 1,nb = 3, n=0
for i = 2:length(x)
if x[i] == 1
n_bar[i] = 1
j = 1
#print("i =", i)
while(j < nb) # Set bar hold time,
n = i + j # carry over index position
if n >= length(x) # Check if n is bigger than the length of signal, if true break
break
end
n_bar[n] = 1
j = j + 1
if time_index[n] == "15:00"
break
end
end
j=1
n=1
end
end
end
return n_bar
end
@time RDT_n_bar(signal)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment