В этом разделе представлены примеры для работы со свойствами графика. Для каждого свойства приведены одна или две законченные функции, которые позволяют задавать/получать значение этого свойства. Эти функции можно использовать в своих MQL5 программах как есть. На рисунке показана графическая панель для наглядной демонстрации того, как изменение...
#property indicator_chart_windowexternint History = 35; // Сколько баров мы имеем ввидуexternint Multiple = 5; // Кратность отображаемой разметкиcolor Color=0;
color Color_multiple=Moccasin; // Цвет индексов кратных "Multiple"color Color_between=MintCream; // Цвет индексов промежуточных string name="";
string Text="";
int Font_size=0;
int Font_size_multiple=14; // Размер шрифта индексов кратных "Multiple"int Font_size_between=8; // Размер шрифта индексов промежуточныхbool Back=true; //--- отобразим на переднем (false) или заднем (true) плане. Если (true), то подсветки дат не выводитсяstring Font="Arial"; // Шрифтdouble Angle=270.0; // Угол наклона в градусахint Style=STYLE_DOT; // Для всех - стиль пунктирint Width=1; // Толщина линии//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж//+------------------------------------------------------------------+//| Custom indicator initialization function F 1 | int init()//+------------------------------------------------------------------+int init()
{
// IndicatorShortName(IN + " (" + ")"); // Короткое имя индикатораreturn(INIT_SUCCEEDED); // Успешная инициализация приложения
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж//+------------------------------------------------------------------+//| expert deinitialization function F 2 | int deinit()//+------------------------------------------------------------------+int deinit() // Время исполнения специальной функции deinit() ограничено периодом 2,5 секунды.
{
ObjectsDeleteAll(0, "label", 0); // Идентификатор графика, префикс имени объекта, индекс окнаreturn(0); // Выход из deinit()
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж//+------------------------------------------------------------------+//| Custom indicator iteration function F 3 | int start()//+------------------------------------------------------------------+int start()
{
int i=0;
int limit=Bars-IndicatorCounted()-1;
if(limit>1) limit=MathMin(Bars, History+(History==0)*Bars)-1;
for(i=0; i<History; i++)
{
name = "label "+i;
Text = DoubleToStr(i,0);
if(MathMod(i, Multiple) == 0) // MathMod() Возвращает вещественный остаток от деления двух чисел (i/Multiple).
{
Color = Color_multiple;
Font_size = Font_size_multiple;
if(ObjectFind(0, name)==-1) // Если объект "name" не найден
{
ObjectCreate(0,name,OBJ_VLINE,0,Time[i],0); // Создаем объект..ObjectSetInteger(0,name,OBJPROP_STYLE,Style); //--- установим стиль отображения линииObjectSetInteger(0,name,OBJPROP_WIDTH,Width); //--- установим толщину линииObjectSetInteger(0,name,OBJPROP_COLOR,Color); //--- установим цветObjectSetString(0,name,OBJPROP_TEXT,Text); //--- установим текстObjectSetString(0,name,OBJPROP_FONT,Font); //--- установим шрифт текстаObjectSetInteger(0,name,OBJPROP_FONTSIZE,Font_size); //--- установим размер шрифтаObjectSetDouble(0,name,OBJPROP_ANGLE,Angle); //--- установим угол наклона текста// Для отображения текстового описания объекта необходимо включить галочку опции "Показывать описания объектов" в окне Графики->Свойства финансового инструмента (F8) > Общие. ObjectSetInteger(0,name,OBJPROP_BACK, Back); //--- отобразим на переднем (false) или заднем (true) плане
}
else// Если объект "name" найден
{
ObjectMove(0,name, 0, Time[i], 0); // Сообщение новых координат.
}
}
// else// {// Color = Color_between;// Font_size = Font_size_between;//// if(ObjectFind(0, name)==-1) // Если объект "name" не найден// {// ObjectCreate(0,name,OBJ_VLINE,0,Time[i],0); // Создаем объект..// ObjectSetInteger(0,name,OBJPROP_STYLE,Style); //--- установим стиль отображения линии// ObjectSetInteger(0,name,OBJPROP_WIDTH,Width); //--- установим толщину линии// ObjectSetInteger(0,name,OBJPROP_COLOR,Color); //--- установим цвет// //ObjectSetString(0,name,OBJPROP_TEXT,Text); //--- установим текст// //ObjectSetString(0,name,OBJPROP_FONT,Font); //--- установим шрифт текста// //ObjectSetInteger(0,name,OBJPROP_FONTSIZE,Font_size); //--- установим размер шрифта// ObjectSetDouble(0,name,OBJPROP_ANGLE,Angle); //--- установим угол наклона текста// // Для отображения текстового описания объекта необходимо включить галочку опции "Показывать описания объектов" в окне Графики->Свойства финансового инструмента (F8) > Общие. // ObjectSetInteger(0,name,OBJPROP_BACK, Back); //--- отобразим на переднем (false) или заднем (true) плане// }// else // Если объект "name" найден// {// ObjectMove(0,name, 0, Time[i], 0); // Сообщение новых координат. // }// }
}
return(0);
}
你能告诉我哪个kodobase主题有一个绘制数字的算法的例子,使条形索引数字显示在窗口的底部和/或顶部?如图片所示。
重点是,OBJ_TEXT 被映射为价格和时间,OBJ_LABEL被映射为以像素为单位的窗口坐标。但如何将它们结合起来呢?
你好!
你能告诉我哪个Kodobase主题有一个绘制数字的算法的例子,使窗口的底部和/或顶部显示条形索引数字?如图片所示。
重点是, OBJ_TEXT 被映射为价格和时间,OBJ_LABEL被映射为以像素为单位的窗口坐标。但如何将它们结合起来呢?
你需要去看价格,而价格是蜡烛图的高点或低点,那么对象就会到位。
你需要去看价格,而价格是蜡烛图的高点或低点,那么对象就会到位。
"在窗口的底部和/或顶部 显示条形指数数字 "和 "指定高点或低点烛台 "并不是 "焦点"。
"窗口的底部和/或顶部 显示条形指数数字 "和 "指定蜡烛的高点或低点 "不是一个 "焦点"。
这个?
这个?
你好!
你能告诉我哪个Kodobase主题有一个绘制数字的算法的例子,使窗口的底部和/或顶部显示条形图的索引号?如图片所示。
重点是,OBJ_TEXT 被映射为价格和时间,OBJ_LABEL被映射为以像素为单位的窗口坐标。但如何将它们结合起来呢?
通过这些函数,ChartTimePriceToXY和 ChartXYToTimePrice可以放在任何地方
你好!
你能告诉我哪个kodobase主题有一个绘制数字的算法的例子,使条形索引数字显示在窗口的底部和/或顶部?如图片所示。
重点是,OBJ_TEXT 被映射为价格和时间,OBJ_LABEL被映射为以像素为单位的窗口坐标。但如何将它们结合起来呢?
为什么我需要图表上的数字?在如何查看条形号码的文件中,有一个现成的解决方案
我看到这一节已经很多年了。但我的大脑只够用于此。
一个不引人注意的建议。
如果你想掌握mql5,试着摆脱extern, int init(), int deinit() and int start().
用成熟的输入法取代它们,int OnInit(), void OnDeinit(const int reason) 和 void OnTick()
问候!
你能告诉我如何使一个数组的instu
我正试图这样做。
输入双倍Df_1 = 0.8。
输入双倍Df_2 = 0.1。
输入双倍Df_3 = 0.3。
const double Df[3] = {Df_1 ,Df_2 ,Df_3 };
但它产生了一个错误。
'Df_1' - 需要常数表达式
'Df_2' - 需要常数表达式
'Df_3' - 需要常数表达式
问候!
你能告诉我如何使一个数组的instu
我正试图这样做。
输入双倍Df_1 = 0.8。
输入双倍Df_2 = 0.1。
输入双倍Df_3 = 0.3。
const double Df[3] = {Df_1 ,Df_2 ,Df_3 };
但它产生了一个错误。
'Df_1' - 需要常数表达式
'Df_2' - 需要常数表达式
'Df_3' - 需要常数表达式
数组必须用常数进行初始化。
如果你想用输入参数来填充它,首先声明它,然后逐项说明。