Netting ve hedging hesaplarında pozisyonların davranışı
Netting hesapta bir sembolde tek bir pozisyon bulunur, hedging hesapta aynı sembolde birbirinden bağımsız birden fazla pozisyon durabilir. Fark, yeni emrin elinizdekine ne yaptığında ortaya çıkar. Netting hesapta 1,0800'den 0,50 lot EURUSD alıp ardından 1,0900'den 0,30 lot daha alırsanız iki satır oluşmaz; hacim 0,80 lota çıkar ve giriş fiyatı ağırlıklı ortalamaya kayar: (0,50 x 1,0800 + 0,30 x 1,0900) / 0,80 = 1,08375. Ters yönde 0,80 lot satarsanız pozisyon kapanır, 1,00 lot satarsanız 0,20 lotluk kısa pozisyona döner. Hedging hesapta aynı iki alım ayrı iki pozisyon olarak durur, her birinin kendi zarar durdur ve kâr al seviyesi olur, üstelik aynı sembolde uzun ile kısa yan yana taşınabilir.
Teminat da bu farktan etkilenir. Netting hesapta ters yönlü emirler birbirini götürdüğü için iki yönü aynı anda taşıyamazsınız. Hedging hesapta 0,50 lot uzun ve 0,50 lot kısa açıkken sunucu kilitli pozisyonlara ayrı bir teminat hesabı uygulamıyorsa her bacak için 1:100 kaldıraçla 50.000 / 100 = 500 EUR bağlanır, toplam 1.000 EUR eder. Ters yönde ikinci bir pozisyon açmak riski kapatmaz, olduğu yerde dondurur; spread, komisyon ve gecelik swap iki bacakta da işlemeye devam eder.
Hesabınızın hangi tipte çalıştığını açık bir pozisyona sağ tıklayarak anlarsınız: hedging hesapta menüde Close By seçeneği vardır, netting hesapta yoktur. Sembolün teminat hesabını Piyasa Gözlemi'ndeki sembol özelliklerinden okuyun, sonra demo hesapta aynı sembole ikinci bir emir gönderip hacim satırının ne olduğunu izleyin.
Emir gerçekleşme türleri ve dolum politikaları
Emir gerçekleşme türü, gönderdiğiniz fiyatın bağlayıcı olup olmadığını belirler. Anlık gerçekleşmede ekrandaki fiyattan emir gönderirsiniz; fiyat aradan kaydıysa sunucu ya sapma toleransınız kadar kayarak doldurur ya da yeni bir fiyat teklifi döner. İstek üzerine gerçekleşmede önce sunucu bir fiyat gönderir, siz onaylarsanız emir işlenir. Piyasa gerçekleşmesinde fiyat garanti edilmez, emir gelen fiyattan dolar ve sapma alanı emir penceresinde görünmez bile. Borsa gerçekleşmesi emri doğrudan borsa defterine iletir.
Dolum politikası kısmi dolumun ne olacağını söyler. 5 lotluk emriniz için o anda 3 lotluk karşılık varsa Fill or Kill emrin tamamını iptal eder, Immediate or Cancel 3 lotu doldurup kalan 2 lotu siler, Return 3 lotu doldurur ve kalan 2 lot emir olarak beklemeye devam eder. Return, piyasa gerçekleşmesinde sembol ayarından bağımsız olarak kapalıdır; bekleyen emirlerde ise gerçekleşme türü ne olursa olsun Return kullanılır. Desteklenmeyen bir politikayla gönderilen emir 10030, yani geçersiz doldurma türü koduyla geri döner ve uzman danışman yazanların en sık takıldığı yer burasıdır.
Maliyet sapmada saklıdır. Beş haneli EURUSD'de 10 puanlık tolerans 1 pip demektir; 1,08400 isteyip 1,08410'dan dolarsanız 1 lotluk pozisyona 10 USD daha pahalıya girmiş olursunuz ve hızlı piyasada bu fark büyür. Sembolünüzün hangi türde çalıştığını Piyasa Gözlemi'nde sembole sağ tıklayıp Özellikler'i açarak görürsünüz; gerçekleşme ve doldurma türü satırlarını okuyun, sonra F9 ile emir penceresini açıp aynı alanların orada nasıl göründüğüne bakın.
Piyasa derinliğini okumak
Piyasa derinliği, en iyi alış ve satışın etrafında bekleyen limit emirleri hacimleriyle birlikte gösteren bir merdivendir. MetaTrader 5'te Piyasa Gözlemi'nde sembole sağ tıklayıp Piyasa Derinliği'ni seçerek ya da Alt+B ile açarsınız. Spread pencerenin ortasında durur; köşedeki menüden tik grafiğini ve hacim sütununu açıp kapatır, bir seviyeye tıklayarak oraya bekleyen emir bırakır, kendi emirlerinizi merdivende işaretli görürsünüz.
Merdivenin ilk anlattığı şey anlık maliyettir. En iyi alış 1,08421, en iyi satış 1,08434 ise spread 13 puan, yani 1,3 pip eder; 1 lotluk bir pozisyon açıldığı anda 13 USD ekside başlar. İkinci anlattığı şey büyük bir emrin defteri nasıl yürüdüğüdür. En iyi alışta 3 lot, bir alt seviyede 2 lot varsa 5 lotluk piyasa satışınız (3 x 1,08421 + 2 x 1,08415) / 5 = 1,084186 ortalamasıyla dolar, defterin tepesinden 2,4 puan kötü.
Penceredeki hacimler bütün piyasa değil, sunucunun o sembol için yayınladığı kadarıdır. Bazı sembollerde yalnızca en iyi alış ile satış görünür, bazılarında derinlik penceresi hiç açılmaz. Seviyeler veri açıklamalarında incelir ve saniyeler içinde boşalabilir, yani ekranda duran hacim bir taahhüt değildir. Takip ettiğiniz bir sembolde derinlik penceresini açık bırakın, önemli bir veri saatinde seviyelerin nasıl seyreldiğini ve spreadin kaç puana çıktığını izleyin.
Özel sembol tanımlamak: seans ve sözleşme ayarları
Özel sembol, kendi verinizi MetaTrader 5'in grafik ve test altyapısına sokmanın yoludur. Görünüm menüsünden Semboller penceresini açın (Ctrl+U), listedeki bir sembole sağ tıklayıp Özel Sembol Oluştur deyin. Yeni sembol kendi sözleşme ayarlarını taşır ve işleme kapalıdır; yalnızca grafik çizmek ve strateji test edicide çalıştırmak içindir.
En kritik alanlar sözleşme büyüklüğü, hane sayısı, tik büyüklüğü ve kâr para birimidir. Sözleşme büyüklüğüne 100.000, tik büyüklüğüne 0,00001 ve kâr para birimine USD yazarsanız bir puan 100.000 x 0,00001 = 1 USD, bir pip 10 USD eder. Sözleşme büyüklüğüne yanlışlıkla 10.000 yazarsanız hiçbir şey kırılmaz: grafik açılır, test döner, hata çıkmaz, yalnızca bütün kâr ve zarar rakamları onda bir görünür. Swap alanlarını boş bırakırsanız gecelik taşıma maliyeti testten tamamen kalkar; teminat alanlarını eksik doldurursanız test edici gerçekte açamayacağınız büyüklükte pozisyon açar.
Seans sekmesi sonucu daha da sessiz değiştirir. Her hafta günü için ayrı kotasyon ve işlem seansı tanımlarsınız, seans girilmeyen günde bar oluşmaz ve test o günü atlar. Vadeli bir sözleşmeyi taklit ediyorsanız başlangıç ve bitiş tarihi de buraya yazılır. Aynı pencerenin Barlar ve Tikler sekmelerinden CSV verisi içe aktarılır; bir özel sembol oluşturup günlük barlarını aktarın, sonra grafiği kaynak dosyanızla yan yana koyup açılış, yüksek, düşük ve kapanış değerlerinin birebir oturduğunu doğrulayın.
Strateji test edici ile geriye dönük test
Strateji test edici, bir uzman danışmanı geçmiş barlar üzerinde çalıştırıp sonucu bir rapora döker. Görünüm menüsünden ya da Ctrl+R ile açılır. Ayarlar bölümünde uzman danışmanı, sembolü, zaman dilimini, tarih aralığını, modelleme türünü, başlangıç mevduatını ve kaldıracı seçersiniz. Buradaki kaldıraç canlı hesabınızdan bağımsızdır: 1:100 ile geçen bir test 1:500 ile farklı teminat tüketir, aynı kurulum birinde ayakta kalırken diğerinde stop out görebilir.
Test bitince gelen rapordaki rakamlar birbirinden türediği için elle kontrol edilebilir. 10.000 USD mevduatla 200 işlem sonunda net kâr 1.000 USD yazıyorsa işlem başına beklenen getiri 1.000 / 200 = 5,00 USD'dir. Brüt kâr 3.000, brüt zarar 2.000 ise kâr faktörü 3.000 / 2.000 = 1,50 çıkar. Azami varlık düşüşü yüzde 22 satırı hesabın tepe noktasından ne kadar gerilediğini söyler; 10.000 USD'lik bir tepeden bakıldığında hesap 7.800 USD'yi görmüş demektir.
Testin anlatmadığı kısım da var. Test edici geçmişteki her requote'u, likidite boşluklarını ve hafta sonu açılış boşluklarını birebir üretmez; Gecikmeler alanını sıfırda bırakırsanız emirler gerçek hayatta olmadığı kadar hızlı dolar. Geçmiş barlar üzerindeki bir sonuç gelecekteki dolumlara dair söz vermez. MetaTrader 5 ile birlikte gelen Moving Average uzman danışmanını bir yıllık aralıkta çalıştırın, sonra net kâr, işlem sayısı ve kâr faktörü satırlarını kendi hesabınızla doğrulayın.
Modelleme kalitesi, tik verisi ve spread varsayımı
Modelleme türü, test edicinin bar aralarını nasıl doldurduğunu belirler. Gerçek tiklere dayalı her tik seçeneği sunucudan kayıtlı tik geçmişini indirir. Üretilmiş her tik seçeneği ise M1 barlarından tik türetir, yani bar içinde yükseğin mi düşüğün mü önce geldiğini tahmin eder; zarar durdur ile çalışan bir kurulumda bu tahmin sonucu tersine çevirebilir. Bir dakikalık OHLC modu bar başına dört fiyat kullanır, yalnızca açılış fiyatları modu tek fiyatla en hızlı koşandır ve bar içi tetiklenmeleri hiç görmez.
Spread varsayımı daha da sert vurur. Ayarlarda spreadi sabit bir puan değerine kilitleyebilir ya da geçerli spreadi kullanabilirsiniz, gerçek tik verisinde ise kayıtlı spread uygulanır. 1 lot EURUSD ile 500 gidiş dönüş işlem yapan bir kurulumu sabit 10 puanla, yani 1 pip ile test edip sonra gerçek tiklerde ortalama 1,8 pip görürseniz aradaki 0,8 pip işlem başına 8 USD, beş yüz işlemde 4.000 USD eder. Kod da tarihler de aynıdır, arada duran tek şey spread varsayımıdır.
Komisyon ve swap da testte sembol ayarlarından gelir; özel sembolde bu alanları boş bıraktıysanız taşıma maliyeti raporda hiç görünmez. Test edicinin Günlük sekmesi hangi verinin indirildiğini ve eksik dönemleri yazar, önce oraya bakın. Aynı uzman danışmanı aynı tarih aralığında bir kez üretilmiş tikle bir kez gerçek tikle çalıştırın, iki raporun net kârını yan yana koyup farkın nereden geldiğini bulun.
Optimizasyon, aşırı uyum ve ileri test
Optimizasyon, aynı testi parametre kombinasyonlarını değiştirerek defalarca çalıştırır. Strateji test edicinin ayarlarından yavaş tam algoritmayı ya da hızlı genetik algoritmayı seçer, Girdiler sekmesinde her parametreye başlangıç, adım ve bitiş değeri verirsiniz. Üç parametreye yirmişer değer verdiğinizde 20 x 20 x 20 = 8.000 kombinasyon çalışır. Elinizde 300 işlemlik bir geçmiş varsa 8.000 denemenin en iyisi sırasını büyük ölçüde tesadüfe borçludur; aşırı uyumun tanımı da budur.
Ayırt etmenin pratik yolu sonuç yüzeyine bakmaktır. Optimizasyon sonuçları tablosunu sıralayın ya da grafiği açın: en iyi setin komşu parametre değerleri benzer sonuç veriyorsa altta bir yapı olabilir, tek bir hücre parlayıp iki yanı çöküyorsa gördüğünüz şey gürültüdür. İleri test bunu ölçmenin yerleşik yoludur. Ayarlardaki İleri alanını 1/3 yaparsanız test edici ilk üçte ikide optimize eder, kalan üçte birde en iyi setleri yeniden çalıştırır ve sonucu ayrı bir sekmede gösterir.
Optimizasyonda başı çeken setin ileri testte dağılması sık görülür ve bilgi verir; ayakta kalması ise gelecek için bir şey vaat etmez. Buradaki maliyet gerçektir: aşırı uyumlu bir parametre seti canlı hesapta gerçek kaldıraçla ve gerçek teminatla çalışır, testte görünmeyen düşüş orada bakiyeden çıkar. Bir optimizasyonu İleri alanı 1/3 iken çalıştırın, sonra aynı geçiş numarasının optimizasyon ve ileri sonuçlarını yan yana koyup aradaki farkı ölçün.
MQL5 uzman danışmanı kurmak
Uzman danışman, MetaTrader 5'in veri klasöründeki MQL5/Experts altına konur. Dosya menüsünden Veri Klasörünü Aç deyip .ex5 dosyasını bu klasöre kopyalayın; elinizde kaynak kod varsa .mq5 dosyasını koyup MetaEditor'da F7 ile derleyin. Sonra Gezgin panelinde sağ tıklayıp Yenile deyin, danışman listede çıkar. Grafiğe sürüklediğinizde açılan pencerede Genel sekmesindeki algo alım satımına izin ver kutusunu işaretlemeniz gerekir, ayrıca araç çubuğundaki Algo Trading düğmesinin açık olması şarttır.
Çalışıp çalışmadığını grafiğin sağ üst köşesinden anlarsınız: danışmanın adının yanında gülen yüz varsa emir gönderebilir, durdurma işareti varsa algo alım satımı kapalıdır. Dışarıya bağlanan bir danışman kullanıyorsanız Araçlar, Seçenekler, Uzman Danışmanlar yolundan adresi izin listesine eklemeniz gerekir; DLL çağrısı isteyen bir danışmanda ayrı bir onay kutusu daha çıkar ve o kutu bilgisayarınızda kod çalıştırma izni demektir.
Kurulum, hesabınızın emir gönderme yetkisini bir yazılıma devretmektir. Hacim hesabını yanlış yapan bir danışman dakikalar içinde serbest teminatınızı tüketebilir. Kullandığı kaldıraç sizin hesabınızın kaldıracıdır ve bu değer müşteri alanındaki hesap kartında Kaldıraç satırında, stop out seviyesi ise hesap türleri sayfasında yazar. Yeni bir danışmanı önce demo hesapta bir grafiğe ekleyin, köşedeki gülen yüzü doğrulayın ve en az bir tam işlem günü boyunca izleyerek bırakın.
Uzman danışman parametreleri ve günlükten hata ayıklamak
Uzman danışmanın davranışını Girdiler sekmesindeki değerler belirler. Danışmanı grafiğe eklerken ya da grafikte sağ tıklayıp uzman danışman listesinden Özellikler'i açtığınızda her girdi adıyla ve değeriyle listelenir. Bir değeri değiştirip Tamam derseniz danışman yeniden başlar. Aynı pencerenin Yükle ve Kaydet düğmeleri parametre setini .set dosyası olarak MQL5/Presets klasörüne yazar, böylece testte kullandığınız seti canlı grafiğe birebir taşırsınız.
Bir şey çalışmadığında cevap Araç Kutusu'ndadır. Uzmanlar sekmesi danışmanın kendi Print çıktılarını ve başlatma sonucunu gösterir, Günlük sekmesi sunucuya giden emirleri ve dönen kodları yazar. Bu kodlar okunabilir: 10014 geçersiz hacim, 10016 geçersiz stop seviyesi, 10018 piyasa kapalı, 10019 yetersiz para demektir. Asgari hacmi ve adımı 0,01 olan bir sembolde 0,007 lot gönderen danışman her denemede 10014 alır; zarar durdur emrini sembolün izin verdiğinden yakına koyarsa 10016 alır. İzin verilen mesafeyi Piyasa Gözlemi'ndeki sembol özelliklerinde stop seviyesi satırından okursunuz.
Hata mesajını görmezden gelmenin bedeli birikir: aynı hatayı saniyede defalarca tekrarlayan bir danışman sunucuya boş istek yağdırır ve günlük dosyalarını şişirir. Günlükler diskte de durur, veri klasörü altındaki MQL5/Logs içinde. Demo hesapta Uzmanlar sekmesini açın, bir girdiyi bilerek sembolün kabul etmeyeceği bir değere getirin ve dönen kodu okuyun.
Özel gösterge ve betikleri MetaEditor ile derlemek
MetaEditor terminalden F4 ile açılır ve MQL5 kaynak dosyalarını .ex5 çalıştırılabilir dosyasına çevirir. Ctrl+N ile açılan sihirbaz ne yaptığınızı sorar: uzman danışman, özel gösterge, betik, kütüphane ya da include dosyası. Seçtiğiniz tip dosyanın veri klasöründe nereye yazılacağını belirler; göstergeler MQL5/Indicators, betikler MQL5/Scripts altına gider. F7 derler, hatalar ve uyarılar alttaki Hatalar sekmesine düşer, satıra çift tıklayınca imleç oraya gider. Derleme bittiğinde terminalde Gezgin panelini yenilemeniz gerekir, yoksa yeni dosya listede görünmez.
Sıfır hata almak doğru çalıştığı anlamına gelmez. Bir göstergede indicator_buffers özelliğine 2 yazıp yalnızca bir SetIndexBuffer çağrısı yaparsanız derleyici susar ama ikinci çizgi hiç çizilmez. Aynı şekilde indicator_chart_window ile indicator_separate_window arasındaki tek kelimelik fark, göstergenin fiyat grafiğinin üstüne mi yoksa alt pencereye mi çizileceğini belirler. Betikler ise grafikte bir kez çalışıp kapanır, gösterge gibi her tikte yeniden hesaplanmaz.
Hata ayıklamada F5 canlı veriyle, Ctrl+F5 geçmiş veriyle çalıştırır. Kodunuzdaki Print çıktıları terminalin Uzmanlar sekmesine düşer, Comment çıktısı ise grafiğin sol üst köşesinde görünür. İnternetten indirdiğiniz bir kaynak kodu derlemek onu güvenli yapmaz, DLL çağrısı içeren bir dosya bilgisayarınızda kod çalıştırabilir, bu yüzden derlemeden önce dosyayı okuyun. MQL5/Indicators/Examples klasöründeki Custom Moving Average dosyasını kopyalayın, periyot girdisini değiştirin, F7 ile derleyip yeni göstergeyi bir grafiğe sürükleyin.
Uzman danışmanı VPS üzerinde kesintisiz çalıştırmak
Uzman danışmanın kesintisiz çalışması için kendi bilgisayarınızın açık kalması gerekmez; MetaTrader 5'in sanal barındırma hizmeti terminalinizin bir kopyasını uzak sunucuda tutar. Gezgin panelinde hesaba sağ tıklayıp Sanal Sunucu Kaydet deyin. Sihirbaz işlem sunucunuza en yakın merkezleri milisaniye cinsinden gecikmeleriyle listeler ve abonelik ücretini kayıt ekranında gösterir; bu ücret MetaQuotes'a aittir, işlem hesabınızın maliyetlerinden ayrıdır.
Kayıttan sonra hesaba yine sağ tıklayıp taşıma adımını çalıştırırsınız. Bu adım o anki grafik ortamınızı, üzerindeki danışmanı ve girdi değerlerini sanal sunucuya kopyalar. Eşitleme tek yönlüdür ve bir anlık görüntü alır: sonradan bir girdiyi değiştirir, yeni bir grafik açar ya da danışmanı güncellerseniz sanal sunucu eski haliyle çalışmaya devam eder, taşımayı tekrarlamanız gerekir. Sunucunun ne yaptığını yine hesaba sağ tıklayıp sanal barındırma günlüğünü açarak görürsünüz.
Sanal sunucu bağlantı kesintisi ve elektrik riskini ortadan kaldırır, piyasa riskini yerinde bırakır. Yirmi dört saat çalışan bir danışman veri açıklamalarında ve hafta sonu açılış boşluklarında da pozisyon açar; siz ekranda değilken teminat seviyeniz hesap türleri sayfasında yazan stop out seviyesine inebilir. Demo hesabınız için bir sanal sunucu kaydedin, bir grafiği taşıyın, terminali bir saat kapatın ve döndüğünüzde günlüğü okuyup danışmanın o saatte ne yaptığını görün.
Hesap geçmişi ve raporları okumak
Hesap geçmişi Araç Kutusu'ndaki Geçmiş sekmesinde durur (Ctrl+T). Sağ tıklayarak dönem seçer, kayıtları emirlere, anlaşmalara ya da pozisyonlara göre gruplarsınız. Üçü aynı şey değildir: emir gönderdiğiniz talimattır, anlaşma o talimatın gerçekleşen kısmıdır, pozisyon ise ortaya çıkan maruziyettir. Tek bir pozisyonun giriş ve çıkış anlaşması ayrı satırlar halinde görünür, komisyon anlaşma satırında işlenir, swap ise pozisyonu taşıdığınız her gece için ayrıca yazılır. Komisyonun nasıl alındığı hesap türüne bağlıdır ve hesap türleri sayfasında satır satır yazar.
Aynı pencerede sağ tıklayıp Rapor derseniz HTML ya da XLSX dosyası alırsınız, özet rakamlar orada toplanır. Bu rakamlar birbirinden türediği için elle doğrulanabilir. Brüt kâr 4.500 USD, brüt zarar 3.000 USD ise kâr faktörü 4.500 / 3.000 = 1,50'dir. Altmış işlemde net 1.500 USD kaldıysa işlem başına beklenen getiri 25 USD'dir. Aynı raporda swap sütunu -180, komisyon sütunu -120 gösteriyorsa ham işlem sonucunuz 1.800 USD demektir, yani maliyetler kazancın altıda birini götürmüştür.
Kısa dönem raporlarına fazla yüklenmeyin. Yirmi işlemlik bir dönemde kâr faktörü tek bir büyük sonuçla ikiye katlanır ya da yarıya iner; bir oran, arkasındaki işlem sayısı kadar anlamlıdır. Aynı geçmişi müşteri alanındaki Geçmiş bölümünden de görür, güncel teminat seviyenizi hesap kartından okursunuz. Son üç ayı dışa aktarıp swap sütununu toplayın ve taşıma maliyetinin net sonucunuzdan ne götürdüğünü bulun.