mv-i_lease_pitchfork_on_all_tf.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «mv-i_lease_pitchfork_on_all_tf.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор mv-i lease pitchfork on all TF для MetaTrader 4 (MQL4) предназначен для построения объектов «вилок Эндрю» на графике цены на основе обнаруженных фракталов. Он работает одновременно на двух таймфреймах: нижнем (текущий период графика) и верхнем (задаваемый пользователем). Индикатор использует стандартную функцию iFractals для определения экстремумов и создаёт графические объекты OBJ_PITCHFORK с заданным цветом и стилем линий.
Настройки программы
| Настройка | Описание |
|---|---|
| Ind_Coment1 | Ind_Coment1 — Текстовый разделитель-заголовок в панели настроек индикатора для группы параметров нижнего таймфрейма. |
| Ind_Coment2 | Ind_Coment2 — Текстовый разделитель-заголовок в панели настроек индикатора для группы параметров верхнего таймфрейма. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 CornflowerBlue
#property indicator_color2 Tomato
#property indicator_width1 1
#property indicator_width2 1
#property indicator_color3 CornflowerBlue
#property indicator_color4 Tomato
#property indicator_width3 1
#property indicator_width4 1
extern string Ind_Coment1= "--- ????????? ???????? ?????????? ---";
extern bool ShowFractals.LowerTF = false; // ???/???? ??????? ?????????
extern bool OnAlert.Pitchfork.LowerTF = false; // ???/???? ??????? ??? ????????? ?????? ??????
extern int nPitchfork.Upper.LowerTF = 1; // ?????????? ????????? ?????????? "??? ???????"
extern int nPitchfork.Lower.LowerTF = 1; // ?????????? ????????? ?????????? "??? ???????"
extern bool ShowPitchfork.LowerTF = true; // ???/???? "??? ???????" ???????? ??????????
extern string Ind_Coment2= "--- ????????? ???????? ?????????? ---";
extern int TF.Upper = 1440; // ??????? ?????????
extern bool ShowFractals.UpperTF = false; // ???/???? ??????? ?????????
extern bool OnAlert.Pitchfork.UpperTF = false; // ???/???? ??????? ??? ????????? ?????? ??????
extern int nPitchfork.Upper.UpperTF = 1; // ?????????? ????????? ?????????? "??? ???????"
extern int nPitchfork.Lower.UpperTF = 1; // ?????????? ????????? ?????????? "??? ???????"
extern bool ShowPitchfork.UpperTF = true; // ???/???? "??? ???????" ???????? ??????????
int nBars.LowerTF = 0, // ???-?? ????? ???????? ??????????
nBars.UpperTF = 0; // ???-?? ????? ???????? ??????????
int QntPitchfork.Upper.LowerTF= 0; // ?????????? ??? ???????????? ?????????? "??? ???????"
int QntPitchfork.Lower.LowerTF= 0; // ?????????? ??? ???????????? ?????????? "??? ???????"
int QntPitchfork.Upper.UpperTF= 0; // ?????????? ??? ???????????? ?????????? "??? ???????"
int QntPitchfork.Lower.UpperTF= 0; // ?????????? ??? ???????????? ?????????? "??? ???????"
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
void init() {
// код доступен только после оплаты
}
void start() {
// код доступен только после оплаты
}
bool isNewBar.LowerTF() { // ??????? ?????????? true, ???? ????????? ????? ??? ?? ??????? ??????????
if(nBars.LowerTF!=Bars) {
nBars.LowerTF=Bars; return(true);
}
return(false);
}
bool isNewBar.UpperTF(datetime DateTime_) { // ??????? ?????????? true, ???? ????????? ????? ??? ?? ??????? ??????????
if(nBars.UpperTF!=iBarShift(NULL, TF.Upper, DateTime_, false)) {
nBars.UpperTF=iBarShift(NULL, TF.Upper, DateTime_, false); return(true);
}
return(false);
}
bool DrawUpperPitchfork(int nBar, int TF=0) { // ??????? ?????????? ? ?????? ?????????? "???? ???????"
double Fractals.Upper=0,Fractals.Lower=0;
string mFractals[3][3];
int i,j=0;
for (i=nBar; i<Bars; i++) { // ???? ?? ?????
Fractals.Upper=iFractals(NULL,TF,MODE_UPPER,i);
Fractals.Lower=iFractals(NULL,TF,MODE_LOWER,i);
if(Fractals.Lower>0) {
mFractals[j][0]=TimeToStr(iTime(NULL,TF,i),TIME_DATE|TIME_MINUTES);
mFractals[j][1]=DoubleToStr(Fractals.Lower,Digits);
mFractals[j][2]=-1;
j++;
}
if(Fractals.Upper>0) {
mFractals[j][0]=TimeToStr(iTime(NULL,TF,i),TIME_DATE|TIME_MINUTES);
mFractals[j][1]=DoubleToStr(Fractals.Upper,Digits);
mFractals[j][2]=1;
j++;
}
if(j>3) break;
}
if(StrToDouble(mFractals[0][2])==-1 && StrToDouble(mFractals[1][2])==1 && StrToDouble(mFractals[2][2])==-1) {
if(TF==0) {
if(QntPitchfork.Upper.LowerTF<nPitchfork.Upper.LowerTF) { // ???-?? ??? ?? ?????????, ?????? ????? ????
ObjectCreate("Pitchfork.Upper.LowerTF"+QntPitchfork.Upper.LowerTF, OBJ_PITCHFORK, 0,
StrToTime(mFractals[2][0]), StrToDouble(mFractals[2][1]),
StrToTime(mFractals[1][0]), StrToDouble(mFractals[1][1]),
StrToTime(mFractals[0][0]), StrToDouble(mFractals[0][1]));
ObjectSet("Pitchfork.Upper.LowerTF"+QntPitchfork.Upper.LowerTF,OBJPROP_COLOR,Tomato);
ObjectSet("Pitchfork.Upper.LowerTF"+QntPitchfork.Upper.LowerTF,OBJPROP_STYLE,STYLE_DASH);
QntPitchfork.Upper.LowerTF++;
}
if(QntPitchfork.Upper.LowerTF>=nPitchfork.Upper.LowerTF) { // ???-?? ??? ?????????, ???????? ????????? ?????? ???
for (i=0; i<=QntPitchfork.Upper.LowerTF-2; i++) {
ObjectSet("Pitchfork.Upper.LowerTF"+i,OBJPROP_TIME1,ObjectGet("Pitchfork.Upper.LowerTF"+(i+1),OBJPROP_TIME1));
ObjectSet("Pitchfork.Upper.LowerTF"+i,OBJPROP_PRICE1,ObjectGet("Pitchfork.Upper.LowerTF"+(i+1),OBJPROP_PRICE1));
ObjectSet("Pitchfork.Upper.LowerTF"+i,OBJPROP_TIME2,ObjectGet("Pitchfork.Upper.LowerTF"+(i+1),OBJPROP_TIME2));
ObjectSet("Pitchfork.Upper.LowerTF"+i,OBJPROP_PRICE2,ObjectGet("Pitchfork.Upper.LowerTF"+(i+1),OBJPROP_PRICE2));
ObjectSet("Pitchfork.Upper.LowerTF"+i,OBJPROP_TIME3,ObjectGet("Pitchfork.Upper.LowerTF"+(i+1),OBJPROP_TIME3));
ObjectSet("Pitchfork.Upper.LowerTF"+i,OBJPROP_PRICE3,ObjectGet("Pitchfork.Upper.LowerTF"+(i+1),OBJPROP_PRICE3));
}
ObjectSet("Pitchfork.Upper.LowerTF"+(QntPitchfork.Upper.LowerTF-1),OBJPROP_TIME1,StrToTime(mFractals[2][0]));
ObjectSet("Pitchfork.Upper.LowerTF"+(QntPitchfork.Upper.LowerTF-1),OBJPROP_PRICE1,StrToDouble(mFractals[2][1]));
ObjectSet("Pitchfork.Upper.LowerTF"+(QntPitchfork.Upper.LowerTF-1),OBJPROP_TIME2,StrToTime(mFractals[1][0]));
OПоказано первые 50% кода (символов: 14964)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.