Я написал этот код
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern int Dig = 2;
extern double Risk = 0.02;
extern int sl = 250;
extern int tilt = 60;
extern int bpt = 15;
extern int bpc1 = 50;
extern int bpc2 = 5;
extern int m1 = 101;
extern int m2 = 102;
void OnTick()
{
//---
int s = 0, s1 = 0, t = bpt;
double h1, h2, l1, l2;
for(int i = bpc2; i < bpc1; i++)
{
h1 = High[iHighest(Symbol(), t, MODE_HIGH, i + bpc2, 1)];
l1 = Low[iLowest(Symbol(), t, MODE_LOW, i + bpc2, 1)];
h2 = High[iHighest(Symbol(), t, MODE_HIGH, bpc2 + 1, i + bpc2)];
l2 = Low[iLowest(Symbol(), t, MODE_LOW, bpc2 + 1, i + bpc2)];
if((h2 - l2)/(h1 - l1) > 2)
{
{
if(Bid - h1 > (h1 - l1)/10)
{
s = 1;
break;
}
if(l1 - Ask > (h1 - l1)/10)
{
s = -1;
break;
}
}
}
}
Comment(h1," ",l1," ",h2," ",l2," ",s);
}
но проблема в том что при внесении параметра bpt (timeframe) и при изменении TF в терминале
меняются показания при этом не меняя bpt.
Что сделать чтобы это не происходило, потому что получается какой бы ТФ не выставлял для функции
берется ТФ на котором открыт терминал.
у тебя bpt глобальная переменная. она не изменяется на каждом тике.
и каждый тик у тебя происходит такое t = bpt;
в t заносится 15.
Так я о том же (что должно не менятся),
а выдаваемые данные меняются при
изменении ТФ в терминале не смотря
на то что bpt остается без изменения.
Так я о том же (что должно не менятся),
а выдаваемые данные меняются при
изменении ТФ в терминале не смотря
на то что bpt остается без изменения.
с чего ты взял, что они у тебя меняются?
пропиши вот так и посмотри значения
h1 = High[iHighest(Symbol(), t, MODE_HIGH, i + bpc2, 1)]; Alert(t); l1 = Low[iLowest(Symbol(), t, MODE_LOW, i + bpc2, 1)]; h2 = High[iHighest(Symbol(), t, MODE_HIGH, bpc2 + 1, i + bpc2)]; l2 = Low[iLowest(Symbol(), t, MODE_LOW, bpc2 + 1, i + bpc2)];
if(Bid - h1 > (h1 - l1)/10)
{
s = 1;
break;
}
if(Bid - h1 > (h1 - l1)/10) s = 1;
Это у Вас советник или скрипт. Прикрепите весь файл, попробую. И скажите, как Вы его используете!!!
#property strict extern int tilt = 60; extern int bpt = 15; extern int bpc1 = 50; extern int bpc2 = 5; void OnTick() { int s = 0, s1 = 0, t = bpt; double h1, h2, l1, l2; for(int i = bpc2; i < bpc1; i++) { h1 = High[iHighest(Symbol(), t, MODE_HIGH, i + bpc2, 1)]; l1 = Low[iLowest(Symbol(), t, MODE_LOW, i + bpc2, 1)]; h2 = High[iHighest(Symbol(), t, MODE_HIGH, bpc2 + 1, i + bpc2)]; l2 = Low[iLowest(Symbol(), t, MODE_LOW, bpc2 + 1, i + bpc2)]; if((h2 - l2)/(h1 - l1) > 2) { if(Bid - h1 > (h1 - l1)/10) s = 1; if(l1 - Ask > (h1 - l1)/10) s = -1; } } Comment(h1," ",l1," ",h2," ",l2," ",s); }
Если Вы согласны, что это эквивалентно Вашему коду - начну проверять
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Я написал этот код
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern int Dig = 2;
extern double Risk = 0.02;
extern int sl = 250;
extern int tilt = 60;
extern int bpt = 15;
extern int bpc1 = 50;
extern int bpc2 = 5;
extern int m1 = 101;
extern int m2 = 102;
void OnTick()
{
//---
int s = 0, s1 = 0, t = bpt;
double h1, h2, l1, l2;
for(int i = bpc2; i < bpc1; i++)
{
h1 = High[iHighest(Symbol(), t, MODE_HIGH, i + bpc2, 1)];
l1 = Low[iLowest(Symbol(), t, MODE_LOW, i + bpc2, 1)];
h2 = High[iHighest(Symbol(), t, MODE_HIGH, bpc2 + 1, i + bpc2)];
l2 = Low[iLowest(Symbol(), t, MODE_LOW, bpc2 + 1, i + bpc2)];
if((h2 - l2)/(h1 - l1) > 2)
{
{
if(Bid - h1 > (h1 - l1)/10)
{
s = 1;
break;
}
if(l1 - Ask > (h1 - l1)/10)
{
s = -1;
break;
}
}
}
}
Comment(h1," ",l1," ",h2," ",l2," ",s);
}
но проблема в том что при внесении параметра bpt (timeframe) и при изменении TF в терминале
меняются показания при этом не меняя bpt.
Что сделать чтобы это не происходило, потому что получается какой бы ТФ не выставлял для функции
берется ТФ на котором открыт терминал.