Есть ли среди присутствующих участники конкурса на GO Markets? У меня есть вопрос в этой связи...
Задайте вопрос -- и вам ответят ;)
Ниже привожу код советника, который формирует команду открытия ордера. В коде все цены нормализованы. А командой Print я вывожу информацию о том, в каком виде в конкретный момент времени была сформирована команда на открытие ордера. Вот пример реально сформированной команды: 2011.09.06 02:30:08: OrderSend(EURUSD,OP_BUY,4,1.40732,4,1.35732,1.41982,iK_TF: 3102 : EURUSD_PERIOD_M5,3102,0,32768)
По вопросу близости к рынку здесь видно, что TakeProfit = 1.41982-1.40732=1250 пунктов, a StopLoss = 1.40732-1.35732=5000пунктов. Нельзя сказать, что выставляемый ордер близок к рынку. Тем не менее получаю ошибку 130!!!
По вопросу близости к рынку здесь видно, что TakeProfit = 1.41982-1.40732=1250 пунктов, a StopLoss = 1.40732-1.35732=5000пунктов. Нельзя сказать, что выставляемый ордер близок к рынку. Тем не менее получаю ошибку 130!!!
P.S.: 2011.09.06 02:30:08 - время терминала.
int OpenBuy() { int err, ticket; color myColor = Green; if (MarketInfo(Symbol(), MODE_STOPLEVEL) > 2*spread) double shift = MarketInfo(Symbol(), MODE_STOPLEVEL); else shift = 2*spread; Print("StopLoss=",StopLoss," TakeProfit=",TakeProfit," STOPLEVEL=",MarketInfo(Symbol(), MODE_STOPLEVEL)); double myPrice = NormalizeDouble(Ask/* - shift*Point*/,Digits); double myTakeProfit = NormalizeDouble(myPrice + TakeProfit*Pnt,Digits); // double myStopLoss = NormalizeDouble(myPrice - StopLoss*Pnt,Digits); sl_up = StopLoss*Cor; int h = 1; int slp = Slippage; while (h < 5) { Print("Попытка ",h,": OrderSend(",Symbol(),",OP_BUY,",lotMM,",",DoubleToStr(myPrice,Digits),",",Slippage,",",DoubleToStr(myStopLoss,Digits),",",DoubleToStr(myTakeProfit,Digits),",",ExpertName,",", MagicNumber,",0,",myColor,")"); ticket=OrderSend(Symbol(),OP_BUY,lotMM,myPrice,slp,myStopLoss,myTakeProfit,ExpertName, MagicNumber,0,myColor); Print("ticket=",ticket); if(ticket<=0) { h++; slp = slp*2; } else break; } string MyTxt; MyTxt = " for " + DoubleToStr(myPrice,4); if(ticket<=0) { err=GetLastError(); Print("iK_TF: Error opening Open Buy order [" + ExpertName + "]: (" + err + ") " + ErrorDescription(err) + " /// " + MyTxt); return(0); } else { OrderSelect(0, SELECT_BY_POS, MODE_TRADES); price_buy = OrderOpenPrice(); } return(1); }
ikatsko:
Ниже привожу код советника, который формирует команду открытия ордера. В коде все цены нормализованы. А командой Print я вывожу информацию о том, в каком виде в конкретный момент времени была сформирована команда на открытие ордера. Вот пример реально сформированной команды: 2011.09.06 02:30:08: OrderSend(EURUSD,OP_BUY,4,1.40732,4,1.35732,1.41982,iK_TF: 3102 : EURUSD_PERIOD_M5,3102,0,32768)
По вопросу близости к рынку здесь видно, что TakeProfit = 1.41982-1.40732=1250 пунктов, a StopLoss = 1.40732-1.35732=5000пунктов. Нельзя сказать, что выставляемый ордер близок к рынку. Тем не менее получаю ошибку 130!!!
Ниже привожу код советника, который формирует команду открытия ордера. В коде все цены нормализованы. А командой Print я вывожу информацию о том, в каком виде в конкретный момент времени была сформирована команда на открытие ордера. Вот пример реально сформированной команды: 2011.09.06 02:30:08: OrderSend(EURUSD,OP_BUY,4,1.40732,4,1.35732,1.41982,iK_TF: 3102 : EURUSD_PERIOD_M5,3102,0,32768)
По вопросу близости к рынку здесь видно, что TakeProfit = 1.41982-1.40732=1250 пунктов, a StopLoss = 1.40732-1.35732=5000пунктов. Нельзя сказать, что выставляемый ордер близок к рынку. Тем не менее получаю ошибку 130!!!
P.S.: 2011.09.06 02:30:08 - время терминала.
а там можно стопы сразу ставить?
ikatsko:
Ниже привожу код советника, который формирует команду открытия ордера. В коде все цены нормализованы. А командой Print я вывожу информацию о том, в каком виде в конкретный момент времени была сформирована команда на открытие ордера. Вот пример реально сформированной команды: 2011.09.06 02:30:08: OrderSend(EURUSD,OP_BUY,4,1.40732,4,1.35732,1.41982,iK_TF: 3102 : EURUSD_PERIOD_M5,3102,0,32768)
По вопросу близости к рынку здесь видно, что TakeProfit = 1.41982-1.40732=1250 пунктов, a StopLoss = 1.40732-1.35732=5000пунктов. Нельзя сказать, что выставляемый ордер близок к рынку. Тем не менее получаю ошибку 130!!!
Ниже привожу код советника, который формирует команду открытия ордера. В коде все цены нормализованы. А командой Print я вывожу информацию о том, в каком виде в конкретный момент времени была сформирована команда на открытие ордера. Вот пример реально сформированной команды: 2011.09.06 02:30:08: OrderSend(EURUSD,OP_BUY,4,1.40732,4,1.35732,1.41982,iK_TF: 3102 : EURUSD_PERIOD_M5,3102,0,32768)
По вопросу близости к рынку здесь видно, что TakeProfit = 1.41982-1.40732=1250 пунктов, a StopLoss = 1.40732-1.35732=5000пунктов. Нельзя сказать, что выставляемый ордер близок к рынку. Тем не менее получаю ошибку 130!!!
P.S.: 2011.09.06 02:30:08 - время терминала.
Вероятнее всего у вас счет типа "Market Execution". На счетах этого типа запрещено ставить стопы в момент постановки ордера т.к. невозможно заранее знать где конкретно он будет поставлен. В этом случае ставьте ордер без стопов, а после успешной установки модифицируйте ему стопы в соответствии с вашими предпочтениями. На счетах типа "Instant Execution" стопы можно ставить одновременно с постановкой ордера. Спросите гугля по этому поводу. Он все знает... :)
ir0407:
Вероятнее всего у вас счет типа "Market Execution". На счетах этого типа запрещено ставить стопы в момент постановки ордера т.к. невозможно заранее знать где конкретно он будет поставлен. В этом случае ставьте ордер без стопов, а после успешной установки модифицируйте ему стопы в соответствии с вашими предпочтениями. На счетах типа "Instant Execution" стопы можно ставить одновременно с постановкой ордера. Спросите гугля по этому поводу. Он все знает... :)
Вероятнее всего у вас счет типа "Market Execution". На счетах этого типа запрещено ставить стопы в момент постановки ордера т.к. невозможно заранее знать где конкретно он будет поставлен. В этом случае ставьте ордер без стопов, а после успешной установки модифицируйте ему стопы в соответствии с вашими предпочтениями. На счетах типа "Instant Execution" стопы можно ставить одновременно с постановкой ордера. Спросите гугля по этому поводу. Он все знает... :)
Да, оказалось в этом причина. Спасибо. А как же с помощью MQL вытащить эту информацию? ("Market Execution"/"Instant Execution")
ikatsko:
Да, оказалось в этом причина. Спасибо. А как же с помощью MQL вытащить эту информацию? ("Market Execution"/"Instant Execution")
Да, оказалось в этом причина. Спасибо. А как же с помощью MQL вытащить эту информацию? ("Market Execution"/"Instant Execution")
Никак. :) Просто надо внимательно читать информацию по условиям счета, когда открываете новый счет. А в советнике лучше сделать открытие ордеров по "Market Execution". Такое открытие будет нормально работать и на счетах типа "Instant Execution".
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь