Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 49

 
Chiripaha:

Столкнулся с такой интересной проблемой:

Пишу тривиальное условие:

,,,

Если ваши А и Б цены, то правильное условие может выглядеть так

if( А + 0.5 * Point < Б )
{
  // Выполнить действия
}
 
Aizec:

А можно небольшой пример кода?

https://www.mql5.com/ru/code/10831
 


TarasBY:

Roger:
Перед сравнением дробных чисел их необходимо нормализовать.
Mislaid:

Если ваши А и Б цены, то правильное условие может выглядеть так

Спасибо большое за помощь!

Я все время нормализую данные, и поэтому у меня подобное явление и вызвало удивление. Но, видимо, не все учитывается в процессе написания и по опыту, поэтому совет "нормализовать непосредственно перед сравнением сравниваемых параметров" очень эффективный. Все заработало стабильно.

 

Всем добрый вечер.

Подскажите пожалуйста почему не открывается ордер?

int last;

int start()

(

if (Hour( ) == 12) // если на ТФ 60 образовалась 12 часовая свеча
last = iBarShift (Symbol (),0,iTime( NULL, 0, 0) ); // запомнить N этой свечи
if (last == 10) // и когда эта свеча будет N10

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+300*Point,"jfh",123 ); //открыть ордер

)

return(0);

Я так думаю,iBarShift не работает потому что параметр iTime( NULL, 0, 0) ) возвращает время в секундах,а нужно в формате D'04.04.2000 19:05 '

ВОПРОС 1. Какая функция возвращает время открытия свечи в формате D'04.04.2000 19:05 '

Я проверял - с этим форматом функция iBarShift работает и ордер открывается. Но работает только если отсутствует первое условие if (Hour( ) == 12)

ВОПРОС 2 Почему iBarShift не работает после исполнения условия if (Hour( ) == 12)

СПАСИБО.

 
solnce600:

Всем добрый вечер.

Подскажите пожалуйста почему не открывается ордер?

int last;

int start()

(

if (Hour( ) == 12) // если на ТФ 60 образовалась 12 часовая свеча
last = iBarShift (Symbol (),0,iTime( NULL, 0, 0) ); // запомнить N этой свечи
if (last == 10) // и когда эта свеча будет N10

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+300*Point,"jfh",123 ); //открыть ордер

)

return(0);

Я так думаю,iBarShift не работает потому что параметр iTime( NULL, 0, 0) ) возвращает время в секундах,а нужно в формате D'04.04.2000 19:05 '

ВОПРОС 1. Какая функция возвращает время открытия свечи в формате D'04.04.2000 19:05 '

Я проверял - с этим форматом функция iBarShift работает и ордер открывается. Но работает только если отсутствует первое условие if (Hour( ) == 12)

ВОПРОС 2 Почему iBarShift не работает после исполнения условия if (Hour( ) == 12)

СПАСИБО.


т.е вы (если я вас правильно понял) открываете позицию на 22 баре часового фрейма

int start()
  {

if(iBarOfDayCalc(60)==22)
     int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+300*Point,"jfh",123 ); //открыть ордер

 return(0);
  }

//  фуннкцыя------------------------
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 26.02.2008                                                     |
//|  Описание : Возвращает расчётный номер бара от начала суток.               |
//|           : Нумерация баров начинается с 1 (единица).                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    tf - таймфрейм                       (0 - текущий таймфрейм)            |
//|    dt - дата и время открытия бара      (0 - текущее время)                |
//+----------------------------------------------------------------------------+
int iBarOfDayCalc(int tf=0, datetime dt=0) {
  if (tf<=0) tf=Period();
  if (dt<=0) dt=TimeCurrent();
  if (tf>PERIOD_D1) {
    Print("iBarOfDayCalc(): Таймфрейм должен быть меньше или равен D1");
    return(0);
  }
  double ms=MathMod(dt/60, 1440);      // количество минут от начала суток
  int    bd=MathFloor(ms/tf)+1;        // номер бара от начала суток

  return(bd);
}
 
r772ra:


т.е вы (если я вас правильно понял) открываете позицию на 22 баре часового фрейма

В приведенном мною примере - именно так.т.е. на 22 свече.

Но в целом - мне хотелось бы запоминать любую(с нужными мне параметрами) свечу

и после того как она (запомненная)свеча удалится на нужное мне расстояние(т.е. будет - 5,6....100)

открывать ордер.

Поэтому,если я не ошибаюсь,вышеприведенная функция Кима мне наверное не подойдет,

поскольку она ведет отсчет свечей от начала дня и оперирует только с 24 свечами.

Мне,как мне кажется,нужна функция iBarShift которая может запомнить любую свечу.

(например каждую пятидесятую или сотую свечу начиная от любой нужной мне свечи)

Но эта функция у меня почему то не работает(детали я изложил в первом посте)

Буду Вам признателен если поможете мне найти ответы на поставленные вопросы.

Спасибо большое за участие.

 

Добрый день, подскажите, как правильно сделать, чтобы после открытия именно этой позиции код советника начинал работать с начала, когда делаю

if (ticketbuy>0)
{
return;
}

он больше ордеров не открывает по другим условиям, а у меня их несколько должно открываться. Спасибо.

 
Vinin:

Если индикаторных буферов хватит, то можно и без объектов


а как? ведь если определили, что индикатор оконный, как вывести стрелки на чарт? буферов использую только 4

 

Добрый день. извините что вмешиваюсь в текущие беседы.. может у кого найдется минутка.. у меня тут индикатор рисует стрелашке вверх в низ мне надо советника по нему сделать я можно сказать только только начал постигать мкуэль и с индикаторами дела не имел

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Red

//---- input parameters

extern int NumBars=500;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double spread;

может есть шаблончек у кого

 

Подскажите если кто знает. Советник Gepard 5.0 на Forex4you открывает некоторые сделки уже с большим минусом. Где можно подрегулировать настройки?

Причина обращения: