Привет всем,
Хотел бы получить от вас помощь в решении этого вопроса;
Когда ордер открыт и цена ниже цены открытия ордера, я хочу открыть противоположный ордер.
В этом конкретном случае я пытаюсь использовать этот код, но безуспешно. Может ли кто-нибудь помочь?
Заранее спасибо
Луис
Не могли бы вы ответить на этот вопрос, это очень поможет вам:
1. Какое возвращаемое значение OrderSelect() - прочитайте документацию OrderSelect, это поможет вам ответить на этот вопрос.
2. Какая ошибка возникает при неудачной отправке заказа?
Привет всем,
Хотел бы получить от вас помощь в решении этого вопроса;
Когда ордер открыт и цена ниже цены открытия ордера, я хочу открыть противоположный ордер.
В этом конкретном случае я пытаюсь использовать этот код, но безуспешно. Может ли кто-нибудь помочь?
Какова цель переменнойUsePoint? Если вы можете объяснить, почему вы используете ее, вы, вероятно, поймете, в чем проблема... также... откуда берется значениеOpenPrice ?
Разве вы не хотите знать, работает ли ваша OrderSend() или нет? и если она не работает, разве вы не хотите знать почему? разве вы не хотите знать, какие соответствующие переменные были, когда она не сработала?
Читайте здесь:Что такое возвращаемые значения функции? Как их использовать?
Здравствуйте, RaptorUK;
Спасибо за быстрый ответ;
UsePoint используется для корректировки 5 десятичных знаков, поэтому Point*10.
Можете ли вы объяснить, почему вы используете его в этой ситуации?
Привет, RaptorUK,
Вы правы. Мне просто нужно использовать это для TakeProfit и Stoploss (я думаю...).
Привет, RaptorUK,
Вы правы. Мне просто нужно использовать это для TakeProfit и Stoploss (я думаю...).
Здравствуйте, RaptorUK,
Я посмотрел на ссылку, которую вы предоставили, и поместил в код рутину ошибки, и ошибка, которая только что вернулась, говорит 2012.11.06 06:40 market order ecn v1 EURUSDi,M5: Order Send failed, error # 4051.
Затем в коде я сделал некоторые изменения в OrderSelect и use Ticket, но все равно ничего не работает. Также я поискал значение и нашел следующее:ERR_INVALID_FUNCTION_PARAMVALUE (4051), и, к сожалению, я не знаю.
как быть дальше...
double OpenOppositeOrder() { int Op; // for(int Counter=0;Counter<=OrdersTotal()-1;Counter++) for(int Counter=OrdersTotal()-1;Counter>=0;Counter--) { //OrderSelect(Counter,SELECT_BY_POS,MODE_TRADES); OrderSelect(Ticket,SELECT_BY_TICKET); { if(OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNumber) { Op=OrderType(); if(Op==OP_BUY && NormalizeDouble(Bid,Digits)<OpenPrice) { Ticket = OrderSend(Symbol(),OP_SELL,LotSize,NormalizeDouble(Bid,Digits),UseSlippage,0,0,"Sell Order",MagicNumber,0,Red); if(Ticket>0)AddLimitsSell(); } if( Ticket > 0 ) { Print("Order placed # ", Ticket); } else { Print("Order Send failed, error # ", GetLastError() ); } if(Op==OP_SELL && NormalizeDouble(Ask,Digits)>OpenPrice) { Ticket = OrderSend(Symbol(),OP_BUY,LotSize,NormalizeDouble(Ask,Digits),UseSlippage,0,0,"Buy Order",MagicNumber,0,Green); if(Ticket>0)AddLimitsBuy(); } if( Ticket > 0 ) { Print("Order placed # ", Ticket); } else { Print("Order Send failed, error # ", GetLastError() ); } } } } }
Здравствуйте, RaptorUK,
Я посмотрел на ссылку, которую вы предоставили, и поместил в код рутину ошибки, и ошибка, которая только что вернулась, говорит 2012.11.06 06:40 market order ecn v1 EURUSDi,M5: Order Send failed, error # 4051.
Затем в коде я сделал некоторые изменения в OrderSelect и use Ticket, но все равно ничего не работает. Также я поискал значение и нашел следующее:ERR_INVALID_FUNCTION_PARAMVALUE (4051), и, к сожалению, я не знаю.
как быть дальше...
Вам нужно проверить значения, которые вы отправляете в функцию OrderSend() ... правильные ли они типы? Например,UseSlippage должно быть int, а звучит как bool ... LotSize- double? Находится ли оно в правильном диапазоне? Больше Min Lot и меньше Max Lot и кратно Lot Step?
Привет, RaptorUK,
Извините, что отнимаю ваше время, возможно, вы начинаете уставать от меня. Итак, Slippage - int, а LotSize - double.... и все еще плохо....
Я действительно все еще пытаюсь понять это, но похоже, что мое невежество берет верх(...)
Временами кажется, что это может быть какая-то проблема с тестером, и тогда я пробую на демо. И здесь я не могу открыть противоположный ордер, если цена ниже (для Buy) OrderOpenPrice.
Пожалуйста, не могли бы вы взглянуть на прилагаемый код?
Я не хочу, чтобы вы написали код за меня, но просто немного помочь.
Заранее благодарю за любую помощь и за ваше терпение.
Луис
Привет RaptorUK,
Извините, что отнимаю ваше время, возможно, вы начинаете уставать от меня. Итак, Slippage - int, а LotSize - double.... и все еще плохо....
Я действительно все еще пытаюсь понять это, но похоже, что мое невежество берет верх(...)
Временами кажется, что это может быть какая-то проблема с тестером, и тогда я пробую на демо. И здесь у меня не получается открыть противоположный ордер, если цена ниже (для Buy) OrderOpenPrice.
Пожалуйста, не могли бы вы взглянуть на код, который прилагается?
Я не хочу, чтобы вы написали код за меня, но просто немного помочь.
Заранее благодарю за любую помощь и за ваше терпение.
Почему вы изменили правильный код на неправильный?
Ваш цикл перебирал все ордера, которые были в пуле трейдеров (открытые и отложенные ордера)... Теперь этот код не имеет смысла, откуда берется тикет при первом проходе в цикле?
for(int Counter=OrdersTotal()-1; Counter>=0; Counter--) { //OrderSelect(Counter,SELECT_BY_POS,MODE_TRADES); OrderSelect( Ticket, SELECT_BY_TICKET);
Еще один вопрос для вас . ... почему эта функция имеет тип double, если она ничего не возвращает?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет всем,
Хотел бы получить от вас помощь в решении этого вопроса;
Когда ордер открыт и цена ниже цены открытия ордера, я хочу открыть противоположный ордер.
В этом конкретном случае я пытаюсь использовать этот код, но безуспешно. Может ли кто-нибудь помочь?
Заранее спасибо
Луис