Cara menggunakan python technical analysis github

Hi Fams, pernahkah kamu mendengar istilah GitHub? Kalau kamu berkecimpung di dunia teknnologi, khususnya software dan programming pasti GitHub bukan hal asing lagi. Hemera sudah merangkum pengertian dan cara kerja GitHub khusus untuk kamu. Yuk simak artikel berikut ini.

GitHub merupakan bagian dari seperangkat alat penting dalam pembuatan perangkat lunak atau software. Dalam proses kerjanya, GitHub sangat berhubungan dengan Git. Sehingga, untuk memahami apa itu GitHub dan cara kerjanya, kita mesti mengetahui dulu apa itu Git.

Apa Itu Git? dan Apa Hubungannya dengan GitHub?

Apa itu Git? Git adalah sebuah Version Control System (VCS) yang membantu kita menjaga agar ada pembedaan masing-masing file, sehingga file tetap di jalur yang sama ketika dalam penyimpanan ulang. Contohnya, ketika file final_draft.doc di­copy-paste, maka nama file yang muncul sebagai penawaran adalah final_draft(2).doc. Tanpa Git, file-file tesebut akan akan menjadi file yang terlihat sama dengan file sebelumnya. Tentu saja itu membingungkan ya.

Lalu apa hubungannya dengan GitHub? GitHub adalah website tempat Git melakukan penyimpanan. Alat ini dibuat dan dikembangkan pada tahun 2008, dengan alasan bahwa GIt sangat penting untuk mengatasi persoalan masalah yang terjadi di banyak tim, namun Git sendiri pada saat itu sering sulit digunakan.

Untuk mengatasi masalah tersebut, GitHub menambah sekelompok alat kolaborasi dan eksplorasi pada Git untuk membantu suatu tim kerja agar lebih produktif. Misalnya, GitHub membantu memudahkan proses berbagi kode antara komputer-komputer dengan developers.

Dengan kata lain, GitHub menjadi seperangkat alat sentral dalam ogranisasi dengan sistem komunitas terbuka, yang digunakan berbagai perusahaan dan tim untuk berbagi berkas. Beberapa pengguna GitHub memiliki satu penyimpanan dalam pekerjaan mereka, ada juga yang memiliki ratusan.

Bagaimana Cara Kerjanya?

Dalam alur kerjanya, GitHub digunakan untuk menyimpan file yang dikerjakan dengan komputer kantor, lalu melanjutkan pekerjaan tersebut ketika sudah di rumah. Caranya adalah membuat commit tersebut masuk ke penyimpanan GitHub. Detilnya,  tinggal menarik file tersebut dari GitHub dan melanjutkan pekerjaan yang tadi ditinggalkan.

Begitu juga jika ingin pindah ke komputer lain, di luar rumah dan kantor, tapi ingin mengerjakan berkas yang sama. Caranya adalah dengan membuat commit dan mendorongnya masuk GitHub, sehingga pekerjaan tersebut dapat digunakan dengan mudah di berbagai komputer lainnya.

Proses terebut dapat dilakukan terus pada berbagai masalah dalam pekerjaan. Namun, jika memutuskan untuk menarik seorang rekan dalam melakukan sebuah pekerjaan, kita harus menggabungkan cabang-cabang yang sudah dikerjakan dalam satu alur kerja. Cabang-cabang tersebut memudahkan dalam memperbarui project secara berkesinambungan.

Hebatnya, cara tersebut diterapkan oleh banyak perusahaan, termasuk di Indonesia. Tak peduli besar atau kecil organisasinya. Hal tersebut demi proses pengembangan perusahaan. Untuk hal ini GitHub juga menyediakan layanan private yang disediakan dengan langganan berbayar. Sementara, penyimpanan public diberikan secara gratis.

Namun, kebanyakan perusahaan memiliki campuran penyimpanan antara private dan public karena adanya preseden open source dalam pembuatan software. Seperti Facebook, yang memiliki satu ton software yang bersifat open source  pada GitHub, termasuk framework terkenal dari JavaSrcipt: React.

Baca Juga: Mengenali Perbedaan ReactJS dan React Native

Selain Facebook, perusahaan yang menggunakan Git dan GitHub sebagai source code hosting adalah Netflix, Amazon, AirBne, Google,dan IBM. Sejauh ini, GitHub merupakan layanan penyimpanan paling ternama sebagai layanan hosting. Tahun 2018 saja, ada 31 juta pengguna seluruh dunia dengan penyimpanan 96 juta lebih….

Analisis Teknikal – Salah satu analisis harga saham/stok yang sering digunakan yaitu analisis teknikal berdasarkan sifat data time series yang berulang. Analisis teknikal biasanya melibatkan analisis grafik yang canggih. Saat ini banyak sekali tersedia secara default oleh para broker berbasis aplikasi web ataupun mobile application.

Analisis teknikal bisa kok kita buat sendiri, asalkan kita punya data yang lengkap transaksi saham harian. Kalian bisa kok download data transaksi harian saham di https://github.com/mulkan/data-stock/tree/main/dataset

Berbicara mengenai analisis teknikal, saya biasanya menggunakan broker stockbit/tradingview. Bila kalian mau otak-atik sendiri tentu mengolah data yang cukup untuk analisis teknikal tidak praktis menggunakan excel. Solusinya yaitu bisa menggunakan R/RStudio dengan package quantmod.

Analisis teknikal ada banyak jenisnya yaitu

Jenis Analisis Teknikal

Contents

Volume

  • Money Flow Index (MFI)
  • Accumulation/Distribution Index (ADI)
  • On-Balance Volume (OBV)
  • Chaikin Money Flow (CMF)
  • Force Index (FI)
  • Ease of Movement (EoM, EMV)
  • Volume-price Trend (VPT)
  • Negative Volume Index (NVI)
  • Volume Weighted Average Price (VWAP)

Volatility

  • Average True Range (ATR)
  • Bollinger Bands (BB)
  • Keltner Channel (KC)
  • Donchian Channel (DC)
  • Ulcer Index (UI)

Trend

  • Simple Moving Average (SMA)
  • Exponential Moving Average (EMA)
  • Weighted Moving Average (WMA)
  • Moving Average Convergence Divergence (MACD)
  • Average Directional Movement Index (ADX)
  • Vortex Indicator (VI)
  • Trix (TRIX)
  • Mass Index (MI)
  • Commodity Channel Index (CCI)
  • Detrended Price Oscillator (DPO)
  • KST Oscillator (KST)
  • Ichimoku Kinkō Hyō (Ichimoku)
  • Parabolic Stop And Reverse (Parabolic SAR)
  • Schaff Trend Cycle (STC)

Momentum

  • Relative Strength Index (RSI)
  • Stochastic RSI (SRSI)
  • True strength index (TSI)
  • Ultimate Oscillator (UO)
  • Stochastic Oscillator (SR)
  • Williams %R (WR)
  • Awesome Oscillator (AO)
  • Kaufman’s Adaptive Moving Average (KAMA)
  • Rate of Change (ROC)
  • Percentage Price Oscillator (PPO)
  • Percentage Volume Oscillator (PVO)

See also  Dapat Cuan dari Emiten Gocap - Indikator Frequency Analyser

Others

  • Daily Return (DR)
  • Daily Log Return (DLR)
  • Cumulative Return (CR)

Library Analisis Teknikal

Nah pada pembahasan kali ini, saya akan lebih fokus menggunakan Python saja daripada R/RStudio sebagai alternatif saja. Terlebih dahulu kalian bisa merge file CSV Merge File CSV di Pandas menggunakan dataset https://github.com/mulkan/data-stock/tree/main/dataset

Library yang sudah saya pernah coba-coba seperti

  1. tradingview-ta https://pypi.org/project/tradingview-ta/
  2. https://github.com/bukosabino/ta
  3. https://github.com/twopirllc/pandas-ta
  4. https://github.com/peerchemist/finta
  5. https://github.com/mrjbq7/ta-lib

Ternyata lebih menarik dan lengkap point 3 karena merupakan wrapper dari TA-Lib : Technical Analysis Library yang banyak digunakan developer dan tersedia banyak untuk bahasa lainnya walaupun ditulis di C/C++. Menggunakan library SWIG untuk mengkoneksikan bahasa yang ditulis di C/C++ ke bahasa tingkat tinggi lain seperti java, perl, php, python, C#, go lang.

Install TA-Lib juga lumayan ribet, setelah saya download versi binary ta-lib-0.4.0-msvc.zip dan di extract di C:\ta-lib dan setting path nya agar dikenali oleh sistem windows  kemudian install via pip yang bisa kalian gunakan 2 cara yaitu

  • via pip installer : python3 -m pip install TA-Lib
  • ataupun download source code nya via git clone dan melakukan run file setup.py
    conda install -c conda-forge ta-lib
    0

hasilnya banyak error (ta-lib-0.4.0-msvc.zip ternyata versi 32 bit, cukup ribet kalau harus compile ke versi 64 bit menggunakan visual studio)

build\lib.win-amd64-3.8\talib\_ta_lib.pyd : fatal error LNK1120: 339 unresolved externals
error: command ‘C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\bin\\HostX86\\x64\\link.exe’ failed with exit code 1120

Ternyata yang paling gampang pakai whl saja yang bisa kalian download di  pilih sesuai versi, seperti Python 3.8 (64 bit) bisa menggunakan TA_Lib-0.4.24-cp38-cp38-win_amd64.whl. Setelah di download install via pip

conda install -c conda-forge ta-lib
1 Ternyata bisa.

>>> import talib
>>> import numpy
>>> c =  numpy.random.randn(100)
>>> k,d = talib.STOCHRSI(c)

Kalau bagi pengguna macbook M1 bisa menggunakan kode berikut untuk install

conda install -c conda-forge ta-lib

 

See also  Apa itu Market Capitalization

Analisis Teknikal

Sekarang kita coba yuk, dengan loading dataset terlebih dahulu (akan lebih baik kalian menggunakan jupyter notebook ya) karena grafiknya pakai plotly berbasis web app.

import pandas as pd
import glob
import os

joined_files = os.path.join("G:\\dataset", "*.csv")
joined_list = glob.glob(joined_files)
df = pd.concat(map(pd.read_csv, joined_list), ignore_index=True)

Jangan lupa untuk mengubah date format nya agar sesuai standar pandas

df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')

Kita bisa melihat ada sekali data yang kita pakai karena bersifat harian, kita harus melakukan teknik aggregasi. Bila pernah menggunakan R/RStudio urusan untuk pivot/aggregasi sangatlah dimudahkan dengan adanya package dplyr.

Tapi tenang saja, di Python bisa kok menggunakan pandas

RPYTHONmutateassignselectfilterarrangesort_valuesgroup_bygroupbysummariseaggfilterqueryrenamerename–eval

Pilih emiten dan tahun yang digunakan, misalkan akan pilih emiten ACES dimulai dari tanggal 01 januari 2022 sampai saat ini.

stock_emiten = df.query("StockCode=='ACES' & Date>='2022-01-01'")
stock_emiten.sort_values(by='Date',ascending=True,inplace = True) #memastikan date nya urut

Kita akan plot Close dan RSI nya

from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(rows=2, cols=1, shared_xaxes=True)

fig.add_trace(
    go.Line(x=stock_emiten["Date"], y=stock_emiten["Close"]),
    row=1, col=1
)

fig.add_trace(
    go.Line(x=stock_emiten["Date"], y= stock_emiten["RSI"]),
    row=2, col=1
)

fig.update_layout(height=600, width=800, title_text="Saham Emiten ACES")
fig.show()

Cara menggunakan python technical analysis github

GroupBy

Untuk mempercepat perhitungan RSI pada semua emiten, kita bisa menggunakan GroupBy

def addRSI(grp):
    grp["RSI"] = talib.RSI(grp["Close"],9)
    return grp



df.sort_values(by='Date',ascending=True,inplace =  True)

stock = df.groupby('StockCode').apply(addRSI)


emiten = "'TOWR'"
stock_emiten = stock.query("StockCode=="+emiten+" & Date>='2022-01-01'")

from plotly.subplots import make_subplots
import plotly.graph_objects as go
import warnings
warnings.filterwarnings('ignore')

fig = make_subplots(rows=2, cols=1, shared_xaxes=True)

fig.add_trace(
    go.Line(x=stock_emiten["Date"], y=stock_emiten["Close"]),
    row=1, col=1
)

fig.add_trace(
    go.Line(x=stock_emiten["Date"], y= stock_emiten["RSI"]),
    row=2, col=1
)

fig.update_layout(height=600, width=1000, title_text="Saham Emiten "+emiten)
fig.show()

Yuk kita lihat Analisis Teknikal diatas

Cara menggunakan python technical analysis github

Ternyata untuk emiten TOWR dengan RSI9 masih belum jenuh jual

Analisis Teknikal SMA

Analisis teknikal yang lainya untuk deteksi kapan beli yaitu ketika SMA periode rendah memotong keatas SMA periode tinggi. Seperti biasa kita buat function terlebih dahulu sekalian operasi groupby