Cara menggunakan super trend python

Mayoritas dat trader menggunakan analisa teknikal untuk mengidentifikasi peluang trading. Masalahnya, mereka sering kebingungan menentukan indikator apa yang sebaiknya digunakan agar bisa meraup profit maksimal. Dari sekian banyak indikator day trading, indikator Supertrend bisa dibilang sangat sedehana dalam mengidentifikasi sinyal beli atau jual di pasar trending.

Cara menggunakan super trend python

Supertrend merupakan indikator teknikal ciptaan Olivier Sebam yang berguna membantu trader mendeteksi trend sehingga tahu kapan harus melakukan entry sell maupun buy. Tak bisa dipungkiri, trend ialah hal penting di pasar forex. Banyak trader sukses di luar sana mengidentifikasi trend lebih awal dan memanfaatkannya untuk meningkatkan potensi trading.

Saat diterapkan pada chart, indikator Supertrend menampilkan dua pita dengan warna default merah dan hijau. Kumpulan candle yang diselimuti pita berwarna hijau memberikan sinyal buy, sedangkan pita berwarna merah menandakan saatnya jual aset (sell).

Indikator Supertrend bekerja dengan baik di semua time frame, baik jangka pendek seperti grafik 5 menit, time frame 1 hari, bahkan mingguan.

Mengkalkulasi indikator Supertrend sebenarnya cukup kompleks. Jika lemah matematika, Anda tidak perlu-perlu amat mempelajari rumus indikator ini. Tapi dengan dua langkah mudah berikut, Anda bisa mengetahui rumus perhitungan indikator Supertrend:

Pertama, Anda perlu menghitung pita atas. Ini dilakukan dengan terlebih dahulu menambahkan harga tinggi dan harga rendah. Setelah itu, bagilah hasilnya dengan 2 lalu tambahkan kelipatan dari multiplier dan Average True Range (ATR). ATR merupakan indikator yang banyak digunakan untuk mengidentifikasi volatilitas di pasar.

Kedua, Anda perlu menghitung pita bawah dengan menambahkan harga tinggi dan rendah dan membagi hasilnya dengan 2. Kemudian, kurangi hasilnya dengan multiplier dan kalikan dengan ATR.

Dua langkah di atas akan menghasilkan formula indikator Supertrend di bawah ini:

Sebelum menggunakan indikator Supertrend, Anda perlu melakukan beberapa perubahan pada setting. Secara default, periode Average True Range (ATR) yang digunakan adalah 10 hari. Anda dapat mengutak-atiknya sesuai kebutuhan trading. Sementara itu, setting multiplier biasanya 3 dan bisa disesuaikan juga dengan jangka waktu strategi Anda.

Setting penting lainnya yang dapat dikustomisasi adalah metode penghitungan ATR serta tampilan highlighter dan sinyal jual-beli. Warna indikator Supertrend juga bisa diganti-ganti sesuai selera, lho!

Chart harian di bawah ini menunjukkan indikator Supertrend yang diterapkan pada pasangan mata uang EUR/USD menggunakan setting default:

Cara menggunakan super trend python

Menggunakan indikator Supertrend sangatlah mudah. Namun sebelum itu, pastikan Anda berada di pasar trending dan bukan ranging. Seperti kebanyakan indikator trend, pasar ranging tidak ideal bagi indikator Supertrend karena hanya akan menghasilkan sinyal palsu.

Setelah memasang indikator Supertrend, lihat warna dan rekomendasinya. Jika tertera instruksi "Buy", maka Anda bisa membeli aset, begitu juga sebaliknya. Akan tetapi, Anda sangat disarankan turut memasang indikator lain untuk mengkonfirmasi dan meningkatkan akurasi sinyal entry. Jangan lupa melakukan analisa multi-time frame agar sinyal trading semakin valid.

Contoh chart di bawah ini menunjukkan EUR/USD sama-sama mensinyalkan "Buy" pada time frame 4H maupun 1D:

Cara menggunakan super trend python

Singkat cerita, indikator Supertrend mungkin tidak sepopuler RSI, OBV, maupun MACD. Namun, ia adalah salah satu yang paling mudah digunakan oleh pemula sekalipun. Hal itu karena indikasi "Buy" dan "Sell" yang sangat jelas dan terlihat secara langsung di chart. Meski begitu, cobalah indikator Supertrend terlebih dahulu di akun demo atau akun cent sebelum menggunakannya di akun real. Tujuannya adalah untuk menentukan apakah indikator ini sesuai dengan sistem trading Anda.

Demi menemukan peluang buy atau sell yang lebih akurat, indikator Supertrend bisa digabungkan dengan beberapa indikator lain, salah satunya ialah Parabolic SAR. Untuk mengetahui penjelasan lengkapnya, simak di "Apa itu Parabolic SAR dan Bagaimana Cara Mengaplikasikannya".

ccxt เป็น library ที่ทำให้เราเชื่อมต่อโบรค Crypto ได้กว่า 130 โบรคในที่นี้จะใช้ ccxt เชื่อมเข้ากับ FTX…

paohuee.medium.com

วิธีดึงข้อมูล Historical Data ตลาดไทย ด้วย Yahoo Finance

สร้างระบบเทรด MACD ตลาดหุ้นไทยด้วย python

กลยุทธ์ซื้อ-ขายตลาดหุ้นไทยด้วย MACD โดยการใช้ python

paohuee.medium.com

เรียกใช้ library

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport requestsfrom math import floorfrom termcolor import colored as climport ccxtplt.style.use('fivethirtyeight')plt.rcParams['figure.figsize'] = (20,10)

สร้าง functions เรียกราคาจาก FTX

ftx = ccxt.ftx({‘api_key’: ‘************************’,
‘secret’: ‘*************************’})

symbol = 'SOL/USD'
tf = '1h'
n = 500
def get_historical_data(n,timeframe,product):
ohlc = ftx.fetch_ohlcv(product,timeframe=timeframe,limit=n)
ohlc_df = pd.DataFrame(ohlc, columns =['datetime', 'open','high','low','close','volume'])
ohlc_df['datetime'] = pd.to_datetime(ohlc_df['datetime'], unit='ms')
return ohlc_df.set_index('datetime')

สร้าง function คำนวณ Supertrend Indicator จาก historical data

def get_supertrend(high, low, close, lookback, multiplier):

# ATR

tr1 = pd.DataFrame(high - low)
tr2 = pd.DataFrame(abs(high - close.shift(1)))
tr3 = pd.DataFrame(abs(low - close.shift(1)))
frames = [tr1, tr2, tr3]
tr = pd.concat(frames, axis = 1, join = 'inner').max(axis = 1)
atr = tr.ewm(lookback).mean()

# H/L AVG AND BASIC UPPER & LOWER BAND

hl_avg = (high + low) / 2
upper_band = (hl_avg + multiplier * atr).dropna()
lower_band = (hl_avg - multiplier * atr).dropna()

# FINAL UPPER BAND
final_bands = pd.DataFrame(columns = ['upper', 'lower'])
final_bands.iloc[:,0] = [x for x in upper_band - upper_band]
final_bands.iloc[:,1] = final_bands.iloc[:,0]
for i in range(len(final_bands)):
if i == 0:
final_bands.iloc[i,0] = 0
else:
if (upper_band[i] < final_bands.iloc[i-1,0]) | (close[i-1] > final_bands.iloc[i-1,0]):
final_bands.iloc[i,0] = upper_band[i]
else:
final_bands.iloc[i,0] = final_bands.iloc[i-1,0]

# FINAL LOWER BAND

for i in range(len(final_bands)):
if i == 0:
final_bands.iloc[i, 1] = 0
else:
if (lower_band[i] > final_bands.iloc[i-1,1]) | (close[i-1] < final_bands.iloc[i-1,1]):
final_bands.iloc[i,1] = lower_band[i]
else:
final_bands.iloc[i,1] = final_bands.iloc[i-1,1]

# SUPERTREND

supertrend = pd.DataFrame(columns = [f'supertrend_{lookback}'])
supertrend.iloc[:,0] = [x for x in final_bands['upper'] - final_bands['upper']]

for i in range(len(supertrend)):
if i == 0:
supertrend.iloc[i, 0] = 0
elif supertrend.iloc[i-1, 0] == final_bands.iloc[i-1, 0] and close[i] < final_bands.iloc[i, 0]:
supertrend.iloc[i, 0] = final_bands.iloc[i, 0]
elif supertrend.iloc[i-1, 0] == final_bands.iloc[i-1, 0] and close[i] > final_bands.iloc[i, 0]:
supertrend.iloc[i, 0] = final_bands.iloc[i, 1]
elif supertrend.iloc[i-1, 0] == final_bands.iloc[i-1, 1] and close[i] > final_bands.iloc[i, 1]:
supertrend.iloc[i, 0] = final_bands.iloc[i, 1]
elif supertrend.iloc[i-1, 0] == final_bands.iloc[i-1, 1] and close[i] < final_bands.iloc[i, 1]:
supertrend.iloc[i, 0] = final_bands.iloc[i, 0]

supertrend = supertrend.set_index(upper_band.index)
supertrend = supertrend.dropna()[1:]

# ST UPTREND/DOWNTREND

upt = []
dt = []
close = close.iloc[len(close) - len(supertrend):]
for i in range(len(supertrend)):
if close[i] > supertrend.iloc[i, 0]:
upt.append(supertrend.iloc[i, 0])
dt.append(np.nan)
elif close[i] < supertrend.iloc[i, 0]:
upt.append(np.nan)
dt.append(supertrend.iloc[i, 0])
else:
upt.append(np.nan)
dt.append(np.nan)

st, upt, dt = pd.Series(supertrend.iloc[:, 0]), pd.Series(upt), pd.Series(dt)
upt.index, dt.index = supertrend.index, supertrend.index

return st, upt, dt
def implement_st_strategy(prices, st):
buy_price = []
sell_price = []
st_signal = []
signal = 0

for i in range(len(st)):
if st[i-1] > prices[i-1] and st[i] < prices[i]:
if signal != 1:
buy_price.append(prices[i])
sell_price.append(np.nan)
signal = 1
st_signal.append(signal)
else:
buy_price.append(np.nan)
sell_price.append(np.nan)
st_signal.append(0)
elif st[i-1] < prices[i-1] and st[i] > prices[i]:
if signal != -1:
buy_price.append(np.nan)
sell_price.append(prices[i])
signal = -1
st_signal.append(signal)
else:
buy_price.append(np.nan)
sell_price.append(np.nan)
st_signal.append(0)
else:
buy_price.append(np.nan)
sell_price.append(np.nan)
st_signal.append(0)

return buy_price, sell_price, st_signal

เรียก plot

Full Code

Google Colaboratory

Edit description

colab.research.google.com

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import requests
from math import floor
from termcolor import colored as cl
import ccxt
plt.style.use('fivethirtyeight')
plt.rcParams['figure.figsize'] = (20,10)
ftx = ccxt.ftx({
'api_key': '',
'secret': ''})
def get_historical_data(n,timeframe,product):
ohlc = ftx.fetch_ohlcv(product,timeframe=timeframe,limit=n)
ohlc_df = pd.DataFrame(ohlc, columns =['datetime', 'open','high','low','close','volume'])
ohlc_df['datetime'] = pd.to_datetime(ohlc_df['datetime'], unit='ms')
return ohlc_df.set_index('datetime')
def get_supertrend(high, low, close, lookback, multiplier):

# ATR

tr1 = pd.DataFrame(high - low)
tr2 = pd.DataFrame(abs(high - close.shift(1)))
tr3 = pd.DataFrame(abs(low - close.shift(1)))
frames = [tr1, tr2, tr3]
tr = pd.concat(frames, axis = 1, join = 'inner').max(axis = 1)
atr = tr.ewm(lookback).mean()

# H/L AVG AND BASIC UPPER & LOWER BAND

hl_avg = (high + low) / 2
upper_band = (hl_avg + multiplier * atr).dropna()
lower_band = (hl_avg - multiplier * atr).dropna()

# FINAL UPPER BAND
final_bands = pd.DataFrame(columns = ['upper', 'lower'])
final_bands.iloc[:,0] = [x for x in upper_band - upper_band]
final_bands.iloc[:,1] = final_bands.iloc[:,0]
for i in range(len(final_bands)):
if i == 0:
final_bands.iloc[i,0] = 0
else:
if (upper_band[i] < final_bands.iloc[i-1,0]) | (close[i-1] > final_bands.iloc[i-1,0]):
final_bands.iloc[i,0] = upper_band[i]
else:
final_bands.iloc[i,0] = final_bands.iloc[i-1,0]

# FINAL LOWER BAND

for i in range(len(final_bands)):
if i == 0:
final_bands.iloc[i, 1] = 0
else:
if (lower_band[i] > final_bands.iloc[i-1,1]) | (close[i-1] < final_bands.iloc[i-1,1]):
final_bands.iloc[i,1] = lower_band[i]
else:
final_bands.iloc[i,1] = final_bands.iloc[i-1,1]

# SUPERTREND

supertrend = pd.DataFrame(columns = [f'supertrend_{lookback}'])
supertrend.iloc[:,0] = [x for x in final_bands['upper'] - final_bands['upper']]

for i in range(len(supertrend)):
if i == 0:
supertrend.iloc[i, 0] = 0
elif supertrend.iloc[i-1, 0] == final_bands.iloc[i-1, 0] and close[i] < final_bands.iloc[i, 0]:
supertrend.iloc[i, 0] = final_bands.iloc[i, 0]
elif supertrend.iloc[i-1, 0] == final_bands.iloc[i-1, 0] and close[i] > final_bands.iloc[i, 0]:
supertrend.iloc[i, 0] = final_bands.iloc[i, 1]
elif supertrend.iloc[i-1, 0] == final_bands.iloc[i-1, 1] and close[i] > final_bands.iloc[i, 1]:
supertrend.iloc[i, 0] = final_bands.iloc[i, 1]
elif supertrend.iloc[i-1, 0] == final_bands.iloc[i-1, 1] and close[i] < final_bands.iloc[i, 1]:
supertrend.iloc[i, 0] = final_bands.iloc[i, 0]

supertrend = supertrend.set_index(upper_band.index)
supertrend = supertrend.dropna()[1:]

# ST UPTREND/DOWNTREND

upt = []
dt = []
close = close.iloc[len(close) - len(supertrend):]
for i in range(len(supertrend)):
if close[i] > supertrend.iloc[i, 0]:
upt.append(supertrend.iloc[i, 0])
dt.append(np.nan)
elif close[i] < supertrend.iloc[i, 0]:
upt.append(np.nan)
dt.append(supertrend.iloc[i, 0])
else:
upt.append(np.nan)
dt.append(np.nan)

st, upt, dt = pd.Series(supertrend.iloc[:, 0]), pd.Series(upt), pd.Series(dt)
upt.index, dt.index = supertrend.index, supertrend.index

return st, upt, dt
def implement_st_strategy(prices, st):
buy_price = []
sell_price = []
st_signal = []
signal = 0

for i in range(len(st)):
if st[i-1] > prices[i-1] and st[i] < prices[i]:
if signal != 1:
buy_price.append(prices[i])
sell_price.append(np.nan)
signal = 1
st_signal.append(signal)
else:
buy_price.append(np.nan)
sell_price.append(np.nan)
st_signal.append(0)
elif st[i-1] < prices[i-1] and st[i] > prices[i]:
if signal != -1:
buy_price.append(np.nan)
sell_price.append(prices[i])
signal = -1
st_signal.append(signal)
else:
buy_price.append(np.nan)
sell_price.append(np.nan)
st_signal.append(0)
else:
buy_price.append(np.nan)
sell_price.append(np.nan)
st_signal.append(0)

return buy_price, sell_price, st_signal
symbol = 'SOL/USD'
tf = '1h'
n = 500
OHLC = get_historical_data(n,tf,symbol)
OHLC
OHLC['st'], OHLC['s_upt'], OHLC['st_dt'] = get_supertrend(OHLC['high'], OHLC['low'], OHLC['close'], 10, 3)
OHLC = OHLC[1:]
# print(BTC.head())
buy_price, sell_price, st_signal = implement_st_strategy(OHLC['close'], OHLC['st'])plt.plot(OHLC['close'], linewidth = 2)
plt.plot(OHLC['st'], color = 'green', linewidth = 2, label = 'ST UPTREND')
plt.plot(OHLC['st_dt'], color = 'r', linewidth = 2, label = 'ST DOWNTREND')
plt.plot(OHLC.index, buy_price, marker = '^', color = 'green', markersize = 12, linewidth = 0, label = 'BUY SIGNAL')
plt.plot(OHLC.index, sell_price, marker = 'v', color = 'r', markersize = 12, linewidth = 0, label = 'SELL SIGNAL')
plt.title(f'{symbol} ST TRADING SIGNALS')
plt.legend(loc = 'upper left')
plt.show()

A Step-By-Step Guide to Implementing the SuperTrend Indicator in Python

Learn to build a powerful trading strategy with the SuperTrend indicator in python

medium.com