Membuat Strategi Trading Dari Awal dengan Python.

Gambar untuk postingan

Strategi perdagangan adalah inti dari jual beli di pasar. Banyak pedagang memiliki alasan untuk berpartisipasi. Sebuah strategi dimulai dengan ide yang kemudian diubah menjadi studi kelayakan, sebelum pengujian kembali, dan akhirnya, implementasi langsung dan evaluasi waktu nyata. Pada artikel ini, kita akan mulai dengan ide dasar untuk hanya menggunakan data keuangan dasar untuk mendapatkan sinyal perdagangan, kemudian kita akan melihat apakah itu layak, sebelum mengujinya kembali dan menilai kinerjanya.

Jika Anda tertarik dengan strategi pelawan, pastikan Anda juga membaca artikel berikut yang baru-baru ini saya terbitkan di Medium:

Brainstorming Ide

Informasi keuangan dalam bentuk harga Open, High, Low, dan Close sangat penting dalam memahami properti historis dari sekuritas yang diperdagangkan. Mengukur rentang antara tertinggi dan terendah sambil memperhitungkan perbedaan relatif terhadap harga penutupan dapat memberi kita pola historis dengan daya prediksi lemah yang merupakan yang terbaik yang dapat kita harapkan untuk lingkungan seperti acak.

Gambar untuk postingan
Harga penutupan data per jam EURUSD dalam warna hitam, dengan tinggi berwarna merah dan terendah dengan warna biru. (Gambar oleh Penulis)

Dengan demikian, pada bagian selanjutnya kita akan membahas gagasan tentang indikator yang memperhitungkan tiga informasi. Langkah selanjutnya adalah studi kelayakan dan pengujian kembali.

Mewujudkan Indikator

Indikator yang muncul di benak Anda saat ingin memasukkan setidaknya tiga informasi OHLC adalah Pengganda Aliran Uang. Namun demikian, Stochastic Oscillator juga memperhitungkan data tertinggi, terendah, dan penutupan tetapi karena kita telah membahasnya di artikel sebelumnya, sekarang saatnya untuk melihat sesuatu yang baru.

Pengganda Aliran Uang adalah salah satu elemen dasar dari indikator teknis yang lebih rumit yang disebut Osilator Chaikin. Kami akan tetap menggunakan Pengganda Arus Uang dan melihat apakah itu sendiri dapat memberi kami sinyal yang menarik. Rumus Pengali Arus Uang adalah:

Gambar untuk postingan

Sepertinya cukup mudah dan hanya menggunakan data HLC yang disediakan oleh setiap broker. Menerapkannya ke grafik memberikan sesuatu seperti di bawah ini pada EURUSD.

Gambar untuk postingan
Data per jam EURUSD di panel pertama dengan Pengganda Arus Uang di panel kedua. (Gambar oleh Penulis)

Perhatikan stasioneritasnya yang dapat memberi kita sinyal mean-reverting. Kita dapat mengkodekan indikator dengan cara ini dengan Python:

def money_flow_multiplier (Data, apa, tinggi, rendah, di mana):    #   
Data Pembilang [:, di mana] = Data [:, apa] - Data [:, rendah]
Data [:, di mana + 1] = Data [:, tinggi] - Data [:, apa]
#
Data Penyebut [:, di mana + 2] = Data [:, di mana] - Data [:, di mana + 1]
Data [:, di mana + 3] = Data [:, tinggi] - Data [:, rendah]

# Menghindari Nilai NaN (Pembagian dengan nol jika Tinggi sama dengan Rendah)
untuk i dalam rentang (len (Data)):
jika Data [i, di mana + 3] == 0:
Data [i, di mana + 3] = 0,0001
#
Data Rumus Pengali Arus Uang [:, di mana + 4] = (Data [:, di mana + 2] / Data [:, di mana + 3]) * 100

mengembalikan Data

Saya lebih suka menggunakan cara rekursif ini karena saya merasa lebih mudah untuk menjelaskan dan lebih mudah untuk melakukan debug. Kami sebenarnya dapat mengkodekan indikator ini hanya dalam beberapa baris.

Gambar untuk postingan
Data USDCHF per jam di panel pertama dengan Pengganda Arus Uang di panel kedua. (Gambar oleh Penulis)

Membuat & Menguji Kembali Strategi

Sekarang, kita dapat melanjutkan untuk menguji kembali strategi Pengganda Aliran Uang pada beberapa pasangan mata uang dalam kerangka waktu per jam. Oleh karena itu, kondisi perdagangannya adalah:

  • Ambil posisi beli (Beli) setiap kali Pengganda Arus Uang menyentuh batas bawah di -90,00 dengan dua nilai sebelumnya di atas -90,00.
  • Lakukan short (Jual) setiap kali Pengganda Arus Uang menyentuh batas atas di 90.00 dengan dua nilai sebelumnya di bawah 90.00.
Gambar untuk postingan
Grafik sinyal pada data GBPUSD Per Jam mengikuti strategi Pengganda Arus Uang. (Gambar oleh Penulis)

Kita dapat mengkodekan kondisi di atas dalam fungsi seperti di bawah ini:

def signal (Data, what, buy, sell): 

untuk i dalam range (len (Data)):

if Data [i, what] <lower_barrier dan Data [i - 1, what]> lower_barrier dan Data [i - 2, what]> lower_barrier:
Data [i, buy] = 1

if Data [i, what]> upper_barrier dan Data [i - 1, what] <upper_barrier and Data [i - 2, what] <upper_barrier:
Data [i, sell ] = -1

Fungsi sinyal memperhitungkan 4 variabel:

  • The  data  variabel adalah time series OHLC dalam bentuk array, sebaiknya array numpy.
  • The  apa  variabel indikator. Dalam kasus kami, ini adalah kolom Pengali Arus Uang.
  • The  buy  dan  sell  variabel kolom di mana beli dan jual pesanan diletakkan. Nilai 1 mengacu pada pemicu pembelian sedangkan nilai -1 mengacu pada pemicu penjualan.

Catatan: Kami dapat menyingkat Money Flow Multiplier menjadi MFM untuk memfasilitasi komunikasi.

Kami memberi tahu fungsi untuk mengulang melalui panjang deret waktu dan jika menemukan nilai MFM dengan caranya yang lebih rendah dari penghalang MFM yang lebih rendah sementara nilai sebelumnya lebih tinggi dari MFM sebelumnya yang lebih rendah dengan nilai sebelumnya di sama situasi, itu harus memulai order (beli) panjang. Bersamaan dengan itu, jika menemukan nilai MFM yang lebih tinggi dari penghalang MFM atas sementara nilai sebelumnya lebih rendah dari MFM atas sebelumnya dengan nilai sebelumnya dalam situasi yang sama, ia harus memulai pesanan jual pendek.

Gambar untuk postingan
Grafik sinyal pada data AUDUSD Per Jam mengikuti strategi Pengganda Arus Uang. (Gambar oleh Penulis)

Mari kita lihat metrik kinerja di bawah ini untuk data sejak Januari 2010:

Gambar untuk postingan
Tabel Ringkasan Kinerja. (Gambar oleh Penulis)
Gambar untuk postingan
Kurva ekuitas mengikuti strategi Pengganda Aliran Uang. (Gambar oleh Penulis)

Klarifikasi Sistem Manajemen Risiko

Ketika saya mengatakan saya menggunakan sistem manajemen risiko berbasis ATR (Average True Range), itu berarti algoritme akan melakukan langkah-langkah berikut sehubungan dengan posisi yang diambil.

Posisi long (Beli):

  • Algoritme memulai pesanan beli setelah sinyal dihasilkan mengikuti strategi tertentu.
  • Kemudian, algoritme akan memantau tick dan setiap kali nilai tertinggi sama dengan konstanta tertentu dikalikan dengan nilai ATR pada saat dimulainya perdagangan, perintah keluar (saat profit) dimulai. Secara bersamaan, jika rendah sama dengan konstanta tertentu dikalikan dengan nilai ATR pada saat dimulainya perdagangan terlihat, keluar (saat rugi) dimulai. Jalan keluar yang ditemui pertama kali secara alami adalah peristiwa yang diambil.

Posisi pendek (Jual):

  • Algoritme memulai pesanan jual pendek setelah sinyal dihasilkan mengikuti strategi tertentu.
  • Kemudian, algoritme akan memantau tick dan setiap kali nilai terendah sama dengan konstanta tertentu dikalikan dengan nilai ATR pada saat dimulainya perdagangan, perintah keluar (saat profit) dimulai. Secara bersamaan, jika tinggi sama dengan konstanta tertentu dikalikan dengan nilai ATR pada saat dimulainya perdagangan terlihat, keluar (saat rugi) dimulai. Jalan keluar yang ditemui pertama kali secara alami adalah peristiwa yang diambil.
Gambar untuk postingan
Data per jam EURUSD dengan Rentang Nyata Rata-rata Eksponensial 50 periode. (Gambar oleh Penulis).

Plot di atas menunjukkan Average True Range yang biasa saya gunakan. Ini didasarkan pada rata-rata bergerak eksponensial dibandingkan dengan rata-rata bergerak mulus asli.

Lihatlah nilai terbaru di ATR. Sekitar 0,0014 (14 pips). Jika kita memulai pesanan beli dengan mengikuti rasio risiko-imbalan 2,00 sederhana (mempertaruhkan setengah dari apa yang kita harapkan akan diperoleh), kita dapat melakukan pemesanan dengan cara ini:

  • Beli dengan harga pasar saat ini.
  • Take profit pada harga pasar saat ini + (2 x 14 pips).
  • Hentikan posisi pada harga pasar saat ini - (1 x 14 pips).

Jika Anda tertarik untuk melihat indikator teknis yang menggunakan ATR dalam fungsinya, Anda dapat membaca artikel ini:

Menghaluskan Indikator untuk Discretionary Trading

Karena kami tidak semua pedagang algoritmik, bagian ini ditujukan untuk orang-orang yang lebih memilih pendekatan yang lebih bijaksana (manual) untuk berdagang. MFM dalam bentuk mentahnya berantakan dan berisik. Ini tidak mungkin mudah untuk ditafsirkan ketika berhadapan dengan perdagangan ayunan manual. Oleh karena itu, saya mengusulkan untuk menambahkan sentuhan pemulusan menggunakan Rata-rata Bergerak Eksponensial 10 periode.

Lihat sinyal di bawah ini pada pasangan USDCHF setelah MFM yang diperhalus. Kondisi beli dan jual adalah sebagai berikut:

  • Ambil posisi beli (Beli) setiap kali Pengganda Aliran Uang yang Lancar menyentuh batas bawah di -35.00.
  • Lakukan short (Jual) setiap kali Pengali Aliran Uang yang Lancar menyentuh batas atas di 35.00.
Gambar untuk postingan
Grafik sinyal USDCHF menunjukkan pemicu perdagangan pada Pengganda Arus Uang EMA 10-periode. (Gambar oleh Penulis)

Cara lain kita dapat menggunakan MFM yang dihaluskan adalah dengan melihat divergensi seperti plot di bawah ini.

Gambar untuk postingan
Sinyal divergensi pada EURUSD setelah Pengganda Arus Uang EMA 10 periode. (Gambar oleh Penulis)

Kami tahu bahwa:

  • Ketika harga membuat  nilai tertinggi lebih tinggi  sementara indikator membuat nilai  tertinggi lebih rendah , ini disebut  divergensi turun , dan pasar mungkin terhenti.
  • Ketika harga membuat  posisi terendah lebih rendah  sementara indikator membuat  posisi terendah lebih tinggi , itu disebut  divergensi bullish , dan pasar mungkin menunjukkan beberapa potensi kenaikan.

Pengecekan kenyataan

Jika Anda rutin mengikuti artikel saya, Anda akan menemukan bahwa banyak indikator yang saya kembangkan memiliki rasio hit yang tinggi dan rata-rata menguntungkan. Hal ini sebagian besar disebabkan oleh metode manajemen risiko yang saya gunakan dan struktur biaya yang rendah.

Ingatlah untuk selalu melakukan tes punggung Anda. Meskipun saya menyediakan fungsi indikator (bukan hanya membual tentangnya dan mengatakan itu adalah cawan suci dan fungsinya adalah rahasia), Anda harus selalu percaya bahwa orang lain salah. Indikator dan gaya trading saya cocok untuk saya, tetapi mungkin tidak untuk semua orang. Saya mengandalkan aturan ini:

Harga pasar tidak dapat diprediksi atau sangat sulit untuk diprediksi lebih dari 50% dari waktu. Tetapi reaksi pasar dapat diprediksi dengan adil.

Arti kutipan di atas adalah bahwa kita dapat membentuk zona kecil di sekitar area dan mengatakan dengan tingkat keyakinan tertentu bahwa harga pasar akan menunjukkan reaksi di sekitar area tersebut. Tetapi kami tidak dapat benar-benar mengatakan bahwa itu akan turun 4% dari sana, lalu mengujinya lagi, dan menembus pada upaya ketiga. Istilah kesalahan menjadi lebih tinggi secara eksponensial karena kita memprediksi lebih dari prediksi.

Sementara kita membahas topik ini, saya harus menunjukkan beberapa hal tentang tes punggung dan artikel saya:

  • Spread yang saya gunakan didasarkan pada kutipan institusional dari fraksi pip kecil. Umumnya, pedagang eceran diberi spread besar 1–2 pip per perdagangan. Ini sangat besar. Saya menggunakan spread 0,2. Namun, sebagian besar strategi yang menggunakan kerangka waktu per jam masih berfungsi dengan spread 1 pip. Untuk mereka yang menggunakan kerangka waktu M15 atau M5, mereka tidak bisa untung dengan spread 1 pip.
  • Meskipun saya melarang perdagangan hanya berdasarkan satu indikator, angkanya tidak berbohong. Apa yang saya sajikan adalah apa yang bisa terjadi ketika memperhitungkan spread rendah yang seharusnya memberi Anda gambaran tentang keuntungan trader institusional.
  • Beberapa back-test yang saya berikan adalah pecundang dan mereka diterbitkan untuk mengungkap mitos perdagangan atau untuk menyajikan fungsi menarik untuk dikodekan oleh pembaca.
  • Akhirnya, saya sangat percaya untuk tidak menyuapi peserta didik. Saya telah belajar dengan melakukan dan bukan dengan menyalin. Anda harus mendapatkan ide, fungsi, intuisi, kondisi strategi, dan kemudian menguraikannya sendiri (bahkan lebih baik) sehingga Anda mengujinya kembali dan memperbaikinya sebelum memutuskan untuk menjalankannya atau menghilangkannya.

Di bawah ini adalah strategi MFM yang sama tetapi dengan spread ritel 2,5 pips per perdagangan sebagai tolok ukur perbandingan ketika kami menggunakan spread 0,2 dalam tes latar di atas.

Gambar untuk postingan
Kurva ekuitas mengikuti strategi Pengganda Aliran Uang. (Gambar oleh Penulis)

Singkatnya, apakah strategi yang saya berikan realistis? Ya, tetapi  hanya  dengan mengoptimalkan lingkungan (algoritme yang kuat, biaya rendah, broker yang jujur, manajemen risiko). Apakah strategi disediakan hanya untuk penggunaan perdagangan? Tidak, ini untuk merangsang brainstorming dan mendapatkan lebih banyak ide perdagangan karena kita semua muak mendengar tentang RSI yang oversold sebagai alasan untuk menjual  .


Post a Comment

أحدث أقدم