⬡ TUTORIAL TEKNIS · ADA KODE · BACA 14 MENIT

Bot trading Python dengan Binance API.

Dari setup lingkungan sampai sinyal pertama yang terhitung, dengan kode yang nyata dan aman. Kita akan connect, menarik candle, menyusun strategi, dan — yang paling penting — tes di testnet sebelum uang sungguhan sepeser pun dipertaruhkan.

Oleh Tim RoboTraderIA· diperbarui Mei 2026· level menengah

Binance punya salah satu API paling lengkap dan paling rapi dokumentasinya di dunia kripto, dan Python adalah bahasa yang ideal untuk menggarapnya. Di tutorial ini Anda akan membangun fondasi bot trading yang nyata — bukan mainan. Kita akan memprioritaskan tiga hal yang membedakan kode hobi dari kode serius: keamanan API key, pemisahan tanggung jawab dan tes sebelum eksekusi live.

Sebelum semuanya — soal risiko: bot kripto beroperasi di pasar dengan volatilitas sangat tinggi, 24/7, tanpa circuit breaker. Satu bug di kode Anda bisa mengosongkan akun saat Anda tidur. Semua yang ada di sini harus diuji habis-habisan di testnet. Jangan pernah menjalankannya dengan uang yang tidak sanggup Anda relakan, dan jangan pernah mengaktifkan izin penarikan dana di API key Anda.

01Setup lingkungan

Python 3.11+, virtualenv, dan library-nya. Ada dua pilihan utama: python-binance (khusus, lebih langsung untuk Binance) dan ccxt (generik, jalan di puluhan exchange). Supaya fokus di awal, kita pakai python-binance.

# Buat proyek dan environment terisolasi
mkdir bot-binance && cd bot-binance
python -m venv venv
source venv/bin/activate  # Linux/Mac (Windows: venv\Scripts\activate)

pip install python-binance pandas python-dotenv

02Membuat API key (dengan aman)

Di akun Binance Anda, masuk ke API Management lalu buat sebuah key. Aturan emas keamanannya:

  • Izin seminimal mungkin: aktifkan hanya "Read" dan "Spot Trading". JANGAN PERNAH aktifkan "Withdraw".
  • Batasi berdasarkan IP kalau Anda menjalankannya di VPS dengan IP tetap.
  • Simpan Secret Key saat itu juga — dia cuma muncul sekali.

Taruh key-nya di sebuah file .env (dan tambahkan .env ke .gitignore):

# .env — JANGAN pernah commit file ini
BINANCE_API_KEY=sua_chave_aqui
BINANCE_API_SECRET=seu_secret_aqui

Kesalahan yang mahal harganya: menempelkan key langsung di kode lalu mengunggahnya ke GitHub. Bot-bot menyisir GitHub dalam hitungan detik mencari key yang terekspos, lalu mengosongkan akun. Selalu .env + .gitignore.

03Koneksi dan menarik candle

Kontak pertama — connect ke testnet (lingkungan uji dengan saldo fiktif) dan tarik datanya:

# conectar.py
import os
from binance.client import Client
from dotenv import load_dotenv
import pandas as pd

load_dotenv()
# testnet=True usa o ambiente de teste — comece SEMPRE aqui
client = Client(os.getenv("BINANCE_API_KEY"),
                os.getenv("BINANCE_API_SECRET"),
                testnet=True)

def get_candles(symbol="BTCUSDT", interval="15m", limit=100):
    raw = client.get_klines(symbol=symbol, interval=interval, limit=limit)
    df = pd.DataFrame(raw, columns=[
        "open_time","open","high","low","close","volume",
        "close_time","qav","trades","tbav","tqav","ignore"])
    df["close"] = df["close"].astype(float)
    return df

df = get_candles()
print(df[["close"]].tail())

04Menghitung sinyal (strategi sebagai fungsi murni)

Inilah prinsip yang membedakan kode profesional: strateginya adalah sebuah fungsi murni — menerima data, mengembalikan sinyal, tanpa efek samping. Itu membuatnya bisa diuji terpisah, tanpa perlu connect ke mana pun. Contohnya dengan crossover moving average + RSI:

# strategy.py
import pandas as pd

def calcular_rsi(series, periodo=14):
    delta = series.diff()
    ganho = delta.clip(lower=0).rolling(periodo).mean()
    perda = -delta.clip(upper=0).rolling(periodo).mean()
    rs = ganho / perda
    return 100 - (100 / (1 + rs))

def calcular_sinal(df: pd.DataFrame) -> str:
    df["ma_rapida"] = df["close"].rolling(9).mean()
    df["ma_lenta"]  = df["close"].rolling(21).mean()
    df["rsi"] = calcular_rsi(df["close"])

    u = df.iloc[-1]
    # Beli: tren naik + RSI belum overbought
    if u["ma_rapida"] > u["ma_lenta"] and u["rsi"] < 70:
        return "COMPRA"
    if u["ma_rapida"] < u["ma_lenta"] and u["rsi"] > 30:
        return "VENDA"
    return "AGUARDA"

Kenapa fungsi murni itu penting: Anda bisa menjalankan calcular_sinal() di atas data historis 5 tahun dalam hitungan detik, tanpa connect ke API. Ini fondasi backtest. Logika strategi yang tercampur dengan kode eksekusi mustahil diuji dengan benar.

05Mengeksekusi order (di testnet dulu!)

Setelah sinyalnya terhitung, lapisan eksekusi mengirim order. Perhatikan bahwa ini berjalan di testnet — saldonya fiktif:

# executor.py
from binance.enums import *

def executar_ordem(client, symbol, sinal, quantidade):
    if sinal == "COMPRA":
        ordem = client.create_order(
            symbol=symbol, side=SIDE_BUY,
            type=ORDER_TYPE_MARKET, quantity=quantidade)
        return ordem
    if sinal == "VENDA":
        ordem = client.create_order(
            symbol=symbol, side=SIDE_SELL,
            type=ORDER_TYPE_MARKET, quantity=quantidade)
        return ordem
    return None  # TUNGGU: tidak melakukan apa-apa

Mau proyek lengkapnya, sudah jadi dan berkomentar?

Unduh contoh bot open source kami — struktur rapi, sudah termasuk tes dan manajemen risiko.

Unduh bot gratis →

06Arsitektur bot yang tidak membuat Anda bangkrut

Satukan semua bagiannya dengan pemisahan yang jelas. Bot yang serius punya lapisan-lapisan yang saling independen:

# struktur yang disarankan
# ├── client.py     # koneksi Binance + reconnect
# ├── strategy.py   # fungsi murni: data → sinyal (bisa dites)
# ├── risk.py       # ukuran posisi, stop, take, limit
# ├── executor.py   # kirim order, kontrol state
# ├── logger.py     # catat semuanya (audit itu vital)
# └── main.py       # loop utama, merekatkan semuanya

# main.py — loop básico
import time

while True:
    try:
        df = get_candles()
        sinal = calcular_sinal(df)
        qtd = calcular_tamanho_posicao(saldo, risco_pct=1)  # dari risk.py
        if sinal != "AGUARDA":
            executar_ordem(client, "BTCUSDT", sinal, qtd)
            log(sinal, qtd)
        time.sleep(60)  # cek tiap menit
    except Exception as e:
        log_erro(e)
        time.sleep(30)  # jangan pernah biarkan loop mati diam-diam

07Manajemen risiko di dalam kode

Strategi menentukan kapan masuk; manajemen risiko menentukan seberapa besar. Tanpa yang kedua, yang pertama tidak ada artinya. risk.py minimal harus berisi:

  • Ukuran posisi berdasarkan % dari modal (misal: risiko 1% per trade).
  • Stop loss otomatis di setiap posisi — jangan pernah tanpa itu.
  • Batas kerugian harian yang mematikan bot begitu tersentuh.
  • Maksimum posisi bersamaan supaya risikonya tidak menumpuk.

08Testnet dan backtest sebelum akun real

Urutan wajib sebelum menyentuh uang sungguhan: (1) backtest fungsi strategi di atas data historis, (2) testnet Binance selama berminggu-minggu dengan saldo fiktif di kondisi pasar yang nyata, (3) baru setelah itu akun real dengan nilai minimum. Melewati salah satu tahap sama saja menyetir sambil menutup mata.

Langkah berikutnya yang wajar: setelah menguasai Binance API, polanya bisa dipindahkan nyaris identik ke exchange lain lewat ccxt, dan arsitektur yang sama (strategi murni + executor + risiko) berlaku juga untuk bot di MT5. Lihat panduan umum membuat bot trading.

09Pertanyaan yang sering diajukan

python-binance atau ccxt?

python-binance itu spesifik dan lebih langsung untuk memulai dengan fokus di Binance. ccxt generik dan jalan di puluhan exchange dengan sintaks yang sama — lebih baik kalau Anda berencana trading di beberapa exchange. Untuk belajar, mulai dengan python-binance.

Apakah butuh uang untuk mulai tes?

Tidak. Binance punya testnet gratis dengan saldo fiktif, di kondisi pasar yang nyata. Pakai testnet=True di client-nya. Tes berminggu-minggu sebelum menyentuh uang sungguhan.

Apakah aman menaruh API key di dalam kode?

Tidak pernah aman. Pakai environment variable (.env), batasi izin key seminimal mungkin (read + spot, jangan sekali-kali withdraw), dan tambahkan .env ke .gitignore. Bot-bot menyisir GitHub mencari key yang terekspos.

Bisakah bot jalan sendiri 24 jam?

Bisa, tapi dia harus berjalan di mesin yang selalu menyala — idealnya sebuah VPS. Kripto buka 24/7, jadi bot di PC pribadi Anda ikut berhenti begitu mesinnya dimatikan.

Bisakah ini dipakai di B3?

Binance API itu untuk kripto. Untuk B3 di Brasil (mini indeks, mini dolar), jalurnya lewat MT5 dengan library MetaTrader5 di Python, atau lewat API broker Anda. Arsitekturnya (strategi murni + executor) sama saja.

Baca juga

🎁 Dapatkan bot trading gratis (dengan API Quotex, Deriv, dan IQ Option)

Bot open source + kode API siap pakai. Anda tinggal mengeditnya sambil mengobrol dengan ChatGPT/Claude — tanpa perlu coding. Gratis, tanpa spam.

👉 Sudah mau bot yang siap pakai? Kunjungi botbinaryoptions.com →