Trading Bot — MQL5 mi Python mu? Dürüst Karşılaştırma ve Hibrit Çözüm

Son doğrulama: · Uzun vadeli güncel içerik
Risk uyarısı · YMYL Bu makale yalnızca eğitim amaçlıdır ve yatırım tavsiyesi niteliği taşımaz. Forex piyasasında işlem yapmak yüksek sermaye kaybı riski içerir — ESMA verilerine göre bireysel yatırımcı hesaplarının %74–89'u zarar etmektedir. Türkiye'de kaldıraçlı döviz işlemleri SPK ve BDDK denetimine tabidir; herhangi bir yatırım kararı vermeden önce lisanslı bir mali danışmana başvurunuz.

Bir Forex stratejisini otomatikleştirmek için hangi dili seçeceğiniz, çoğu zaman sözdizimi zarifliğiyle değil, botun canlı hesaba ne kadar hızlı ulaştığı ve sonraki yıllarda nasıl çalıştığıyla ilgilidir. MQL5, çoğu perakende aracı kurumun halihazırda sunduğu platform içinde bu sonuca doğrudan ulaştırır. Python birkaç saatlik kurulum gerektirir; karşılığında veri analizi, makine öğrenmesi ve tek bir skriptten çoklu aracı kurum desteği sunan eksiksiz bir ekosistemi yanınıza katar. Seçim, soyut anlamda hangi dilin "daha iyi" olduğuna değil, yarın gerçekte ne inşa etmek istediğinize bağlıdır.

Aslında neyi karşılaştırıyoruz?

MQL5, MetaQuotes'un MetaTrader 5 platformuna yerleşik olan ve Expert Advisor ile özel göstergeler yazmak üzere tasarlanmış bir dildir. Python ise bir genel amaçlı dildir; onu ticarete dahil etmek için MetaQuotes'un resmi MetaTrader5 modülünü ya da başka bir aracı kurumun API kütüphanesini kullanırsınız. Karşılaştırmanın anlamı, ancak botun ne yapması gerektiği bağlamında ortaya çıkar. Klasik bir trend veya kırılım (breakout) stratejisi tek bir MT5 hesabında çalışacak ve günde birkaç işlem açacaksa, MQL5 daha kısa bir yoldur. Sinyal istatistiksel bir modele, makro veriye, birden fazla aracı kuruma ya da MetaQuotes dışındaki bir piyasaya dayanıyorsa Python ekosistemi vazgeçilmez hâle gelir. Algoritmik ticarete ilk adımlarınız ve Expert Advisor mekaniğine ilişkin daha geniş bağlamı ilgili bölümlerimizde bulabilirsiniz.

MQL5'in sessizce öne çıktığı alanlar

MQL5'in en büyük avantajı sıradan görünür, ancak sıklıkla küçümsenir: aracı kurum bağlantısı ücretsizdir. EA dosyasını MetaEditor klasörüne bırakır, .ex5 olarak derler, grafiğe ekler ve bot işlem yapmaya başlar — herhangi bir yürütme katmanı, API kimlik doğrulaması ya da REST altyapısı gerekmez. "Gerçek tikler temelinde her tik" modunu kullanan olgun Strategy Tester, sembol spesifikasyonuna yansıtılmış gerçek makas (spread) ve komisyonlarla birlikte aracı kurumunuzun birkaç yıllık tik geçmişini yeniden oynatır. MQL5.com topluluğu binlerce gösterge ve kütüphane yayımlamaktadır; bu sayede hareketli ortalama kesişimi iskeleti ya da risk yönetimi modülü kopyalamak günler değil dakikalar alır. Terminal; ekstra kurulum gerektirmeyen yerleşik hata ayıklayıcı, profil oluşturucu ve bulut ağını kullanan dağıtık bir optimize edici ile birlikte gelir.

Python'ın karmaşıklığını haklı çıkardığı alanlar

İlk avantaj veridir. pandas, numpy ve statsmodels, zaman serisi, regresyon ve istatistiksel test için bilimsel standarttır; MQL5'te aynı hesaplama elle yazılmış bir döngü içinde yaşar, bir kat daha yavaştır ve aritmetik hataya daha açıktır. İkinci avantaj makine öğrenmesidir. Sinyal rastgele orman, gradyan artırma ya da küçük bir yapay sinir ağı gerektiriyorsa scikit-learn ve TensorFlow bunu birkaç düzine satırda çözer; MQL5 bu yığını yerel olarak taşımaz. Üçüncüsü geriye dönük test (backtesting) avantajıdır. Oleg Polakov'un vectorbt kütüphanesinde vektörleştirilmiş test ya da Daniel Rodriguez'in backtrader'ında olay güdümlü test, yüzlerce parametre kombinasyonunu Strategy Tester'ın iki çalıştırma için harcadığı sürede tarar. Dördüncüsü aracı kurum soyutlamasıdır. Stratejinizin önüne ince bir yürütme katmanı koyarsanız aynı skript MT5'e, ib_insync aracılığıyla Interactive Brokers'a ve ccxt üzerinden kripto platformlarına bağlanabilir. Teknik analiz bölümümüz, sinyal geliştirme sürecinde Python ile hangi metodolojilerin birleştirilebileceğini aktarır.

Ciddi perakende yatırımcıların benimsediği hibrit yaklaşım

Pratikte üçüncü bir seçenek en pragmatik ve her iki kampın pazarlamasında en az belirginleşen yol olarak öne çıkar. Araştırma, geçmiş veriler ve istatistiksel çalışma Python'a taşınır; yürütme MT5'in içinde kalır. Köprü, MetaQuotes'un resmi MetaTrader5 paketidir; pip ile kurulduktan sonra skriptiniz çalışan terminale bağlanır, EA'nın gördüğü kalitede bar ve tik verisi çeker, order_send ve position_close aracılığıyla emirler iletir. Bilimsel ekosistem Python'da çalışırken aracı kurumlara uyumlu platform ve VPS ortamı MetaQuotes bünyesinde kalır. İki katmanı gerçek zamanlı olarak karıştırmak istemiyorsanız alternatif yol da mümkündür: tüm araştırmayı Python'da yapın, doğrulanmış kuralları canlı dağıtım için MQL5'e yeniden yazın. İki mod arasındaki seçim, canlı sinyalin oturum sırasında mı yoksa yalnızca tasarım aşamasında mı Python kütüphanelerine ihtiyaç duyduğuna bağlıdır.

"Python, finansal veri analizinden algoritmik ticarete ve risk yönetimine kadar her şey için finans sektörünün güçlü bir programlama dili ve ekosistemine dönüştü." — Yves Hilpisch, Python for Finance: Mastering Data-Driven Finance, O'Reilly, 2018

Çalışan bir örnek — aynı kırılım stratejisi her iki dilde

EUR/USD üzerinde Londra açılış kırılımı düşünün: Londra seansının ilk saatinde (Türkiye saati 12:00 TSİ), fiyat önceki Asya saatinin yüksek seviyesinin üzerine çıktığında alış pozisyonu açarsınız, düşük seviyesi kırıldığında ise satış pozisyonu. Zarar durdur (stop loss) yirmi periyotluk ATR'de durur, kâr al (take profit) durağın iki katında belirlenir. MQL5'te tek bir CExpertAdvisor sınıfı, Asya aralığı için iki yardımcı fonksiyon ve tek bir OrderSend çağrısı yazarsınız; bunun büyük bölümü hata yönetiminden oluşan yaklaşık 250 satırlık tek bir .mq5 dosyasına sığar. Dağıtım beş dakika alır: derleyin, grafiğe sürükleyin, AutoTrading'i açın. Python'da aynı fikir farklı görünür. MetaTrader5'i import edersiniz, barları pandas'a yüklersiniz, ATR ve kırılım seviyelerini vektörleştirilmiş tek bir ifadeyle hesaplarsınız, ardından yürütmeyi her birkaç saniyede yeni tik yoklayan bir döngüye bırakırsınız. Dosya uzunluk olarak benzerdir; ancak ağ istisnası yönetimi için de ödeme yaparsınız ve Python ile terminal arasındaki bağlantı kesintilerini takip etmeniz gerekir. Karşılığında vectorbt üzerinde beş yıllık geçmiş üzerinden ücretsiz bir geriye dönük test elde edersiniz; Strategy Tester'da aynı tarama onlarca dakika alabilir. Bu örnekteki her rakam açıklayıcı niteliktedir.

Dürüst bir değerlendirme

Tek bir MT5 hesabında bir veya iki enstrümanla klasik stratejiler çalıştıran bir perakende yatırımcı için MQL5 daha kısa yoldur. Sıfırdan MQL5 ile yazılmış ilk bir bot, yeni bir dizüstü bilgisayarda yapılandırılan taze bir Python ortamından daha hızlı demo hesaba ulaşır. İstatistiksel yöntemlere, makine öğrenmesi modellerine, MetaQuotes dışındaki veri kaynaklarına ya da birden fazla aracı kurum hesabına uzanmak isteyenler için Python uzun vadede kazanır; ilk haftalar daha az görkemli görünse bile. Python artı MT5 hibrit yapısı, her iki cephe de en az bir veya iki yıl deneyimi olan ve canlı hesaplarının halihazırda çalıştığı platformdan vazgeçmeksizin gerçek araştırma yapmak isteyen yatırımcılar için işleyen standarttır. En kötü karar, sabah izlenen bir öğretici videonun etkisiyle dil seçmektir; farklar gerçektir, ancak bu farklar dile değil hedefe aittir. Daha kapsamlı içerikler için ForexMechanics trader's workshop sayfasına bakabilirsiniz.

Sonraki adım: başlamak için pratik yol haritası

  1. Otomatikleştirmek istediğiniz strateji hakkında üç cümle yazın — giriş, çıkış ve pozisyon yönetimi — ardından tek soruyu dürüstçe yanıtlayın: sinyal, aracı kurum fiyatlarının ötesinde herhangi bir şey gerektiriyor mu (istatistiksel model, makro veri, başka bir piyasadan gelen sinyal)? Yanıt hayırsa MQL5 ile başlayın. Evet ise, ilk hafta MetaEditor'dan daha yavaş hissettirse bile Python ile başlayın; karar teknolojiyi değil, stratejinizin gerçek yapısını yansıtmalıdır.
  2. Herhangi bir perakende aracı kurumun MT5 platformuyla birlikte MetaEditor'ı ve MetaTrader5, pandas ve backtrader paketlerini içeren Python 3.11'i kurun; ardından her iki ortamda da aynı minimal iskeleti yazın: 0,01 lotluk piyasa emriyle alış pozisyonu açan ve iki dakika sonra kapatan bir MQL5 EA ile order_send üzerinden aynı işlemi yapan bir Python skripti. Bu alıştırma bir akşamı alır ve on saatlik dokümantasyon okumaktan çok daha hızlı gerçek farkı hissettir.
  3. Strategy Tester'ı kendi EA'nız üzerinde "gerçek tikler temelinde her tik" modunda iki yıllık geçmişe karşı çalıştırın ve raporu vectorbt'da vektörleştirilmiş biçimde yeniden yazılmış aynı fikirle karşılaştırın. İki rapor arasındaki boşluk, stratejinizin aracı kurumun gerçek makasına (spread) gerçekte ne kadar kaybettiğini ve vektörleştirilmiş versiyonda ne kadarının olumlu bir yaklaşım olduğunu ortaya koyar; bu, canlı hesabı hangi platformda tutacağınıza karar vermek için ihtiyacınız olan veridir.
  4. Hibrit yaklaşıma karar verirseniz, araştırma ile yürütme arasına yalnızca MetaTrader5 paketini oturtmak için bir hafta sonu ayırın. Python skripti sinyali üretir, emri order_send aracılığıyla iletir ve her adımı bir CSV dosyasına kaydeder; arka planda Python bağlantısı kesildiğinde pozisyonları kapatan bir güvenlik ağı olarak klasik bir MQL5 EA bekler. Türkiye'de SPK ve BDDK lisansı olmayan yabancı bir aracı kurum üzerinden kaldıraçlı işlem yapmanın yasal ve mali açıdan önemli riskler doğurabileceğini unutmayın; bir mali müşavire danışın.
  5. Seçtiğiniz yöntemde iki haftalık çalışmanın ardından iki soruyu dürüstçe yanıtlayın: zamanın ne kadarı dille boğuşmaya, ne kadarı gerçekten stratejiyi geliştirmeye gitti? Oran, araçla mücadeleye ikiden fazla yöneliyorsa seçim mevcut aşamanız için yanlıştır; araştırmayı desteklemeyen bir yığını zorlamak yerine daha basit bir yığına geri dönmek daha sağlıklıdır. Risk yönetimi ilkelerini erken içselleştirmek, hangi dili seçerseniz seçin botun canlı hesaptaki ömrünü uzatır.
Jarosław Wasiński
Yazar hakkında

Jarosław Wasiński

MyBank.pl genel yayın yönetmeni · Finans ve piyasa analisti

Finans sektöründe 20 yılı aşkın deneyime sahip bağımsız analist ve uygulayıcı. 2004'ten bu yana faaliyet gösteren MyBank.pl portalının kurucusu ve genel yayın yönetmeni. 2007'den beri döviz ve makroekonomik piyasaların temel analizi. Küresel piyasalar perspektifinden yazmaktadır. Kaldıraçlı Forex işlemleri yüksek risk taşır; Türkiye'de SPK denetiminde faaliyet gösteren aracı kurumlara başvurun.

Kaynaklar ve bibliyografya

  1. MetaQuotes MQL5 Reference — Python integration (MetaTrader5 package) · oficjalna dokumentacja pakietu MetaTrader5 dla Pythona: instalacja przez pip, połączenie z terminalem, pobieranie OHLC i tików, składanie zleceń przez order_send i zarządzanie pozycjami www.mql5.com ↗
  2. MetaQuotes MQL5 Reference — initialize() for MetaTrader 5 Python integration · oficjalna referencja funkcji initialize() inicjującej połączenie skryptu Pythona z działającym terminalem MetaTrader 5 — wymagany krok przed każdym pobraniem danych lub złożeniem zlecenia www.mql5.com ↗
  3. MetaQuotes MQL5 Reference — Order Properties (OrderSend constants) · enumeracje właściwości zleceń wykorzystywane przez OrderSend w MQL5 oraz odpowiednio przez order_send w pakiecie Pythona — typy zleceń, statusy realizacji, atrybuty wykonania www.mql5.com ↗
  4. Backtrader Backtrader Quickstart — building a strategy in Python · oficjalna ścieżka wprowadzająca event-driven backtesting w Pythonie: klasy Strategy i Cerebro, prowizja, optymalizacja parametrów i ścieżka od pomysłu do raportu www.backtrader.com ↗
  5. O'Reilly Media Yves Hilpisch — Python for Finance, 2nd Edition (2018) · kanoniczna pozycja o zastosowaniach Pythona w analityce finansowej, algorytmice i zarządzaniu ryzykiem — punkt odniesienia dla traderów decydujących się na język w długim okresie www.oreilly.com ↗

Sık sorulan sorular

Başlamak için Python'ı iyi bilmek şart mı?

İlk bot için hayır. Temel Python yeterlidir — döngüler, listeler, fonksiyonlar, kütüphane içe aktarımı ve bir CSV dosyası okumak — MetaTrader5 paketi gerisini halleder. Terminale bağlanan, bar çeken ve emir veren ilk skript elli satıra sığar. Zor olan dil değil; ağ istisnası yönetimi ve terminalle bağlantının kopup kopmadığını takip etmektir. Daha sağlıklı ritim, "Python'ı yüzde yüz öğrenene kadar beklemek" yerine iki paralel süreci sürdürmektir: günde bir saat, dört ila altı haftalık temel kavramlar kursu ile gerçek aracı kurum fiyat verilerinizle şu an pratiğini yaptığınız somut proje. Öğrenme eğrisi, pazarlama karşılaştırmalarının önerdiğinden daha yumuşaktır; nihai strateji de nadiren otuzdan fazla satır gerçek mantık kodu gerektirir.

Python artı MT5 hibrit yapısı canlı işlemde ne kadar kararlı çalışır?

Evet, paket sayfasındaki saf versiyonda eksik olan iki güvenlik katmanını eklemeniz koşuluyla. Birincisi bağlantı kesintilerini yönetir: skript, birkaç saniyelik gecikmeyle bir döngüde mt5.initialize() fonksiyonunu yeniden denemelidir; arıza devam ederse her zaman grafiğe bağlı duran bir yedek EA aracılığıyla açık pozisyonları kapatır. İkincisi her işlem için CSV kaydıdır — üretilen sinyal, ticket numarası, gönderilen emir, aracı kurum onayı, gecikme süresi (latency) — çünkü bu kayıt olmadan canlı hesap geriye dönük testten aniden saparsa ne olduğunu yeniden kurgulamanız mümkün olmaz. Bu iki parça yerli yerine oturduğunda hibrit, klasik bir EA kadar kararlı çalışır ve size oturum boyunca Python ekosisteminin tamamına erişim sağlar.

MQL5, tik tik stratejilerde yürütme hızına yetişebiliyor mu?

Evet, üstelik geniş bir marjla. MQL5 ile yazılmış bir EA, MetaTrader 5 terminali içinde OnTick fonksiyonuna yerel olarak tepki verir; dolayısıyla yeni bir tikin gelmesiyle emrin iletilmesi arasındaki gecikme tek haneli milisaniye biriminde ölçülür. Python ayrı bir süreçte çalışır ve MetaTrader5 paketinin süreçler arası katmanı aracılığıyla terminalle iletişim kurar — bu, tipik koşullarda on ile birkaç on milisaniye arasında ek gecikme anlamına gelir ve günde onlarca emir açan skalping stratejilerinde belirginleşir. H1 veya M15 kapanış mumlarında çalışan stratejiler için bu fark önemsizdir; ancak bir dakikanın altındaki skalping için MQL5 doğal tercih olmaya devam eder ve Python'u araştırma ile doğrulama katmanında tutmak, gerçek zamanlı yürütmeye taşımamak en doğru yoldur.

MQL5'ten Python'a geçme zamanının geldiğini nasıl anlarım?

İşaretler oldukça somuttur. Birincisi — sinyale istatistiksel model, regresyon ya da makine öğrenmesi sınıflandırıcısı eklemek istiyorsunuz ve MQL5'te scikit-learn'ün üç satırda çözdüğü uygulamayı kendiniz yazmak zorunda kalıyorsunuz. İkincisi — aracı kurum dışı verilerle (makro açıklamalar, duyarlılık, takvim etiketleri, başka bir piyasadan gelen sinyaller) çalışıyorsunuz ve bunları MetaEditor'e yapıştırmak araştırmanın kendisinden daha uzun sürüyor. Üçüncüsü — farklı aracı kurumlardaki birden fazla hesapta çalışması gereken bir stratejiniz var ve aynı EA'nın paralel sürümlerini sürdürmek istemiyorsunuz. Dördüncüsü — Strategy Tester parametre taramasını makul sürede tamamlayamadığı için giderek daha fazla fikri çöpe atıyorsunuz. Bu dört işaretten ikisi aynı anda yanıyorsa Python öğrenme maliyeti üç ayda kendini amorti eder.

Daha derine inin · tam rehber