ParabolicSar System

nemo-x

Активный участник
Извиняюсь за временное отсутствие - работа так складывается...
Продолжаем разговор...
Пересмотрел за это время ещё раз всё что есть по параболику...
Перепробовал по всякому...
И вот что в результате...
Я открыл два одинаковых графика евры...На один график поставил советник ParabolicSarSystem,приложенный выше,на второй график - третью версию nemo-x-paraboloc...
Результат - отличный...Чётко работают отложенные ордера и четко происходит закрытие открытых ордеров...Единственная проблема - на протяжении одного бара ParabolicSarSystem всё норовил несколько раз закрыть открытые позы - но это и понятно,у него так прописано...

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

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

Вот...Юрий,я думаю что такое решение позволит советнику наконец-то заработать как положено и без глюков...Да,поскольку каждое действие можно совершать только на новом баре, то подтягивание стопа делаем на первом баре, а модификацию отложенного ордера - на втором...Если можно одновременно - то конечно тогда одновременно...
И ещё...Если можно в переменные добавить +S к стопу или -S к стопу -было бы отлично...Смысл в том, что можно было бы либо *обострять* стоп либо его *загрублять*...

Вот теперь все соображения,вроде как...

Слово за уважаемым Юрием...
 

nemo-x

Активный участник
Продолжаем исследование...Вроде раскусил глюк с подтаскиванием ордеров при работе с параметром N...Это оказался не глюк, а так прописаный алгоритм работы по сигналам...Описание на картинке...

Советник как положено тянет селл-стоп с параметром N=10
А когда появляется сигнал на бай-стоп...Советник как положено ставит бай-стоп на 10 пунктов выше ...И ПОДТЯГИВАЕТ СЕЛЛ_СТОП НА 10 п. относительно ВЕРХНЕГО сигнала !!!
Я ещё не знаю,плохо это или хорошо,но причину надо найти...

Сразу возникает вопрос к Юрию - технически возможно привязать работу селл-стопа ТОЛЬКО к сигналам снизу, а бай-стопа ТОЛьКО к сигналам сверху (...задумчиво смотрит на небо...Небо капает дождём в ответ...)...
 

nemo-x

Активный участник
Ну как-то мы зависли...
А до работающего советника по параболику так ещё и не добрались...
И виною здесь не програмирование, а большое количество *подводных камней* связаных с работой самого параболика...

Если вдруг у Юрия появиться возможность и желание, то вот практически окончательная на сегодняшний день формулировка советника...

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

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

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

Для того,чтобы корректно работала переменная N необходимо разделить блок установки и слежения для бай-стопа от блока селл-стопа...То есть один блок для работы с параболиком снизу,другой - с параболиком сверху...Я встретил в разных советниках пока два варианта разделения - в переменных так и пишут -параметры блока коротких поз и параметры блок длинных поз с указанием параметров параболика и выключателем
или просто пишут бай = вкл-выкл и селл=вкл-выкл , а параметры параболика в общих...

Переменная N - очень нужная штука,при правильном с ней обращении можно отсекать флет...


Вопрос взятия максимального профита пока остаётся открытым...Но если мы будем иметь описанного и работающего советника. то вопрос с профитом будет решаться уже подбором соответствующего дополнительного сигнала на закрытие...

Вот такие предварительные выводы по параболику...
 

artemachka

Активный участник
здравствуйте извините что вмешиваюсь просто советник ProstoSAR.mq4 очень не плох,даже очень,сам то я не смыслю в программирование,помогите.параболик стоит:0.1;0.2 .на 1м.сделки по10-15п но часто +трал кимовский.так вот вставте в советник тралл.смысл теоритический такой:вставляются вкл/выкл. блоки
1.сработал байстоп и открылся бай;с селллимитным тоже самое.
2.тралл ордеров,открытых,с переносом как стоплоса так и профита,
с разной дистанцией и разным шагом,ну что бы какой хочу такой поставлю
вот пока и все.можно както помочь.спасибо
 

nemo-x

Активный участник
А никто и не говорит,что он плох...И все здесь созданые Юрием советники тоже очень не плохи...Каждый из них хорош по своему и можно их применять для определённых операций...Речь идёт о том,что всё же на реал их в таком виде ставить нельзя - не все функции выполняются корректно, а потому и хочется их исправить...Вот тот же ProstoSAR.mq4 должен был просто ставить ордера по сигналам параболика и таким образом,если не использовать стопы, получался бы своеобразный Мартингейл...
А что по поводу трала...Так в паре с Кимовским или любым другим ProstoSAR.mq4 вполне нормально работает...Но всё равно рано или поздно советник попадёт вот в такую ситуацию (см.) когда откроются две позы в разные стороны и торговля повиснет...
 

artemachka

Активный участник
бывает,пока не закроется по стоплосу.за ответ спасибо,значит не по можите.все равно надо попробывать,и еще один блок добавить-при установке отложеных открытие рыночных противоположенных,с такимже тралом. а то что на реале не коректно работать будет можно блоки отключить.а сделать надо,пока не попробуешь не узнаешь что будет.с уважением.
P.S> при настройке трала и стоплоса(эксперементально,на разных тф свои)и параболика то можно избежать "торговля повиснет..."на м1 параболик0.1 0.2
тралл9 степ1.один минус-если ордер закрылся а сигнал в том же направлении то ждать долго,когда обратно пойдет.
 

nemo-x

Активный участник
Юрий...Я понял,кажется,в чём причина...Дело не в программировании...Дело в параболике...
Пока суть да дело,сделайте,пожалуйста,третий вариант в двух модификациях -
Первая - работа только по параболику сверху...
Вторая - работа только по параболику снизу...
Я подозреваю,что таким образом мы решим многие проблеммы...
Проблема оказалась глубже...Советник по параболику не различает сигнал сверху или сигнал снизу...По крайней мере это получилось в третьей версии...Это видно при работе с параметром N...
Поэтому и предложение - разделить отдельно бай и отдельно селл...
А при работе ставить на разные окна одного графика...
 

Юрий FT

Модератор
Советник проверяет находится ли параболик сверху или снизу иначе бы советник вообще неработал.
pb1- значение параболика на предыдущем баре, если цена меньше параболика то выставляем бай стоп.
if(Ask<pb1)
{OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(pb1,4),3,NormalizeDouble(pb,4),0,"FORTRADER.RU",16384,10,Green);}
 

nemo-x

Активный участник
Ура...С помощью подсказки Юрия о значении pb1 в советнике ParabolicSarSystem.mq4 сделал работу советника на первом баре...
Нужны ещё подсказки...
1) Подскажите ,какой код надо вставить в этот советник для его работы на разных парах одновременно...???

Можно добавляйте в условие, там где выбирается ордер для модификации или закрытия или удаления данное условие
OrderSymbol()==Symbol() - это проверка пары выбранного ордера на соответсвие с парой на которой стоит советник.

2) Если вместо фразы if(Ask<pb1) прописать фразу if(Close<pb1) - будет ли это означать работу советника по цене закрытия...??? Если нет, то как прописать работу по цене закрытия ???

Можно только не Close, а Close[1].

3) И вопрос по поводу самого замысла этого советника - Юрий,там в коде советника упоминаются селлстоп и байстоп, а реально они при работе советника не выставляются ...Был изначально какой-то замысел на их счёт или они там случайно оказались...???...Может быть Вы их вместо стопов использовать хотели...???
=====================================================
Сейчас уже не помню, но там проверяется если цена уже выше параболика то сразу входим по цене на бай, если цена ниже то ставим байстоп и подтягиваем его под каждое значение, как то так.

А вот и легок на помине селлстоп появился...Текущая поза,открытая советником, была закрыта по профиту,Советник молчал-молчал,а потом за несколько пунктов до точки параболика взял и поставил селл-стоп...
Мистика...
 

artemachka

Активный участник
не могли ли многоуважаемые профи,просветить темного насчет кода советника.что и как,построчно.к примеру что op.ap и так далее.не сочтите за труд.нести свет другим это же благородно!советник ProstoSAR
 

nemo-x

Активный участник
не могли ли многоуважаемые профи,просветить темного насчет кода советника.что и как,построчно.к примеру что op.ap и так далее.не сочтите за труд.нести свет другим это же благородно!советник ProstoSAR

Из многоуважаемых профи у нас тут есть только один - это Юрий...Я так же как и Вы пытаюсь что-то понять и что-то отковырнуть в кодах...
Так что аппелируйте не в множественном числе...
Советник ProstoSAR действительно неплохо работает,если добавить внешний трал или постоянно следить за тем, чтобы случайно не открылись две реальные позиции...А они откроются по любому...И с тралом и при касании точки параболика...Вот в этом зависании и проблема...Советник должен был просто ставить отложенные ордера,не смотря на то есть уже такие ордера или нет...Появился сигнал - поставили ордер и ничего не волнует...Поскольку побороть это можно,наверное,только переписав советник заново,надо попробовать разделить советник на два...Один только для торговли с ордерами бай,другой только стоп...Вот на следующей неделе буду пробовать убирать куски кода,может что получится...А может Юрий и подскажет и поможет...
Ну и конечно,советник должен стать мультивалютным в итоге...
Я вот тут честно прочёл в разделе ликбез статью о написании мультивалютного советника...Ну и ???...К концу статьи только окончательно запутался,потому что вместо популярного азбучного подхода *нажмешь сюда - получишь то-то и то-то* применён подход - *я тебе всё расскажу, а ты думай что к чему*...Это не урок...
А Вы говорите оп и ап...Там ещё и ип есть...
 

artemachka

Активный участник
прикол придумал....а что если на часовиках по сигналам параболика ставить байстопы
и пусть себе стоят все равно когдато развернется,когда до дна дойдет?профиты можно же и по меньше ставить?ну это так полет фантазии
 

Alex!1

Активный участник
...Советник должен был просто ставить отложенные ордера,не смотря на то есть уже такие ордера или нет...Появился сигнал - поставили ордер и ничего не волнует...

Вот такие ситуации есть- рис.1, и понаставит SAR Вам кучу отложенников- рис.2 и посливает USA прилично по стоплоссам!, или пооставляет сзади кучу открытых ордеров на минусе- которые не закрылись потому, что цена сразу ушла в обратку!
Не лучше ли захиджировать эту ситуацию с чем и справился SAR!,- и это на М1.

Одно хотелось бы загрузить в код Советника SAR:
1). Чтоб в выставляемом СтопBUY-е (при имеющемся уже СтопSELLе или открытом SELLе) был выставлен двигающийся Стоп селовский- на двигающемся СтопBUY-е.
2). А в выставляемом СтопSELL-е (при имеющемся уже СтопBUYе или открытом BUYе) был выставлен двигающийся Стоп баевский- на двигающемся СтопSELL-е.
И пусть идет цена в любую сторону закрывая противоположный ордер при открытии текущего!

Может Вы этим уже занимались?- не все быквы вычитал в посте- прошу извинения!
 

nemo-x

Активный участник
Может Вы этим уже занимались?

Занимались,занимались...И сейчас занимаемся...
Только вот пока работой завалило,к концу года только полегчает,тогда и результаты буду докладывать...

Alex,для таких флетов нужен будет ещё один вариант советника,с обратным алгоритмом...Или будем применять ПростоСар с его глюком...Навел меня этот глюк на интересную мысль...Он ведь зависает при открытии двух разнонаправленных поз...Так это во флете и можно использовать!!!

А пока насобирал по сети всяких-разных советников по параболику и ковыряюсь в кодах...Думаю, что из кусков чего-нибудь слеплю...


И вопрос к Юрию...Вот Ваш первый советник ParabolicSarSystem.mq4 в начале ветки...
Для того чтобы корректно учесть спред и исключить срабатывание советника при просто касании точки параболика нужно заставить советник выполнять команды не по текущим значениям параболика, а по значениям :текущее+N...
В советнике я нашел только одно место,где это логично сделать...
Это вот здесь

double pb=iSAR(NULL,0,step,maximum,1);
double pb1=iSAR(NULL,0,step,maximum,2);

Нам нужно чтобы pb и pb1 были равны значению параболика ПЛЮС какое-то значение...Пусть даже не переменное,а фиксированное,можно руками в коде менять,не трудно...


Но Как ЭТО прописать ????...
Куда я только этот +N не совал -ну не лизэ,батько...
 

Юрий FT

Модератор
Занимались,занимались...И сейчас занимаемся...
Только вот пока работой завалило,к концу года только полегчает,тогда и результаты буду докладывать...

Alex,для таких флетов нужен будет ещё один вариант советника,с обратным алгоритмом...Или будем применять ПростоСар с его глюком...Навел меня этот глюк на интересную мысль...Он ведь зависает при открытии двух разнонаправленных поз...Так это во флете и можно использовать!!!

А пока насобирал по сети всяких-разных советников по параболику и ковыряюсь в кодах...Думаю, что из кусков чего-нибудь слеплю...


И вопрос к Юрию...Вот Ваш первый советник ParabolicSarSystem.mq4 в начале ветки...
Для того чтобы корректно учесть спред и исключить срабатывание советника при просто касании точки параболика нужно заставить советник выполнять команды не по текущим значениям параболика, а по значениям :текущее+N...
В советнике я нашел только одно место,где это логично сделать...
Это вот здесь

double pb=iSAR(NULL,0,step,maximum,1);
double pb1=iSAR(NULL,0,step,maximum,2);

Нам нужно чтобы pb и pb1 были равны значению параболика ПЛЮС какое-то значение...Пусть даже не переменное,а фиксированное,можно руками в коде менять,не трудно...


Но Как ЭТО прописать ????...
Куда я только этот +N не совал -ну не лизэ,батько...

int N=40;

//получаем значение на первом баре
double pb=iSAR(NULL,0,step,maximum,1);
//получаем значение на втором баре
double pb1=iSAR(NULL,0,step,maximum,2);

если закрытие ниже параболика на первом баре прибавим к значению параболика И

if(Close[1]<pb)
{
double pbplus=pb+N*Point;
}

if(Close[1]>pb)
{
double pbminus=pb-N*Point;
}

pbplus и pbminus будут содержать значения параболика с учетом N
 

Alex!1

Активный участник
rid 15.09.2008 13:27 сказал(а):
Да ! Всё работает. Можно!
Стопы же поставте равными не 0, а побольше, где то = 1000
И отключите трал! Тогда позиции будут строго закрываться только по сигналам параболиика.
Такое Закрытие будет отображаться зелеными треугольниками. Как на графике в онлайне, так и в тестере на графике визуального режима.
...В выложенной же ниже версии закрытие идет по текущему тф.
Прикрепленные файлы:
exp_PAR_mod.mq4 (14.39 KB)

Верхняя цитата отсюда!
http://forum.mql4.com/ru/14784
Говорю, нельзя ли прописать аналогию в SAR-е, чтоб позиция (говорю об открытой тока позиции) закрывалась по обратному сигналу Параболика?!- по системе exp_PAR.
 

nemo-x

Активный участник
int N=40;

//получаем значение на первом баре
double pb=iSAR(NULL,0,step,maximum,1);
//получаем значение на втором баре
double pb1=iSAR(NULL,0,step,maximum,2);

если закрытие ниже параболика на первом баре прибавим к значению параболика И

if(Close[1]<pb)
{
double pbplus=pb+N*Point;
}

if(Close[1]>pb)
{
double pbminus=pb-N*Point;
}

pbplus и pbminus будут содержать значения параболика с учетом N

Тогда начало кода будет так выглядеть ???
//+----------------------------------------------------------------------
int N=40
int buy=0;int sell=0;
int ParabolicPattern()
{
double pb=iSAR(NULL,0,step,maximum,1);
double pb1=iSAR(NULL,0,step,maximum,2);
if(Close[1]<pb)
{
double pbplus=pb+N*Point;
}

if(Close[1]>pb)
{
double pbminus=pb-N*Point;
}

buy=0;sell=0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY || OrderType()==OP_BUYSTOP){buy=1;}
if(OrderType()==OP_SELL || OrderType()==OP_SELLSTOP){sell=1;}
}
И дальше пошел блок открытия позиций ???

Если так, то тогда советник сам уже будет заменять все pb на pbminus и
pbplus ???

Или же надо в блоке отткрытия позиции это прописать,вот так ???

if(Close[2]<pb1 && Close[1]>pb && buy==0 )
{
double pbplus=pb+N*Point;
}
......????
 
Верх