OrderSelect(SELECT_BY_POS,MODE_TRADES);
OrderSelect(SELECT_BY_POS,MODE_TRADES);
Вам нужно получше (более скурпулёзно) разобраться в смысле и
порядке использования функции OrderSelect() .
Посмотрите здесь Учебник по MQL4 - Торговые операции - Закрытие и удаление ордеров
.
Кроме того, если уж Вы разрабытываете некоторую технологию, то имеет смысл принять во внимание, что трейдер иногда вмешивается в торговлю, осуществляемую советником, а именно, может открыть или удалить ордер "с руки". Кроме того, ордера могут быть закрыты по стоп-приказу. Поэтому порядок следования ордеров (в терминале МТ) в общем случае может отличаться от того, который жёстко предусматривается советником. Это значит, что жёсткий алгоритм примерять нежелательно. Перед принятием решения желательно знать сколько всего ордеров, сколько из них баёв, а сколько селлов и на какие количества лотов. Для этой цели в эксперте следует наладить качественный учёт ордеров. Думаю, Вам интересно будет почитать Учёт ордеров в большой программе .
Вам нужно получше (более скурпулёзно) разобраться в смысле и
порядке использования функции OrderSelect() .
Посмотрите здесь Учебник по MQL4 - Торговые операции - Закрытие и удаление ордеров
.
Кроме того, если уж Вы разрабытываете некоторую технологию, то имеет смысл принять во внимание, что трейдер иногда вмешивается в торговлю, осуществляемую советником, а именно, может открыть или удалить ордер "с руки". Кроме того, ордера могут быть закрыты по стоп-приказу. Поэтому порядок следования ордеров (в терминале МТ) в общем случае может отличаться от того, который жёстко предусматривается советником. Это значит, что жёсткий алгоритм примерять нежелательно. Перед принятием решения желательно знать сколько всего ордеров, сколько из них баёв, а сколько селлов и на какие количества лотов. Для этой цели в эксперте следует наладить качественный учёт ордеров. Думаю, Вам интересно будет почитать Учёт ордеров в большой программе
Спасибо попробую!
А если по сути моего вопроса, что можете подсказать
Эта часть кода работает,
//---- input parameters extern int Profit=50; extern double Lot=0.1; int magic=123456; int total; //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { total=OrdersTotal(); //---- { if (total==0) { OrderSend(Symbol(),OP_SELLSTOP,Lot,Ask-(Profit*2)*Point,0,Ask,Ask-(Profit*3)*Point,"",magic,0,CLR_NONE); } if (total<2) { OrderSelect(SELECT_BY_POS,MODE_TRADES); { if(OrderType()==OP_BUYSTOP) { OrderSend(Symbol(),OP_SELLSTOP,Lot,Ask-(Profit*2)*Point,0,Ask,Ask-(Profit*3)*Point,"",magic,0,CLR_NONE); } } } if (total<2) { OrderSelect(SELECT_BY_POS,MODE_TRADES); { if(OrderType()==OP_SELLSTOP) { OrderSend(Symbol(),OP_BUYSTOP,Lot,Ask+Profit*Point,0,Ask-Profit*Point,Ask+(Profit*2)*Point,"",magic,0,CLR_NONE); } } }
а дальше нет
if (total<3) { OrderSelect(SELECT_BY_POS,MODE_TRADES); { if(OrderType()==OP_BUY) { OrderSend(Symbol(),OP_BUYSTOP,Lot,Ask+Profit*Point,0,Ask-Profit*Point,Ask+(Profit*2)*Point,"",magic,0,CLR_NONE); } } } if (total<3) { OrderSelect(SELECT_BY_POS,MODE_TRADES); { if(OrderType()==OP_SELL) { OrderSend(Symbol(),OP_SELLSTOP,Lot,Ask-(Profit*2)*Point,0,Ask,Ask-(Profit*3)*Point,"",magic,0,CLR_NONE); } } } return(0); } //---- return(0); } //+------------------------------------------------------------------+
OrderSelect(SELECT_BY_POS,MODE_TRADES);
Вам показывают где ошибка и прежде чем отвечать потрудитесь, хотя бы посмотреть справку.
По сути Вашего вопроса - вместо того, чтобы бесполезно тратить
время, необходимо доподленно разобраться в сущности и порядке
использования функции OrderSelect() и её параметров. Нет необходимости
переписывать готовые тексты из учебника и статей сюда, на форум,
чтобы ответить на Ваш вопрос. Просто почитайте.
А если по сути моего вопроса, что можете подсказать
А по сути не правильно используете функцию OrderSelect(). Так как она может быть использована и с 2-мя и с 3-мя параметрами и все параметры объявлены как int, только поэтому не возникает ошибки(хотя я не проверял), но по сути функция работает не правильно.
Вам нужно получше (более скурпулёзно) разобраться в смысле и
порядке использования функции OrderSelect() .
Посмотрите здесь Учебник по MQL4 - Торговые операции - Закрытие и удаление ордеров
.
При всем к Вам уважением, мне пока трудно разобраться. Ваш учебник я начал читать вчера и на некоторые вопросы уже нашел ответ.
Уже то, что одна часть советника заработала для меня прогресс. Но, как Вы понимаете хочется побыстрее, чтобы что-то получилось.
Если Вы знаете где именно моя ошибка, подскажите!
А если по сути моего вопроса, что можете подсказать
А по сути не правильно используете функцию OrderSelect(). Так как она может быть использована и с 2-мя и с 3-мя параметрами и все параметры объявлены как int, только поэтому не возникает ошибки(хотя я не проверял), но по сути функция работает не правильно.
Вам нужно получше (более скурпулёзно) разобраться в смысле и
порядке использования функции OrderSelect() .
Посмотрите здесь Учебник по MQL4 - Торговые операции - Закрытие и удаление ордеров
.
При всем к Вам уважением, мне пока трудно разобраться. Ваш учебник я начал читать вчера и на некоторые вопросы уже нашел ответ.
Уже то, что одна часть советника заработала для меня прогресс. Но, как Вы понимаете хочется побыстрее, чтобы что-то получилось.
Если Вы знаете где именно моя ошибка, подскажите!
Вашу бы энергию в мирное русло..
Во-первых, быстро не получится. Все хотят, но чтобы получить хороший
результат нужно время.
Во-вторых, два человека дважды указали Вам на ошибку: неправильно
используется функция OrderSelect(). Даны ссылки - справка в МЕ и Учебник.
Вам осталось прочесть, понять и использовать. Или.. я не знаю
какими ещё словами.. ну, хотите, я прям тут Вам лекцию прочту?
(полезу в учебник, скопирую параграф и выложу здесь). Думаете,
так лучше будет?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вот код.
Сначала ставит два стопордера, затем мне надо выставить третий, в зависимости от того какой открылся.
Ни фига не получается. Третий ордер не ставится. Такое впечатление, что советник не доходит до этого
момента и начинает сначала. Если кто знает подскажите пожалуйста!