Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1460

 
Aleksei Stepanenko #:
Никита в точку спросил, недостаточно средств при таком плече.

https://alfaforex.ru/faq/internet-treyding/raschet-lota-na-foreks

Спасибо.  все понятно. 

 
Я не могу включить торговую вкладку в MT5 MOBILE
 
Ребята, я пытался создать звуковое оповещение для индикатора RSI с помощью Chatgpt, но при компиляции возникли ошибки. Может ли какая-нибудь добрая душа помочь? Я ничего не знаю о программировании.

...

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

Кнопка кода в редакторе

...

 
T3 Estratégias Estratégias #: Ребята, я пытался создать звуковое оповещение для индикатора RSI с помощью Chatgpt, но при компиляции возникли ошибки. Может ли какая-нибудь добрая душа помочь? Я ничего не смыслю в программировании.

Откажитесь от ChatGPT. Он бесполезен. Научитесь правильно программировать на MQL5 или наймите программиста.

 
T3 Estratégias Estratégias #:
Chatgp
Chatgpt смешивает код MQL4 и MQL5.
 

Добрый день!

При срабатывании ExpertRemove в MT5 происходит ли также закрытие позиции и удаление лимитных ордеров?

Или же нужно предварительно все закрыть?

Спасибо за предполагаемый ответ.

 
klycko #:

Добрый день!

При срабатывании ExpertRemove в MT5 происходит ли также закрытие позиции и удаление лимитных ордеров?

Или же нужно предварительно все закрыть?

Спасибо за предполагаемый ответ.

ExpertRemove - прекращает работу эксперта и выгружает его с графика.

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

Если в советнике прописано удалять ордера и закрывать позиции при удалении эксперта,

то всё удалится и закроется, а если не прописано,

то и позиции и ордера останутся не закрытыми.

 
Aleksandr Slavskii #:

Если в советнике прописано удалять ордера и закрывать позиции при удалении эксперта,

то всё удалится и закроется

Маленькое дополнение: если это уложится в 2.5 секунды.

Выполнение функции OnDeinit() ограничивается 2.5 секундами. Если за это время функция не закончила свою работу, то ее выполнение завершается принудительно.
 

Не могу сообразить как сделать.

При наступлении события прокрутки колёсика мыши, выполняется код. 

Колёсико мыши можно прокрутить за раз на несколько щелчков, при этом мы получим не одно событие с dparam = количеству щелчков, а несколько событий с dparam = +/-120.

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

В итоге получается, что колесо мыши уже ник то не крутит, а программа продолжает пересчитываться ещё какое то время.

//+------------------------------------------------------------------+
void OnInit()
  {
   ChartSetInteger(0, CHART_EVENT_MOUSE_WHEEL, 0, true);
  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long & lparam, const double & dparam, const string & sparam)
  {
   static double delta = 0;

   if(id == CHARTEVENT_MOUSE_WHEEL)
     {
      //--- какой то код
      delta += dparam / 120;
      Sleep(1000);
      //---
      Print(delta);
     }
  }
//+------------------------------------------------------------------+
15:12:22.820    test (EURUSD,H1)        0.0
15:12:23.821    test (EURUSD,H1)        1.0
15:12:24.811    test (EURUSD,H1)        2.0
15:12:25.823    test (EURUSD,H1)        3.0
15:12:26.817    test (EURUSD,H1)        4.0
15:12:27.814    test (EURUSD,H1)        5.0
Колесо мыши прокрутилось в 15:12:22.820  и потом программа выполнялась ещё 5 раз, целых 5 секунд.


Вопрос: как выполнить код программы один раз, а не несколько.

То есть прокрутили колесо на 5 щелчков, delta = dparam / 120 * 5.

Причина обращения: