Last active
June 2, 2021 21:11
-
-
Save tarnus/43bb5c785dafc789838a37fb7daf3146 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
####Longterm Time Frame | |
input applyCloud = yes; | |
input LT_TimeFrame = AggregationPeriod.Week; | |
input lengthLT =8; | |
input averageTypeLT = { Simple, default Exponential, Weighted, Wilders, Hull}; | |
def maLT = MovingAverage(averageType = averageTypeLT, close(period = LT_TimeFrame), lengthLT); | |
input lengthLT1 = 13; | |
input averageTypeLT1 = {Simple,default Exponential, Weighted, Wilders, Hull}; | |
def maLT1 = MovingAverage(averageType = averageTypeLT1, close(period = LT_TimeFrame), lengthLT1); | |
input lengthLT2 = 21; | |
input averageTypeLT2 = {Simple, default Exponential, Weighted, Wilders, Hull}; | |
def maLT2 = MovingAverage(averageType = averageTypeLT2, close(period = LT_TimeFrame), lengthLT2); | |
#####Shortterm Time Frame | |
input length =8; | |
input averageType = { Simple, default Exponential, Weighted, Wilders, Hull}; | |
def ma = MovingAverage(averageType = averageType, close, length); | |
input length1 = 21; | |
input averageType1 = {Simple,default Exponential, Weighted, Wilders, Hull}; | |
plot ma1 = MovingAverage(averageType = averageType1, close, length1); | |
input length2 = 34; | |
input averageType2 = {Simple, default Exponential, Weighted, Wilders, Hull}; | |
def ma2 = MovingAverage(averageType = averageType2, close, length2); | |
input alertonclose = yes; | |
def state = {default flat, long, short}; | |
switch (state[1]) { | |
case flat: | |
state = if MA1 > MA2 and low[1] > MA1 | |
and low <= MA1 and low >= MA2 then state.long | |
else if MA2 > MA1 and high[1] < MA1 and high >= MA1 and high <= MA2 then state.short else state.flat; | |
case long: | |
state = if maLT > maLT1 and maLT1 > maLT2 and low <= MA2 then state.flat else state.long; | |
case short: | |
state = if maLT < maLT1 and maLT1 < maLT2 and high >= MA2 then state.flat else state.short; | |
} | |
#plot BuyDot = if maLT > maLT1 and maLT1 > maLT2 and state==state.long and state[1] != state.long or maLT > maLT1 and maLT1 > maLT2 and ma > ma1 and ma1 > ma2 and low <= ma1 and low > ma2 then low else Double.NaN; | |
#plot SellDot = if maLT < maLT1 and maLT1 < maLT2 and state==state.short and state[1] != state.short or maLT < maLT1 and maLT1 < maLT2 and ma < ma1 and ma1 < ma2 and high >= ma1 and high < ma2 then high else Double.NaN; | |
AssignBackgroundColor(if maLT > maLT1 and maLT1 > maLT2 and state==state.long and state[1] != state.long or maLT > maLT1 and maLT1 > maLT2 and ma > ma1 and ma1 > ma2 and low <= ma1 and low > ma2 then color.Green else if maLT < maLT1 and maLT1 < maLT2 and state==state.short and state[1] != state.short or maLT < maLT1 and maLT1 < maLT2 and ma < ma1 and ma1 < ma2 and high >= ma1 and high < ma2 then Color.Red else color.Current); | |
ma1.AssignValueColor(if maLT > maLT1 and maLT1 > maLT2 and state==state.long and state[1] != state.long or maLT > maLT1 and maLT1 > maLT2 and ma > ma1 and ma1 > ma2 and low <= ma1 and low > ma2 then Color.Black else if maLT < maLT1 and maLT1 < maLT2 and state==state.short and state[1] != state.short or maLT < maLT1 and maLT1 < maLT2 and ma < ma1 and ma1 < ma2 and high >= ma1 and high < ma2 then Color.Blue else color.Current); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment