Strateji özellikleri
Her Pine stratejisi, davranışını belirleyen bir dizi özelliğe sahiptir:
- Başlangıç Sermayesi
- Temel Para Birimi
- Sipariş Boyutu
- Piramitleme
- Komisyon
- Limit Emirleri İçin Fiyat Doğrulama
- Kayma
- Marj
- Yeniden hesapla
- Siparişleri doldur
Bunlar strateji ayarlarında, Özellikler sekmesinde mevcuttur:
Stratejinin özelliklerinde belirtilen parametrelerin her biri, ilgili Pine komut dosyasındaki strategy() işlev çağrısının bağımsız değişkenleri düzenlenerek değiştirilebilir:
strategy(title, initial_capital, currency, default_qty_value, default_qty_type, pyramiding, commission_type, commission_value, backtest_fill_limits_assumption, slippage, process_orders_on_close, margin_long, margin_short, calc_on_order_fills, calc_on_every_tick, process_orders_on_close, use_bar_magnifier)
Özellikler menüsündeki her bir girdi parametresine ve Pine dilindeki karşılık gelen parametresine bir göz atalım:
1 - Başlangıç Sermayesi (parameter: initial_capital) Temel Para Birimi'nde tanımlanan para birimi cinsinden, stratejinin işlem yapması için başlangıçta mevcut olan fon miktarını temsil eder. Varsayılan olarak bu değer 1.000.000'a eşittir. İşlemlerin belirli sembollerde gerçekleşmesi için bu değeri artırmanız gerekebilir.
2 - Temel Para Birimi (parameter: currency) hesaplamalar için kullanılan para birimini belirtir. Strateji Test Cihazı sekmesinde görünen sonuçlar (kâr, zarar, düşüş vb.) bu para biriminde ifade edilir. Mevcut seçenekler şunlardır:
Varsayılan, USD, EUR, AUD, GBP, NZD, CAD, CHF, HKD, JPY, NOK, SEK, SGD, TRY, ZAR. Varsayılan seçim seçilirse, strateji bu sembol için varsayılan para birimini kullanır ve para birimi dönüştürme yoktur.
3 - Emir (sipariş) Boyutu (parametreler: default_qty_value, default_qty_type). Bu, bir değer ve bir hesaplama modu gerektirir. Hesaplanan değerlerin, sembol için minimum takas edilebilir miktarlar nedeniyle kısıtlamalara tabi olabileceğini unutmayın:
- Sözleşmeler (bağımsız değişken: strategy.fixed) - strateji, belirtilen sayıda sözleşme / hisse / lot ile girecektir.
- Para birimindeki tutar (bağımsız değişken: strategy.cash) - strateji, temel para biriminde belirtilen tutarı girecektir.
- Öz sermaye yüzdesi (bağımsız değişken: strategy.percent_of_equity) - pozisyon büyüklükleri, işlem açıldığında mevcut öz sermayenin bir yüzdesi olarak hesaplanacaktır.
4 - Piramitleme (parametre: piramitleme) aynı yönde izin verilen maksimum ardışık giriş sayısını belirtir. Piramitleme devre dışı bırakıldığında, giriş koşulları karşılanmış olsa bile strateji yalnızca bir uzun veya kısa pozisyon açabilir. Piramitleme yalnızca strategy.entry() işlevi kullanılarak yapılan girişleri etkiler. Strategy.order() kullanılarak oluşturulan emirler üzerinde hiçbir etkisi yoktur.
5 - Komisyon (parametreler: komisyon_türü, komisyon_değeri). Her işlem için işlem ücreti olarak ödenen tutardır. Bir değer ve hesaplama modu sağlanmalıdır. Komisyonun hem girişlerde hem de çıkışlarda uygulandığını ve bir yüzde kullanıldığında, hesaplanan komisyonun işlemin değerine göre değişeceğini unutmayın:
- İşlem yapılan değerin yüzdesi (bağımsız değişken: strategy.commission.percent) - her siparişe belirtilen yüzdeye eşit bir komisyon uygular.
- Sözleşme başına para birimi (bağımsız değişken: strategy.commission.cash_per_contract) - her sözleşmeye bir komisyon uygular.
- Sipariş başına para birimi (bağımsız değişken: strategy.commission.cash_per_order) - her siparişe bir komisyon uygular.
6 - Limit Emirleri İçin Fiyat Doğrulama (parametre: backtest_fill_limits_assumption), limit emirlerini kullanarak pozisyon girme koşullarını daha katı hale getirir. Varsayılan olarak bu değer 0'dır, yani limit emirleri, emirde belirtilen fiyata ulaşılır ulaşılmaz geçmiş verilerde doldurulur. Parametre sıfır değilse, limit emirleri yalnızca piyasa fiyatı limit emri seviyesini belirtilen sayıda tik ile aştığında çubuk içinde bir pozisyona girebilir.
7 - Kayma (parametre: slippage) piyasa veya stop emirlerinin dolum fiyatına eklenecek değeri tik cinsinden belirtir. Spreadi hesaba katmak için kullanılabilir.
8 - Uzun/Kısa pozisyonlar için Marjin (parametreler: margin_long, margin_short) her bir işlem için marjini, yani yatırımcının fonlaması gereken pozisyon yüzdesini belirtir. Örneğin, uzun pozisyonlar için Marjin %25 olarak ayarlanırsa, yatırımcının açık işlemin %25'ini karşılayacak kadar fona sahip olması gerekir ve potansiyel olarak her işlem için öz sermayesinin %400'üne kadar harcama yapabilir. Bir işlem açılmışsa ve tüccarın fonlarının işlemin kendi payını karşılamaya yetmediği ölçüde para kaybetmeye başlarsa, bir Teminat Çağrısı gerçekleşir ve orijinal pozisyonun bir kısmını zorla tasfiye eder. Bu özellik ve nasıl hesaplandığı hakkında daha fazla bilgiyi bu Yardım Merkezi makalesinde bulabilirsiniz.
9 - Yeniden hesaplama seçenekleri, stratejinin ne sıklıkla yeniden hesaplanması gerektiğini belirtir. Varsayılan olarak, strateji her çubuğun kapanışında yeniden hesaplanır, ancak aşağıdaki seçenekler kullanılarak da yeniden hesaplanabilir:
- Emir Doldurulduktan Sonra (parametre: calc_on_order_fills) - stratejinin bir emir doldurulduktan hemen sonra ek bir çubuk içi emir hesaplaması yapmasına izin verir. Bu ekstra hesaplama hem tarihsel hem de gerçek zamanlı çubuklarda gerçekleşir.
- Her Tikte (parametre: calc_on_every_tick). Varsayılan olarak, stratejiler yalnızca gerçek zamanlı çubukların kapanışında hesaplanır. Bu parametre, stratejinin bir gösterge gibi gerçek zamanlı çubukların her güncellemesinde hesaplama yapmasına olanak tanır. Grafik yenilendiğinde tik verilerinin kaybolduğunu unutmayın, bu nedenle bu seçeneği kullanan stratejiler yeniden boyanacaktır (hesaplanacaktır). Bu parametre, stratejilerin geçmiş çubuklar üzerindeki davranışını etkilemez. Ayrıca, bu özelliği kullanan stratejilerin, tik verisi içermedikleri için geçmiş çubuklarda gerçekçi sonuçlar göstermeyeceğini unutmayın.
10 - Siparişleri doldur:
- Çubuk büyüteci kullanma (parametre: use_bar_magnifier) - daha gerçekçi sonuçlar elde etmek için Broker Emülatörünü geçmişe dönük test sırasında daha kesin, daha düşük zaman dilimi fiyatları kullanmaya yönlendirir. Yardım Merkezi'nde bu özellik hakkında daha fazla bilgi edinin.
- Çubuk kapanışında (parametre: process_orders_on_close). Doğruysa, strateji bir çubuk kapandıktan ve strateji hesaplamaları tamamlandıktan sonra emirleri yürütmek için ek bir girişim oluşturur. Emirler piyasa emri ise, broker emülatörü bunları bir sonraki barın açılışından önce gerçekleştirir. Emirler fiyata bağlıysa, yalnızca fiyat koşulları karşılandığında yerine getirilirler. Bu seçenek, emirleri oluşturuldukları anda gerçekleştirmek istiyorsanız kullanışlıdır: varsayılan olarak, emirler geçerli çubuğun Kapanışında oluşturulur ve bir sonraki çubuğun Açılışında gerçekleştirilir; bu ayar açıldığında, emrin oluşturulduğu aynı Kapanışta gerçekleştirilirler. Pozisyonun emrin oluşturulduğu aynı tikte girilmesinin yanıltıcı olabileceğini unutmayın çünkü gerçek ticarette bunu başarmak mümkün olmayacaktır.
- Standart OHLC'yi kullanmak (parametre: fill_orders_on_standard_ohlc), daha gerçekçi sonuçlar için Heikin Ashi grafiklerinde çalışan stratejileri gerçek OHLC fiyatlarını kullanarak emirleri doldurmaya zorlar. Varsayılan olarak, strateji komut dosyaları, grafik türünden bağımsız olarak grafiğin fiyatlarını kullanarak emirleri doldurur. Heikin Ashi grafikleri için bu ayar, gerçeklikle uyuşmayabilecek sentetik fiyatların kullanılmasını önler. Örneğin, günlük NASDAQ:AAPL Heikin Ashi grafiğine uyguladığımız bu strateji, 2023-09-25 tarihinde 175,61 USD'lik sentetik bir fiyattan bir emri doldurdu. Ancak, "Standart OHLC kullanma" seçeneğini etkinleştirdikten sonra, aynı emir standart grafik fiyatı olan 174,20 USD'den dolduruldu.