Вы не подскажите, как можно реализовать такой поиск свечей
Когда последняя закрытая свеча >= size, мне нужно перебором найти вторую и третью свечу >= size, а все которые меньше пропускать. В итоге получить номер третьей свечи.
/// Nth-ная свеча где high-low больше size, по умолчанию начиная с 0 и на глубину depth (по умолчанию - сколько есть баров)int PrevCandleGreaterThen(string symbol,ENUM_TIMEFRAMES tf,int size,int nth=1, int from=0 , int depth=-1)
{
if (symbol==NULL || symbol=="") symbol=_Symbol; // по умолчанию - текущий символif (tf==PERIOD_CURRENT) tf=_Period; // так просто чуть быстрееint limit=iBars(symbol,period,tf); // сколько всего есть баровif (depth<0) depth=limit-from; // ограничиваем глубину поискаdouble point = SymbolInfoDouble(symbol,SYMBOL_POINT) // размер пунктаint found=0; // сколько свечей подсчиталиfor(int shift=0;shift<depth && from+shift<limit; shift++) {
// перебираем бары, считаем только те у которых high-low >=pointsdouble high = iHigh(symbol,tf,from+shift);
double low = iLow(symbol,tf,from+shift);
// тут надо проверит корректность, но пропустим// длина свечиlong points = (long)MathRound((high - low)/point);
if (points>=size) {
// свечка подходящего размера// считаем такие
found++;
// если начитали сколько надо - результат достигнутif (found == nth) {
// отдаём её индекс от 0 return from+shift
}
}
}
// пробежали весь depth, нифига не нашли// отдаём например -1, сигнализируя неудачуreturn -1;
}
PS/ 5 лет web-деятели не могут прикрутить не то чтобы подсветку синтаксиса в стиль "код" , а просто корректные monospace и pre;
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Спасибо, работает...но не корректно
Вы не подскажите, как можно реализовать такой поиск свечей
Когда последняя закрытая свеча >= size, мне нужно перебором найти вторую и третью свечу >= size, а все которые меньше пропускать. В итоге получить номер третьей свечи.
PS/ 5 лет web-деятели не могут прикрутить не то чтобы подсветку синтаксиса в стиль "код" , а просто корректные monospace и pre;
Помогите, пожалуйста!
сразу закрывает сделку и открывает новую в том же направлении, а не выжидает 3 бара
в глобальных переменных объявлено:
int bars = iBarShift( Symbol(), PERIOD_M1, OrderOpenTime() );
//------------------------
if(условия)
{
if (OrdersTotal()<1)
{
ticket = OrderSend(Symbol(),OP_BUY, Lot, Ask, slippage, 0, 0,NULL, Magic,0, Red);
if (ticket>0)
{
SL = NormalizeDouble(Ask - stoploss*Point, Digits);
TP = NormalizeDouble(Bid + takeprofit*Point, Digits);
if (OrderSelect(ticket,SELECT_BY_TICKET))
if(OrderModify(ticket, OrderOpenPrice(),SL, TP,0))
Print ("Ошибка модификации ордера");
}
}
if ( iTime( Symbol(), PERIOD_M1, bars ) > OrderOpenTime() ) { bars ++; }
if ( bars >3)
{
ticket = OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
}
PS/ 5 лет web-деятели не могут прикрутить не то чтобы подсветку синтаксиса в стиль "код" , а просто корректные monospace и pre;
Помогите, пожалуйста!
Скажите пожалуйста, а вот у меня вверху кода глобальная переменная правильно прописана?
А то мне в тестере выдает: 2023.10.22 20:05:36.628 2023.07.18 17:16:54 AANDS18 EURUSD,M1: unknown ticket 494 for OrderClose function
Если просто как Вы написали оставить
int bars;Ошибка пропадает но сделка через три бара не закрывается
Если просто как Вы написали оставить
Ошибка пропадает но сделка через три бара не закрывается
Я не все поправил, так надо
и int bars; должен стоять в глобальных переменных
Я не все поправил, так надо
и int bars; должен стоять в глобальных переменных
int bars; правильно? в самом верху?
int bars; правильно? в самом верху?