3. MQL4 dla początkujących. Część III.

3.4. Typy zmiennych: typ koloru

color

Ten typ służy do przechowywania informacji o kolorze i zajmuje w pamięci 4 bajty (32 bity). Zmienne tego typu mogą być opisane na 3 sposoby.


Ciąg znaków mieszania kolorów

Mieszanie koloru czerwonego (Red), zielonego (Green) i niebieskiego (Blue), tzw. system RGB. Kolor uzyskuje się podając intensywność każdego z tych trzech podstawowych kolorów w zakresie od 0 do 255.

Rys. 1. Tworzenie kolorów w RGB.


W MQL4 w celu określenia koloru tym sposobem najpierw należy zapisać symbol C, a następnie w apostrofach trzy liczby rozdzielone przecinkami, odpowiednio dla R, dla G i dla B. Na przykład:

Kod 1
color c1 = C'238,130,238';   // fioletowy

Nazwa koloru

Możliwe jest tylko dla kolorów, które mają swoje nazwy w zestawie Web-kolorów.

Tabela 1. Identyfikacja kolorów po nazwie.

clrBlack

clrDarkGreen

clrDarkSlateGray

clrOlive

clrGreen

clrTeal

clrNavy

clrPurple

clrMaroon

clrIndigo

clrMidnightBlue

clrDarkBlue

clrDarkOliveGreen

clrSaddleBrown

clrForestGreen

clrOliveDrab

clrSeaGreen

clrDarkGoldenrod

clrDarkSlateBlue

clrSienna

clrMediumBlue

clrBrown

clrDarkTurquoise

clrDimGray

clrLightSeaGreen

clrDarkViolet

clrFireBrick

clrMediumVioletRed

clrMediumSeaGreen

clrChocolate

clrCrimson

clrSteelBlue

clrGoldenrod

clrMediumSpringGreen

clrLawnGreen

clrCadetBlue

clrDarkOrchid

clrYellowGreen

clrLimeGreen

clrOrangeRed

clrDarkOrange

clrOrange

clrGold

clrYellow

clrChartreuse

clrLime

clrSpringGreen

clrAqua

clrDeepSkyBlue

clrBlue

clrMagenta

clrRed

clrGray

clrSlateGray

clrPeru

clrBlueViolet

clrLightSlateGray

clrDeepPink

clrMediumTurquoise

clrDodgerBlue

clrTurquoise

clrRoyalBlue

clrSlateBlue

clrDarkKhaki

clrIndianRed

clrMediumOrchid

clrGreenYellow

clrMediumAquamarine

clrDarkSeaGreen

clrTomato

clrRosyBrown

clrOrchid

clrMediumPurple

clrPaleVioletRed

clrCoral

clrCornflowerBlue

clrDarkGray

clrSandyBrown

clrMediumSlateBlue

clrTan

clrDarkSalmon

clrBurlyWood

clrHotPink

clrSalmon

clrViolet

clrLightCoral

clrSkyBlue

clrLightSalmon

clrPlum

clrKhaki

clrLightGreen

clrAquamarine

clrSilver

clrLightSkyBlue

clrLightSteelBlue

clrLightBlue

clrPaleGreen

clrThistle

clrPowderBlue

clrPaleGoldenrod

clrPaleTurquoise

clrLightGray

clrWheat

clrNavajoWhite

clrMoccasin

clrLightPink

clrGainsboro

clrPeachPuff

clrPink

clrBisque

clrLightGoldenrod

clrBlanchedAlmond

clrLemonChiffon

clrBeige

clrAntiqueWhite

clrPapayaWhip

clrCornsilk

clrLightYellow

clrLightCyan

clrLinen

clrLavender

clrMistyRose

clrOldLace

clrWhiteSmoke

clrSeashell

clrIvory

clrHoneydew

clrAliceBlue

clrLavenderBlush

clrMintCream

clrSnow

clrWhite

 

 

 

 


Na przykład:

Kod 2
color c2 = clrViolet;   // fioletowy

Prezentacja liczbowa

Prezentacja w postaci liczby szesnastkowej lub dziesiętnej. Liczba szesnastkowa, mówiąc inaczej system heksadecymalny (ang. hexadecimal) zapisu koloru, w MQL4 ma wygląd 0xBBGGRR, gdzie BB to intensywność koloru niebieskiego, GG - zielonego, RR - czerwonego. Na przykład:

Kod 3
color c3 = 0xee82ee;   // fioletowy
color c4 = 0xEE82EE;   // fioletowy


W MQL4 zapis koloru różni się od zapisu w systemie heksadecymalnym jak w HTML, gdzie zapis wygląda #RRGGBB. W HTML po # najpierw należy zapisać intensywność koloru czerwonego (RR), potem zielonego (GG), a na końcu niebieskiego (BB). W MQL4 odwrotnie, po 0x idzie kolor niebieski (BB), potem zielony (GG), a na końcu czerwony (RR).

Istnieje też możliwość zapisu koloru stosując system heksadecymalny w sposób podobny do zapisu opisanego przy RGB. Tu też na początku należy zapisać symbol C, a następnie w pojedynczych cudzysłowach intensywność trzech kolorów rozdzielone przecinkami, zgodnie ze schematem C'0xRR,0xGG,0xBB'. W tym przypadku kolejność kolorów jest identyczna jak w HTML.

Kod 4
color c5 = C'0xee,0x82,0xee';   // fioletowy
color c6 = C'0xEE,0x82,0xEE';   // fioletowy

W przypadku liczb dziesiętnych, tzw. systemu decymalnego (ang. decimal), należy zapisać liczbę, której odpowiada kolor. Tu nie ma bezpośredniego przełożenia na RGB. Na przykład, fioletowy to 15631086.

Kod 5
color c7 = 15631086;   // fioletowy

Jeśli interesuje cię jak można określić kolor za pomocą tych i innych systemów, polecam stronę colorhexa.com, gdzie podając identyfikator koloru w jednym systemie, zobaczysz jego identyfikatory w innych.

Rys. 2. Identyfikacja kolorów.


Zobaczmy jeszcze kilka przykładów identyfikacji kolorów w MQL4.

Tabela 2. Przykłady identyfikacji kolorów.

Identyfikator koloru w MQL4  Kolor
RGB Nazwa System heksadecymalny System heksadecymalny System decymalny
C'238,130,238' clrViolet 0xEE82EE C'0xEE,0x82,0xEE' 15631086 fioletowy
C'255,0,0' clrRed 0x0000FF C'0xFF,0x00,0x00' 255 czerwony
C'0,255,0' clrLime 0x00FF00 C'0x00,0xFF,0x00' 65280 zielony
C'0,0,255' clrBlue 0xFF0000 C'0x00,0x00,0xFF' 16711680 niebieski
C'108,130,160' 0xA0826C C'0x6C,0x82,0xA0' 10519148

W mojej opinii najbardziej przyjazny sposób definicji koloru to RGB i nazwa Web-koloru. Typ color stosuje się w graficznych objektach, np. wskaźnikach lub własnych programach, które tworzą obiekty na wykresie notowań.