
Strategi tren umumnya menggunakan berbagai indikator untuk menentukan arah pasar, dan menggunakan hasil perbandingan numerik dari berbagai indikator sebagai sinyal perdagangan. Ini pasti akan mengarah pada penggunaan parameter dan perhitungan indikator. Karena parameter digunakan, maka akan ada penyesuaian. Strategi ini berkinerja sangat baik dalam kondisi pasar tertentu, tetapi jika Anda kurang beruntung dan tren pasar sangat tidak bersahabat dengan parameter saat ini, strategi ini mungkin berkinerja sangat buruk. Oleh karena itu, menurut pendapat saya, desain strategi harus sesederhana mungkin, dan strategi seperti itu akan lebih kuat. Hari ini kami akan membagikan strategi tren yang tidak menggunakan indikator. Kode strateginya sangat sederhana, hanya 40 baris.
import time
basePrice = -1
ratio = 0.05
acc = _C(exchange.GetAccount)
lastCancelAll = 0
minStocks = 0.01
def CancelAll():
while True :
orders = _C(exchange.GetOrders)
for i in range(len(orders)) :
exchange.CancelOrder(orders[i]["Id"], orders[i])
if len(orders) == 0 :
break
Sleep(1000)
def main():
global basePrice, acc, lastCancelAll
exchange.SetPrecision(2, 3)
while True:
ticker = _C(exchange.GetTicker)
if basePrice == -1 :
basePrice = ticker.Last
if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio :
acc = _C(exchange.GetAccount)
if acc.Balance * ratio / ticker.Last > minStocks :
exchange.Buy(ticker.Last, acc.Balance * ratio / ticker.Last)
basePrice = ticker.Last
if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio :
acc = _C(exchange.GetAccount)
if acc.Stocks * ratio > minStocks :
exchange.Sell(ticker.Last, acc.Stocks * ratio)
basePrice = ticker.Last
ts = time.time()
if ts - lastCancelAll > 60 * 5 :
CancelAll()
lastCancelAll = ts
LogStatus(_D(), "\n", "行情信息:", ticker, "\n", "账户信息:", acc)
Sleep(500)
Prinsip strategi ini sangat sederhana. Strategi ini tidak menggunakan indikator apa pun, tetapi hanya menggunakan harga saat ini sebagai dasar pemicu perdagangan, dan hanya ada satu parameter utama.ratioMengontrol pemicu pembukaan posisi.
Pemicu panjang:
if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio
Gunakan harga saat ini untuk membandingkan dengan harga dasar. Ketika harga saat ini lebih besar dari harga dasar, dan harga melebihiratio * 100 %, order yang tertunda dipicu dan order panjang ditempatkan.
Setelah melakukan pemesanan, harga dasar diperbarui ke harga terkini.
Pemicu pesanan pendek:
if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio
Prinsip short selling sama saja. Gunakan harga saat ini untuk membandingkan dengan harga dasar. Ketika harga saat ini lebih rendah dari harga dasar dan harga melebihiratio * 100 %, order yang tertunda dipicu dan order short ditempatkan.
Setelah melakukan pemesanan, harga dasar diperbarui ke harga terkini.
Volume pesanan untuk setiap pesanan adalah nilai dana yang tersedia.ratio * 100 %。
Kecuali jika volume pesanan yang dihitung kurang dari volume transaksi minimum yang ditetapkan dalam parameterminStocks, jika tidak, buatlah pesanan.
Hal ini memungkinkan strategi untuk mengikuti perubahan harga dan mengejar harga tertinggi dan menjual harga terendah.
Periode pengujian ulang sekitar satu tahun.

Hasil operasi:


Baru-baru ini, beberapa pengguna mengatakan bahwa strategi Python relatif sedikit. Saya akan membagikan lebih banyak strategi yang ditulis dalam Python di masa mendatang. Kode strateginya juga sangat sederhana, sangat cocok untuk dipelajari oleh pemula. Alamat strategi: https://www.fmz.com/strategy/181185
Strategi ini hanya untuk referensi, pengujian ulang dan pengujian. Jika Anda tertarik, Anda dapat mengoptimalkan dan meningkatkannya.