ChartGetInteger возвращает значение форматаlong или bool. Через (int) происходит перевод ChartGetInteger в значение int.
если int bars, значит и значение должно быть int при присваивании.
1. Непосредственно возвращает значение свойства.
longChartGetInteger(
long chart_id, // идентификатор графика int prop_id, // идентификатор свойства int sub_window=0// номер подокна, если требуется
);
2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром
boolChartGetInteger(
long chart_id, // идентификатор графика int prop_id, // идентификатор свойства int sub_window, // номер подокна long& long_var // сюда примем значение свойства
);
Подскажите пожалуйста код для эксперта МТ4 и МТ5, что бы он выставилстоп лоссна 2-3 пункта выше максимума/минимума только что закрытой свечи.
Или где я могу посмотреть обучающий материал по этому вопросу. Заранее спасибо :-)
Объявляете массив типа MqlRates. Копируете OHLC и другие параметры закрытой свечи
intCopyRates(
string symbol_name, // имя символаENUM_TIMEFRAMES timeframe, // периодint start_pos, // откуда начнем (начнём с 1)int count, // сколько копируем (надо всего 1)MqlRates rates_array[] // массив, куда будут скопированы данные
);
и потом берёте значения High или Low от которых отстуавете 2-3 пункта и туда ставите стопы.
WindUP: Спасибо, а можно хотябы один объективный примерчик. Вид сверху так сказать. А то я совсем нубасик и 2 дня как в теме :-)
Вот я пытаюсь тоже научиться - вроде что то получается
//+------------------------------------------------------------------+//| CopyRates.mq5 |//| Copyright 2021, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2021, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"#property script_show_inputs//---sinputint Inpcopiedrates = 2; // какой барsinputdouble Inphigh = 100; // отступить от high//---datetime m_right_time = 0,m_left_Ctime = 0;
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---MqlRates rates[];
ArraySetAsSeries(rates,true);
int copied=CopyRates(Symbol(),0,0,Inpcopiedrates,rates);
if(copied>0)
{
Print("Скопировано баров: "+copied);
string format="open = %G, high = %G, low = %G, close = %G, volume = %d";
string out;
int size=fmin(copied,10);
for(int i=0; i<size; i++)
{
out=i+":"+TimeToString(rates[i].time);
out=out+" "+StringFormat(format,
rates[i].open,
rates[i].high,
rates[i].low,
rates[i].close,
rates[i].tick_volume);
Print(out);
ObjectDelete(0,"CopyRateshigh");
m_left_Ctime=rates[i].time;
m_right_time=TimeCurrent();
TrendCreate(0,"CopyRateshigh",clrBlue,STYLE_DASHDOTDOT,1);
TrendPointChange(0,"CopyRateshigh",0,m_left_Ctime,rates[i].high+Inphigh/100);
TrendPointChange(0,"CopyRateshigh",1,m_right_time,rates[i].high+Inphigh/100);
}
}
elsePrint("Не удалось получить исторические данные по символу ",Symbol());
}
//+------------------------------------------------------------------+//| Create a trend line by the given coordinates |//+------------------------------------------------------------------+bool TrendCreate(constlong chart_ID=0, // chart's IDconststring name="TrendLine", // line nameconstcolor clr=clrRed, // line colorconstENUM_LINE_STYLE style=STYLE_SOLID, // line styleconstint width=1, // line widthconstint sub_window=0, // subwindow indexdatetime time1=0, // first point timedouble price1=0, // first point pricedatetime time2=0, // second point timedouble price2=0, // second point priceconstbool back=false, // in the backgroundconstbool selection=false, // highlight to moveconstbool ray_left=false, // line's continuation to the leftconstbool ray_right=true, // line's continuation to the rightconstbool hidden=true, // hidden in the object listconstlong z_order=0) // priority for mouse click
{
//--- set anchor points' coordinates if they are not set
ChangeTrendEmptyPoints(time1,price1,time2,price2);
//--- reset the error valueResetLastError();
//--- create a trend line by the given coordinatesif(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,time1,price1,time2,price2))
{
Print(__FUNCTION__,
": failed to create a trend line! Error code = ",GetLastError());
return(false);
}
//--- set line colorObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set line display styleObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set line widthObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- display in the foreground (false) or background (true)ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the line by mouse//--- when creating a graphical object using ObjectCreate function, the object cannot be//--- highlighted and moved by default. Inside this method, selection parameter//--- is true by default making it possible to highlight and move the objectObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- enable (true) or disable (false) the mode of continuation of the line's display to the leftObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);
//--- enable (true) or disable (false) the mode of continuation of the line's display to the rightObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- hide (true) or display (false) graphical object name in the object listObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chartObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- set the textObjectSetString(chart_ID,name,OBJPROP_TEXT,name);
//--- successful executionreturn(true);
}
//+------------------------------------------------------------------+//| Move trend line anchor point |//+------------------------------------------------------------------+bool TrendPointChange(constlong chart_ID=0, // chart's IDconststring name="TrendLine", // line nameconstint point_index=0, // anchor point indexdatetime time=0, // anchor point time coordinatedouble price=0) // anchor point price coordinate
{
//--- if point position is not set, move it to the current bar having Bid priceif(!time)
time=TimeCurrent();
if(!price)
price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- reset the error valueResetLastError();
//--- move trend line's anchor pointif(!ObjectMove(chart_ID,name,point_index,time,price))
{
Print(__FUNCTION__,
": failed to move the anchor point! Error code = ",GetLastError());
return(false);
}
//--- successful executionreturn(true);
}
//+------------------------------------------------------------------+//| Check the values of trend line's anchor points and set default |//| values for empty ones |//+------------------------------------------------------------------+void ChangeTrendEmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2)
{
//--- if the first point's time is not set, it will be on the current barif(!time1)
time1=TimeCurrent();
//--- if the first point's price is not set, it will have Bid valueif(!price1)
price1=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- if the second point's time is not set, it is located 9 bars left from the second oneif(!time2)
{
//--- array for receiving the open time of the last 10 barsdatetime temp[10];
CopyTime(Symbol(),Period(),time1,10,temp);
//--- set the second point 9 bars left from the first one
time2=temp[0];
}
//--- if the second point's price is not set, it is equal to the first point's oneif(!price2)
price2=price1;
}
//+------------------------------------------------------------------+
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Добрый день! Подскажите пожалуйста для чего перед ChartGetInteger в круглых скобках стоит (int)
int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
Здравствуйте. Прошу подсказать.
Есть индикатор, должен отрисовывать линии High и Low дня на каждом баре меньшего таймфрейма.
Когда вешаю его на график, просто рисует линии по текущим значениям максимума и минимума дня (на рисунке, как должно быть).
Здравствуйте. Прошу подсказать.
Есть индикатор, должен отрисовывать линии High и Low дня на каждом баре меньшего таймфрейма.
Когда вешаю его на график, просто рисует линии по текущим значениям максимума и минимума дня (на рисунке, как должно быть).
Здесь ответ
Здесь ответ
Здравствуйте, подскажите пожалуйста ID графика это как?
Копают обычно справку.
Подскажите пожалуйста код для эксперта МТ4 и МТ5, что бы он выставил стоп лосс на 2-3 пункта выше максимума/минимума только что закрытой свечи.
Или где я могу посмотреть обучающий материал по этому вопросу. Заранее спасибо :-)
Подскажите пожалуйста код для эксперта МТ4 и МТ5, что бы он выставил стоп лосс на 2-3 пункта выше максимума/минимума только что закрытой свечи.
Или где я могу посмотреть обучающий материал по этому вопросу. Заранее спасибо :-)
Объявляете массив типа MqlRates. Копируете OHLC и другие параметры закрытой свечи
и потом берёте значения High или Low от которых отстуавете 2-3 пункта и туда ставите стопы.
Ещё можно использовать
и
Объявляете массив типа MqlRates. Копируете OHLC и другие параметры закрытой свечи
и потом берёте значения High или Low от которых отстуавете 2-3 пункта и туда ставите стопы.
Ещё можно использовать
и
Спасибо, а можно хотябы один объективный примерчик. Вид сверху так сказать. А то я совсем нубасик и 2 дня как в теме :-)
Вот я пытаюсь тоже научиться - вроде что то получается