Перейти к содержанию
Форекс Форум трейдеров Академии «MasterForex-V»

Поддержки-Пивот-Сопротивления


Рекомендуемые сообщения

  • 4 недели спустя...
  • Ответов 45
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

  • 1 месяц спустя...

Как установить Пивот на платформу МТ4?

Закинь сюда ..\experts\indicators и перегрузи терминал.

Потом в терминале добавишь индикатор на график.

Изменено пользователем Master
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

 

Господа,

 

разжуйте для чайника как этими индикаторами пользоваться!

Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...
  • 4 недели спустя...

Давно ищу нормальный пивотный индикатор(был, потерял).

Требования:

1. Стандартный пивот с двумя-тремя уровнями сопр/подд.

2. Регулировка GMTShift (сдвиг точки начала расчёта суток или сессии)

3. Отображение истории (желательна регулировка в днях)

4. Должен хорошо (корректно) отображаться при работе в тестере.

5. Желательно больше никаких наворотов.

Вот такое скромное пожелание.

 

ИМХО не только мне пригодится.

Возможна замена на Камариллу, подходящую под эти же требования.

 

У кого нибудь есть месячный пивот?

Если ты точно уверен, что он тебе нужен, то поищу.

Из папки терминала удалил давно, а в загашнике может и остался.

Он НИЧЕГО не даёт.

Вместо него гораздо лучше (точней) пользоваться глобальными (месячными, годовыми) максимумами/минимумами.

ИМХО. Не навязываю, но сам посмотри.

Ну, а если уж и стремиться к глобализму, то лучше всего должны быть годовые, пятилеточные и т.д. пивоты. :)

Изменено пользователем VladMih
Ссылка на комментарий
Поделиться на другие сайты

Поискал, нашёл в почте от автора. Вдруг чел действительно сумеет это круто использовать:

...

Эй-е-ейЁ!

Подгодтовил архив и не знаю как его приат...собачить!

Первый раз такое в моей некороткой инетовской жизни! :)

Подскажите КАК - вложу - 4 пивота.

2 "нормальных" + 1 недельный + 1 месячный

 

P.S. ещё раз всё просмотрел. Кто так круто всё замутил?....

Вижу только присобачивание КАРТИНОК, а других файлов - не вижу.

Изменено пользователем VladMih
Ссылка на комментарий
Поделиться на другие сайты

Жмите ответить => прикрепить файл => выбираете нужный файл

И будет вам счастье

Хе! Оказывается тут бывают люди :)

 

Нету у меня "прикрепить файл". Сто лет прикрепляю, а тут вижу только (по порядку):

"вставить ссылку", "... мыло", "... изображение", "цитата", "код"

 

На этом ВСЁ. Дальше уже идёт форматирование. ДО этого - стили. :(

 

При переключении на предварительный просмотр ТОЖЕ НИЧЕГО НЕ ПОЯВЛЯЕТСЯ.

Ссылка на комментарий
Поделиться на другие сайты

См. картинку

Хе... До такого я додумался БЫ, но

У меня между блоками опций и иконок сообщения НЕТ блока загрузки.

 

Что-то ишак не хочет сегодня от меня картинки брать.

Можно посмотреть мой "ответ Чемберлену" здесь - http://www.megaupload.com/?d=3YC1S9JU

 

P.S. И форум глючит и провайдеры у вас где-то в районе Киева (делал трассировки)

не хочет работать нормально.

Изменено пользователем VladMih
Ссылка на комментарий
Поделиться на другие сайты

  • 4 месяца спустя...

Почему то не могу прикреплять ни файлы ни картинки, поэтому кидаю код индикатора пайвотов - разработка моя, настроен сразу на время Альпари, то есть расчет по закрытию суток 22GMT, совмещен с сессионным индикатор, кроме того расчитывает размер оптимального стоп лосса, для позиций, которые сопровождаются более одного дня по тренду.

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

//+------------------------------------------------------------------+

//| inday.mq4 |

//| Copyright © 2007, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2007, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

 

#property indicator_chart_window

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

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

 

int GMTshift =2;

// Сдвиг для Альпари +2(лето) +1(зима) и надо 22-> -2

// Сдвиг настраивается на 22GMT

 

//------- Внешние параметры индикатора -------------------------------

extern int NumberOfDays = 40; // Количество дней

extern string AsiaBegin = "01:00"; // Открытие азиатской сессии

extern string AsiaEnd = "10:00"; // Закрытие азиатской сессии

extern color AsiaColor = Goldenrod; // Цвет азиатской сессии

extern string EurBegin = "08:00"; // Открытие европейской сессии

extern string EurEnd = "16:00"; // Закрытие европейской сессии

extern color EurColor = Tan; // Цвет европейской сессии

extern string USABegin = "12:00"; // Открытие американской сессии

extern string USAEnd = "23:00"; // Закрытие американской сессии

extern color USAColor = PaleGreen; // Цвет американской сессии

 

//-------------------------------------------------------------------+

 

double dayv_open =0; //закрытие

double dayv_close =0; //открытие

double dayv_high =0; //максиум

double dayv_low =0; //мимниум

int dayb_high =0; //бар максиума

int dayb_low =0; //бар миниума

int dayb_start =0; //бар начала от 0 бар

int dayb_end =0; //бар завершения от 0 бар

int dayv0 =0; //дата начала (в цикле она смещается, надо запомнить)

 

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

 

double week_open =0; //открытие недели

double week_high =0; //недельный максиум

double week_low =0; //недельный миниум

double week_close =0; //недельное закрытие

 

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

 

int crossMA_b1 =0; //пересечение MA бар 1

int crossMA_b2 =0; //пересечение MA бар 2

int crossMA_b3 =0; //пересечение MA бар 3

int day_MA1 =0; //MA1 для предыдущего дня

int day_MA2 =0; //MA2 для предыдущего дня

 

 

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

 

double Pivot, R1, R2, R3, S1, S2, S3, R4, S4 ;

 

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

 

extern double Lots = 0.1;

extern double TrailingStop = 20;

 

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

 

int MAGIC_BUY = 1; //Магик для отложников на продажу

int MAGIC_SELL = 2; //Магик для отложников на покупку

int UR_Step = 10; //Верхняя зона реакции уровня

int DR_Step = 10; //Нижняя зона реакции уровня

int SlipPage = 2; //Размер допустимого проскальзывания

int CurrentDay = 0; //Сегодняшний день

 

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

 

int M_MA = 21;

int S_MA = 96;

 

int today = 0;

int ticket = 0;

 

 

void init() {

DeleteObjects();

for (int i=0; i<NumberOfDays; i++) {

CreateObjects("AS"+i, AsiaColor);

CreateObjects("EU"+i, EurColor);

CreateObjects("US"+i, USAColor);

}

Comment("");

}

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

 

void deinit() {

DeleteObjects();

Comment("");

}

 

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

//int counted_bars=IndicatorCounted();

 

OrdersDaySetup();

datetime dt=CurTime();

 

for (int i=0; i<NumberOfDays; i++) {

 

DrawObjects(dt, "AS"+i, AsiaBegin, AsiaEnd);

DrawObjects(dt, "EU"+i, EurBegin, EurEnd);

DrawObjects(dt, "US"+i, USABegin, USAEnd);

 

//уменьшение объектов на один день

dt=decDateTradeDay(dt);

 

while (TimeDayOfWeek(dt)>5) dt=decDateTradeDay(dt);

}

return(0);

 

}

//+------------------------------------------------------------------+

 

void OrdersDaySetup()

{

//проверяем наступление нового дня, по факту наступления закрываем все отложники

//и устанавливаем новые по новым уровням

if (CurrentDay == 0 || CurrentDay != TimeDay(Time[0]-(GMTshift*3600)))

{

//Comment ("Новые сутки");

//DeleteStopOrders();

 

CurrentDay = TimeDay(Time[0]-(GMTshift*3600));

 

if (FindDayPeriod(2)==2)

{

DayLevels(1,1);

GetPivot();

 

UR_Step=NormalizeDouble((R1-S1)/4/Point,0);

DR_Step=NormalizeDouble((R1-S1)/4/Point,0);

TrailingStop = NormalizeDouble((R1-S1)/2/Point,0);

 

Comment ("Оптимальный параметр трейлинг-стопа - ", TrailingStop);

 

}

}

 

}

 

int FindDayPeriod(int day_period=0)

// возвращает наличие на графике количества дней переданных в аргумент запроса

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

{

int cnt=0;

int d=0;

int c=0;

d=TimeDay(Time[cnt]-(GMTshift*3600));

while (cnt<Bars-1)

{ if(TimeDay(Time[cnt]-(GMTshift*3600))==d)

{ if(TimeDay(Time[cnt+1]-(GMTshift*3600))!=d)

{ if(c==day_period) { return(day_period); break;}

if(c<day_period+1) { d=TimeDay(Time[cnt+1]-(GMTshift*3600)); c++; } //смещение

}

}

cnt++;

}

}

//---

void DayLevels(int da = 1,int da_shift=1)

// Расчет уровней миниума, максиума, закрытия, открытия за день

// или указанное количество дней

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

{

// Если таймфрайм больше чем часовой, тогда выводим сообщение,

// что необходим таймфрейм не больше часового

if(Period()>60)

{

Comment("Для расчета PIVOTS необходим таймфрейм не старше часового!");

return(0);

}

dayv_open =0; //открытие

dayv_close =0; //закрытие

dayv_high =0; //максиум

dayv_low =0; //мимниум

dayb_high =0; //бар максиума

dayb_low =0; //бар миниума

dayb_start =0; //бар начала от 0 бар (конец диапазона по времени)

dayb_end =0; //бар завершения от 0 бар (начало диапазона по времени)

dayv0 =0; //дата начала

dayv0=TimeDay(Time[0]-(GMTshift*3600));

int dayb=0;

int cnt=0;

int cnt_da=da; //default 1

int cnt_da_shift=da_shift; //default 1

while (cnt<Bars-1)

{

// с какого дня считать, цикл начинаеся с сегодня

// если день 1, тогда игноируем сегодня и считаем завтра

if (TimeDay(Time[cnt]-(GMTshift*3600))==dayv0)

{

//последний день сегодня

if (TimeDay(Time[cnt+1]-(GMTshift*3600))!=dayv0)

{

if (cnt_da_shift==1)

// инициализируем переменные расчета

{

//инициализируем начальную дату

dayb=TimeDay(Time[cnt+1]-(GMTshift*3600));

//Comment (dayb);

// Максиум и миниум, а также цену закрытия и открытия

dayv_close=Close[cnt+1]; //закрытие

dayv_high=High[cnt+1]; //максиум

dayv_low=Low[cnt+1]; //мимниум

//запоминаем номера баров

dayb_start = cnt; //закрытие бар

dayb_high = cnt; //максиум бар

dayb_low = cnt; //мимниум бар

}

if (cnt_da_shift>1)

// тогда запускаем отсчет до указанного дня

{

//вычитаем единичку от счетчика

cnt_da_shift--;

//смещаем дату

dayv0 = TimeDay(Time[cnt+1]-(GMTshift*3600));

}

}

}

//цикл расчета для дня dayb, но если день понедельник

if (TimeDay(Time[cnt]-(GMTshift*3600))==dayb)

{

//росмотр Low - High

if(High[cnt] > dayv_high)

{

//обновление значений

dayv_high = High[cnt];

dayb_high = cnt;

}

if(Low[cnt] < dayv_low)

{

//обновление значений

dayv_low = Low[cnt];

dayb_low = cnt;

}

//обнаружение конца дня, если идут свечки воскресенья, тогда сдвигаем

if (TimeDayOfWeek(Time[cnt]-(GMTshift*3600))==0)

{

// считать и пятничные свечки

dayb = TimeDay(Time[cnt+1]-(GMTshift*3600));

}

if(TimeDay(Time[cnt+1]-(GMTshift*3600))!=dayb)

{

dayv_open = Open[cnt]; //закрытие

dayb_end = cnt;

//Выводим полученную информацию

//Comment ("Входные параметры: смещение в днях для расчета - ", da_shift , " дней расчета - ", da, "\n","Результат: открытие - ", dayv_open , " закрытие - ", dayv_close," максиум - ", dayv_high, " миниум - ", dayv_low);

if(cnt_da == 1){break;}

if(cnt_da > 1)

{

//смещение даты

dayb=TimeDay(Time[cnt+1]-(GMTshift*3600));

cnt_da--;

}

}

 

}

cnt++;

}

}

 

 

 

void GetPivot()

{

//рисуем всяку хрень на экран по полученым координатам

/*

double dayv_close =0; //открытие

double dayv_high =0; //максиум

double dayv_low =0; //мимниум

*/

// Pivot=(dayv_high+dayv_low+dayv_close)/3;

 

Pivot=(dayv_high+dayv_low)/2;

S1=2*Pivot-dayv_high;

R1=2*Pivot-dayv_low;

 

S2=Pivot-R1+S1;

 

R2=Pivot+R1-S1;

S3=dayv_low-2*(dayv_high-Pivot);

R3=dayv_high+2*(Pivot-dayv_low);

S4=dayv_low-3*(dayv_high-Pivot);

R4=dayv_high+3*(Pivot-dayv_low);

//Pivot=Pivot+(dayv_close-dayv_open)/4;

ShowPivot(Pivot,R1,R2,R3,R4,S1,S2,S3,S4);

 

}

 

void ShowPivot(double Pivot,double R1,double R2,double R3,double R4,double S1,double S2,double S3,double S4)

{

ObjectDelete("P_Line"); ObjectDelete("S4_Line"); ObjectDelete("R4_Line");

ObjectDelete("S3_Line"); ObjectDelete("R3_Line"); ObjectDelete("S2_Line");

ObjectDelete("R2_Line"); ObjectDelete("S1_Line"); ObjectDelete("R1_Line");

 

ObjectCreate("P_Line",OBJ_HLINE,0,CurTime(),Pivot);ObjectSet("P_Line",OBJPROP_COLOR,Sienna); ObjectSet("P_Line",OBJPROP_STYLE,STYLE_SOLID);

 

ObjectCreate("S4_Line",OBJ_HLINE,0,CurTime(),S4); ObjectSet("S4_Line",OBJPROP_COLOR,DarkOliveGreen); ObjectSet("S4_Line",OBJPROP_STYLE,STYLE_SOLID);

 

ObjectCreate("R4_Line",OBJ_HLINE,0,CurTime(),R4); ObjectSet("R4_Line",OBJPROP_COLOR,DarkSlateGray); ObjectSet("R4_Line",OBJPROP_STYLE,STYLE_SOLID);

 

ObjectCreate("S3_Line",OBJ_HLINE,0,CurTime(),S3); ObjectSet("S3_Line",OBJPROP_COLOR,DarkOliveGreen); ObjectSet("S3_Line",OBJPROP_STYLE,STYLE_SOLID);

 

ObjectCreate("R3_Line",OBJ_HLINE,0,CurTime(),R3); ObjectSet("R3_Line",OBJPROP_COLOR,DarkSlateGray); ObjectSet("R3_Line",OBJPROP_STYLE,STYLE_SOLID);

 

ObjectCreate("S2_Line",OBJ_HLINE,0,CurTime(),S2); ObjectSet("S2_Line",OBJPROP_COLOR,DarkOliveGreen); ObjectSet("S2_Line",OBJPROP_STYLE,STYLE_SOLID);

 

ObjectCreate("R2_Line",OBJ_HLINE,0,CurTime(),R2); ObjectSet("R2_Line",OBJPROP_COLOR,DarkSlateGray); ObjectSet("R2_Line",OBJPROP_STYLE,STYLE_SOLID);

 

ObjectCreate("S1_Line",OBJ_HLINE,0,CurTime(),S1); ObjectSet("S1_Line",OBJPROP_COLOR,DarkOliveGreen); ObjectSet("S1_Line",OBJPROP_STYLE,STYLE_SOLID);

 

ObjectCreate("R1_Line",OBJ_HLINE,0,CurTime(),R1); ObjectSet("R1_Line",OBJPROP_COLOR,DarkSlateGray); ObjectSet("R1_Line",OBJPROP_STYLE,STYLE_SOLID);

 

ObjectsRedraw();

 

if(ObjectFind("R4 label")!=0)

{ ObjectCreate("R4 label",OBJ_TEXT,0,Time[0],R4); ObjectSetText("R4 label"," R 4 ",6,"Arial",DarkSlateGray);}

else ObjectMove("R4 label",0,Time[0],R4);

if(ObjectFind("S4 label")!=0)

{ ObjectCreate("S4 label",OBJ_TEXT,0,Time[0],S4); ObjectSetText("S4 label"," S 4 ",6,"Arial",DarkOliveGreen);}

else ObjectMove("S4 label",0,Time[0],S4);

if(ObjectFind("R3 label")!=0)

{ ObjectCreate("R3 label",OBJ_TEXT,0,Time[0],R3); ObjectSetText("R3 label"," R 3 ",6,"Arial",DarkSlateGray);}

else ObjectMove("R3 label",0,Time[0],R3);

if(ObjectFind("S3 label")!=0)

{ ObjectCreate("S3 label",OBJ_TEXT,0,Time[0],S3); ObjectSetText("S3 label"," S 3 ",6,"Arial",DarkOliveGreen);}

else ObjectMove("S3 label",0,Time[0],S3);

if(ObjectFind("R2 label")!=0)

{ ObjectCreate("R2 label",OBJ_TEXT,0,Time[0],R2); ObjectSetText("R2 label"," R 2 ",6,"Arial",DarkSlateGray);}

else ObjectMove("R2 label",0,Time[0],R2);

if(ObjectFind("S2 label")!=0)

{ ObjectCreate("S2 label",OBJ_TEXT,0,Time[0],S2); ObjectSetText("S2 label"," S 2 ",6,"Arial",DarkOliveGreen);}

else ObjectMove("S2 label",0,Time[0],S2);

if(ObjectFind("R1 label")!=0)

{ ObjectCreate("R1 label",OBJ_TEXT,0,Time[0],R1); ObjectSetText("R1 label"," R 1 ",6,"Arial",DarkSlateGray);}

else ObjectMove("R1 label",0,Time[0],R1);

if(ObjectFind("S1 label")!=0)

{ ObjectCreate("S1 label",OBJ_TEXT,0,Time[0],S1); ObjectSetText("S1 label"," S 1 ", 6,"Arial",DarkOliveGreen);}

else ObjectMove("S1 label",0,Time[0],S1);

if(ObjectFind("P label")!=0)

{ ObjectCreate("P label",OBJ_TEXT,0,Time[0],Pivot); ObjectSetText("P label"," Pvt ",6,"Arial",Sienna);}

else ObjectMove("P label",0,Time[0],Pivot); }

 

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

//+------------------------------------------------------------------+

//| Создание объектов индикатора |

//| Параметры: |

//| no - наименование объекта |

//| cl - цвет объекта |

//+------------------------------------------------------------------+

void CreateObjects(string no, color cl) {

ObjectCreate(no, OBJ_RECTANGLE, 0, 0,0, 0,0);

ObjectSet(no, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet(no, OBJPROP_COLOR, cl);

ObjectSet(no, OBJPROP_BACK, True);

}

 

//+------------------------------------------------------------------+

//| Удаление объектов индикатора |

//+------------------------------------------------------------------+

void DeleteObjects() {

for (int i=0; i<NumberOfDays; i++) {

ObjectDelete("AS"+i);

ObjectDelete("EU"+i);

ObjectDelete("US"+i);

}

}

 

//+------------------------------------------------------------------+

//| Прорисовка объектов на графике |

//| Параметры: |

//| dt - дата торгового дня |

//| no - наименование объекта |

//| tb - время начала сессии |

//| te - время окончания сессии |

//+------------------------------------------------------------------+

void DrawObjects(datetime dt, string no, string tb, string te) {

 

datetime t1, t2;

double p1, p2;

int b1, b2;

 

t1=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tb);

t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+te);

 

b1=iBarShift(NULL, 0, t1+ ((GMTshift+2)*3600));

b2=iBarShift(NULL, 0, t2 + ((GMTshift+2)*3600));

 

p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2, b2)];

p2=Low [Lowest (NULL, 0, MODE_LOW , b1-b2, b2)];

 

ObjectSet(no, OBJPROP_TIME1 , t1 + ((GMTshift+2)*3600));

ObjectSet(no, OBJPROP_PRICE1, p1);

ObjectSet(no, OBJPROP_TIME2 , t2 + ((GMTshift+2)*3600));

ObjectSet(no, OBJPROP_PRICE2, p2);

 

}

 

//+------------------------------------------------------------------+

//| Уменьшение даты на один торговый день |

//| Параметры: |

//| dt - дата торгового дня |

//+------------------------------------------------------------------+

datetime decDateTradeDay (datetime dt) {

int ty=TimeYear(dt);

int tm=TimeMonth(dt);

int td=TimeDay(dt);

int th=TimeHour(dt);

int ti=TimeMinute(dt);

 

td--;

if (td==0) {

tm--;

if (tm==0) {

ty--;

tm=12;

}

if (tm==1 || tm==3 || tm==5 || tm==7 || tm==8 || tm==10 || tm==12) td=31;

if (tm==2) if (MathMod(ty, 4)==0) td=29; else td=28;

if (tm==4 || tm==6 || tm==9 || tm==11) td=30;

}

return(StrToTime(ty+"."+tm+"."+td+" "+th+":"+ti));

}

//+------------------------------------------------------------------+

Ссылка на комментарий
Поделиться на другие сайты


×
×
  • Создать...