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

 
Aleksandr Slavskii #:

Ничего не пишет при компиляции. Удаляет и ставит по новой. Всё. 

На серваке ещё пока работает. Подожду, может там в логах, что то напишет.

Журнал "Эксперты"

 
Artyom Trishkin #:

Журнал "Эксперты"

В журнале Эксперты, стерильная чистота.

//---

Да в общем то в причине проблемы разобрались.

Остаётся вопрос, как при закрытии программы, удалить из памяти ресурс созданный канвасом.

Объект я удаляю у него есть имя, а вот имя ресурса в "protected" и его никак не узнаешь.

М да,  ООП "весёлая штука". 

В итоге пришлось объявлять канвас в глобале, а не в теле функции и добавить в деинит  canvas.Destroy();

Полёт нормальный)

 

Всем доброго дня и хорошего настроения!

Уже очень давно пользуюсь готовой функцией расчёта лота в зависимости от риска, но в ней не было привязки к размеру стоп-лосса. Сегодня решил написать с нуля свою функцию в виде скрипта (для удобства проверки), но уже с учётом стоп-лосса. Прошу посмотреть формулу расчёта размера лота (выделена жёлтым цветом). Возможно, что-то упустил.

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

С уважением, Владимир.

//+------------------------------------------------------------------+
//|                                   Lot_Size_Depending_On_Risk.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
input double Risk=5;      // Размер риска
input uint Stop_Loss=500; // Размер стоп-лосса
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot_Size_Depending_On_Risk()
  {
   //--- определим валюту депозита
   string symbol="";
   string account_currency="";
   symbol=account_currency==AccountInfoString(ACCOUNT_CURRENCY) ? "EURUSDrfd" : "USDRUBrfd";
   double trading_account_currency=NormalizeDouble(SymbolInfoDouble(symbol,SYMBOL_BID),2);
   double lot=(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk*0.01)/(Stop_Loss*trading_account_currency);
   return(lot);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print(DoubleToString(Lot_Size_Depending_On_Risk(),2));
  }
//+------------------------------------------------------------------+
 
MrBrooklin #:

Всем доброго дня и хорошего настроения!

Уже очень давно пользуюсь готовой функцией расчёта лота в зависимости от риска, но в ней не было привязки к размеру стоп-лосса. Сегодня решил написать с нуля свою функцию в виде скрипта (для удобства проверки), но уже с учётом стоп-лосса. Прошу посмотреть формулу расчёта размера лота (выделена жёлтым цветом). Возможно, что-то упустил.

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

С уважением, Владимир.

Обязательно надо учесть стоимость одного тика.

 
Alexey Viktorov #:

Обязательно надо учесть стоимость одного тика.

Привет, Алексей! Спасибо, что откликнулся. В целях самообразования хочу понять с какой целью нужно учесть стоимость одного тика и ещё кратко поясни, в какой части формулы его применить, если тебя это не затруднит. Возможно, что не совсем понял о чём речь.

С уважением, Владимир.

 
MrBrooklin #:

Привет, Алексей! Спасибо, что откликнулся. В целях самообразования хочу понять с какой целью нужно учесть стоимость одного тика и ещё кратко поясни, в какой части формулы его применить, если тебя это не затруднит. Возможно, что не совсем понял о чём речь.

С уважением, Владимир.

Для определения суммы которую трейдер готов потерять в случае неудачи. Убыток = Loss*стоимость пункта*лот. Отсюда — лот = допустимый убыток/(Loss*стоимость пункта) Формула примерная.

 
Alexey Viktorov #:

Для определения суммы которую трейдер готов потерять в случае неудачи. Убыток = Loss*стоимость пункта*лот. Отсюда — лот = допустимый убыток/(Loss*стоимость пункта) Формула примерная.

Понятно. Подумаю на досуге, как это реализовать. Спасибо за совет!

С уважением, Владимир.

 

Как узнать время закрытия позиции в тестере?

Открываю позиции 1, 2, 3

Закрываю позиции 3, 2, 1

Ни в отчёте тестера ни в самом тестере я так и не разобрался как узнать время закрытия конкретной позиции.

То же самое и в отчёте который записывает тестер, там тоже нет возможности узнать время закрытия позиции.


Мне нужно как то узнать время открытия и закрытия позиции. Как?

fxsaber   в одной из своих библиотек пишет:  "Спасибо разработчикам за создание кешей Тестера и помощь в раксрытии его форматов."

В самой библиотеке я разобраться не могу.

Я смог найти только формат opt  файлов.

Если кто знает где на форуме раскрывают tst-файлы - формат одиночного прохода, киньте ссылочку пожалуйста,  может быть в них смогу найти position_ID.

fxsaber если читаешь, ответь пожалуйста.

 
Aleksandr Slavskii #:

Как узнать время закрытия позиции в тестере?

Открываю позиции 1, 2, 3

Закрываю позиции 3, 2, 1

Ни в отчёте тестера ни в самом тестере я так и не разобрался как узнать время закрытия конкретной позиции.

То же самое и в отчёте который записывает тестер, там тоже нет возможности узнать время закрытия позиции.


Мне нужно как то узнать время открытия и закрытия позиции. Как?

fxsaber   в одной из своих библиотек пишет:  "Спасибо разработчикам за создание кешей Тестера и помощь в раксрытии его форматов."

Я смог найти только формат opt  файлов.

Если кто знает где на форуме раскрывают tst-файлы - формат одиночного прохода, киньте ссылочку пожалуйста,  может быть в них смогу найти position_ID.

fxsaber если читаешь, ответь пожалуйста.

Ищите сделку выхода из рынка

DEAL_ENTRY_IN

Вход в рынок

DEAL_ENTRY_OUT

Выход из рынка

DEAL_ENTRY_INOUT

Разворот

DEAL_ENTRY_OUT_BY

Закрытие встречной позицией

и по тикету этой сделки ищите ID позиции

DEAL_TICKET

Тикет сделки. Уникальное число, которое присваивается каждой сделке

long

DEAL_ORDER

Ордер, на основание которого выполнена сделка

long

DEAL_TIME

Время совершения сделки

datetime

DEAL_TIME_MSC

Время совершения сделки в миллисекундах с 01.01.1970

long

DEAL_TYPE

Тип сделки

ENUM_DEAL_TYPE

DEAL_ENTRY

Направление сделки – вход в рынок, выход из рынка или разворот

ENUM_DEAL_ENTRY

DEAL_MAGIC

Magic number для сделки (смотри ORDER_MAGIC)

long

DEAL_REASON

Причина или источник проведения сделки

ENUM_DEAL_REASON

DEAL_POSITION_ID

Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая позиция имеет уникальный идентификатор, который присваивается всем сделкам, совершенным на инструменте в течение всей жизни позиции.

long


А в общем-то время сделки выхода из рынка, это и есть время закрытия позиции.

 
Alexey Viktorov #:

Ищите ...

Спасибо. Но это совсем не то, что мне нужно.

Видимо я опять не смог, правильно сформулировать вопрос  :(

Меня интересует как вытащить информацию о позиции из отчёта тестера ReportTester.xlsx или .tst файла.

То что вы предложили в отчёте нет.