Чтобы привести какой-то код, нужно сначала определиться с тем, каким именно образом хочется рассчитывать SL и TP. То есть для начала метод нужно придумать и описать. Тогда и до кода можно дойти. Пока же Вы привели только код, который получает значение главной линии ADX.
Здравствуйте. Интересует вопрос: можно ли на нулевом баре гарантированно открывать ордера. Допустим если уже есть Бай, то при состоянии "индикатор ниже уровня" гарантированно откроется противоположный ордер. Если так можно сделать то почему в этом коде не получается ?
Здравствуйте. Интересует вопрос: можно ли на нулевом баре гарантированно открывать ордера. Допустим если уже есть Бай, то при состоянии "индикатор ниже уровня" гарантированно откроется противоположный ордер. Если так можно сделать то почему в этом коде не получается ?
Чтобы ответить на этот вопрос, нужно видеть весь код. А здесь лишь кусок кода. В нем по поводу вопроса все нормально. Разве что заметьте, что существует функция NewBar(), которая по содержанию должна срабатывать только один раз на бар. А это влечет за собой отсутствие сброса флага cluch_buy.
Чтобы ответить на этот вопрос, нужно видеть весь код. А здесь лишь кусок кода. В нем по поводу вопроса все нормально. Разве что заметьте, что существует функция NewBar(), которая по содержанию должна срабатывать только один раз на бар. А это влечет за собой отсутствие сброса флага cluch_buy.
Да проверка на баре не походит. Код исполняется внутри бара. Что с чем сравнивать для корректной работы приведенной части кода ?
Отправлено: 05.09.17 11:21. Заголовок: Здравствуйте. Как пр..
Здравствуйте. Как прописать в коде, чтобы закрытие, открытие ордера происходило не на новом(0) баре, а на первом ?
Например есть открытый ордер Бай, нарисовалась медвежья свеча и в момент, по факту закрытия этой(а не открытия новой) свечи, закрываем ордер. Время, не должно иметь значения. Закрытие текущего бара, не должно сопоставляться с открытием нового. Пусть, даже это не грамотно и убыточно, с точки зрения программирования, или торговли.
Здравствуйте. Как прописать в коде, чтобы закрытие, открытие ордера происходило не на новом(0) баре, а на первом ?
Например есть открытый ордер Бай, нарисовалась медвежья свеча и в момент, по факту закрытия этой(а не открытия новой) свечи, закрываем ордер. Время, не должно иметь значения. Закрытие текущего бара, не должно сопоставляться с открытием нового. Пусть, даже это не грамотно и убыточно, с точки зрения программирования, или торговли.
Если нужно, чтобы по окончании свечи закрывался ордер, открытый на ней, то так:
цитата:
// Выбрать ордер (по тикету или по индексу) ... // ~-------------- if (OrderOpenTime() >= iOpen(NULL, 0, 0)) return; // или continue, если все это в цикле
Отправлено: 27.09.18 20:10. Заголовок: Помогите с кодом
Доброго времени, Игорь!
Подобный вопрос наверное раз в сотый Вам задают...
Открывается ордер при выполнении условий... например
{ if (RSI12_2>50 && RSI12_1<50) { OrderSend(Symbol(),OP_SELL,1.0,Bid,3,Bid+SL*Point,0,"",1,0,CLR_NONE); } }
Это происходит на часовом таймфрейме.... Ордер, к примеру, через 10 минут закрывается по стопу, т.е. внутри часового бара. Сразу открывается новый, потому что условие для открытия ордера выполняется пока не закончится час. Снова закрывается с убытком и снова открывается новый...
Что добавить в код, чтобы открывался в течение бара (часа) только один ордер. Если он закроется с убытком, то новый бы не открывался? Может функция sleep? Подскажите пожалуйста.
Ордер, к примеру, через 10 минут закрывается по стопу, т.е. внутри часового бара. Сразу открывается новый, потому что условие для открытия ордера выполняется пока не закончится час. Снова закрывается с убытком и снова открывается новый...
Что добавить в код, чтобы открывался в течение бара (часа) только один ордер. Если он закроется с убытком, то новый бы не открывался?
Если планируется открывать только один ордер на свече, то перед открытием ордера нужно проверить, открывался ли ордер на этой свече. Для этого необходимо обратиться к истории счета и найти там ордер эксперта, открытый позднее заданного времени:
цитата:
bool IsOrderOpenedLaterThanSpecifiedTime(datetime dtTime) { for (int i = OrdersHistoryTotal() - 1; i >= 0; --i) { if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderOpenTime() >= dtTime) return true; }
return false; }
Использование:
цитата:
if (!IsOrderOpenedLaterThanSpecifiedTime(iTime(NULL, 0, 0))) { // Можно открывать ордер }
Все даты в формате GMT
2 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет