- Получение данных по последним 3 барам
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- FAQ по сервису Сигналы
Здравствуйте. Не понимаю, сколько уже не изменял все, что можно. Почему возникают эти ошибки? Всё уже правил, и по-разному цены заявлял, никак. Всегда одно и тоже. И выставлял через значение Ask, и через mrate[0].close, и через переменную BuyPrice, полученную через Ask.
А не пробовали сначала открыть позицию без SL и TP, а потом ее модифицировать и установить нужный SL и TP.
А не пробовали сначала открыть позицию без SL и TP, а потом ее модифицировать и установить нужный SL и TP.
Нет, не пробовал, но ведь должно работать в идеале и так, в самом запросе есть и установка sl и tp.
Нет, не пробовал, но ведь должно работать в идеале и так, в самом запросе есть и установка sl и tp.
Попробуйте.
P.s. либо меня программа явно троллит. Когда ведь срабатывает SL или TP, то выставляется ордер в противоположную сторону. Вчера когда срабатывал SL у меня явно были 4 события OnTradeTransaction. Сейчас когда срабатывает SL, выходит только событие Request. Стопы не выставляются, пытался как угодно уже прописывать, это в чем может быть дело?
Здравствуйте. Не понимаю, сколько уже не изменял все, что можно. Почему возникают эти ошибки? Всё уже правил, и по-разному цены заявлял, никак. Всегда одно и тоже. И выставлял через значение Ask, и через mrate[0].close, и через переменную BuyPrice, полученную через Ask.
- Для объекта mysymbol перед торговым запросом обновляете цены (метод RefreshRates()), а если обновляете контролируете результат (true or false)? Контролируете, что именно Вы получили (контроль на отсутствие цен "0.0")?
- Стоп Лосс и тейк профит нужно получать через метод NormalizePrice - так будет автоматически учитываться квантование по символу.
- С чего это вдруг для BUY вы при расчёте SL и TP ведёте отчёт от цены ASK? TP и SL для позиции BUY - это цены по которым будет закрыта позиция BUY, а значит это будет цена BID.
- Для объекта mysymbol перед торговым запросом обновляете цены (метод RefreshRates()), а если обновляете контролируете результат (true or false)? Контролируете, что именно Вы получили (контроль на отсутствие цен "0.0")?
- Стоп Лосс и тейк профит нужно получать через метод NormalizePrice - так будет автоматически учитываться квантование по символу.
- С чего это вдруг для BUY вы при расчёте SL и TP ведёте отчёт от цены ASK? TP и SL для позиции BUY - это цены по которым будет закрыта позиция BUY, а значит это будет цена BID.
Так, всё получилось, когда я изменил Ask на Bid. Просто почему? Я ведь указываю просто цену. Образно говоря.
1. Я покупаю по цене Ask - 11000. Bid сейчас - 10990.
2. Как я понимал раньше в другой программе, там не было Bid и Ask и я просто ставил стоп как число. Закрытие свечи +- значение.
3. Поэтому я и беру цену покупки ( или цену закрытия свечи на данный момент времени ) и от нее вычитаю вниз значение, получаю SL, прибавлю вверх значение, получаю TP.
Можете пожалуйста пояснить этот вопрос. Данная ошибка была у меня с первого дня изучения данного языка.
P.s. с первыми двумя пунктами я делал всё правильно.
Так, всё получилось, когда я изменил Ask на Bid. Просто почему? Я ведь указываю просто цену. Образно говоря.
1. Я покупаю по цене Ask - 11000. Bid сейчас - 10990.
2. Как я понимал раньше в другой программе, там не было Bid и Ask и я просто ставил стоп как число. Закрытие свечи +- значение.
3. Поэтому я и беру цену покупки и от нее вычитаю вниз значение, получаю SL, прибавлю вверх значение, получаю TP.
Можете пожалуйста пояснить этот вопрос. Данная ошибка была у меня с первого дня изучения данного языка.
P.s. с первыми двумя пунктами я делал всё правильно.
Пункт 2: неправильно. Вам нужно применять метод CSymbolInfo::NormalizePrice, а Вы применяете (вообще не пойму, что Вы там применяете).
И уточните свой вопрос.
Пункт 2: неправильно. Вам нужно применять метод CSymbolInfo::NormalizePrice, а Вы применяете (вообще не пойму, что Вы там применяете).
И уточните свой вопрос.
А, на счет Пункта 2, на форуме кто-то выложил данную функцию, вот и записал, не знал, что она уже реализована в классе.
double NormalizePrice(string symbol,double value) { double ts=SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE); if(ts==0)return(value); return(NormalizeDouble(value/ts,0)*ts); }А про вопрос.
Я всегда в голове понимал, что у тебя есть цена покупки Ask. И есть стоп и тейк профит, как просто цены выше и ниже цены покупки. Поэтому эти цены можно прописывать вручную как захочешь:
1. Цена покупки (ask) +- какое-то значение.
2. Если цена покупки всегда равна открытию свечи, то mrate[0].open +- какое-то значение.
3. Или m_position.PriceOpen() +- какое-то значение.
Это правильные высказывания?
Так, всё получилось, когда я изменил Ask на Bid. Просто почему? Я ведь указываю просто цену. Образно говоря.
1. Я покупаю по цене Ask - 11000. Bid сейчас - 10990.
2. Как я понимал раньше в другой программе, там не было Bid и Ask и я просто ставил стоп как число. Закрытие свечи +- значение.
3. Поэтому я и беру цену покупки ( или цену закрытия свечи на данный момент времени ) и от нее вычитаю вниз значение, получаю SL, прибавлю вверх значение, получаю TP.
Можете пожалуйста пояснить этот вопрос. Данная ошибка была у меня с первого дня изучения данного языка.
P.s. с первыми двумя пунктами я делал всё правильно.
Есть такое понятие как минимальный уровень стопов, Разница между текущей ценой и уровнем стопа не должна быть меньше этого значения, запросить данное значение можно через функцию
SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL);
...
Есть такое понятие как минимальный уровень стопов, Разница между текущей ценой и уровнем стопа не должна быть меньше этого значения, запросить данное значение можно через функцию
...
Я проверял эту тему тоже. Я выставляю больше, чем минимальный уровень стопов.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования