Scorp1978>>: rid спасибо хорошая идея (от тиков придется тогда отказываться), фильтр от сильных убыточных движений ты имеешь ввиду "если сумарный профит меньше чего то, то закрыть все позиции".......
Нет. Я имел ввиду изначальный вход - "/если //размер первой свечи больше заданного значения, то торговля запрещена..."
Добрый день всем! С праздником всех, кто считает этот день праздником! //--------------------------------------- Вопрос встал. Вот функция, которая выдает(расчитывает) среднестатистический спред между инструментами за последние NBars баров.
double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
int Timeframe, int NBars)
{
int k;
double N = 0;
double Sum = 0;
for(k = 0; k < iBars(Symbol_1,Timeframe); k++)
{
if(N == NBars)
break;
int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k),true);
if(symb2Shift != -1)
{
Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift);
N++;
}
}
double avarageSpread = Sum / N;
return(avarageSpread);
}
Пож. подскажите как мне задать //------------- int k; double N = 0; double Sum = 0; for(k = 0; k < iBars(Symbol_1,Timeframe); k++) { if(N == NBars) //------------------------ чтобы функция возвращала среднестатистическое значение спреда не за все NBars баров, а за NBars баров кроме последнего. Иначе говоря, мне нужно, чтобы самый посл. бар не участвовал в расчете ! Или даже чтобы заданное число самых посл. баров не участвовало в расчете. Можно это как-то "организовать" ? (Взамен могу дать хороший вход по рынку в понедельник, с 3 мая. С большой вероятностью последующего профитного закрытия!)
double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
int Timeframe, int NBars, int NBarsSkip)
{
int k;
double N = 0;
double Sum = 0;
if(NBars > iBars(Symbol_1,Timeframe)) NBars=iBars(Symbol_1,Timeframe); // если н больше чем баров на графике то обрезаем
if(NBarsSkip >= NBars) NBarsSkip=0; // если пропускаем баров больше/равно чем NBars, то ничего не пропускаем
for(k = NBarsSkip; k < NBars; k++)
{
int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k),true);
if(symb2Shift != -1)
{
Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift);
N++;
}
}
double avarageSpread = Sum / N;
return(avarageSpread);
}
NBarsSkip задает количество пропущенных баров, которые не будут участвовать в расчете. в расчете будут участвовать c NBarsSkip по NBars.
Благодарю, NCI ! Сейчас пришлю вам в личку перспективный вход. Ещё вопрос. У меня вот только сейчас появилась мысль. А если сделать совсем просто. Задать вот так: Вместо for(k = 0; k < iBars(Symbol_1,Timeframe); k++) задать for(k = M; k < iBars(Symbol_1,Timeframe); k++), гдеМ - число исключаемых из расчета баров. Это будет работать ?
я честно говоря не заметил сначала, что NBars должно считать за бары только бары существующие на двух инструментах одновременно, тогда выложенный мной код не отвечает такой логике. и конструкциясM тоже будет не корректной. в таком случае можно сделать так:
double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
int Timeframe, int NBars, int NBarsSkip)
{
int k;
double N = 0;
int NReal = 0;
double Sum = 0;
for(k = 0; k < iBars(Symbol_1,Timeframe); k++)
{
if(N == NBars)
break;
int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k),true);
if(symb2Shift != -1)
{
N++;
if(N>NBarsSkip)
{
Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift);
NReal++; // счетчик Н которые не пропущены и посчитаны
}
}
}
if(NReal==0) return(0); // так как у нас не получилось рассчитать ни одного бараelse
{
double avarageSpread = Sum / NReal;
return(avarageSpread);
}
}
Благодарю. У меня почему-то сначала не компеллировался код, -возвращалась ошибка (скобка) Пока я не перенес из названия функции "...., int NBarsSkip " во внешние параметры советника extern int NBarsSkip =2 Не пойму, почему была ошибка. Но когда перенес - то всё норм стало.
Прочел ветку от корки до корки - все 145 страниц. всем респект: rid, leonid553, fduch, neoclassic, getch, forex-k, goldtrader, timbo, fortrader. Информации дофигищи, еще перевариваю. Главный вывод для себя сделал такой: тут надо копать, оно того стоит. P.s.: вообще толковая ветка, флуда почти не было. Еще раз спасибо 2rid
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
rid спасибо хорошая идея (от тиков придется тогда отказываться), фильтр от сильных убыточных движений ты имеешь ввиду "если сумарный профит меньше чего то, то закрыть все позиции".......
Нет. Я имел ввиду изначальный вход - "/если
//размер первой свечи больше заданного значения, то торговля запрещена..."
//---------------------------------------
Вопрос встал. Вот функция, которая выдает(расчитывает) среднестатистический спред между инструментами за последние NBars баров.
Пож. подскажите как мне задать
//-------------
int k;
double N = 0; double Sum = 0;
for(k = 0; k < iBars(Symbol_1,Timeframe); k++)
{
if(N == NBars)
//------------------------
чтобы функция возвращала среднестатистическое значение спреда не за все NBars баров,
а за NBars баров кроме последнего.
Иначе говоря, мне нужно, чтобы самый посл. бар не участвовал в расчете ! Или даже чтобы заданное число самых посл. баров не участвовало в расчете.
Можно это как-то "организовать" ?
(Взамен могу дать хороший вход по рынку в понедельник, с 3 мая. С большой вероятностью последующего профитного закрытия!)
Сейчас пришлю вам в личку перспективный вход.
Ещё вопрос.
У меня вот только сейчас появилась мысль.
А если сделать совсем просто. Задать вот так:
Вместо for(k = 0; k < iBars(Symbol_1,Timeframe); k++)
задать
for(k = M; k < iBars(Symbol_1,Timeframe); k++),
где М - число исключаемых из расчета баров.
Это будет работать ?
Пока я не перенес из названия функции "...., int NBarsSkip "
во внешние параметры советника
extern int NBarsSkip =2
Не пойму, почему была ошибка.
Но когда перенес - то всё норм стало.
Прочел ветку от корки до корки - все 145 страниц. всем респект: rid, leonid553, fduch, neoclassic, getch, forex-k, goldtrader, timbo, fortrader. Информации дофигищи, еще перевариваю. Главный вывод для себя сделал такой: тут надо копать, оно того стоит. P.s.: вообще толковая ветка, флуда почти не было. Еще раз спасибо 2rid
Благодарю!
"Информация к размышлению".
С понедельника спред ZM-ZL (мука-масло, 5:6)
!