Уроки по программированию на языке MQL4 от eevviill

eevviill

Заблокирован
Вртуальный СЛ и ТП

Урок делать не буду, так как там нечего расказывать.

Пример.
PHP:
extern int Virtual_TP=24;


double point = 0.0001;

int Start{
...
if(Bid>OrderOpenPrice()+Virtual_TP*point) OrderClose(...);

...
}
 

eevviill

Заблокирован
Я не автор, пароль qwe2011qwe

а так не мешало-бы и ветку почитать сообщение 79
А зачем? Лучше посмотреть видео, понять но не много, а потом сказать програмирование не для меня. Ничего не могу освоить.
 

gorrec41

Новичок форума
ветку я прочитал уже раза три всю может я конечно туплю но тыкни носом идиота пожайлуста где про пересечение:question:
а за виртуальн стоп лос спасибо
 
Последнее редактирование:

eevviill

Заблокирован
ветку я прочитал уже раза три всю может я конечно туплю но тыкни носом идиота пожайлуста где про пересечение:question:
а за виртуальн стоп лос спасибо
Там где тема с советником МА. Там цена пересекает МА.

Например пересичение ценой МА вверх.
PHP:
MA1=iMA(...,1);
MA2=iMA(...,2);

Close[2]<MA2 && Close[1]>MA1 //тоесть цена на позапрошлом баре меньше МА, а на прошлом больше
 
Последнее редактирование:

Aterk

Новичок форума
Спасибо eevviill, уроки что надо, много нужного и на простом языке.
Подскажите как с отложенными ордерами работать, а точнее как выставлять не все ордера согласно условию MaxOrders=10, а скажем пачкой по 2 ордера при условии, что предыдущие отложенные стали рыночными.
 

eevviill

Заблокирован
Спасибо eevviill, уроки что надо, много нужного и на простом языке.
Подскажите как с отложенными ордерами работать, а точнее как выставлять не все ордера согласно условию MaxOrders=10, а скажем пачкой по 2 ордера при условии, что предыдущие отложенные стали рыночными.
Тебе поможет подсчёт ордеров. На эту тему можно сделать урок.
 

Aterk

Новичок форума
Последнее редактирование:

eevviill

Заблокирован
урок 17 - подсчёт ордеров

Сегодня будем разбиратся как подсчитать открытые или отложенные ордера.

Пользовательская функция
PHP:
int buy,sell,sell_stop,buy_stop;
...

void CountOpenPositions()
{
buy=0;
sell=0;
buy_stop=0;
sell_stop=0;


1)for (int i=OrdersTotal()-1; i>=0; i--)
 {
   2)OrderSelect(i,SELECT_BY_POS);
   {
   3)if(OrderMagicNumber()==magic)
   {        
   4)if(OrderType()==OP_BUY)      buy++;
   if(OrderType()==OP_SELL)     sell++; 
   if(OrderType()==OP_BUYSTOP)      buy_stop++;
   if(OrderType()==OP_SELLSTOP)     sell_stop++; 
   }              
   }
 }

}
5)


Пояснение
1)Перебор ордеров.
2)Выбор ордеров по позиции в терминале.
3)Проверка ордера на соответствие с междиком.
4)Если выбраный ордер бай, то к переменной buy добавляем 1.
5)После прописки CountOpenPositions(); (в функции старт), переменные buy,sell,sell_stop,buy_stop будут хранить количество ордеров.
 

Aterk

Новичок форума
Так-так, чуть проясняется).
Если мы будем прогонять через эту функцию каждый выставленный ордер, а в ограничении к примеру if buy_stop< нужного нам кол-ва отложек, то будем выставлять следующую отложку buystop. так? а выставив необходимое кол-во остановимся и будем ждать пока отложка сработает, тем самым - 1 отложка и +1 рыночный и вернемся мы опять к if buy_stop< нужного нам кол-ва отложек.
 

eevviill

Заблокирован
Так-так, чуть проясняется).
Если мы будем прогонять через эту функцию каждый выставленный ордер, а в ограничении к примеру if buy_stop< нужного нам кол-ва отложек, то будем выставлять следующую отложку buystop. так? а выставив необходимое кол-во остановимся и будем ждать пока отложка сработает, тем самым - 1 отложка и +1 рыночный и вернемся мы опять к if buy_stop< нужного нам кол-ва отложек.
Да. Функция каждый тик будет подсчитывать количество всех ордеров. А там уже можно манипулировать как хочешь.
 

eevviill

Заблокирован
Shabl (2)

Это новый шаблон советника.
Что уже в нём есть.
1)Пересчёт всех параметров на 4-ох знак + ATR на паре с JPY расчитывается как на обычной.
2)Есть работа по времени.
3)Фильтр ATR.
4)Выход по обратному сигналу.
5)Безубыток
6)SL && TP
7)Проскальзывание
8)Коментарий к ордерам
9)+Лот в зависимости от баланса
10)+трейлинг стоп
11)+подчистил код

Как и в прошлой версии надо просто в функции
PHP:
int Sig_f()
прописать условие на вход.
 

Вложения

  • Shabl (2).mq4
    5,3 КБ · Просмотры: 76

Aterk

Новичок форума
Да. Функция каждый тик будет подсчитывать количество всех ордеров. А там уже можно манипулировать как хочешь.

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

eevviill

Заблокирован
В целом конечно очень понятно, но блин на деле, чесно говоря не все так хорошо. eevviill на примере можно показать, как эту функцию вызывать, так сказать чтобы уловить что, где и в каком месте.
Функции типа void надо просто прописать перет тем где надо.
PHP:
CountOpenTrades();
Глянь в шаблон.
А если не знаешь(ну вдруг) где писать, то напиши сразу после функции старт
PHP:
int Start()
{
CountOpenTrades();
 

Aterk

Новичок форума
Функции типа void надо просто прописать перет тем где надо.
PHP:
CountOpenTrades();
Глянь в шаблон.
А если не знаешь(ну вдруг) где писать, то напиши сразу после функции старт
PHP:
int Start()
{
CountOpenTrades();

Хорошо, пробую сложить все до кучи. Посмотрим что получится. Еще раз спасибо.
 

eevviill

Заблокирован
Ну вот что собственно получилось. В чем ошибка???

Посмотреть вложение 81277
А что там не так? У меня открылось сразу 2 отложенных ордера.

Увидел.
Через эту строчку советник не доходит до подсчёта и открытия ордеров. Кстати. Для чего она?
if (n>0 || Profit!=0) return;
 
Последнее редактирование:

Aterk

Новичок форума
А что там не так? У меня открылось сразу 2 отложенных ордера.

Все верно, отложки открылись, НО если цена одну из отложек превратила в рыночный ордер, условие нарушается и по идее должен быть открыт еще один отложенный на растоянии +delta или -delta, в зависимости какую отложку зацепила цена.
Или я что-то путаю?
 
Верх