Новая версия платформы MetaTrader 5 build 4150: экспорт торгового отчета и новые методы машинного обучения в MQL5 - страница 16

 
Maxim Kuznetsov #:

чтобы знать что ?

поймите верно, но необходимость работать через веб прокси это дикая экзотика

Думаю, у всех свои потребности.

 
Aleksey Vyazmikin #:

Думаю, у всех свои потребности.

помнится что SOCKS 4/5 это tcp-proxy.

а http/веб-прокси "этодругое" :-) они просто разные вещи. Это разные вселенные

 
bred_bred1 #:

Ренат, 

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

Вы использовали бета версию 4073, которую мы выпускали в момент проработки плавающих плеч. Там была ошибка в используемой формуле (не тот тип отображения), которую вы посчитали за правильную.

У Финама на самом деле поле маржи стоит 0 и терминал правильно выдает 0.

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

 

Дайте пожалуйста очень тупую и примитивную формулу, для MT4 уровень прибыли в текщий момент от депозита. Закрыть надо от текущей прибыли, а вычисления забыл как делал)

 
Volodymyr Zubov #:

Дайте пожалуйста очень тупую и примитивную формулу, для MT4 уровень прибыли в текщий момент от депозита. Закрыть надо от текущей прибыли, а вычисления забыл как делал)

Наверное, ветку перепутали. Надеюсь, модераторы перенесут.

А по существу, что может быть проще?

void OnStart()
{
   double fProfit = AccountInfoDouble(ACCOUNT_PROFIT);
   double fBalance = fmax(AccountInfoDouble(ACCOUNT_BALANCE), 0.01);
   Print("Profit to balance, %: ", DoubleToString(fProfit / fBalance * 100.0, 4));
}

Код кроссплатформенный.

 

Уже вспомнил и нашел у себя, но спасибо!

      AccountPercent = NormalizeDouble((((AccountEquity()/AccountBalance())-1)*100),_Digits); // c форума формула
 
Volodymyr Zubov #:

Уже вспомнил и нашел у себя, но спасибо!

на 0 нельзя делить 

местные трильярдеры против :-)

 
Renat Fatkhullin #:

Проверим и подумаем.

Для веб-запросов приоритетны direct соединения, если они есть.

Я во время проблем с коннектом с Telegram пытался использовать прокси для WebRequest, безуспешно. Понял, что WebRequest не идёт через прокси, о чём и писал. Очень давно. С тех пор не проверял.

Дикой экзотикой не считаю, иногда возникает необходимость подключиться к заблокированному сайту. Один пример уже привёл.
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Fernando Carreiro, 2024.01.28 14:05

В английском разделе Доминик Эгерт обнаружил ошибку MT5, при которой пользовательские индикаторы не выпускаются, даже если OnInit() возвращает «INIT_FAILED» (или « INIT_PARAMETERS_INCORRECT »).

Я также подтвердил ошибку в МТ5 и обнаружил, что она корректно работает на МТ4.


In the English section, a MT5 bug has been identified by Dominik Egert where Custom Indicators are not released even when OnInit() returns "INIT_FAILED" (or "INIT_PARAMETERS_INCORRECT").

I also confirmed the bug in MT5 and found that it works correctly on MT4.

 
Предложение по расширению возможностей.
Есть команда Sleep(). Которая делает паузу в выполнении программы на нужное количество миллисекунд. Но в тестере/оптимизаторе она не делает паузы и грузит процессор на 100% огромным числом проверок.
Например это нужно при первой загрузке индикаторов для ожидания окончания расчетов от начала котировок. Рекомендованный вами https://www.mql5.com/ru/docs/files/filewrite код:
//--- находимся в цикле, пока индикатор не рассчитает все свои значения
   while(BarsCalculated(macd_handle)==-1)
      Sleep(10); // задержка, чтобы индикатор успел вычислить свои значения

Хорошо бы сделать SleepRealTime() или вариант  Sleep(int ms, bool is_real_time=false) который будет делать паузу и в тестере в реальном времени, это позволит не загружать процессор на 100%.

Кроме работы с индикаторами реальная пауза нужна и в работе с файлами, например может быть нужным дождаться появления файла и только потом считать его. 100%-ная загрузка была замечена именно в этом варианте, файл ожидался несколько минут. Возможны и другие варианты использования паузы в реальном времени в тестере.

Сейчас использую

#import "kernel32.dll"
   int SleepEx(int msec, bool Alertable=false);//SleepEx(1000,false); - для простого таймера
#import 

Но хорошо бы иметь штатный вариант без DLL.

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
FileWrite - Файловые операции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5