
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так ли я описал временные функции, а то на тесте дальше последней строчки не двигается?
int TimeSignal = 0;
int TimeWaiting = TimeSignal + 3 * PeriodSeconds();
Если сигнал появился, то: TimeSignal = TimeSeconds(TimeLocal());
и ищем второй сигнал: TimeSeconds(TimeLocal()) >= (TimeSignal + 3 * PeriodSeconds())
Помогите с могофикацией.
Есть 2 ветки. Бычья и медвежья.
Нужно после открытия ордера по рынку установить стоп и профит.
Знаю что ордер селект использавать надо. Но что конкретно не знаю.
Так ли я описал временные функции, а то на тесте дальше последней строчки не двигается?
int TimeSignal = 0;
int TimeWaiting = TimeSignal + 3 * PeriodSeconds();
Если сигнал появился, то: TimeSignal = TimeSeconds(TimeLocal());
и ищем второй сигнал: TimeSeconds(TimeLocal()) >= (TimeSignal + 3 * PeriodSeconds())
Зачем TimeSeconds() применяете? Кроме того в этой функции разве можно сравнение писать? Может if(TimeLocal()) >= TimeWaiting )?
И чтобы позанудствовать, тип данных datetime надо применять для работы с временем вместо int, он тоже целочисленный, но всё же.
Можно и так примерно написать:
Помогите с могофикацией.
Есть 2 ветки. Бычья и медвежья.
Нужно после открытия ордера по рынку установить стоп и профит.
Знаю что ордер селект использавать надо. Но что конкретно не знаю.
В цикле перебрать все ордера, сначала OrderSelect() а потом если СЛ и-или ТП нулевые, то OrderModify(). Вот тут обсуждалось, может ещё где-то на форуме.
Помогите с могофикацией.
Есть 2 ветки. Бычья и медвежья.
Нужно после открытия ордера по рынку установить стоп и профит.
Знаю что ордер селект использавать надо. Но что конкретно не знаю.
Вообще-то "после открытия ордера" означает, что функция OrderSend только что вернула Вам номер тикета вновь открытой сделки.
Если Вы в OrderSend указали ненулевые SL и TP, то можно сделать селект по номеру тикета и проверить, вдруг SL и TP уже установлены как надо. В этом случае вызов OrderModify с такими же значениями даст ошибку, что неприятно.
Если в OrderSend были заданы нули, проверять незачем. Сразу OrderModify с полученным номером тикета.
В цикле перебрать все ордера, сначала OrderSelect() а потом если СЛ и-или ТП нулевые, то OrderModify(). Вот тут обсуждалось, может ещё где-то на форуме.
ТО что нужно.
А вот теперь реальная задача.
Сейчас вхожу в рынок по Аску и тейк отщитываю от 1 свечи
Вот Пример
normalizaTP = NormalizeDouble(Low[1] +(((int)zero_BE)*TP_Multiplayer_Buy)*_Point,5);/*PriceOpen_Buy Профит фактор 1/ к 3**/
normalizeSL = NormalizeDouble(Low[1] -((((int)zero_BE)*SL_Multiplayer_Buy)/2)*_Point,5);
RefreshRates();
ticketBuy = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,normalizeSL,normalizaTP,"",Magic,0,clrGreen);
Значения для расчета у меня даны все раз в цикл так как уже при следующем перещете
zero_BE и TP_Multiplayer_Buy и SL_Multiplayer_Buy уже получают другое значение.
Вывод
Если сразу в коде после открытия ордера вставить функцию По OrderModify то не факт что сработает так как отдача от сервера может повлиять и советник получит ещо не открытую позициу.
Выход1. Поставить Паузу - если такая функция есть.Между оформлением позы и модификацией
Выход 2. Записать normalizaTP и normalizeSL в Глобальные переменные и уже после перещета оперируя с ними устанавливать стоп и тейк от OrderOpenPrice. Что в сути намного лучше и чище нежели от Свечи 1
Как лучше посоветуйте
ТО что нужно.
Не пойму, зачем перебирать все ордера, если номер тикета нужного ордера уже известен. Объясните?Согласен можно и по тикету
Зачем TimeSeconds() применяете? Кроме того в этой функции разве можно сравнение писать? Может if(TimeLocal()) >= TimeWaiting )?
И чтобы позанудствовать, тип данных datetime надо применять для работы с временем вместо int, он тоже целочисленный, но всё же.
Можно и так примерно написать: