if(Bid == btp-OrderOpenPrice()/2+OrderOpenPrice()){ // need to double check this.double minLot = MarketInfo(Symbol(), MODE_MINLOT),
lotStep = MarketInfo(Symbol(), MODE_LOTSTEP),
Lots = OrderLots(),
half_close = MathFloor(Lots/2/lotStep)*lotStep;
for(int q=OrdersTotal()-1; q >=0; q--)
{
if(OrderSelect(q,SELECT_BY_POS,MODE_TRADES)==true){
Print(" Stop loss value for the order is ", OrderStopLoss());
Print("lots for the order ",OrderLots());
}
elseif(OrderSelect(q,SELECT_BY_POS,MODE_TRADES)==false){
Print(" OrderSelect failed error code is ",GetLastError());
}
if(OrderMagicNumber()==MagicNumber)
if(OrderSymbol()==Symbol())
if(OrderType()==OP_BUYSTOP)
if (half_close > minLot)
CloseHalfLong = OrderClose(OrderTicket(),half_close,Bid,3,CLR_NONE);
if(CloseHalfLong!=TRUE)Print("LastError = ", GetLastError());
}
}
Не мог бы кто-нибудь подсказать мне, где я ошибаюсь? Только сейчас начал разбираться с этим. Кроме строки, где я написал примечание, не мог бы кто-нибудь указать мне правильное направление?
Я начинаю немного расстраиваться... Я продолжаю получать "OrderModify error 1" - но я рассмотрю это позже. Кроме этого, ничего!
if(OrderSelect(NewOrder,SELECT_BY_TICKET,MODE_TRADES)==true){
Print(" Stop loss value for the order is ", OrderStopLoss());
Print("lots for the order ",OrderLots());
}
elseif(OrderSelect(NewOrder,SELECT_BY_TICKET,MODE_TRADES)==false){
Print(" OrderSelect failed error code is ",GetLastError());
}
double minLot = MarketInfo(Symbol(), MODE_MINLOT),
lotStep = MarketInfo(Symbol(), MODE_LOTSTEP),
sizeCurr = OrderLots(),
sizeClose = MathFloor(sizeCurr/lotStep)*lotStep/2,
sizeRem = sizeCurr - sizeClose;
//if (sizeClose < minLot) return(false);//if (sizeRem < minLot){ sizeClose = sizeCurr;if(OrderTakeProfit()-OrderOpenPrice()/2+OrderOpenPrice() == Bid) // Does this make sense? I am wanting this "if" statement to be true, if price (bid) reaches the price in this comparison statement?
if(OpenOrdersThisPair(Symbol())==1)
CloseHalfLong = OrderClose(OrderTicket(),sizeClose,Bid,3,CLR_NONE);
if(CloseHalfLong!=TRUE)Print("Last Error = ", GetLastError());
}
У меня сложилось впечатление, что MathFloor просто округляет ответ до целого числа? Поэтому я не уверен, что MathFloor верен? Брокеры, которыми я пользуюсь, используют 0.01 в качестве шага лота... (IBFX, чтобы начать с форвард-тестирования - так что нано размер)
Я начинаю немного расстраиваться... Я продолжаю получать "OrderModify error 1" - но я рассмотрю это позже. Кроме этого, ничего! У меня сложилось впечатление, что MathFloor просто округляет ответ до целого числа? Поэтому я не уверен, правильно ли работает MathFloor? Брокеры, которыми я пользуюсь, используют 0.01 в качестве шага лота... (IBFX, чтобы начать с форвардного тестирования - так что нано размер)
Я дал вам код, который будет работать, почему вы не используете его? Почему вы не распечатываете свои переменные, чтобы увидеть, что происходит? У вас нет OrderModify() в коде, который вы разместили, как это связано? Как я уже сказал... почему вы вызываете торговые функции, которые полагаются на OrderSelect(), если OrderSelect() потерпел неудачу?
Прекратите кодировать, посмотрите на свой код, прочитайте его построчно, поймите, что он на самом деле делает, и если это не то, что вы задумали, то у вас есть проблема, которую нужно исправить.
Округляет ли MathFloor десятичные знаки до ближайшего целого числа?
Имеет ли смысл использовать FirstTarget в качестве пользовательского параметра в "OrderClose()" - Если предположить, что "sizeClose" был правильным? (см. процитированный код)
Ваш код не помог - извините.
Можете ли вы вывести пользовательские переменные? Если да, то я, должно быть, делаю это неправильно, поскольку они не отображаются в журнале.
Мне нужно почитать о MathFloor и вашей ссылке - это все новое для меня и я пытаюсь понять это. Займусь этим завтра.
Спасибо, ребята!
Есть идеи?
Я что-то упустил?
Упс - да, разобрался, лол. Но это ничего не изменило?
Я что-то упустил?
Почему вы делаете следующее, даже если ваш OrderSelect() потерпел неудачу?
Вы не закрываете отложенный ордер, что вам сообщило ваше сообщение об ошибке?
Я полагаю, что вы пытаетесь выбрать одну и ту же сделку дважды.
Разве это не должно быть просто "else"?
Вы можете получить противоречивые сообщения, если при первой попытке выбрать сделку она не удалась, а при второй - удалась.
Я начинаю немного расстраиваться... Я продолжаю получать "OrderModify error 1" - но я рассмотрю это позже. Кроме этого, ничего! У меня сложилось впечатление, что MathFloor просто округляет ответ до целого числа? Поэтому я не уверен, что MathFloor верен? Брокеры, которыми я пользуюсь, используют 0.01 в качестве шага лота... (IBFX, чтобы начать с форвард-тестирования - так что нано размер)
Я не получаю никаких ошибок...
Я начинаю немного расстраиваться... Я продолжаю получать "OrderModify error 1" - но я рассмотрю это позже. Кроме этого, ничего! У меня сложилось впечатление, что MathFloor просто округляет ответ до целого числа? Поэтому я не уверен, правильно ли работает MathFloor? Брокеры, которыми я пользуюсь, используют 0.01 в качестве шага лота... (IBFX, чтобы начать с форвардного тестирования - так что нано размер)
Я дал вам код, который будет работать, почему вы не используете его? Почему вы не распечатываете свои переменные, чтобы увидеть, что происходит? У вас нет OrderModify() в коде, который вы разместили, как это связано? Как я уже сказал... почему вы вызываете торговые функции, которые полагаются на OrderSelect(), если OrderSelect() потерпел неудачу?
Прекратите кодировать, посмотрите на свой код, прочитайте его построчно, поймите, что он на самом деле делает, и если это не то, что вы задумали, то у вас есть проблема, которую нужно исправить.
Округляет ли MathFloor десятичные знаки до ближайшего целого числа?
Имеет ли смысл использовать FirstTarget в качестве пользовательского параметра в "OrderClose()" - Если предположить, что "sizeClose" был правильным? (см. процитированный код)
Ваш код не помог - извините.
Можете ли вы вывести пользовательские переменные? Если да, то я, должно быть, делаю это неправильно, поскольку они не отображаются в журнале.
OrderModify не имеет значения, вы правы.