В этом разделе представлены примеры для работы со свойствами графика. Для каждого свойства приведены одна или две законченные функции, которые позволяют задавать/получать значение этого свойства. Эти функции можно использовать в своих 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()、int start()を取り除いてみてください。
int OnInit(), void OnDeinit(const int reason), void OnTick() といった本格的な入力に置き換えます。
ごあいさつ
インストゥルメントの配列の作り方を教えてください。
こんな感じでやっています。
input double Df_1 = 0.8;
input double Df_2 = 0.1;
input double Df_3 = 0.3;
const double Df[3] = {Df_1 ,Df_2 ,Df_3 };
というエラーが発生します。
'Df_1' - 定数式が必要
Df_2' - 定数式が必要です。
'Df_3' - 定数式が必要です。
ごあいさつ
インストゥルメントの配列の作り方を教えてください。
こんな感じでやっています。
input double Df_1 = 0.8;
input double Df_2 = 0.1;
input double Df_3 = 0.3;
const double Df[3] = {Df_1 ,Df_2 ,Df_3 };
というエラーが発生します。
'Df_1' - 定数式が必要
Df_2' - 定数式が必要です。
'Df_3' - 定数式が必要です。
配列は定数で初期化する必要があります。
入力パラメータで埋め尽くしたい場合は、まず宣言して、それを箇条書きにします。