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

 
evillive:

У меня сейчас 4-знак, на евордолларе при 1 лоте 1 пункт стоит 10 долларов и всегда так было. Для кроссов  стоимость будет от 8 до 16, там формула сложнее немного.

Вот, например, маркетинфо для еврофунта вернул 16,984,  курс фунта к доллару = 1,6984, то есть 1 пункт еврофунта стоит 1 фунтдоллар умноженный на стоимость пункта фунтодоллара, которая равна всегда 10,0 (100000*0,0001=10,0 или 100000*0,00010=10,0 - кому как нравится).


Все эти вычисления верны только при условии что счёт ваш в долларах:

В таком случае, для хUSD (EURUSD, GBPUSD etc) tickvalue = lot*point = 100000*0.0001 = 10,0

для USDх (USDCHF, USDJPY etc) tickvalue = lot*point/Bid = 100000*0.01/101.93=9,8107

для кросс-курсов xUSD/yUSD (EURGBP) tickvalue = Bid(yUSD)*lot*point = 1.6980*100000*0.0001 = 16,98

для кроссов xUSD/USDy (EURJPY) tickvalue = lot*point/Bid(USDy) = 100000*0.01/101.91=9,8126


borilunad:

Это неправильно! Значность котировки не имеет значения! А стоимость мин.тика нужно вычислять от текущей цены! Что равно TICK_VALUE! Выше привёл пример из моего кода.
 
borilunad:

borilunad:

Это неправильно! Значность котировки не имеет значения! А стоимость мин.тика нужно вычислять от текущей цены! Что равно TICK_VALUE! Выше привёл пример из моего кода.

И чем же неправильно? Маркетинфо возвращает те же значения что получаются по приведённым мной выше формулам. Эти формулы не я придумал, они используются терминалом для вычисления TickValue )))

Понятно, что удобнее получать значение из маркетинфо, но человек спрашивал именно формулы или метод расчёта, так вот они выше.

А про значность я так и писал раньше, что не имеет значения, потому что на пятизнаке считается пункт = 10пипс, а это тот же пункт из 4-знака.

 
evillive:

И чем же неправильно? Маркетинфо возвращает те же значения что получаются по приведённым мной выше формулам. Эти формулы не я придумал, они используются терминалом для вычисления TickValue )))

Понятно, что удобнее получать значение из маркетинфо, но человек спрашивал именно формулы или метод расчёта, так вот они выше.

А про значность я так и писал раньше, что не имеет значения, потому что на пятизнаке считается пункт = 10пипс, а это тот же пункт из 4-знака.


Да я о том же, что MarketInfo(Symbol(),MODE_TICKVALUE) = 1.0/Bid; Может, только для евродоллара, на другие не распыляюсь!
 
borilunad:

Да я о том же, что MarketInfo(Symbol(),MODE_TICKVALUE) = 1.0/Bid; Может, только для евродоллара, на другие не распыляюсь!

Вот это-то как раз для евродоллара неправильно, исходя из данного в справке определения

MODE_TICKVALUE

16

Размер минимального изменения цены инструмента в валюте депозита


А это значит надо умножить

MODE_POINT

11

Размер пункта в валюте котировки. Для текущего инструмента хранится в предопределенной переменной Point


на

MODE_LOTSIZE

15

Размер контракта в базовой валюте инструмента


Ну конечно, если у вас счёт в евро, тогда плясать надо от евро, но для трейдеров, у кого счёт всё же в долларах (а таких большинство), приведённые выше формулы действительны. А так как главные и самые торгуемые пары на основе доллара США, то данные формулы чаще всего и используются.

 
evillive:

Вот это-то как раз неправильно, исходя из данного в справке определения

MODE_TICKVALUE

16

Размер минимального изменения цены инструмента в валюте депозита


А это значит надо умножить

MODE_POINT

11

Размер пункта в валюте котировки. Для текущего инструмента хранится в предопределенной переменной Point


на

MODE_LOTSIZE

15

Размер контракта в базовой валюте инструмента


Ну конечно, если у вас счёт в евро, тогда плясать надо от евро, но у большинства трейдеров счёт всё же в долларах.


Ну тогда, у меня частный случай, но для меня, живущего в еврозоне, удобнее все расчёты вести в евро! 
 

Господа, подскажите пример кода для следующиего индикатора. Никак не разберусь сколько буферов нужно, какой тип отображения и где и какие свойства им нужно прописать.

Индикатор такой: 

1 Отрезками соединяются минимум каждого третьего бара и соседнего. Линяя красная.

2 Отрезками соединяются максимумы каждого 5го бара и соседнего. Линяя синяя.

Главное: отрезки никак не пересекаются. Начало и конец каждого отрезка независим от остальных отрезков.

 

Индикатор рассчитывает значения  начала и конца каждого отрезка. В зависимости от условий они должны окрашивать в разные цвета.

Примерно как это должно выглядить


 

И еще вопрос.

Нормально ли, что не получается с индикатором работать в режиме Отладки.

Когда программа доходит до точки остановки, терминал МТ4 подвисает и окно становится белым (в вин ХР) так что не возможно увидеть что нарисовано на графике 

[Удален]  
Top2n:

Выкладываю готовый код. 

Задача: Поиск линий тренда (OBJ_TREND), запись значений цены относительно текущего бара в массив. С фильтрацией относительно существования параметров времени объекта (OBJ_TREND).

 simpleton: Спасибо вам большое, вы за пестовали меня на ощущения правильного кода!) (Правда я немногое понял))))

Если тренироваться, понимание будет приходить, всё больше и больше. Нужно сосредоточение и внимательность. Когда алгоритм программы размазан по одной большой функции, сосредоточенно и внимательно его реализовать затруднительно - слишком много образуется связей. Если же программа разбита на функционально законченные части (небольшие функции), то для каждой отдельной небольшой функции сделать это уже значительно проще. И так на каждом уровне функций. Кстати:

   if( DiffInSecs(dt,dt2)>MAX_SECS_AFTER_PRICE2 && DiffInSecs(dt2,dt1)> MIN_SECS_BETWEEN_PRICE1_AND_PRICE2){
    if (!AddValue(array, ObjectGetValueByShift(name, 1))) { // Пытаемся добавить
      return false; // Ошибка, значение не добавлено
    }
  }
Наверное, я неудачно назвал мнемонику MAX_SECS_AFTER_PRICE2 (потому что сначала я так понял, что условие должно быть обратным), по смыслу, наверное, должно быть MIN_SECS_AFTER_PRICE2, то есть, минимально допустимое, а не максимально.
 
dr0:

Господа, подскажите пример кода для следующиего индикатора. Никак не разберусь сколько буферов нужно, какой тип отображения и где и какие свойства им нужно прописать.

Индикатор такой: 

1 Отрезками соединяются минимум каждого третьего бара и соседнего. Линяя красная.

2 Отрезками соединяются максимумы каждого 5го бара и соседнего. Линяя синяя.

Главное: отрезки никак не пересекаются. Начало и конец каждого отрезка независим от остальных отрезков.

 

Индикатор рассчитывает значения  начала и конца каждого отрезка. В зависимости от условий они должны окрашивать в разные цвета.

Примерно как это должно выглядить


 

 


Достаточно 2 буфера! Прописывайте недвусмысленные условия для рисования линий, так же, где не должны рисоваться! Удачи!
 
dr0:

И еще вопрос.

Нормально ли, что не получается с индикатором работать в режиме Отладки.

Когда программа доходит до точки остановки, терминал МТ4 подвисает и окно становится белым (в вин ХР) так что не возможно увидеть что нарисовано на графике 


Отладкой ещё не пользовался, пока справляюсь без неё. Надо ясно представлять, что хочешь, как сделать, а потом писать! Ведь отладку тоже надо изучить! Изучайте по Документации, Статьям и по темам Форума! Копайте!