А после открытия позы можно менять стоп и тэйк с нуля до нужного
значения?
Да, в остальном всё как обычно...
Я пытался использовать:ъ
OrderModify(???,0,Ask-100*Point,Ask+100*Point,0,CLR_NONE);
но что должно быть вместо ???
OrderTicket()
даёт ошибку...
kombat. Попробуй предварительно выбрать ордер по команде OrderSelect(.....). Должно помочь.
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStop,Digits),NormalizeDouble((Ask+TakeProfit*Point),Digits),0,Green); и OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*TrailingStop,Digits),NormalizeDouble((Bid-TakeProfit*Point),Digits),0,Red);
kombat:
Будьте добры, скиньте адресок ДЦ figaro#mail.ru . Хочу попробовать адаптировать
советник.
Проблема в том... что у "моего" ДЦ 2/3 инструментов исполнения по by market
meta-trader2007 писал (а):
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStop,Digits),NormalizeDouble((Ask+TakeProfit*Point),Digits),0,Green); и OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*TrailingStop,Digits),NormalizeDouble((Bid-TakeProfit*Point),Digits),0,Red);
OrderTicket, OrderOpenPrice... работают только после OrderSelect.
После OrderSend нужно обязательно делать OrderSelect, если предусматривается дальнейшая модификация ордера.
Кароче после открытия позы вызовите такую функцию:
void Trailingstoplossi () { Sleep (10000); int cnt, total; total=OrdersTotal(); for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // check for opened position OrderSymbol()==Symbol()&& OrderMagicNumber()==MAGIC) // check for symbol { if(OrderType()==OP_BUY) // long position is opened { if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(Point*TrailingStop,Digits)) { if(OrderStopLoss()<NormalizeDouble(Bid-Point*TrailingStop, Digits)) { OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((Bid-Point*TrailingStop),Digits),NormalizeDouble((Ask+TakeProfit*Point),Digits),0,Green); return(0); } } } else { if(NormalizeDouble((OrderOpenPrice()-Ask),Digits)>NormalizeDouble((Point*TrailingStop),Digits)) { if((NormalizeDouble(OrderStopLoss(),Digits)>NormalizeDouble((Ask+Point*TrailingStop),Digits)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble((Ask+Point*TrailingStop),Digits),NormalizeDouble((Bid-TakeProfit*Point),Digits),0,Red); return(0); } } } } } return(0); }
Вызывается функция так (сразу после команд на открытие поз напишите):
Trailingstoplossi ();
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Заранее приношу извинения если где-то уже есть...
Однако поиск не помог, и потому открываю эту тему.
Проблема в том... что у "моего" ДЦ 2/3 инструментов исполнения по by market
а это как известно имеет некий существенный недостаток: нельзя выставить сразу стопы
И соответственно "не работают" те скрипты и советники что сразу их ставят, т.е. имеют такой вид:
Выходом из ситуации было бы игнорирование терминалом при таком исполнении уровней и тупо подставлять 0.
Но это ещё половина решения, даже если разработчики примут к сведению...
т.е. за однин проход открывается поза по рынку и сразу же "стопы" в виде отложенных ордеров.Гораздо неудобнее то, что такими простыми средствами MQL не решить открытие со стопами
без существенной доработки скриптов... лично моего ламерского уровня хватило лишь на это:
Однако это решение через одно место...
Хотя бы по тому что открывается в 2/3 "лишних" ордеров, три запроса на сервер, усложняется контроль.
Да ещё и уровни отложенных может отчаться от выставленные 100 пип "стопов" при
слишком подвижном рынке... т.е. по уму надо бы не Аск а уровень открытия "основной" позиции подставлять.
В общем просьба!
помогите разрубить этот узел со стопами "за раз" с открытием позиции для исполнения по маркету.
Ключевые слова для поиска, вдруг кому ещё пригодится:
by market, sell by market, buy by market, селл по маркету, бай по маркету, по рынку.