//+---------------------------------------------------------------------------------+ //| corelation.mq4 | //| Copyright © 2008, Borys Chekmasov | //| http://uatrader.blogspot.com | //+---------------------------------------------------------------------------------+ // Èíäèêàòîð ïðåäíàçíà÷åí äëÿ ïîèñêà êîðåëÿöèé ìåæäó ðàçëè÷íûìè èñòðóìåíòàìè | // Ïîçâîëÿåò íàêëàäûâàòü ãðàôèê îäíîãî èíñòðóìåíòà ïîâåðõ äðóãîãî | // Âõîäíûå ïàðàìåòðû: // simbol_name - òèêåð êîòîðûé íàêëàäûâàåòñÿ íà ãðàôèê // bars_for_autoscale - êîëè÷åñòâî áàðîâ, ïî êîòîðûì ïðîèçâîäèòñÿ ìàññøòàáèðîâàíèå // åñëè íîëü, òî ìàêñèìàëüíîå êîëè÷åñòâî áàðîâ // inverse - ïåðåâîðà÷èâàåò ãðàôèê ââåðõ íîãàìè // MA - ïîêàçûâàòü èëè íåò ñêîëüçÿùóþ ñðåäíþþ äëÿ íàêëàäûâàåìîãî ãðàôèêà // MAPeriod - ïåðèîä ñêîëüçÿùåé ñðåäíåé // MAOnly - ïîêàçûâàòü òîëüêî ñêîëüçÿùóþ ñðåäíþþ (ñêðûâàåò ãðàôèê) #property copyright "Copyright © 2008, Borys Chekmasov" #property link "http://uatrader.blogspot.com" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Gold #property indicator_color2 DodgerBlue //âõîäíûå ïàðàìåòðû extern string simbol_name = "EURUSD"; extern int bars_for_autoscale = 200; extern bool inverse = false; extern bool MA = false; extern int MAPeriod =14; extern bool MAOnly = false; double simbolBuffer[]; double MABuffer[]; // èíèöèàëèçàöèÿ int init() { SetIndexBuffer(0,simbolBuffer); SetIndexStyle (0,DRAW_LINE); SetIndexBuffer(1,MABuffer); SetIndexStyle (1,DRAW_LINE); return (0); } //îñíîâíîé öèêë int start() { double simbol_scale = 1; double simbol_offset = 0; int i,k; int cb=IndicatorCounted(); i = Bars-cb-1; k = bars_for_autoscale; if (bars_for_autoscale==0) k=Bars; double max_scale=iClose(simbol_name,0,1); double min_scale=iClose(simbol_name,0,1); double max_scale2=Close[1]; double min_scale2=Close[1]; while(k>=0) { if (max_scale<iClose(simbol_name,0,k)) max_scale=iClose(simbol_name,0,k); if (min_scale>iClose(simbol_name,0,k)) min_scale=iClose(simbol_name,0,k); if (max_scale2<Close[k])max_scale2=Close[k]; if (min_scale2>Close[k])min_scale2=Close[k]; k--; } simbol_scale = (max_scale2 - min_scale2)/(max_scale-min_scale); if(!inverse) { simbol_offset = max_scale2 - simbol_scale*max_scale; } else { simbol_offset = max_scale2 + simbol_scale*min_scale; } while(i>=0) { if(!inverse) { if (!MAOnly) simbolBuffer[i]=simbol_scale*(iClose(simbol_name,0,i))+simbol_offset; if (MA)MABuffer[i]=(iMA(simbol_name,0,MAPeriod,0,0,PRICE_CLOSE,i))*simbol_scale+simbol_offset; } else { if (!MAOnly) simbolBuffer[i]=simbol_offset - simbol_scale*(iClose(simbol_name,0,i)); if (MA)MABuffer[i]=simbol_offset - simbol_scale*(iMA(simbol_name,0,MAPeriod,0,0,PRICE_CLOSE,i)); } i--; } return(0); }
Sample
Analysis
Market Information Used:
Series array that contains close prices for each bar
Indicator Curves created:
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: