dreigzon

 
Уровень 7

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2151



РЕКОМЕНДУЮ



Индикатор Nadaraya-Watson Envelope

Здравствуйте, ищу помощи у поручителей и программистов.
Необходимо перевести индикатор Nadaraya-Watson Envelope[LuxAlgo] в MQL4 из Trading View. Ссылка на индикатор — ru.tradingview.com/script/Iko0E2kL-Nadaraya-Watson-Envelope-LuxAlgo/
ТЗ:
1. Те же самые функции и изменения параметров.
2. Отображение центральной МАЕ по каналу( по которой идет расчет канала)
3. Allert on\off на сигналы индикатора
4. (Необязательно, но приятно) Выведение информации о ширине канала( в пипсах, на последней свече) где-нибудь на графике

Видел подобную тему в архиве для MT5, но у меня работает как-то некорректно и хочется его для MT4.
  • 0
  • Просмотров: 3122
  • 24 июля 2023, 07:53
  • dreigzon
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
ПЕРЕВЕРТЫШ
23 июля 2023
25 июля 2023

Брокер для ваших роботов, 15 лет на рынке

Комментарии (13)

+
+1
простое тз рассмотрю
avatar

  35  AM2 Сообщений: 16423 - Андрей

  • 24 июля 2023, 18:00
+
0
Каждый день жду вашего ответа)
avatar

  7  dreigzon Автор Сообщений: 52

  • 21 августа 2023, 00:02
+
0
если опишите логику построения индикатора, тогда можно будет что то обсуждать.
а код из трейдинг вью это к шифровальщикам
avatar

  35  AM2 Сообщений: 16423 - Андрей

  • 21 августа 2023, 11:11
+
0
Насколько я понял из того, что видел и в коде, и на графике: Используется ЕМА, которая после этого с помощью умножителя( как там это описывается), разносится вверх и вниз равноудаленно. таким образом создается канал. Сигналы возникают при закрытии цены вне канала. Тоже самое можно сделать и в MT с ЕМА, но там сдвиг будет выставляться по указанным пипсам, а в этом случае формульно, что подходит сразу на все таймфреймы. Единсвенно, что я не смог углядеть в коде, как он сделал еще сглаживание канала с помощью еще одной средней — и в этом загвоздка, ведь именно сглаженный канал дает более успешные сигналы.
avatar

  7  dreigzon Автор Сообщений: 52

  • 21 августа 2023, 23:23
+
0
Здравствуйте, вот его код:

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © LuxAlgo
//@version=5
 
indicator("Nadaraya-Watson Envelope [LUX]",overlay=true,max_bars_back=1000,max_lines_count=500,max_labels_count=500)
length = input.float(500,'Window Size',maxval=500,minval=0)
h      = input.float(8.,'Bandwidth')
mult   = input.float(3.) 
src    = input.source(close,'Source')
 
up_col = input.color(#39ff14,'Colors',inline='col')
dn_col = input.color(#ff1100,'',inline='col')
//----
n = bar_index
var k = 2
var upper = array.new_line(0) 
var lower = array.new_line(0) 
 
lset(l,x1,y1,x2,y2,col)=>
    line.set_xy1(l,x1,y1)
    line.set_xy2(l,x2,y2)
    line.set_color(l,col)
    line.set_width(l,2)
 
if barstate.isfirst
    for i = 0 to length/k-1
        array.push(upper,line.new(na,na,na,na))
        array.push(lower,line.new(na,na,na,na))
//----
line up = na
line dn = na
//----
cross_up = 0.
cross_dn = 0.
if barstate.islast
    y = array.new_float(0)
 
    sum_e = 0.
    for i = 0 to length-1
        sum = 0.
        sumw = 0.
 
        for j = 0 to length-1
            w = math.exp(-(math.pow(i-j,2)/(h*h*2)))
            sum += src[j]*w
            sumw += w
 
        y2 = sum/sumw
        sum_e += math.abs(src[i] - y2)
        array.push(y,y2)
 
    mae = sum_e/length*mult
 
    for i = 1 to length-1
        y2 = array.get(y,i)
        y1 = array.get(y,i-1)
 
        up := array.get(upper,i/k)
        dn := array.get(lower,i/k)
 
        lset(up,n-i+1,y1 + mae,n-i,y2 + mae,up_col)
        lset(dn,n-i+1,y1 - mae,n-i,y2 - mae,dn_col)
 
        if src[i] > y1 + mae and src[i+1] < y1 + mae
            label.new(n-i,src[i],'▼',color=#00000000,style=label.style_label_down,textcolor=dn_col,textalign=text.align_center)
        if src[i] < y1 - mae and src[i+1] > y1 - mae
            label.new(n-i,src[i],'▲',color=#00000000,style=label.style_label_up,textcolor=up_col,textalign=text.align_center)
 
    cross_up := array.get(y,0) + mae
    cross_dn := array.get(y,0) - mae
 
alertcondition(ta.crossover(src,cross_up),'Down','Down')
alertcondition(ta.crossunder(src,cross_dn),'Up','Up')
avatar

  2  EADAN Сообщений: 5

  • 24 августа 2023, 17:27
+
0
Андрей, здравствуйте! нашел в открытом доступе сам этот индикатор, образующий канал с помощью описанного метода. Однако в нем не хватает сглаживания канала, о котором я говорил ранее. www.opentraders.ru/downloads/3660//
также я нашел часть кода Pine, который отвечает за это ( по-моему), не могли бы вы посмотреть своим опытным взглядом и попробовать объединить все это в один индикатор? EADAN внизу скинул весь код индикатора до последнего апдейта.
Вот часть кода, которая по-моему мнению отвечает за сглаживание канала :
float y2 = na
float y1 = na

nwe = array.new<float>(0)
if barstate.islast and repaint
    sae = 0.
    //Compute and set NWE point 
    for i = 0 to math.min(499,n - 1)
        sum = 0.
        sumw = 0.
        //Compute weighted mean 
        for j = 0 to math.min(499,n - 1)
            w = gauss(i - j, h)
            sum += src[j] * w
            sumw += w

        y2 := sum / sumw
        sae += math.abs(src[i] - y2)
        nwe.push(y2)
    
    sae := sae / math.min(499,n - 1) * mult
    for i = 0 to math.min(499,n - 1)
        if i%2
            line.new(n-i+1, y1 + sae, n-i, nwe.get(i) + sae, color = upCss)
            line.new(n-i+1, y1 - sae, n-i, nwe.get(i) - sae, color = dnCss)
        
        if src[i] > nwe.get(i) + sae and src[i+1] < nwe.get(i) + sae
            label.new(n-i, src[i], '▼', color = color(na), style = label.style_label_down, textcolor = dnCss, textalign = text.align_center)
        if src[i] < nwe.get(i) - sae and src[i+1] > nwe.get(i) - sae
            label.new(n-i, src[i], '▲', color = color(na), style = label.style_label_up, textcolor = upCss, textalign = text.align_center)
        
        y1 := nwe.get(i)
avatar

  7  dreigzon Автор Сообщений: 52

  • 27 августа 2023, 00:45
+
0
зачем вам заморачиваться с алго, пайн и надарайя, когда есть прекрасный индикатор ТМА:

avatar

  35  AM2 Сообщений: 16423 - Андрей

  • 27 августа 2023, 10:32
+
0

Может быть и незачем, но ТМА, который я тут видел не рисует канал и качество сигналов у надараи очень высокое. Поэтому и интересуюсь им
avatar

  7  dreigzon Автор Сообщений: 52

  • 27 августа 2023, 16:25
+
0
Может быть и незачем, но ТМА, который я тут видел не рисует канал и качество сигналов у надараи очень высокое. Поэтому и интересуюсь им


у них даже расчет линий очень похожий. я сегодня смотрел. могу даже скинуть образцы кода
avatar

  35  AM2 Сообщений: 16423 - Андрей

  • 27 августа 2023, 17:40
комментарий был удален 2023-08-31 15:22:52 dreigzon

комментарий был удален 2023-08-31 15:22:46 dreigzon

комментарий был удален 2023-10-04 15:14:50 dreigzon

+
0
для всех ищущих www.opentraders.ru/downloads/3673
avatar

  7  dreigzon Автор Сообщений: 52

  • 4 октября 2023, 15:15

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий