# MACDTend V3 # Added Stop Loss # Added Sell 1/2 position at an EMA input tradeSize1 = 2; input tradeSize2 = 1; input offsetType = {default percent, value, tick}; input stop = 0.75; input MACDaverageType = AverageType.EXPONENTIAL; input MACDvalue = -0.15; input MACDFast = 5; input MACDSlow = 10; input XMACDaverageType = AverageType.WILDERS; input XMACDFast = 10; input XMACDSlow = 20; def signal = MACD("fast length" = MACDFast, "slow length" = MACDSlow, AverageType = MACDaverageType)."Value" crosses above MACD("fast length" = 10, "slow length" = 20, AverageType = MACDaverageType)."Avg" within 1 bars and MACD("fast length" = 10, "slow length" = 20, AverageType = MACDaverageType)."Value" is less than or equal to MACDvalue; #AddOrder(OrderType.BUY_TO_OPEN, signal, open[-1], tradesize = tradeSize1, Color.GREEN, Color.GREEN); AddOrder(OrderType.BUY_TO_OPEN, condition = signal, price = open[-1], tradeSize = tradeSize1, tickcolor = GetColor(1), arrowcolor = GetColor(1), name = "MACD Buy"); def exit1 = high crosses above MovAvgExponential("length" = 50)."AvgExp"; def exit2 = MACD("fast length" = XMACDFast, "slow length" = XMACDSlow, AverageType = XMACDaverageType)."Value" crosses below MACD("fast length" = XMACDFast, "slow length" = XMACDSlow, AverageType = XMACDaverageType)."Avg" ; def entryPrice = EntryPrice(); def mult; switch (offsetType) { case percent: mult = entryPrice / 100; case value: mult = 1; case tick: mult = TickSize(); } def stopPrice = entryPrice - stop * mult; AddOrder(OrderType.SELL_TO_CLOSE, condition = exit1, price = open[-1], tradeSize = tradeSize2, tickcolor = GetColor(3), arrowcolor = GetColor(3), name = "EMA Sell"); AddOrder(OrderType.SELL_TO_CLOSE, condition = exit2, price = open[-1], tradeSize = tradeSize2, tickcolor = GetColor(2), arrowcolor = GetColor(2), name = "MACD Sell"); AddOrder(OrderType.SELL_TO_CLOSE, low <= stopPrice, tickcolor = GetColor(5), arrowcolor = GetColor(5), name = "S/L");