Стохастик имеет отвратительное свойство менять свои значения задним числом, особенно если значения брать со старших таймфреймов.
Если бы не эта проблема - лучше индикатора сложно найти!
И более брехливый индикатор сложно найти!
Стохастик имеет отвратительное свойство менять свои значения задним числом, особенно если значения брать со старших таймфреймов.
Если бы не эта проблема - лучше индикатора сложно найти!
Какой бред. Где вы видели такой стохастик?
Стохастик вовсе не является симметричным индикатором. Как думают многие. Динамический диапазан индикатора в силу его структуры по различномуотображает движения цены вверх и вних !
Не. 99/1.
Знаете ли вы, что полный код стохастика доступен по адресу: 'Stochastic Oscillator, Stochastic'
Не затруднит ли Вас показать пальцем где то место в коде, которое виновно за то, что:
- " при открытии позиции SELL порой изначально становимся в невыгодное положение"?
- "Стохастик имеет отвратительное свойство менять свои значения задним числом"?
Вот вам всем наглядное доказательство несимметричности стохастика.
Канал подвешенный на индикатор постоянно сужается в нижней части и расширен в верхней. Или нужно занудливо по циферкам разбирать здесь формулу?
Если поверхностно взглянуть на формулу Стохастика, то можно уже сейчас с большой долей вероятности предположить, что "виновата" в несимметричности - однополярность индикатора !
А по смене "значений задним числом" ничего сказать не могу. Не сталкивался.
А что даст "зеркальная" формула?
%K = 100*SUM (MAX (HIGH, Pk)-CLOSE), Sk) / SUM (MAX (HIGH, Pk) - MIN (LOW, Pk)), Sk)
С ходу трудно сказать. Нужно видимо написать код зеркального индикатора. Сравнить их конфигурацию на графике.
Для автоматической торговли существенной будет любая разница в отображении. По нормальному индюку входить в Бай. По зеркальному - в Селл.
Ну исходные коды доступны, заменить легко. Толко для восприятия естественнее будет по идее
%K = 100*(1-SUM (MAX (HIGH, Pk)-CLOSE), Sk) / SUM (MAX (HIGH, Pk) - MIN (LOW, Pk)), Sk))
Если поверхностно взглянуть на формулу Стохастика, то можно уже сейчас с большой долей вероятности предположить, что "виновата" в несимметричности - однополярность индикатора !
А по смене "значений задним числом" ничего сказать не могу. Не сталкивался.
- в штатном индикаторе
iStochastic
используются High и Close сформированные Bid-ом - в этом все и дело. Это грубейшая ошибка!!! Особенно для стохастика!!! И особенно на малых периодах!!!Я не программер, строго не судите, доработал штатный стохастик для себя. Работает корректно:
//+------------------------------------------------------------------+ //| $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); } //+------------------------------------------------------------------+
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Думаю, - Стохастик достаточно перспективный индикатор для автоматической торговли.
Но оказывается не всё так просто! Для практики и навыка "сваял" наскоро простейший ( буквально десяток строк) советник по стохастику. Без "излишеств".
Вход - пересечение главной линией линии сигнальной. Соответственно:
Далее на глазок оптимизировал и прогнал в тестере за полтора года. И вот тут обнаружилось, точнее, подтвердилось мое давнее наблюдение! Стохастик вовсе не является симметричным индикатором. Как думают многие. Динамический диапазан индикатора в силу его структуры по различному отображает движения цены вверх и вних !
Именно по этой причине мы при ручной и автом. торговле при открытии позиции SELL порой изначально становимся в невыгодное положение.
Символ GBPUSD (Great Britain Pound vs US Dollar) Период 4 Часа (H4) (2006.01.01 - 2007.08.31)
Модель Все тики (на основе всех наименьших доступных периодов с фрактальной интерполяцией каждого тика)
Качество моделирования 90.00% Начальный депозит 10000.00
Чистая прибыль 3667.00
Общая прибыль 9801.02
Общий убыток -6134.02 Прибыльность 1.60
Матожидание выигрыша 13.94 Абсолютная просадка 202.02 Максимальная просадка 438.24 (3.25%) Относительная просадка 3.25% (438.24)
Всего сделок 263
Короткие позиции (% выигравших) 134 (51.49%)
Длинные позиции (% выигравших) 129 (67.44%)
Прибыльные сделки (% от всех) 156 (59.32%)
Убыточные сделки (% от всех) 107 (40.68%)
Самая большая прибыльная сделка 130.00
убыточная сделка -60.56
Средняя прибыльная сделка 62.83
убыточная сделка -57.33
При любых раскладах, вариантах и параметрых всегда получается, что длинные сделки при использовании индикатора по различным парам более перспективны, чем короткие.
Всегда сторого получается, что число прибыльных сделок из длинных - до 80%
А из коротких, - в лучшем случае, - 50/55 %.
Причем это при входах и по сигнальной линии, и по уровням перекупленности/перепроданности, и даже по iOnArray ...
Вывод, - при использовании Стохастика следует отдельно задавать параметры в бай и в селл. Т.Е. применять два индикатора.