[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 29
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте...
Написал советника, но столкнулся с такой проблемой:
У меня есть противоположные ордера и например для BUY у меня стоп 150 пунктов и профит также 150, для SELL установлены те же уровни, но только перевёрнуты(т.е. то что для бай профит, то для селл стоп), т.е. фактически у меня всё должно закрываться одновременно, как селл с бай, так и бай с селл.....но тут фича в другом, спрэд!))) И от этих двух противоположных ордеров уже открываются остальные 8 (если конечно все восемь понадобятся, условия для них разные, они так же противоположные 4/4)
Как грамотно запрограммировать код, что бы закрывалось всё по достижению одной цены одновременно? Ибо в тестере, когда я тестирую, цена порой доходит до нужного уровня, например селл закрывается(не до ходя до установленного уровня, полагаю что это спрэд), а бай висит и по истечению небольшого времени падает и бай закрывается уже по стопу, таким образом мне не удаётся посмотреть правильный результат.
Я буду благодарен, если вы выразите свою мысль программно, т.е. код.
Что бы разобраться более детально даю часть когда, где открываются мои два противоположных(первых) ордера.
Всем привет.
Вопрос такой у кого может быть есть функция определяющая факт открытия нового бара(не важно на каком таймфрейме), а если точнее, то можно разных вариантов(принцепов) нахождения нового бара.
Всем привет.
Вопрос такой у кого может быть есть функция определяющая факт открытия нового бара(не важно на каком таймфрейме), а если точнее, то можно разных вариантов(принцепов) нахождения нового бара.
запомните время oldtime = Time[0] и запомненное время сравнивайте if( oldtime !=Time[0])Print("Ура новый бар!!!");
ЗЫ:прицепы находятся в ф-ции iTime()
:)
IgorM, проблема в том, что эта ф-ия на синтетическом графике, где iTime[0] может быть равно iTime[1], вот как бы обойтись без времени, чтоб советник на новом баре открывал только одну сделку?
если время баров 0 и 1 по некой непонятной причине для меня нельзя привести в соответствие - тип datetime хранит данные в секундах, измените хоть на 1сек время бара
тогда попробуйте запоминать все характеристики первого закрытого бара, т.е. OHLC, обьем и время открытия, если изменится хоть один параметр - значит новый бар
ЗЫ: ф-ция iBars() выдаст количество баров на текущем ТФ, и будет ограниченно настройками терминала, можно попробовать сравнивать количество баров с запомненным кол-вом баров, и в момент появления нового бара эти величины различны- но не всегда, у меня работало так, но наверно от номера билда МТ4 такой вариант может не пройти
а у Вас готового кусочка кода нету, случайно? а там сам не соображу как запомнить OHLC[1], и сравнить с OHLC[0]...
OHLC это общепринятое сокращение Open,High,Low,Close
сравните не с нулевым, а первый с запомненным ранее, т.е.
init(){
oldHigh = High[1];
///
}
start(){
double tmp = High[1];
if(tmp !=oldHigh) {oldHigh = tmp;
//проверяем остальные параметры бара
}
}
Спасибо за подсказку буду разбираться...
Подскажите как в условии открытия позиции правильно задать проверку на то - существует ли открытая поза по данному инструменту или нет. И если поза по инструменту есть(любая селл или бай), то открытие не происходит в противном случае сигнал на открытие отрабатывается?
Вот код (как я думаю, отвечающий за открытие поз):
Вроде по логике правильно, но не работает все равно открывает по несколько поз по одному инструменту.
P.S. Я не программист. Если можно поподробнее объясните чайнику.