Ладно. Не будем может. Похоже мы оба не обладаем достаточными знаниями. Автор вопроса спрашивал как изменить СтопЛосс. Думаю, что он не будет вникать в глубины.
А Вы всё-таки попробуйте присваивать после функтции OrderSend
И Вы Меня не правильно поняли по поводу выбора ордеров... Надо так:
Привет!
Огромное спасибо! за ответы!!!
я, наверное, не правильно выразился: идея такова:
заключается сделка сэлл при 1.4545.. цена уходит против тренда - 1.4585.. и ТУТ - должен выставляться отложенный ордер на 1.4565.
мой код работает не корректно:
void otlogka (int order)
{
int a, k=OrdersTotal();
for (a=k-1; a>=0; a--){
if (OrderSelect(a, SELECT_BY_POS, MODE_TRADES)){
if (OrderType()==OP_BUY){
if (Bid*Point-OrderOpenPrice()>40)
RefreshRates();
if (k>1){
{
order=OrderSend(Symbol(),OP_SELLLIMIT,0.02,OrderOpenPrice()+20*Point,1,SL,0,"Otlogka",mn,5,0);
}}}}}
if (OrderType()==OP_SELL){
if (Ask*Point-OrderOpenPrice()<40)
RefreshRates();
if (k>1){
{
order=OrderSend(Symbol(),OP_BUYLIMIT,0.02,OrderOpenPrice()-20*Point,1,SL,0,"Otlogka",mn,5,0);
}}}
}
заключается сделка сэлл при 1.4545.. цена уходит против тренда - 1.4585.. и ТУТ - должен выставляться отложенный ордер на 1.4565.
мой код работает не корректно:
Прошу помощи!!!
Bid и Ask не нужно умножать на Point. Сразу бросилось в глаза...
Условия должны быть построены иначе:
if (Bid-OrderOpenPrice() > 40*Point)
{...}
if (OrderOpenPrice()-Ask > 40*Point)
{...}
А ещё Мне не ясно что за переменная у Вас SL? Какое значение она имеет? Где рассчитывается?
А вот это
if (OrderType()==OP_SELL){
if (Ask*Point-OrderOpenPrice()<40)
RefreshRates();
if (k>1){
{
order=OrderSend(Symbol(),OP_BUYLIMIT,0.02,OrderOpenPrice()-20*Point,1,SL,0,"Otlogka",mn,5,0);
}}}
нужно заключить в цикл... Цикл с перебором ордеров должен быть общим для BUY- и SELL-ордеров.
Что-то у Вас совсем плохо с программированием... Советую перечитать ещё раз учебник и разобрать примеры, которые в нём приводятся по написанию простого советника, учёту ордеров и торговым функциям.
Также ошибка Ваша: RefreshRates() нужно ставить до того момента, когда Вы хотите воспользоваться предопределёнными переменными или массивами тайм-серии, а не после...
Bid и Ask не нужно умножать на Point. Сразу бросилось в глаза...
Условия должны быть построены иначе:
А ещё Мне не ясно что за переменная у Вас SL? Какое значение она имеет? Где рассчитывается?
А вот это
нужно внести в цикл...
Что-то у Вас совсем плохо с программированием... Советую перечитать ещё раз учебник и разобрать примеры, которые в нём приводятся по написанию простого советника, учёту ордеров и торговым функциям.
Мы можем найти профит по соответствующей сделке в пипсах. Если профит отрицательный, то это уже убыток. Вот Мы и проверяем, если убыток больше 40 пипс, то нужно выставить отложенный ордер.
Отложенный ордер BUYLIMIT выставится на цене 1.4545-20*Point = 1.4525... А надо 1.4565.
Но перед этим всем, попробуйте переписать весь код заново. Очень много ошибок, а некоторые места написаны так, как будто Вы не понимаете того, что пишете.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Ладно. Не будем может. Похоже мы оба не обладаем достаточными знаниями. Автор вопроса спрашивал как изменить СтопЛосс. Думаю, что он не будет вникать в глубины.
А Вы всё-таки попробуйте присваивать после функтции OrderSend
Что это за цифра "12" в функции OrderSend? :(
И Вы Меня не правильно поняли по поводу выбора ордеров... Надо так:
Привет!
Огромное спасибо! за ответы!!!
заключается сделка сэлл при 1.4545.. цена уходит против тренда - 1.4585.. и ТУТ - должен выставляться отложенный ордер на 1.4565.
мой код работает не корректно:
Прошу помощи!!!
Я же сказал, что пока будет выполняться функция OrderSend цена может поменяться. Поэтому присваивать надо после, когда она уже поменялась.
Можно и так:
В каждом подходе есть свои плюсы и свои минусы.Привет!
Огромное спасибо! за ответы!!!
заключается сделка сэлл при 1.4545.. цена уходит против тренда - 1.4585.. и ТУТ - должен выставляться отложенный ордер на 1.4565.
мой код работает не корректно:
Прошу помощи!!!
Bid и Ask не нужно умножать на Point. Сразу бросилось в глаза...
Условия должны быть построены иначе:
А ещё Мне не ясно что за переменная у Вас SL? Какое значение она имеет? Где рассчитывается?
А вот это
нужно заключить в цикл... Цикл с перебором ордеров должен быть общим для BUY- и SELL-ордеров.
Что-то у Вас совсем плохо с программированием... Советую перечитать ещё раз учебник и разобрать примеры, которые в нём приводятся по написанию простого советника, учёту ордеров и торговым функциям.
Также ошибка Ваша: RefreshRates() нужно ставить до того момента, когда Вы хотите воспользоваться предопределёнными переменными или массивами тайм-серии, а не после...
Bid и Ask не нужно умножать на Point. Сразу бросилось в глаза...
Условия должны быть построены иначе:
А скобки разве не надо ставить?
Bid и Ask не нужно умножать на Point. Сразу бросилось в глаза...
Условия должны быть построены иначе:
А ещё Мне не ясно что за переменная у Вас SL? Какое значение она имеет? Где рассчитывается?
А вот это
нужно внести в цикл...
Что-то у Вас совсем плохо с программированием... Советую перечитать ещё раз учебник и разобрать примеры, которые в нём приводятся по написанию простого советника, учёту ордеров и торговым функциям.
А скобки разве не надо ставить?
Не обязательно. И без скобок будет работать! :)
Кому как удобнее. Почерк! :D
Это обычной Stop Loss = SL
smartemiy:
заключается сделка сэлл при 1.4545.. цена уходит против тренда - 1.4585.. и ТУТ - должен выставляться отложенный ордер на 1.4565.
Кстати, если против тренда, то условия должны быть наоборот, минусовые:
Обычно из выражений
Мы можем найти профит по соответствующей сделке в пипсах. Если профит отрицательный, то это уже убыток. Вот Мы и проверяем, если убыток больше 40 пипс, то нужно выставить отложенный ордер.
А как он рассчитывается? И почему он общий для BUY и SELL?
Stop loss не так важен, сейчас..
код, по теории, будет работать?? с учетом Ваших поправок
Stop loss не так важен, сейчас..
код, по теории, будет работать?? с учетом Ваших поправок
Возможно и будет работать, но корректно ли...
Опять же из Вашей задачи:
smartemiy:
"заключается сделка сэлл при 1.4545.. цена уходит против тренда - 1.4585.. и ТУТ - должен выставляться отложенный ордер на 1.4565."Открыт ордер SELL. OrderOpenPrice() вернёт значение 1.4545.
Цена уходит против тренда. Ask = 1.4585. Условие:
сработает (поставил знак "<=").
Проанализируем следующий код:
Отложенный ордер BUYLIMIT выставится на цене 1.4545-20*Point = 1.4525... А надо 1.4565.
Но перед этим всем, попробуйте переписать весь код заново. Очень много ошибок, а некоторые места написаны так, как будто Вы не понимаете того, что пишете.