Скользящая средняя - страница 105

 
person77:
Фантастика - работает очень хорошо mladen! Большое спасибо.

Пара просьб, если вас не затруднит:

1. Когда все 4 МА синхронизированы, цена отступает и касается указанной МА.

(в данном случае второй самой короткой МА, красной 15 EMA), я хотел бы получить стрелку и предупреждение.

Затем я перехожу на меньший таймфрейм 1M и ищу там короткий сигнал.

Я вставляю горизонтальные и вертикальные линии, чтобы было легко определить, куда смотреть (точка А) на бэктестинге меньшего 1 М таймфрейма.

2. Могу ли я попросить 4 ma synch indy искать только две или три ma, которые должны быть синхронизированы, чтобы показать гистограмму? (пожалуйста, смотрите вложение с условиями на 1м таймфрейме, чтобы понять, что я пытаюсь сделать)

человек77

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

Что касается 2 и 3 mas версии: просто замените "" в коде, где вы видите сравнение, которое идет как "if (ma1<ma2 && ma2<3" ... и так далее, на "=", а затем установите 2 mas в одинаковые значения для 3 разных mas или 2 пары mas в одинаковые значения, чтобы индикатор показывал 2 mas.

 

mladen

Спасибо за предложение.

Мое кодирование почти бесполезно!

Я заменил > и < на =, но получил несколько ошибок при компиляции.

Что мне нужно сделать по-другому?

//------------------------------------------------------------------

#property copyright "www.forex-tsd.com"

#property link "www.forex-tsd.com"

//------------------------------------------------------------------

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 LimeGreen

#property indicator_color2 DarkOrange

#property indicator_width1 2

#property indicator_width2 2

#property indicator_minimum 0

#свойство indicator_maximum 1

extern int Ma1Period = 5;

extern int Ma1Price = PRICE_CLOSE;

extern int Ma1Method = MODE_EMA;

extern int Ma1Shift = 0;

extern int Ma2Period = 15;

extern int Ma2Price = PRICE_CLOSE;

extern int Ma2Method = MODE_EMA;

extern int Ma2Shift = 0;

extern int Ma3Period = 28;

extern int Ma3Price = PRICE_CLOSE;

extern int Ma3Method = MODE_EMA;

extern int Ma3Shift = 0;

extern int Ma4Period = 45;

extern int Ma4Price = PRICE_CLOSE;

extern int Ma4Method = MODE_EMA;

extern int Ma4Shift = 0;

//

//

//

//

//

double histu[];

double histd[];

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int init()

{

SetIndexBuffer(0,histu); SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexBuffer(1,histd); SetIndexStyle(1,DRAW_HISTOGRAM);

return(0);

}

int deinit() { return(0); }

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int start()

{

int counted_bars = IndicatorCounted();

if (counted_bars < 0) return(-1);

if (counted_bars > 0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

//

//

//

//

//

for(int i = limit; i >=0; i--)

{

double ma1 = iMA(NULL,0,Ma1Period,Ma1Shift,Ma1Method,Ma1Price,i);

double ma2 = iMA(NULL,0,Ma2Period,Ma2Shift,Ma2Method,Ma2Price,i);

double ma3 = iMA(NULL,0,Ma3Period,Ma3Shift,Ma3Method,Ma3Price,i);

double ma4 = iMA(NULL,0,Ma4Period,Ma4Shift,Ma4Method,Ma4Price,i);

histu = EMPTY_VALUE;

histd = EMPTY_VALUE;

if(ma1=ma2 && ma2=ma3 && ma3>ma4) histu = 1;

if(ma1=ma2 && ma2=ma3 && ma3<ma4) histd = 1;

}

return(0);

}

 

привет

как насчет ренко графика 2мин с использованием МА?

заранее спасибо

 
person77:
mladen

Спасибо за предложение.

Мое кодирование почти бесполезно!

Я заменил > и < на =, но получил несколько ошибок при компиляции.

Что мне нужно сделать по-другому?

//------------------------------------------------------------------

#property copyright "www.forex-tsd.com"

#property link "www.forex-tsd.com"

//------------------------------------------------------------------

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 LimeGreen

#property indicator_color2 DarkOrange

#property indicator_width1 2

#property indicator_width2 2

#property indicator_minimum 0

#свойство indicator_maximum 1

extern int Ma1Period = 5;

extern int Ma1Price = PRICE_CLOSE;

extern int Ma1Method = MODE_EMA;

extern int Ma1Shift = 0;

extern int Ma2Period = 15;

extern int Ma2Price = PRICE_CLOSE;

extern int Ma2Method = MODE_EMA;

extern int Ma2Shift = 0;

extern int Ma3Period = 28;

extern int Ma3Price = PRICE_CLOSE;

extern int Ma3Method = MODE_EMA;

extern int Ma3Shift = 0;

extern int Ma4Period = 45;

extern int Ma4Price = PRICE_CLOSE;

extern int Ma4Method = MODE_EMA;

extern int Ma4Shift = 0;

//

//

//

//

//

double histu[];

double histd[];

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int init()

{

SetIndexBuffer(0,histu); SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexBuffer(1,histd); SetIndexStyle(1,DRAW_HISTOGRAM);

return(0);

}

int deinit() { return(0); }

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int start()

{

int counted_bars = IndicatorCounted();

if (counted_bars < 0) return(-1);

if (counted_bars > 0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

//

//

//

//

//

for(int i = limit; i >=0; i--)

{

double ma1 = iMA(NULL,0,Ma1Period,Ma1Shift,Ma1Method,Ma1Price,i);

double ma2 = iMA(NULL,0,Ma2Period,Ma2Shift,Ma2Method,Ma2Price,i);

double ma3 = iMA(NULL,0,Ma3Period,Ma3Shift,Ma3Method,Ma3Price,i);

double ma4 = iMA(NULL,0,Ma4Period,Ma4Shift,Ma4Method,Ma4Price,i);

histu = EMPTY_VALUE;

histd = EMPTY_VALUE;

if(ma1=ma2 && ma2=ma3 && ma3>ma4) histu = 1;

if(ma1=ma2 && ma2=ma3 && ma3<ma4) histd = 1;

}

return(0);

}

человек77

Вам следовало заменить "<" на "" с ">=" (а не просто "=").

_____________________

PS: забыл сказать, что 2 MA всегда синхронизированы.

 

Это работает отлично!

Спасибо, Младен.

 

Адаптивное скользящее среднее Кауфмана

Адаптивное скользящее среднее Кауфмана (по Александру Гетингеру)

Адаптивная скользящая средняя Кауфмана (KAMA) была создана Перри Кауфманом и впервые представлена в его книге Smarter Trading (1995).

Formulas:

KAMA = KAMA+sc*(Цена-KAMA), где

sc = (er*0.6015+0.0645)*(er*0.6015+0.0645),

er = Abs(Price-Price)/Sum1,

Sum1 = Sum(Abs(Price-Price)) от (i-Length+1) до i.

Файлы:
kama.mq4  2 kb
 

Две версии линейной регрессии (от одного и того же автора)

 

Предварительно отфильтрованная АМА Кауфмана

Готовлю Kaufman AMA (адаптивное скользящее среднее) для некоторых других вещей, и вот одна из версий, которая имеет очень упрощенный способ использования (расчет ama теперь сделан функцией ). Она также может иметь фильтрацию по цене (вместо необработанной цены можно использовать фильтрованную цену (чтобы включить фильтрацию, установите PriceFilter в 1)).

Файлы:
 

MA28 (автор Александр Геттингер)

Файлы:
ma28.mq4  4 kb
ma28.png  83 kb
 

можно ли, пожалуйста, сделать индикатор мультитаймфреймовым? спасибо.

mladen:
Готовлю Kaufman AMA (адаптивное скользящее среднее) для некоторых других вещей, и вот одна из версий, которая имеет очень упрощенный способ использования (расчет ama теперь сделан функцией). Он также может иметь фильтрацию по цене (вместо сырой цены можно использовать фильтрованную цену (чтобы включить фильтрацию, установите PriceFilter в 1)).