Stokastik gösterge. Meraklı gözlem.

 

Bence - Stokastik, otomatik ticaret için oldukça umut verici bir göstergedir.

Ama her şeyin o kadar basit olmadığı ortaya çıktı! Pratik ve beceri için aceleyle en basit (kelimenin tam anlamıyla bir düzine satır) Stokastik Uzman Danışmanı yarattım. "Aşırılık" yok.

Giriş - sinyal hattının ana hattını geçmek. Sırasıyla:

 int start ()
  {
 
 
double StochK_0 = iStochastic ( NULL , 0 , K_period , D_period , 3 , MODE_SMA , 0 , MODE_MAIN , 0 ) ;
double StochK_1 = iStochastic ( NULL , 0 , K_period , D_period , 3 , MODE_SMA , 0 , MODE_MAIN , 1 ) ;
 
double StochD_0 = iStochastic ( NULL , 0 , K_period , D_period , 3 , MODE_SMA , 0 , MODE_PLUSDI , 0 ) ;
 
 
//===== Ищем возможность войти в рынок ==================================================
 
int Orders = OrdersTotal () ;     //получаем кол-во открытых ордеров
if ( Orders == 0 )                 //если нет открытых ордеров
  {  
//---------проверяем условие на покупку----------------------------
  if   (  ( StochK_1 < StochD_0 )  &&
          ( StochK_0 > StochD_0 )  )
   {
  ticket = ... ...          
   }
 
//--------проверяем условие на продажу------------------------------
  if  (   ( StochK_1 > StochD_0 )  &&
          ( StochK_0 < StochD_0 )) 
   {       
  ticket =... ...       
   }

Sonra onu gözle optimize ettim ve bir buçuk yıl boyunca test cihazında kullandım. Ve burada keşfedildi, daha doğrusu uzun süredir devam eden gözlemim doğrulandı! Stokastik hiç simetrik bir gösterge değildir. Birçok insanın düşündüğü gibi. Göstergenin dinamik aralığı yapısı gereği fiyat hareketlerini farklı şekillerde yukarı ve aşağı gösterir!

Bu nedenle manuel ve otomatik ile birlikteyiz. SATIŞ pozisyonu açarken alım satım yaparken bazen başlangıçta dezavantajlı duruma geliriz.

Sembol GBPUSD (Büyük Britanya Poundu vs ABD Doları) Dönem 4 Saat (H4) (2006.01.01 - 2007.08.31)

Model Tüm keneler (her kenenin fraktal enterpolasyonu ile mevcut en küçük tüm periyotlara dayalı olarak)

Simülasyon kalitesi %90.00 İlk para yatırma 10000.00

Net kar 3667,00

Toplam kar 9801.02

Toplam zarar -6134.02 Kar 1.60

Beklenen kazanç 13,94 Mutlak düşüş 202.02 Maksimum düşüş 438,24 (%3,25) Göreceli düşüş %3,25 (438,24)

Toplam işlem 263

Kısa pozisyonlar (% kazandı) 134 (%51,49)

Uzun pozisyonlar (% kazandı) 129 (%67,44)

Karlı işlemler (tümünün yüzdesi) 156 (%59,32)

İşlemleri kaybetme (tümünün yüzdesi) 107 (%40,68)

En büyük karlı ticaret 130,00

ticaret kaybetmek -60.56

Ortalama kazanan ticaret 62.83

ticaret kaybetmek -57.33

Herhangi bir düzen, seçenek ve parametre ile, göstergeyi çeşitli çiftler için kullanırken uzun işlemlerin kısa olanlardan daha umut verici olduğu her zaman ortaya çıkıyor.

Her zaman uzun olanlardan karlı işlemlerin sayısının% 80'e kadar olduğu ortaya çıkıyor.

Ve kısa olanlardan - en iyi ihtimalle - %50/55.

Üstelik bu hem sinyal hattındaki girişlerde hem de aşırı alım/aşırı satım seviyelerinde ve hatta iOnArray'de bile...

Sonuç - Stokastik kullanırken, alım ve satımda parametreleri ayrı ayrı ayarlamalısınız. ONLAR. iki gösterge kullanın.

 

Stokastik, özellikle değerler daha yüksek zaman dilimlerinden alınmışsa, değerlerini geriye dönük olarak değiştirmek için iğrenç bir özelliğe sahiptir.

Bu sorun olmasaydı, daha iyi bir gösterge bulmak zor olurdu!

Ve daha özensiz bir gösterge bulmak zor!

 
Aleksey24 :

Stokastik, özellikle değerler daha yüksek zaman dilimlerinden alınmışsa, değerlerini geriye dönük olarak değiştirmek için iğrenç bir özelliğe sahiptir.

Bu sorun olmasaydı, daha iyi bir gösterge bulmak zor olurdu!


Ne saçmalık. Böyle bir stokastiği nerede gördünüz?
 
leonid553 :

Stokastik hiç simetrik bir gösterge değildir. Birçok insanın düşündüğü gibi. Göstergenin dinamik aralığı yapısı gereği fiyat hareketlerini farklı şekillerde yukarı ve aşağı gösterir!

Ayrıca aynı sonuca. Stokastik formülü biliyor musunuz?
 

Değil. 99/1.

Tam stokastik kodun şu adreste mevcut olduğunu biliyor muydunuz: 'Stokastik Osilatör, Stokastik'

Parmağınızı, aşağıdakilerden dolayı suçlu olan kodda bir yere işaret etmenizi zorlaştırır mı:

- "SATIŞ pozisyonu açarken bazen başlangıçta dezavantajlı hale geliriz"?

- "Stokastik, değerlerini geriye dönük olarak değiştirmek için iğrenç bir özelliğe sahip"?

 

İşte hepiniz için stokastik asimetrisinin açık bir kanıtı.

Göstergede asılı olan kanal altta sürekli daralır, üstte genişler. Yoksa buradaki formülü sayılarla sıkıcı bir şekilde sökmeniz mi gerekiyor?

 

Stokastik formüle yüzeysel olarak bakarsanız, o zaman şimdiden yüksek bir olasılıkla asimetrinin "suçlusunun" göstergenin tek kutupluluğu olduğunu varsayabilirsiniz!

Ve “geriye dönük olarak değerlerdeki” değişiklik hakkında hiçbir şey söyleyemem. karşılaşmadı.

 

Ve "ayna" formülü ne verecek?

%K = 100*TOPLA (MAKS (YÜKSEK, Pk)-KAPALI), Sk) / TOPLA (MAKS (YÜKSEK, Pk) - MİN (DÜŞÜK, Pk)), Sk)

 

Hemen söylemek zor. Ayna göstergesinin kodunu yazmak gerekir. Yapılandırmalarını grafikte karşılaştırın.

Otomatik ticaret için, görüntüdeki herhangi bir fark önemli olacaktır. Bai'ye girmek için normal bir hindide. Aynada - Hücrede.

 

İyi kaynak kodları mevcuttur, değiştirilmesi kolaydır. Sadece algı için teoride daha doğal olacak

%K = 100*(1-TOPLA (MAKS (YÜKSEK, Pk)-KAPALI), Sk) / TOPLA (MAKS (YÜKSEK, Pk) - MİN (DÜŞÜK, Pk)), Sk))

 
leonid553 :

Stokastik formüle yüzeysel olarak bakarsanız, o zaman şimdiden yüksek bir olasılıkla asimetrinin "suçlusunun" göstergenin tek kutupluluğu olduğunu varsayabilirsiniz!

Ve “geriye dönük olarak değerlerdeki” değişiklik hakkında hiçbir şey söyleyemem. karşılaşmadı.

Göstergenin tek kutupluluğu - düzeltilebilir:
- standart göstergede
 iStochastic
Bid tarafından oluşturulan Yüksek ve Kapanış kullanılır - bütün mesele bu. En büyük hata bu!!! Özellikle Stokastik için!!! Ve özellikle kısa süreler için!
Ben bir programcı değilim, kesinlikle yargılama, standart stokastiği kendim için sonlandırdım. Doğru çalışır:
 //+------------------------------------------------------------------+
//| $Stochastic. mq4 |
//| Vladimir |
//+------------------------------------------------------------------+
 
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_level1 80
#property indicator_level2 50
#property indicator_level3 20
 
#property indicator_buffers 2
#property indicator_color1 LightSeaGreen
#property indicator_color2 Red
//---- input parameters
extern int KPeriod = 6 ;
extern int DPeriod = 2 ;
extern int Slowing = 1 ;
//---- buffers
double MainBuffer [] ;
double SignalBuffer [] ;
double HighesBuffer [] ;
double LowesBuffer [] ;
//----
int draw_begin1 = 0 ;
int draw_begin2 = 0 ;
double CHigh , CClose ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init ()
{
string short_name ;
//---- 2 additional buffers are used for counting.
IndicatorBuffers ( 4 ) ;
SetIndexBuffer ( 2 , HighesBuffer ) ;
SetIndexBuffer ( 3 , LowesBuffer ) ;
//---- indicator lines
SetIndexStyle ( 0 , DRAW_LINE ) ;
SetIndexBuffer ( 0 , MainBuffer ) ;
SetIndexStyle ( 1 , DRAW_LINE ) ;
SetIndexBuffer ( 1 , SignalBuffer ) ;
//---- name for DataWindow and indicator subwindow label
short_name = " Stochastic( " + KPeriod + " , " + DPeriod + " , " + Slowing + " ) " ;
IndicatorShortName ( short_name ) ;
SetIndexLabel ( 0 , short_name ) ;
SetIndexLabel ( 1 , " Signal " ) ;
//----
draw_begin1 = KPeriod + Slowing ;
draw_begin2 = draw_begin1 + DPeriod ;
SetIndexDrawBegin ( 0 , draw_begin1 ) ;
SetIndexDrawBegin ( 1 , draw_begin2 ) ;
//----
CHigh = MarketInfo ( Symbol () , MODE_SPREAD ) * MarketInfo ( Symbol () , MODE_POINT ) ; // Вычисляем спред
CClose = CHigh / 2.0 ; // Спред пополам
//----
return ( 0 ) ;
}
//+------------------------------------------------------------------+
//| Stochastic oscillator |
//+------------------------------------------------------------------+
int start ()
{
int i , k ;
int counted_bars = IndicatorCounted () ;
double price ;
//----
if ( Bars <= draw_begin2 ) return ( 0 ) ;
//---- initial zero
if ( counted_bars < 1 )
{
for ( i = 1 ; i <= draw_begin1 ; i ++ ) MainBuffer [ Bars - i ] = 0 ;
for ( i = 1 ; i <= draw_begin2 ; i ++ ) SignalBuffer [ Bars - i ] = 0 ;
}
//---- minimums counting
i = Bars - KPeriod ;
if ( counted_bars > KPeriod ) i = Bars - counted_bars - 1 ;
while ( i >= 0 )
{
double min = 1000000 ;
k = i + KPeriod - 1 ;
while ( k >= i )
{
price = Low [ k ] ;
if ( min > price ) min = price ;
k --;
}
LowesBuffer [ i ] = min ;
i --;
}
//---- maximums counting
i = Bars - KPeriod ;
if ( counted_bars > KPeriod ) i = Bars - counted_bars - 1 ;
while ( i >= 0 )
{
double max =- 1000000 ;
k = i + KPeriod - 1 ;
while ( k >= i )
{
price = High [ k ] + CHigh ;
if ( max < price ) max = price ;
k --;
}
HighesBuffer [ i ] = max ;
i --;
}
//---- %K line
i = Bars - draw_begin1 ;
if ( counted_bars > draw_begin1 ) i = Bars - counted_bars - 1 ;
while ( i >= 0 )
{
double sumlow = 0.0 ;
double sumhigh = 0.0 ;
for ( k = ( i + Slowing - 1 ) ; k >= i ; k -- )
{
sumlow += Close [ k ] + CClose - LowesBuffer [ k ] ;
sumhigh += HighesBuffer [ k ] - LowesBuffer [ k ] ;
}
if ( sumhigh == 0.0 ) MainBuffer [ i ] = 100.0 ;
else MainBuffer [ i ] = sumlow / sumhigh * 100 ;
i --;
}
//---- last counted bar will be recounted
if ( counted_bars > 0 ) counted_bars --;
int limit = Bars - counted_bars ;
//---- signal line is simple movimg average
for ( i = 0 ; i < limit ; i ++ )
SignalBuffer [ i ] = iMAOnArray ( MainBuffer , Bars , DPeriod , 0 , MODE_SMA , i ) ;
//----
return ( 0 ) ;
}
//+------------------------------------------------------------------+
Neden: