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

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


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

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

Добрый день.

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

Нужно что то типа:

for(i=0; i<10; i++)

{

   time1 = iTime(NULL, PERIOD_MN1, i);

   time2 = time1 + 60*60*24*31;

   TrendLine(time1, time2);   // Моя функция линии по цене открытия месяца.

}

 

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

 

P.S. Начало и конец линий не совпадают.... Либо есть перехлест либо разрыв... Очень заметно если включены разделители периодов. Хотелось чтобы начало и конец совпадали с разделителями периодов.

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

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

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

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

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

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

Перейти

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

Перейти

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

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

Пробовал (((

Но  iTime(NULL, PERIOD_MN1, i+1) всегда возвращает 1.ММ.ГГГГ  хотя торговля может начинаться и  с 3.ММ.ГГГГ если 1 и 2 это выходные.....

Все равно спасибо 

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

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

Но  iTime(NULL, PERIOD_MN1, i+1) всегда возвращает 1.ММ.ГГГГ  хотя торговля может начинаться и  с 3.ММ.ГГГГ если 1 и 2 это выходные.....

Это так, но почему не нравится? на графике выходные отсутствуют, поэтому линия будет строится от первого бара. см. рис. как раз июнь с 3 числа открылся, линия с 01.06.2019 00:00

sampl1.png

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

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

Всем Доброго дня! Просмотрел урок "Как написать форекс скрипт на MQL " и попытался для себя написать скрипт. Будьте добры подскажите почему не открываются ордера?

Sell.ex4 Sell.mq4

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

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

Всем Доброго дня! Просмотрел урок "Как написать форекс скрипт на MQL " и попытался для себя написать скрипт. Будьте добры подскажите почему не открываются ордера?

Sell.ex4 6 \u043a\u0411 · 0 загрузок Sell.mq4 2 \u043a\u0411 · 3 загрузки

Ошибка заключается в том, что в момент отправки ордера(-ов), вы не правильно определяете TakeProfit и StopLoss

 int ticket = OrderSend( Symbol(), Otype, Lots, Bid, Slippage, 20, 20, " ", Magic, 0, clrYellow);

Обратите внимание на данную статью,

https://docs.mql4.com/ru/trading/ordersend

Внизу статьи есть неплохой пример.

 

В примере вашего скрипта для открытия ордеров SELL, и при условии, что у вас 5 значный счет, а TakeProfit и StopLoss вы хотите установить 20 пунктов(4-х знак)

Код будет выглядеть вот так:

 int ticket = OrderSend( Symbol(), Otype, Lots, Bid, Slippage, Bid + 200 * Point , Bid - 200 * Point, " ", Magic, 0, clrYellow);

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

 

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

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

Всем Доброго дня! Просмотрел урок "Как написать форекс скрипт на MQL " и попытался для себя написать скрипт. Будьте добры подскажите почему не открываются ордера?

Sell.ex4 6 \u043a\u0411 · 0 загрузок Sell.mq4 2 \u043a\u0411 · 0 загрузок

Нужно анализировать ошибки функцией GetLastError() https://docs.mql4.com/ru/check/getlasterror

Пример:

Print("Ошибка откратия ордера! "+IntegerToString(GetLastError()));

В результате чего выдает код 130

Sell EURUSD,H1: Ошибка откратия ордера! 130

Ошибка 130
Лезем в справочник: Коды возврата торгового сервера https://docs.mql4.com/ru/constants/errorswarnings/enum_trade_return_codes

И видим

130

ERR_INVALID_STOPS

Неправильные стопы

То, что коллега написал выше.

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

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

Всем привет!

Пытаюсь привязать советника к своему счёту, через mql код. Выдаёт ошибку: " 'start' - function can be declared only in the global scope ". 

Может кто подскажет в чём проблема? 

Безымянный.jpg

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

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

Всем привет!

Пытаюсь привязать советника к своему счёту, через mql код. Выдаёт ошибку: " 'start' - function can be declared only in the global scope ". 

Может кто подскажет в чём проблема? 

Как я понимаю это декомпилированный код. Может быть функции старт у тя две, что говорит "function already defined and has body". Главную оставляем, а вторю переименовываем.

Или она внутри другой функции, что говорит "function can be declared only in the global scope", так тоже не может быть. Ее нужно вынести и сделать глобальной.

Точнее нужен код.

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

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

Как я понимаю это декомпилированный код. Может быть функции старт у тя две, что говорит "function already defined and has body". Главную оставляем, а вторю переименовываем.

Или она внутри другой функции, что говорит "function can be declared only in the global scope", так тоже не может быть. Ее нужно вынести и сделать глобальной.

Точнее нужен код.

Да вроде нет, оригинал. Сейчас прикреплю. 

Trio_Dancer_4.4.5_R3.zip

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

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

Да я вставил её внутрь, другой функции)) В кодирование не особо силён, вы могли бы сказать куда вставить файл защиты?

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

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

Да я вставил её внутрь, другой функции))

int start() должно быть одно. В коде уже есть на 253 строке. со скрина вы пытаетьсь вставить в 289, так нельзя.

Если вы о if(AccountNumber()!=111111) .........., то можно вставить в 246 строку.

 

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

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

MyStopLoss.mq4

Друзья помогите дописать код!
Во вложенном файле есть URL, пробежаться по URL и сохранить последние данные "time1,time2,price_sell,price_buy,sell_stop,buy_stop" и сохранить их в переменную.
Спасибо.

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 30.06.2019 в 17:16, awals сказал:

Во вложенном файле есть URL, пробежаться по URL и сохранить последние данные "time1,time2,price_sell,price_buy,sell_stop,buy_stop" и сохранить их в переменную.

awals  

файл не прикрепился, URL - Uniform Resource Locator — унифицированный указатель ресурса, используется как стандарт записи ссылок на объекты в Интернет.

Что значит по нему "пробежаться"? ОК, нашли какие-то данные, т.к. данные имеют разный тип их в одну структуру сохранить?

Пишите подробнее/яснее что хотите получить.

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

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

Подскажите, почему советник тралит не только свои ордера, но и ордера открытые вручную

фрагмент трала

 

int start()
{
   bool BuySignal=false;
   bool SellSignal=false;
   if (HourEnd==TimeHour(TimeCurrent()))
     {
       DeleteOrders();
     }
   
   if (TrailingStop!=0)
               {
                  Trailing();
                           
               }

далее тело программы

 

функция трала

//+------------------------------------------------------------------+  
void Trailing()
{
   
   for(int x=OrdersTotal() - 1; x>= 0; x--) 
     {
      
      if(OrderSelect(x,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && TrailingStop>0)
        
       
           
      {
        if(OrderType()==OP_BUY)
         
           
            
            {                 
              if(Bid-OrderOpenPrice()>TrailingStop*Point)
               {
                 if(OrderStopLoss()<Bid-TrailingStop*Point)
                 {
                     double sl = NormalizeDouble(Bid - TrailingStop*Point, Digits);
                     OrderModify(OrderTicket(),OrderOpenPrice(), sl,OrderTakeProfit(),0,Green);
                 }
               }
            }
         
       }
       
        if(OrderType()==OP_SELL)
         {
           
            
                            
              if((OrderOpenPrice()-Ask)>TrailingStop*Point)
               {
                 if ((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                    { 
                      sl = NormalizeDouble(Ask+TrailingStop*Point, Digits);
                     OrderModify(OrderTicket(),OrderOpenPrice(), sl,OrderTakeProfit(),0,Red);
                     
                    }
               }
            
         }   
       
     }
      
}
//+------------------------------------------------------------------+

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

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

Всем открытым ордерам в ручную через терминал присваивается OrderMagicNumber 0(ноль), следовательно если у вас Magic равен 0, то функция будет траллить и ордера открытые в ручную.

Изменено пользователем Ent
Не смог вставить спойлер с цитатой предыдущего поста
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

в том то и дело что магик не ноль в советнике

Тип переменной Magic какой?

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

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

awals  

файл не прикрепился, URL - Uniform Resource Locator — унифицированный указатель ресурса, используется как стандарт записи ссылок на объекты в Интернет.

Что значит по нему "пробежаться"? ОК, нашли какие-то данные, т.к. данные имеют разный тип их в одну структуру сохранить?

Пишите подробнее/яснее что хотите получить.

Добрый День OLL_,
это URL: http://tlap.com//wp-content/indicators/stops.php?symbol=EURUSD, с которого охота получить Данные.
Там Данные записаны в Jsone. Данные которые нужны это имена последние в URL

"time1":1562065200
"time2":1562068800
"price_sell":1.127
"price_buy":1.1325
"sell_stop":2.3356
"buy_stop":1.9159

И эти данные записать в отдельные переменные, простите выразиться не правильно.
Например "time1" записать в переменную "datetime время = 1562065200 " и так далее.
Уже всё пери пробивал ни как не могу разобраться.
Помогите.
Спасибо.

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

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

Ок, начинает проясняться. Что у нас есть? в каком месте остановились? Файл ответа сервера получили? если нет, читаем http://tlap.com/mql4-metod-webrequest/ цель получить файл и записать его в переменную string, потом можно вывести её в Print и посмотреть что получилось. (лучше делать скрипт)

Смотри здесь: https://www.mql5.com/ru/forum/133523

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

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

Ок, начинает проясняться. Что у нас есть? в каком месте остановились? Файл ответа сервера получили? если нет, читаем http://tlap.com/mql4-metod-webrequest/ цель получить файл и записать его в переменную string, потом можно вывести её в Print и посмотреть что получилось. (лучше делать скрипт)

Смотри здесь: https://www.mql5.com/ru/forum/133523

Данные с сайта получаю, выводил их в Файл всё как на сайте, я не понимаю как записать актуальные данные в отдельные переменные!

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

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

Данные с сайта получаю, выводил их в Файл всё как на сайте, я не понимаю как записать актуальные данные в отдельные переменные!

Это большое дело! Осталось немного, скинь файл сюда, по ссылке не открывается.

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

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

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

Это большое дело! Осталось немного, скинь файл сюда, по ссылке не открывается.

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

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

Json_Test.mq4

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

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

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

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

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

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

Войти

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

Войти

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


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

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