0
Views
0
Downloads
0
Favorites
MMLevls_VG
//+------------------------------------------------------------------+
//| MMLevls_VG.mq4 |
//| Copyright © 2006, Vladislav Goshkov (VG). |
//| 4vg@mail.ru |
//| Many thanks to Tim Kruzel |
//+------------------------------------------------------------------+
#property copyright "Vladislav Goshkov (VG)."
#property link "4vg@mail.ru"
//----
#property indicator_chart_window
// ============================================================================================
// * Ëèíèè 8/8 è 0/8 (Îêîí÷àòåëüíîå ñîïðîòèâëåíèå).
// * Ýòè ëèíèè ñàìûå ñèëüíûå è îêàçûâàþò ñèëüíåéøèå ñîïðîòèâëåíèÿ è ïîääåðæêó.
// ============================================================================================
//* Ëèíèÿ 7/8 (Ñëàáàÿ, ìåñòî äëÿ îñòàíîâêè è ðàçâîðîòà). Weak, Stall and Reverse
//* Ýòà ëèíèÿ ñëàáà. Åñëè öåíà çàøëà ñëèøêîì äàëåêî è ñëèøêîì áûñòðî è åñëè îíà îñòàíîâèëàñü îêîëî ýòîé ëèíèè,
//* çíà÷èò îíà ðàçâåðíåòñÿ áûñòðî âíèç. Åñëè öåíà íå îñòàíîâèëàñü îêîëî ýòîé ëèíèè, îíà ïðîäîëæèò äâèæåíèå ââåðõ ê 8/8.
// ============================================================================================
//* Ëèíèÿ 1/8 (Ñëàáàÿ, ìåñòî äëÿ îñòàíîâêè è ðàçâîðîòà). Weak, Stall and Reverse
//* Ýòà ëèíèÿ ñëàáà. Åñëè öåíà çàøëà ñëèøêîì äàëåêî è ñëèøêîì áûñòðî è åñëè îíà îñòàíîâèëàñü îêîëî ýòîé ëèíèè,
//* çíà÷èò îíà ðàçâåðíåòñÿ áûñòðî ââåðõ. Åñëè öåíà íå îñòàíîâèëàñü îêîëî ýòîé ëèíèè, îíà ïðîäîëæèò äâèæåíèå âíèç ê 0/8.
// ============================================================================================
//* Ëèíèè 6/8 è 2/8 (Âðàùåíèå, ðàçâîðîò). Pivot, Reverse
//* Ýòè äâå ëèíèè óñòóïàþò â ñâîåé ñèëå òîëüêî 4/8 â ñâîåé ñïîñîáíîñòè ïîëíîñòüþ ðàçâåðíóòü öåíîâîå äâèæåíèå.
// ============================================================================================
//* Ëèíèÿ 5/8 (Âåðõ òîðãîâîãî äèàïàçîíà). Top of Trading Range
//* Öåíû âñåõ ðûíêîâ òðàòÿò 40% âðåìåíè, íà äâèæåíèå ìåæäó 5/8 è 3/8 ëèíèÿìè.
//* Åñëè öåíà äâèãàåòñÿ îêîëî ëèíèè 5/8 è îñòàåòñÿ îêîëî íåå â òå÷åíèè 10-12 äíåé, ðûíîê ñêàçàë ÷òî ñëåäóåò
//* ïðîäàâàòü â ýòîé «ïðåìèàëüíîé çîíå», ÷òî è äåëàþò íåêîòîðûå ëþäè, íî åñëè öåíà ñîõðàíÿåò òåíäåíöèþ îñòàâàòüñÿ
//* âûøå 5/8, òî îíà è îñòàíåòñÿ âûøå íåå. Åñëè, îäíàêî, öåíà ïàäàåò íèæå 5/8, òî îíà ñêîðåå âñåãî ïðîäîëæèò
//* ïàäàòü äàëåå äî ñëåäóþùåãî óðîâíÿ ñîïðîòèâëåíèÿ.
// ============================================================================================
//* Ëèíèÿ 3/8 (Äíî òîðãîâîãî äèàïàçîíà). Bottom of Trading Range
//* Åñëè öåíû íèæå ýòîé ëèíè è äâèãàþòñÿ ââåðõ, òî öåíå áóäåò ñëîæíî ïðîáèòü ýòîò óðîâåíü.
//* Åñëè ïðîáèâàþò ââåðõ ýòó ëèíèþ è îñòàþòñÿ âûøå íåå â òå÷åíèè 10-12 äíåé, çíà÷èò öåíû îñòàíóòñÿ âûøå ýòîé ëèíèè
//* è ïîòðàòÿò 40% âðåìåíè äâèãàÿñü ìåæäó ýòîé ëèíèåé è 5/8 ëèíèåé.
// ============================================================================================
//* Ëèíèÿ 4/8 (Ãëàâíàÿ ëèíèÿ ñîïðîòèâëåíèÿ/ïîääåðæêè). Major Support/Resistance
//* Ýòà ëèíèÿ îáåñïå÷èâàåò íàèáîëüøåå ñîïðîòèâëåíèå/ïîääåðæêó. Ýòîò óðîâåíü ÿâëÿåòñÿ ëó÷øèì äëÿ íîâîé ïîêóïêè èëè ïðîäàæè.
//* Åñëè öåíà íàõîäèòñÿ âûøå 4/8, òî ýòî ñèëüíûé óðîâåíü ïîääåðæêè. Åñëè öåíà íàõîäèòñÿ íèæå 4/8, òî ýòî ïðåêðàñíûé óðîâåíü
//* ñîïðîòèâëåíèÿ.
// ============================================================================================
extern int P=90;
extern int MMPeriod=1440;
extern int StepBack=0;
//----
extern color mml_clr_m_2_8=White; // [-2]/8
extern color mml_clr_m_1_8=White; // [-1]/8
extern color mml_clr_0_8 =Aqua; // [0]/8
extern color mml_clr_1_8 =Yellow; // [1]/8
extern color mml_clr_2_8 =Red; // [2]/8
extern color mml_clr_3_8 =Green; // [3]/8
extern color mml_clr_4_8 =Blue; // [4]/8
extern color mml_clr_5_8 =Green; // [5]/8
extern color mml_clr_6_8 =Red; // [6]/8
extern color mml_clr_7_8 =Yellow; // [7]/8
extern color mml_clr_8_8 =Aqua; // [8]/8
extern color mml_clr_p_1_8=White; // [+1]/8
extern color mml_clr_p_2_8=White; // [+2]/8
extern int mml_wdth_m_2_8=2; // [-2]/8
extern int mml_wdth_m_1_8=1; // [-1]/8
extern int mml_wdth_0_8 =2; // [0]/8
extern int mml_wdth_1_8 =1; // [1]/8
extern int mml_wdth_2_8 =1; // [2]/8
extern int mml_wdth_3_8 =1; // [3]/8
extern int mml_wdth_4_8 =2; // [4]/8
extern int mml_wdth_5_8 =1; // [5]/8
extern int mml_wdth_6_8 =1; // [6]/8
extern int mml_wdth_7_8 =1; // [7]/8
extern int mml_wdth_8_8 =2; // [8]/8
extern int mml_wdth_p_1_8=1; // [+1]/8
extern int mml_wdth_p_2_8=2; // [+2]/8
extern color MarkColor =Blue;
extern int MarkNumber =217;
//----
double dmml=0,
dvtl=0,
sum =0,
v1=0,
v2=0,
mn=0,
mx=0,
x1=0,
x2=0,
x3=0,
x4=0,
x5=0,
x6=0,
y1=0,
y2=0,
y3=0,
y4=0,
y5=0,
y6=0,
octave=0,
fractal=0,
range =0,
finalH =0,
finalL =0,
mml[13];
string ln_txt[13],
buff_str="";
int
bn_v1 =0,
bn_v2 =0,
OctLinesCnt=13,
mml_thk=8,
mml_clr[13],
mml_wdth[13],
mml_shft=35,
nTime=0,
CurPeriod=0,
nDigits=0,
i=0;
int NewPeriod=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
if(MMPeriod>0)
NewPeriod =P*MathCeil(MMPeriod/Period());
else NewPeriod=P;
//----
ln_txt[0] ="[-2/8]P";// "extremely overshoot [-2/8]";// [-2/8]
ln_txt[1] ="[-1/8]P";// "overshoot [-1/8]";// [-1/8]
ln_txt[2] ="[0/8]P";// "Ultimate Support - extremely oversold [0/8]";// [0/8]
ln_txt[3] ="[1/8]P";// "Weak, Stall and Reverse - [1/8]";// [1/8]
ln_txt[4] ="[2/8]P";// "Pivot, Reverse - major [2/8]";// [2/8]
ln_txt[5] ="[3/8]P";// "Bottom of Trading Range - [3/8], if 10-12 bars then 40% Time. BUY Premium Zone";//[3/8]
ln_txt[6] ="[4/8]P";// "Major Support/Resistance Pivotal Point [4/8]- Best New BUY or SELL level";// [4/8]
ln_txt[7] ="[5/8]P";// "Top of Trading Range - [5/8], if 10-12 bars then 40% Time. SELL Premium Zone";//[5/8]
ln_txt[8] ="[6/8]P";// "Pivot, Reverse - major [6/8]";// [6/8]
ln_txt[9] ="[7/8]P";// "Weak, Stall and Reverse - [7/8]";// [7/8]
ln_txt[10]="[8/8]P";// "Ultimate Resistance - extremely overbought [8/8]";// [8/8]
ln_txt[11]="[+1/8]P";// "overshoot [+1/8]";// [+1/8]
ln_txt[12]="[+2/8]P";// "extremely overshoot [+2/8]";// [+2/8]
//mml_shft = 3;
mml_thk =3;
// Íà÷àëüíàÿ óñòàíîâêà öâåòîâ óðîâíåé îêòàâ è òîëùèíû ëèíèé
mml_clr[0] =mml_clr_m_2_8; mml_wdth[0]=mml_wdth_m_2_8; // [-2]/8
mml_clr[1] =mml_clr_m_1_8; mml_wdth[1]=mml_wdth_m_1_8; // [-1]/8
mml_clr[2] =mml_clr_0_8; mml_wdth[2]=mml_wdth_0_8; // [0]/8
mml_clr[3] =mml_clr_1_8; mml_wdth[3]=mml_wdth_1_8; // [1]/8
mml_clr[4] =mml_clr_2_8; mml_wdth[4]=mml_wdth_2_8; // [2]/8
mml_clr[5] =mml_clr_3_8; mml_wdth[5]=mml_wdth_3_8; // [3]/8
mml_clr[6] =mml_clr_4_8; mml_wdth[6]=mml_wdth_4_8; // [4]/8
mml_clr[7] =mml_clr_5_8; mml_wdth[7]=mml_wdth_5_8; // [5]/8
mml_clr[8] =mml_clr_6_8; mml_wdth[8]=mml_wdth_6_8; // [6]/8
mml_clr[9] =mml_clr_7_8; mml_wdth[9]=mml_wdth_7_8; // [7]/8
mml_clr[10]=mml_clr_8_8; mml_wdth[10]= mml_wdth_8_8; // [8]/8
mml_clr[11]=mml_clr_p_1_8; mml_wdth[11]= mml_wdth_p_1_8; // [+1]/8
mml_clr[12]=mml_clr_p_2_8; mml_wdth[12]= mml_wdth_p_2_8; // [+2]/8
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
Comment(" ");
for(i=0;i<OctLinesCnt;i++)
{
buff_str="mml"+i;
ObjectDelete(buff_str);
buff_str="mml_txt"+i;
ObjectDelete(buff_str);
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//---- TODO: add your code here
if((nTime!=Time[0]) || (CurPeriod!=Period())){
//price
Print("MMLevls : NewPeriod = ",NewPeriod);
bn_v1=Lowest(NULL,0,MODE_LOW,NewPeriod,StepBack);
bn_v2=Highest(NULL,0,MODE_HIGH,NewPeriod,StepBack);
v1=Low[bn_v1];
v2=High[bn_v2];
//determine fractal.....
if(v2<=250000 && v2>25000 )
fractal=100000;
else
if(v2<=25000 && v2>2500 )
fractal=10000;
else
if(v2<=2500 && v2>250 )
fractal=1000;
else
if(v2<=250 && v2>25 )
fractal=100;
else
if(v2<=25 && v2>12.5 )
fractal=12.5;
else
if(v2<=12.5 && v2>6.25)
fractal=12.5;
else
if(v2<=6.25 && v2>3.125 )
fractal=6.25;
else
if(v2<=3.125 && v2>1.5625 )
fractal=3.125;
else
if(v2<=1.5625 && v2>0.390625 )
fractal=1.5625;
else
if(v2<=0.390625 && v2>0)
fractal=0.1953125;
range=(v2-v1);
sum=MathFloor(MathLog(fractal/range)/MathLog(2));
octave=fractal*(MathPow(0.5,sum));
mn=MathFloor(v1/octave)*octave;
if((mn+octave)>v2 )
mx=mn+octave;
else
mx=mn+(2*octave);
// calculating xx
//x2
if((v1>=(3*(mx-mn)/16+mn)) && (v2<=(9*(mx-mn)/16+mn)) )
x2=mn+(mx-mn)/2;
else x2=0;
//x1
if((v1>=(mn-(mx-mn)/8))&& (v2<=(5*(mx-mn)/8+mn)) && (x2==0) )
x1=mn+(mx-mn)/2;
else x1=0;
//x4
if((v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)) )
x4=mn+3*(mx-mn)/4;
else x4=0;
//x5
if((v1>=(mn+3*(mx-mn)/8))&& (v2<=(9*(mx-mn)/8+mn))&& (x4==0) )
x5=mx;
else x5=0;
//x3
if((v1>=(mn+(mx-mn)/8))&& (v2<=(7*(mx-mn)/8+mn))&& (x1==0) && (x2==0) && (x4==0) && (x5==0) )
x3=mn+3*(mx-mn)/4;
else x3=0;
//x6
if((x1+x2+x3+x4+x5) ==0 )
x6=mx;
else x6=0;
finalH=x1+x2+x3+x4+x5+x6;
// calculating yy
//y1
if(x1>0 )
y1=mn;
else y1=0;
//y2
if(x2>0 )
y2=mn+(mx-mn)/4;
else y2=0;
//y3
if(x3>0 )
y3=mn+(mx-mn)/4;
else y3=0;
//y4
if(x4>0 )
y4=mn+(mx-mn)/2;
else y4=0;
//y5
if(x5>0 )
y5=mn+(mx-mn)/2;
else y5=0;
//y6
if((finalH>0) && ((y1+y2+y3+y4+y5)==0) )
y6=mn;
else y6=0;
//----
finalL=y1+y2+y3+y4+y5+y6;
for( i=0; i<OctLinesCnt; i++)
{
mml[i]=0;
}
dmml=(finalH-finalL)/8;
Print("MMLevls : NewPeriod = ",NewPeriod," dmml = ",dmml," finalL = ",finalL);
mml[0] =(finalL-dmml*2); //-2/8
for( i=1; i<OctLinesCnt; i++)
{
mml[i]=mml[i-1] + dmml;
}
for( i=0; i<OctLinesCnt; i++ )
{
buff_str="mml"+i;
if(ObjectFind(buff_str)==-1)
{
ObjectCreate(buff_str, OBJ_HLINE, 0, Time[0], mml[i]);
ObjectSet(buff_str, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(buff_str, OBJPROP_COLOR, mml_clr[i]);
ObjectSet(buff_str, OBJPROP_WIDTH, mml_wdth[i]);
ObjectMove(buff_str, 0, Time[0], mml[i]);
}
else
{
ObjectMove(buff_str, 0, Time[0], mml[i]);
}
buff_str="mml_txt"+i;
if(ObjectFind(buff_str)==-1)
{
ObjectCreate(buff_str, OBJ_TEXT, 0, Time[mml_shft], mml_shft);
ObjectSetText(buff_str, ln_txt[i], 8, "Arial", mml_clr[i]);
ObjectMove(buff_str, 0, Time[mml_shft], mml[i]);
}
else
{
ObjectMove(buff_str, 0, Time[mml_shft], mml[i]);
}
} // for( i=1; i<=OctLinesCnt; i++ ){
nTime =Time[0];
CurPeriod= Period();
//----
string buff_str="LR_LatestCulcBar";
if(ObjectFind(buff_str)==-1)
{
ObjectCreate(buff_str, OBJ_ARROW,0, Time[StepBack], Low[StepBack]-2*Point );
ObjectSet(buff_str, OBJPROP_ARROWCODE, MarkNumber);
ObjectSet(buff_str, OBJPROP_COLOR, MarkColor);
}
else
{
ObjectMove(buff_str, 0, Time[StepBack], Low[StepBack]-2*Point );
}
}
//---- End Of Program
return(0);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---