Risk
9 işlev. Her kaydın ne aldığı, ne verdiği ve çalışan örneği.
İşlem komisyonu. tip="percent" (varsayılan): değer = yüzde × işlem büyüklüğü. tip="cash_per_order": değer = sabit nakit / emir. tip="cash_per_contract": değer = nakit / kontrat. Backtest maliyetini belirler (varsayılan %0.04).
Değer döndürmez; geri-test komisyon oranını bu değere ayarlar.
Not
Giriş ve çıkışın her birine ayrı uygulanır. "percent" değeri işlem büyüklüğünün yüzdesidir; "cash_per_order" her emir için sabit nakit tutar; "cash_per_contract" kontrat (adet) başına nakit tutardır. Sonuçları gerçekçi kılmak için gerçek işlem maliyetine yakın bir değer verin.
commission(0.1) enterLong(crossover(close, sma(close, 20))) exit(crossunder(close, sma(close, 20))) plot(close)
İşlem başına %0.1 komisyonla basit bir kesişim stratejisini geri-test eder.
commission(2, "cash_per_order") enterLong(crossover(close, sma(close, 20))) exit(crossunder(close, sma(close, 20))) plot(close)
Her emir için sabit 2 birim nakit komisyon (yüzde değil) — düz-ücretli aracı kurum modeli.
Başlangıç sermayesi (equity ölçeği; varsayılan 10000). Argümansız çağrılırsa AYARLAMAZ, o anki başlangıç sermayesini OKUR.
Değer döndürmez; geri-testin başlangıç sermayesini (equity ölçeği) ayarlar.
Not
Getiri eğrisinin ve mutlak kâr/zarar rakamlarının ölçeğini belirler; yüzde sonuçları etkilemez.
initialCapital(100000) enterLong(crossover(close, sma(close, 20))) exit(crossunder(close, sma(close, 20))) plot(close)
100000 başlangıç sermayesiyle stratejiyi geri-test eder.
İZOLATED marj: her işlem equity'nin marginPct% kadarını marj kullanır; likidasyon YALNIZ o marjı götürür (hesabın tamamını değil). Riski sınırlar — avantaj YARATMAZ. Takma-adlar (adlandırılmış argüman): leverage yerine kaldirac veya lev, marginPct yerine marjYuzde de kullanılabilir (örn. isolated(kaldirac=10, marjYuzde=20) — leverage/marginPct ile birebir aynı sonucu verir). marginPct verilmezse varsayılan 100 (marjın tamamı equity'nin tamamı kadar; referans dil v6 margin_long/short ile aynı).
Değer döndürmez; izole marj modunu ayarlar.
Not
Likidasyon yalnızca ayrılan marjı götürür, hesabın tamamını değil. Riski sınırlar; tek başına avantaj yaratmaz.
isolated(10, 20)
Pozisyonu ayrık marj kipine alır ve kaldıracı belirler; zarar yalnız bu pozisyona ayrılan parayla sınırlı kalır, hesabın kalanına dokunmaz.
leverage(leverage, short_leverage?)
Futures kaldıracı (CROSS): getiri ve maliyet × x. DİKKAT: likidasyon tek kötü mumda hesabın TAMAMINI sıfırlar. Meşru yol: doğrulanmış avantaja ÖLÇÜLÜ kaldıraç. İkinci argüman verilirse short pozisyonlar için AYRI kaldıraç kullanılır (verilmezse iki yön de aynı).
Değer döndürmez; futures (cross) kaldıracını ayarlar.
Not
Getiri ve maliyet x ile çarpılır. Uyarı: likidasyon tek kötü barda hesabın tamamını sıfırlayabilir; doğrulanmış bir kurguda ölçülü kullanın.
leverage(3)
İşlemlerin kaldıracını üçe ayarlar; aynı parayla üç katı büyüklükte pozisyon açılır, kâr da zarar da üç katına çıkar.
Drawdown %pct'i aşınca yeni pozisyon açılmaz (koruma).
Değer döndürmez; düşüş bu yüzdeyi aşınca yeni pozisyon açılmasını durdurur.
Not
Bir koruma kapısıdır: tepe equity'den düşüş sınırı aşıldığında yeni giriş engellenir. Açık pozisyonu kapatmaz, yalnız yeni riski durdurur.
maxDrawdown(20) enterLong(crossover(close, sma(close, 20))) exit(crossunder(close, sma(close, 20))) plot(close)
Düşüş %20'yi aşınca yeni giriş almayan bir koruma ile stratejiyi geri-test eder.
Aynı yönde en çok n giriş (şu an kayıtlı; çok-giriş sistemi sonraki faz).
Değer döndürmez; çok-giriş parçasılı giriş tavanını ayarlar.
Not
Varsayılan 1 (tek giriş parçası). n>1 iken aynı yönde tekrar giriş sinyali yeni giriş parçası ekler; tavan dolunca eklenmez.
Ne zaman kullanılır
Kademeli/ölçekli giriş (piramitleme) stratejileri için.
Sınırlar
Bu fazda kaldıraç (lev>1) ve ATR-stop ile çok-giriş parçası desteklenmez. Kısmi kapatılmış pozisyona giriş parçası eklenemez.
pyramiding(3) enterLong(rsi(close,14) < 40, id='L') exit(rsi(close,14) > 60)
RSI zayıfken 3 giriş parçasına kadar kademeli alım; positionSize +1→+2→+3.
pyramiding(2) enterLong(crossover(close, sma(close,10))) exit(crossunder(close, sma(close,10)))
Aynı trendde ikinci kesişimde ikinci giriş parçası eklenir (en fazla 2).
Her işlemde sabit nakit tutarı kullan (adet = tutar / fiyat). Boyutlandırma %equity yerine nakit-bazlıya geçer. Adlandırılmış argüman olarak `cash` de kullanılabilir (tutar ile birebir aynı).
Değer döndürmez. Çağrıldığında boyutlandırma varsayılan %equity yerine nakit-bazlıya geçer; alınan adet = tutar / fiyat.
Not
Hiç çağrılmazsa varsayılan %equity boyutlandırması korunur. defaultEntryQty sabit adet alır; sizeByCash ise sabit tutarı fiyata bölerek adedi belirler. Teminat yetersizse işlem açılmaz.
sizeByCash(1000) enterLong(crossover(close, sma(close, 20))) exit(crossunder(close, sma(close, 20))) plot(close)
Her işlemde 1000 birim nakit kullanır (adet = 1000 / fiyat).
Her işlemde equity'nin %pct'i kullanılır (P&L etkisi ölçeklenir).
Değer döndürmez; pozisyon büyüklüğünü equity'nin bu oranına bağlar.
Not
Değer 0-100 arasına sıkıştırılır. Sabit lot yerine hesabın belirli bir yüzdesiyle işlem açmak için — kâr/zarar bu orana göre ölçeklenir.
sizeByEquity(50) enterLong(crossover(close, sma(close, 20))) exit(crossunder(close, sma(close, 20))) plot(close)
Her işlemde equity'nin %50'sini kullanacak şekilde stratejiyi geri-test eder.
Kayma (tek yön %). Komisyona eklenir (varsayılan 0).
Değer döndürmez; kaymayı bu değere ayarlar (işlem maliyetine eklenir).
Not
Emrin beklenen fiyattan biraz kötü dolmasını taklit eder. Az likit ya da hızlı piyasalarda sonuçları daha gerçekçi kılar.
slippage(0.05) enterLong(crossover(close, sma(close, 20))) exit(crossunder(close, sma(close, 20))) plot(close)
İşlem başına %0.05 kaymayla stratejiyi geri-test eder.