"MetaTrader 5'i kullanarak Python'da yüksek frekanslı arbitraj alım-satım sistemi" makalesi için tartışma
Yanlış anlaşıldı. Genellikle arbitraj, en az iki enstrümanın birbiri yönünde alım satımını içerir. Burada, her arbitraj durumu için bir emir üretilmiş gibi görünüyor, yani umut, gerçek enstrümanın sentetik olanı yukarı çekmesi, ancak tersi değil. Bunun olasılığı yarı yarıya, imho.
Ayrıca, bazı nedenlerden dolayı alımlar için alış fiyatı, satışlar için ise satış fiyatı alınır:
price = symbol_info.bid if direction == "BUY" else symbol_info.ask
Fikir, komisyoncuyu spread üzerinde "bükmek" ise - sinyal koşulundaki 8 puan:
arbitrage_opportunities = pd.DataFrame(spreads) > 0.00008 o zaman emrin özelliklerinde 30'luk bir kayma ("sapma": 30) vardır, bu da ona planlanan kardan çok daha büyük kayıplarla gerçekleştirme fırsatı verir.
Ve pozisyonların tam olarak başarılı arbitraj tetiklemesi koşulunda kapandığını görmedim ve kilometre kar al veya zararı durdur üzerinde kapanış beklemek, bir arbitraj stratejisi için (milimetre dengesizlikleri yakalayan) kahve telvesinde tahmin etmek gibidir, imho.
Lütfen bunun ne hakkında olduğunu açıklayın:
А теперь следующий шаг — список pairs. Это наши валютные пары, которые мы будем использовать для синтеза. Дальше начинается еще один процесс. Мы запускаем цикл по всем парам. Для каждой пары мы рассчитываем синтетическую цену двумя способами: Делим bid первой пары на ask второй. Делим bid первой пары на bid второй. И каждый раз мы увеличиваем наш method_count. В итоге у нас получается не 1000, не 1500, а целых 2000 синтетических цен!
İşte çiftler:
pairs = [('AUDUSD', 'USDCHF'), ('AUDUSD', 'NZDUSD'), ('AUDUSD', 'USDJPY'),
('USDCHF', 'USDCAD'), ('USDCHF', 'NZDCHF'), ('USDCHF', 'CHFJPY'),
('USDJPY', 'USDCAD'), ('USDJPY', 'NZDJPY'), ('USDJPY', 'GBPJPY'),
('NZDUSD', 'NZDCAD'), ('NZDUSD', 'NZDCHF'), ('NZDUSD', 'NZDJPY'),
('GBPUSD', 'GBPCAD'), ('GBPUSD', 'GBPCHF'), ('GBPUSD', 'GBPJPY'),
('EURUSD', 'EURCAD'), ('EURUSD', 'EURCHF'), ('EURUSD', 'EURJPY'),
('CADCHF', 'CADJPY'), ('CADCHF', 'GBPCAD'), ('CADCHF', 'EURCAD'),
('CHFJPY', 'GBPCHF'), ('CHFJPY', 'EURCHF'), ('CHFJPY', 'NZDCHF'),
('NZDCAD', 'NZDJPY'), ('NZDCAD', 'GBPNZD'), ('NZDCAD', 'EURNZD'),
('NZDCHF', 'NZDJPY'), ('NZDCHF', 'GBPNZD'), ('NZDCHF', 'EURNZD'),
('NZDJPY', 'GBPNZD'), ('NZDJPY', 'EURNZD')] İlk çiftin Teklifi nedir? İlk çift:
('AUDUSD', 'USDCHF')
ticks = mt5.copy_ticks_from(symbol, utc_from, count, mt5.COPY_TICKS_ALL) Hepsi yüklendi. Bu, tiklerde ortaya çıkan şeydir:
array([b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'',
...
b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'',
b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'',
b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b'', b''],
dtype='|V0')
Ve burada zaten zamanında bir çıkış alıyoruz:
ticks_frame['time'] = pd.to_datetime(ticks_frame['time'], unit='s')
https://www.mql5.com/tr/docs/python_metatrader5/mt5copyticksfrom_py örneğindeki kod da çalışmıyor
>>> timezone = pytz.timezone("Etc/UTC") >>> utc_from = datetime(2020, 1, 10, tzinfo=timezone) >>> ticks = mt5.copy_ticks_from("EURUSD", utc_from, 100000, mt5.COPY_TICKS_ALL) >>> >>> print("Alınan keneler:",len(ticks)) Получено тиков: 100000 >>> print("Ortaya çıkan keneleri olduğu gibi kabul edelim.") Выведем полученные тики как есть >>> count = 0 >>> for tick in ticks: ... count+=1 ... print(tick) ... if count >= 100: ... break ... b'' b'' b'' b''
Her neyse, python nasıl bir şey? Nasıl hazırlanır? Belli değil...
- www.mql5.com
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Yeni makaleye göz atın: MetaTrader 5'i kullanarak Python'da yüksek frekanslı arbitraj alım-satım sistemi.
Forex piyasası. Algoritmik stratejiler. Python ve MetaTrader 5. Bunlar bir arbitraj alım-satım sistemi üzerinde çalışmaya başladığımda bir araya geldi. Fikir basitti - fiyat dengesizliklerini bulmak için yüksek frekanslı bir sistem oluşturmak.
Bu süreçte en çok MetaTrader 5 API’sini kullandım. Sentetik çapraz kurları hesaplamaya karar verdim. Kendimi on ya da yüz taneyle sınırlamadım. Bu sayı bini aşmış durumda.
Risk yönetimi ayrı bir görevdi. Sistem mimarisi, algoritmalar, karar verme - burada her şeyi analiz edeceğiz. Geriye dönük test ve canlı alım-satım sonuçlarını göstereceğim. Ve elbette gelecek için fikirlerimi paylaşacağım. Kim bilir, belki içinizden biri bu konuyu daha da geliştirmek ister? Çalışmalarımın talep göreceğini umuyorum. Algoritmik alım-satımın gelişmesine katkıda bulunacağına inanıyorum. Belki birileri bunu temel alır ve yüksek frekanslı arbitraj dünyasında daha da etkili bir şey yaratır. Ne de olsa bilimin özü budur - öncekilerin deneyimlerine dayanarak ilerlemek. Doğrudan konuya girelim.
Yazar: Yevgeniy Koshtenko