[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 24

 

Уже запускали. Он долго не предсказывал сигнал на открытие, а воздух подавался от того же таймера.

Короче, помер Пауль.

 
Может кто подскажет: вопрос банальный до смешного, но не могу его который день его разрулить. Как заставить советник открыть ордер при открытии свечи, при этом если он закроется на этой же свече, не открываться до появления новой свечи. Тут проблема заключается в том, что при появлении сигнала открывается ордер, допустим ордер на этой же свече закрывается, соответственно сигнал в силе, но уже не актуален, т.к. робот написан под цену открытия. Помню, что был нужный способ, но вспомнить никак не могу.
 

Флаг называется.

Как ордер открывается, присваиваете OrderIsOpened=true. При открытии новой свечи - ...=false, ну и все такое.

 
tara:

Флаг называется.

Как ордер открывается, присваиваете OrderIsOpened=true. При открытии новой свечи - ...=false, ну и все такое.

Спасибо. А как закодировать открытие новой свечи?
 
kwadrad:
Спасибо. А как закодировать открытие новой свечи?


Как угодно,- все в Ваших руках. Например:

- при изменении времени на размер ТФ (проще всего)

- при отличии "новой" цены открытия от "старой"

все по той же технологии "флага".

Не за что.

 
kwadrad:
Спасибо. А как закодировать открытие новой свечи?
Изучайте с поиском.
 
Fartarantula:

Здравствуйте уважаемые mqlшники. Вот и моя первая проблема по части кода.

Собственно трендовая. Задача-индикатор трендовая с координатами 1-ая линия= мах прошлого и позапрошлого дня и 2-ая линия=мин прошлого и позапрошлого дня.

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

При создание объекта трендлайн виноват параметр datetime. Как до него добраться ума не приложу. Необходимо вычислять время образования цены экстремумов. Судя по всему, эта информация

заложена в минутном тф. и тут у меня стопор. Как определять datetime при смене тф, чтобы осуществлялась перерисовка трендовой и координаты цеплялись за соответсвующие экстремумам бары.

К сожалению поиск ничего не дал по этой теме. Буду благодарен за советы.

Я так понимаю затруднение вызывает Сама процедура написания кода.

Предлагаю Вам следующий вариант решения данной задачи:

// Ваша трендовая по High на дневном таймфрейме
datetime Time1 = iTime(Symbol(), PERIOD_D1, 1);
double   High1 = iHigh(Symbol(), PERIOD_D1, 1);
datetime Time2 = iTime(Symbol(), PERIOD_D1, 2);
double   High2 = iHigh(Symbol(), PERIOD_D1, 2);
ObjectCreate("High_Trend", OBJ_TREND, 0, Time2, High2, Time1, High1, 0, 0);

// Ищем точное время High'ев на таймфрейме PERIOD
int PERIOD = PERIOD_M5;

int BarTime1 = iBarShift(Symbol(), PERIOD, Time1);
int BarTime2 = iBarShift(Symbol(), PERIOD, Time2);
Time1 = iTime(Symbol(), PERIOD, 
      Highest(Symbol(), PERIOD, MODE_HIGH, BarTime1, 1));
Time2 = iTime(Symbol(), PERIOD, 
      Highest(Symbol(), PERIOD, MODE_HIGH, BarTime2, BarTime1+1));

ObjectSet("High_Trend", OBJPROP_TIME2, Time1);
ObjectSet("High_Trend", OBJPROP_TIME1, Time2);

Единственная проблема состоит в том, что если советник с данным кодом запустить в тестере, а переменной PERIOD присвоить значение PERIOD_M1, то обе функции iBarShift возвращают -1, т.е. функции не удалось найти в истории бар на ТФ M1 с таким временем... Почему так происходит, не знаю.

Разобрался почему! На тестируемом периоде отсутствовала история по барам M1.

 
alex12:

Мне нужно просмотреть поведение цены за всю историю инструмента по МА, но индикатор не рисуется при установке на график.

В чем проблема ?

При компиле = 0 и 0.

Кстати - Виснет Терминал МТ4 !

Поставьте значение входных параметров History и Aver_Bars поменьше и терминал перестанет "виснуть".

И с чего Вы взяли, что индикатор не рисуется при установке на график? У Меня вот что нарисовал Ваш индикатор, когда Я кинул на сегодняшний график по паре EUR/USD ТФ M1:


:D :D :D

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

Здравствуйте, уважаемые форумчане.

Конечно, порция вопросов от новичка. Пытаюсь вникать в mql4, до этого программ никогда не делал, поэтому вопросы могут оказаться совсем примитивными. Но самому никак не получается.

 Решил немного "помучить" отображение объемов, отрисовав не гистограмму, а линию, но с некоторой обработкой. Кусочек кода должен иметь следующий смысл. Начиная со второго бара, однонаправленного с предыдущим баром, (оба вверх), рисуется объем именно со второго бара. В итоге, в окне индикатора получаю прерывистую линию, которая действительно рисуется со второго бара вверх, НО почему-то не во всех случаях. Прерывистой линия получается т.к. остальные условия ее отрисовки вообще не определены, это дело будущего. Но вот самому разобраться почему линия рисуется не на каждом втором баре вверх никак не могу. Помогите, пожалуйста.

Вот код. Если будут еще замечания по другим оплошностям в коде, буду только рад. 

double dVolume=Volume[i];
double vback1=Volume[i+1];

         {
         double vteor12=(dVolume+vback1)/2;
            if (Close[i+1]>Open[i+1] && Close[i]>Open[i]) double UP12=(Close[i]-Open[i+1])*1000; else UP12=0;
            if (UP12!=0) double vrealUP12=(dVolume+vback1)/UP12; else vrealUP12=0;
            if (Close[i+1]>Open[i+1])
            if (Close[i]>Open[i])
            ExtVolumesBuffer[i]=dVolume+vteor12-vrealUP12;
            if (ExtVolumesBuffer[i]<0) ExtVolumesBuffer[i]=0;
              }
Причина обращения: