// ---------------------------------------------------------------------------
// Èíäèêàòîð ñêîðîñòè íà ìèíóòêàõ ïî ìåòîäå Gorillych-à
// http://articles.mql4.com/ru/212
//
// Àâòîòîðãîâëÿ, ìíå êàæåòñÿ, ïðèçâàíà â ïåðâóþ î÷åðåäü çàñòàâèòü ìàøèíó
// äåëàòü òî, ÷åãî íåâîçìîæíî äîáèòüñÿ ðó÷íîé òîðãîâëåé: ñòàáèëüíîñòü,
// ïñèõîëîãè÷åñêàÿ óñòîé÷èâîñòü, áûñòðîòà ðåàêöèè íà ñèòóàöèþ,
// íåîãðàíè÷åííàÿ âûíîñëèâîñòü è ò.ï.
// Ïðèâåäó ïðèìåð. Íà ÷åìïèîíàòå 2006 ãîäà ó ìåíÿ ó÷àñòâîâàë ýêñïåðò, ó
// êîòîðîãî îñíîâíûì, íàâåðíîå, äîñòîèíñòâîì áûëî, ÷òî îí ìåòîäàìè
// òåõíè÷åñêîãî àíàëèçà ìîã òîðãîâàòü íà íîâîñòÿõ. Ïðè òîì, ÷òî åãî
// ïî-îïðåäåëåíèþ íåâîçìîæíî áûëî òåñòèðîâàòü íà èñòîðèè íà ÷åìïèîíàòå îí
// ïåðâîå âðåìÿ ïîêàçûâàë óäèâèòåëüíî õîðîøèå ðåçóëüòàòû. Íà åãî
// îêîí÷àòåëüíîì ðåçóëüòàòå ñêàçàëèñü åù¸ íåêîòîðûå äîïîëíèòåëüíûå îøèáî÷íûå
// èäåè â àëãîðèòìå åãî ðàáîòû.
// Íå áóäó ïðèâîäèòü âåñü êîä ýêñïåðòà, íî îñíîâíîé èäååé åãî áûë ðàñ÷åò
// íåêîåãî çíà÷åíèÿ Pv=(h-l)/Point/v; âíóòðè ìèíóòíîãî áàðà. È åñëè ýòî
// çíà÷åíèå ïðåâûøàëî 0,33 è îäíîâðåìåííî îáúåì ïðåâûøàë 12 (ïûòàëñÿ íàéòè
// ýòè çíà÷åíèÿ ïðè òåñòèðîâàíèè EURUSD) òî îòêðûâàëàñü ñäåëêà.
// Åñëè C>O BUY, åñëè C<O SELL. SL=50. TS=95.
// Íà ñëîâàõ èäåÿ áûëà â òîì, ÷òî åñòü íåêîòîðûå áàðû, ïîêàçûâàþùèå
// ñàíòèìåíò ïîñëåäóþùåãî äâèæåíèÿ. Êîãäà, íàïðèìåð, áûêè ïðåâîñõîäÿò
// ìåäâåäåé. Îáúåì, âëîæåííûé â áàð íà÷èíàåò åãî ðàñòÿãèâàòü, è ïðè
// äîñòàòî÷íîì ïîðîãîâîì îáúåìå ïîÿâëÿåòñÿ òðåíä.
// Â ñòàòüå íà ïðèâåäåííîì ïåðâîì ãðàôèêå âèäåí áàð íîâîñòåé.
// Òàê åãî ìîæíî òîðãîâàòü ïîäîáíûì ìåòîäîì â îáå ñòîðîíû, óäà÷íî
// ïîäîáðàâ SL è ÒS.
// ---------------------------------------------------------------------------
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 C'0,255,0'
#property indicator_minimum -20
#property indicator_maximum 20
#property indicator_style1 0
#property indicator_level1 0
double value[];
int init() {
IndicatorDigits(3);
IndicatorShortName("Gorillych");
if(!SetIndexBuffer(0, value)) {
Alert("SetIndexBuffer() FAILED");
}
return(0);
}
int start() {
int i, left = Bars - IndicatorCounted();
for(i = 0; i < left; i++) {
value[i] = ((High[i] - Low[i]) / Point / Volume[i]) *
misc_sign(Close[i] - Open[i]);
}
return(0);
}
// Âîçâðàùàåò çíàê ÷èñëà (-1;0;1)
int misc_sign(double value) {
if(value > 0) {
return(1);
} else if(value < 0) {
return(-1);
}
return(0);
}
Comments