Skip to content

Instantly share code, notes, and snippets.

@tarnus
Last active June 2, 2021 21:11
Show Gist options
  • Save tarnus/43bb5c785dafc789838a37fb7daf3146 to your computer and use it in GitHub Desktop.
Save tarnus/43bb5c785dafc789838a37fb7daf3146 to your computer and use it in GitHub Desktop.
####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