в том то все и дело, что из библиотеки он подтягивает, если я правильно понимаю стандартный вариант CSignalDeM со всеми его "плюшками". а мне надо, чтобы он брал от DeMarker-a только моменты пересечения 30 и 70 в нужном направлении. и в эти моменты анализировал с трендом SAR-a (восходящий или нисходящий).
в том то все и дело, что из библиотеки он подтягивает, если я правильно понимаю стандартный вариант CSignalDeM со всеми его "плюшками". а мне надо, чтобы он брал от DeMarker-a только моменты пересечения 30 и 70 в нужном направлении. и в эти моменты анализировал с трендом SAR-a (восходящий или нисходящий).
плохо объясняю, да? :(
Вам нужно на основе стандартного сигнала CSignalDeM создать свой пользовательский сигнал. В нем можно будет безболезненно, для стандартной библиотеки, изменять любые условия. https://www.mql5.com/ru/articles/691 Эта статья Вам поможет.
Как сделать генератор торговых сигналов основанный на пользовательском индикаторе. Как создать пользовательский индикатор. Как получить доступ к данным пользовательского индикатора. Зачем нужна конструкция IS_PATTERN_USAGE(0) и model 0.
if( TradeSignal_01(Symbol(),Period())==-1 ) // условие для продаж
if( TradeSignal_01(Symbol(),Period())==1 ) //условие для покупок
функция сигналов:
int TradeSignal_01(string symToWork3="",int TF=0)
{
if(symToWork3=="")symToWork3=symToWork; if(TF==0)TF=TFToInd;
//--- ноль означает отсутствие сигналаint sig=0;//--- проверим хендлы индикаторовif(h_demark==INVALID_HANDLE)//--- если хэндл невалидный
{
//--- создадим его снова
h_demark=iDeMarker(symb,Period(),iDeMarkerma_period);
//--- выходим из функцииreturn(0);
}
else//--- если хэндл валидный
{
//--- копируем значения из индикатора в массивif(CopyBuffer(h_demark,0,0,3,DEMARK_BUF)<3) //--- и если данных меньше требуемых//--- выходим из функцииreturn(0);
//--- зададим индексацию в массиве как таймсерию if(!ArraySetAsSeries(DEMARK_BUF,true))
//--- в случае ошибки индексации выходим из функцииreturn(0);
}
if(h_SAR==INVALID_HANDLE)//--- если хэндл невалидный
{
//--- создадим его снова
h_SAR=iSAR(symb,Period(),iSARstep,iSARmaximum);
//--- выходим из функцииreturn(0);
}
else//--- если хэндл валидный
{
//--- копируем значения из индикатора в массивif(CopyBuffer(h_SAR,0,0,2,SAR_BUF)<2) //--- и если данных меньше требуемых//--- выходим из функцииreturn(0);
//--- зададим индексацию в массиве как таймсерию if(!ArraySetAsSeries(SAR_BUF,true))
//--- в случае ошибки индексации выходим из функцииreturn(0);
}
if ( DEMARK_BUF[shift] < DemarklevelSell && DEMARK_BUF[shift+1] > DemarklevelSell && SAR_BUF[shift] < SymbolInfoDouble(symb,SYMBOL_BID) )// openSell
sig=-1;elseif ( DEMARK_BUF[shift] > DemarklevelBUY && DEMARK_BUF[shift+1] < DemarklevelBUY && SAR_BUF[shift] > SymbolInfoDouble(symb,SYMBOL_BID) )// openBuy
sig=1;
else sig=0;
//--- возвращаем торговый сигналreturn(sig);
}
Я не использую стандартные библиотеки, поэтому показываю как есть в чистом виде.
Надеюсь я помог Вам как-то разобраться с данным добром.
Код советника дать не могу, Поймите правильно. Делал на своем платном шаблоне. что касается сигналов все написал как есть.
во вложении тот советник, который получился через генератор
Там библиотеки есть Сигнал*.mqh в папке инклюде
так я при создании советника добавил 2 сигнала DeMarker и SAR
или я что-то сделал не так?
при тестировании он строит оба индикатора, но сделки открывает по принципу, который я пока не могу понять ((( не хватает познаний.
так я при создании советника добавил 2 сигнала DeMarker и SAR
или я что-то сделал не так?
при тестировании он строит оба индикатора, но сделки открывает по принципу, который я пока не могу понять ((( не хватает познаний.
Изучайте библиотеки).
ответ немногим лучше, чем "погугли" (((
в том то все и дело, что из библиотеки он подтягивает, если я правильно понимаю стандартный вариант CSignalDeM со всеми его "плюшками". а мне надо, чтобы он брал от DeMarker-a только моменты пересечения 30 и 70 в нужном направлении. и в эти моменты анализировал с трендом SAR-a (восходящий или нисходящий).
плохо объясняю, да? :(
ответ немногим лучше, чем "погугли" (((
в том то все и дело, что из библиотеки он подтягивает, если я правильно понимаю стандартный вариант CSignalDeM со всеми его "плюшками". а мне надо, чтобы он брал от DeMarker-a только моменты пересечения 30 и 70 в нужном направлении. и в эти моменты анализировал с трендом SAR-a (восходящий или нисходящий).
плохо объясняю, да? :(
допустим.
в настройках:
функция сигналов:
Я не использую стандартные библиотеки, поэтому показываю как есть в чистом виде.
Надеюсь я помог Вам как-то разобраться с данным добром.
Код советника дать не могу, Поймите правильно. Делал на своем платном шаблоне. что касается сигналов все написал как есть.
хотя я бы сделал так:
т.е. все тоже самое, только для селла - Сар должен быть выше цены. для бая ниже цены. Ведь Сар в данном случае показывает тренд.
а кстати забыл.
в настрйоках
input int shift=0; // c какого бара бьерем сигнал 1 - с закрытого 0 - с текущего.
такой себе результат на стандартных настройках