You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Drag the script onto the chart with the mouse. The RCH linear regression channel should appear in the place where the mouse is released and a coloured curve should be drawn around it. In the set initial data, I have set the period to be 24 hours and the degree of polynomial m=2, i.e. a parabola. Next, we select the average line of the linear regression channel, and move it. It does not matter how you move it. You can move only one of the outermost points that appeared after selection and the channel will be stretched in time; you can move the centre point and the entire channel will be moved with the length of the previous period remaining unchanged until the period is moved. The polynomial regression curve should be redrawn during shift of the linear regression channel.
On dailies, the period should be set higher than 24 hours, of course.
I think everybody knows how to uninstall the script.
I didn't use Sleep type delays in the loop, so the script goes round and round in a continuous loop and naturally eats resources.
If you want to use this script and your resources are important, you may want to include in the end of while loop the function Sleep( ) 50 - 500, then the load on CPU will be reduced.
Of course, all these problems come from the fact that MT4 developers have bound execution of the indicator part only to the function start ( ), which comes from the incoming quotes. If we had an additional function for working offline, for research purposes, we wouldn't have these problems.
By the way, if developers read this thread, I urge them to think about it. Not always the software will be in such a primitive state as now (Although all is relative, of course).
Thank you very much, I will look into it
ps: i guess i'm not as good at VM as you :))
I agree, I would even say the BIGGEST problem.
HOORAY!!! Turns out it was all about the way the script was run! I was just selecting "Execute on chart" and that's why the error was going on. And when you pull the script with the mouse, everything works! :o) Thanks for the clarification!
At first glance there is no error.
Can the resulting comparison be applied to solve the problem you have set? Why?
Thank you in advance.
It is probably not possible to give an exact answer (at least for me). The task was to get at least two estimates: price (or target zone) and time to reach it (or time to cancel the scenario). By levels I get price levels, and by channels I get related variables: price and time. If one of them is more or less accurate, the other is also obtained with acceptable accuracy. This is to summarise the approach to the solution.
Whether it is possible to formulate it using the approach you suggest - I do not know - I have not tried. Probably you can - I am sure that the approach I used is not the only one and may not be the best.
I cannot answer more precisely, and I do not have much time to waste yet - I am still trying to implement several approaches to strategy building.
Good luck and hit the trends.
It takes as much time to convert gif to png as to pack it in an archive :)
Noteworthy is Up+Down on drawings - always equal to 1.0. That's understandable in principle. Now I need to understand how three channels were obtained instead of one. And how is the average calculated? But this question is purely out of curiosity :)
About Up+Down calculation I applied probability calculation by Chebyshev formula (from Bulashev).
The average is calculated in proportion to the length of channels - I chose the number of bars of each channel as the weights (I wrote about it in the algorithm).
Three channels instead of one is still obtained according to the principles of the strategy. You most often have several areas in which you can build channels that meet the criteria. These are the areas where I select the channel that has the lowest RMS. I also introduced a cutoff so that each next channel selected for plotting on the chart was at least 2 times as long as the previous one. If not cut off, there may be up to 7 closely spaced channels that would grossly blur the chart with lines. But with this truncation, we usually obtain 2-3 channels, which shows the picture quite clearly without clouding the picture with lines.
You have such a beautiful Murray indicator, with lettering. If you can, please give me the link where it is from.
Thank you in advance - Alexander
Or even easier, email it to me at ANG3110@latchess.com
It's actually a Vladislava indicator taken from www.mql4.com
Only the caption has been added. You can get it here.
//+------------------------------------------------------------------+ //| 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 = 60; 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]";// "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] /* 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); } //+------------------------------------------------------------------+