Автор Тема: Обучение языку MQL4 под MetaTrader 4  (Прочитано 430993 раз)

Оффлайн Partorius

  • Новичок
  • *
  • Сообщений: 12
  • Вес голоса: 0
  • Partorius Новенький
    • Просмотр профиля
    • Награды
  • Опыт торговли: 1-3 года
  • Рейтинг: 3
Обучение языку MQL4 под MetaTrader 4
« Ответ #3360 : Январь 12, 2017, 01:52:21 pm »
  • 0
Разбираюсь с советником, при компиляции пишет ошибку 'AutoTimeSettings should be (fal…' - parameter passed as reference, variable expected делает ссылку на эту строку

if (AutoTimeSettings) {
MessageBoxA(0, "AutoTimeSettings should be (false) at the test mode. Using ManualGMT_Offset", "Error", 0);

в чем может быть дело?

Trade Like A Pro

Обучение языку MQL4 под MetaTrader 4
« Ответ #3360 : Январь 12, 2017, 01:52:21 pm »


Оффлайн afert

  • Новичок
  • *
  • Сообщений: 14
  • Вес голоса: 0
  • afert Новенький
    • Просмотр профиля
    • Награды
  • Опыт торговли: < 1 года
  • Рейтинг: 1
Обучение языку MQL4 под MetaTrader 4
« Ответ #3361 : Январь 12, 2017, 02:32:44 pm »
  • 0
Уважаемые программисты! Возможно глупый вопрос, но не могу сообразить.  Собираю советник по индикатору  и двум таймфреймам Н1 и М15, на Н1 есть сигнал и пока он держится на М15 может быть несколько потенциальных входов. Подскажите как прописать условие чтобы брался только первый или один?

Оффлайн scherbakovss

  • Интересующийся
  • **
  • Сообщений: 69
  • Вес голоса: 0
  • scherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собой
  • Финансовая свобода - это когда Вы создали что то,
    • Просмотр профиля
    • Награды
  • Опыт торговли: 1-3 года
  • Рейтинг: 10
Обучение языку MQL4 под MetaTrader 4
« Ответ #3362 : Январь 12, 2017, 04:14:41 pm »
  • 0
Подскажите на примере как правильно все открытые сделки в мт4 записать у файл и прочитать их,бо реально,что не делал пишет только последний ордер и все.А если ордер закрылся то запись о нем не стираеться из файла.

//Запись
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  //--- Открываем файл
   int h=FileOpen("log.txt",FILE_READ|FILE_WRITE|FILE_TXT);
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
   
            if(OrderType()==OP_BUY)
              {
               type=0;
               lot=OrderLots();
               sl=OrderStopLoss();
               tp=OrderTakeProfit();
               
                sl=NormalizeDouble(sl,Digits);
               tp=NormalizeDouble(tp,Digits);
               s=OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp;
                FileWrite(h,s);
              }
                                           
         if(OrderType()==OP_SELL)
         {
             type=1;
              lot=OrderLots();
               sl=OrderStopLoss();
             tp=OrderTakeProfit();
             
              sl=NormalizeDouble(sl,Digits);
               tp=NormalizeDouble(tp,Digits);
               s=OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp;
                FileWrite(h,s);
            }
             if(OrderType()==OP_BUYLIMIT)
          {
            type=2;
              lot=OrderLots();
           sl=OrderStopLoss();
             tp=OrderTakeProfit();
             
              sl=NormalizeDouble(sl,Digits);
               tp=NormalizeDouble(tp,Digits);
               s=OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp;
                FileWrite(h,s);
            }
            if(OrderType()==OP_SELLLIMIT)
              {
            type=3;
             lot=OrderLots();
             sl=OrderStopLoss();
            tp=OrderTakeProfit();
           
             sl=NormalizeDouble(sl,Digits);
               tp=NormalizeDouble(tp,Digits);
               s=OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp;
                FileWrite(h,s);
             }
            if(OrderType()==OP_BUYSTOP)
              {
                type=4;
               lot=OrderLots();
               sl=OrderStopLoss();
               tp=OrderTakeProfit();
               
                sl=NormalizeDouble(sl,Digits);
               tp=NormalizeDouble(tp,Digits);
               s=OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp;
                FileWrite(h,s);
               }
              if(OrderType()==OP_SELLSTOP)
               {
                type=5;
                lot=OrderLots();
                sl=OrderStopLoss();
                tp=OrderTakeProfit();
               
                 sl=NormalizeDouble(sl,Digits);
               tp=NormalizeDouble(tp,Digits);
               s=OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp;
                FileWrite(h,s);
              }
             
               RefreshRates();                             
       
         
        }//OrderSelect
        FileClose(h);
     }//

Оффлайн vitek01

  • Постоялец
  • ***
  • Сообщений: 110
  • Вес голоса: 134277
  • vitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форума
  • Награды Торгую без лишнего на графике
    • Просмотр профиля
    • Награды
  • Опыт торговли: Нет
  • Рейтинг: 49
Обучение языку MQL4 под MetaTrader 4
« Ответ #3363 : Январь 13, 2017, 11:10:51 am »
  • 0
Подскажите на примере как правильно все открытые сделки в мт4 записать у файл и прочитать их,бо реально,что не делал пишет только последний ордер и все.А если ордер закрылся то запись о нем не стираеться из файла.



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

Оффлайн scherbakovss

  • Интересующийся
  • **
  • Сообщений: 69
  • Вес голоса: 0
  • scherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собой
  • Финансовая свобода - это когда Вы создали что то,
    • Просмотр профиля
    • Награды
  • Опыт торговли: 1-3 года
  • Рейтинг: 10
Обучение языку MQL4 под MetaTrader 4
« Ответ #3364 : Январь 13, 2017, 11:18:22 am »
  • 0
навскидку думаю что ты просто перезаписываешь переменные и остается один последний ордер.
А как правильно?

Оффлайн vitek01

  • Постоялец
  • ***
  • Сообщений: 110
  • Вес голоса: 134277
  • vitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форумаvitek01 Ключевая фигура форума
  • Награды Торгую без лишнего на графике
    • Просмотр профиля
    • Награды
  • Опыт торговли: Нет
  • Рейтинг: 49
Обучение языку MQL4 под MetaTrader 4
« Ответ #3365 : Январь 13, 2017, 12:05:56 pm »
  • 0
навскидку думаю что ты просто перезаписываешь переменные и остается один последний ордер.
А как правильно?

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

Оффлайн Viktor M.

  • Новичок
  • *
  • Сообщений: 2
  • Вес голоса: 0
  • Viktor M. Новенький
    • Просмотр профиля
    • Награды
  • Опыт торговли: Нет
  • Рейтинг: 1
Обучение языку MQL4 под MetaTrader 4
« Ответ #3366 : Январь 13, 2017, 03:34:48 pm »
  • 0
Здравствуйте, уважаемый Сергей Ака! В MQL eсть функция GetTickCount, которая возвращает число msec, прошедших с момента запуска системы. Скажите пожалуйста, возможно-ли с помощью этой функции определить время между тиками т.е. GetTickCount_2 - GetTickCount_1 = t(msec), и, как это правильно прописать в коде MQL. И ещё, пожалуйста, как в условном операторе прописать направление движения цены (вверх или вниз). Спасибо!

Оффлайн scherbakovss

  • Интересующийся
  • **
  • Сообщений: 69
  • Вес голоса: 0
  • scherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собой
  • Финансовая свобода - это когда Вы создали что то,
    • Просмотр профиля
    • Награды
  • Опыт торговли: 1-3 года
  • Рейтинг: 10
Обучение языку MQL4 под MetaTrader 4
« Ответ #3367 : Январь 13, 2017, 03:37:04 pm »
  • 0
Жаль,что в моем вопросе отсутствую специалисты способные помочь по записи и чтению всех типов ордеров в файл с обновлением если ордер закрылся.

Оффлайн SilverKZ

  • Постоялец
  • ***
  • Сообщений: 109
  • Вес голоса: 617218
  • SilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форума
    • Просмотр профиля
    • Награды
  • Опыт торговли: < 1 года
  • Рейтинг: 139
Обучение языку MQL4 под MetaTrader 4
« Ответ #3368 : Январь 13, 2017, 04:13:04 pm »
  • 0
FileWrite(h,s);
FileWriteString(h, s + "\r\n") вам в помощь.

Но лучше так
s += OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp + "\r\n";
FileWrite(h,s);
...
}//OrderSelect
FileWrite(h,s);
FileClose(h);
« Последнее редактирование: Январь 13, 2017, 04:37:03 pm от SilverKZ »

Оффлайн scherbakovss

  • Интересующийся
  • **
  • Сообщений: 69
  • Вес голоса: 0
  • scherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собой
  • Финансовая свобода - это когда Вы создали что то,
    • Просмотр профиля
    • Награды
  • Опыт торговли: 1-3 года
  • Рейтинг: 10
Обучение языку MQL4 под MetaTrader 4
« Ответ #3369 : Январь 13, 2017, 04:45:18 pm »
  • 0
FileWriteString(h, s + "\r\n") вам в помощь.
Куда конкретно записать  FileWriteString(h, s + "\r\n")


void OnTick()
  {
  //--- Открываем файл
   int h=FileOpen("log.txt",FILE_READ|FILE_WRITE|FILE_TXT);
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
   
            if(OrderType()==OP_BUY)
              {
               type=0;
               lot=OrderLots();
               sl=OrderStopLoss();
               tp=OrderTakeProfit();
               
                sl=NormalizeDouble(sl,Digits);
               tp=NormalizeDouble(tp,Digits);
             s += OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp + "\r\n";
                FileWriteString(h,s);
              }
                                           
         if(OrderType()==OP_SELL)
         {
             type=1;
              lot=OrderLots();
               sl=OrderStopLoss();
             tp=OrderTakeProfit();
             
              sl=NormalizeDouble(sl,Digits);
               tp=NormalizeDouble(tp,Digits);
             s += OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp + "\r\n";
                FileWriteString(h,s);
            }
             if(OrderType()==OP_BUYLIMIT)
          {
            type=2;
              lot=OrderLots();
           sl=OrderStopLoss();
             tp=OrderTakeProfit();
             
              sl=NormalizeDouble(sl,Digits);
               tp=NormalizeDouble(tp,Digits);
              s += OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp + "\r\n";
                FileWriteString(h,s);
            }
            if(OrderType()==OP_SELLLIMIT)
              {
            type=3;
             lot=OrderLots();
             sl=OrderStopLoss();
            tp=OrderTakeProfit();
           
             sl=NormalizeDouble(sl,Digits);
               tp=NormalizeDouble(tp,Digits);
             s += OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp + "\r\n";
                FileWriteString(h,s);
             }
            if(OrderType()==OP_BUYSTOP)
              {
                type=4;
               lot=OrderLots();
               sl=OrderStopLoss();
               tp=OrderTakeProfit();
               
                sl=NormalizeDouble(sl,Digits);
               tp=NormalizeDouble(tp,Digits);
              s += OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp + "\r\n";
               FileWriteString(h,s);
               }
              if(OrderType()==OP_SELLSTOP)
               {
                type=5;
                lot=OrderLots();
                sl=OrderStopLoss();
                tp=OrderTakeProfit();
               
                 sl=NormalizeDouble(sl,Digits);
               tp=NormalizeDouble(tp,Digits);
             s += OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp + "\r\n";
                FileWriteString(h,s);
              }
             
               RefreshRates();                             
       
         
        }//OrderSelect
        FileClose(h);
     }//

Добавлено: Январь 13, 2017, 05:07:47 pm
FileWrite(h,s);
FileWriteString(h, s + "\r\n") вам в помощь.

Но лучше так
s += OrderSymbol()+" "+(string)type+" "+(string)lot+" "+(string)sl+" "+(string)tp + "\r\n";
FileWrite(h,s);
...
}//OrderSelect
FileWrite(h,s);
FileClose(h);
  У меня в файл с новой строки пишеться,но вместо трех сделок,пишеться раз в 100 больше.
http://joxi.ru/n2YVoxLUKdkoA6
вот исходник
http://joxi.ru/krD0oMginOGWrp
« Последнее редактирование: Январь 13, 2017, 05:07:47 pm от scherbakovss »

Оффлайн SilverKZ

  • Постоялец
  • ***
  • Сообщений: 109
  • Вес голоса: 617218
  • SilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форума
    • Просмотр профиля
    • Награды
  • Опыт торговли: < 1 года
  • Рейтинг: 139
Обучение языку MQL4 под MetaTrader 4
« Ответ #3370 : Январь 13, 2017, 05:15:09 pm »
  • 0
Так
(click to show/hide)

Оффлайн scherbakovss

  • Интересующийся
  • **
  • Сообщений: 69
  • Вес голоса: 0
  • scherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собой
  • Финансовая свобода - это когда Вы создали что то,
    • Просмотр профиля
    • Награды
  • Опыт торговли: 1-3 года
  • Рейтинг: 10
Обучение языку MQL4 под MetaTrader 4
« Ответ #3371 : Январь 13, 2017, 05:27:33 pm »
  • 0
  }//OrderSelect
        FileWrite(h,s);
Наверное
   FileWriteString(h,s); //вместо  FileWrite(h,s);

Добавлено: Январь 13, 2017, 05:30:05 pm
Так
 (click to show/hide)
Все равно в файл пишет 100 дубликатов вместо 3х сделок.

Оффлайн SilverKZ

  • Постоялец
  • ***
  • Сообщений: 109
  • Вес голоса: 617218
  • SilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форума
    • Просмотр профиля
    • Награды
  • Опыт торговли: < 1 года
  • Рейтинг: 139
Обучение языку MQL4 под MetaTrader 4
« Ответ #3372 : Январь 13, 2017, 09:28:51 pm »
  • 0
scherbakovss, вам нужен советник или скрипт?

Оффлайн scherbakovss

  • Интересующийся
  • **
  • Сообщений: 69
  • Вес голоса: 0
  • scherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собойscherbakovss Ему нужно поработать над собой
  • Финансовая свобода - это когда Вы создали что то,
    • Просмотр профиля
    • Награды
  • Опыт торговли: 1-3 года
  • Рейтинг: 10
Обучение языку MQL4 под MetaTrader 4
« Ответ #3373 : Январь 13, 2017, 09:53:24 pm »
  • 0
scherbakovss, вам нужен советник или скрипт?
Советник,так,что бы я его видел.

Добавлено: Январь 13, 2017, 09:54:22 pm
scherbakovss, вам нужен советник или скрипт?
в терминале было три сделки открыто,а он в текстовый файл 15895 записей сделал

Оффлайн SilverKZ

  • Постоялец
  • ***
  • Сообщений: 109
  • Вес голоса: 617218
  • SilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форумаSilverKZ Ключевая фигура форума
    • Просмотр профиля
    • Награды
  • Опыт торговли: < 1 года
  • Рейтинг: 139
Обучение языку MQL4 под MetaTrader 4
« Ответ #3374 : Январь 13, 2017, 10:44:38 pm »
  • 1
OK, сделал рефакторинг кода Export и поправил чуть, импорт сами сделайте.
Сообщение понравилось: vitek01

 

Форекс блог

Стратегии Индикаторы Советники Аналитика

Мы в соцсетях

Группа Вконтакте Facebook Twitter Instagram

Ссылки

Рекомендуемый брокер Инвестиции Форекс Вики Бинарные Опционы
InstaForex
instaforex C forex4you-C exness D ????_????? Tickmill_small AMarkets FortFS200 forex4you-C