Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
kombat 17.07.2009 22:13
Суммируем, получаем сумлот бай 3 лота и выставляем встречный этого обьёма селл 3 лота
.......................
Как вариант - да. Хотя если уже имеются открытые ордера селл, то эксперт может закрыть не те, что тебе нужны. Хотя и это решаемо.
kombat 17.07.2009 22:13
Впрочем на вопрос: возможно ли закрыть ВСЕ позиции ?
да можно, последовательно друг за другом, скриптом это быстро, аап! и всё...
.........................
Этим я сейчас и пользуюсь. Набор скриптов - пользуешь то этот, то тот... А вот попробовал закодировать свою стратегию в эксперт и столкнулся с рядом трудностей.
Тут у меня что то неработает это означаеи что незакрывает Ошибок невыбрасывает
В функции ClosePositions(), своей библиотеки b-Positions.mqh, KimIV использует вызов другой своей функции ClosePosBySelect() которая запрещает использование ee в тестере :
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
Для тестов на истории используй его библиотеку b-ForTest.mqh
В функции ClosePositions(), своей библиотеки b-Positions.mqh, KimIV использует вызов другой своей функции ClosePosBySelect() которая запрещает использование ee в тестере :
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
Для тестов на истории используй его библиотеку b-ForTest.mqh
Вы неправильно поняли мой код... Перевожу на русский... Если НЕ тестовый режим И (эксперту НЕ разрешено торговать ИЛИ советники остановлены), тогда прервать цикл. Если сказать совсем просто, то данная строка обеспечивает выход из цикла при отжатии кнопки "Советники" на панели инструментов.
Вечер добрый,
С массивом, к сожалению, тоже неувязка...При коде подсчёта ордеров, с условием если лотов больше 0 (Lts>0), лоты закрываются по одному (по условию достижения профита), хотя нужно чтобы учитывался суммарный профит:
А при условии в подсчёте ордеров, если лотов больше 1 (Lts>1), лоты не закрываются:
Подскажите кто видит ошибку.
Или, может, Игорь, у меня неправильное понимание использования Вашей функции?
BuyOrdProf=GetProfitOpenBuyPosInCurrency(OP_BUY); // Вызов функции
Игорь, подскажите, пожалуйста, как мне вставить Вашу функцию PriceOpenLastPos в индикатор.
При компиляции редактор выдает ошибку на первую скобку и последующие переменные.
double PriceOpenLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
double r=0;
int k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) {
t=OrderOpenTime();
r=OrderOpenPrice();
}
}
}
}
}
}
}
return(r);
}
}
'(' - function definition unexpected D:\MT4\experts\indicators\Astrea.mq4 (627, 24)
'sy' - variable not defined D:\MT4\experts\indicators\Astrea.mq4 (632, 7)
и т.д.
Логику формирования торговых сигналов я реализую в индикаторе, а в советник через глобальную переменную отправляю уже сформированный сигнал открытия\закрытия ордеров.
Для принятия некоторых решений мне нужна цена открытия ордера, вот я и пытаюсьрешить эту проблему. У меня индикатор - динамический, можно отлаживать только в демо, или в тесторе в режиме визуализации.
Картина складывается такая, что учитывается не суммарная прибыль, а прибыль раздельных ордеров.
BuyOrdProf=GetProfitOpenBuyPosInCurrency(OP_BUY); // Вызов функции
Неправильная передача параметров в функцию. Надо так:
Неправильная передача параметров в функцию. Надо так:
Добавление привязки к символу в вызове функции не помогает. Почему он считает профит для каждой позиции отдельно (рисунок выше)?