Long Only vs Short Only Strategy

cheual

cheual

New member
Hello!

I'm a novice to programming and ThinkScript. I'm working on the backtesting and struggling to write a script that I can change the AddOrder by simply letting the user change it via Input as Long Only or Short Only.

Note: this script isn't working yet but would appreciate everyone's input to make it work. Thanks in advance for helping me learn ThinkScript.


#Backtest for if Long Only or Short Only

input Direction = {default Long Only, Short Only};

def EMA = ExpAverage(close, 8);
def BUYarrow = close < EMA;
def SELLarrow = close > EMA;

plot BUYarrow;
plot SELLarrow;

BUYarrow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
SELLarrow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);

switch (direction) {
case Long Only:
AddOrder(OrderType.BUY_TO_OPEN, condition = BUYarrow, price = ohlc4, tickcolor = Color.CYAN, arrowcolor = Color.CYAN, name = "BUY @ " + ohlc4);
AddOrder(OrderType.SELL_TO_CLOSE, condition = SELLarrow, price = ohlc4, tickcolor = Color.MAGENTA, arrowcolor = Color.WHITE, name = "SELL @ " + ohlc4);
case Short Only:
AddOrder(OrderType.SELL_TO_OPEN, condition = SELLarrow, price = ohlc4, tickcolor = Color.CYAN, arrowcolor = Color.CYAN, name = "BUY @ " + ohlc4);
AddOrder(OrderType.BUY_TO_CLOSE, condition = BUYarrow, price = ohlc4, tickcolor = Color.MAGENTA, arrowcolor = Color.WHITE, name = "SELL @ " + ohlc4);
}
 
T

tomsk

Well-known member
VIP
@cheual don't think you can embed AddOrder in a switch statement or even in a if-then-else construct
The code you posted had some errors, so I cleaned it up.
Here's the LONG only strategy. You can adopt a similar approach for the SHORT only strategy

# Long Only Strategy

def EMA = ExpAverage(close, 8);
plot BUYarrow = close < EMA;
plot SELLarrow = close > EMA;

BUYarrow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
SELLarrow.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);

AddOrder(OrderType.BUY_TO_OPEN, condition = BUYarrow, price = ohlc4, tickcolor = Color.CYAN, arrowcolor = Color.CYAN, name = "BUY @ " + ohlc4);
AddOrder(OrderType.SELL_TO_CLOSE, condition = SELLarrow, price = ohlc4, tickcolor = Color.MAGENTA, arrowcolor = Color.WHITE, name = "SELL @ " + ohlc4);
 

Similar threads

Top