Ini adalah pemindai saham perdagangan harian dan trader robo yang mencari semua saham AS dan upaya untuk menemukan dan membeli saham dengan rasio risiko-risiko yang baik dan yang berada di awal tren kenaikan, dan kemudian menjualnya sebagai tren tren turun, dimulai, dimulai, downtrend dimulai, Atau memenuhi target laba, stoploss atau timeout.
Di konfigurasi.yml Tambahkan kunci alpaca Anda, sebagai alternatif, nilai -nilai ini dapat disimpan sebagai variabel lingkungan di
Konfigurasi tambahan dapat ditemukan di dalam config/config.yml untuk mengontrol risiko, hadiah, dan sebagainya sama -sama dapat ditimpa oleh variabel lingkungan dengan awalan BUNNY_
Nilai konfigurasi yang sudah disediakan telah diuji untuk menguntungkan di akun perdagangan kertas.
Jika ingin mengubah nilai -nilai itu untuk memenuhi preferensi Anda sendiri, harap pastikan untuk menguji coba di akun perdagangan kertas.
Hal -hal lucu selalu dapat terjadi saat mengacaukan nilai -nilai, jadi uji untuk memastikan bahwa Anda tidak meledakkan akun Anda!
Prasyarat:
klon atau unduh paket - dan jalankan go run bunny.go
Alpaca adalah API pertama, 0 broker komisi yang digunakan oleh robo-trader ini untuk berinteraksi dengan pasar ekuitas
func meetsRiskGoal ( stock * stock. Stock ) bool {
tradeRisk := viper . GetFloat64 ( "stop-loss-atr-ratio" ) * stock . Atr [ len ( stock . Atr ) - 1 ] / stock . Price . Peek ()
upperRisk := viper . GetFloat64 ( "risk" ) * ( 1 + viper . GetFloat64 ( "exposure-tolerance" ))
lowerRisk := viper . GetFloat64 ( "risk" ) * ( 1 - viper . GetFloat64 ( "exposure-tolerance" ))
return tradeRisk > lowerRisk && tradeRisk < upperRisk
}
func ( s * Stock ) IsReadyToBuy () bool {
return s . IsBelowTrend () && s . IsUpwardsTrend () && s . IsBuyingMacdCrossOver ()
}
func getOrderParameters ( s stock. Stock , a * io. Alpaca , budget float64 ) ( float64 , float64 , float64 , float64 , float64 ) {
quote := a . GetQuote ( s . Symbol )
exposure := budget * viper . GetFloat64 ( "risk" )
price := float64 ( quote . Last . AskPrice - ( quote . Last . AskPrice - quote . Last . BidPrice ) / 2 )
tradeRisk := viper . GetFloat64 ( "stop-loss-atr-ratio" ) * s . Atr [ len ( s . Atr ) - 1 ]
rewardToRisk := viper . GetFloat64 ( "risk-reward" )
stopLossMax := viper . GetFloat64 ( "stop-loss-max" )
takeProfit := price + ( rewardToRisk * tradeRisk )
stopLoss := price - tradeRisk
stopLimit := price - ( 1 + stopLossMax ) * tradeRisk
qty := math . Round ( exposure / tradeRisk )
//ensure we dont go over
for qty * price > budget {
qty = qty - 1
}
return price , qty , takeProfit , stopLoss , stopLimit
}
func ( s * Stock ) IsReadyToSell () bool {
return ! s . IsBelowTrend () && s . IsDownwardsTrend () && s . IsSellingMacdCrossUnder ()
}
Saat program berjalan, konsol akan mencatat semua perdagangan, termasuk simbol, harga, mengambil laba, berhenti kehilangan, berhenti batas, dan qty
2020/11/29 02:34:08 buying NHC:
total: 22332.509254
qty: 349.000000
maxProfit: 375.502682
maxLoss: 250.33512142059453
price: 63.989998
takeProfit: 65.065937
stopLoss: 63.272705
Di dalam direktori snapshots akan ada halaman HTML yang menunjukkan grafik saham yang dibeli yang didasarkan pada keputusannya
Mereka akan dinamai dengan waktu yang dibeli dan stok yang diberikan
Seperti halnya semua hal, baik akal sehat maupun dalam lisensi GPL-3.0 yang disepakati tentang penggunaan program ini, tidak ada jaminan, garansi, atau kewajiban yang disepakati atau diungkapkan saat menggunakan program ini.
Sementara program ini dibuat dengan itikad baik untuk menguntungkan dan bebas bug - tidak ada janji keuntungan. Namun ada risiko. Risiko kehilangan uang. Risiko panggilan margin. Risiko Perangkat Lunak Buggy.
Program ini dirancang untuk pertukaran harian apa pun yang memenuhi indikator teknis matematika tertentu. Tidak ada penasihat yang terlibat, dan memandang ekuitas sebagai kumpulan angka yang berpotensi cacat, dan keputusannya sebagai serangkaian persamaan yang berpotensi cacat. Penting untuk dipahami bahwa ada risiko yang signifikan
Program ini juga menggunakan margin secara default - jika tidak terbiasa dengan risiko itu - atau jika tidak menginginkan risiko tambahan itu, harap pastikan untuk mengatur "margin -multiplier" di konfigurasi menjadi 1,00 atau kurang
Sebagai aturan umum: Jangan berdagang dengan uang, Anda tidak dapat kehilangan. Sebagai rekomendasi - baca kode ini sendiri untuk memahami apa yang dilakukannya dan cara kerjanya.
Jika Anda melihat sesuatu yang dapat ditingkatkan atau dijaga dengan aman - silakan buka sebuah insiden atau PR dan mari kita perbaiki!