Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Это печатается в журнале во время моего цикла for, где в случае отложенного ордера Buy Stop, если 60 EMA >, чем OrderStopLoss, он закроет отложенный ордер, откроет новый с новым SL (который находится за 60EMA), настроит тейк-профит для получения вознаграждения 1:2, и изменит лоты относительно стопа в пунктах и моего профиля риска (скажем, 2%).
Итак, когда все это делается, пользовательская переменная "Current Lots", которая является "LotSize" в OrderSend работает, она отправляет размер лота, который не является правильным для сервера, чтобы получить "0.18215"? Может ли это быть проблемой, несмотря на то, что ордера все равно отправляются - этот вопрос больше связан с "может ли это быть причиной того, что я не могу вызвать "OrderType==OP_BUY"?
Вы должны исправить это, проверить размер лота тем же способом, который у вас уже есть ... вы даже можете написать отдельную функцию, чтобы сделать это на основе кода, который у вас уже есть ... например:
Вместо использования LotSize в OrderSend() вы бы использовали ValidateLots(LotSize)
Я сомневаюсь, что это вызывает вашу проблему. ...
Ужас! Так обидно lol - застрял на этом слишком долго :(
Я не могу понять, почему это проблема, и я не могу выбрать "OP_BUY"... Я знаю, что я, вероятно, исчерпал эту тему, но любые последние удары в темноте были бы очень признательны - спасибо за помощь!!!
Хмм - да, я только что поиграл с этим. Похоже, что заказ просто отправляется, поскольку сервер в любом случае допускает только 0.00 (2 знака после запятой). Так что остальные цифры почти не имеют значения.
Ужас! Так обидно lol - застрял на этом слишком долго :(
Я не могу понять, почему это проблема, и я не могу выбрать "OP_BUY"... Я знаю, что я, вероятно, исчерпал эту тему, но любые последние удары в темноте были бы очень признательны - спасибо за помощь!!!
Я думаю, вам нужно показать весь ваш код. . .
Я вижу здесь некоторые проблемы:
-http://pastebin.com/eaY1wKbN
Извините за синтаксис - немного труднее увидеть все, но у них нет MQL4? Так что поместите его под C++
Весь код не помещается здесь? Но я разместил его на pastebin?
-http://pastebin.com/eaY1wKbN
Извините за синтаксис - немного труднее увидеть все, но у них нет MQL4? Так что поместите его под C++
Нет проблем...
Когда вы это делаете...
...какой ордер уже выбран? Это был отложенный ордер? Ваш OrderSelect() потерпит неудачу, если ваш OrderTicket() потерпит неудачу, если у вас уже нет выбранного ордера. Действительно ли вам вообще нужен этот код? Позже у вас есть цикл, в котором вы выбираете ордера и проверяете их символ, магический номер и тип...
Это тоже нужно исправить...
... добавить несколько скобок. . .
Хорошо - я сделал больше отпечатков, чтобы получить немного ясности о том, что делается и в какой момент. Я вставил их ниже.
Строка, где говорится "Выбор ордера для закрытия:-...", это то, что выбирается в точке "Close OP_BUY Half Lots @ 1:1 Function", о которой вы спрашивали выше. Получается, что номер тикета в этой точке выбора другой? Я удалил часть "...&& OrderType()==OP_BUY" из него, так как он, кажется, печатает остальное, когда эта часть не находится в операторе "if"... Дает ли это немного больше ясности?
"First Buy Order Placed:-" - это первая функция OrderSend, проходящая в самом начале.
"Checking Buy Order:-" - это функция внутри цикла for для удаления и повторного открытия отложенного ордера, если MA > OrderStopLoss().
"NEW BUY ORDER:-" - это новый ордер, размещаемый внутри цикла for.
"Order Select for closing:-..." - как уже упоминалось выше, это часть, которая выбирается для закрытия половины лотов.
Извините, если это было непонятно, поскольку я только что добавил эти части - вы не увидите этого в той ссылке на pastebin выше... просто простые функции печати :)
Хорошо - я сделал больше отпечатков, чтобы получить немного ясности о том, что делается и в какой момент. Я вставил их ниже.
Строка, где говорится "Выбор ордера для закрытия:-...", это то, что выбирается в точке "Close OP_BUY Half Lots @ 1:1 Function", о которой вы спрашивали выше. Получается, что номер тикета в этой точке выбора другой? Я удалил часть "...&& OrderType()==OP_BUY" из него, так как он, кажется, печатает остальное, когда эта часть не находится в операторе "if"... Дает ли это немного больше ясности?
"First Buy Order Placed:-" - это первая функция OrderSend, проходящая в самом начале.
"Checking Buy Order:-" - это функция внутри цикла for для удаления и повторного открытия отложенного ордера, если MA > OrderStopLoss().
"NEW BUY ORDER:-" - это новый ордер, размещаемый внутри цикла for.
"Order Select for closing:-..." - как уже упоминалось выше, это часть, которая выбирается для закрытия половины лотов.
Извините, если это было непонятно, поскольку я только что добавил эти части - вы не увидите этого в той ссылке на pastebin выше... просто простые функции печати :)
Попробуйте прикрепить... это мое лучшее предположение о том, что вы пытаетесь сделать...
Потрясающе - спасибо. Это большой шаг в правильном направлении. Я думаю, потому что это внутри цикла for, он хочет закрыть половину и половину и половину @ цены... вместо того, чтобы сделать это один раз? Не только это, но кажется, что он не закрывает половину, как только цена >= до нужной мне цены выхода, вместо этого он выходит за ее пределы, а затем, когда цена качается обратно ниже до нужной мне цены выхода, он закрывается тогда - странно... Ценю ваше терпение в помощи мне! Очень благодарен за ваше время!!!
UPDATE: Также, я только что выяснил, что если я изменю свойства эксперта (extern int) перед запуском тестера стратегий, то закрытие половины вообще не работает - вещи, которые влияют на закрытие половины это "MA_PadAmount" это сколько пунктов я хочу добавить в качестве прокладки к стоп лоссу, который отслеживается в пунктах, и "OrderPrice_PadAmount", который позволяет мне указать сколько пунктов я могу добавить в качестве прокладки к цене входа ордеров....
Потрясающе - спасибо. Это большой шаг в правильном направлении. Я думаю, потому что это внутри цикла for, он хочет закрыть половину и половину и половину @ цены... вместо того, чтобы сделать это один раз? Не только это, но кажется, что он не закрывает половину, как только цена >= до нужной мне цены выхода, вместо этого он выходит за ее пределы, а затем, когда цена качается обратно ниже до нужной мне цены выхода, он закрывается тогда - странно... Ценю ваше терпение в помощи мне! Очень благодарен за ваше время!!!
Не совсем уверен, как это написать, но примерно так?