Индикаторы: DynamicRS

 

DynamicRS:

Простой индикатор динамических уровней поддержки и сопротивления.

Author: rebus

 

а если вставить сюда?

КОПИЯ ПО ХАЯМ (ЧЕРНОВАЯ НО РАБОЧАЯ) ТАКАЯ ЖЕ ПО ЛОВАМ

//+------------------------------------------------------------------+
//| OZ-i-High. mq4
//| 0z0@mail.ru
//| КОПИЯ ПО ХАЯМ (ЧЕРНОВАЯ НО РАБОЧАЯ) ТАКАЯ ЖЕ ПО ЛОВАМ
//+------------------------------------------------------------------+
#property copyright "© 2007, OZ"
#property link "www.investor-eto.narod.ru"
//----
//#define major 1//
//#define minor 0//ЗАБИЛ

//----
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Gold
#property indicator_color2 DodgerBlue
#property indicator_color3 Magenta
#property indicator_color4 Magenta//Red
#property indicator_color5 Lime
#property indicator_color6 Lime
#property indicator_color7 Magenta
#property indicator_color8 Red


//----
extern int D89 = 40;//N - искать самые высокие/низкие свечи за последние... баров;

extern int DHigh = 15;//Nextern int DHigh = 10;//DHigh - искать самые высокие свечи за последние ... баров;
extern int DLow = 12;//DLow - искать самые низкие свечи за последние ... баров;
extern int DH = 10;//Nextern int DHigh = 10;//DHigh - искать самые высокие свечи за последние ... баров;
extern int DL = 12;//DLow - искать самые низкие свечи за последние ... баров;
extern int D2 = 2;//D1 - искать самые высокие/низкие свечи за последние... баров;

extern double N0 = 0.0;//N2 - рисовать границы со смещением в ... пунктов по оси цен вверх и вниз на старшем канале.
extern double N015 = 0.15;//N3 - рисовать границы со смещением вверх и вниз по оси цен для меньшЕМ каналов
extern double N08 = 0.00;//0.15;//0.08;//N3 - рисовать границы со смещением вверх и вниз по оси цен для меньшЕМ каналов

extern int Shift1=0; // продлеваем вперед уровни ???
extern int Shift=0; // продлеваем вперед СТРЕЛКИ

extern string Zametki1="ВХОД-ВЫХОД В 16.45!!!ВКЛЮЧАЙ ГОЛОВУ - индикатор для чисто психологической поддержки, а следовать или нет его рекомендациям - личное дело каждого ";
extern string Zametki2="ПРИ ОТСКОКЕ ОТ НУЛЕВОЙ ЛИНИИ ИЛИ ПЕРЕСЕЧЕНИИ В РАЙОНЕ ЕЕ - СИГНАЛ КОНЦА ЧЕТВЕРТОЙ ВОЛНЫ";

extern int COMMENT = 0;//ЕСЛИ ПОСТАВИТЬ 0 ТО НА ЭКРАНЕ БУДЕТ ПУСТО, ЕСЛИ ПОСТАВИТЬ 2 ТО МИНИМУМ ИНФОРМАЦИИ А ЕСЛИ 1 - ТО БУДЕТ ПОКАЗЫВАТЬ КОМЕНТАРИИ БЕЗ КОЭФФИЦИЕНТА ЭФФЕКТИВНОСТИ ПЕРРИ КАУФМАНА
// А ЕСЛИ 0 - ТО КОММЕНТАРИЙ 3 ИЛИ 4 В ЗАВИСИМОСТИ ОТ УСЛОВИЯ
//extern int period = 1;
extern string profiles ="PORTFEL-4"; // !!!!!!!!!!!!!!!!
extern string templates ="для Н4 Из: 01-rada";
extern double Leverage = 10.0; //
extern double Lots = 0.01; //СТАВИТЬ СУММАРНОЕ КОЛИЧЕСТВО ЛОТОВ ПО ОДНОМУ ИНСТРУМЕНТУ ПРИ ВЫЗОВЕ ИНДИКАТОРА ГОРЯЧЕЙ КЛАВИШЕЙ


//----
double UpperBuf89[];
double LowerBuf89[];
double UpperBuf[];
double LowerBuf[];
double UpperBuf10[];
double LowerBuf10[];
double UpperBuf2[];
double LowerBuf2[];

double val1[], val2[], low1;

//bool uptrend, old;
//---- Номер бара, по которому будет искаться сигнал
#define S 1//ЗАМЕНИЛ SIGNAL_BAR 1 ИЗ СТАТЬИ НА S 1 ДЛЯ КРАТКОСТИ
//компилятор просто заменит во всем коде переменную SIGNAL_BAR указанным значением (1).


//=================================================================================================

//bool uptrend, old;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void init()
{
SetIndexStyle(0, STYLE_SOLID,0,1);
SetIndexStyle(1, STYLE_SOLID,0,1);
SetIndexStyle(2, STYLE_SOLID,0,1);
SetIndexStyle(3, STYLE_SOLID,0,1);
SetIndexStyle(4, STYLE_SOLID,0,1);
SetIndexStyle(5, STYLE_SOLID,0,1);
SetIndexStyle(6, STYLE_SOLID,0,1);
SetIndexStyle(7, STYLE_SOLID,0,1);


//----
SetIndexDrawBegin(0, DHigh);
// SetIndexDrawBegin(1, DLow);

// SetIndexDrawBegin(2, DH+Shift1-1);
SetIndexShift(2, Shift);

// SetIndexDrawBegin(3, DL+Shift1-1);
SetIndexShift(3, Shift);

SetIndexDrawBegin(4, D89);
// SetIndexDrawBegin(5, D89);

//----
SetIndexBuffer(0, UpperBuf10);
SetIndexShift(0, Shift);

SetIndexBuffer(1, UpperBuf2);
SetIndexShift(1, Shift);

SetIndexBuffer(2, UpperBuf);
// SetIndexBuffer(3, LowerBuf);
SetIndexBuffer(4, UpperBuf89);
SetIndexShift(4, Shift);

// SetIndexBuffer(5, LowerBuf89);
SetIndexShift(5, Shift);

//---- indicators
// SetIndexStyle(6, DRAW_ARROW,1,0);// ЭТО Aqua
// SetIndexArrow(6, 344); // БЫЛО - 164 - МИШЕНЬ, 233 - СТРЕЛКА, 255-ОКНА, 344-КРЕСТИКИ
// SetIndexBuffer(6, val1); // индекс буфера для бай
// SetIndexDrawBegin(6, 2*CHANNEL5);// ЭТО ТИПА РАССТОЯНИЕ СТРЕЛКИ ОТ ЛИНИИ ПО ВЕРТИКАЛИ ???????
// SetIndexLabel(6, "ВВЕРХ");
// SetIndexShift(6, Shift);

SetIndexStyle(7, DRAW_ARROW,1,5);// ЭТО Yellow
SetIndexArrow(7, 344); // БЫЛО - 164 - МИШЕНЬ, 234 - СТРЕЛКА, 255-ОКНА, 344-КРЕСТИКИ
SetIndexBuffer(7, val2); // индекс буфера для селл
// SetIndexDrawBegin(7, 2*CHANNEL5);// ЭТО ТИПА РАССТОЯНИЕ СТРЕЛКИ ОТ ЛИНИИ ???????
SetIndexLabel(7, "ВНИЗ");
SetIndexShift(7, Shift1);

//return(0);

}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void deinit()
{
//----
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void start()
{
int counted = IndicatorCounted();
//----
if(counted < 0)
return (-1);
//----
if(counted > 0)
counted--;
int limit = Bars - counted;
//----
for(int i = 0; i < limit; i++)

{
UpperBuf89[i] = iHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, D89, i)) + N0*(High[i]-Low[i]);//Point;//ТОЖЕ МОЖНО (High-Low)
// LowerBuf89[i] = iLow(NULL, 0, iLowest(NULL, 0, MODE_LOW, D89, i)) - N0*(High[i]-Low[i]);//Point;//тоже можно(High-Low)
UpperBuf10[i] = iHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, DHigh, i)) + N0*(High[i]-Low[i]);//Point;//ТОЖЕ МОЖНО (High-Low)
// LowerBuf10[i] = iLow(NULL, 0, iLowest(NULL, 0, MODE_LOW, DLow, i)) - N0*(High[i]-Low[i]);//Point;//тоже можно(High-Low)

UpperBuf[i] = iHigh(NULL, 0, iHighest(NULL, 0, MODE_LOW, DH, i)) + N08*((High[i]-Low[i]));//+High[i-1]-Low[i-1]+High[i-2]-Low[i-2])/3);//Point;//ТОЖЕ МОЖНО (High-Low)
// LowerBuf[i] = iLow(NULL, 0, iLowest(NULL, 0, MODE_HIGH, DL, i)) - N08*((High[i]-Low[i]));//+High[i-1]-Low[i-1]+High[i-2]-Low[i-2])/3);//Point;//тоже можно(High-Low)
//А НУЖЕН ЛИ ТУТ ФАЙЛ СТАТИСТИКИ???
UpperBuf2[i] = iHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, D2, i)) + N015*((High[i-1]-Low[i-1]));//((High[i-5]-Low[i-5]));

}

// ИТАК, НАЧАЛИ

//перемещаемся в самый конец функции start - выше последнего оператора return:

//---- Статические переменные, в которых хранятся время последнего бара и направление последнего сигнала
static int PrevSignal = 0, PrevTime = 0;

//---- Если баром для анализа выбран не 0-й, нам нет смысла проверять сигнал
//---- несколько раз. Если не начался новый бар, выходим.
if(S >= 0 && Time[0] <= PrevTime ) //Я КАК РАЗ ПОСТАВИЛ НУЛЕВОЙ - БЫЛО - if(SIGNAL_BAR > 0 && Time[0] <= PrevTime )
return(0);
//---- Отмечаем, что этот бар проверен
PrevTime = Time[0];

//==========================================================================================================
//Каждый раз, когда будет выполняться функция start, будет выполняться наш код.
//Обычные переменные обнуляются после каждого выполнения функции.
//Поэтому для хранения последнего сигнала и номера просчитанного бара мы объявили две статические переменные.
//Дальше находится простая проверка, начался ли новый бар (работает только, если SIGNAL_BAR больше 0).
//код сигнала:
//---- Если предыдущий сигнал был СЕЛЛ или это первый запуск (PrevSignal=0)
if(PrevSignal <= 0)
{
//---- Проверяем, не пересеклись ли линии на прошлом баре:
if(LowerBuf10[S] - LowerBuf[S] >= 0 && LowerBuf[S+1] - LowerBuf10[S+1] > 0 && LowerBuf[S+1] - LowerBuf10[S+1] >= 0)
//&& LowerBuf10[S+1] - LowerBuf10[S] >= 0)//-ЭТО ЕСЛИ СРАВНИТЬ С ПРЕДЫДУЩЕЙ СВЕЧОЙ// && LowerBuf2[S] - LowerBuf10[S] >= 0)

// if(LowerBuf10[S] - LowerBuf2[S] >= 0 &&
// LowerBuf2[S+1] - LowerBuf10[S+1] > 0)
//SignalBuffer[SIGNAL_BAR] > 0) // ZO - ОТ СЕБЯ УЖЕ ДОБАВИЛ УСЛОВИЕ ЧТО СИГНАЛ БОЛЬШЕ НУЛЯ но не получилось
{
//---- Если пересеклись, отмечаем что последний сигнал - бай =============================================================3
PrevSignal = 1; // Т.Е. ЕСЛИ СЛЕДУЮЩИЙ БАЙ ТО НЕ ВЫВОДИМ???
//---- и выводим информацию:
val1[S] = LowerBuf2[S+1];//ExtMapBuffer51[i];//LowerBuf2[i]-(LowerBuf10[i]-LowerBuf2[i])*2;

Alert("ZO-i-High (", Symbol(), ", ", Period(), ", ",AccountEquity(), ") - BUY!ПОКУПАЙ");//, ",ObjectType(), "
// Print("sMACD (", Symbol(), ", ", Period(), ") - BUY!!!");
// Comment("sMACD (", Symbol(), ", ", Period(), ") - BUY!!!");
// PlaySound("Alert. wav");
}
}


//---- Полностью аналогично для сигнала СЕЛЛ =============================================================================4
if(PrevSignal >= 0)
{
if(UpperBuf[S] - UpperBuf10[S] >= 0 && UpperBuf10[S+1] - UpperBuf[S+1] > 0 && UpperBuf[S+1] - UpperBuf10[S+1] <= 0)//&& UpperBuf10[S+1] - UpperBuf10[S] <= 0)

// if(UpperBuf2[S] - UpperBuf10[S] >= 0 &&
// UpperBuf10[S+1] - UpperBuf2[S+1] > 0)
// ZO - ОТ СЕБЯ УЖЕ ДОБАВИЛ
{
PrevSignal = -1;
val2[S] = UpperBuf89[S+1];

Alert("ZO-i-High (", Symbol(), ", ", Period(), ", ",AccountEquity(), ") - SELL!ПРОДАВАЙ");//, ",ObjectType(), "
// Print("sMACD (", Symbol(), ", ", Period(), ") - SELL!!!");
// Comment("sMACD (", Symbol(), ", ", Period(), ") - SELL!!!");
// PlaySound("Alert. wav");
}
}

}// - И НА ЭТОМ ВСЕ - БЕЗ РЕТУРНА
//=================================================================================================

 
Не совсем разобрался, как работает индикатор. Однако бегло просмотрев, появилась идея использавать индиктор с каким-нибудь трендовым индикатором например HL Next Activator. Наверное можно и доливаться по нему...!?
 
FX_Dmitriy писал(а):
Не совсем разобрался, как работает индикатор. Однако бегло просмотрев, появилась идея использавать индиктор с каким-нибудь трендовым индикатором например HL Next Activator. Наверное можно и доливаться по нему...!?

Тоже проверяю на демке в ручном режиме. Оказалось, что нужно знать основной тренд по D1. Тогда можно доливаться малыми дозами практически без риска хоть каждый день. Сейчас за две недели 26 позиций было в плюсе и 3 (по глупости, пока искал способ) в минусе. Но лучше открывать не по этому индикатору. У меня есть второй вариант - канал по нему. Если будет интерес, попробую выложить.
 
OZ0 писал(а):

а если вставить сюда?

КОПИЯ ПО ХАЯМ (ЧЕРНОВАЯ НО РАБОЧАЯ) ТАКАЯ ЖЕ ПО ЛОВАМ

<skip>

//=================================================================================================

Насколько я понял суть этого кода, это комбинация типа нескольких ценовых каналов с разными периодами и индикатора HiLo? Если имелось в виду вставить мой индикатор сюда, то толку вряд ли будет. Проблемы остаются те же самые - трудно отличить разворот от продолжения тренда. Нет явного сигнала. Высокий риск. Я уже пытался анализировать вместе с несколькими каналами.
 

Ну почему нет выкладывай интересно....

Вот еще с параболиком индикатор неплохо смотрится, если цена находится выше индюка и снизу параболик, отложеный ставить, выше пунктов на 5 . А ты тестируешь как отлежен., ордерами или просто по пересечению входишь и кстати на каком переоде рекомендуешь использавать?

 
FX_Dmitriy писал(а):

Ну почему нет выкладывай интересно....

Вот еще с параболиком индикатор неплохо смотрится, если цена находится выше индюка и снизу параболик, отложеный ставить, выше пунктов на 5 . А ты тестируешь как отлежен., ордерами или просто по пересечению входишь и кстати на каком переоде рекомендуешь использавать?


Я сейчас именно этот индикатор редко использую. Скоро выложу сюда другой и расскажу, как пользуюсь.
 
rebus:
OZ0 писал(а):

а если вставить сюда?

КОПИЯ ПО ХАЯМ (ЧЕРНОВАЯ НО РАБОЧАЯ) ТАКАЯ ЖЕ ПО ЛОВАМ

<skip>

//=================================================================================================

Насколько я понял суть этого кода, это комбинация типа нескольких ценовых каналов с разными периодами и индикатора HiLo? Если имелось в виду вставить мой индикатор сюда, то толку вряд ли будет. Проблемы остаются те же самые - трудно отличить разворот от продолжения тренда. Нет явного сигнала. Высокий риск. Я уже пытался анализировать вместе с несколькими каналами.
Для rebus - напишу Вам на мыло сигнал разворота, а мое мыло - 0z0@mail.ru. Кстати не лучше ли получается без последнего слагаемого? if(High[i]<High[i+1] && High[i]<High[i+IPeriod]// && High[i]<ExtMapBuffer1[i+1])
 
OZ0 писал(а):
rebus:
OZ0 писал(а):

а если вставить сюда?

КОПИЯ ПО ХАЯМ (ЧЕРНОВАЯ НО РАБОЧАЯ) ТАКАЯ ЖЕ ПО ЛОВАМ

<skip>

//=================================================================================================

Насколько я понял суть этого кода, это комбинация типа нескольких ценовых каналов с разными периодами и индикатора HiLo? Если имелось в виду вставить мой индикатор сюда, то толку вряд ли будет. Проблемы остаются те же самые - трудно отличить разворот от продолжения тренда. Нет явного сигнала. Высокий риск. Я уже пытался анализировать вместе с несколькими каналами.
Для rebus - напишу Вам на мыло сигнал разворота, а мое мыло - 0z0@mail.ru. Кстати не лучше ли получается без последнего слагаемого? if(High[i]<High[i+1] && High[i]<High[i+IPeriod]// && High[i]<ExtMapBuffer1[i+1])


Нет. Последнее условие предназначено для борьбы с шумами. Иначе теряется бОльшая часть смысла.

Причина обращения: