Ошибки, баги, вопросы - страница 3652

 
Aleksandr Slavskii #:

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

Это-же элементарно, GIT обладает интуитивно понятным и простым интерфейсом :

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

публичный GIT и прочие Forge - если собрался делать(или открыть) общественно полезное. А там удалять нет смысла - всё уже растеклось

 
Alexey Viktorov #:

Да, именно эти слова меня ввели в ступор.

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

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

В общем, запас это не там не помешает… Если сделают может кому-то и пригодится.

В рацпредложении для разработчиков упомянул не только функции серии "***Pause" (это для тех, кто занимается разработкой приложений MQL5), но и чекбокс в интерфейсе тестера.

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

Надеюсь, донес мысль. Установил чекбокс в интерфейсе тестера -> Запустил тестер в визуальном режиме -> Тестер встает на паузу при совершении любой торговой операции советником -> Пользователь при желании нажимает "пробел" и получает распаузивание тестера до следующей торговой операции. Очень просто. А функции серии "***Pause" - это для программистов MQL5 (они смогут делать то же самое, что и юзер с чекбоксом, но на продвинутом уровне на уровне кода при разработке и отладке логики стратегии).


Дополнительно решается вечная проблема и ломание копий на тему "как правильно должен работать ползунок скорости визуализации".

 
Vladislav Boyko #:

Но, опять-же, я могу ошибаться.

Спасибо.

Понял, вы не знаете как это сделать.

 
Maxim Kuznetsov #:

Это-же элементарно, GIT обладает интуитивно понятным и простым интерфейсом :

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

публичный GIT и прочие Forge - если собрался делать(или открыть) общественно полезное. А там удалять нет смысла - всё уже растеклось

Дело не в тленках-нетленках.

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

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

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

А на ваших картинках просто матершинство какое то. Ничего не понятно.

Но за подсказку спросить у ИИ спасибо.


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

 

В справке есть пример:

//+------------------------------------------------------------------+ 
//| Функция выводит на печать разрешенные для символа типы ордеров   | 
//+------------------------------------------------------------------+ 
void Check_SYMBOL_ORDER_MODE(string symbol) 
  { 
//--- получим значение свойства, описывающего разрешенные типы ордеров 
   int symbol_order_mode=(int)SymbolInfoInteger(symbol,SYMBOL_ORDER_MODE); 
//--- проверка на рыночные ордера (Market Execution) 
   if((SYMBOL_ORDER_MARKET&symbol_order_mode)==SYMBOL_ORDER_MARKET) 
      Print(symbol+": Рыночные ордера разрешены (Buy и Sell)"); 
//--- проверка на ордера типа Limit 
   if((SYMBOL_ORDER_LIMIT&symbol_order_mode)==SYMBOL_ORDER_LIMIT) 
      Print(symbol+": Ордера Buy Limit и Sell Limit разрешены"); 
//--- проверка на ордера типа Stop 
   if((SYMBOL_ORDER_STOP&symbol_order_mode)==SYMBOL_ORDER_STOP) 
      Print(symbol+": Ордера Buy Stop и Sell Stop разрешены"); 
//--- проверка на ордера типа Stop Limit 
   if((SYMBOL_ORDER_STOP_LIMIT&symbol_order_mode)==SYMBOL_ORDER_STOP_LIMIT) 
      Print(symbol+": Ордера Buy Stop Limit и Sell Stop Limit разрешены"); 
//--- проверка на возможность установки ордеров Stop Loss 
   if((SYMBOL_ORDER_SL&symbol_order_mode)==SYMBOL_ORDER_SL) 
      Print(symbol+": Ордера Stop Loss разрешены"); 
//--- проверка на возможность установки ордеров Take Profit 
   if((SYMBOL_ORDER_TP&symbol_order_mode)==SYMBOL_ORDER_TP) 
      Print(symbol+": Ордера Take Profit разрешены"); 
//--- проверка разрешения на закрытие позиции с помощью встречной 
   if((SYMBOL_ORDER_TP&symbol_order_mode)==SYMBOL_ORDER_CLOSEBY) 
      Print(symbol+": Встречное закрытие разрешено"); 
//--- 
  }

Полагаю, что тут ошибка (жёлтым выделил) и корректным код будет в этой части таким

//--- проверка разрешения на закрытие позиции с помощью встречной 
   if((SYMBOL_ORDER_CLOSEBY&symbol_order_mode)==SYMBOL_ORDER_CLOSEBY) 
      Print(symbol+": Встречное закрытие разрешено"); 
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger() , SymbolInfoDouble() и SymbolInfoString() . В качестве второго...
 
Aleksey Vyazmikin #:

В справке есть пример:

Полагаю, что тут ошибка (жёлтым выделил) и корректным код будет в этой части таким

Да, Вы совершенно правы. 
 
билд 5120 от 13 июня 2025.
тестрер крашится с ошибкой инициализации. 
ничего кроме версии метатрейдера не менялось, первый краш был на прошлой версии от 5го(помоему) июня. до этого все было ок.
как решить проблему?
Файлы:
 
может у кого-то есть прошлый билд? киньте им в меня, пожалуйста, очень ннада.
 
Georg Vahi #:
билд 5120 от 13 июня 2025.
тестрер крашится с ошибкой инициализации. 
ничего кроме версии метатрейдера не менялось, первый краш был на прошлой версии от 5го(помоему) июня. до этого все было ок.
как решить проблему?

если кому надо могу поделиться билдом 4885 (февраль 2025).
но проблема оказалась не в метаке или не совсем в нем: откат мт на прошлые билды не исправил проблему, после изучения системных логов стало понятно что ошибка инициализации тестера была вызвана сбоем оборудования.
и, после определенных танцев с бубном, восстановить работоспособность удалось после переустановки дров чипсета (х99 хуананг на две ксеоно дырки).
всем спасибо за помощь!

 
Andrey Dik #:

Надеюсь, донес мысль. Установил чекбокс в интерфейсе тестера -> Запустил тестер в визуальном режиме -> Тестер встает на паузу при совершении любой торговой операции советником -> Пользователь при желании нажимает "пробел" и получает распаузивание тестера до следующей торговой операции. Очень просто. А функции серии "***Pause" - это для программистов MQL5 (они смогут делать то же самое, что и юзер с чекбоксом, но на продвинутом уровне на уровне кода при разработке и отладке логики стратегии).

Мне очень нравится ваша идея! Возможность визуального тестирования не по времени, а по сделкам — это очень круто. Если при этом починили бы накидывание шаблонов оформления графиков для второго и последующих чартов, открываемых экспертами, ну вообще роскошно стало бы (и тестер курильщика превратился бы в тестер здорового человека).