Create your own candlestick pattern in ThinkorSwim?

B

Buckbull

Member
Is Anyone familiar with making your own candlestick pattern study ? Im trying to set up a bottoming tail on one study and a topping tail on another . Any pointers ?

 
Last edited by a moderator:
T

tomsk

Well-known member
VIP
@Buckbull If you are not already aware you might like to know that TOS has a library of candlestick patterns available.
Just go to the TOS platform, click on charts. Then on the top right, there is a button called "Patterns"
There is a drop down menu, so you can go and explore that area. Many examples of chart of candlestick patterns there
 
B

Buckbull

Member
No specific pattern named bottoming tail , guess i could use a hammer and inverted . But i wanted a long tail and smaller body
 
B

Buckbull

Member
Just made my own tweezer top and bottom came out great but cant figure how to make a small body and long tail
 
BenTen

BenTen

Administrative
Staff
VIP
@Buckbull If you want to create a more advanced candlestick pattern, you would have to write your own script for that. The default editor is still great for beginners to get started, though. Glad to hear about your tweezer top and bottom.
 
B

Buckbull

Member
Im trying to do something like this the doesnt have to be a Super Bottoming tail but something with a small body and a long tail
 
B

Buckbull

Member
also how do you guys share images here photo bucket keeps putting that logo on the pics that I share its annoying
 
B

Buckbull

Member
@Buckbull If you are not already aware you might like to know that TOS has a library of candlestick patterns available.
Just go to the TOS platform, click on charts. Then on the top right, there is a button called "Patterns"
There is a drop down menu, so you can go and explore that area. Many examples of chart of candlestick patterns there
Yes I know about it but thanks for the heads up
 
B

Buckbull

Member
@Buckbull If you need help uploading images, see this thread. We recommend Imgur.

In regards to the candlestick pattern you showed from the screenshot above, maybe you're referring to the Pin bar pattern or something like that. https://usethinkscript.com/threads/pin-bar-reversal-indicator-for-thinkorswim.156/
@BenTen That is awesome thank you for that . How would I add a stipulation in a scan that the pin bar has to close within the body of the previous candle ?
 
B

Buckbull

Member
@tomsk Could you by any chance help me out , with the pinbar study ben posted i would like to do a scan where the pinbar closes within the body of the previous days candle . Thanks
 
T

tomsk

Well-known member
VIP
@tomsk Could you by any chance help me out , with the pinbar study ben posted i would like to do a scan where the pinbar closes within the body of the previous days candle . Thanks
@Buckbull - I assume you're referring to the Pinbar indicator that @BenTen posted in the following thread

https://usethinkscript.com/threads/pin-bar-reversal-indicator-for-thinkorswim.156/
Here is your COMPLETED scan. Load the following code directly into the scanner. It scans for a bullish/bearish pinbar that closes within the body of the previous days candle. Please note that I have NOT changed any of the definitions of the pinbar definition that came with the original study
I just added your requirement for closes within the body of the previous candle and some minor clean up to enable the scan.

I have tested the scan on the S&P 500. At the present time, a bullish scan yields 2 results while a bearish scan yields 1 result.

Code:
# Pinbar Scan
# tomsk
# 11.23.2019
# https://usethinkscript.com/threads/create-your-own-candlestick-pattern-in-thinkorswim.1103/#post-10213

# This scans for a bullish/bearish pinbar that closes within the body 
# of the previous candle. The conditions for the logic for the pinbar 
# conditions were extracted from the following study as posted by BenTen 
# in May 2019
#
# https://usethinkscript.com/threads/pin-bar-reversal-indicator-for-thinkorswim.156/

input LastBars = 0;
input MaxNoseBodySize = 0.33; #(default = 0.33) — maximum allowed body/length ratio for the Nose bar.
input NoseBodyPosition = 0.4; #(default = 0.4) — Nose body should be position in top (bottom for bearish pattern) part of the Nose bar.
input LeftEyeOppositeDirection = yes; #(default = true) — tells the indicator that the Left Eye bar should be bearish for bullish Pinbar, and bullish for bearish Pinbar.
input NoseSameDirection = yes; #(default = true) — tells the indicator that the Nose bar should be of the same direction as the pattern itself.
input NoseBodyInsideLeftEyeBody = no; #(default = false) — tells the indicator that the Nose body should be inside the Left Eye body.
input LeftEyeMinBodySize = 0.1; #(default = 0.1) — minimum size of the Left Eye body relative to the bar length.
input NoseProtruding = 0.5; #(default = 0.5) — minimum protrusion of the Nose bar relative to the bar length.
input NoseBodyToLeftEyeBody = 1; #(default = 1) — maximum size of the Nose body relative to the Left eye body.
input NoseLengthToLeftEyeLength = 0; #(default = 0) — minimum Nose length relative to the Left Eye length.
input LeftEyeDepth = 0.2; #(default = 0.2) — minimum depth of the Left Eye relative to its length. Depth is length of the part of the bar behind the Nose.

# Left Eye and Nose bars's paramaters
def NoseLength = High - Low;
def LeftEyeLength = High[1] - Low[1];
def NoseBody = Absvalue(Open - Close);
def LeftEyeBody = Absvalue(Open[1] - Close[1]);

# Bearish Pinbar

def BearSignalDown = if  (High - High[1] >= NoseLength * NoseProtruding) and
                     (NoseBody / NoseLength <= MaxNoseBodySize) and
                     (1 - (High - Max(Open, Close)) / NoseLength < NoseBodyPosition) and
                     if LeftEyeOppositeDirection then (Close[1] > Open[1]) else 1 and
                     if NoseSameDirection then (Close < Open) else 1  and
                     (LeftEyeBody / LeftEyeLength  >= LeftEyeMinBodySize) and
                     ((Max(Open, Close) <= High[1]) && (Min(Open, Close) >= Low[1]))  and
                     (NoseBody / LeftEyeBody <= NoseBodyToLeftEyeBody) and
                     (NoseLength / LeftEyeLength >= NoseLengthToLeftEyeLength) and
                     (Low - Low[1] >= LeftEyeLength * LeftEyeDepth) and
                     if NoseBodyInsideLeftEyeBody then ((Max(Open, Close) <= Max(Open[1], Close[1]))
                     && (Min(Open,  Close) >= Min(Open[1],  Close[1]))) else 1                   
                     then yes
                     else no ;

def BullSignalUp   = if (Low[1] - Low >= NoseLength * NoseProtruding) and
                     (NoseBody / NoseLength <= MaxNoseBodySize) and
                     (1 - (Min(Open, Close) - Low) / NoseLength < NoseBodyPosition) and
                     if LeftEyeOppositeDirection then (Close[1] < Open[1]) else 1 and
                     if NoseSameDirection then (Close > Open) else 1 and
                     (LeftEyeBody / LeftEyeLength >= LeftEyeMinBodySize) and
                     ((Max(Open, Close) <= High[1]) && (Min(Open, Close) >= Low[1])) and
                     (NoseBody / LeftEyeBody <= NoseBodyToLeftEyeBody) and
                     (NoseLength / LeftEyeLength >= NoseLengthToLeftEyeLength) and
                     (High[1] - High >= LeftEyeLength * LeftEyeDepth) and
                     if NoseBodyInsideLeftEyeBody then ((Max(Open, Close) <= Max(Open[1], Close[1]))
                     && (Min(Open, Close) >= Min(Open[1], Close[1]))) else 1
                     then yes
                     else no;

# Scan specific logic. Look for a close within previous bar's body
# Add this to the original scan condition from a user request

def condition = between(close, min(open[1],close[1]),max(open[1],close[1]));

# Comment out (#) the ONE not needed

plot bullish_signal = BullSignalup and condition;
# plot bearish_signal = BearSignalDown and condition;

# End Pinbar Scan
 
Last edited:
B

Buckbull

Member
Awesome thanks as usual , But Im a little confused if im saving it right when I copied the script you made in I got 2 stocks like you did
$REG
$MKC
How do I switch it to a Bearish Scan ?
 
horserider

horserider

Well-known member
VIP
Bullish scan

# Comment out (#) the ONE not needed

plot bullish_signal = BullSignalup and condition;
# plot bearish_signal = BearSignalDown and condition;

# End Pinbar Scan

Bearish Scan

# Comment out (#) the ONE not needed

# plot bullish_signal = BullSignalup and condition;
plot bearish_signal = BearSignalDown and condition;

# End Pinbar Scan

I would just save as different scans.
 
T

tomsk

Well-known member
VIP
Awesome thanks as usual , But Im a little confused if im saving it right when I copied the script you made in I got 2 stocks like you did
$REG
$MKC
How do I switch it to a Bearish Scan ?
You seem to be new to scans - please note that the scanner only accepts one plot statement
I have listed two in the code, one commented out. Just switch those round for theopposite case

You should get 1 result for the bearish case if you ran the scan today
 
Last edited:

Similar threads

Top