TradingView
sonnyparlin
31 de Ago. de 2021 18:50

SMA Offset Strategy 

Bitcoin / TetherUSBinance

Descripción

This strategy uses simple moving averages and some math to determine buy/sell points. We keep a SMA 100 day line as our basis for our offset. If the close price is below the line, we choose our open position based on how low below the line it is goes, this value (Low Offset) is a percentage and can be configured by the user. Same for closing your position, when the close is above our SMA 100 line, we determine how high above the line before selling. If we try to sell too early (while the price is still rising), the trailing stop loss will kick in. Backtested with Bitcoin and Ethereum.

Configurable variables:
  • SMA Fast (default is 14 days)
  • SMA Slow (default is 100)
  • SMA Reference (default is 30)
  • Low Offset % (default is 0.001)
  • High Offset % (default is 0.0164)
  • Order Stake % (default is 0.96)
  • Trailing stop loss % (default is 1.35)

Notas de prensa

Modified it to guard that we're under the slow line instead of the reference line.

Notas de prensa

Clean chart for publishing.

Notas de prensa

Pretty big rewrite, now contains both stoploss and trailing stoploss. Tailing stoploss is defined by ticks, so it's going to play different with different pairs. I back tested this with ADAUSDT and that's how it's set up at the moment. On a side note, I couldn't get the stoploss and trailing stoploss to work using strategy.exit() so I had to do it manually using if/else conditions. Curious if anyone else has had this problem or if I'm just doing something incorrect.

Notas de prensa

Made the dialog a little more clear. Also wanted to remind you to use 1 hour candles.

Notas de prensa

Added comments for clarity.

Notas de prensa

Last note, the stop loss, trailing stoploss and trailing start line are all plots you can turn on in the settings.

Notas de prensa

Another note: we no longer use a high offset for selling, we basically stay in the trade until our trailing stoploss gets triggered. A couple of other exit conditions exist, we have a stoploss and we also have a micro stoploss for trades that go above the trailing stoploss start line but come back down before the trailing stoploss gets triggerred, that little hack backfires once in a while and you miss a nice climb, but the money it saves you in the long run is worth it.

Notas de prensa

Added ability for the user to use the micro stop or not. The micro stop gets triggered when a candle goes above the trailing stop loss start line, but the trailing stop hasn't yet activated, it will sell if it crosses back under the trailing stop loss start line. The trailing stop loss seems to get triggered once the stoploss line itself goes above the trailing stop loss start line, not when the candles do. Not sure why.

Notas de prensa

Removed unused input.

Notas de prensa

Removed all references to unused moving average.

Notas de prensa

Updated default values fo chart.

Notas de prensa

New chart.

Notas de prensa

Notas de prensa

Modified step values for easier to use interface.

Notas de prensa

Updated step values so we can have negative ticks for setting the trailing stop start point.

Notas de prensa

Added a note for ADAUSDT users on BINANCE_US. This chart is using BINANCE, which may be using different tick settings than BINANCE_US, I added a comment with settings you can use for BINANCE_US. Also updated the chart and the default values.

Notas de prensa

Added additional condition to buy if our slow moving average is rising.

Notas de prensa

Pretty big update here. Big thanks to Paul D Mendes for his guidance on how to properly set up stops and trailing stops. Also set up a take profit option and modified the offset code slightly to have more of an effect when you play with the numbers. I advise you to really spend time playing with the numbers, you can really dial it in per pair. I have it set up (as of this release date) making over 66000% in returns over the backtest period with a Sortino ratio of over 9. For reference, a Sortino ratio greater than 1.0 is considered acceptable, 2.0 is considered very good and 3.0 or higher is considered excellent. I find this strategy works best on a 1 hour timeframe.

Notas de prensa

Removed buy condition #2 brings about more overall profit, I left the code in there in case anyone wants to turn it back on. I just don't think it's needed.

Notas de prensa

chart update

Notas de prensa

Ran into an order limit error so I edited the code for that specific error. Not sure if it's exhange/pair related or it's a Tradingview limit. Either way, I added lines 45 and 46 to get rid of it. Also changed the chart to a 5 minute chart and have the settings set for ETHUSD on Tradestation. Sharpe is over 1, Sortino is over 18, net profit is 122732% and percent profitable is over 90%.

Notas de prensa

Updated to Pinescript 5 and made a couple of changes, best with Day long candles.

Notas de prensa

Added fee structure to strategy.

Notas de prensa

Removed comment....

Notas de prensa

Small code change for readability.
Comentarios
Mandu_Bear
Hello. First of all, your indicator is a great strategy. I am very happy to be able to use this and thank you. I tried to apply this to UPBIT:BTCKRW. However, the following study error is output.

**Study error : Quantity for entry or order must be a positive number less or equal to 1000000000.000000, passed value is -0.00323

What parameters do I need to modify to correct the error? I'm interested in Pine Edit, but my skills are very lacking, so I'm asking you for advice.
sonnyparlin
@Mandu_Bear, try modifying the order price to be a fixed amount and see if that helps. So change ****orderSize = (strategy.equity * i_orderStake) / close**** to ****orderSize = 0.00xxxxx**** whatever your desired order amount is.
Mandu_Bear
@sonnyparlin, I modified the script as you advised and confirmed that it works. Thank you for your kindness. :)
BoveJuan
Excelente estrategia, podrias compartir el codigo transformado para freqtrade ? me gustaria hacerle pruebas, gracias
sonnyparlin
Best to use 1 hour candles for this strategy.
sonnyparlin
@sonnyparlin, Actually your mileage may vary, try out different candle timeframes...
tyomasun
distanceLow == distanceHigh ?
sonnyparlin
@tyomasun, Yeah, I think I wrote it like that to make it clear to myself what I was doing... I confuse easily.
dpanday
Nice strategy !
Más