Ответить
27.07.2012, 06:05
Аватар для AlexeyVik
AlexeyVik AlexeyVik вне форума Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
3.1)После функции iCustom где нибудь в конце пишем строчку
Alert(arrow_up," ",arrow_down). Это делается для того чтобы узнать что(какое значение) нам возвращает индикатор.
3.2)Заходим в тестер. Запускаем советник с визуализацией. После окончания тестирования заходим в вкладку журнал тестера и смотрим что там нам Алерт писал.
3.3)Итак. Когда стрелок нет Алерт выдаёт (0 0). Вывод (0-стрелки вверх нету 0-стрелки вниз нету).
Если (1.2345 0). Вывод. Ага! Если появилась стрелка вверх, то индикатор возвпащает цену где появилась. Ну и наоборот.
Конечный итог. 0=нету сигнала. >0 есть сигнал.
Василий, извини, что не сдержался. Но... Это определяется гораздо проще. Существует окно данных которое открывается нажатием кнопки с изображением похожим на прицел или нажатием клавиш ctr+d Там и отображается показание индикаторов на баре который под курсором мышки.
03.08.2012, 21:14
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Василий, извини, что не сдержался. Но... Это определяется гораздо проще. Существует окно данных которое открывается нажатием кнопки с изображением похожим на прицел или нажатием клавиш ctr+d Там и отображается показание индикаторов на баре который под курсором мышки.
Та ну. Больше половины показаний индикаторов не показывается. Не то это, не то...

P.S. Например желтые точки.

Последний раз редактировалось eevviill; 03.08.2012 в 21:15. Причина: P.S.
05.08.2012, 12:25
Аватар для saenko
saenko saenko вне форума Интересующийся
Регистрация: 29.04.2011 / Сообщений: 26
Поблагодарили 3 раз(а) / Репутация: 4
eevviill...ты можешь вставить в свой шаблон вот эту функцию:

int GetIndexLastPos(string sy="", int op=-1, int mn=-1) {
datetime o;
int i, k=OrdersTotal(), r=-1;

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (o<OrderOpenTime()) {
o=OrderOpenTime();
r=i;
}
}
}
}
}
}
}
return(r);



}
05.08.2012, 12:43
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
eevviill...ты можешь вставить в свой шаблон вот эту функцию:

int GetIndexLastPos(string sy="", int op=-1, int mn=-1) {
datetime o;
int i, k=OrdersTotal(), r=-1;

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (o<OrderOpenTime()) {
o=OrderOpenTime();
r=i;
}
}
}
}
}
}
}
return(r);



}
Всмысле? ну возьми вставь в самом конце кода и пользуйся. Зачем меня просить?
24.08.2012, 17:22
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™

По умолчанию Урок 18 - подсчёт прибыли в пунктах

Пример.

Скрытый текст


PHP код:
1)int Profit_f()
{
2)double prof;
3)for(int i=OrdersTotal()-1i>=0i--)
 {
 
OrderSelect(i,SELECT_BY_POS);
 {
 if(
OrderMagicNumber()==MagicNumber)
 {
4)if (OrderType()==OP_BUY)  prof+=(Bid OrderOpenPrice())/Point;   
5)if (OrderType()==OP_SELLprof+=(OrderOpenPrice()-Ask) /Point;
 }
 }
 }
 
 return(
prof); 
}
[свернуть]




Пояснение.
1)Пишем пользовательскую функцию типа int(целые числа), так как пункты дробными быть не могут.
2)Объявляем переменную в которую будем записывать количество пунктов.
3)Перебераем все ордера и выбираем по нужному нам меджику.
4)Если ордер бай то записываем в нашу переменную (цену-цену открытия ордера)/размер 1-го пункта
5)Если ордер сел то записываем в нашу переменную (цену открытия ордера-цену)/размер 1-го пункта
24.08.2012, 17:34
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™

По умолчанию Урок 19 - робота по времени

Пример.

Скрытый текст


PHP код:
extern string V_R "Время работы";
extern int Start 6;
extern int Stop 22;
...
 
int start()
{
1)if(Hour()<Start || Hour()>=Stop) return;
... 
[свернуть]


Пояснение.
1)Здесь мы указали что, если текущий час меньше определённого нами или больше определённого нами, то мы завершаем работу програмы.
chocolate , hiys , Milord , romaks , saenko , sanch , SlavaR , sly 
24.08.2012, 17:41
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Так, не для урока. Во всех програмах где будете использовать проскальзывание желательно в инит прописывать автоматическое определение величины проскальзывания в зависимости от количества цифр в валютной паре.
PHP код:
int init()
{
if(
Digits == || 5slippage *=10;
...
return;

Milord , romaks , saenko , sly , Vip_di 
31.08.2012, 18:04
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™

По умолчанию Урок 20 - количество попыток открыть(модифицировать,зак рыть) ордер

Пример.

Скрытый текст

PHP код:
Open_MaxAttempts=4;
...
int start()
{
...
1)int ticket_op=0;
 
2)for (int j_op 0ticket_op && j_op Open_MaxAttemptsj_op++)
 {
 
3)while(IsTradeContextBusy()) Sleep(2000);
                             
 if(
условие на вход)
4)ticket_op=OrderSend(Symbol(),OP_BUY,Lot,Ask,slippage,NormalizeDouble(SLbuy,Digits),NormalizeDouble(TPbuy,Digits),comment,magic,0,Green);
 } 
[свернуть]



Пояснение.
1)Объявляем переменную в которую при открытии ордера будет записан тикет.
2)Будем пробовать открыть ордер(2-ое в цыкле) либо пока ордер не откроется(ticket_op=1), либо пока не истечёт количество попыток открыть ордер(j_op = Open_MaxAttempts);
3)Советник дальше не будет работать, пока не освободится торговый поток.
4)ticket_op
Если ордер откроется, то в эту переменную запишем тикет ордера.

Последний раз редактировалось eevviill; 31.08.2012 в 18:57. Причина: кр
02.09.2012, 19:49
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Не для урока.
Код можно вставлять где угодно.
После его написание всё что ниже(в функции int start()) будет выполнятся только раз на открытии свечи. Это нужно если не хотите чтобы советник работал по всем тикам(если в этом нет нужды) или надо сделать Alert чтобы только раз на свече звенел.

1) Это пищем в глобальных переменных.
PHP код:
static int prevtime 0
2) Это пишем в int init()
PHP код:
prevtime iTime(Symbol(),0,0); 
3) Это пишем в функции int start(), там где хотим чтобы после этой записи подальший код выполнялся только раз на открытии свечи.
PHP код:
if (iTime(Symbol(), 00) == prevtime) {Sleep(50);return(0);}
   
prevtime iTime(Symbol(),0,0); 


P.S. Наверно буду прекращать писать уроки. Никому не интересно. ОК. Не, я не обиделся, просто сделал выводы. Люди предпочитают иметь рыбу(готовый код) вместо удочки(знание mql4). Но часто бывает что того кто может дать рыбу, нету рядом и приходится идти в магазин(платное написание програмы).

Последний раз редактировалось eevviill; 02.09.2012 в 20:07. Причина: P.S.
06.09.2012, 12:06
Аватар для hoz
hoz hoz на форуме Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Уважаемый, eevviill, на самом деле всё нет так!
Например, я уже почти с самого начала наблюдаю за вашей веткой и очень благодарен вам за неё.
А что касается что кто-то предпочитает готовый код, то не факт. Например, я зная некоторые закономерности рынка хочу написать сам, и потому уже пару месяцев по тиху изучаю чьи-то коды.
А думаю что кому-то ветку не нужна, не стоит. Вот, например, ещё одна причина.

В этой ветке разве можно задавать вопросы по языку и коду, в котором что-то не понятно?
06.09.2012, 12:31
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Уважаемый, eevviill, на самом деле всё нет так!
Например, я уже почти с самого начала наблюдаю за вашей веткой и очень благодарен вам за неё.
А что касается что кто-то предпочитает готовый код, то не факт. Например, я зная некоторые закономерности рынка хочу написать сам, и потому уже пару месяцев по тиху изучаю чьи-то коды.
А думаю что кому-то ветку не нужна, не стоит. Вот, например, ещё одна причина.

В этой ветке разве можно задавать вопросы по языку и коду, в котором что-то не понятно?
Ну вообщето есть ветка отдельная для этого.
http://forexsystemsru.com/yazyk-programmirovaniya-mql4/65289-voprosy-po-mql4.html

А если есть вопросы по урокам, то пожалуйста. Или когда вставка в код как правильно сделать можна спросить. Тему подкинуть.
07.09.2012, 07:41
Аватар для hoz
hoz hoz на форуме Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
В общем-то у меня есть предложения по созданию уроков:
1. Урок по внедрению мани-менеджмента в сову. Меня интересует вариант как сделать лёгкий мартин с N-ым количеством колен.
2. Как сделать так чтоб ордера в сове открывались не на каждом тике, а на каждом баре. И, в частности, чтобы ордера открывались только если цена прошла определённое количество а определённом направлении, а не лепила ордера один на другой.

Желательно показать всё не примере.
07.09.2012, 08:07
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
В общем-то у меня есть предложения по созданию уроков:
1. Урок по внедрению мани-менеджмента в сову. Меня интересует вариант как сделать лёгкий мартин с N-ым количеством колен.
2. Как сделать так чтоб ордера в сове открывались не на каждом тике, а на каждом баре. И, в частности, чтобы ордера открывались только если цена прошла определённое количество а определённом направлении, а не лепила ордера один на другой.

Желательно показать всё не примере.
2)http://forexsystemsru.com/yazyk-programmirovaniya-mql4/67073-mql4-uroki-ot-eevviill-12.html#post487297
Там пример работы на открытии бара.
http://forexsystemsru.com/yazyk-programmirovaniya-mql4/67073-mql4-uroki-ot-eevviill-9.html#post463359
Подсчёт открытых ордеров.

1)http://forexsystemsru.com/yazyk-programmirovaniya-mql4/67073-mql4-uroki-ot-eevviill-8.html#post459801
Расчёт лота от депозита.
http://forexsystemsru.com/yazyk-programmirovaniya-mql4/67073-mql4-uroki-ot-eevviill-8.html#post459801
Всё это вместе(включая мартини) есть в моём шаблоне.


P.S. Последняя версия.
fix , hiys , hoz , Milord , Viko2000 , Vip_di 
08.09.2012, 00:37
Аватар для hoz
hoz hoz на форуме Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Бывает в совах я встречаю такие вот функции:
PHP код:
if(OrderSend(Symbol(),0,start_lot,Ask,3,Ask-sl*pt,Ask+tp*pt,"",magic,0,Blue)>
или
PHP код:
if(OrderSend(Symbol(),0,start_lot,Ask,3,Ask-sl*pt,Ask+tp*pt,"",magic,0,Blue)>=
Я так понимаю тут идёт проверка, мол открылся ордер или нет? Или это нечто иное?
Мне не совсем понятна причина использования знаков сравнения <,>,<=, ,=> с 0.

Последний раз редактировалось hoz; 08.09.2012 в 00:41.
08.09.2012, 02:11
Аватар для Norman Lito
Norman Lito Norman Lito вне форума Местный знаток
Регистрация: 06.07.2010 / Адрес: Мурманск-Николаев / Сообщений: 411
Поблагодарили 852 раз(а) / Репутация: 856
Дяденька eevviill, а можно этого зверя попросить данные в файл писать ? Вопрос на самом деле не болезненный, но интересный в плане практической торговли, есть пара идей и задумок....
Естественно, если идеи себя оправдают, появятся на форуме в доступе общем.

Хотя, идея пока № 1: Выкладывал я индюк, квант левел, сегодня ставил на тик график, ппз появляется быстрее, можно как то одно к другому прикрутить ?
Шаманам проще, куда бы ни шли - придут куда надо.
Выжрав ящик водки и пославши нытиков,
Собирались трейдеры пи#дить аналитиков.


Последний раз редактировалось Norman Lito; 08.09.2012 в 02:15.
08.09.2012, 08:17
Аватар для hoz
hoz hoz на форуме Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
Дяденька eevviill, а можно этого зверя попросить данные в файл писать ? Вопрос на самом деле не болезненный, но интересный в плане практической торговли, есть пара идей и задумок....
Естественно, если идеи себя оправдают, появятся на форуме в доступе общем.

Хотя, идея пока № 1: Выкладывал я индюк, квант левел, сегодня ставил на тик график, ппз появляется быстрее, можно как то одно к другому прикрутить ?
Norman Lito, для начала его нужно вскрыть.
08.09.2012, 08:31
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Бывает в совах я встречаю такие вот функции:
PHP код:
if(OrderSend(Symbol(),0,start_lot,Ask,3,Ask-sl*pt,Ask+tp*pt,"",magic,0,Blue)>
или
PHP код:
if(OrderSend(Symbol(),0,start_lot,Ask,3,Ask-sl*pt,Ask+tp*pt,"",magic,0,Blue)>=
Я так понимаю тут идёт проверка, мол открылся ордер или нет? Или это нечто иное?
Мне не совсем понятна причина использования знаков сравнения <,>,<=, ,=> с 0.
Рекомендую тебе часто пользоватся кнопкой f1. Если её нажать на OrderSend, то в справке(снизу) будет написано что если ордер открылся, то функция возвращает тикет ордера. Ну понятно, он больше 0. А если не удалось открыть ордер, то возвращает -1. Тоесть да, ты прав. Это проверка открыт ли ордер.
08.09.2012, 08:37
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Дяденька eevviill, а можно этого зверя попросить данные в файл писать ? Вопрос на самом деле не болезненный, но интересный в плане практической торговли, есть пара идей и задумок....
Естественно, если идеи себя оправдают, появятся на форуме в доступе общем.

Хотя, идея пока № 1: Выкладывал я индюк, квант левел, сегодня ставил на тик график, ппз появляется быстрее, можно как то одно к другому прикрутить ?
Что за квант левел и ппз?

Так индикатор по любому котировки в файл засовывает.
Хранится в MT4/history/сервер/валюта.M2
19.09.2012, 11:04
Аватар для sochinik
sochinik sochinik вне форума Активный участник
Регистрация: 10.05.2012 / Адрес: Курск-Краснодар / Сообщений: 326
Поблагодарили 169 раз(а) / Репутация: 170
  • Отправить сообщение для sochinik с помощью ICQ Отправить сообщение для sochinik с помощью MSN Отправить сообщение для sochinik с помощью Skype™
Сегодня будем учится применять трейлинг стоп. Может кто не знает, то это подтягивание СЛ после определённого количества пунктов в+.

Трейлинг стоп.
PHP код:
int TrailingStop 10;
 
1)OrderSelect(0,SELECT_BY_POS);
2)if(OrderMagicNumber()==Magic
 {
3)if(OrderType()==OP_BUY && Bid-OrderOpenPrice()>TrailingStop*Point && OrderStopLoss()<Bid-TrailingStop*PointOrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);
if(
OrderType()==OP_SELL && OrderOpenPrice()-Ask>TrailingStop*Point && OrderStopLoss()>Ask+TrailingStop*PointOrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Blue);
 }
4)OrderModify(); 
Пояснение.
1)Для начала выбираем ордер с которым будем работать.
2)Проверяем ордер на меджик.
3)Здесь указываем условие трейлинга для ордера бай.
3.1)OrderType()==OP_BUY проверяем тип открытого ордера.
3.2)Bid-OrderOpenPrice()>TrailingStop*Point текущая цена-цена открытия ордера>количество пунктов трейлинга.
3.3)OrderStopLoss()<Bid-TrailingStop*Point стоп лос ордера<текущая цена-количество пунктов трейлинга.
4)OrderModify(); функция модификации ордера(СЛ,ТП,цена отложенного ордера).

Не понял что это? Попробовал компилировать этот код как советника- даёт ошибку : " 'Magic' - variable not defined ....." так где ошибка и какая?
19.09.2012, 11:16
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,029 раз(а) / Репутация: 9029
  • Отправить сообщение для eevviill с помощью Skype™
Не понял что это? Попробовал компилировать этот код как советника- даёт ошибку : " 'Magic' - variable not defined ....." так где ошибка и какая?
Это пользовательская функция, а не готовый советник.
hiys , sochinik 
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 18:41. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO