Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 963
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
да atztek, извиняюсь за неточность в описании:
1. потому-что до пересечения с МА это были buy-stop ордера и Ur1 Ur2 Ur3 выясняются только после пересечения цены с MA.
2. и соответственно вышеупомянутый for-цикл ищет среди всех ордеров buy-ордера (т.к. там есть еще 3 sell-stop ордера и они ползут по другой MA на каждой свече)
да atztek, извиняюсь за неточность в описании:
1. потому-что до пересечения с МА это были buy-stop ордера и Ur1 Ur2 Ur3 выясняются только после пересечения цены с MA.
2. и соответственно вышеупомянутый for-цикл ищет среди всех ордеров buy-ордера (т.к. там есть еще 3 sell-stop ордера и они ползут по другой MA на каждой свече)
Советник открывает (на основании пересечения с MA ) несколько (3) рыночных ордеров
Стоп ордера становятся рыночными в момент пересечения их ценой, МА здесь не при чем.
Ну ладно, Вам решать как работает Ваш советник.
2. Каково назначение - ?
Т.е. за каждый цикл в "for" Вы видите один ордер, а не все три одновременно.
atztek, 1. мой первый пост я уже поправил.
2. Назначение bool mod_Buy1 = Модифицировать ордер ( OrderTicket(первый BUY из перебранных ),Цену открытия не изменяем, Стоплос не изменяем,Тейкпровит берем из Ur1,0,clrNONE);
"Т.е. за каждый цикл в "for" Вы видите один ордер, а не все три одновременно."
В этом-то всё и дело, что я не могу сообразить, как перебрать эти 3 ордера по тикетам и каждому из них расставить соответствующие уровни Тейкпрофит (Ur1 Ur2 Ur3).
atztek, 1. мой первый пост я уже поправил.
2. Назначение bool mod_Buy1 = Модифицировать ордер ( OrderTicket(первый BUY из перебранных ),Цену открытия не изменяем, Стоплос не изменяем,Тейкпровит берем из Ur1,0,clrNONE);
"Т.е. за каждый цикл в "for" Вы видите один ордер, а не все три одновременно."
В этом-то всё и дело, что я не могу сообразить, как перебрать эти 3 ордера по тикетам и каждому из них расставить соответствующие уровни Тейкпрофит (Ur1 Ur2 Ur3).
1. Или я не понимаю Вас, или Вы не знаете что хотите сделать (или как это работает).
Вы даже после исправления говорите о том что у Вас были стоп-ордера, а потом "после пересечения с МА" они стали рыночными.
- Вы либо сразу открываете рыночные ордера (например "после пересечения с МА"), либо открываете стоп-ордера, которые автоматически станут рыночными в момент когда цена их пересечет.
2. Вижу что это вопрос не исправления, а логики работы Вашего советника
(возникает множество вопросов, например есть ли у Вас в это время другие открытые ордера, почему Вами выбираются ордера по тикету, а не позиции и т.п.)
Не беритесь сразу за 3 ордера, начните с простого примера с одним ордером и добейтесь чтобы советник работал без ошибок. Потом усложняйте его добавлением 3-х ордеров.
1) да именно так - "открываете стоп-ордера, которые автоматически станут рыночными в момент когда цена их пересечет."
2) Других (рыночных) ордеров в момент преобразования лимитных в рыночные нет, есть только лимитные. Может быть можно выбрать и по позиции а не по тикету - я не против. Хорошо. давайте рассмотрим ситуацию с Двумя ордерами. потому-что с Одним я и сам разберусь....
1) да именно так - "открываете стоп-ордера, которые автоматически станут рыночными в момент когда цена их пересечет."
2) Других (рыночных) ордеров в момент преобразования лимитных в рыночные нет, есть только лимитные. Может быть можно выбрать и по позиции а не по тикету - я не против. Хорошо. давайте рассмотрим ситуацию с Двумя ордерами. потому-что с Одним я и сам разберусь....
Хорошо, приступайте. Когда разберетесь с одним тогда и остальные станут понятны.
1) да именно так - "открываете стоп-ордера, которые автоматически станут рыночными в момент когда цена их пересечет."
2) Других (рыночных) ордеров в момент преобразования лимитных в рыночные нет, есть только лимитные. Может быть можно выбрать и по позиции а не по тикету - я не против. Хорошо. давайте рассмотрим ситуацию с Двумя ордерами. потому-что с Одним я и сам разберусь....
Вот именно это и надо.
1. пардон ошибся я имел ввиду стоп-ордера.
2. с 1 всё работает. а с двумя и более не получается разобраться....
приветствую, AlexeyVik
bool mod_Buy1 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
а для двух остальных как? Так-же?
приветствую, AlexeyVik
bool mod_Buy1 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
а для двух остальных как? Так-же?
Обрати внимание на цикл в моём примере. В цикле перебираются все ордера, проверяются по типу, ещё надо проверить по символу и магику и не мешало-бы в твоём случае на OrderStopLoss() == 0 или OrderTakeProfit() == 0 в зависимости что важней, может-ли быть ситуация оставления ордера без стопа или без тейка, для того чтобы не пытаться модифицировать ордер без нужды и не получать ошибку 1.
В этом цикле поочерёдно выбираются ордера и при соблюдении всех условий отправляется на модификацию. Таким образом будут модифицированы все нужные ордера.
Второй вариант: Если предусмотрено только 3 ордера, можно на уровне глобальных переменных объявить, к примеру, int tick_buy_1, tick_buy_2, tick_buy_3 и при открытии ордеров записать тикеты в эти переменные. Тогда можно будет выбирать ордер по тикету, проверять его тип, не закрыт-ли ордер и только тогда и уже без цикла