Bu makalede
Bu makaleyi okuduktan sonra…
- Belirtilen düz CopyBuffer dizisinde son kapalı değeri bulabilirsiniz.
- Tanıtıcı, hesaplanan veri, kopyalanan adet ve boş olmayan değeri ayırabilirsiniz.
- Yeniden başlatma sonrası aynı dealin tekrarlı okunmasını yeni dolum saymadan uzlaştırabilirsiniz.
Kavramları makaleden ayrılmadan öğrenin
Backtesting — geçmiş veriyle strateji testi İşlem planı Demo hesap Zirveden düşüş — drawdown Stop loss — zarar durdur Yeniden fiyatlama — requoteMQL5 Expert Advisor, MetaTrader 5 içinde olaylara yanıt veren programdır. Gerekli izinlerle kuralları değerlendirip işlem isteği gönderebilir. Olayın işlenmesi, işlem izni ve sunucu yanıtı başarılı yürütmeden ayrıdır; grafiğe program eklemek herhangi bir sonucu kanıtlamaz. Kontrol edilecek ilk iş yalnız “sinyal oluştu mu?” değildir: doğru mum okundu mu, istek neye dönüştü, mevcut pozisyon ne kadar?
MQL5 Expert Advisor tam olarak nedir?
MetaEditor MQ5 kaynak dosyasını EX5 çalıştırılabilir programa derler. EX5 kaynak olmadan dağıtılabilir; dili öğrenmek satın alınmış kapalı EX5’in açıklanmayan algoritmasını ortaya çıkarmaz. EA izinli işlem isteği gönderebilir. Göstergenin olayları ve yasak işlem işlevleri farklıdır; göstergeler hesap veya bildirim de yapabildiğinden “yalnız çizer” sözü dar kalır.
MQL5 EA MT5 ortamını kullanır. MT4’te Expert Advisor adı kendi dil ve arayüzüyle vardır; diğer otomasyonlar başka emir arayüzü kullanabilir. MT4/MT5 EA ile algoritmik ilk adımlar bu ayrımları açar. Ortam seçmek stratejinin kalitesini belirlemez.
Dizin sıfır son kapalı mum olmayabilir
CopyBuffer start_pos=1, count=3 ile AS_SERIES olmayan düz diziye tam üç değer kopyalasın. Fiziksel bellekte en eski önce gelir; bu özel durumda son kapalı değer dizin 2’dedir.
Kurgu değerler 103, 101, 102; tam 3 öğe, hata veya kısmi sonuç yok. Eşik 102,5 veri seçimini kontrol eder, yatırım sinyali değil. Başka dizi ayarında dizin 2’yi evrenselleştirmeyin.
start_pos, dönen adet ve hedef dizi indeksleme yöntemini test kaydına yazın. Adedi kontrol etmek sırayı kontrol etmek değildir; doğru yazılmış karşılaştırma yanlış tarihsel değerle beslenebilir.
OnInit, OnTick ve OnDeinit ne yapar?
OnInit başlangıç hazırlığıdır. Bir yaşam döngüsü olayıdır, programın bütün kullanımında yalnız bir kez çağrılacağı garantisi değildir. Gerekli kaynakları kontrol edin; hazırlık tamamlanamıyorsa hata durumu döndürün.
OnTick bağlı grafiğin sembolüne ait NewTick olayını işler. Olay kuyrukta veya işleniyorsa yenisi kuyruğa eklenmez. EA başka olayları da kullanabilir, OnTick yazması zorunlu değildir. AutoTrading’i kapatmak yeni işlem isteğini engeller; hesaplamayı durdurmaz, çalışan işleyiciyi kesmez.
OnDeinit kaldırma, kapanış veya yeniden başlatma gerektiren değişikliklerin nedenini ele alır. Kaynak ve kalıcı durumu açıkça yönetin. OnTimer ve OnTradeTransaction görev için önemli olabilir; yaşam üç işleyiciden ibaret değildir. Çok sembollü EA’da bağlı grafiğe gelen tick, diğer sembollerin verisinin güncel olduğunu göstermez.
CTrade ve emir yanıtları nasıl okunur?
OrderSend true döndüğünde piyasa işlemi mutlaka dolmuş değildir. Yanıt kodunu inceleyip emir, deal ve pozisyonu uzlaştırın. OrderCheck ön kontroldür, sonra dolum garantisi değil. Ayrı hata testinde EA 0,10 lot alış ister ve yanıt belirsizleşir. Kontrolsüz tekrar, iki istek de dolarsa 0,20 lot yaratabilir; yerel teyit eksikliği sunucunun hiçbir şey yapmadığını kanıtlamaz.
OnTradeTransaction emir silinmesini geçmişe deal eklenmesinden ayırır; bildirimlerin öncelikli geliş sırası garanti edilmez. Başlangıç pozisyonu yok, teyitli iki alış D1=0,04 ve D2=0,06 lot olsun. ORDER_DELETE ile sayacı sıfırlayan hatalı kod D1, D2, ORDER_DELETE sonunda sıfır; ORDER_DELETE, D1, D2 sonunda 0,10 okur. Teyitli alış toplamı ikisinde 0,10. Emir durumu ve pozisyon maruziyeti ayrı alanlardır. Gerçek kayıt defteri satış, tersine dönüş, geçmiş düzeltmesi ve hesap muhasebe modunu da ele almalıdır.
CTrade Buy, Sell ve PositionClose gibi yöntemler sunar. Buy yönteminin başarılı yapı kontrolü, her zaman başarılı işlem değildir; ResultRetcode ve ResultDeal kontrol edilir. Fiyat kayması dolum ile beklenen fiyat farkını ayrıca açıklar.
TRY karşı örneği: geçmişi tekrar okumak yeni deal değildir
Ayrı USD/TRY modelinde aynı sunucu ve hesap, tek net pozisyon, başlangıç sıfır; başka işlem veya düzeltme yok. Sözleşme 100.000 USD/lot. Teyitli D1 ticket 1001: 0,04 lot alış, Ask dolumu 40,01. D2 ticket 1002: 0,06 lot alış, Ask dolumu 40,03. Son ortak Bid 40,02; komisyon, finansman ve başka ücret sıfır varsayılmıştır. Fiyatlar kurgu, gerçek tarife değildir.
Yerel kodun sırayla D1 ve D2’yi işleyip yeniden başlatma uzlaştırmasında D1’i bir kez daha okuduğunu varsayın. Bu üçüncü bir sunucu dolumu veya MT5’in kesinlikle çift bildirim yaptığı iddiası değildir; aynı dealin kendi kodumuza iki giriş yoluyla ulaşmasıdır. Hesap/sunucu kapsamındaki ticket anahtarıyla tutulan kayıt defterinde iki deal, toplam 0,10 lot vardır. Kör ekleme listesi 0,04+0,06+0,04=0,14 lot uydurur.
Gerçek iki dolumun maliyet toplamı 4.000×40,01+6.000×40,03=400.220 TRY, ortak Bid değeri 10.000×40,02=400.200 TRY; açık fiyat sonucu −20 TRY. Tekrarlı D1 sayılırsa sahte maliyet 560.260, sahte değer 560.280 TRY, sonuç +20 görünür. Eksik kimlik kontrolü yalnız hacmi değil kârın işaretini değiştirir. Toplam tutarları büyüklükle ağırlıklandırın; lot ortalaması yerine fiyatların basit ortalaması da yanlıştır.
Demo kabul testine “aynı geçmişi yeniden işlerken durum değişmemeli” koşulu ekleyin. Bunun yalnız bu değişmeyen alış listesinde idempotent olduğu açıktır; gerçek DEAL_UPDATE/DELETE düzeltmesini körce “görüldü” diye atlamak başka hatadır. Pozisyon kimliği, gerçek güncel hacim ve geçmişi uzlaştırın. Örnek yeni emir göndermeyi veya gerçek kârı kanıtlamaz.
Yalnız bildirim sayısını toplamayın. Mevcut pozisyonu kimlikli deal kayıt defteriyle uzlaştırın; aksi hâlde hacim hatası kârın işaretini bile değiştirebilir.
Küçük ekranda şemayı yatay kaydırabilir veya büyütebilirsiniz. Değerler ve sonuç aşağıdaki metinde de yer alır.
- Kimlikli iki deal
- 0,10 lot; −20 TRY – Maliyet 400.220, Bid değeri 400.200 TRY. Gerçek iki dolumun açık fiyat sonucu.
- D1’i tekrar ekleyen yerel kod
- 0,14 lot; sahte +20 – Sahte maliyet 560.260 ve değer 560.280 TRY. Üçüncü dolum gerçekleşmedi.
- Kurtarma kabul koşulu
- Aynı geçmiş, aynı durum – Değişmeyen ticket tekrarında hacim artmamalı. Gerçek geçmiş düzeltmeleri ayrıca işlenir.
Strategy Tester geçmişi ezberlemeyi nasıl ayırır?
MT5 test aracı seçilen mod ve veriyle üretilmiş tick veya aracı kurumun topladığı gerçek tick kullanabilir. Kökeni, zamanı, sözleşme ayarını ve maliyeti raporla saklayın; gerçek tick evrensel MetaQuotes fiyat kaynağı demek değildir. Aynı geçmişte parametre seçip onu değerlendirme diye raporlamak kanıtı abartabilir; düzgün eğri veya canlı başarısızlık matematiksel zorunluluk değildir.
Dokunulmamış değerlendirme dönemi bırakın, tekrarlanan araştırma seçimlerini kaydedin. Geriye dönük test bunun için gerekir. Tam kopyalama, doğru mum demek değildir; sinyalden önce veri seçimini doğrulayın. Veriyi sonradan gördüyseniz yeniden adlandırarak görülmemiş yapamazsınız.
EA ne zaman yardımcı olur, ne zaman zarar verebilir?
EA tekrarlanabilir kontrolleri uygulayabilir, seçilmiş araçları izleyebilir. Ayda 200 işlem, gece çalışması veya hızlı karar olası tasarım gereksinimidir, kârlı avantaj kanıtı değil. Bilgi girdilerini, olay koşullarını ve işlem açmama kurallarını yazın. Sıra dışı veri açıklaması veya piyasa koşulu test ve gözetim ister; otomasyonu otomatik olarak geçersiz kılmaz.
Pazar yeri grafiği veya kaynağı belirsiz forum anketi gelecekte canlı performans tahmini değildir. Kontrol edeceğiniz şey belirli veri ve izin durumunda programın gerçekten ne yaptığıdır. Bunu kârlılık değerlendirmesinden ayrı tutun.
Kendi EA’nızı yazmaya değer mi?
Küçük proje kesin kuralların uygulanmasını sınayabilir. Öğrenme bütçesini işlev ve beceriye göre seçin; üç-altı ay veya satın almak yerine yazmak daha üstün sonuç garantilemez. Gözetimsiz çalışma altyapı, izin ve kurtarma prosedürü gerektirir.
Yerel AutoTrading düğmesi pozisyon kapatmaz, hesaplamayı durdurmaz. Sunucunun kabul ettiği sıradan stop yerel terminal kapalıyken kalabilir; yalnız EA kodundaki çıkış programın çalışıp sunucuya ulaşmasına bağlıdır. MetaQuotes Virtual Hosting taşınmış ayrı ortamdır; orada otomatik işlem açıktır, yerel düğme uzaktaki örneği durdurmaz. Windows VPS başka hizmettir. VPS ve gecikme seçimi yol ve süreklilik gereksinimine göre yapılır.
Eksik gösterge verisi, yeniden başlatma, geçersiz hacim adımı, belirsiz yanıt ve manuel pozisyon değişikliği için kabul koşulları koyun. Eski sinyale güvenmeden güncel maruziyeti kurun. Netting’de aynı sembolde stratejiler ortak net pozisyon kullanır; Magic Number ayrı sermaye veya teminat yaratmaz. Dil veya platform adı Türkiye’de uygun ürün ya da yetkili aracı kurum kanıtı değildir.
Tanıtıcı var; gösterge değeri hazır mı?
Tanıtıcı yaratmak gereken mumun hesaplandığını göstermez. BarsCalculated hesaplanmış veri adedini, hatada −1 döndürür. Ardından CopyBuffer’ın gerçek adedini, doğru tamponu ve mum kaymasını kontrol edin. Başarısız okumayı sıfıra çevirmeyin; RSI sıfır aşırı bir durumu anlatabilir, “veri hazır değil” değildir.
Tanıtıcı var; gösterge değeri hazır mı?
Model bir değer ister: A geçersiz tanıtıcı, okuma yok; B tanıtıcı var ama sıfır değer kopyalandı, bekle; C bir değer kopyalandı ama EMPTY_VALUE, kullanılabilir sinyal yok; D geçerli 45 kopyalandı, kural değerlendirilebilir. 45 atanmış okuma, yatırım sinyali değil. EMPTY_VALUE varsayılan DBL_MAX’tır, sonlu sayıdır; yalnız sonluluk kontrolü yetmez. Özel göstergenin boş işareti başka olabilir. Sözleşmesini kontrol edin, bütün sıfırları reddetmeyin.
Alıştırma: tanıtıcı ve kopyalanmış tek EMPTY_VALUE var. Ne yapmalı?
Strateji eşiğini değerlendirmeyin. Tampon, mum ve boş işaretini kontrol edin; kullanılmayan veriyi kaydedip uygun sonraki olayda yeniden deneyin. Sıfır gözlem uydurmayın.
API verisi için çevrimdışı bilgi tekrarı ayrıca erişilebilirlik testi ister. Grafiğe bağlı kuralın görsel test koşulları farklıdır.
Yarın hangi beş kontrol yapılmalı?
- Gerçek sağlayıcı kanalından MT5’i doğrulayıp kontrollü demoda örnek Moving Average veya MACD EA’yı EUR/USD H1 üzerinde tek geçişle inceleyin. Sermaye eğrisi, düşüş ve kâr faktörünü rapordan okuyun; adı veya güzel eğriyi onay saymayın.
- Resmi belgelerde önce OnInit, OnTick ve CTrade’ı okuyup görev yerlerini bulun. Sonra CopyBuffer adet ve indekslemesini örnekteki 103/101/102 ile doğrulayın. Amaç önce belge ve veri sözleşmesini anlamaktır.
- Girdi, giriş, çıkış, miktar ve işlem açmama koşullarını yazın. Takdire dayalı kararı açık işaretleyin; bağlamsal koşul tanımlı girdilerle biçimselleştirilebilir. Kurulum listesi belirsiz adımları ayırır.
- Küçük öğrenme projesine veri, olay ve yanıt kabul testleri koyun. TRY kayıt defterini iki kez besleyip hacim ve değerlemenin değişmediğini sınayın; geçmiş düzeltmelerini bu basit modelle karıştırmayın.
- Gerçek maruziyetten önce işletim akışını demoda inceleyin. Bir ay yalnız örnek süre; demo dolumu canlıdan farklı olabilir. Test aracındaki gecikme benzetimi bütün gelecekteki gerçek dolumların ölçümü değildir.
Anladığınızı kontrol edin
Alıştırma: yaklaşık 2 dakika.
Yanıtı ve açıklamayı göster
Fiziksel bellekte en eski önce gelir. Üç değerli düz dizinin son indeksi 2, shift 1’i taşır.
Diğer sorular
MQL5 EA ile Python bot nasıl ayrılır?
EA çalıştırmak için kod bilmek gerekir mi?
Test sonucu iyi, canlı sonuç neden kötü olabilir?
VPS zorunlu mu?
Geçmişi yeniden okursam her satırı ekleyeyim mi?
Kaynaklar ve doğrulama
- MQL5 — OnTick
Bağlı sembolün NewTick kuyruğu, başka olaylar ve AutoTrading kapalıyken süren hesaplama.
- MQL5 — CopyBuffer
Güncelden sayılan start_pos, dönen adet ve fiziksel bellekte en eski öğenin başta olması.
- MQL5 — OnTradeTransaction
Emir, deal ve pozisyon olayları; sırası garantilenmeyen bildirimler, geçmiş güncelleme/silme türleri.
- MQL5 — BarsCalculated
Hesaplanan veri adedi veya hatada −1; tanıtıcı varlığı verinin hazır olduğunu göstermez.
- MQL5 — Other Constants
EMPTY_VALUE=DBL_MAX, INVALID_HANDLE ve özel göstergede başka boş işaret kullanılması.
- MQL5 — CTrade Buy
Başarılı yöntem kontrolü gerçek dolum garantisi değil; ResultRetcode ve ResultDeal incelenir.
- MetaTrader 5 — Virtual Hosting migration
Taşınmış ayrı sanal ortamda otomatik işlem izni; yerel düğmeden ayrıdır.
- MQL5 — OnInit
Başlangıç olayı ve int dönüşüyle hata durumu.
- MQL5 — OnDeinit
Sembol/dönem/girdi değişiminde yeniden başlatma, kaldırma ve terminal kapanış nedenleri.
- MQL5 — HistoryDealGetTicket
Seçilmiş geçmiş listesindeki deal kimliği; emir, deal ve pozisyon ayrımı.
- MetaEditor — Compilation
MQ5 kaynak ve EX5 çalıştırılabilir dosya ayrımı; EX5 kaynak olmadan dağıtılabilir.
- MQL5 — Program Running
Program türlerinin olay/işlev sınırları; göstergede OrderSend ve diğer işlem işlevlerinin yasak olması.
Hesaplamalar açıkça belirtilen varsayımlara dayanır. Güncel piyasa verilerinin veya sağlayıcının koşullarının yerini almaz.
