[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 395
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо огромное за советы!!! Разобрался со своим вопросом. Оказалось, что у нужного мне брокера при выставлении рыночного ордера, т.е. по условиям, нет возможности выставить одновременно стоп-уровни. Теперь выставляются ордера без стоп-уровней, а стоп-уровни я задаю выставить сразу после каждого ордера. Возникла проблема: модифицируется самая маленькая часть ордеров, а по большинству выдается в разделе "эксперты" следующее:
2011.05.19 09:46:55 Spacenewcomer-Svecha CLM1,M15: open #30906670 sell 0.01 CLM1 at 99.79 ok2011.05.19 09:46:55 Spacenewcomer-Svecha CLM1,M15: invalid ticket for OrderModify function
2011.05.19 09:55:40 Spacenewcomer-Svecha ESM1,M5: open #30906787 buy 0.01 ESM1 at 1337.50 ok
2011.05.19 10:00:03 Spacenewcomer-Svecha EURUSD,M15: invalid ticket for OrderModify function
Привожу текст кода:
{res=OrderSend(Symbol(),OP_SELL,0.01,Bid,3,0,0,"основной",_MagicNumber,0,Red);
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+StopLoss*Point,Ask-TakeProfit*Point,0,Red);
return(0);
}
И при чем модифицируются именно те, которые открываются первыми после запуска советника!
Естественно, что в коде неправильно задана мной модификация ордеров... Подскажите!
OrderSelect(res, SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+StopLoss*Point, Digits),NormalizeDouble(Ask-TakeProfit*Point, Digits),0,Red);
res=OrderSend(Symbol(),OP_SELL,0.01,Bid,3,0,0,"основной",_MagicNumber,0,Red);
OrderSelect(res, SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+StopLoss*Point, Digits),NormalizeDouble(Ask-TakeProfit*Point, Digits),0,Red);
Уважаемые программисты, обращаюсь за посдсказкой по доработке советника: есть открытая позиция, через некоторое время поступает повторный сигнал на открытие в том же направлении. Я хочу, чтобы доливка по повторному сигналу происходила только в том случае если первый ордер уже находится в плюсе. Я сейчас реализовал это путем сравнения размера баланса и эквити (если эквити больше баланса, значит открытый ордер в плюсе), но такой вариант не подойдет, если на одном счете работают несколько советников.
Подскажите код для определения прибыли/убытка по имеющемуся открытому последнему ордеру .
Если сохранен его номер ticket, то просто
Если сохранен его номер ticket, то просто
Спасибо! Не подскажете как сохранить тикет последнего ордера?
ну как простейший вариант объявить глобальную переменную int ticket
и везде где OrderSend(...) заменить на ticket = OrderSend(...)
соответственно он всегда будет хранить номер последнего открытого ордера
либо смотртите тему Только "Полезные функции от KimIV"
ну как простейший вариант объявить глобальную переменную int ticket
и везде где OrderSend(...) заменить на ticket = OrderSend(...)
соответственно он всегда будет хранить номер последнего открытого ордера
либо смотртите тему Только "Полезные функции от KimIV"
Помогите найти ошибку,
Спасибо
Не знаю... думал будет работать, без тоже не работает, сделал так и работает....
PRICE_OPEN !!!! - так использовать эту цену нельзя! Она работает только для индикаторов. Используйте Бид или Аск.
Спасибо!!! Да, сто пудов в этом дело.
Парни вопрос по сложнее......
Как заставить советника закрыть все ордера при достижении заданной прибыли .... Закрыть только ордера на одном символе..
пример : Советник работает на 3х парах сумма для закрытия всех ордеров по одному символу 100р ...
на евро долларе больше 100 р он закрывает ордера только на евро долларе при этом на других может быть - 200р ..
Если брать accountbalanse() то советник закрывает только когда сумма по трем парам больше 100р. этот вариант мне не подходит !!!!
Помогите плиз.........