если вам известна функция подсчёта общего баланса убытка ЗАКРЫТЫХ позиций по SL и общего баланса ОТКРЫТЫХ профитных сделок, прошу написать.
Подсчёт баланса убытка нужно начинать с последнего максимального значения депозита
Ваш вопрос чем-то похож на предыдущий, поэтому подправил немного функцию с предыдущего ответа. Признаюсь не проверял, но по идее должно работать. Переменные profit и loss, объявленные на глобальном уровне, должны показать общую прибыль и убыток соответственно по закрытым позициям.
Если нужно и по открытым ордерам, добавьте второй цикл for для выборки не в истории, а по критерию OrdersTotal() : for(int n=1; n<=OrdersTotal(); n++)
И досуммируйте полученные значения в те же переменные profit и loss .
//+----------------------------------------------------------------------------+// Прибыльно или убыточно закрылся последний ордер, и возврат типа такого ордераint fHistory(){
profit = 0; loss = 0;
for(int i=OrdersHistoryTotal(); i >= 0; i--){ // Выборка в историиif (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true){ // Если есть следующий в историиif(OrderMagicNumber()!=magN) continue; // Ордера не нашего эксперта
if(OrderProfit() > 0 ) profit = profit+OrderProfit(); // Если прибыль по посл.ордеру - суммируем if(OrderProfit() < 0 ) loss = loss + OrderProfit(); // Если убыток по посл.ордеру - суммируем
}
}
return(-1);
}
К примеру мне надо узнать сработал ли отложенный бай лимит и если сработал, то по какой цене и после этого выставить новый .
Отслеживайте на каждом тике наличие ордера с типом OP_BUYLIMIT при помощи функции OrderType(), когда такой тип исчезнет, значит ордер открылся и стал типом OP_BUY. Здесь перечислены все 6 типов. С помощью функции OrderOpenPrice() можете узнать по какой цене был открыт ордер.
Как узнать что ордер сработал по трейлинг стопу и после сработки трейлинга выставить новые ордера?
Сработал, в смысле закрылся или модифицировался (передвинулся) ? Если в смысле закрылся, Вам нужно знать, что он просто закрылся? Или закрылся именно по СтопЛосу ? (Может же закрыться и по ТейкПрофиту и по функциям OrderClose() или OrderCloseBy())
где, i_trading_TF - переменная объявленная на глобальном уровне внешняя. Таким образом, когда я кидаю эксперт на график, в появившемся окне я могу назначить значение данной переменной, и, тем самым задать таймфрейм открытие бара на котором нужно контролировать.
В одном эксперте, я увидел подобную функцию, только с формальным параметром в заголовке функции. Вот так:
Здесь таймфрейм передаётся через параметр функции. Но если переменная i_trading_TF объявлена на глобальном уровне, то по-моему нет смысла передавать её через формальный параметр, т.к. её видимость не ограниченна.
Просьба прокомментировать данный момент.
У меня и первый вариант работает, но странно, что некоторые программисты имеют привычку пичкать формальными параметрами даже те функции, в которых я не сделал бы это сам.
pu6ka: Отслеживайте на каждом тике наличие ордера с типом OP_BUYLIMIT при помощи функции OrderType(), когда такой тип исчезнет, значит ордер открылся и стал типом OP_BUY. Здесь перечислены все 6 типов. С помощью функции OrderOpenPrice() можете узнать по какой цене был открыт ордер.
Не обязательно. Его можно и вручную грохнуть. Скорее, необходимо запомнить тикет отложки; как только обнаружится отсутствие отложки с этим тикетом и появление рыночной позиции с тем же тикетом - вот тогда да, сработал...
где, i_trading_TF - переменная объявленная на глобальном уровне внешняя. Таким образом, когда я кидаю эксперт на график, в появившемся окне я могу назначить значение данной переменной, и, тем самым задать таймфрейм открытие бара на котором нужно контролировать.
В одном эксперте, я увидел подобную функцию, только с формальным параметром в заголовке функции. Вот так:
Здесь таймфрейм передаётся через параметр функции. Но если переменная i_trading_TF объявлена на глобальном уровне, то по-моему нет смысла передавать её через формальный параметр, т.к. её видимость не ограниченна.
Просьба прокомментировать данный момент.
У меня и первый вариант работает, но странно, что некоторые программисты имеют привычку пичкать формальными параметрами даже те функции, в которых я не сделал бы это сам.
Смысл есть, если советникик анализмрует несколько фреймов, и на каждом необходим факт образования нового бара.
Это еще не все, добавляем в передаваемые параметры наименование инструмента
artmedia70: Не обязательно. Его можно и вручную грохнуть. Скорее, необходимо запомнить тикет отложки; как только обнаружится отсутствие отложки с этим тикетом и появление рыночной позиции с тем же тикетом - вот тогда да, сработал...
Да, так правильнее. Но проверить идею в тестере можно и так. Отследить четыре типа отложенника, нужно 4 дополнительные переменные по отслеживанию тикетов, а так можно только встроенными функциями воспользоваться. Хотя если отложенников по одному типу планируется больше одного, тогда точно нужно переменную по тикетам вводить.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
если вам известна функция подсчёта общего баланса убытка ЗАКРЫТЫХ позиций по SL и общего баланса ОТКРЫТЫХ профитных сделок, прошу написать.
Подсчёт баланса убытка нужно начинать с последнего максимального значения депозита
Ваш вопрос чем-то похож на предыдущий, поэтому подправил немного функцию с предыдущего ответа. Признаюсь не проверял, но по идее должно работать. Переменные profit и loss, объявленные на глобальном уровне, должны показать общую прибыль и убыток соответственно по закрытым позициям.
Если нужно и по открытым ордерам, добавьте второй цикл for для выборки не в истории, а по критерию OrdersTotal() : for(int n=1; n<=OrdersTotal(); n++)
И досуммируйте полученные значения в те же переменные profit и loss .
К примеру мне надо узнать сработал ли отложенный бай лимит и если сработал, то по какой цене и после этого выставить новый .
Как узнать что ордер сработал по трейлинг стопу и после сработки трейлинга выставить новые ордера?
Если в смысле закрылся, Вам нужно знать, что он просто закрылся? Или закрылся именно по СтопЛосу ? (Может же закрыться и по ТейкПрофиту и по функциям OrderClose() или OrderCloseBy())
Вот моя функция контроля нового бара:
где, i_trading_TF - переменная объявленная на глобальном уровне внешняя. Таким образом, когда я кидаю эксперт на график, в появившемся окне я могу назначить значение данной переменной, и, тем самым задать таймфрейм открытие бара на котором нужно контролировать.
В одном эксперте, я увидел подобную функцию, только с формальным параметром в заголовке функции. Вот так:
Здесь таймфрейм передаётся через параметр функции. Но если переменная i_trading_TF объявлена на глобальном уровне, то по-моему нет смысла передавать её через формальный параметр, т.к. её видимость не ограниченна.
Просьба прокомментировать данный момент.
У меня и первый вариант работает, но странно, что некоторые программисты имеют привычку пичкать формальными параметрами даже те функции, в которых я не сделал бы это сам.
Отслеживайте на каждом тике наличие ордера с типом OP_BUYLIMIT при помощи функции OrderType(), когда такой тип исчезнет, значит ордер открылся и стал типом OP_BUY. Здесь перечислены все 6 типов. С помощью функции OrderOpenPrice() можете узнать по какой цене был открыт ордер.
Вот моя функция контроля нового бара:
где, i_trading_TF - переменная объявленная на глобальном уровне внешняя. Таким образом, когда я кидаю эксперт на график, в появившемся окне я могу назначить значение данной переменной, и, тем самым задать таймфрейм открытие бара на котором нужно контролировать.
В одном эксперте, я увидел подобную функцию, только с формальным параметром в заголовке функции. Вот так:
Здесь таймфрейм передаётся через параметр функции. Но если переменная i_trading_TF объявлена на глобальном уровне, то по-моему нет смысла передавать её через формальный параметр, т.к. её видимость не ограниченна.
Просьба прокомментировать данный момент.
У меня и первый вариант работает, но странно, что некоторые программисты имеют привычку пичкать формальными параметрами даже те функции, в которых я не сделал бы это сам.
Смысл есть, если советникик анализмрует несколько фреймов, и на каждом необходим факт образования нового бара.
Это еще не все, добавляем в передаваемые параметры наименование инструмента
и анализмруем, факт образования нового бара, любого инструмента , периода.Не обязательно. Его можно и вручную грохнуть. Скорее, необходимо запомнить тикет отложки; как только обнаружится отсутствие отложки с этим тикетом и появление рыночной позиции с тем же тикетом - вот тогда да, сработал...
Смысл есть, если советникик анализмрует несколько фреймов, и на каждом необходим факт образования нового бара.
Это еще не все, добавляем в передаваемые параметры наименование инструмента
и анализмруем, факт образования нового бара, любого инструмента , периода.Вы считаете целесообразным в "механизм поиска нового бара" "привлекать" символ??? :)))
Интересно было бы сделать универсальный контроль нового бара. Кстати - для этого все есть
Интересно было бы сделать универсальный контроль нового бара. Кстати - для этого все есть