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

Система vaz321 для тф H1, H4.


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

  • Ответов 814
  • Создана
  • Последний ответ

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

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

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

У меня такая же херня... Ты закрылся Dehash?

 

 

Нет, у меня СЛ стоит, само закроется. Не понравилось мне от середины канала открываться...

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

Всем доброго времени....перечитал все ваши ветки (может пропустил, может по линке не перешол), но не могу я найти эту сетку с магическими циферками....дайте пожалуйста линк, если не трудно!

За ранее благодарен.

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

Всем доброго времени....перечитал все ваши ветки (может пропустил, может по линке не перешол), но не могу я найти эту сетку с магическими циферками....дайте пожалуйста линк, если не трудно!

За ранее благодарен.

 

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

//|ZigZag с чилами Песавенто |

//|----------------------------------------------------------------------+ |

//|ExtHidden - 0 - все линии скрыты. Обычный ZigZag. |

//| 1 - показывает все линии между фракталами, у которых |

//| процент восстановления >0.21 и <5. |

//| 2 - показывает только те линии, где процент восстано- |

//| вления равен числам Песавенто (и 0.866 для постро- |

//| ения паттернов Gartley) |

//| 3 - показывает числа, перечисленные в пункте 2 |

//| и соответствующие линии |

//| 4 - показывает числа не Песавенто и соответствующие линии |

//| |

//| |

//|ExtFractal - количество фракталов (максимумов, минимумов), |

//| от которых идут линии к другим фракталам |

//| |

//|ExtFractalNext - количество фракталов, к которым идут линии |

//| не реализовано |

//| |

//|ExtDeltaType - true - расчет допуска (%-число Песавенто)<ExtDelta |

//| false - ((%-число Песавенто)/число Песавенто)<ExtDelta | |

//| |

//|ExtDelta - (допуск) отклонение в расчете. Задает величину |

//| потенциальной разворотной зоны. |

//| |

//| |

//| |

//| |

//| |

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

#property copyright "nen@.....ru"

#property link "http://onix-trade.net/forum/index.php?act=post&do=reply_post&f=9&t=118"

 

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 Red

//---- indicator parameters

extern int ExtDepth=12;

extern int ExtHidden=1;

extern int ExtFractal=15;

//extern int ExtFractalNext=2;

extern double ExtDelta=0.04;

extern bool ExtDeltaType=true;

extern color ExtLine=DarkBlue;

extern color ExtPesavento=Yellow;

extern color ExtGartley866=GreenYellow;

extern color ExtNotFibo=SlateGray;

extern int ExtDeviation=5;

extern int ExtBackstep=3;

 

//---- indicator buffers

// Массив для отрисовки ZigZag

double zz[];

// Массив минимумов черновой

double ExtMapBuffer[];

// Массив максимумов черновой

double ExtMapBuffer2[];

 

// Массив чисел Песавенто (Фибы и модифицированные Фибы)

double fi[]={0.382, 0.5, 0.618, 0.707, 0.786, 0.841, 0.886, 1.0, 1.128, 1.272, 1.414, 1.5, 1.618, 2.0, 2.414, 2.618, 4.0};

string fitxt[]={ ".382", "0.5", ".618", ".707", ".786", ".841", ".886", "1.0", "1.128", "1.272", "1.414", "1.5", "1.618", "2.0", "2.414", "2.618", "4.0" };

double HL,HLp,kk,kj,Angle;

// LowPrim,HighPrim,LowLast,HighLast - значения минимумов и максимумов баров

double LowPrim,HighPrim,LowLast,HighLast;

// numLowPrim,numHighPrim,numLowLast,numHighLast -номера баров

int numLowPrim,numHighPrim,numLowLast,numHighLast,k,k1,k2,ki,countLow1,countHigh1,shift;

// Время свечи с первым от нулевого бара фракталом

int timeFr1,timeFr1new;

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

int countLineFr1;

// Счетчик фракталов

int countFr;

// Бар, до которого надо пересчитывать от нулевого бара

int numBar=0;

// Номер объекта

int numOb;

//Mаксимум или минимум бара первого фрактала

double hFr1, lFr1;

// Флаги

// flagFrNew=true - образовался новый фрактал или первый фрактал сместился на другой бар. =false - по умолчанию.

// flagFr=true - последний фрактал максимум. false - последний фрактал минимум.

bool flagLow,flagHigh,flagFr,flagFrNew=false;

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

//| Custom indicator initialization function |

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

int init()

{

IndicatorBuffers(5);

//---- drawing settings

SetIndexStyle(0,DRAW_SECTION);

//---- indicator buffers mapping

SetIndexBuffer(0,zz);

SetIndexBuffer(1,ExtMapBuffer);

SetIndexBuffer(2,ExtMapBuffer2);

// SetIndexBuffer(3,aLow);

// SetIndexBuffer(4,aHigh);

SetIndexEmptyValue(0,0.0);

ArraySetAsSeries(zz,true);

ArraySetAsSeries(ExtMapBuffer,true);

ArraySetAsSeries(ExtMapBuffer2,true);

//---- indicator short name

IndicatorShortName("ZZ("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")");

//---- initialization done

return(0);

}

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

//| Деинициализация. Удаление всех трендовых линий и текстовых объектов

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

int deinit(){ ObjectsDeleteAll(0,2); ObjectsDeleteAll(0,21); return(0);}

//********************************************************

int start()

{

int counted_bars=IndicatorCounted();

 

if( counted_bars<0 )

{

Alert("Сбой расчета индикатора");

return(-1);

}

 

int shift, back,lasthighpos,lastlowpos;

double val,res;

double curlow,curhigh,lasthigh,lastlow;

 

for(shift=Bars-ExtDepth; shift>=0; shift--)

{

val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)];

if(val==lastlow) val=0.0;

else

{

lastlow=val;

if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;

else

{

for(back=1; back<=ExtBackstep; back++)

{

res=ExtMapBuffer[shift+back];

if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0;

}

}

}

ExtMapBuffer[shift]=val;

//--- high

val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)];

if(val==lasthigh) val=0.0;

else

{

lasthigh=val;

if((val-High[shift])>(ExtDeviation*Point)) val=0.0;

else

{

for(back=1; back<=ExtBackstep; back++)

{

res=ExtMapBuffer2[shift+back];

if((res!=0)&&(res<val)) ExtMapBuffer2[shift+back]=0.0;

}

}

}

ExtMapBuffer2[shift]=val;

}

 

// final cutting

lasthigh=-1; lasthighpos=-1;

lastlow=-1; lastlowpos=-1;

 

for(shift=Bars-ExtDepth; shift>=0; shift--)

{

curlow=ExtMapBuffer[shift];

curhigh=ExtMapBuffer2[shift];

if((curlow==0)&&(curhigh==0)) continue;

//---

if(curhigh!=0)

{

if(lasthigh>0)

{

if(lasthigh<curhigh) ExtMapBuffer2[lasthighpos]=0;

else ExtMapBuffer2[shift]=0;

}

//---

if(lasthigh<curhigh || lasthigh<0)

{

lasthigh=curhigh;

lasthighpos=shift;

}

lastlow=-1;

}

//----

if(curlow!=0)

{

if(lastlow>0)

{

if(lastlow>curlow) ExtMapBuffer[lastlowpos]=0;

else ExtMapBuffer[shift]=0;

}

//---

if((curlow<lastlow)||(lastlow<0))

{

lastlow=curlow;

lastlowpos=shift;

}

lasthigh=-1;

}

}

 

countLow1=0;

countHigh1=0;

 

for(shift=Bars-1; shift>=0; shift--)

{

zz[shift]=ExtMapBuffer[shift];

if(shift>=Bars-ExtDepth) {ExtMapBuffer2[shift]=0.0;ExtMapBuffer[shift]=0.0; zz[shift]=0.0;}

else

{

res=ExtMapBuffer2[shift];

if(res!=0.0) zz[shift]=res;

}

if (ExtMapBuffer[shift]>0.0) {countLow1++;}

if (ExtMapBuffer2[shift]>0.0) {countHigh1++;}

}

 

if (flagFrNew)

{

countLow1=0;

countHigh1=0;

for(shift=0; shift<=numBar; shift++)

{

if (ExtMapBuffer[shift]>0.0) {countLow1++;}

if (ExtMapBuffer2[shift]>0.0) {countHigh1++;}

}

counted_bars=3;

}

 

if (Bars - counted_bars>2)

{

for (shift=0; shift<Bars; shift++) // Поиск времени бара первого фрактала, считая от нулевого бара

{

if (zz[shift]>0.0)

{

timeFr1=Time[shift];

if (ExtMapBuffer[shift]==zz[shift]) {lFr1=Low[shift]; hFr1=0.0;}

if (ExtMapBuffer2[shift]==zz[shift]) {hFr1=High[shift]; lFr1=0.0;}

 

break;

}

}

 

 

//-----------1 Отрисовка максимумов. Начало.

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

//| Вывод соединяющих линий и чисел Песавенто и 0.866 для максимумов ZigZag-a

//| Отрисовка идет от нулевого бара

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

 

numLowPrim=0; numLowLast=0;

numHighPrim=0; numHighLast=0;

 

LowPrim=0.0; LowLast=0.0;

HighPrim=0.0; HighLast=0.0;

 

flagHigh=false;

Angle=-100;

 

countFr=ExtFractal;

 

for (k=0; (k<Bars-1 && countHigh1>0 && countFr>0); k++)

{

if (ExtMapBuffer[k]>0.0 && LowPrim==0.0 && HighPrim>0 && ExtMapBuffer[k]==zz[k]) {LowPrim=ExtMapBuffer[k]; numLowPrim=k;}

if (ExtMapBuffer[k]>0.0 && ExtMapBuffer[k]<LowPrim && HighPrim>0 && ExtMapBuffer[k]==zz[k]) {LowPrim=ExtMapBuffer[k]; numLowPrim=k;}

if (ExtMapBuffer2[k]>0.0 && ExtMapBuffer2[k]==zz[k])

{

if (HighPrim>0)

{

if (HighLast>0)

{

if (flagHigh)

{

if (ExtMapBuffer2[k]>HighLast) {HighLast=High[k]; numHighLast=k;}

}

else

{

if (ExtMapBuffer2[k]>HighPrim) flagHigh=true;

HighLast=High[k];

numHighLast=k;

}

}

else {numHighLast=k; HighLast=High[k];}

 

HL=High[numHighLast]-Low[numLowPrim];

kj=(HighPrim-HighLast)*10000/(numHighLast-numHighPrim);

if (HL>0 && (Angle>kj || Angle==-100)) // Проверка угла наклона линии

{

Angle=kj;

// Создание линии и текстового объекта

HLp=High[numHighPrim]-Low[numLowPrim];

k1=MathCeil((numHighPrim+numHighLast)/2);

kj=HLp/HL;

 

if (kj>0.21 && kj<=5)

{

// Создание текстового объекта (числа Песавенто). % восстановления между максимумами

kk=kj;

k2=1;

if (ExtDeltaType)

for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

else

for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

 

if (k2<0)

// процент восстановления числа Песавенто и 0.866

{

if (ExtHidden!=4 && ExtHidden>0)

{

ObjectCreate("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TEXT,0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));

if (kk==0.886) // Gartley

ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial", ExtGartley866);

else

ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial",ExtPesavento);

}

}

else

// процент восстановления (не Песавенто и 0.866)

{

if (ExtHidden==1 || ExtHidden==4)

{

ObjectCreate("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TEXT,0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));

ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);

}

}

if ((ExtHidden==2 && k2<0) || (ExtHidden!=0 && ExtHidden!=2))

{

ObjectCreate("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TREND,0,Time[numHighPrim],High[numHighPrim],Time[numHighLast],High[numHighLast]);

ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_RAY,false);

ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_STYLE,STYLE_DOT);

ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_COLOR,ExtLine);

}

}

}

}

else

{numHighPrim=k; HighPrim=High[k];}

}

// Переход на следующий фрактал

if (k>Bars-3)

{

k=numHighPrim+1; countHigh1--; countFr--;

 

numLowPrim=0; numLowLast=0;

numHighPrim=0; numHighLast=0;

 

LowPrim=0.0; LowLast=0.0;

HighPrim=0.0; HighLast=0.0;

 

flagHigh=false;

Angle=-100;

}

}

//-----------1 Отрисовка максимумов. Конец.

 

//-----------2 Отрисовка минимумов. Начало.

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

//| Вывод соединяющих линий и чисел Песавенто и 0.866 для минимумов ZigZag-a

//| Отрисовка идет от нулевого бара

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

 

numLowPrim=0; numLowLast=0;

numHighPrim=0; numHighLast=0;

 

LowPrim=0.0; LowLast=0.0;

HighPrim=0.0; HighLast=0.0;

 

flagLow=false;

Angle=-100;

 

if (flagFrNew) countFr=1;

else countFr=ExtFractal;

 

for (k=0; (k<Bars && countLow1>0 && countFr>0); k++)

{

if (ExtMapBuffer2[k]>HighPrim && LowPrim>0) {HighPrim=High[k]; numHighPrim=k;}

if (ExtMapBuffer[k]>0.0 && ExtMapBuffer[k]==zz[k])

{

if (LowPrim>0)

{

if (LowLast>0)

{

if (flagLow)

{

if (ExtMapBuffer[k]<LowLast) {LowLast=Low[k]; numLowLast=k;}

}

else

{

if (ExtMapBuffer[k]<LowPrim) flagLow=true;

LowLast=Low[k];

numLowLast=k;

}

}

else {numLowLast=k; LowLast=Low[k];}

// вывод соединяющих линий и процентов восстановления(чисел Песавенто)

HL=High[numHighPrim]-Low[numLowLast];

kj=(LowPrim-LowLast)*1000/(numLowLast-numLowPrim);

if (HL>0 && (Angle<kj || Angle==-100)) // Проверка угла наклона линии

{

Angle=kj;

 

HLp=High[numHighPrim]-Low[numLowPrim];

k1=MathCeil((numLowPrim+numLowLast)/2);

kj=HLp/HL;

 

if (kj>0.21 && kj<=5)

{

// Создание текстового объекта (числа Песавенто). % восстановления между минимумами

kk=kj;

k2=1;

if (ExtDeltaType)

for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

else

for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

if (k2<0)

// процент восстановления числа Песавенто и 0.866

{

if (ExtHidden!=4 && ExtHidden>0)

{

ObjectCreate("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TEXT,0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));

if (kk==0.886) // Gartley

ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial", ExtGartley866);

else

ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial",ExtPesavento);

}

}

else

// процент восстановления (не Песавенто и 0.866)

{

if (ExtHidden==1 || ExtHidden==4)

ObjectCreate("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TEXT,0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));

ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);

}

if ((ExtHidden==2 && k2<0) || (ExtHidden!=0 && ExtHidden!=2))

{

ObjectCreate("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TREND,0,Time[numLowPrim],Low[numLowPrim],Time[numLowLast],Low[numLowLast]);

ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_RAY,false);

ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_STYLE,STYLE_DOT);

ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_COLOR,ExtLine);

}

}

}

}

else {numLowPrim=k; LowPrim=Low[k];}

}

// Переход на следующий фрактал

if (k>Bars-3)

{

k=numLowPrim+1; countLow1--; countFr--;

 

numLowPrim=0; numLowLast=0;

numHighPrim=0; numHighLast=0;

 

LowPrim=0.0; LowLast=0.0;

HighPrim=0.0; HighLast=0.0;

 

flagLow=false;

Angle=-100;

}

}

 

flagFrNew=false;

numBar=0;

//-----------2 Отрисовка минимумов. Конец.

}

else // counted_bars<=2 Проверка смещений фракталов.

// Коррекция соединяющих линий и чисел. Начало.

 

{

 

// Поиск времени бара первого фрактала, считая от нулевого бара

for (shift=0; shift<Bars; shift++)

{

if (zz[shift]>0.0)

{

timeFr1new=Time[shift];

break;

}

}

// Поиск бара, на котором был последний фрактал

shift=iBarShift(Symbol(),Period(),timeFr1);

// Сравнение текущего значения фрактала с тем, который был ранее

 

 

// Образовался новый фрактал

if (timeFr1new!=timeFr1)

{

flagFrNew=true;

numBar=shift;

}

// Фрактал на максимуме сдвинулся на другой бар

if (hFr1>0 && zz[shift]==0.0)

{

flagFrNew=true;

numBar=shift;

numHighPrim=shift; numHighLast=0;HighLast=0.0;

for (k=shift+1; k<Bars; k++)

{

if (ExtMapBuffer2[k]>HighLast)

{

HighLast=High[k]; numHighLast=k;

numOb=ObjectFind("ph" + Time[numHighPrim] + "_" + Time[numHighLast]);

//if (numOb>-1) Print ("MAX_numOb>-1=",numOb);

if (numOb>-1)

{

numOb=ObjectDelete("ph" + Time[numHighPrim] + "_" + Time[numHighLast]);

//Print ("MAX_удалено numOb>-1=",numOb);

 

ObjectDelete("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast]);

}

}

 

}

}

// Фрактал на минимуме сдвинулся на другой бар

if (lFr1>0 && zz[shift]==0.0)

{

flagFrNew=true;

numBar=shift;

flagFrNew=true;

numBar=shift;

numLowPrim=shift; numLowLast=0;LowLast=10000000;

for (k=shift+1; k<Bars; k++)

{

if (ExtMapBuffer[k]<LowLast)

{

LowLast=Low[k]; numLowLast=k;

numOb=ObjectFind("pl" + Time[numLowPrim] + "_" + Time[numLowLast]);

//if (numOb>-1) Print ("MIN_numOb>-1=",numOb);

if (numOb>-1)

{

numOb=ObjectDelete("pl" + Time[numLowPrim] + "_" + Time[numLowLast]);

//Print ("MIN_удалено numOb>-1=",numOb);

ObjectDelete("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast]);

}

}

 

}

}

 

 

//-----------3 Сместился минимум или максимум, но остался на том же баре. Начало.

 

//============= 1 сместился максимум. Начало.

if (hFr1-High[shift]!=0 && hFr1>0)

{

// Print ("Сместился максимум на том же баре hFr1-High[shift]=",hFr1-High[shift]);

 

numLowPrim=0; numLowLast=0;

numHighPrim=shift; numHighLast=0;

 

LowPrim=0.0; LowLast=0.0;

HighPrim=High[shift]; HighLast=0.0;

 

flagHigh=false;

Angle=-100;

 

for (k=shift+1; k<Bars; k++)

{

 

if (ExtMapBuffer[k]>0.0 && LowPrim==0.0 && ExtMapBuffer[k]==zz[k]) {LowPrim=ExtMapBuffer[k]; numLowPrim=k;}

if (ExtMapBuffer[k]>0.0 && ExtMapBuffer[k]<LowPrim && ExtMapBuffer[k]==zz[k]) {LowPrim=ExtMapBuffer[k]; numLowPrim=k;}

if (ExtMapBuffer2[k]>0.0 && ExtMapBuffer2[k]==zz[k])

{

if (HighLast>0)

{

if (flagHigh)

{

if (ExtMapBuffer2[k]>HighLast) {HighLast=High[k]; numHighLast=k;}

}

else

{

if (ExtMapBuffer2[k]>HighPrim) flagHigh=true;

HighLast=High[k];

numHighLast=k;

}

}

else {numHighLast=k; HighLast=High[k];}

HL=High[numHighLast]-Low[numLowPrim];

kj=(HighPrim-HighLast)*10000/(numHighLast-numHighPrim);

if (HL>0 && (Angle>kj || Angle==-100)) // Проверка угла наклона линии

{

Angle=kj;

// Создание линии

HLp=High[numHighPrim]-Low[numLowPrim];

k1=MathCeil((shift+numHighLast)/2);

kj=HLp/HL;

// Поиск старой соединительной линии

numOb=ObjectFind("ph" + Time[numHighPrim] + "_" + Time[numHighLast]);

if (numOb>-1)

{

if (kj>0.21 && kj<=5)

{

// Перемещение объектов

ObjectMove("ph" + Time[numHighPrim] + "_" + Time[numHighLast],0,Time[numHighPrim],High[numHighPrim]);

ObjectMove("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));

 

// Создание текстового объекта (числа Песавенто). % восстановления между максимумами

kk=kj;

k2=1;

if (ExtDeltaType)

for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

else

for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

if (k2<0)

// процент восстановления число Песавенто

if (ExtHidden!=4 && ExtHidden>0)

{

if (kk==0.886)

ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial", ExtGartley866);

else

ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial",ExtPesavento);

}

else

// процент восстановления (не Песавенто)

if (ExtHidden==1 || ExtHidden==4)

ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);

}

else

{

ObjectDelete("ph" + Time[numHighPrim] + "_" + Time[numHighLast]);

ObjectDelete("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast]);

}

}

else

{

//******* Прорисовка новой линии, если она появилась.

if (kj>0.21 && kj<=5)

{

// Создание текстового объекта (числа Песавенто). % восстановления между максимумами

kk=kj;

k2=1;

if (ExtDeltaType)

for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

else

for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

if (k2<0)

// процент восстановления числа Песавенто и 0.866

{

if (ExtHidden!=4 && ExtHidden>0)

{

ObjectCreate("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TEXT,0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));

if (kk==0.886) // Gartley

ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial", ExtGartley866);

else

ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],fitxt[ki],7,"Arial",ExtPesavento);

}

}

else

// процент восстановления (не Песавенто и 0.866)

{

if (ExtHidden==1 || ExtHidden==4)

{

ObjectCreate("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TEXT,0,Time[k1],MathAbs((High[numHighPrim]+High[numHighLast])/2));

ObjectSetText("phtxt" + Time[numHighPrim] + "_" + Time[numHighLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);

}

}

if ((ExtHidden==2 && k2<0) || (ExtHidden!=0 && ExtHidden!=2))

{

ObjectCreate("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJ_TREND,0,Time[numHighPrim],High[numHighPrim],Time[numHighLast],High[numHighLast]);

ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_RAY,false);

ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_STYLE,STYLE_DOT);

ObjectSet("ph" + Time[numHighPrim] + "_" + Time[numHighLast],OBJPROP_COLOR,ExtLine);

}

}

//*******

}

}

}

}

hFr1=High[shift];

timeFr1=Time[shift];

}

//============= 1 сместился максимум. Конец.

//

//============= 1 сместился минимум. Начало.

if (lFr1-Low[shift]!=0 && lFr1>0)

{

// Print ("Сместился минимум на том же баре lFr1-Low[shift]=",lFr1-Low[shift]);

 

numLowPrim=0; numLowLast=0;

numHighPrim=shift; numHighLast=0;

 

LowPrim=Low[shift]; LowLast=0.0;

HighPrim=0.0; HighLast=0.0;

 

flagLow=false;

Angle=-100;

for (k=shift+1; k<Bars; k++)

{

if (ExtMapBuffer2[k]>HighPrim) {HighPrim=High[k]; numHighPrim=k;}

if (ExtMapBuffer[k]>0.0 && ExtMapBuffer[k]==zz[k])

{

if (LowLast>0)

{

if (flagLow)

{

if (ExtMapBuffer[k]<LowLast) {LowLast=Low[k]; numLowLast=k;}

}

else

{

if (ExtMapBuffer[k]<LowPrim) flagLow=true;

LowLast=Low[k];

numLowLast=k;

}

}

else {numLowLast=k; LowLast=Low[k];}

HL=High[numHighPrim]-Low[numLowLast];

kj=(LowPrim-LowLast)*1000/(numLowLast-numLowPrim);

if (HL>0 && (Angle<kj || Angle==-100)) // Проверка угла наклона линии

{

Angle=kj;

 

HLp=High[numHighPrim]-Low[numLowPrim];

k1=MathCeil((numLowPrim+numLowLast)/2);

kj=HLp/HL;

// Поиск старой соединительной линии

numOb=ObjectFind("pl" + Time[numLowPrim] + "_" + Time[numLowLast]);

if (numOb>-1)

{

if (kj>0.21 && kj<=5)

{

// Перемещение объектов

ObjectMove("pl" + Time[numLowPrim] + "_" + Time[numLowLast],0,Time[numLowPrim],Low[numLowPrim]);

ObjectMove("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));

 

// Создание текстового объекта (числа Песавенто). % восстановления между минимумами

kk=kj;

k2=1;

if (ExtDeltaType)

for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

else

for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

if (k2<0)

// процент восстановления числа Песавенто и 0.866

{

if (ExtHidden!=4 && ExtHidden>0)

{

if (kk==0.886) // Gartley

ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial", ExtGartley866);

else

ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial",ExtPesavento);

}

}

else

// процент восстановления (не Песавенто и 0.866)

if (ExtHidden==1 || ExtHidden==4)

ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);

}

else

{

ObjectDelete("pl" + Time[numLowPrim] + "_" + Time[numLowLast]);

ObjectDelete("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast]);

}

}

else

{

//******* Прорисовка новой линии, если она появилась.

if (kj>0.21 && kj<=5)

{

// Создание текстового объекта (числа Песавенто). % восстановления между минимумами

kk=kj;

k2=1;

if (ExtDeltaType)

for (ki=16;ki>=0;ki--) {if (MathAbs(fi[ki]-kj)<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

else

for (ki=16;ki>=0;ki--) {if (MathAbs((fi[ki]-kj)/fi[ki])<=ExtDelta) {kk=fi[ki]; k2=-1; break;}}

if (k2<0)

// процент восстановления числа Песавенто и 0.866

{

if (ExtHidden!=4 && ExtHidden>0)

{

ObjectCreate("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TEXT,0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));

if (kk==0.886) // Gartley

ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial", ExtGartley866);

else

ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],fitxt[ki],7,"Arial",ExtPesavento);

}

}

else

// процент восстановления (не Песавенто и 0.866)

{

if (ExtHidden==1 || ExtHidden==4)

ObjectCreate("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TEXT,0,Time[k1],MathAbs((Low[numLowPrim]+Low[numLowLast])/2));

ObjectSetText("pltxt" + Time[numLowPrim] + "_" + Time[numLowLast],""+DoubleToStr(kk,2),7,"Arial",ExtNotFibo);

}

if ((ExtHidden==2 && k2<0) || (ExtHidden!=0 && ExtHidden!=2))

{

ObjectCreate("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJ_TREND,0,Time[numLowPrim],Low[numLowPrim],Time[numLowLast],Low[numLowLast]);

ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_RAY,false);

ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_STYLE,STYLE_DOT);

ObjectSet("pl" + Time[numLowPrim] + "_" + Time[numLowLast],OBJPROP_COLOR,ExtLine);

}

}

//*******

}

}

}

}

lFr1=Low[shift];

timeFr1=Time[shift];

}

//============= 1 сместился минимум. Конец.

//-----------3 Сместился минимум или максимум, но остался на том же баре. Конец.

 

 

 

 

// Коррекция. Конец.

}

 

 

// end

}

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

Он есть, но в оригинальной теме (ссылка на тему в первом посте). Но и там её будет трудно найти, так как тема разрослась.
Ссылка на комментарий
Поделиться на другие сайты

Я припоминаю этот код, но действительно его трудно будет найти....если Вас не затруднит, скиньте плиз скомпилированный индикатор (mq4), можно на почту kenzo-x-master()yandex.ru
Ссылка на комментарий
Поделиться на другие сайты

Нда, я проигрался неплохо, самое противное, что пары, которые меня выбросили по стопам, все равно пойдут по сигналам. Теперь не буду входить после коррекций, да и от стопов наверно откажусь.
Ссылка на комментарий
Поделиться на другие сайты

какие не хорошие люди продают AUDCAD ( полный перегруз ... он как с камнем на шее ) Изменено пользователем духLess
Ссылка на комментарий
Поделиться на другие сайты

какие не хорошие люди продают AUDCAD ( полный перегруз ... он как с камнем на шее )

 

И NZDCAD тоже тянет все глубже и глубже!

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


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