Scalping strategy to finish the year strong

USER GUIDE - MeetAlgo Channel Trading Indicator - Trading Systems - 6 March 2018 - Traders' Blogs Have a read of this for the indicator and especially the bit that says enter 30 points near the channel.

1 Like

2 more indicators I like

Tma line extreme.ex4 (39.1 KB)
macd-above-below-bars.ex4 (20.5 KB)

Both on main chart (not oscillators).

TMA line shows green for Buy, Yellow for Caution, Red for Sell.
Outer boundary lines (blue/gray). Candle crosses upper blue/gray = Buy signal. Candle crosses lower blue/gray = Sell signal.
Candles between upper and lower = Caution signal.

MACD above and below turns candles red when below MACD zero line and blue when it goes above the zero line.

I can see how better entries can be made when MACD signal occurs and TMA confirms.

Has anybody managed to create an indicator for this strategy in Tradingview??

hey there,

I think i got a working indicator but it is only with the 4 ema’s and a tick indicator. It’s not the same tick indicator as @AmericanTrader (couldnt quite find that one.). but if American could get his hands on the code maybe me and chatgpt could try to convert it. i’m still working on a version with all the other indicators. (fyi, i am not a coder or something like that, just someone who likes tinkering with this stuff). Feel free to try it out and let me know how it goes.
Greetings
El Guido.

//@version=5

indicator(“Combined EMA Strategy with Tick Volume Direction”, shorttitle=“TradeWithme82”, overlay=true, shorttitle = “TVDI”, overlay = true, max_labels_count = 500)

// Previous EMA Strategy Code

len1 = input.int(17, title=“Fast”)

len2 = input.int(72, title=“Medium”)

len3 = input.int(305, title=“Slow”)

len4 = input.int(50, title=“Additional EMA Length”)

src1 = input(close, title=“Source Fast”)

src2 = input(close, title=“Source Medium”)

src3 = input(close, title=“Source Slow”)

src4 = input(close, title=“Source Additional EMA”)

ema1 = ta.ema(src1, len1)

ema2 = ta.ema(src2, len2)

ema3 = ta.ema(src3, len3)

ema4 = ta.ema(src4, len4)

// Determine market direction based on the relationship between EMAs

ema3Delta = ema3 - ema3[1]

marketDirection = ema3Delta > 0 ? “up” : ema3Delta < 0 ? “down” : “neutral”

// Colors for the additional EMA based on market direction

upColor = input(color.green, title=“Up Color”)

downColor = input(color.red, title=“Down Color”)

neutralColor = input(color.blue, title=“Neutral Color”)

ema4Color = marketDirection == “up” ? upColor : marketDirection == “down” ? downColor : neutralColor

plot(ema1, title=“EMA1”, color=color.new(color.fuchsia, 0))

plot(ema2, title=“EMA2”, color=color.new(color.orange, 0))

plot(ema3, title=“EMA3”, color=color.new(color.blue, 0))

plot(ema4, title=“Additional EMA”, color=ema4Color)

tickUpEqualDownGroup = “tick settings”

tickLabelSizeOption = input.string(defval = “normal”, options = [“auto”, “huge”, “large”, “normal”, “small”, “tiny”], title = “label size”, group = tickUpEqualDownGroup)

valueOrVolumeOpt = input.string(defval = “base currency value”, options = [“base currency value”, “volume”], title = “base currency value or volume”, group = tickUpEqualDownGroup)

tickCountColorInput = input.color(defval = color.blue, title = “tick count”, group = tickUpEqualDownGroup)

tickUpColorInput = input.color(defval = color.green, title = “tick direction up”, group = tickUpEqualDownGroup)

tickEqualColorInput = input.color(defval = color.orange, title = “tick direction absorbed”, group = tickUpEqualDownGroup)

tickDownColorInput = input.color(defval = color.red, title = “tick direction down”, group = tickUpEqualDownGroup)

tickLabelDistanceInput = input.int(defval = 0, minval = 0, title = “tick label distance”, group = tickUpEqualDownGroup)

eachTickListSw = input.bool(defval = true, title = “display each tick info”, group = tickUpEqualDownGroup)

valueStrFormat(float value) =>

valueRounded = math.round(value)

digitLength = str.length(str.tostring(valueRounded))

valueFormatted = digitLength <= 3 ? str.tostring(valueRounded) :

     digitLength == 4 or digitLength == 5 ? str.tostring(math.round(valueRounded / 1000, 1)) + "K" :

     digitLength == 6 ? str.tostring(math.round(valueRounded / 1000, 0)) + "K" :

     digitLength == 7 or digitLength == 8 ? str.tostring(math.round(valueRounded / 1000000, 1)) + "M" :

     digitLength == 9 ? str.tostring(math.round(valueRounded / 1000000, 0)) + "M" :

     digitLength == 10 or digitLength == 11 ? str.tostring(math.round(valueRounded / 1000000000, 1)) + "B" :

     digitLength == 12 ? str.tostring(math.round(valueRounded / 1000000000, 0)) + "B" :

     digitLength == 13 or digitLength == 14 ? str.tostring(math.round(valueRounded / 1000000000000, 1)) + "T" :

     digitLength == 15 ? str.tostring(math.round(valueRounded / 1000000000000, 0)) + "T" :

     digitLength == 16 or digitLength == 17 ? str.tostring(math.round(valueRounded / 1000000000000000, 1)) + "Q" :

     digitLength == 18 ? str.tostring(math.round(valueRounded / 1000000000000000, 0)) + "Q" : na

repeatChar(string characters, int repeatAmount) =>

string total = na

newLine = for i = 0 to repeatAmount

    total := total + characters

varip tickCounter = 0

varip chartLoadVolume = array.new()

varip volumeAr = array.new()

varip tickVolumeAr = array.new()

varip tickCloseAr = array.new()

varip float tickTotalVolumeValue = 0

varip float tickTotalUp = 0

varip float tickTotalEqual = 0

varip float tickTotalDown = 0

varip string tickListTextUp = “”

varip string tickListTextEqual = “”

varip string tickListTextDown = “”

varip string tickList = “”

volumeValue = switch valueOrVolumeOpt

"volume"              => volume

"base currency value" => volume * close

tickUpDownEqualTotals(id, value, direction) =>

if direction == "up"

    id.first() > id.get(1) ? value : 0

else if direction == "down"

    id.first() < id.get(1) ? value : 0

else if direction == "equal"

    id.first() == id.get(1) ? value : 0

tickUpDownEqualText(id, value, upDownEqual) =>

if upDownEqual == "none"

    ""

else if id.first() > id.get(1)

    upDownEqual == "up" ? valueStrFormat(value) + " ▲" : ""

else if id.first() < id.get(1)

    upDownEqual == "down" ? valueStrFormat(value) + " ▼" : ""

else if id.first() == id.get(1)

    upDownEqual == "equal" ? valueStrFormat(value) + " =" : ""

//start calculating once last bar is reached

if barstate.islast

//if candle is not finalized

if not barstate.isconfirmed

    tickCounter := tickCounter + 1

   

    //new and is history. On first chart load, 1st tick captures existing volume and add " ?" for direction

    if barstate.isnew and barstate.ishistory

        tickCloseAr.clear()

        tickCloseAr.unshift(close)

        chartLoadVolume.unshift(volumeValue)

       

        tickListTextUp    := ""

        tickListTextEqual := valueStrFormat(chartLoadVolume.first()) + " ?"

        tickListTextDown  := ""

        tickTotalVolumeValue := chartLoadVolume.first()

        // tickList := str.tostring(chartLoadVolume.first()) + " ?"

    //Chart previously loaded, new candle's first tick

    else if barstate.isnew and not barstate.ishistory

        tickCloseAr.unshift(close)

        volumeAr.unshift(volumeValue)

        tickVolumeAr.unshift(volumeValue)

        tickListTextUp := tickUpDownEqualText(tickCloseAr, tickVolumeAr.first(), "up")

        tickListTextEqual := tickUpDownEqualText(tickCloseAr, tickVolumeAr.first(), "equal")

        tickListTextDown := tickUpDownEqualText(tickCloseAr, tickVolumeAr.first(), "down")

        tickTotalVolumeValue := tickVolumeAr.first()

        tickTotalUp    := tickUpDownEqualTotals(tickCloseAr, tickVolumeAr.first(), "up")

        tickTotalEqual := tickUpDownEqualTotals(tickCloseAr, tickVolumeAr.first(), "equal")    

        tickTotalDown  := tickUpDownEqualTotals(tickCloseAr, tickVolumeAr.first(), "down")

       

    //captures all ticks after chart loaded and is considered as 2nd tick onwards

    else if not barstate.isnew

        volumeAr.unshift(volumeValue)

        //if chart previously loaded, tick volume will be current volume minus current total volume

        if chartLoadVolume.size() == 0

            tickCloseAr.unshift(close)

            tickVolumeAr.unshift(volumeValue - volumeAr.get(1))

           

            tickListTextUp := tickUpDownEqualText(tickCloseAr, tickVolumeAr.first(), "up") + "\n" + tickListTextUp

            tickListTextEqual := tickUpDownEqualText(tickCloseAr, tickVolumeAr.first(), "equal") + "\n" + tickListTextEqual

            tickListTextDown := tickUpDownEqualText(tickCloseAr, tickVolumeAr.first(), "down") + "\n" + tickListTextDown

            tickTotalUp    := tickTotalUp    + tickUpDownEqualTotals(tickCloseAr, tickVolumeAr.first(), "up")

            tickTotalEqual := tickTotalEqual + tickUpDownEqualTotals(tickCloseAr, tickVolumeAr.first(), "equal")    

            tickTotalDown  := tickTotalDown  + tickUpDownEqualTotals(tickCloseAr, tickVolumeAr.first(), "down")

            tickTotalVolumeValue := tickTotalVolumeValue + tickVolumeAr.first()

        //if existing volume exists on first chart load, then on first tick current volume minus existing volume

        else if chartLoadVolume.size() > 0

            tickCloseAr.unshift(close)

            tickVolumeAr.unshift(volumeValue - chartLoadVolume.first())

            tickListTextUp    := tickUpDownEqualText(tickCloseAr, tickVolumeAr.first(), "up") + "\n" + tickListTextUp

            tickListTextEqual := tickUpDownEqualText(tickCloseAr, tickVolumeAr.first(), "equal") + "\n" + tickListTextEqual

            tickListTextDown  := tickUpDownEqualText(tickCloseAr, tickVolumeAr.first(), "down") + "\n" + tickListTextDown

           

            tickTotalVolumeValue := tickTotalVolumeValue + tickVolumeAr.first()

            tickTotalUp    := tickTotalUp    + tickUpDownEqualTotals(tickCloseAr, tickVolumeAr.first(), "up")

            tickTotalEqual := tickTotalEqual + tickUpDownEqualTotals(tickCloseAr, tickVolumeAr.first(), "equal")    

            tickTotalDown  := tickTotalDown  + tickUpDownEqualTotals(tickCloseAr, tickVolumeAr.first(), "down")

            //clear existing volume as it will no longer be used

            chartLoadVolume.clear()

   

    log.info("\n" + "total " + str.tostring(tickTotalVolumeValue) + "\n" + tickList)

tickLabelDistance = repeatChar("\n", tickLabelDistanceInput + 5 )

counterLabelText = valueStrFormat(tickCounter) + " ✓" + “\n\n\n”

tickTotalText = “\n\n\n\n\n\n” + “____\n” + valueStrFormat(tickTotalVolumeValue) + “\n¯¯¯¯”

tickTotalUpText = “\n” + valueStrFormat(tickTotalUp) + “\n\n”

tickTotalEqualText = “\n\n” + valueStrFormat(tickTotalEqual) + “\n”

tickTotalDownText = “\n\n\n” + valueStrFormat(tickTotalDown)

tickLabelSize = switch tickLabelSizeOption

"auto" => size.auto

"huge" => size.huge

"large" => size.large

"normal" => size.normal

"small" => size.small

"tiny" => size.tiny

tickLabelCondition = barstate.islast ? bar_index : na

tickCounterLabel = label.new(tickLabelCondition,

 y = low,

 text      = tickLabelDistance + counterLabelText,

 textcolor = tickCountColorInput,

 color     = color.rgb(0, 0, 0),

 style     = label.style_text_outline,

 size      = tickLabelSize,

 textalign = text.align_right

 )

tickTotalLabel = label.new(tickLabelCondition,

 y = low,

 text      = tickLabelDistance + tickTotalText,

 textcolor = color.rgb(255, 255, 255),

 color     = color.rgb(0, 0, 0),

 style     = label.style_text_outline,

 size      = tickLabelSize,

 textalign = text.align_right

 )

tickTotalUpLabel = label.new(tickLabelCondition,

 y = low,

 text      = tickLabelDistance + tickTotalUpText,

 textcolor = color.green,

 color     = color.rgb(0, 0, 0),

 style     = label.style_text_outline,

 size      = tickLabelSize,

 textalign = text.align_right

 )

tickTotalEqualLabel = label.new(tickLabelCondition,

 y = low,

 text      = tickLabelDistance + tickTotalEqualText,

 textcolor = color.orange,

 color     = color.rgb(0, 0, 0),

 style     = label.style_text_outline,

 size      = tickLabelSize,

 textalign = text.align_right

 )

tickTotalDownLabel = label.new(tickLabelCondition,

 y = low,

 text      = tickLabelDistance + tickTotalDownText,

 textcolor = color.red,

 color     = color.rgb(0, 0, 0),

 style     = label.style_text_outline,

 size      = tickLabelSize,

 textalign = text.align_right

 )

tickVolumeUpTextLabel = label.new(eachTickListSw ? tickLabelCondition : na,

 y = low,

 text      = tickLabelDistance + repeatChar("\n", tickCounter + 7) + tickListTextUp,

 textcolor = color.green,

 color     = color.rgb(0, 0, 0),

 style     = label.style_text_outline,

 size      = tickLabelSize,

 textalign = text.align_right

 )

tickVolumeEqualTextLabel = label.new(eachTickListSw ? tickLabelCondition : na,

 y = low,

 text      = tickLabelDistance + repeatChar("\n", tickCounter + 7) + tickListTextEqual,

 textcolor = color.orange,

 color     = color.rgb(0, 0, 0),

 style     = label.style_text_outline,

 size      = tickLabelSize,

 textalign = text.align_right

 )

tickVolumeDownTextLabel = label.new(eachTickListSw ? tickLabelCondition : na,

 y = low,

 text      = tickLabelDistance + repeatChar("\n", tickCounter + 7) + tickListTextDown,

 textcolor = color.red,

 color     = color.rgb(0, 0, 0),

 style     = label.style_text_outline,

 size      = tickLabelSize,

 textalign = text.align_right

 )

if volumeAr.size() > 10000

volumeAr.pop()

if tickCloseAr.size() > 10000

tickCloseAr.pop()

if volumeAr.size() > 10000

volumeAr.pop()

if barstate.islast

if barstate.isconfirmed

    log.info("confirmed")

    tickCounter := 0

    tickList := ""

    tickTotalVolumeValue := 0

    tickTotalUp := 0

    tickTotalEqual := 0

    tickTotalDown := 0

Maybe we can get @dastultz to help out. He helped us all out with the first (?) EMA Channel Cross indicator. It was really a game changer for me. Thanks so much BTW.

And who caught the BOJ decision and yen explosion today? Holy crap what a great day it’s been.

1 Like

For Christmas I would like a couple of hundred pips bounce on the Euro please.

And a sweater

2 Likes

Amazing! I’ve been scrolling back to find a downloaded version that works on my computer and this is the magic one :slight_smile: Thanks for the heads up that you find this a very useful indicator. Looking forward to adding it into the mix. I’ve had an awful November of three daycare viruses (Laryngitis, COVID and then a bad Flu) so I’m looking forward to getting back to practicing these strategies. I have had a chance to get a better feel for MT4 - I’m loving the customization and being able to try out these indicators.

1 Like

Hey all, I wrote a TradingView indicator last January, I think. A link to it is posted at the top of this thread. I am a purely automated trader and I did not have much luck with this, so dropped it. I see some talk about MT4, is someone trying to recode my indicator for that, or is there some new feature people want in my indicator? I haven’t coded in TV in some time so I can’t promise anything.

/Daryl

1 Like

I don’t know if anyone has managed to get the Cap Channel indicator working or not on Trading View so far with their programming skills?

But I just got this back this morning from the developers of the indicator:-

It would take 10 days to create and cost $399.

Is anyone interested in a group buy of the development fees, if 10 people were do so, then it would be $40 each?

I am not sure how we would co-ordinate this as this stage, but maybe you want to send me a private message if you are interested?

I thought you were using something else on TV other than the EMA Channel Cross that @dastultz made?

Could be somebody else. Let me see if I can find the post I’m thinking about.

Here’s the post.

@rocktrucker You using the donchain channels indicator at all?

No not really as I didn’t find one that is similiar to the cap channel indicator on Trading View.

1 Like

Christmas comes early on my E/U long.

Got my 200 pip bounce.

2 Likes

We reached the 200ema on W1, so I closed out my profits.

Here’s the D1

Hey, i hope you are doing alright.
Im a beginner and i’ve been struggling for months trying to find a good scalping strategy until i found this post, i took a quick look on my chart today and god damn it looks promesing.
I will back test this on a paper account and if this really works i will be thankfull to you for the rest of my life.
Thanks for sharing anyways, have a great life!
(talking about the strategy on your first ever post)

1 Like

@AmericanTrader You shut down for the year? If I don’t hear from you and others, happy new year everybody!

This has been my favorite thread of 2023!

2 Likes

Happy Holidays to All!

Daycare is closed for my 3-year-old this week so I’m shut down lol. This has also been my favourite thread this year! It’s been very inspiring and has motivated me a lot because I can see examples of successful trading and strategies from @AmericanTrader , and there is also a very positive and welcoming energy here as we all share ideas and work towards our goals together.

I’m thinking ahead to the New Year, and thinking about my trading goals. I know this sounds simple, but as a working mom, my first goal for January is to decide on a trading window to regularly carve a couple hours each day and to see which strategy and time frame fits into this window of time for trading. I’m going to need to be more organized and disciplined about my time in the New Year.

2 Likes

Agree. This thread actually got me trading consistently. Gave me some structure. And now I’m branching out.

Good idea on getting your goals together. I need some fresh goals for the year to!

Happy New Year everybody!