Хотелось бы сделать простой индикатор.

 
Болтаюсь по форумам с вроде простой просьбой. Пока ещё не изучил как следует язык MQL, а простую игрушку хоцца.
Как сделать, чтобы при прохождении Rsi или Stochstic Oscillator или другим обычным индикатором  определённого значения ,на графике выпечатывались бы значение цены в этот момент и время, когда это происходит. По всей истории ессно.Мне кажется это пару строк для того кто умеет.
 
вроде с простой.... это далеко не пара строк, не совсем далеко, но не пара точно
 
В принципе думаю примерно так:
For Текущий_Бар TO Начало_Истории (или наоборот)
IF Индикатор=А THEN PRINT ТЕКУЩАЯ_ЦЕНА (наверное закрытия)

Вот как это оформить по всем правилам?
 
gluk:
Вот как это оформить по всем правилам?
Через бухгалтерию:-) (шутка)
Файлы:
istochtxt.mq4  4 kb
 
За сочуствие спасибо. Но ссылка не работает, однако
 

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 Red
#property indicator_width1 1
#property indicator_width2 1

extern int k=5,s=3,l=20;
extern color txtColor=Yellow;

int d=3;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,1);
SetIndexArrow(0,241);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,1);
SetIndexArrow(1,242);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(1,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
for(int i=0;i<ObjectsTotal();i++){
if(StringFind(ObjectName(i),"txt_",0)==0){
ObjectDelete(ObjectName(i));
i--;
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
string on;
int limit;
int counted_bars=IndicatorCounted(); // определим количество просчитаных баров у индикатора
if(counted_bars>0){
counted_bars--;
}
limit=Bars-counted_bars; // определяем границу до которой рассчитываем значения индикатора

for(int i=0;i<limit;i++){
double mc=iStochastic(NULL,0,k,d,s,0,0,MODE_MAIN, i);
double mp=iStochastic(NULL,0,k,d,s,0,0,MODE_MAIN, i+1);

ExtMapBuffer1[i]=EMPTY_VALUE;
ExtMapBuffer2[i]=EMPTY_VALUE;

if(mc>l && mp<=l){
ExtMapBuffer1[i]=Low[i]-iATR(NULL, 0, 14,i);
on="txt_"+Time[i];
ObjectDelete(on);
ObjectCreate(on,OBJ_TEXT,0,Time[i], Low[i]-1. 5*iATR(NULL, 0, 14,i));
ObjectSetText(on,DoubleToStr(Close[i], Digits)+" "+TimeToStr(Time[i], TIME_MINUTES),8,"Arial",txtColor);
}
if(mc<100-l && mp>=100-l){
ExtMapBuffer2[i]=High[i]+iATR(NULL, 0,14,i);
on="txt_"+Time[i];
ObjectDelete(on);
ObjectCreate(on,OBJ_TEXT,0,Time[i], High[i]+2*iATR(NULL, 0,14, i));
ObjectSetText(on,DoubleToStr(Close[i], Digits)+" "+TimeToStr(Time[i], TIME_MINUTES),8,"Arial",txtColor);
}
}
//----
return(0);
}

 
А-Б-А-Л-Д-Е-М-О-Н !!!
Произведение искусства!!!
Работает!! Правда пока непонятно ,что показывает, но всё равно здорово!
Большое спасибо!!
 
пересечение главной линией уровня 20 снизу вверх и 80 сверху вниз. Переменная l - определяет нижний уровень, верзний расчитывается как 100-l. Остальные переменные k и s - перид k стохатика и его сглаживание.
 
Integer писал (а):
пересечение главной линией уровня 20 снизу вверх и 80 сверху вниз. Переменная l - определяет нижний уровень, верзний расчитывается как 100-l. Остальные переменные k и s - перид k стохатика и его сглаживание.

Integer, как бы решить вопрос по "маленькой" модернизации вашего произведения?
 
kanskigor писал (а):

Integer, как бы решить вопрос по "маленькой" модернизации вашего произведения?

Говори.
 
Что-бы рисовались стрелки еще на уровнях 30 и 10 разных цветов, а может лучше подписывались
Причина обращения: