GEÇİCİ SİNYAL - NEDİR NE DEĞİLDİR
RİSKLERİ - FAYDALARI
Merhabalar,
Normal kullanımda, koşul bar içinde gerçekleşme durumuna gelir. Bu durum bar kapandığında hala geçerli olur ise, koşul kesinleşti, KALICI HALE DÖNDÜ deriz.
Ve, emrimiz bir sonraki barın açılışı ile gönderilir.
Bununla beraber, zaman zaman bar kapanışını beklemek istemeyen kullanıcılarımız olmaktadır.
Bu mümkündür.
Veri terminali isimli ürünümüzde, emir bağlarken, geçici sinyallerde emir gönder seçenekleri vardır.
Linkteki dokümanda tüm detayları bulabilirsiniz:
https://www.matriksdata.com/website/bireysel-urunler/matriks-veri-terminali/dokumanlar/matriks-veri-terminali-otomatik-emir-gonderimi-dokumani
MatriksIQ ürünümüzde ise, kodun içinde yer alan şu satır, emrin bar kapanışından sonra gönderilmesini sağlar:
WorkWithPermanentSignal(true);
Bu satır ile stratejinin kalıcı sinyalde çalışması kodlanmış olur.
Bu satırı kaldırırsak, ya da oradaki true ifadesini false yaparsak, stratejimiz artık, geçici sinyal geldiği anda ilgili emri gönderecektir.
Geçici Sinyal ne demektir:
Veri terminali ürünümüzü kullanmış iseniz, bu konuda bilgi edinmiş olabilirsiniz.
O tarafta sinyalleri, oluşma esnasında da grafik üzerinde görebildiğimiz için, bu kavramı anlatmak biraz daha kolay olacaktır.
Aşağıdaki resim, veri terminali ürünümüzden alınmadır:
Grafikte çalışan stratejinin koşulu, yeşil çizgi kırmızının üstüne çıkarsa AL, altına inerse SAT işlevini içermektedir.
Yeşil çizgi kırmızının üstüne çıkmış ve içi boş yeşil kutucuk geçici AL sinyalini işaret ediyor.
Lütfen, saate dikkat ediniz. Çünkü, biraz sonra, geçici sinyalin bir riskinden bahsederken, gündeme gelecek.
İlk aşamada şuna dikkat edelim:
Bir önceki barda, yeşil çizgi kırmızının altında. Ortada bir sinyal yok. Bu barda yeşil üste çıktı ve geçici olarak sinyal oluştu.
Bar kapandığında, yeşil üstte kalmış olur ise, kalıcı sinyal oluşmuş olacak ve sonraki barın açılışı ile emir gönderilecek.
Eğer, geçici sinyal oluştuğu anda emir gönderilsin isterseniz, yani yukarıda bahsettiğimiz true ifadesini false yaparsanız, yeşil çizgi kırmızının üstüne çıktığı ilk anda emriniz gönderilir.
Bu bize ne sağlar:
Özellikle grafik periyodumuz büyük ise, bar kapanıp sinyal kesinleşene kadar, fiyat oldukça yukarı / aşağı gidebilir.
Eğer, sinyal kalıcıya dönüşecek ise, muhtemelen ( tabii ki her zaman öyle olmayabilir) sinyal ilk geldiği anda alış ya da satış yapmak, bar kapanışını beklemeye göre daha avantajlı olacaktır.
Bu geçici sinyal kullanmanın muhtemel avantajıdır.
Tabii ki, sinyal kalıcıya dönerse. Yani kaybolmazsa.
Şimdi geçici sinyal kullanmanın risklerine bakalım:
Geçici Sinyal Riskleri 1
Aşağıdaki resme bakınız.
Saate dikkat ediniz. Bir önceki resimde geçici sinyal oluşmuştu. Fakat ilerleyen süreçte, bar kapanmadan önce fiyat geri gitti ve geçici sinyal kayboldu.
İlk risk budur. Siz aldınız. Ve fiyat geri gitti. Bu önemli değil aslında. Kalıcıya dönüşünce alsanız da olabilirdi.
Asıl risk ise şudur: Yukarıya dikkat ediniz. Son sinyal sat durumunda, ama siz almış durumdasınız. Bu halde kalır ise ekstra bir risk var.
Fiyat düştüğü sürece, siz AL pozisyonunda kalacaksınız. Geçici sinyal ile aldınız çünkü. Ve sistem bir daha AL vermeden, SAT vermeyecek.
Bu çok önemli, üzerinde düşünün lütfen.
Yani, basitçe tam olarak TERSTE kalmış durumdasınız.
Sinyal kalıcıya dönmüş olsa idi ve almış olsaydınız, fiyat aşağıya düşmeye başlarsa, bir yerde sisteminiz sat verecek ve zararınızı sınırlayacaktı.
Şu durumda ise böyle bir seçenek yok.
Buna karşı yapılabilecekler:
Veri terminali ürünümüzde yapabilecekleriniz şunlardır:
Zarar stopu koymak.
Manuel olarak müdahale etmek.
Simulasyonu yeniden hesapla yaparsanız. Kalıcıya dönüşmeyen sinyalden gelen emir kaybolacaktır. Pozisyonunuzu da manuel olarak sistem ile aynı duruma getirirseniz, stratejiniz normal seyrine dönecektir.
IQ isimli ürünümüzde:
Stop koymak.
Kodun içine şu eklemeyi yapmak:
Geçici sinyal ile pozisyona girdi. Ama sinyal kalıcıya dönmedi ise, bunu kontrol edip, bar kapandığında pozisyonu kapatacak bir kod eklemek.
Dokümanın sonunda, örnek bir kodlama göreceksiniz.
Geçici Sinyal Riskleri 2
Bir çok strateji, 2 tane çizginin kesişmesine göre sinyal verir.
Siz emirleri sıralı gönder seçseniz bile, bazen öyle denk gelir ki, 2 çizgi sürekli aşağı yukarı kesişme yaşar.
Ve, eğer siz geçici sinyallerde emir gönder seçmiş iseniz, inanılmaz çok sayıda emir gönderimi ile karşı karşıya kalabilirsiniz.
Aşağıdaki resimde, bunun yaşanmış bir örneği vardır.
Dikkat ediniz, 2 saniyeden az bir sürede, 20 tane emir gönderilmiştir.
Bu, aynı zamanda programın ne kadar hızlı olabildiğini de göstermektedir bu arada :)
Bu riske karşı ne yapılabilir:
Veri terminalinde, bar içinde geçici sinyal ile gönderilebilecek emir sayısı ön tanımlı olarak sınırlıdır.
Ancak, bilerek isteyerek artırırsanız, artırılabilir.
IQ tarafında ise, tüm stratejiler için geçerli olarak kullanabileceğiniz emir gönderim sayısı sınırlamaları vardır.
Strateji çalıştırma dokümanında anlatılmıştır.
Her durumda, mutlaka sınırlar koymanızı zaten öneriyoruz.
Eğer, geçici sinyal kullanacaksanız, bu konuda biraz daha dikkatli olmanızda fayda vardır.
Bunun dışında yapabileceğiniz bir şey yoktur. Geçici sinyalin doğasında bu vardır.
DİKKAT: Geçici sinyal kullanacaksanız, emir sayısına mutlaka limit koyunuz. Yoksa, çok ağır zararlar yaşayabilirsiniz. .
**
EK BİLGİ: Zaman zaman soruluyor. Geçici sinyallere back test yapılamaz. Elimizde, sadece geçmiş bar dataların O/H/L/C verileri vardır. Bu sebeple, bar içi hareketlerin ölçülebilmesi söz konusu değildir. Bu ancak, tüm tick data geçmişini hafızada tutan ve tick datayı kullanarak back test yapabilen yapılarda mümkün olabilir. Mesela Finalgo isimli ürünümüzde. Merak edenler için, genel bir anlatımın olduğu link :
https://www.matriksdata.com/website/bireysel-urunler/AlgoritmikTradingProcessFlow
**
IQ için, geçici sinyal kalıcıya dönüşmediği takdirde pozisyonu kapatan örnek kod aşağıdadır :
bool bayrak=false;
/// <summary>
/// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir.
/// </summary>
/// <param name="barData">Bardata ve hesaplanan gerçekleşen işleme ait detaylar</param>
public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
{
if(barDataCurrentValues.LastUpdate.IsNewBar){
if (!CrossAbove(most.ExMOV, most) && bayrak){
SendMarketOrder(Symbol, BuyOrderQuantity, (OrderSide.Sell));
Debug("Geçici sinyaldeki alış emri kalıcıya dönüşmediğinde satış emri verildi.");
}
bayrak=false;
}
if (CrossAbove(most.ExMOV, most))
{
SendMarketOrder(Symbol, BuyOrderQuantity, (OrderSide.Buy));
Debug("Geçici sinyalde alış emri verildi.");
bayrak=true;
}
if (CrossBelow(most.ExMOV, most))
{
SendMarketOrder(Symbol, SellOrderQuantity, (OrderSide.Sell));
Debug("Geçici sinyalde satış emri verildi.");
}
}
Hayırlı Kazançlar Dileriz.