Форум » Индикаторы » Индикатор Quantum » Ответить

Индикатор Quantum

Genry: Решил озвучить информацию об интересном индикаторе Quantum. У индикатора всего один параметр для определения перекупленность или перепроданность рынка. Впервые индикатор появился на ФорексФактори в теме Quantum London Trading. Практически сразу появилась тема на TradeLikeaPro : QUANTUM LONDON.INC Есть статья на avtoForex: Торговая стратегия Quantum London.Безубыточная сетка

Ответов - 154, стр: 1 2 3 4 5 6 7 8 9 10 11 All

Sergey: Genry пишет: Сет тестовый, предназначен проверять обратные сигналы индикатора - тейков и стопов нет. Добро!

Genry: Sergey пишет: Genry пишет: цитата: Сет тестовый, предназначен проверять обратные сигналы индикатора - тейков и стопов нет. Добро! Это с 500$ с 12 декабря, если с сентября тем-же сетом, то и 5 января проскочит

Genry: Версия QuMA_ChannelsFIBO_min.mq4 урезана для вызова из советника, чтобы ускорить тестирование. [pre]//+------------------------------------------------------------------+ //| MA Chanels.mq4 | //| ░njel░ | //| iamnotlinked | //| Quantum.mq4 | //+------------------------------------------------------------------+ //| Quantum.mq4 | //| Copyright й 2010, zznbrm | //| //+------------------------------------------------------------------+ //| 2012Jan27 mod for mer071898 //+------------------------------------------------------------------+ //| //| 10.12.2015 Genry : MA_Channels+Quantum = QuMA_ChannelsFIBO.mq4 //| 10.01.2016 Genry : Add the algorithm for finding extrema. //| The idea and code Deviat: Development Slim33 10/18/2014 //| 11.01.2016 Staxis: Increasing the speed indicator. //| 11.01.2016 Genry : MIN version to work with the advisor. //| It works faster than the standard version. //+------------------------------------------------------------------+ #property copyright "zznbrm+njel+Genry" #property link "notlinked" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 clrAquamarine #property indicator_color2 clrMagenta #property indicator_width1 5 #property indicator_width2 5 //---- input parameters Quantum extern int eintDepth3 = 78; // 1= 23.6 2=38.4 3=50 4=61.8 5=78.6 6=Gann 82.87 7= 88.2 8=100 extern int FibSelect = 2; //--------------------- MA extern int BarsCount = 500; extern int MAPeriod = 100; extern int MAMethod = MODE_SMA; extern int MAPrice = PRICE_CLOSE; extern int fontsize = 10; double FibMult = 0.0; double Inc0 = 0.0000; double Inc1 = 0.0000; double Inc2 = 0.0000; double Inc3 = 0.0000; double Inc4 = 0.0000; double Inc5 = 0.0000; double Inc6 = 0.0000; double Inc7 = 0.0000; //---- buffers double gadblUp3[]; // Quantum double gadblDn3[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { SetIndexBuffer( 0, gadblUp3 ); SetIndexEmptyValue( 0, 0.0 ); SetIndexStyle( 0, DRAW_ARROW ); SetIndexArrow( 0, 250 ); SetIndexLabel( 0, NULL ); SetIndexBuffer( 1, gadblDn3 ); SetIndexEmptyValue( 1, 0.0 ); SetIndexStyle( 1, DRAW_ARROW ); SetIndexArrow( 1, 250 ); SetIndexLabel( 1, NULL ); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { double dev = 0; int intLow3, intHigh3, limit; // if (iBars(NULL,0) < BarsCount) // BarsCount = iBars(NULL,0) - MAPeriod-1 ; int counted_bars = IndicatorCounted(); //---- check for possible errors if(counted_bars < 0) return(-1); if(counted_bars <= MAPeriod) limit = Bars - MAPeriod ; else limit = Bars - counted_bars; for (int i =limit; i>=0; i--) { dev = Deviat(i); if(dev == 0) continue; Inc2 = dev*0.618; Inc1 = dev*0.5; Inc0 = dev*0.236; Inc4 = dev*0.786; Inc5 = dev*0.828; // Gann 82.87 Inc6 = dev*0.882; Inc7 = Inc3; // 100% Inc3 = dev*0.382; //------------------------------------- double m = iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,i); gadblUp3[ i] = 0.0; gadblDn3[ i] = 0.0; switch ( FibSelect ) { case 1: FibMult = m -Inc0; break; // 23.6 case 2: FibMult = m -Inc3; break; // 38.2 case 3: FibMult = m -Inc1; break; // 50 case 4: FibMult = m -Inc2; break; // 61.8 case 5: FibMult = m -Inc4; break; // 78.6 case 6: FibMult = m -Inc5; break; // Gann 82.87 case 7: FibMult = m -Inc6; break; // 88.2 case 8: FibMult = m -Inc7; break; // 100.0 default: FibMult = m -Inc3; } intLow3 = iLowest( Symbol(), Period(), MODE_LOW, eintDepth3, i ); if ( intLow3 == i ) { if (Low[ i] <= FibMult) gadblUp3[ i] = Low[ i]; } switch ( FibSelect ) { case 1: FibMult = m +Inc0; break; // 23.6 case 2: FibMult = m +Inc3; break; // 38.2 case 3: FibMult = m +Inc1; break; // 50 case 4: FibMult = m +Inc2; break; // 61.8 case 5: FibMult = m +Inc4; break; // 78.6 case 6: FibMult = m +Inc5; break; // Gann 82.87 case 7: FibMult = m +Inc6; break; // 88.2 case 8: FibMult = m +Inc7; break; // 100.0 default: FibMult = m +Inc3; } intHigh3 = iHighest( Symbol(), Period(), MODE_HIGH, eintDepth3, i ); if ( intHigh3 == i ) { if (High[ i] >= FibMult) gadblDn3[ i] = High[ i]; } } return(0); } //+------------------------------------------------------------------+ //|Slim33 18.10.2014 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ double Deviat(int bar) { int i; double val = 0, loDev = 0, hiDev = 0; if( bar + BarsCount >= Bars - 1) return(0); for (i = bar + BarsCount; i >= bar; i--) { double m = iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,i); if(MathAbs(m - High[ i]) > hiDev) hiDev = MathAbs(m - High[ i]); if(MathAbs(m - Low[ i]) > loDev) loDev = MathAbs(m - Low[ i]); } val = MathMax(hiDev, loDev); return (val); }[/pre]


Scriptong: Genry пишет: Версия QuMA_ChannelsFIBO_min.mq4 урезана для вызова из советника, чтобы ускорить тестирование. Соедините эту версию с предыдущей и получите оптимальный вариант. Вроде бы так, но надо будет еще проверить. А в советнике не стоит вызывать индикатор. Достаточно просто поставить в него функцию расчета текущих уровней. Она будет достаточно компактной и "легкой".

Genry: Scriptong пишет: Вроде бы так, но надо будет еще проверить. А в советнике не стоит вызывать индикатор. Достаточно просто поставить в него функцию расчета текущих уровней. Она будет достаточно компактной и "легкой". Предложения понятны, спасибо, Игорь! Эх, практики не хватает. Я еще хотел сделать из этого индикатора MTF-ный. Возможно это улучшит результат, если сигналы на вход и выход будут с разных ТФ.

Scriptong: Genry пишет: Эх, практики не хватает. Я еще хотел сделать из этого индикатора MTF-ный. Практика подоспела

Genry: Ура! Это как с велосипеда на ракету пересесть: был здесь - и сразу там Спасибо, Игорь, за участие в этом вопросе - думаю много трейдеров скажет доброе слово! А еще один вариант - mtf третьим будет ?

Scriptong: Genry пишет: А еще один вариант - mtf третьим будет ? Не будет ли слишком много линий? Для текущего и еще одного ТФ - 16 линий, для трех ТФ - 24 и т. д.

Genry: Scriptong пишет: Не будет ли слишком много линий? Для текущего и еще одного ТФ - 16 линий, для трех ТФ - 24 и т. д. А не надо добавлять. Добавить параметр TF - если 0, то текущий, а если > текущего, то с него и данные для отрисовки. Проще загрузить 2 индикатора на один график, если надо.

Scriptong: Genry пишет: А не надо добавлять. Добавить параметр TF - если 0, то текущий, а если > текущего, то с него и данные для отрисовки. Проще загрузить 2 индикатора на один график, если надо. А, ну это просто

Genry: Scriptong пишет: Genry пишет: цитата:А не надо добавлять. Добавить параметр TF - если 0, то текущий, а если > текущего, то с него и данные для отрисовки. Проще загрузить 2 индикатора на один график, если надо. Scriptong пишет: А, ну это просто Это хорошо что просто, а возможности расширяет

Genry: Обсуждая ускорение QuMaшки, мы с коллегой iew независимо совершили "открытие" - исправленная QuMaшка отлично повторяет Envelopes из стандартного набора МТ, которые при оптимизации должны работать быстрее любого пользовательского индикатора .

Genry: Genry пишет: Обсуждая ускорение QuMaшки, мы с коллегой iew независимо совершили "открытие" - исправленная QuMaшка отлично повторяет Envelopes из стандартного набора МТ, которые при оптимизации должны работать быстрее любого пользовательского индикатора . Игорь, я использую такой подход удобство подбора уровней фибо или отклонения для енвелопес: назначение отрицательного индекса для стандартных значений Фибо. После этого в тестере можно задать параметры перебора уровней фибо: от -1 шаг -1 до -8 и он будет перебирать фиксированную сетку, а в остальных случаях - диапазон определенный трейдером. [pre] double i_fibo_Level1 = i_fiboLevel1; // для удобства оптимизации и задания шага фибо double i_fibo_Level1_cl = i_fiboLevel1_cl; // для удобства оптимизации и задания шага фибо double i_fibo_Level1_v2 = i_fiboLevel1_v2; // для удобства оптимизации и задания шага фибо double i_fibo_Level1_v2_cl = i_fiboLevel1_v2_cl; // для удобства оптимизации и задания шага фибо //+------------------------------------------------------------------+ switch ( int(i_fiboLevel1 )) { case -1: i_fibo_Level1 = 23.6; break; // 23.6 case -2: i_fibo_Level1 = 38.2; break; // 38.2 case -3: i_fibo_Level1 = 50.0; break; // 50 case -4: i_fibo_Level1 = 61.8; break; // 61.8 case -5: i_fibo_Level1 = 78.6; break; // 78.6 case -6: i_fibo_Level1 = 82.87; break; // Gann 82.87 case -7: i_fibo_Level1 = 88.2; break; // 88.2 case -8: i_fibo_Level1 = 100.0; break; // 100.0 default: i_fibo_Level1 = i_fiboLevel1; } switch ( int(i_fiboLevel1_cl )) { case -1: i_fibo_Level1_cl = 23.6; break; // 23.6 case -2: i_fibo_Level1_cl = 38.2; break; // 38.2 case -3: i_fibo_Level1_cl = 50.0; break; // 50 case -4: i_fibo_Level1_cl = 61.8; break; // 61.8 case -5: i_fibo_Level1_cl = 78.6; break; // 78.6 case -6: i_fibo_Level1_cl = 82.87; break; // Gann 82.87 case -7: i_fibo_Level1_cl = 88.2; break; // 88.2 case -8: i_fibo_Level1_cl = 100.0; break; // 100.0 default: i_fibo_Level1_cl = i_fiboLevel1_cl; } switch ( int(i_fiboLevel1_v2 )) { case -1: i_fibo_Level1_v2 = 23.6; break; // 23.6 case -2: i_fibo_Level1_v2 = 38.2; break; // 38.2 case -3: i_fibo_Level1_v2 = 50.0; break; // 50 case -4: i_fibo_Level1_v2 = 61.8; break; // 61.8 case -5: i_fibo_Level1_v2 = 78.6; break; // 78.6 case -6: i_fibo_Level1_v2 = 82.87; break; // Gann 82.87 case -7: i_fibo_Level1_v2 = 88.2; break; // 88.2 case -8: i_fibo_Level1_v2 = 100.0; break; // 100.0 default: i_fibo_Level1_v2 = i_fiboLevel1_v2; } switch ( int(i_fiboLevel1_v2_cl )) { case -1: i_fibo_Level1_v2_cl = 23.6; break; // 23.6 case -2: i_fibo_Level1_v2_cl = 38.2; break; // 38.2 case -3: i_fibo_Level1_v2_cl = 50.0; break; // 50 case -4: i_fibo_Level1_v2_cl = 61.8; break; // 61.8 case -5: i_fibo_Level1_v2_cl = 78.6; break; // 78.6 case -6: i_fibo_Level1_v2_cl = 82.87; break; // Gann 82.87 case -7: i_fibo_Level1_v2_cl = 88.2; break; // 88.2 case -8: i_fibo_Level1_v2_cl = 100.0; break; // 100.0 default: i_fibo_Level1_v2_cl = i_fiboLevel1_v2_cl; } return(0); }[/pre] И то-же самое для Envelopes: [pre]double Envelopes_MA = iMA(Symbol(),0, MA_Period, MA_Shift, MA_Method, Applied_Price,1); switch ( int( Deviation )) { case -1: Deviation = 0.23* Envelopes_MA; break; // 23.6 case -2: Deviation = 0.38* Envelopes_MA; break; // 38.2 case -3: Deviation = 0.50* Envelopes_MA; break; // 50 case -4: Deviation = 0.62* Envelopes_MA; break; // 61.8 case -5: Deviation = 0.78* Envelopes_MA; break; // 78.6 case -6: Deviation = 0.83* Envelopes_MA; break; // Gann 82.87 case -7: Deviation = 0.88* Envelopes_MA; break; // 88.2 } double Envelopes_MA_cl = iMA(Symbol(),0, MA_Period_cl, MA_Shift_cl, MA_Method_cl, Applied_Price_cl,1); switch ( int( Deviation_cl )) { case -1: Deviation_cl = 0.23* Envelopes_MA_cl; break; // 23.6 case -2: Deviation_cl = 0.38* Envelopes_MA_cl; break; // 38.2 case -3: Deviation_cl = 0.50* Envelopes_MA_cl; break; // 50 case -4: Deviation_cl = 0.62* Envelopes_MA_cl; break; // 61.8 case -5: Deviation_cl = 0.78* Envelopes_MA_cl; break; // 78.6 case -6: Deviation_cl = 0.83* Envelopes_MA_cl; break; // Gann 82.87 case -7: Deviation_cl = 0.88* Envelopes_MA_cl; break; // 88.2 } [/pre]

Genry: Перенес свои сообщения из ветки советника по Квантуму: ------------------------------------------------------------------------------------- ... у меня была идея сделать такой алгоритм скальпирования на тренде: 1. по аналогии с Фибо-сеткой строим ATR-сетку по такому принципу: 1ATR * (3.618 && 6.618 && 8.618, уровни настраиваются) получается канал с учетом волатильности (можно учитывать и фибо-уровени для надежности). 2. На сильном тренде если цена пробивает максимально удаленный ATR-уровень , например: 8.618 - по сигналам Квантума начинаем строить сетку. Сетку переводим в безубыток (закрытием части ордеров ) при развороте и достижении предыдущего уровня 6.618 и : 1. закрываем при достижении уровня 3.618 или 2. оставляем и тралим по уровням до обратного сигнала. A теперь доказательство эффективности этого алгоритма на примере: Это график тестера с 01 июня 2014 года по 28 января 2016 года. Сов прошел 20 месяцев начав с 1000$ возможно потому, что открывал и закрывал короткие сетки между уровнями 23 и 38 Фибо с одной стороны канала, а не у противоположного уровня. На графике есть пару ступенек которые снесут депозит в 1000$ если начать торговлю в этот день, но в целом получилось красиво :). Доход в 5000$ за 20 месяцев - это 250 баксов в месяц, совсем немного, но ММ брался из расчета дальнего уровня, а так можно и побольше поставить. Жаль на графике есть сливные участки, надо думать как из преодолевать, но может перевод в безубыток поможет или использовать SL. --------------------------------------------------------------------------------------------------------------------------- В первом примере ММ был: старт: 0.02 множители 1.05 и 1.1 Если взять январь 2016 с 11 числа по сегодня, т.е. пару недель старт тот-же 0.02 и множители 1.2. и 1.3, то данный подход скальпирования сеткой на одной стороне канала принесет 960$, риски будут выше, но не для этого января :d --------------------------------------------------------------------------------------------------------------------------- Я сделал скрин с пояснениями к сообщению http://forum.tradelikeapro.ru/index.php?topic=10633.msg259491#msg259491 и проторговал эту методику руками, получилось так: 1. При торговле волатильности использовал АТR-канал построенный от МА100 в обе стороны. Первоначальные уровни: а) ATR x 8.618 (8.62) - дальний уровень, при его касании или пробитии начинаем строить сетку по сигналам Квантума. После касания ценой среднего уровня 6.62 на уровень 8.62 переносим SL - первый шаг трала. б). АТR х 6.618 (6.62) - средний уровень, при касании его ценой - трал перемещается в безубыток на уровень 8.62. В теории, т.к. ордера открывались за уровнем 8.62 должны получить всю сетку в безубытке, но возможны варианты, когда часть ордеров останется еще в минусе. в). АТR х 3.618 (3.62 :) ) - самый близкий к МА100 уровень, используется как сигнал для закрытия половины прибыли сетки (можно всей сетки), чтобы сделать Сейф. г) МА100 при касании ценой уровня МА100 можем закрыть всю сетку или передвинуть трал и продолжать тралить по уровням ATR (и Фибо) до появления встречного сигнала Квантума. ЗЫ: можно добавить еще один уровень в АТР (хотя он вроде уже есть в советнике) - за 8.62 для установки первоначального стопа.

Scriptong: Genry пишет: по аналогии с Фибо-сеткой строим ATR-сетку по такому принципу: 1ATR * (3.618 && 6.618 && 8.618, уровни настраиваются) получается канал с учетом волатильности (можно учитывать и фибо-уровени для надежности). То есть к МАшке откладываем в обе стороны значение ATR на предыдущем (или текущем?) баре, умноженное на соответствующий коэффициент?



полная версия страницы