мультивалютный CCI - страница 2

 
Goose >>:

Спасибо огромное! Самое то, что надо! Зарррработало!

Танкисты они тоже люди не хуже других!

Зампотех танковой роты, ст. лейт. Гранит 7.7.

P.S.

Про iBars забыл, пардон.

 
granit77 писал(а) >>

Танкисты они тоже люди не хуже других!

Зампотех танковой роты, ст. лейт. Гранит 7.7.

Не ты один танкист. И зампотех.

 
Kos >>:

Есть еще одно решение предложенное Vinin, но для WPR, после небольших модификаций получаем то, что доктор прописал:))


Спасибо, этот вариант похоже побыстрее бегает.

PS. Слава танковым войскам!

 

Разрабатывал такой индикатор. Было дело. Даже начал пользоваться. Но через несколько недель заметил глюк. На 5-минутках и тем более 1-минутках есть возможность того, что на текущей паре пропадет один-два бара из-за отсутствия котировок или еще хрен знает из-за чего. и графики индикатора по разным парам "поплывут" друг относительно друга.

Это легко проверить если разместить друг над другом два окна по разным инструментам, например EURUSD и USDJPY и накидать на них по несколько таких индикаторов по разным парам. Чтобы все настройки и выбранные пары были одинаковы в верхнем и нижнем окнах. 

И мотайте влево, в историю. Увидите отличие в картинках.

Чтобы уйти от этого, в идеале нужно чтобы проверялось время текущего (просчитываемого) бара по открытой валютной паре, и пересчитывать это время в номер бара для той валютной пары, которая указана в параметрах рассматриваемого здесь индюка.

вот вырезка из моего кода:

CurrTime=iTime(NULL,TF,bsr); 
       
           
barshift=iBarShift(C1,TF,CurrTime); 
a1=iMACD(C1,TF,fast_ema_period,slow_ema_period,signal_period,applied_price,MainOrSignal,barshift)/C1Divider;

barshift=iBarShift(C2,TF,CurrTime);
a2=iMACD(C2,TF,fast_ema_period,slow_ema_period,signal_period,applied_price,MainOrSignal,barshift)/C2Divider;


и так далее (просто у меня все нужные мне валютные пары обрабатываются в одном индюке и выводятся сразу 8 линий. (С1 и С2 - обозначения валютнрых пар)

Обратите внимание, результат iMACD в конце делится на CxDevider.

Это коэффициент, позволяющий масштабировать iMACD каждой валютной пары. Ведь если посмотрите, на иеновых парах амплитуда MACD достигает на порядок больших значений чем, например, на EURUSD, и отображение линий с разных валютных пар в одном индикаторе может просто давать неверную информацию об амлитуде из-за этого. 

На первый взгляд у вас этой проблемы быть не должно, потому что у вас не MultiCCI, а CCI для одной валютной пары. И если они будут накидываться в одно окно индикатора, то сам терминал должен их смасшатбировать по амплитуде. ОДнако это не так. помотайте график влево-вправо и увидите, что из-за разной волатильности на выбранных в индикаторах валютных парах их кривые меняются по амплитуде друг относительно друга (когда какой-нибудь пик кривой уходит за грань экрана, линия этой валютной пары резко вырастает в масштабе амплитуды). Это опять же может дать ложные сигналы.

CxDevider рассчитывается исходя из доли котировки каждой валютной пары в сумме котировок для всех выбранных в индикаторе. Именно поэтому вам нужен индюк, который позволял бы указывать нужные валютные пары и рассчитывать кривые - в коде одного модуля (индикатора).

 
dimonsky >>:

На первый взгляд у вас этой проблемы быть не должно, потому что у вас не MultiCCI, а CCI для одной валютной пары. И если они будут накидываться в одно окно индикатора, то сам терминал должен их смасшатбировать по амплитуде. ОДнако это не так. помотайте график влево-вправо и увидите, что из-за разной волатильности на выбранных в индикаторах валютных парах их кривые меняются по амплитуде друг относительно друга (когда какой-нибудь пик кривой уходит за грань экрана, линия этой валютной пары резко вырастает в масштабе амплитуды). Это опять же может дать ложные сигналы.


Я просто установил размер окна для всех добавляемых в него пар уровнями -150 и 150 с нулевым уровнем посредине, и все замечательно работает, никаких проблем. Зачем усложнять? Ну, а минутками я не пользуюсь, там особого смысла CCI прикручивать и нет, в общем-то, так что косяки с котировками не проблема тоже (да и нет их). Индикатор в последнем посте на первой странице отлично работает.

 
dimonsky >>:

Обратите внимание, результат iMACD в конце делится на CxDevider.

Это коэффициент, позволяющий масштабировать iMACD каждой валютной пары. Ведь если посмотрите, на иеновых парах амплитуда MACD достигает на порядок больших значений чем, например, на EURUSD, и отображение линий с разных валютных пар в одном индикаторе может просто давать неверную информацию об амлитуде из-за этого.

имеет смысл все считать в валюте депозита

 
keekkenen писал(а) >>

имеет смысл все считать в валюте депозита

Для нормализации USD валютных пар к JPY нужно через нормирование через размеров пункта т.е. коэфициент нормирование будет выражаться через формулу MathLog(0.01/0.0001)

 

не понял, поясните на примере


зы.. аа, это если вы в амплитудах(пунктах), то тогда, конечно, разница в количестве знаков играет свою роль.. только в пунктах оценивать некорректно, т.к. стоимость пункта валют неодинакова, отсюда - все нужно переводить к единой мере - например, валюте депозита.. тогда такой индикатор обретает смысл, а так фуфел для демо..

 

Value1=ValueUSD*MathLog(PointJPY/PointUSD);

Value2=ValueJPY;

- это примерная формула, более детально нужно проверять, но в принципе у меняя соотношения для нормирования двух разных Таймфреймов на младшем при использовании одинаковых периодов имеют подобную структуру нормирования

Поэтому я нормирую не в единицах пункта, а в логарифмической шкале соотношений, поверьте то что описываю я использую в нормировках различных ТФ на более младшем для более красивого отображения..Для примера рисунок который показывает на младшем ТФ, совершенно разные кривые с разных ТФ..

 

В любом случае нормализацию нужно делать. Формула это уже второстепенно.

И непонятно  "ограничить сверху и снизу 150" - мне често бы надоело каждый раз это делать - это для EURUSD 150. а для EURJPY?? Там все 15000, если без нормализации. И кроме того, хочется перейти из окна одной ВП в окно другой и увидеть ту же картину по индикаторам, с теми же значениями амплитуды индюков, коль уж они "типа мультивалютные". Люблю порядок. И скорость - кинул индюк и он сам все посчитал и показал. Картинка один в один на разных ВП.

Вот мой расчет коэффициентов нормализации в индюке с 8-ю валютными парами.

         iClose1=iClose(C1,TF,bsr); //Cx - обозначение инструмента
         iClose2=iClose(C2,TF,bsr);  // TF - выбранный период в настройках
         iClose3=iClose(C3,TF,bsr);  // bsr - индекс (не стал менять, скопировал из кода)
         iClose4=iClose(C4,TF,bsr);
         iClose5=iClose(C5,TF,bsr);
         iClose6=iClose(C6,TF,bsr);
         iClose7=iClose(C7,TF,bsr);
         iClose8=iClose(C8,TF,bsr);
      
         sum=iClose1;
         sum=sum+iClose2;
         sum=sum+iClose3;
         sum=sum+iClose4;
         sum=sum+iClose5;
         sum=sum+iClose6;
         sum=sum+iClose7;
         sum=sum+iClose8;
      
         C1Divider=iClose1/sum/10000; // 10000 - поправочный коэффициент, просто делает 
         C2Divider=iClose2/sum/10000;  //  значение побольше, чтобы меньше знаков после 
         C3Divider=iClose3/sum/10000; // запятой имели вес.
         C4Divider=iClose4/sum/10000;
         C5Divider=iClose5/sum/10000;
         C6Divider=iClose6/sum/10000;
         C7Divider=iClose7/sum/10000;
         C8Divider=iClose8/sum/10000;
Причина обращения: