FION: Эксперты могут работать одновременно - каждый со своим магиком, при этом распознавание состояния рынка и соответственно перенастройка должна быть в каждом эксперте, если это условие не выполнить, то при смене состояния рынка неизбежны потери , ведь цели и соответственно стопы должны быть различны во флете и тренде. К тому же надо учитывать промежуточные состояния - малый флет, или "сползание" при низкой активности. В принципе савокупность прибыльных экспертов должна показывать лучшие результаты, за счет локирования убыточных позиций экспертов.
Практически у каждого есть своя реализация. Но у многих нет работы над ошибками. У меня точно нетю Я просто стараюсь, что бы их не было. Если делать что-то стандартное, то это надо предусматривать. Я бы еще к магигу добавил симбол(), Хотя это может быть и лишним. Теоретически ордер с одним тикетом не может повторяться , хотя все может быть.
Да, конечно. Именно так я и сделал в коде. Во внешних параметрах ещё задаем Magic _n, и каждая версия со своим магиком будет работать по своему алгоритму.
По определению тренда. В советнике ProtoType-IV приведен пример для мультивалютного эксперта по определению тренда по четырем последним экстремумам. Я скрупулезно вник и "с грехом пополам" выделил этот кусочек кода и теперь его можно вставить в любой эксперт. При необходимисти. Если задать во внешних параметрах
externintPeriodWPR=8;
externdoubleCriteriaWPR=25;
externintATRPeriod=40;// период ATR для индикатора externdoublekATR=0.5;
//-------------------------------------intLastUpArray[13,7];
intPreLastUpArray[13,7];
intLastDownArray[13,7];
intPreLastDownArray[13,7];
Вот сам "определитель" :
/-------------------------------------------------------------------+
//| определение тренда по четырем последним экстремумам |//+------------------------------------------------------------------+intTrendByWPR(){//----intres=0;
intcurPos,LastUpPos,PreLastUpPos,LastDownPos,PreLastDownPos,LastPeak,newPos;
boolFindUp=true,FindDown=true,SearchCompleted=false;
doubleCurWPR=iWPR(NULL,0,PeriodWPR,0);
//----//======= определим - где мы находимся в данный моментif(CurWPR<=CriteriaWPR-100){FindDown=false;
LastPeak=0;
}if(CurWPR>=-CriteriaWPR){FindUp=false;
LastPeak=0;
}// ================ начианем поиск пичков-донышковwhile(!SearchCompleted && curPos<Bars){if(iWPR(NULL,0,PeriodWPR,curPos)>=-CriteriaWPR && LastPeak<0){FindUp=false;
LastPeak=curPos;
curPos++;
continue;
}if(iWPR(NULL,0,PeriodWPR,curPos)<=CriteriaWPR-100 && LastPeak<0){FindDown=false;
LastPeak=curPos;
curPos++;
continue;
}if(iWPR(NULL,0,PeriodWPR,curPos)>=-CriteriaWPR && FindUp){//искали верхушку и нашлиnewPos=curPos;
while(iWPR(NULL,0,PeriodWPR,curPos)>CriteriaWPR-100 && curPos<Bars){// теперь нужно найти донышко, чтобы между ними найти точный пичокcurPos++;
}if(LastUpPos==0){LastUpPos=Highest(NULL,0,MODE_HIGH,curPos-LastPeak,LastPeak);
LastPeak=LastUpPos;
}else{PreLastUpPos=Highest(NULL,0,MODE_HIGH,curPos-LastPeak,LastPeak);
LastPeak=PreLastUpPos;
}curPos=newPos;
FindUp=false;
FindDown=true;
curPos++;
continue;
}//==============if(iWPR(NULL,0,PeriodWPR,curPos)<=CriteriaWPR-100 && FindDown){newPos=curPos;
while(iWPR(NULL,0,PeriodWPR,curPos)<-CriteriaWPR && curPos<Bars){curPos++;
}if(LastDownPos==0){LastDownPos=Lowest(NULL,0,MODE_LOW,curPos-LastPeak,LastPeak);
LastPeak=LastDownPos;
}else{PreLastDownPos=Lowest(NULL,0,MODE_LOW,curPos-LastPeak,LastPeak);
LastPeak=PreLastDownPos;
}curPos=newPos;
FindDown=false;
FindUp=true;
curPos++;
continue;
}if(PreLastDownPos!=0 && PreLastUpPos!=0)SearchCompleted=true;
curPos++;
}/* if (Symbol()==StringSymbol && Period()==PeiodMinute)
{
Comment("LastUpPos=",LastUpPos," PreLastUpPos",PreLastUpPos,"
LastDownPos=",LastDownPos," PreLastDownPos=",PreLastDownPos,
" Время ",TimeToStr(CurTime()));
SetUpArrows(LastUpPos,PreLastUpPos,LastDownPos,PreLastDownPos);*/LastUpArray[NULL,0] =LastUpPos;
PreLastUpArray[NULL,0]=PreLastUpPos;
LastDownArray[NULL,0]=LastDownPos;
PreLastDownArray[NULL,0]=PreLastDownPos;
if(High[LastUpPos]-High[PreLastUpPos]>=kATR*iATR(NULL,0,ATRPeriod,LastUpPos)
&&Low[LastDownPos]>Low[PreLastDownPos])res=1;
if(Low[PreLastDownPos]-Low[LastDownPos]>=kATR*iATR(NULL,0,ATRPeriod,LastDownPos)
&&High[PreLastUpPos]>High[LastUpPos])res=-1;
return(res);
}
На графике в углу отображается функция=0,, или =1, или=-1
На мой взгляд , определять тренд удобней по линейной регрессии, отлично подходит скриптик линейной регрессии из стандартного комплекта МТ-4, хотелось бы на его базе сделать индикатор , может кто-нибудь знает где взять исходник? Все известные реализации плохо работают в динамике изменения цен. А нужен канал задаваемой длины от 1 до N бара с пересчетом при появлении нового бара и возможностью вывода в буфер его ширины в пипсах и наклона в пипсах на длину. И такой же канал стандартного отклонения с задаваемой девиацией было бы неплохо сделать. Можно начать крапать с "нуля " , но если у кого-нибудь есть исходник от МТ было бы намного проще.
Спасибо Леонид , но он некорректно работает при разворотах, я давно его опробовал. Вот хороший индикатор, но он работает по хау -лоу, идея та-же но на основе линейной регрессии.
FION: На мой взгляд , определять тренд удобней по линейной регрессии, отлично подходит скриптик линейной регрессии из стандартного комплекта МТ-4, хотелось бы на его базе сделать индикатор , может кто-нибудь знает где взять исходник? Все известные реализации плохо работают в динамике изменения цен. А нужен канал задаваемой длины от 1 до N бара с пересчетом при появлении нового бара и возможностью вывода в буфер его ширины в пипсах и наклона в пипсах на длину. И такой же канал стандартного отклонения с задаваемой девиацией было бы неплохо сделать. Можно начать крапать с "нуля " , но если у кого-нибудь есть исходник от МТ было бы намного проще.
Я его уже где-то выкладывал. Могу новую версию выложить. Одна ошибка исправлена.
А вот и итндикатор.
На экран выводится количество баров.Выводится 3 сигмы. И если цена находится внутри одно СКО, то перерасчета не прноизводится, так как все в допустимых пределах. При пробитии, будет перерасчет.
Vinin , Ваш канал очень приличный и корректно настраивается. Спасибо. Поделюсь одной задумкой насчет фильтра для флета. Все мы помним ув. Решетова с его перцептронами. В принципе перцептрон - это линейный фильтр. Хочу попытаться отфильтровать флет перцептроном. Подать на вход ширину и наклон 2 каналов линейной регрессии разной длины , ширину Болинжера и скорость изменения цены. Вот думаю что взять за критерий оптимизации. Возможно отбойку от границ Болинжера внутрь - с целью 75 проц. ширины.
Vinin , Ваш канал очень приличный и корректно настраивается. Спасибо. Поделюсь одной задумкой насчет фильтра для флета. Все мы помним ув. Решетова с его перцептронами. В принципе перцептрон - это линейный фильтр. Хочу попытаться отфильтровать флет перцептроном. Подать на вход ширину и наклон 2 каналов линейной регрессии разной длины , ширину Болинжера и скорость изменения цены. Вот думаю что взять за критерий оптимизации. Возможно отбойку от границ Болинжера внутрь - с целью 75 проц. ширины.
Решетовский перцептрон не подойдет. Надо слой Кохонена делать хотя бы из 4-5 неройронов. Но проблема будет только одна - все значения должны быть одного порядка.
Хочу новую тему создать, Нейронный анализ свечей. Выложу все свои наработки, Одному с задачей не справиться. Тем более большую часть ошибок (своих) я уже знаю.
Эксперты могут работать одновременно - каждый со своим магиком, при этом распознавание состояния рынка и соответственно перенастройка должна быть в каждом эксперте, если это условие не выполнить, то при смене состояния рынка неизбежны потери , ведь цели и соответственно стопы должны быть различны во флете и тренде. К тому же надо учитывать промежуточные состояния - малый флет, или "сползание" при низкой активности. В принципе савокупность прибыльных экспертов должна показывать лучшие результаты, за счет локирования убыточных позиций экспертов.
Практически у каждого есть своя реализация. Но у многих нет работы над ошибками. У меня точно нетю Я просто стараюсь, что бы их не было. Если делать что-то стандартное, то это надо предусматривать. Я бы еще к магигу добавил симбол(), Хотя это может быть и лишним. Теоретически ордер с одним тикетом не может повторяться , хотя все может быть.
Да, конечно. Именно так я и сделал в коде. Во внешних параметрах ещё задаем Magic _n, и каждая версия со своим магиком будет работать по своему алгоритму.
По определению тренда. В советнике ProtoType-IV приведен пример для мультивалютного эксперта по определению тренда по четырем последним экстремумам. Я скрупулезно вник и "с грехом пополам" выделил этот кусочек кода и теперь его можно вставить в любой эксперт. При необходимисти. Если задать во внешних параметрах
Вот сам "определитель" :
На графике в углу отображается функция=0,, или =1, или=-1
Я, впрочем, код выложил не только для определения тренда. Другая идея вот подошла...(чуть позже изложу)
А индикатор мож вот этот для начала подойдет:
На графике iPeriod=20, MASoot=20
Я не вникал в его работу. Но в визуальном режиме оч. хор видно, - как он отрабатывает...
На мой взгляд , определять тренд удобней по линейной регрессии, отлично подходит скриптик линейной регрессии из стандартного комплекта МТ-4, хотелось бы на его базе сделать индикатор , может кто-нибудь знает где взять исходник? Все известные реализации плохо работают в динамике изменения цен. А нужен канал задаваемой длины от 1 до N бара с пересчетом при появлении нового бара и возможностью вывода в буфер его ширины в пипсах и наклона в пипсах на длину. И такой же канал стандартного отклонения с задаваемой девиацией было бы неплохо сделать. Можно начать крапать с "нуля " , но если у кого-нибудь есть исходник от МТ было бы намного проще.
Я его уже где-то выкладывал. Могу новую версию выложить. Одна ошибка исправлена.
А вот и итндикатор.
На экран выводится количество баров.Выводится 3 сигмы. И если цена находится внутри одно СКО, то перерасчета не прноизводится, так как все в допустимых пределах. При пробитии, будет перерасчет.
Vinin , Ваш канал очень приличный и корректно настраивается. Спасибо. Поделюсь одной задумкой насчет фильтра для флета. Все мы помним ув. Решетова с его перцептронами. В принципе перцептрон - это линейный фильтр. Хочу попытаться отфильтровать флет перцептроном. Подать на вход ширину и наклон 2 каналов линейной регрессии разной длины , ширину Болинжера и скорость изменения цены. Вот думаю что взять за критерий оптимизации. Возможно отбойку от границ Болинжера внутрь - с целью 75 проц. ширины.
Vinin , Ваш канал очень приличный и корректно настраивается. Спасибо. Поделюсь одной задумкой насчет фильтра для флета. Все мы помним ув. Решетова с его перцептронами. В принципе перцептрон - это линейный фильтр. Хочу попытаться отфильтровать флет перцептроном. Подать на вход ширину и наклон 2 каналов линейной регрессии разной длины , ширину Болинжера и скорость изменения цены. Вот думаю что взять за критерий оптимизации. Возможно отбойку от границ Болинжера внутрь - с целью 75 проц. ширины.
Решетовский перцептрон не подойдет. Надо слой Кохонена делать хотя бы из 4-5 неройронов. Но проблема будет только одна - все значения должны быть одного порядка.