Hatalar, hatalar, sorular - sayfa 2319

 
Merhaba! Fiyatın yanlış görüntülenmesiyle ilgili hatayı nasıl düzelteceğimi söyle? Tüm göstergeler yıkılır. euro
 
Slava :

Sembol ayarları, grafikler değil.

Piyasa saatinde, sembolün içerik menüsünde "sembol spesifikasyonu"nu seçin

 
Igor Semyonov :

Teşekkür ederim.

Lütfen problemin başlangıcından itibaren terminal günlüklerini gösterin

 
Slava :

Teşekkür ederim.

Lütfen problemin başlangıcından itibaren terminal günlüklerini gösterin

Özel mesajla gönderilen günlük dosyası .

 
Igor Semyonov :

Özel mesajla gönderilen günlük dosyası .

Evet teşekkür ederim.

Kayıtlara göre her şey temiz.

Anlattığınız durumun devam edip etmediğini söyleyebilir misiniz?

 

DoubleToString içermeyen birim (Volume, 2). Ekranda EURUSD.

 
Slava :

Evet teşekkür ederim.

Kayıtlara göre her şey temiz.

Anlattığınız durumun devam edip etmediğini söyleyebilir misiniz?

Terminali yeniden başlattıktan sonra, şimdiye kadar her şey yolunda.

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

pantural , 2018.11.01 16:03

Merhaba sevgili MT geliştiricileri, Sharpe oranını hesaplamak için algoritmadaki bir hatayı bildirmek istiyorum. Uygulamada, rapor uv. Sayın Aleksey Vyazmikin burada SR=0.29, ancak benim hesaplamalarıma göre yaklaşık 3.7-3.8 (sıfır PnL'nin dikkate alınıp alınmamasına bağlı olarak) hatanın standart sapma için bir ölçekleme faktörünün yokluğunda olduğunu varsayıyorum. (sqrt(uzunluk)) serisi, yakınsar ve standart sapma sqrt(uzunluk) olarak büyür

C++

double SharpRatio(vector<double> pnl)

{

double avret = 0;

for (int i = 0; i < pnl.size(); ++i) avret += pnl[i];

avret /= pnl.size();


double var = 0;

for (int i = 0; i < pnl.size(); ++i) var += pow(pnl[i] - avret, 2);

var = sqrt(var / pnl.size()) / sqrt(pnl.size());


return  avret / var;

}

İki özdeş araç alın. Onları aynı anda başlattı. Bir gün sonra ikisi de pnl dizisini gösterdi. Birincisi durduruldu, ikincisi durdurulmadı. Bir gün sonra, ikincisi tamamen aynı pnl'yi gösterdi.

Onlar. ilk pnl[] ve ikinci pnl[]+pnl[]. Onlar. ikinci gün ticareti ilk günle aynıydı.


Ardından, önerilen formüle göre, ikinci TS'nin Sharpe oranı, sqrt(2)'de (ikinin kökü) birincisinden daha az olacaktır. Ama aynı şekilde ticaret yaptılar!

 
fxsaber :

İki özdeş araç alın. Onları aynı anda başlattı. Bir gün sonra ikisi de pnl dizisini gösterdi. Birincisi durduruldu, ikincisi durdurulmadı. Bir gün sonra, ikincisi tamamen aynı pnl'yi gösterdi.

Onlar. ilk pnl[] ve ikinci pnl[]+pnl[]. Onlar. ikinci gün ticareti ilk günle aynıydı.


Ardından, önerilen formüle göre, ikinci TS'nin Sharpe oranı, sqrt(2)'de (ikinin kökü) birincisinden daha az olacaktır. Ama aynı şekilde ticaret yaptılar!

Şaka nasıl? "Küçükken öldürülmeleri gerekiyor."

Peki, ekli dosyadan bir örneğe bakalım . Ve sonra teoride, ellerinizle hissedene kadar her şey korkutucu görünüyor.

Bu dosyada Sharp'ın 0.29 olduğu ortaya çıkan 144 işlem var (sitede 2 ondalık basamak doğruluğu ile gösteriliyor ve bu normal - kimsenin 5 ondalık basamağa ihtiyacı yok, bu durumda 2 ondalık basamak var iki stratejinin karşılaştırılması için yeterlidir).

Sharpe, bir K/STD oranı olarak hesaplanır, burada:

  • K - ticaret geçmişi için ortalama büyüme oranı
  • STD , ticaret geçmişi üzerindeki kazançların standart sapmasıdır.

Önceki işlemlerin bir kopyası olan iki kat daha fazla işlem yapalım. Bu, şimdi 288 = 144*2 işlem olduğu anlamına gelir. Bu durumda K değişmez. Bu, Sharpe değişikliğinin yalnızca STD değişikliği nedeniyle gerçekleşebileceği anlamına gelir.

Başlangıç STD=MathSqrt(X2/(n-1)), burada:

  • X2 - ortalama X_aver'dan sapmaların karelerinin toplamı
  • n - teid sayısı == 144

Yani Sharpe=MathSqrt(X2/(144-1)) = MathSqrt(X2/143)

İki kat daha fazla işlemimiz var, bu nedenle iki kat daha büyük bir geçmiş için yeni Sharpe şu şekilde hesaplanır:

SharpeNew= MathSqrt (X2_new/( 2 * 144 - 1 ))

burada X2_new=2*X2. Yani SharpeNew/Sharp oranı = MathSqrt(X2/(144-1)) / MathSqrt(X2_new/(2*144-1)) =

 MathSqrt (X2/( 144 - 1 ))  / MathSqrt (2* X2/( 2 * 144 - 1 )) =  MathSqrt (X2/( 143 ))  / MathSqrt (2* X2/( 283 ))= MathSqrt (X2*283/(2* 143*X2 ))= MathSqrt (283/286)= 0.994741 

Paydayı pay ile karıştırsam bile SharpeNew 0.29 2919 - 0.29 6025 aralığında olacaktır. Yani fark üçüncü hanede bir yerde olacaktır.

Ama 10-20 kez değil. Nerede yanlış yaptığımı kendin kontrol et.

 
Rashid Umarov :

Şaka nasıl? "Küçükken öldürülmeleri gerekiyor."

Sen beni anlamadın.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2018.11.06 13:23

Daha sonra , önerilen formüle göre, ikinci TS'nin Sharpe oranı , sqrt(2)'de (ikinin kökü) birincininkinden daha az olacaktır. Ama aynı şekilde ticaret yaptılar!


Bir C++'dan alıntılanan formül şu anlama geliyordu.


ZY Ve MT'de kullanılan formülde tabii ki birim alınmayacaktı. O zaman önerilen örnek, 144 boyunca kaç tane aralık gözlenirse gözlemlensin, Sharpe her zaman çakışacaktır.