Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 356

 
Nauris Zukas:

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

Зачем что-то масштабировать? Просто использовать 2 буфера, в один помещать положительные значения, а в другой отрицательные. Если при расчёте получаются только положительные, то их можно умножить на -1. Но вот если при расчёте получаются и положительные и отрицательные значения, то моё предложение не подходит.

Тогда можно сделать гистограммы разной ширины. Сначала заполняется значением буфер который отображается широкой гистограммой, а потом тот который отображается тонкой гистограммой.

Тогда получается такая гистограмма. Здесь используются 4 буфера.


 
Alexey Viktorov:

Зачем что-то масштабировать? Просто использовать 2 буфера, в один помещать положительные значения, а в другой отрицательные. Если при расчёте получаются только положительные, то их можно умножить на -1. Но вот если при расчёте получаются и положительные и отрицательные значения, то моё предложение не подходит.

Тогда можно сделать гистограммы разной ширины. Сначала заполняется значением буфер который отображается широкой гистограммой, а потом тот который отображается тонкой гистограммой.

Тогда получается такая гистограмма. Здесь используются 4 буфера.


Спасибо, но не подойдёт такой вариант поскольку буфера с линиями будет например в рубежах от 1.19653 до 1.19674 а гистограмма будет с 0 до 250. Тики и спред в одном окне, поэтому и хотелось сделать вторую Y ось.

 
Nauris Zukas:

Спасибо, но не подойдёт такой вариант поскольку буфера с линиями будет например в рубежах от 1.19653 до 1.19674 а гистограмма будет с 0 до 250. Тики и спред в одном окне, поэтому и хотелось сделать вторую Y ось.

Согласен, не подойдёт. Но!!! Что даст масштабирование? Может значения гистограмм разделить на 100? Или умножить на 0.01...

 
Alexey Viktorov:

Согласен, не подойдёт. Но!!! Что даст масштабирование? Может значения гистограмм разделить на 100? Или умножить на 0.01...

Пока такой концепт: берём макс/мин. значение из линейных буферов и максимальный спред делаем под этих значений, остальные спреды масштабироваем под максимальный.

 
Artyom Trishkin:

Ну значит брокер не разрешает автоторговлю для вашего счёта, раз у вас всё включено, а советник не открывает позиции и не ставит ордера.

Что в журнале-то выводится при попытке советника отправить торговый запрос на сервер?

Ордера выставляются, но IsTradeAllowed() равно 0. Как так?

 
Andrei:

Имеется ввиду разрешить автоматическую торговлю? Это тоже включено...

Есть смысл звонить брокеру в службу поддержки

 
Andrei:

Ордера выставляются, но IsTradeAllowed() равно 0. Как так?


счет конкурсный?

проверять надо как минимум четыре параметра:

ACCOUNT_TRADE_EXPERT
ACCOUNT_TRADE_ALLOWED
TERMINAL_TRADE_ALLOWED
IsTradeAllowed(_Symbol,TimeCurrent())
 

Подскажите пожалуйста как написать код для сравнения Тика текущего и предыдущего для выбранного торгового инструмента?

Мне требуется сравнить: если  Тик (текущий) > тика (предыдущего), то переходим к выполнению подсчета таких тиков, и наоборот, если Тик (тек.) < Тика (предыдущего), то переходим к подсчету Тиков2. 

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

Подскажите, пжлста! Пишу свой первый тренировочный индикатор, а также первую программу в жизни :(

Правильно ли я составил? 

int Tick;

int Tick2;

int start()

    if((Bid - Bid[1]) > 0)

    {

    Tick++;                             

    return;     

     }

else

    {

    Tick2++;                             

    return;     

     }

 
YarTrade:

Подскажите пожалуйста как написать код для сравнения Тика текущего и предыдущего для выбранного торгового инструмента?

Мне требуется сравнить: если  Тик (текущий) > тика (предыдущего), то переходим к выполнению подсчета таких тиков, и наоборот, если Тик (тек.) < Тика (предыдущего), то переходим к подсчету Тиков2. 

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

Подскажите, пжлста! Пишу свой первый тренировочный индикатор, а также первую программу в жизни :(

Правильно ли я составил?

Попробуйте по каждому тику записывать в файл Дату, Время, Bid и результаты Ваших вычислений. Потом загрузите в Excel и проверьте. Вряд ли есть смысл согласовывать каждый десяток строк программы!

Но посмотрите, у Вас в каждой ветви условного оператора стоит return, т.е. он всегда выполняется. Тогда выносим его за пределы условного оператора. Получаем:

int Tick=0, Tick2=0;       // Для вставки программы используйте кнопку SRC
double Bid1;

void OnInit()
{
  Bid1=Bid;
}

void start()   // Вместо start более модно писать OnTick
{
    if(Bid > Bid1) Tick++;                             
    else           Tick2++;
    Bid1=Bid;                          
}

Bid[1] - так бывает?

 
STARIJ:
// Вместо start более модно писать OnTick

:) 

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