Доброе утро,
Очень хорошо, только я не понимаю одну вещь. Когда я выставляю ордер в WIN и WDO, советник открывает 6 ордеров с тем количеством контрактов, которое я ввел в "плечо". То есть даже если я хочу торговать с 1 контрактом, я не могу, он открывает 6.
Это концепция, которую я упустил из виду? Я новичок, так что я начинаю с этой предпосылки.
Большое спасибо за то, что поделились.
Это концепция, которую я упустил из виду? Я новичок, поэтому исхожу из этой предпосылки.
Большое спасибо за то, что поделились.
Возможно, система отправляет более одного заказа, когда вы нажимаете на мышь, причины могут быть разные, но спасибо, что сообщили об этом 😁👍, чтобы решить эту проблему, вам придется добавить дополнительный тест, когда вы нажимаете на мышь, пункты, которые нужно изменить или добавить, отмечены ЗЕЛЕНЫМ ... убедитесь, что вы вводите их правильно, иначе заказ может быть не отправлен, или не принят сервером ... но добавление этого дополнительного теста должно решить вашу проблему. Логика следующая: когда мышь нажимается, устанавливается переменная STATIC, которая сбрасывается, чтобы позволить отправить новый заказ, только когда мышь больше не нажимается.
inline void MoveTo(int X, int Y, uint Key) { static double d_block = 0; int w = 0; datetime dt; bool bEClick, bKeyBuy, bKeySell; double take = 0, stop = 0, price; bEClick = (Key & 0x01) == 0x01; //Левый клик bKeyBuy = (Key & 0x04) == 0x04; //SHIFT Pressed bKeySell = (Key & 0x08) == 0x08; //CTRL Pressed ChartXYToTimePrice(Infos.Id, X, Y, w, dt, price); ObjectMove(Infos.Id, Infos.szHLinePrice, 0, 0, price = (bKeyBuy != bKeySell ? AdjustPrice(price) : 0)); ObjectMove(Infos.Id, Infos.szHLineTake, 0, 0, take = price + (Infos.TakeProfit * (bKeyBuy ? 1 : -1))); ObjectMove(Infos.Id, Infos.szHLineStop, 0, 0, stop = price + (Infos.StopLoss * (bKeyBuy ? -1 : 1))); if ((bEClick) && (bKeyBuy != bKeySell) && (d_block == 0)) CreateOrderPendent(bKeyBuy, Infos.Volume, (d_block = price), take, stop, Infos.IsDayTrade); else d_block = 0; ObjectSetInteger(Infos.Id, Infos.szHLinePrice, OBJPROP_COLOR, (bKeyBuy != bKeySell ? Infos.cPrice : clrNONE)); ObjectSetInteger(Infos.Id, Infos.szHLineTake, OBJPROP_COLOR, (take > 0 ? Infos.cTake : clrNONE)); ObjectSetInteger(Infos.Id, Infos.szHLineStop, OBJPROP_COLOR, (stop > 0 ? Infos.cStop : clrNONE)); };
Добрый день, где задать количество пунктов и количество лотов для мини-индекса?
На самом деле, в этом коде настройка происходит автоматически. Вы указываете ему финансиста и количество контрактов для торговли, а код производит настройку в пунктах... Эта информация выдается при размещении советника на графике. 😁👍
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Разработка торгового советника с нуля:
Давайте разберемся, как разработать советник для торговли с минимальным количеством программирования.
Этот советник можно улучшить во многих аспектах, чтобы он мог заставить работать набор параметров, правда, потребуется добавить больше кода, чтобы сделать его более независимым от MT5, но это зависит от творчества и потребностей каждого отдельного пользователя.
Большим успехом этого советника является тот факт, что он использует сам МТ5 для выполнения действий, которых нет в его коде, и поэтому он чрезвычайно стабилен и надежен.
Автор: Daniel Jose