Индикаторы: MaEnv_02B_v2 - страница 3

 
borilunad:
basisforex:
borilunad:
Forexmen:

А для М15 нужно удвоить периоды:

yMA[i]=(iMA(NULL, 0, 60, 0, MODE_LWMA, PRICE_WEIGHTED, i) +
iMA(NULL, 0, 100, 0, MODE_LWMA, PRICE_WEIGHTED, i) +
iMA(NULL, 0, 200, 0, MODE_LWMA, PRICE_WEIGHTED, i)) / 3;

Попробовал, как по мне стандартные настройки на М15 смотрятся лучше.

basisforex может поможете подкоректировать инидикатор, на М15?


Для М15 нужно удвоить также растояние между линиями:

yMA[i]=(iMA(NULL, 0, 30 * 2, 0, MODE_LWMA, PRICE_WEIGHTED, i) +
iMA(NULL, 0, 50 * 2, 0, MODE_LWMA, PRICE_WEIGHTED, i) +
iMA(NULL, 0, 100 * 2, 0, MODE_LWMA, PRICE_WEIGHTED, i)) / 3;
//------------------------------------------------------------
aquaUp1[i] = yMA[i] + 6.18 * Point * 2.0;
aquaDn1[i] = yMA[i] - 6.18 * Point * 2.0;
aquaUp2[i] = yMA[i] + 16.18 * Point * 2.0;
aquaDn2[i] = yMA[i] - 16.18 * Point * 2.0;
aquaUp3[i] = yMA[i] + 26.18 * Point * 2.0;
aquaDn3[i] = yMA[i] - 26.18 * Point * 2.0;
aquaUp4[i] = yMA[i] + 36.18 * Point * 2.0;
aquaDn4[i] = yMA[i] - 36.18 * Point * 2.0;

А для М30 надо утроить, вместо 2 или 2.0 поставить 3 или 3.0.

Это, конечно, надо запрограмировать, введя переменную-множитель для М5 единицу, для М15 двойку и для М30 тройку.

К сожалению, ещё не могу написать. Будем надеяться, что Автор поможет нам. А пока пользуюсь двойками на М15.

Большое спасибо Автору и на этом. Отличный индикатор!


int GetBorisKoeff()
{
if(Period() <= 5) return(1);
else if(Period() <= 15) return(2);
else if(Period() <= 30) return(3);
else if(Period() <= 60) return(4);
else if(Period() <= 240) return(5);
else if(Period() <= 1440) return(7);
else if(Period() <= 10080) return(9);
else return(15);

}

...

int Boril = GetBorisKoeff();

if(Digits == 4) aquaUp1[i] = yMA[i] + 6.18 * Point * Boril;


Доброе утро! Глубоко признателен за "скорую" помощь Автору и чувствую неудобство за не настолько заслуженное "увековечение" моего имени в тексте программы. Объясняю это чувством юмора Автора. Сейчас только постараюсь приладить к месту известным "методом тыка". На пробах и ошибках учимся.

СПАСИБО!!


Сказано - сделано! И с RSI-MA должно быть отлично! Слава Автору!
 

30-40-100 все оставлять по умолчанию?

Я конечно извиняюсь, а можно ли полный код индикатора для М15?  

 
Forexmen:

30-40-100 все оставлять по умолчанию?

Я конечно извиняюсь, а можно ли полный код индикатора для М15?


Я послал новую версию. Подождите.
 

Опубликовали, спасибо.

Не работает на парах с форматом 113.50 (EURJPY), 133.40 (GBPJPY). На всем работает самая первая версия  MaEnv_02B_v2.mq4. Но она без изменений. Подправил руками. Хотелось бы универсальную версия.

 /*-------------------------------------------------------------------+
| MaEnv_02B.mq4 |
| Copyright © 2010 |
| basisforex@gmail.com |
+-------------------------------------------------------------------*/
#property copyright "Copyright © 2010, basisforex@gmail.com"
#property link "basisforex@gmail.com"
//-----
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Yellow
#property indicator_color2 Yellow
#property indicator_color3 Aqua
#property indicator_color4 Aqua
#property indicator_color5 Blue
#property indicator_color6 Blue
#property indicator_color7 Red
#property indicator_color8 Red
//----------------------------
int BorisKoeff;
double aquaUp1[];
double aquaDn1[];
double aquaUp2[];
double aquaDn2[];
double aquaUp3[];
double aquaDn3[];
double aquaUp4[];
double aquaDn4[];
double yMA[];
//--------------
int init()
{
IndicatorBuffers(8);
//-----
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, aquaUp1);
SetIndexDrawBegin(0, 0);
//-----
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(1, aquaDn1);
SetIndexDrawBegin(1, 0);
//-------------------------
SetIndexStyle(2, DRAW_LINE);
SetIndexBuffer(2, aquaUp2);
SetIndexDrawBegin(2, 0);
//-----
SetIndexStyle(3, DRAW_LINE);
SetIndexBuffer(3, aquaDn2);
SetIndexDrawBegin(3, 0);
//-------------------------
SetIndexStyle(4, DRAW_LINE);
SetIndexBuffer(4, aquaUp3);
SetIndexDrawBegin(4, 0);
//-----
SetIndexStyle(5, DRAW_LINE);
SetIndexBuffer(5, aquaDn3);
SetIndexDrawBegin(5, 0);
//-------------------------
SetIndexStyle(6, DRAW_LINE);
SetIndexBuffer(6, aquaUp4);
SetIndexDrawBegin(6, 0);
//-----
SetIndexStyle(7, DRAW_LINE);
SetIndexBuffer(7, aquaDn4);
SetIndexDrawBegin(7, 0);
//------------------------
return(0);
}
//+------------------------------------------------------------------+
int GetBorisKoeff()
{
if(Period() <= 5) return(1);
else if(Period() <= 15) return(2);
else if(Period() <= 30) return(3);
else if(Period() <= 60) return(4);
else if(Period() <= 240) return(5);
else if(Period() <= 1440) return(7);
else if(Period() <= 10080) return(9);
else return(15);
}
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
limit = Bars - counted_bars;
//-----
ArrayResize(yMA, Bars);
ArrayInitialize(yMA, 0.0);
//-----
for(int i = limit; i >= 0; i--)
{
yMA[i]=(iMA(NULL, 0, 30, 0, MODE_LWMA, PRICE_WEIGHTED, i) +
iMA(NULL, 0, 50, 0, MODE_LWMA, PRICE_WEIGHTED, i) +
iMA(NULL, 0, 100, 0, MODE_LWMA, PRICE_WEIGHTED, i)) / 3;
//------------------------------------------------------------
int Boril = GetBorisKoeff();
aquaUp1[i] = yMA[i] + 6.18 * Point * Boril;
aquaDn1[i] = yMA[i] - 6.18 * Point * Boril;
aquaUp2[i] = yMA[i] + 16.18 * Point * Boril;
aquaDn2[i] = yMA[i] - 16.18 * Point * Boril;
aquaUp3[i] = yMA[i] + 26.18 * Point * Boril;
aquaDn3[i] = yMA[i] - 26.18 * Point * Boril;
aquaUp4[i] = yMA[i] + 36.18 * Point * Boril;
aquaDn4[i] = yMA[i] - 36.18 * Point * Boril;
}
return(0);
}
//+------------------------------------------------------------------+
 

 

Forexmen, добрый день! Добавь строки для пар, имеющих 2 цифры после запятой в десятичной дроби цены:

int Boril = GetBorisKoeff();
if(Digits == 2) aquaUp1[i] = yMA[i] + 6.18 * Point * Boril;
if(Digits == 4) aquaUp1[i] = yMA[i] + 6.18 * Point * Boril;
if(Digits == 5) aquaUp1[i] = yMA[i] + 61.8 * Point * Boril;
if(Digits == 2) aquaDn1[i] = yMA[i] - 6.18 * Point * Boril;
if(Digits == 4) aquaDn1[i] = yMA[i] - 6.18 * Point * Boril;
if(Digits == 5) aquaDn1[i] = yMA[i] - 61.8 * Point * Boril;

и т.д... Удачи!

Автору большущее спасибо!

 
borilunad:

Forexmen, добрый день! Добавь строки для пар, имеющих 2 цифры после запятой в десятичной дроби цены:

int Boril = GetBorisKoeff();
if(Digits == 2) aquaUp1[i] = yMA[i] + 6.18 * Point * Boril;
if(Digits == 4) aquaUp1[i] = yMA[i] + 6.18 * Point * Boril;
if(Digits == 5) aquaUp1[i] = yMA[i] + 61.8 * Point * Boril;
if(Digits == 2) aquaDn1[i] = yMA[i] - 6.18 * Point * Boril;
if(Digits == 4) aquaDn1[i] = yMA[i] - 6.18 * Point * Boril;
if(Digits == 5) aquaDn1[i] = yMA[i] - 61.8 * Point * Boril;

и т.д... Удачи!

Автору большущее спасибо!

int Boril = GetBorisKoeff();

if(Digits == 4 || Digits == 2) aquaUp1[i] = yMA[i] + 6.18 * Point * Boril;
if(Digits == 5 || Digits == 3) aquaUp1[i] = yMA[i] + 61.8 * Point * Boril;

спасибо.
 
basisforex:
borilunad:

Forexmen, добрый день! Добавь строки для пар, имеющих 2 цифры после запятой в десятичной дроби цены:

int Boril = GetBorisKoeff();
if(Digits == 2) aquaUp1[i] = yMA[i] + 6.18 * Point * Boril;
if(Digits == 4) aquaUp1[i] = yMA[i] + 6.18 * Point * Boril;
if(Digits == 5) aquaUp1[i] = yMA[i] + 61.8 * Point * Boril;
if(Digits == 2) aquaDn1[i] = yMA[i] - 6.18 * Point * Boril;
if(Digits == 4) aquaDn1[i] = yMA[i] - 6.18 * Point * Boril;
if(Digits == 5) aquaDn1[i] = yMA[i] - 61.8 * Point * Boril;

и т.д... Удачи!

Автору большущее спасибо!

int Boril = GetBorisKoeff();

if(Digits == 4 || Digits == 2) aquaUp1[i] = yMA[i] + 6.18 * Point * Boril;
if(Digits == 5 || Digits == 3) aquaUp1[i] = yMA[i] + 61.8 * Point * Boril;

спасибо.


Это Вам спасибо за науку! Завидую программистам с хорошим базовым уровнем. От души желаю Вам дальнейших успехов!

Если Вы не против, я увеличил расстояния между линиями в больших ТФ:

if(Period() <= 5) return(1);
else if(Period() <= 15) return(2);
else if(Period() <= 30) return(3);
else if(Period() <= 60) return(4);
else if(Period() <= 240) return(8);//5);
else if(Period() <= 1440) return(14);//7);
else if(Period() <= 10080) return(20);//9);
else return(25);//15);

 
borilunad:
basisforex:
borilunad:

Forexmen, добрый день! Добавь строки для пар, имеющих 2 цифры после запятой в десятичной дроби цены:

int Boril = GetBorisKoeff();
if(Digits == 2) aquaUp1[i] = yMA[i] + 6.18 * Point * Boril;
if(Digits == 4) aquaUp1[i] = yMA[i] + 6.18 * Point * Boril;
if(Digits == 5) aquaUp1[i] = yMA[i] + 61.8 * Point * Boril;
if(Digits == 2) aquaDn1[i] = yMA[i] - 6.18 * Point * Boril;
if(Digits == 4) aquaDn1[i] = yMA[i] - 6.18 * Point * Boril;
if(Digits == 5) aquaDn1[i] = yMA[i] - 61.8 * Point * Boril;

и т.д... Удачи!

Автору большущее спасибо!

int Boril = GetBorisKoeff();

if(Digits == 4 || Digits == 2) aquaUp1[i] = yMA[i] + 6.18 * Point * Boril;
if(Digits == 5 || Digits == 3) aquaUp1[i] = yMA[i] + 61.8 * Point * Boril;

спасибо.


Это Вам спасибо за науку! Завидую программистам с хорошим базовым уровнем. От души желаю Вам дальнейших успехов!

Если Вы не против, я увеличил расстояния между линиями в больших ТФ:

if(Period() <= 5) return(1);
else if(Period() <= 15) return(2);
else if(Period() <= 30) return(3);
else if(Period() <= 60) return(4);
else if(Period() <= 240) return(8);//5);
else if(Period() <= 1440) return(14);//7);
else if(Period() <= 10080) return(20);//9);
else return(25);//15);


Наоборот, только приветствуются любые идеи.
 

"красиво плывет эта группа в полосатых купальниках..."

 
Спасибо отичный индюк. Можно его подправить, для работы с инексами (СиПи 500) и нефтью ?