Как на текущем графике использовать данные других графиков

 
Здравствуйте.
У меня такой вопрос. Как на текущем графике использовать данные других графиков. Например, торгуем в евродоллар 15М, а фильтруем данными евродоллар 1H.
И еще вопрос: как сделать чтобы по сигналу открывалась только одна позиция (а то бывает что позиция открылась, и покаким-то условиям на этом же баре закрылась, то тут же открывается еще такая же позиция).
Если можно приведите пример в виде кода. (я еще только начинаю програмировать и абстрактные советы сложно воспринимаю).

int start()
{
double ma_tm, ma_tm1, ma_ts, ma_ts1;
double ma_dm, ma_ds;
int cnt, ticket, total;

}
ma_tm=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
ma_tm1=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
ma_ts=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
ma_ts1=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
ma_dm=iMACD("EURUSD",PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
ma_ds=iMACD("EURUSD",PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
//задали все данные для МАСD


// Условие открытие позиции BUY
if(ma_dm>ma_ds&&ma_ts1>ma_tm1&&ma_tm>ma_ts)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",16384,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
// Условие открытие позиции SELL
if(ma_ds>ma_dm&&ma_tm1>ma_ts1&&ma_ts>ma_tm)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",16384,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}

Заранее спасибо.
 

Посмотри здесь https://book.mql4.com/ru и будет тебе счастье

 
Vinin:

Посмотри здесь https://book.mql4.com/ru и будет тебе счастье



Такой массив информации. Просмотрел все, но ответ на свой вопрос не нашел.
 
Kostay:
Здравствуйте.
У меня такой вопрос. Как на текущем графике использовать данные других графиков. Например, торгуем в евродоллар 15М, а фильтруем данными евродоллар 1H.
И еще вопрос: как сделать чтобы по сигналу открывалась только одна позиция (а то бывает что позиция открылась, и покаким-то условиям на этом же баре закрылась, то тут же открывается еще такая же позиция).
Если можно приведите пример в виде кода. (я еще только начинаю програмировать и абстрактные советы сложно воспринимаю).


Твой советник и так обращается к данным Н1

ma_dm=iMACD("EURUSD",PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
ma_ds=iMACD("EURUSD",PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);

Для работы открытия только одной позиции необходимо или ставить флаг, который снимается на следующем баре или при изменении условий, или работать на открытии бара. Тогда и ложные срабатывания исчезнут. Нулевой бар только формируется и его состояние еще неопределенно.

 
Kostay:

И еще вопрос: как сделать чтобы по сигналу открывалась только одна позиция (а то бывает что позиция открылась, и покаким-то условиям на этом же баре закрылась, то тут же открывается еще такая же позиция).



Инересно по каким закрылвсь? Ни стопов ни клоуз... Старший ТФ тут ни причем. Если сигнал есть, - позиция открывается. Если хотите на одном баре не более одной позиции. Закройте область открытия позиций контролем нового бара.

Например так

 if (iTime(NULL,0,0)>PrevTime) 
 {
   PrevTime=iTime(NULL,0,0); 
   ....
   Проверка условия открытия, открытие..
   ....
 }
 тралы, модификации и т.д.
 
Vinin:

Для работы открытия только одной позиции необходимо или ставить
флаг, который снимается на следующем баре или при изменении
условий, или работать на открытии бара. Тогда и ложные срабатывания
исчезнут. Нулевой бар только формируется и его состояние еще
неопределенно.


Как можно поставить флаг?
 
Kostay:
Vinin:

Для работы открытия только одной позиции необходимо или ставить
флаг, который снимается на следующем баре или при изменении
условий, или работать на открытии бара. Тогда и ложные срабатывания
исчезнут. Нулевой бар только формируется и его состояние еще
неопределенно.


Как можно поставить флаг?


bool flag=false;

int start(){

int ticket;

..........

// обработка условий для входа

if (.......) flag=flase

if (!flag) {

ticket=OrderSend(......);

}

if (ticket>0) flag=true;

}

Примерно так.

 
Чтоб не открывалась на том же баре позиция если она уже была, можно смотреть по истории позиций, когда была закрыта последняя позиция, и если бар тот же то не открывать уже.
 
Я кажется, понимаю, почему позиция в ту же сторону открывается сразу после закрытия предыдущей. Дело не только 
в контроле позиций, но и в том, что условие открытия выполняется не в точке пересечения,  а на временном отрезке.
То есть сигнал не дискретный, а продолжительный. Естественно, позиция закрылась по ТП или СЛ, сигнал продолжает
поступать, и на следующем баре снова открывается такая же позиция. Пересмотрите условия открытия позиций, например,
опишите пересечение на младшем ТФ при условии нужного тренда на старшем ТФ. И будет Вам счастье.
 
granit77:
Я кажется, понимаю, почему позиция в ту же сторону открывается сразу после закрытия предыдущей. Дело не только
в контроле позиций, но и в том, что условие открытия выполняется не в точке пересечения, а на временном отрезке.
То есть сигнал не дискретный, а продолжительный. Естественно, позиция закрылась по ТП или СЛ, сигнал продолжает
поступать, и на следующем баре снова открывается такая же позиция. Пересмотрите условия открытия позиций, например,
опишите пересечение на младшем ТФ при условии нужного тренда на старшем ТФ. И будет Вам счастье.

К сожалению, как я понимаю, позиция открывается на том же баре. Но обсуждать с такими людьми (как вы Гранит) это не стоит. Они (Вы же у себя )  давно уже приняли решение и все сделали, что бы такого не было. А человек пока такого не может сделать, но он справится (если захочет), хотя зря отказался от книги. Там двольно много хороших идей, и не только для начинающих. Сам кое-что почерпнул. (Хотя для нас это кое-что звучит по разному, для меня это значит довольно много). Чужой опыт всегда хорош.
 
Vinin:
..Чужой опыт всегда хорош.
Я во многом автора темы понимаю, сам почти такой. Не хватает систематичности, терпения, усидчивости, чтобы
методично "писать прописи", когда кажется, что осталось только подправить "советник", и пошла работа.
Развращает и факультативность занятия форексом, живем же как-то без его доходов.  Однако, если припрет, вмиг
станем усердными первоклашками. У меня друг, переехав в Штаты, выяснил, что он никто и звать его никак, и если
он не зацепится за перспективную специальность, которой он раньше не знал, то так и будет на пару с филиппинцами 
ДСП кроить. Куда только лень и вальяжность делась! Мозоли на заднице набил, а в белые воротнички за два года
вылез и сейчас следит, чтобы молодежь ему пятки не оттаптывала.
А дома стимула серьезного нет.
Причина обращения: