Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 869
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В догонку: позиции БАЙ (как и СЕЛЛ) могут открываться при разных условиях, и в зависимости от того, на каких условиях открылась поз. (напр. БАЙ), будут свои условия закрытия.
Как это передать на языке МКЛ?
В догонку: позиции БАЙ (как и СЕЛЛ) могут открываться при разных условиях, и в зависимости от того, на каких условиях открылась поз. (напр. БАЙ), будут свои условия закрытия.
Как это передать на языке МКЛ?
Выбираем ордер в цикле. Если это Бай, и остальные данные (символ, магик, ещё чего-нить) соответствуют критерию того, что вот его-то и нужно закрывать при "своих условиях закрытия", то закрываем его, если "свои условия закрытия" имеют место быть.
Немного туманно для меня, но, поковырявшись,думаю пойму. Большое спасибо за то, что не отвернулись и не поучаете с вершин познания, как некоторые товаристчи из страны Советов.
Я додумался закрывать так:
//-------Пример(мой) приказа на открытие позиции с привязкой закрытия (по тикету)-----------------------------------------------------
//Локальная переменная, открывающая ордер БАЙ(вместо строки 63)
int Ticket_1() = (OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point));
//-------Тогда закрытие именно для этого приказа может быть таким:-----------------------------------------------------
if (Ticket_1()==true) //Если был открыт ордер №1, то...
{ if (Yellow_0>Red_0 && (Yellow_0-Red_0)<(Yellow_1-Red_1)) //Желтая выше красной, сужение(условие)
{ if (MA_2 < MA_1 && MA_1 > MA_0);} //Верхний перелом Средней (условие)
else (Yellow_0>Red_0 && (Yellow_0-Red_0)>(Yellow_1-Red_1)) //Желтая выше красной, расширение(альтерн.условие)
{ if (MB_2 < MB_1 && MB_1 > MB_0);} //Верхний перелом Боллинджера (условие)
bool Ans=OrderClose(Ticket,Lot,Bid,0); //...закрытие ордера (лок.переменная)
Alert("Попытка закрыть ордер БАЙ лотом("Lots"),цена("Ask"). Ожидание ответа..");
if (Ans==true) // Получилось :)
{
Alert ("Закрыт ордер БАЙ лотом("Lots"),цена закрытия("Bid");
break; // Выход из цикла закрытия позиции
}
}
Просьба дать анализ, ну и по предыдущему посту тоже. Извините за настырность, но Вы же видите - Вы единственный, кто отвечает... Спасибо!
//-------Пример(мой) приказа на открытие позиции с привязкой закрытия (по тикету)----------------------------------------------------- //Локальная переменная, открывающая ордер БАЙ(вместо строки 63) int Ticket_1() = (OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-1500*Point,Bid+1500*Point)); //-------Тогда закрытие именно для этого приказа может быть таким:----------------------------------------------------- if (Ticket_1()==true) //Если был открыт ордер №1, то... { if (Yellow_0>Red_0 && (Yellow_0-Red_0)<(Yellow_1-Red_1)) //Желтая выше красной, сужение(условие) { if (MA_2 < MA_1 && MA_1 > MA_0);} //Верхний перелом Средней (условие) else (Yellow_0>Red_0 && (Yellow_0-Red_0)>(Yellow_1-Red_1)) //Желтая выше красной, расширение(альтерн.условие) { if (MB_2 < MB_1 && MB_1 > MB_0);} //Верхний перелом Боллинджера (условие) bool Ans=OrderClose(Ticket,Lot,Bid,0); //...закрытие ордера (лок.переменная) Alert("Попытка закрыть ордер БАЙ лотом("Lots"),цена("Ask"). Ожидание ответа.."); if (Ans==true) // Получилось :) { Alert ("Закрыт ордер БАЙ лотом("Lots"),цена закрытия("Bid"); break; // Выход из цикла закрытия позиции } }Так гораздо легче читать. Извините.Немного туманно для меня, но, поковырявшись,думаю пойму. Большое спасибо за то, что не отвернулись и не поучаете с вершин познания, как некоторые товаристчи из страны Советов.
Я додумался закрывать так:
...Просьба дать анализ, ну и по предыдущему посту тоже. Извините за настырность, но Вы же видите - Вы единственный, кто отвечает... Спасибо!
Ну как-то субмурно всё у вас.
1. Определяете факт наступления условия для закрытия ордера Buy
2. В цикле просматриваете все открытые позиции и, когда находите нужный ордер Buy, закрываете его.
Вот пример цикла:
Т.е., для того, чтобы закрыть ордер Buy на текущем символе (на графике, где запущен советник) и с магиком 100500 (например), нужно вызвать функцию так:
Вовсе не обязательно писать число 100500, обычно магик уже задан в советнике переменной, например int Magic = 100500; Тогда вам вместо 100500 нужно вписать Magic
В цикле там, где должно быть закрытие выбранной позиции, я не стал ничего писать, так как там должен быть вызов функции закрытия ордера по тикету. Обычно это вызов полноценной функции с обработкой кодов возврата торгового сервера. Вы, для проверки, можете вписать туда простую команду закрытия выбранного ордера OrderClose();
Так гораздо легче читать. Извините.
Есть ещё возможность править старый пост, чтобы не плодить дубли ;)
Есть ещё возможность править старый пост, чтобы не плодить дубли ;)
Ну как-то субмурно всё у вас.
1. Определяете факт наступления условия для закрытия ордера Buy
2. В цикле просматриваете все открытые позиции и, когда находите нужный ордер Buy, закрываете его.
Вот пример цикла:
Т.е., для того, чтобы закрыть ордер Buy на текущем символе (на графике, где запущен советник) и с магиком 100500 (например), нужно вызвать функцию так:
Вовсе не обязательно писать число 100500, обычно магик уже задан в советнике переменной, например int Magic = 100500; Тогда вам вместо 100500 нужно вписать Magic
В цикле там, где должно быть закрытие выбранной позиции, я не стал ничего писать, так как там должен быть вызов функции закрытия ордера по тикету. Обычно это вызов полноценной функции с обработкой кодов возврата торгового сервера. Вы, для проверки, можете вписать туда простую команду закрытия выбранного ордера OrderClose();
Спасибо. Но как я понял, магик присваивается автоматически при открытии ордера. Поэтому по магику я не могу определить, на каких условиях открыт ордер, и, соответственно, не знаю, по каким условиям его закрывать.
Добрый день!
ret_code локальная переменная или глобальная переменная? ret_code сбрасывается после перезапуска терминала?