Create Strategy to open position on 3rd candle above 9 SMA

IM140.6

IM140.6

New member
Sorry, I'm just no good at deciphering the language at TOS Learning Center. All I want to do is to have my strategy issue a BUY when the 3rd candles opens above the 9 SMA and CLOSE my position when the candle finally closes below the 9 SMA.

So basically, to open: candle 1 crosses above 9 SMA, candle 2 closes above 9 SMA, candle 3 (buy) opens above 9 SMA. Sounds so easy but I just can't figure it out. :(
 
BenTen

BenTen

Administrative
Staff
VIP
My attempt:

Code:
#
# TD Ameritrade IP Company, Inc. (c) 2017-2020
#

input price = close;
input length = 9;
input displace = 0;

def AvgExp = ExpAverage(price[-displace], length);

def condition1 = close[3] crosses above AvgExp;
def condition2 = close > AvgExp;

def buy = condition1 and condition2;
def sell = close crosses below AvgExp;

AddOrder(OrderType.BUY_TO_OPEN, condition = buy, price = close,1, tickcolor = Color.GREEN, arrowcolor = Color.GREEN, name = "Long");
AddOrder(OrderType.SELL_TO_CLOSE, condition = sell, price = close,1, tickcolor = Color.GREEN, arrowcolor = Color.GREEN, name = "Cover");
 
IM140.6

IM140.6

New member
@BenTen wow! How did you do this so fast?! Is there somewhere besides the TDA Learning Center to get instruction? Thank you for your help!! Very much appreciated
 
BenTen

BenTen

Administrative
Staff
VIP
@poststreet The original poster was asking for a backtesting strategy. This is not a regular indicator. It won't plot any arrows on your chart.
 
MerryDay

MerryDay

Active member
VIP
@poststreet Now you gotz arrows: :)
Code:
# Buy 3rd candle above 9SMA
input price = close;
input length = 9;
input displace = 0;

def AvgExp = ExpAverage(price[-displace], length);
def condition1 = close[3] crosses above AvgExp;
def condition2 = close > AvgExp;

def buy = condition1 and condition2;
def sell = close crosses below AvgExp;

def arrow_plots = high – low;
def plotHigh    = high + arrow_plots * 0.3;
def plotLow     = low  - arrow_plots * 0.3;

plot buyarrow  = if buy then plotLow else double.NaN ;
plot sellarrow = if sell then plotHigh else double.NaN ;

buyarrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP) ;
buyarrow.SetLineWeight(2);
buyarrow.SetDefaultColor(color.cyan) ;

sellarrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
sellarrow.SetLineWeight(2);
sellarrow.SetDefaultColor(color.magenta) ;

# Alerts
Alert(buyarrow, " ", Alert.Bar, Sound.Ring);
Alert(sellarrow, " ", Alert.Bar, Sound.Bell);
 

Similar threads

Top