Перейти к содержанию

Обучение языку MQL4 под MetaTrader 4


Рекомендуемые сообщения

Обучение языку MQL4 под MetaTrader 4 Опубликовано
59 минут назад, MikR0ReR сказал:
  • @diodio ПРиветствую. Ордера закрываются исключительно по Тейк-профиту или Стоп-лоссу. Никакие свопы, комиссии, даже спред не влияют* на закрытие ордера, их не нужно учитывать.
  • Не забываем, что покупки открываются по Аску, а закрываются по Биду
  • И на оборот, продажи открываются по Биду, а закрываются по Аску.
  • Значит цена не дошла до Тейк-профита или Стоп-лосса. Если это робот еще может быть не правильно указана цена.

 

П.С. * свопы, комиссии, даже спред нужно учитывать что бы сделка выходила в плюс т.е в прибыль. Но они ни какого влияния не имеют на закрытие ордера.

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

Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано
1 минуту назад, diodio сказал:

хотя при этом цена пересекла черту на графике тейкпрофита

  • Как я уже говорил смотреть нужно на разные цены.

При покупке смотрим на Бид. Цена бид должна коснутся стоп приказа.

При продаже смотрим на Аск. Цена аск должна коснуться стоп приказа.

7 минут назад, diodio сказал:

и еще одно но, цена пересекла эту черту но ордер пока что оставался в минусе.

  • Как я уже говорил тейк-профит нужно правильно рассчитывать в зависимости от свопа, комиссии и спреда.

Будем считать что Тейк-Профит это ДОХОД. Своп, Комиссия и Спред это РАСХОД. Мы будем в ПРИБЫЛИ  если ДОХОД будет > (больше) РАСХОДА.

Т.П > Свопа, Комиссии и Спреда

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Доброго времени суток!

Опять встал вопрос программирования. 

Поделитесь пожалуйста кусочком кода.

Необходимо найти цену первого ордера в сетке ордеров.

Теоретически представляю , а практически мозгов не хватает допереть. 

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

Заранее Благодарен за содействие!

double FindLastOrderPrice(int otype)
{
   int oldticket;
   double oldopenprice=0;
   ticket=0;
   
   for(int cnt=OrdersTotal()-1; cnt>=0; cnt-- )
   {
       if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
       {
          if ( OrderSymbol()==Symbol() && OrderMagicNumber()== Magic && OrderType()==otype) 
          {
             oldticket = OrderTicket();
             if(oldticket>ticket)
             {
                ticket = oldticket;
                oldopenprice = OrderOpenPrice();
             }
          }
       }
    
   }
   return(oldopenprice);
}

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Видимо тут эксплуатируется порядок присвоения тикетов. Более поздние имеют больший номер. На мой взгляд довольно спорная концепция. Внутри дня, да будет работать, а вот как перешагнет через выходные или праздники - непонятно. Если такая относительности Вас устраивает, то поменяйте "больше на меньше", ну и названия переменных конечно. Пардон что так скупо ответил, без примера, с телефона не кайф заморачиваться, могу вечером ещё написать. А вообще я бы ещё добавил проверку по времени. Тот же принцип, только сравнивать нужно время открытия. 

 

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
4 часа назад, Logic сказал:

Тот же принцип, только сравнивать нужно время открытия. 

Спасибо! Нашел код. Не так просто найти в сети интернет что требуется. Написал сюда.  Да действительно там сравнивается время открытия ордеров и выбирается первый ордер. Просто я сам пока не понимаю сам как это записать в коде. Теперь все работает.

Изменено пользователем mishastar
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте! 

Написал функцию:

 

//+------------------------------------------------------------------+
//| 18 функция подсчета количества роста/падения баров гистограммы       |
//+------------------------------------------------------------------+
int MovementBars(int timeline, int type, int shift)
  {
   int  res=0;
   int res_up=0;
   int res_dn=0;
   double ind_2=0;
   double ind_0=0;
   double ind_1=0;
 
   int period=0;
   
 if(timeline==0)
      period=0;
   if(timeline==1)
     {
      if(MovementBars(0,1,0)>0)
         period=MovementBars(0,1,0);
      if(MovementBars(0,0,0)>0)
         period=MovementBars(0,0,0);
     }
     
   for(int i=period+shift; i<=Bars-1+shift; i++)
     {
      ind_0=iAO(NULL,0,i);
      ind_1=iAO(NULL,0,i+1);
      ind_2=iAO(NULL,0,i+2);
    

      if(ind_0>ind_1)
         res_up++;
      if(ind_0>ind_1&&ind_1<=ind_2)
         break;

      if(ind_0<=ind_1)
         res_dn++;
      if(ind_0<=ind_1&&ind_1>ind_2)
         break;

     }

   if(type==1)
     {
      res=res_up;
     }

   if(type==0)
     {
      res=res_dn;
     }

   return res;
  }

..............

в OnTick() коммент выглядит так:

 Comment("\n  MovementBars(up 0) = ", IntegerToString(MovementBars(0,1,0)),
    "\n  -----------------",
    "\n  MovementBars(up 1) = ", IntegerToString(MovementBars(1,1,0)),
    "\n  -----------------",
   "\n  MovementBars(dn 0) = ", IntegerToString(MovementBars(0,0,0)),
    "\n  -----------------",
    "\n  MovementBars(dn 1) = ", IntegerToString(MovementBars(1,0,0))   
       
    );

 

Суть функции - выдавать количество баров роста/ падения гистограммы на разных участках в зависимости от переменных timeline и type. Но!! Иногда функция работает некорректно (см. скрин). Прошу посмотреть правильность написания функции и дать замечания по устранению ошибок.

Спасибо!!

 

 

 

 

1111111.PNG.dafe2427c2a2971cbf0fb05d0428bb90.PNG

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
2 минуты назад, usver73 сказал:

Вызов функции  MovementBars внутри себя- это так задумано?

Да. А иначе как определить начало периода timeline=1?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
31 минуту назад, Владимир Стариков сказал:

Да. А иначе как определить начало периода timeline=1?

а какую смысловую нагрузку несет timeline?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Гистограмма либо падает либо растет.

Задача:

1. найти количество баров от нулевого до последнего в серии ( timeline=0).

2. найти  количество баров от последнего в серии  ( timeline=0) до последнего в серии ( timeline=1) .

 определить направление баров в каждой из серий.

 

Ссылка на сообщение
Поделиться на другие сайты

  • 2 weeks later...
Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте!

Подскажите пожалуйста как правильно при открытии ордера( покупки или продажи) записать данные (в массив, структуру).

Хочу написать советник отслеживающий сигналы и открывающий ордера с разных таймфреймов. А также производить манипуляции с ордерами ( перевод в безубыток, трейлингстоп или перенос "ордера" из одного массива в другой) исходя из того на каком таймфрейме был открыт ордер и как меняется рынок.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
3 часа назад, chww сказал:

Подскажите пожалуйста как правильно при открытии ордера( покупки или продажи) записать данные (в массив, структуру).

Хочу написать советник отслеживающий сигналы и открывающий ордера с разных таймфреймов.

Задача звучит достаточно обще..
Но если хотите использовать структуры, то примерно так:

Спойлер

 


//  объявляем структуру с нужным набором переменных для хранения данных
struct OrdInfo
       {
         double   open_price;
         int      ticket;
         int      type;
         datetime open_time;
       }; 
// объявляем массив структуры с типом данных    OrdInfo    
OrdInfo array_orders[];        
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   if(OrderSend(_Symbol,OP_BUY,lot,Ask,0,sl,tp,"",Magic))>0)
   {
      int arrSize = ArraySize(array_orders); // определяем размер массива
      ArrayResize(array_orders,arrSize+1);   // увеличиваем его размер на 1
      
      // в последний индекс записываем данные по вновьоткрытому ордеру
      array_orders[arrSize].ticket =  OrderTicket();
      array_orders[arrSize].type   =  OrderType();
      array_orders[arrSize].open_price =  OrderOpenPrice();
      array_orders[arrSize].open_time  =  OrderOpenTime();  
   }
}
//+------------------------------------------------------------------+

 

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Спасибо usver73!

И если Вас не затруднит объясните как выделить тикет.

Например в рынке находятся 5 открытых ордеров, структурированные  данные по каждому  находятся в массиве.

С поступлением новой цены обращаемся к массиву ,к элементу структуры open_price. в цикле находим разницу 

между текущей ценой и ценой открытия каждого из ордеров и если условие соответствует разнице производим модификацию именно этого одного ордера.

 

 

 

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
7 часов назад, chww сказал:

Спасибо usver73!

И если Вас не затруднит объясните как выделить тикет.

Например в рынке находятся 5 открытых ордеров, структурированные  данные по каждому  находятся в массиве.

С поступлением новой цены обращаемся к массиву ,к элементу структуры open_price. в цикле находим разницу 

между текущей ценой и ценой открытия каждого из ордеров и если условие соответствует разнице производим модификацию именно этого одного ордера.

 

 

 

А зачем, если не секрет, вам для этого структуры и массивы?

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

а если советника перезапустить - он, наоборот, забудет все открытые ордера.

Если вам нужно на каждом тике проверять некое условие для каждого ордера - можно просто пробежаться по списку открытых ордеров в МТ, это недорогая операция, оно уже в памяти все.

структуры становятся нужны, когда вам нужно оптимизировать анализ совокупности: скажем, вам в одной части кода нужно посчитать все ваши ордера в покупку и продажу раздельно, а в другой - посчитать их уровни безубытка.

чтобы в каждом таком месте не перебирать по-новой, есть смысл завести структуру, все в ней сразу вычислять и обновлять один раз на тике

А перебор ордеров лучше всего делать выборкой OrderSelect - так вы по крайней мере обращаетесь к открытым ордерам

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
29 минут назад, Rigal сказал:

А зачем, если не секрет, вам для этого структуры и массивы?

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

у вопрошающего был вопрос- как работать со структурами.
Я просто привел пример.
Конечная цель мне не понятна, поэтому я не предлагал пример как руководство к действию

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
51 минуту назад, usver73 сказал:

у вопрошающего был вопрос- как работать со структурами.
Я просто привел пример.
Конечная цель мне не понятна, поэтому я не предлагал пример как руководство к действию

Ваш ответ был совершенно уместен в контексте - я комментирую исключительно дальнейшее развитие этого диалога.

 

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
20 часов назад, chww сказал:

Здравствуйте!

Подскажите пожалуйста как правильно при открытии ордера( покупки или продажи) записать данные (в массив, структуру).

Хочу написать советник отслеживающий сигналы и открывающий ордера с разных таймфреймов. А также производить манипуляции с ордерами ( перевод в безубыток, трейлингстоп или перенос "ордера" из одного массива в другой) исходя из того на каком таймфрейме был открыт ордер и как меняется рынок.

Хорошим примером работы со структурами можно считать доступный в открытом коде на этом форуме Beat The Market 2

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Ответ для Rigal!

Оговорюсь сразу все знания о программировании я получил из видеоуроков на этом сайте.

Моя цель написать советник ,работающий одновременно на нескольких таймфреймах одной валютной пары.

Идея проста и не секретна, открыть ордер пораньше и удержать в рынке подольше,получить максимум прибыли.

И еще, мое видение рынка, тренды разворачиваются на минутках, просто делают(приблизительно) 50 попыток,15 мин.-10 попыток.

А теперь стратегия.Советник открыл несколько ордеров на М15,дальше движение переростает на Н1, при этом худшие ордера закрываем при признаках отката, а лучшие оставляем, но теперь они будут подчинятся условиям на часовке( далее на Н4).Решение вижу в заполнении массивов тикетами и переброске их(тикетов) из одного массива в другой, исходя из определенных условий.

Если это можно запрограммировать как то по другому, подскажите.

 

 

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 02.04.2021 в 14:53, chww сказал:

Ответ для Rigal!

Оговорюсь сразу все знания о программировании я получил из видеоуроков на этом сайте.

Моя цель написать советник ,работающий одновременно на нескольких таймфреймах одной валютной пары.

Идея проста и не секретна, открыть ордер пораньше и удержать в рынке подольше,получить максимум прибыли.

И еще, мое видение рынка, тренды разворачиваются на минутках, просто делают(приблизительно) 50 попыток,15 мин.-10 попыток.

А теперь стратегия.Советник открыл несколько ордеров на М15,дальше движение переростает на Н1, при этом худшие ордера закрываем при признаках отката, а лучшие оставляем, но теперь они будут подчинятся условиям на часовке( далее на Н4).Решение вижу в заполнении массивов тикетами и переброске их(тикетов) из одного массива в другой, исходя из определенных условий.

Если это можно запрограммировать как то по другому, подскажите.

 

 

Если Rigalу не понравится вопрос, то он не ответит

  • Хм... 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 03.04.2021 в 02:53, chww сказал:

А теперь стратегия.Советник открыл несколько ордеров на М15,дальше движение переростает на Н1, при этом худшие ордера закрываем при признаках отката, а лучшие оставляем, но теперь они будут подчинятся условиям на часовке( далее на Н4).Решение вижу в заполнении массивов тикетами и переброске их(тикетов) из одного массива в другой, исходя из определенных условий.

Если это можно запрограммировать как то по другому, подскажите.

@Rigal в общих чертах написал, как можно делать..
У Вас есть некие признаки, по которым ордера в рынке признаются "худшими" или "лучшими".
Рискну предположить, что это текущий профит и/или время жизни ордера. Эту информацию можно получить безо всяких массивов/структур.
С "худшими" ордером все понятно- Вы их закрываете.
Если ордер в рынке и время его жизни большое, значит он "попал в струю" и логика его сопровождения подчиняется некоему алгоритму со старшего ТФ. Соответственно Вы его или закрываете или оставляете в рынке..
Если все таки хочется держать информацию об ордерах в массиве, то добавьте в структуру 
int TF
где будет храниться информация- по какому алгоритму(таймфрейму) сопровождать ордер.
Ну и чистить сам массив  нужно будет постоянно.
 

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
21 час назад, Lexa000 сказал:

Если Rigalу не понравится вопрос, то он не ответит

ух, какая у меня жесткая репутация :)

не отвечаю я потому, что не вижу - мое имя упомянули, а собачку не поставили, нотификация не всплыла

 

Ответ @usver73 в очередной раз звучит осмысленно - ну и я уже описал подход, в целом.

 

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

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

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

А если есть способ восстановить это состояние, возникает вопрос, стоит ли его держать вообще, или проще вычислять его каждый раз, когда оно вам нужно.

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

Но при этом я бы постарался избегать "запоминания" чего-то между тиками, это неудачный подход.

 

Отвечая на ваш вопрос о том, как выделить тикет в массиве - это можно сделать, обратившись к элементу по индексу.

Используя пример @usver73 выше:

//  объявляем структуру с нужным набором переменных для хранения данных
struct OrdInfo
       {
         double   open_price;
         int      ticket;
         int      type;
         datetime open_time;
       }; 
// объявляем массив структуры с типом данных    OrdInfo    
OrdInfo array_orders[];        
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   if(OrderSend(_Symbol,OP_BUY,lot,Ask,0,sl,tp,"",Magic))>0)
   {
      int arrSize = ArraySize(array_orders); // определяем размер массива
      ArrayResize(array_orders,arrSize+1);   // увеличиваем его размер на 1
      
      // в последний индекс записываем данные по вновьоткрытому ордеру
      array_orders[arrSize].ticket =  OrderTicket();
      array_orders[arrSize].type   =  OrderType();
      array_orders[arrSize].open_price =  OrderOpenPrice();
      array_orders[arrSize].open_time  =  OrderOpenTime();  
   }
  PrintOrders();
}

void PrintOrders() {
  for(int i = ArraySize(array_orders) - 1; i >= 0; i--) {
    Print("Order #", i, ": ", EnumToString(array_orders[i].type),
          ", ticket: ", array_orders[i].ticket,
          ", open_price: ", DoubleToStr(array_orders[i].open_price, Digits),
          ", open_time: ", TimeToStr(array_orders[i].open_time, TIME_DATE|TIME_MINUTES));
  }
}
//+------------------------------------------------------------------+

 

  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

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

Функция тралла:

Спойлер

extern int    TrailingStop    = 50; // стоп
extern int    TrailingStep    = 50; // шаг


void Trailing()
  {
   for(int d=OrdersTotal()-1; d>=0; d--)
     {
      if(OrderSelect(d,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*Point || OrderStopLoss()==0)
                 {
                  if(OrderStopLoss()<Bid -(TrailingStop+TrailingStep)*Point || OrderStopLoss()==0)
                    {
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*Point,Digits),0,0))
                        Print("Ошибка модификации ордера на покупку!");
                    }
                 }
              }
            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()-Ask>TrailingStop*Point || OrderStopLoss()==0)
                 {
                  if(OrderStopLoss()>Ask+(TrailingStop+TrailingStep)*Point || OrderStopLoss()==0)
                    {
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*Point,Digits),0,0))
                        Print("Ошибка модификации ордера на продажу!");
                    }
                 }
              }
           }
        }
     }
  }

Думаю может в этом моменте написать так к примеру (если тип ордера на бай):

Спойлер

вместо:

if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*Point,Digits),0,0))

 

написать это:

if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop-20*Point,Digits),0,0))

 

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
47 минут назад, diodio сказал:

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

иными словами, после активации трала СЛ должен всегда быть ниже цены (для БАЙ) ? Т.е. цена пошла вниз, СЛ тоже переставляем вниз?
А тогда в чем смысл трала?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
11 минут назад, usver73 сказал:

иными словами, после активации трала СЛ должен всегда быть ниже цены (для БАЙ) ? Т.е. цена пошла вниз, СЛ тоже переставляем вниз?
А тогда в чем смысл трала?

Нет, трал будет идти как шел, ниже спускаться не будет, он будет в отдалении от цены на 20 пунктов допустим, как страховка чтоб сразу не закрылся ордер. У меня длинные позиции и цена прыгает.

Изменено пользователем diodio
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
57 минут назад, diodio сказал:

У меня длинные позиции и цена прыгает.

вот давно нашел набор разных тралов. Смотри, модифицируй под себя.
А в коде ошибка.
Аналог из библиотеки TrailingStairs()

TrailingFuncLib.mq4

  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...