если вам известна функция подсчёта общего баланса убытка ЗАКРЫТЫХ позиций по 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 дополнительные переменные по отслеживанию тикетов, а так можно только встроенными функциями воспользоваться. Хотя если отложенников по одному типу планируется больше одного, тогда точно нужно переменную по тикетам вводить.
если вам известна функция подсчёта общего баланса убытка ЗАКРЫТЫХ позиций по 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 объявлена на глобальном уровне, то по-моему нет смысла передавать её через формальный параметр, т.к. её видимость не ограниченна.
Просьба прокомментировать данный момент.
У меня и первый вариант работает, но странно, что некоторые программисты имеют привычку пичкать формальными параметрами даже те функции, в которых я не сделал бы это сам.
Смысл есть, если советникик анализмрует несколько фреймов, и на каждом необходим факт образования нового бара.
Это еще не все, добавляем в передаваемые параметры наименование инструмента
и анализмруем, факт образования нового бара, любого инструмента , периода.Не обязательно. Его можно и вручную грохнуть. Скорее, необходимо запомнить тикет отложки; как только обнаружится отсутствие отложки с этим тикетом и появление рыночной позиции с тем же тикетом - вот тогда да, сработал...
Смысл есть, если советникик анализмрует несколько фреймов, и на каждом необходим факт образования нового бара.
Это еще не все, добавляем в передаваемые параметры наименование инструмента
и анализмруем, факт образования нового бара, любого инструмента , периода.Вы считаете целесообразным в "механизм поиска нового бара" "привлекать" символ??? :)))
Интересно было бы сделать универсальный контроль нового бара. Кстати - для этого все есть
Интересно было бы сделать универсальный контроль нового бара. Кстати - для этого все есть