Jump to content
Programmer

Общие вопросы по языку MQL

Recommended Posts

Ugar68

Поправка: АС строится по медианной цене. Но сути это не меняет.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
sviter

Кто знает какую нибудь библиотеку dll для отправки е-mail через терминал?

Share this post


Link to post
Share on other sites
ZeleBoba
10 минут назад, sviter сказал:

Кто знает какую нибудь библиотеку dll для отправки е-mail через терминал?

А чем Вас не устраивает функция SendMail?


Лучше маленький профит, чем большие рога.

Share this post


Link to post
Share on other sites
sviter

В настройках нужно прописывать настройки серверов и т.п....а мне надо через dll что бы изначально все было прописано и сразу работало!

Share this post


Link to post
Share on other sites
sviter

Ищу библиотеку что то типа https://www.fxblue.com/appstore/u17/...r-guide#toc1.2
Что бы встроить ее в код и ненадо было вводить данные в настройках терминала!
Ее скачать не могу, ибо не получается скачать((((

Share this post


Link to post
Share on other sites
Ugar68
2 часа назад, sviter сказал:

Кто знает какую нибудь библиотеку dll для отправки е-mail через терминал?

Я то же когда то озадачивался проблемой отправки письма не через терминал. По другой причине. Мне надо было отправлять уведомление о потере связи терминалом. А если терминал потерял связь, он не может отправить письмо своими средствами. Я нашёл программы отправки письма через командную строку. Написал пакетный файл, а программа на MQL запускала его с помощью функции ShellExecuteW из Shell32.dll которая есть в винде.

 


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
torgf
10 часов назад, Ugar68 сказал:

Поправка: АС строится по медианной цене. Но сути это не меняет.

Не поняла, что делать то. Если бы в советнике нужно было, то контроля открытия нового бара было бы достаточно.  

Открывается бар красным ,  потом становится зелёным цветом. Неужели нет возможности узнать что бар открылся красной гистограммой АС?

Share this post


Link to post
Share on other sites
Ugar68
10 минут назад, torgf сказал:

Не поняла, что делать то. Если бы в советнике нужно было, то контроля открытия нового бара было бы достаточно.  

Открывается бар красным ,  потом становится зелёным цветом. Неужели нет возможности узнать что бар открылся красной гистограммой АС?

Только на текущем баре можно зафиксировать показание в момент открытия бара. На истории не получится без переделки АС. В момент открытия бара Open=Close=High=Low. Когда бар закрылся это совсем не так. Так вот на истории все бары уже закрыты и если индикатор использует Close, High или Low, то его показания будет совсем не такими как в момент открытия бара. АС использует медианную цену (High+Low)/2.

Единственный способ видеть на истории показания в момент открытия бара, это переделать АС на работу по ценам открытия. Там 2 SMA. В них задана цена. Вызывать потом по iCustom.

 


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
torgf
11 минут назад, Ugar68 сказал:

 

 

Спасибо, как жаль что мир неидеален) 

Надеюсь, так покажет то что нужно.

       ExtMacdBuffer[i]=iMA(NULL,0,PERIOD_FAST,0,MODE_SMA,PRICE_OPEN,i)-
                       iMA(NULL,0,PERIOD_SLOW,0,MODE_SMA,PRICE_OPEN,i);

 

Share this post


Link to post
Share on other sites
DVargo
8 часов назад, Ugar68 сказал:

Я то же когда то озадачивался проблемой отправки письма не через терминал. По другой причине. Мне надо было отправлять уведомление о потере связи терминалом. А если терминал потерял связь, он не может отправить письмо своими средствами. Я нашёл программы отправки письма через командную строку. Написал пакетный файл, а программа на MQL запускала его с помощью функции ShellExecuteW из Shell32.dll которая есть в винде.

 

А иметь 2 терминала от двух разных брокеров не пробовали?

 

Есть еще CRM всякие, основное дело которых вести учет документов, и спамить в почту.

 

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

Так же к многим почтовым сервисам есть апи.

Share this post


Link to post
Share on other sites
DVargo
10 часов назад, sviter сказал:

В настройках нужно прописывать настройки серверов и т.п....а мне надо через dll что бы изначально все было прописано и сразу работало!

Закажите во фрилансе

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

 

dll может умереть при выходе новых обновлений, а ее автор получить наследство и поменять сферу деятельности, ну или еще что-нибудь.

Чужой длл может слать и не только вам. ибо не известно что там в коде.

 

Share this post


Link to post
Share on other sites
Ugar68
8 часов назад, DVargo сказал:

А иметь 2 терминала от двух разных брокеров не пробовали?

 

Есть еще CRM всякие, основное дело которых вести учет документов, и спамить в почту.

 

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

Так же к многим почтовым сервисам есть апи.

Держать терминал от другого брокера только для отправки письма, или тот же CRM это не рациональное расходование ресурсов vps. Уж лучше тогда свой почтовый сервер поставить. Программки, отправляющие письмо из командной строки, обычно весят килобайты, редко до пары мегабайт. Запускаются только в момент когда надо отправить письмо. Хотя я допускаю что в серверной винде есть какая то длл с функциями отправки. А в w10 можно наверное, припахать, встроенную мыльницу. Но опять же держать такого монстра постоянно запущенным, как то не нормально.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
DVargo
15.02.2019 в 10:25, Ugar68 сказал:

Держать терминал от другого брокера только для отправки письма, или тот же CRM это не рациональное расходование ресурсов vps. Уж лучше тогда свой почтовый сервер поставить. Программки, отправляющие письмо из командной строки, обычно весят килобайты, редко до пары мегабайт...

Обычно у трейдеров по несколько терминалов крутится на VPS.

Спящий терминал ест до 40 МБ. Обычно на VPS крутится до 5-6 терминалов.

Самый короткий и легкий код на МКЛ.

Запускать 2 терминал можно программно при отсутствии связи.

 

CRM бывают разные - на питоне, на ПХП. и могут быть легкими. Это может быть скрипт запускаемый раз в сколько то и проверяющий наличие сообщения в папке.

А может быть и скрипт запускаемый из вне - аналог вашей программы.

 

Вы тело письма формируете напрямую из МКЛ или передаете через файл? или отправляете какое-то стандартное сообщение?

Share this post


Link to post
Share on other sites
AntFX
1 минуту назад, DVargo сказал:

Спящий терминал ест до 40 МБ.

Если в него напихать десяток графиков с лимитом по 10000000 баров в каждом то может и по 500 мб есть, ага )


1

Share this post


Link to post
Share on other sites
DVargo

А мозг на что? зачем 100500 баров пихать?

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

Share this post


Link to post
Share on other sites
AntFX
3 минуты назад, DVargo сказал:

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

Тогда откуда 40? Вот у меня терминал висит, один график открыт без лимита по барам, памяти ест стабильно меньше 20


1

Share this post


Link to post
Share on other sites
DVargo

Я низ не ограничивал. Я написал до. А 20 или 40 - я уже считаю не принципиально, это не 200.

Share this post


Link to post
Share on other sites
Ugar68
1 час назад, DVargo сказал:

Вы тело письма формируете напрямую из МКЛ или передаете через файл? или отправляете какое-то стандартное сообщение?

Тема и текст письма формируются в индикаторе на mql. Потом он запускает cmd файл с ними в параметрах. Хотя конечно, в индикаторе можно было сформировать всю командную строку и обойтись без cmd, но мне так удобнее. Ведь так я могу использовать разные программы, отправляющие письмо из командной строки, не переписывая индикатор. Короче, так универсальнее.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
sviter

Может кто знает как сделать скрипт массовой рассылки email пользователям? Или в mql4 возможно только одному пользователю отсылать email? Это возможно вообще?

Share this post


Link to post
Share on other sites
Ugar68
2 часа назад, sviter сказал:

Может кто знает как сделать скрипт массовой рассылки email пользователям? Или в mql4 возможно только одному пользователю отсылать email? Это возможно вообще?

В mql отправка по настройкам в терминале. Но возможно отправлять сторонними программами. То есть, программа на mql запускает стороннюю программу с помощmю dll, а она рассылает.


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
sviter

Здравствуйте! Подскажите как сделать следующее:
У меня в роботе стоит мартингейл с усреднением! Каждые 50 пунктов открывается новый ордер с большим лотом и тэйкпрофит подвигается!!!
Со временем столкнулся с такой проблемой, что ордера задваиваются..... тоесть открывается 0.10 ордер, через 50 пунктов,  0.20, потом 0.40, потом 0.80 и вот тут начинаются касяки, что открывается еще один 0.80 каким то макаром, причем не через 50 пунктов, а когда ему вздумается!!! в основном замечено срабатывает всегда на 4-ом калене, иногда бывало на 3-ем!!! не понимаю что за фигня!!! гляньте плиз....

 

     if(CountTrades() == 0)
     {
     if(AdxHis > AdxHis1)
     {
         TP = NormalizeDouble(Ask + takeprofit * _Point, _Digits);
         ticket = OrderSend(_Symbol, OP_BUY, lot, Ask, slippage, 0, TP, comment, Magic, 0, clrGreen); //покупка
         if(ticket > 0)
         {
         Print("Ордер на BUY успешно открыт! ");
         return;
         }
     }

    if(AdxHis < AdxHis1)
    {
         TP = NormalizeDouble(Bid - takeprofit * _Point, _Digits);
         ticket = OrderSend(_Symbol, OP_SELL, lot, Bid, slippage, 0, TP, comment, Magic, 0, clrRed); //продажа
         if(ticket > 0)
         {
         Print("Ордер на SELL успешно открыт! ");
         return;
         }
    }
    }
    else
    {
         int ordertype = FindLastOrderType(); //Функция типа ордера
      
         if(ordertype == OP_BUY) 
         {
            price = FindLastOrderPrice(OP_BUY); //Функция последней цены
            if(count > 0 && count < koleno && Ask <= price - shag * _Point)
            {
               lastlot = FindLastLot(OP_BUY);
               lastlot = NormalizeDouble(lastlot * Multiplayer, 2);
               ticket = OrderSend(_Symbol, OP_BUY, lastlot, Ask, slippage, 0, 0, comment2, Magic,0, clrGreen);
               if(ticket < 1)
               Print("Ошибка открытия ордера на покупку");
               ModifyOrders(OP_BUY);
            }
         }
         
         if(ordertype == OP_SELL)
         {
            price = FindLastOrderPrice(OP_SELL); //Функция последней цены
            if(count > 0 && count < koleno && Bid >= price + shag * _Point)
            {
               lastlot = FindLastLot(OP_SELL);
               lastlot = NormalizeDouble(lastlot * Multiplayer, 2);
               ticket = OrderSend(_Symbol, OP_SELL, lastlot, Bid, slippage, 0, 0, comment2, Magic,0, clrRed);
               if(ticket < 1)
               Print("Ошибка открытия ордера на продажу");
               ModifyOrders(OP_SELL);
            }
         }
    }

 

Share this post


Link to post
Share on other sites
Ugar68
13 часов назад, sviter сказал:

Здравствуйте! Подскажите как сделать следующее:
У меня в роботе стоит мартингейл с усреднением! Каждые 50 пунктов открывается новый ордер с большим лотом и тэйкпрофит подвигается!!!
Со временем столкнулся с такой проблемой, что ордера задваиваются..... тоесть открывается 0.10 ордер, через 50 пунктов,  0.20, потом 0.40, потом 0.80 и вот тут начинаются касяки, что открывается еще один 0.80 каким то макаром, причем не через 50 пунктов, а когда ему вздумается!!! в основном замечено срабатывает всегда на 4-ом калене, иногда бывало на 3-ем!!! не понимаю что за фигня!!! гляньте плиз....

 

 

В данном случае очень важна качественная работа

FindLastOrderPrice()

 


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
sviter
11 часов назад, Ugar68 сказал:

В данном случае очень важна качественная работа


FindLastOrderPrice()

 

у меня так:
 

  double FindLastOrderPrice(int otype)
  {
   int oldticket;
   ticket = 0;
   double oldopenprice = 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);
  }

 

Share this post


Link to post
Share on other sites
Ugar68

Это и называется написано как нибудь, что бы отвязаться. OrderSelect выбирает ордер и возвращает true в случае успеха. В этой функции ничего не предусмотрено, что если она вернёт false. То есть ордер есть, но по какой то причине не выбран. Эта функция его просто пропустит. А теперь подумайте, что будет если эта функция не выбрала последний открытый ордер.

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


Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку.
Чужие программы не переделываю.

Share this post


Link to post
Share on other sites
sviter

Можете помочь? ато я что то вообще не понял где косяк!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×