ETHUSDT üzerine bir TradingView Fikri olarak yayımlandı. Grafiği TradingView'de görüntüle
Bir göstergeyi geriye dönük test etmek için Python'a taşıdıysanız ya da bir betiğe doğrulamayla geldiği için güvendiyseniz, burada konu o iki şeyin açık bıraktığı boşluk.
Üzerlerinde geriye dönük test koşabilmek için kendi göstergelerimizden üçünü yeniden yazdık. Üç yeniden yazımın da içinde yanlış bir sabit vardı. Üçü de doğrulamasını geçti. Hiçbiri bir teste yakalanmadı.
Bir göstergeyi neden yeniden yazalım ki
Bir Pine betiği grafiğinizde çalışır. Altı yıllık geçmişi bir döngüde baştan sona koşmaz ve bir sinyalin gerçekten kazandırıp kazandırmadığını yanıtlamaz. Bunu sormak için onu binlerce kez çalıştırabileceğiniz bir şeyde yeniden yazarsınız.
Bir göstergenin sessizce aynı gösterge olmaktan çıktığı yer, işte o yeniden yazımdır.
En pahalıya patlayan hata, üstelik tek bir mum
Volume Oracle içindeki uzunluklardan biri zaman diliminden türetilir:
target bars = 36 hours × 60 / 240 minutes = 9
regime length = round(9 × 2.5) = round(22.5)
Pine'ın math.round işlevi eşitlikleri sıfırdan uzağa çözer. Verdiği sonuç 23. Python 3'ün round() işlevi bankacı yuvarlaması kullanır, yani eşitlikleri çift sayıya doğru çözer. Verdiği sonuç 22.
İkisi de yuvarlamanın doğru uygulamalarıdır. Yalnızca farklı uzlaşımlardır ve birinden diğerine geçtiğinizi size hiçbir şey haber vermez.
O sayıdan türeyen her geriye bakış onunla birlikte kaydı. 36 sinyallik bir taramanın en iyi desteklenen satırındaki sonuç:
| sürüm | 48 saatlik avantaj | isabet oranı | n |
|---|---|---|---|
| yeniden yazım, uzunluk 22 | +%0,423 | 51 | 1216 |
| doğru sürüm, uzunluk 23 | +%0,260 | 50 | 1223 |
Bir yuvarlama uzlaşımı yüzünden %38 kesinti.
Sonra dersi de yanlış kaydettik
Yazdığımız notta yalnızca 4H'de olduğu yazıyordu. O sırada test altında bulunan tek zaman diliminden yazılmıştı ve iki ay boyunca öyle kaldı.
Aynı aritmetiği her zaman diliminde koşturunca:
| zaman dilimi | rejim uzunluğu | akış uzunluğu | sonuç |
|---|---|---|---|
| 5m | 45 ile 45 | 23 ile 22 | ayrışır |
| 2H | 45 ile 45 | 23 ile 22 | ayrışır |
| 4H | 23 ile 22 | 12 ile 11 | ayrışır |
| 8H | 53 ile 52 | 27 ile 26 | ayrışır |
| 1D | 18 ile 18 | 9 ile 9 | eşitlik, uyuşur |
| 3D, 1W | 15 ile 15 | 8 ile 8 | eşitlik, uyuşur |
On altıda dört, bir değil.
O tablodan, hiçbir akıl yürütmenin üretmediği iki şey düşüyor.
Eşitlik yeterli değildir. 1D, 3D ve 1W'nin hepsi tam olarak ,5 üzerine düşer ve uyuşur. Bankacı yuvarlaması yalnızca yukarı yuvarlanmış yanıtı tek sayı olan bir eşitliği kaydırır, dolayısıyla round(17.5) her hâlükârda 18'dir. Tüm eşitliklerin kabaca yarısı zararsızdır ve tam da bu yüzden birini örnekleme yoluyla denetlemek hiçbir şey kanıtlamaz.
Ayrışma bir adım geç gelebilir. 5m ve 2H'de ilk uzunluk 45'te uyuşur. Sonraki satır, round(45 × 0.5), yine 22,5 eder ve asıl ayrışan odur. İlk sabiti denetleyip yolunuza devam ederseniz, iki zaman dilimini de haksız yere temize çıkarırsınız.
Diğer ikisi, kısaca
Harmonic bir osilatörü kayan bir banda kırparak normalleştirir. Kaynakta her mum kendi bandıyla kırpılır. Yeniden yazım, 200 mumluk bütün bir pencereyi geçerli mumun bandını kullanarak kırpıyordu ki bu başka bir işlevdir. 11.497 mum boyunca ölçülen fark: ortalama 0,47 puan. Maddi etkisi olmayan, gerçek bir aktarım hatası.
Üstelik bunu ölçmeden önce şişirdik. Yalnızca kodu okuyarak, neredeyse kesinlikle %9'luk sapma olduğu duyurulmuştu. Sayı 0,47 çıktı. Gerçek bir hata ile maddi bir hata farklı iddialardır ve etkiye ad verilmeden önce büyüklük ölçülür.
Plutus Flow sıçramaları bulmak için hacmi 50 mum boyunca ortalar. Yeniden yazım 20 kullandı, çünkü bildiğimizi sandığımız sayı buydu. Etki: yüzde puanın onda birinden az, işaret değişimi yok. Hüküm kıpırdamadı, ama sayı yanlıştı ve artık doğru; önemli olan tek ölçüt de bu.
Asıl ders olan kısım
Her yeniden yazımın doğrulaması o sırada şunu bildirdi.
| yeniden yazım | kendi denetimi | bunun anlamı |
|---|---|---|
| Volume Oracle | öncesinde 3/3, sonrasında 3/3 | ikisini ayırt edemedi |
| Harmonic | öncesinde 6/8, sonrasında 5/8 | hatalı sürüme daha yüksek puan verdi |
| Plutus Flow | hiç çalıştırılmadı | — |
Üzerinde durulması gereken orta satır. Doğrulama yanlış kodu yeğledi. Kararı denetime bıraksaydık, bizi gerekçelerle hatanın içine geri döndürürdü.
Tek bir çıktı değerini karşılaştıran bir doğrulama, yanlış bir girdi sabitini saptayamaz. Çıktı fazlasıyla kaba bir elektir. Birbirinden farklı pek çok yanlış parametre kümesi bugün aynı rejim etiketini, aynı kesişme durumunu, grafikte aynı rengi üretir. Ayrıldıkları yer, şu anda bakmadığınız mumlardır; geriye dönük testin yaşadığı yer de tam olarak orasıdır.
Bunun yerine ne yapmalı
Türetilmiş her parametreyi yazdırın. Her uzunluğu, her eşiği, her çarpanı. Herhangi bir şeye not vermeden önce bunları kaynakla satır satır karşılaştırın.
Çıktı denetimini koruyun. Başka bir hata sınıfını yakalar ve gereklidir. Yalnızca yeterli olmaktan çok uzaktır ve bu üçü de önünden rahatça geçip gitti.
Dürüst kapsam
Pine kodu üç durumda da doğruydu. Yanlış olan, onu sınamak için kurulan düzenekti; bu da sorunun daha rahatsız edici hâlidir: ölçüm aleti kaydı ve aletin kendi öz denetimi kaymadığını söyledi.
%38 rakamı tek bir satır, tek bir tarama, tek bir zaman dilimi ve örneklem içidir; yeniden koşulmak yerine kendi kaydımızdan alıntılanmıştır. Yuvarlama sonucu tek bir komutla yeniden üretilebilir ve onu düzeltmek, konuyla ilgili kendi notumuzun iki aydır yanlış olduğunu ortaya çıkardı.
ETHUSDT üzerine bir TradingView Fikri olarak yayımlandı. Grafiği TradingView'de görüntüle
Kendi araçlarımıza ait geçmiş bir ölçüm, olaydan sonra anlatılmıştır. Buradaki hiçbir şey bir tavsiye ya da gelecekteki sonuçların göstergesi değildir.