[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 606
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Суть я общую уловил. Вот, что вышло:
N - количество минут пройденное после открытия дневного бара. Пока что я не понял как его получить, так что написал чисто переменной. По идее верно всё.
sergeev:
А вот про связать запоминание удачной операции к времени попрошу уточнить. Я не совсем понял.
Вам ведь важно не время само по себе, а было ли что то сделано в течение определенного промежутка времени, вот это и проверяйте.
P.S. И N вам определять не надо, просто делаете вашу проверку if(TimeCurrent() >= iTime(Symbol(),1440,0) ) до тех пор, пока нужные вам действия не будут выполнены(установка ордера).
Флаг -- это переменная, обычно типа bool которая устанавливается в какое либо состояние в зависимости от истинности проверяемого условия.(здесь -- есть лли позиция с заданной ценой открытия).
понял, а что такое ИНДЕКС ПОЗИЦИИ ? это вроде не тикер, и не тип....
понял, а что такое ИНДЕКС ПОЗИЦИИ ? это вроде не тикер, и не тип....
Это индекс , определяющий положение ордера в массиве, в котором хранятся данные по ордерам, имеющимся в терминале.
То естьто, что подчеркнуто( при SELECT_BY_POS) bool OrderSelect(int index, int select, int pool=MODE_TRADES)
Это индекс , определяющий положение ордера в массиве, в котором хранятся данные по ордерам, имеющимся в терминале.
То естьто, что подчеркнуто( при SELECT_BY_POS) bool OrderSelect(int index, int select, int pool=MODE_TRADES)
а как это применить на практике, если нужно закодировать условие "если последние две сделки были лосями....." ??
а как это применить на практике, если нужно закодировать условие "если последние две сделки были лосями....." ??
На практике это применяется во всех совах, работающих с ордерами. сначала нужно выбрать ордер, а потом с ним можно что либо сделать(просмотреть информацию по ордеру, отправить торговый приказ на сервер о его модификации или закрытии) В терминале есть два способа выбора ордеров, по тикету, то есть номеру ,присвоенному ордеру на сервере, который для конкретного ордера неизменен, или по порядковому номеру (индексу) под которым ордер хранится в терминале. Этот номер может изменяться на каждом тике, в зависимости от того какие и сколько ордеров открываются, устанавливаются, закрываются или удаляются.
Для работы с ордерами организуются циклы перебора ордеров.
Вам ведь важно не время само по себе, а было ли что то сделано в течение определенного промежутка времени, вот это и проверяйте.
P.S. И N вам определять не надо, просто делаете вашу проверку if(TimeCurrent() >= iTime(Symbol(),1440,0) ) до тех пор, пока нужные вам действия не будут выполнены(установка ордера).
Но если поставить так:
Так будет действителен сигнал постоянно после открытия бара и ... до бесконечности. А зачем мне это? Главное, чтоб открылся один ордер на открытии бар, а не пачка.
Но если поставить так:
Так будет действителен сигнал постоянно после открытия бара и ... до бесконечности. А зачем мне это? Главное, чтоб открылся один ордер на открытии бар, а не пачка.
И ... до бесконечности -- это частный случай, если необходимое вам условие -- установка ордера -- не выполнится ни сегодня, ни завтра...
А чтобы не открывалась пачка, надо просто перед каждым откытием проверять либо наличие открытого ордера, либо было ли открытие вообще за нужный вам период.
На практике это применяется во всех совах, работающих с ордерами. сначала нужно выбрать ордер, а потом с ним можно что либо сделать(просмотреть информацию по ордеру, отправить торговый приказ на сервер о его модификации или закрытии) В терминале есть два способа выбора ордеров, по тикету, то есть номеру ,присвоенному ордеру на сервере, который для конкретного ордера неизменен, или по порядковому номеру (индексу) под которым ордер хранится в терминале. Этот номер может изменяться на каждом тике, в зависимости от того какие и сколько ордеров открываются, устанавливаются, закрываются или удаляются.
Для работы с ордерами организуются циклы перебора ордеров.
как начать такой цикл я знаю...
for(int i=0; i<total; i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
а вот что дальше? как подвести к тому чтобы некая переменная давала TRUE-когда 2 последних сделки лосевые, и FALSE когда - прибыльные ?
ИЛИ такой вариант.
при закрытии сделок по стопу - где-то должен включаться счетчик флажков.... но как уловить момент закрытия?
Это индекс , определяющий положение ордера в массиве, в котором хранятся данные по ордерам, имеющимся в терминале.
То естьто, что подчеркнуто( при SELECT_BY_POS) bool OrderSelect(int index, int select, int pool=MODE_TRADES)
я правильно понимаю, что последняя МНОЮ закрытая сделка будет иметь индекс 1. А после закрытия следующий, индекс 2...и так далее с каждой новой закрытой позицией? А как на счет суммации по дням? вчерашние учитываются? или все начинается заново каждый день?
как начать такой цикл я знаю...
for(int i=0; i<total; i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
а вот что дальше? как подвести к тому чтобы некая переменная давала TRUE-когда 2 последних сделки лосевые, и FALSE когда - прибыльные ?
ИЛИ такой вариант.
при закрытии сделок по стопу - где-то должен включаться счетчик флажков.... но как уловить момент закрытия?
Есть несколько вариантов решений таких задач. пожалуй, самый простой, перебираете в цикле все ордера, ищете, какой был закрыт последним, смотрите, по стопу или профиту закрылся ваш ордер, запоминаете его тикет, запускаете цикл по новой, если выбран ордер с запомненным вами тикетом, пропускаете его, находите одер закрытый предпоследним...
P.S. и не MODE_TRADES ,а MODE_HISTORY.