• Тинькофф Банк-лучшие банковские продукты еще выгоднее
    Выбирайте продукт от банка Тинькофф
  • Уважаемые форумчане, друзья и посетители!
    Поступило предложение ( ссылка на обсуждение ) на сбор средств поддержания форума в рабочем состоянии с 1 июня ( оплата хостинга, бэкап ежедневный на другой хостинг и тд), отчетность будет предоставляться ежемесячно. Пока на ЮMoney ( яндекс деньги), доступно картой перевод, далее добавлю другие способы. Сумму перевода указывайте на ваш выбор исходя из своих возможностей.
    Форум продолжает свою работу благодаря Вашим пожертвованиям.

Индикатор уровней (помогите написать)

sokrat

Guest
NinjaTrader
Добрый день! Речь пойдет о самописном индикаторе уровней, который берёт уровни с дневной свечи. Подскажите пожалуйста, возможно ли из МТ4 перенести такой индикатор в Нинзю Трейдер?
Те, кто готов написать/перенести индикатор уровней в нинзю Трейдер, стучите в скайп "suall546" . За вознаграждение соответственно.
Есть ли аналоги индикаторов уровней в Нинзя Трейдер?
Посмотреть бы типовую конструкцию кода типовых индикаторов уровней на Нинзя Трейдер. Насколько я понимаю, то конструкция кода должна быть типовая с тем отличием, что формула расчета и построения уровней будет отличаться.
 
а какой типовой индикатор в мт4 по построению уровней??? я думаю тут все что выдумаете то и можете ПЫТАТЬСЯ реализовать. Хотите посмотреть типовые индикаторы, то в нт7 или нт8 есть они, устанавливайте платформу, открывайте редактор скриптом и код перед вами.
Насчет помогите написать, я бы и сам не против чтобы помогли. Поэтому если начнешь, то думаю к тебе присоединятся.
 
Последнее редактирование:
Вот код индикатора уровней MQL4 . Индикатор очень простой: он на 5-минутных графиках строит горизонтальные уровни - линии. К цене открытия текущего дня прибавляется % от (High-Low) предыдущего дня. Помогите перевести этот код в Нинзю Трейдер.
Код:
#property copyright "Copyright 2015"
#property link "..."
#property version "1.00"
#property strict
#property indicator_chart_window

#property description "Индикатор диапазонов"
#property description "относительно предыдущего дня"

#property indicator_buffers 6 //сколько будет изображено линий
#property indicator_color1 clrLimeGreen
#property indicator_width1 2
#property indicator_color2 clrGreen
#property indicator_width2 2
#property indicator_color3 clrRed
#property indicator_width3 2
#property indicator_color4 clrMaroon
#property indicator_width4 2
#property indicator_color5 clrDarkViolet
#property indicator_width5 2
#property indicator_color6 clrBlue
#property indicator_width6 2

//параметры - после слешей - название индикатора для пользователей
input ENUM_TIMEFRAMES UpTime = PERIOD_D1;
input double Range1Percent = 20;
input double Range2Percent = 40;
input double Range3Percent = 60;

//буфферы
double bufUp1[];
double bufDown1[];
double bufUp2[];
double bufDown2[];
double bufUp3[];
double bufDown3[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
IndicatorShortName("dzRanges");
IndicatorBuffers(6);

//задаем привязку и стили
SetIndexBuffer(0, bufUp1);
SetIndexStyle(0, DRAW_LINE);
SetIndexShift(0, 0);
SetIndexDrawBegin(0, 0);

SetIndexBuffer(1, bufDown1);
SetIndexStyle(1, DRAW_LINE);
SetIndexShift(1, 0);
SetIndexDrawBegin(1, 0);

SetIndexBuffer(2, bufUp2);
SetIndexStyle(2, DRAW_LINE);
SetIndexShift(2, 0);
SetIndexDrawBegin(2, 0);

SetIndexBuffer(3, bufDown2);
SetIndexStyle(3, DRAW_LINE);
SetIndexShift(3, 0);
SetIndexDrawBegin(3, 0);

SetIndexBuffer(4, bufUp3);
SetIndexStyle(4, DRAW_LINE);
SetIndexShift(4, 0);
SetIndexDrawBegin(4, 0);

SetIndexBuffer(5, bufDown3);
SetIndexStyle(5, DRAW_LINE);
SetIndexShift(5, 0);
SetIndexDrawBegin(5, 0);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
int period = 1; //сюда заносим самый большой расчетный период

if(rates_total < period)
return(-1); //на графике нет достаточного количества баров

int limit = rates_total - prev_calculated;

//текущий бар всегда пересчитываем и предыдудщий
limit++;

//при первом расчете может выйти за 0, поэтому
while(limit < 0)
limit++;

//при первом расчете - отступаем слева, так как там не хватит свечей для расчета
limit = MathMin(limit, rates_total - period);

//сам рассчет
for(int i = limit; i >= 0; i--)
{
int shift = iBarShift(Symbol(), UpTime, Time);
double h = iHigh(Symbol(), UpTime, shift + 1);
double l = iLow(Symbol(), UpTime, shift + 1);
double o = iOpen(Symbol(), UpTime, shift);
bufUp1 = o + (h - l) * (1 + Range1Percent) / 100;
bufUp2 = o + (h - l) * (1 + Range2Percent) / 100;
bufUp3 = o + (h - l) * (1 + Range3Percent) / 100;
bufDown1 = o - (h - l) * (1 + Range1Percent) / 100;
bufDown2 = o - (h - l) * (1 + Range2Percent) / 100;
bufDown3 = o - (h - l) * (1 + Range3Percent) / 100;
}
//--- return value of prev_calculated for next call
return(rates_total);
}
 
Назад
Верх Низ