artmedia70: А у вас вопрос жутко размыт и понятен лишь вам.
НИЗКИЙ ПОКЛОН ВАМ!!! БЛАГОДАРЮ! С ПРАЗДНИКОМ!
еще 2 момента, уважаемый. 1) можно убрать индикатор с отдельного окна?
2)добавить функцию, если текущий ATR больше ATR (за Н период), то ATR над баром, выделся бы иным цветом? либо писалось бы значение только над этим баром?
еще 2 момента, уважаемый. 1) можно убрать индикатор с отдельного окна?
2)добавить функцию, если текущий ATR больше ATR (за Н период), то ATR над баром, выделся бы иным цветом? либо писалось бы значение только над этим баром?
Вот же ж... Нате, сами правьте:
//+------------------------------------------------------------------+//| iATRwithData.mq4 |//| Copyright 2016, Artem A. Trishkin, Skype artmedia70 |//| https://login.mql5.com/ru/users/artmedia70 |//+------------------------------------------------------------------+#property copyright"Copyright 2016, Artem A. Trishkin, Skype artmedia70"#property link"https://login.mql5.com/ru/users/artmedia70"#property version"1.00"#property strict#property indicator_separate_window#property indicator_buffers1#property indicator_plots1//--- plot ATR#property indicator_label1 "ATR"#property indicator_type1 DRAW_LINE#property indicator_color1 clrDodgerBlue#property indicator_style1 STYLE_SOLID#property indicator_width1 1//+------------------------------------------------------------------+//| enums |//+------------------------------------------------------------------+enum enumYN
{
enYes=1, // Yes
enNo=0, // No
};
//+------------------------------------------------------------------+//| input parameters |//+------------------------------------------------------------------+inputint PeriodATR=14; // ATRs calculation periodint periodATR=(PeriodATR<1)?1:PeriodATR;
sinput enumYN DrawGraphic=enYes; // Drawing ATR data over the candlessinputint StartDrawingBar=100; // Max bar for drawing ATRs dataint startDrawingBar;
sinputint TextSize=5; // Text sizesinputcolor TextColor=clrDodgerBlue; // Text color//--- indicator buffersdouble BufferATR[];
string Prefix;
//+------------------------------------------------------------------+//| Classes |//+------------------------------------------------------------------+//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingSetIndexBuffer(0,BufferATR);
Prefix="iATRwd("+IntegerToString(periodATR)+")";
IndicatorSetString(INDICATOR_SHORTNAME,Prefix);
int bars=Bars(Symbol(),Period());
startDrawingBar=(StartDrawingBar<1)?1:(StartDrawingBar>bars)?bars:StartDrawingBar;
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- delete graphicsObjectsDeleteAll(0,Prefix,0);
//---
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---if(rates_total<periodATR) return(0);
int limit=rates_total-prev_calculated;
if(limit>1) limit=rates_total-periodATR-1;
//---for(int i=limit; i>=0; i--) {
BufferATR[i]=iATR(Symbol(),Period(),periodATR,i);
if(DrawGraphic && i<startDrawingBar) {
string tm_txt=TimeToString(time[i],TIME_DATE|TIME_MINUTES);
string nm=Prefix+"_"+tm_txt;
string text=IntegerToString(int(BufferATR[i]/Point()));
string tooltip="ATRs period for candle on "+tm_txt+" is "+text;
SetArrowText(0,nm,TextColor,text,0,ANCHOR_LOWER,time[i],high[i],"Arial",TextSize,tooltip);
}
}
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+voidOnTimer()
{
//---
}
//+------------------------------------------------------------------+//| ChartEvent function |//+------------------------------------------------------------------+voidOnChartEvent(constint id,
constlong &lparam,
constdouble &dparam,
conststring &sparam)
{
//---
}
//+------------------------------------------------------------------+//| Functions |//+------------------------------------------------------------------+void SetArrowText(long chart_id, string name, color text_color, string text, int sub_window,
long text_anchor, long text_time1, double text_price1, string font="Arial", long font_size=5,
string tooltip="\n", bool selection=false, bool hidden=true) {
if(ObjectFind(chart_id,name)<0) ObjectCreate(chart_id,name,OBJ_TEXT,sub_window,text_time1,text_price1);
ObjectSetInteger(chart_id,name,OBJPROP_ANCHOR,text_anchor);
ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,font_size);
ObjectSetString(chart_id,name,OBJPROP_FONT,font);
ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
ObjectSetInteger(chart_id,name,OBJPROP_COLOR,text_color);
ObjectSetInteger(chart_id,name,OBJPROP_FONTSIZE,font_size);
ObjectSetInteger(chart_id,name,OBJPROP_TIME1,text_time1);
ObjectSetDouble(chart_id,name,OBJPROP_PRICE1,text_price1);
ObjectSetInteger(chart_id,name,OBJPROP_SELECTED,selection);
ObjectSetInteger(chart_id,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_id,name,OBJPROP_HIDDEN,hidden);
ObjectSetString(chart_id,name,OBJPROP_TOOLTIP,tooltip);
}
//+------------------------------------------------------------------+
Добрый вечер, есть вопрос можно ли в индикаторе сделать отображения данных буферов в двух окнах, часть на основном графике, часть в подоконе ? Если да то подскажите пожалуйста как ...
У меня в строке определения торгового события (появления новой свечи) не обновляется массив таймсерии, точнее при появлении новой свечи не меняется его значение, почему так?
if(T[i]!=iTime(NULL,TF[i],1))
T[i] в первый раз задаётся при запуске эксперта, далее при открытии новой свечи значение обновляется.
Параметр I задаётся на основе входных параметров.
Что интересно, в версии где для работы я использовал сразу несколько ТФ, из-за чего приходилось использовать цикл for, всё работало хорошо, а тут сбой, не обновляется и всё тут...(
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
А у вас вопрос жутко размыт и понятен лишь вам.
НИЗКИЙ ПОКЛОН ВАМ!!! БЛАГОДАРЮ! С ПРАЗДНИКОМ!
еще 2 момента, уважаемый. 1) можно убрать индикатор с отдельного окна?
2)добавить функцию, если текущий ATR больше ATR (за Н период), то ATR над баром, выделся бы иным цветом? либо писалось бы значение только над этим баром?
НИЗКИЙ ПОКЛОН ВАМ!!! БЛАГОДАРЮ! С ПРАЗДНИКОМ!
еще 2 момента, уважаемый. 1) можно убрать индикатор с отдельного окна?
2)добавить функцию, если текущий ATR больше ATR (за Н период), то ATR над баром, выделся бы иным цветом? либо писалось бы значение только над этим баром?
Вот же ж... Нате, сами правьте:
Или тоже за вас всё сделать?
Вот же ж... Нате, сами правьте:
Или тоже за вас всё сделать?
спасибо большое! добрый человек!
Не за что. Если не секрет, зачем вам метка, показывающая время последнего запуска вашей программы - время в ней меняться не будет.
Просто праздное любопытство...
Это для offline тикового графика.
Какими функциями можно отправлять переменные между двумя МТ4 терминалами? Если можно, пожалуйста, добавьте ссылку на документацию.
int Флаги=FILE_WRITE+FILE_TXT+FILE_COMMON;
int Инфо = FileOpen(fName,Флаги);
FileWrite(Инфо, ТоЧтоНадо); На другом терминале читаем. Курсор на FileOpen и F1 - получим справку
int Флаги=FILE_WRITE+FILE_TXT+FILE_COMMON;
int Инфо = FileOpen(fName,Флаги);
FileWrite(Инфо, ТоЧтоНадо); На другом терминале читаем. Курсор на FileOpen и F1 - получим справку
Всем привет.
У меня в строке определения торгового события (появления новой свечи) не обновляется массив таймсерии, точнее при появлении новой свечи не меняется его значение, почему так?
T[i] в первый раз задаётся при запуске эксперта, далее при открытии новой свечи значение обновляется.
Параметр I задаётся на основе входных параметров.
Что интересно, в версии где для работы я использовал сразу несколько ТФ, из-за чего приходилось использовать цикл for, всё работало хорошо, а тут сбой, не обновляется и всё тут...(