English 中文 Español Deutsch 日本語 Português
Поиск условий входа в рынок с помощью поддержки, сопротивления и ценового действия

Поиск условий входа в рынок с помощью поддержки, сопротивления и ценового действия

MetaTrader 4Трейдинг | 22 июня 2015, 12:03
25 845 7
MICHAEL JANUS
MICHAEL JANUS

Содержание


Введение

В статье приводится методология торговли на валютном и товарном рынках, а также на рынке акций. Кроме того, в ней содержатся примеры MQL4-кода, который можно использовать при создании советника, работающего по описанным принципам.

Ключевыми компонентами системы являются ценовое действие (price action) и определение уровней поддержки и сопротивления. От этих компонентов полностью зависит вход в рынок. Также объясняется сущность контрольных ценовых уровней (reference price levels) и описываются эффективные способы их определения. Примеры MQL4-кода содержат параметры для минимизации риска. Риск уменьшается за счет того, что уровни выхода, а также стоп-уровни, располагаются сравнительно недалеко от точек входа.

Методология предоставляет дополнительное преимущество, позволяя совершать сделки большего объема независимо от размера счета. Наконец, в статье приводятся способы определения целевых уровней прибыли с соответствующим MQL4-кодом, необходимым для эффективного выхода из сделки в различных условиях.


1. Поддержка и сопротивление

Посмотрев на любой ценовой график (независимо от рынка или таймфрейма), вы убедитесь в двух вещах. Во-первых, рыночная цена никогда не задерживается на одном уровне надолго. Через какое-то время вы увидите, что она уже сильно изменилась. Любую цену на графике можно использовать в качестве контрольного уровня.

Однако некоторые цены действуют в этом качестве эффективнее других. Мы вернемся к этой теме ниже. Во-вторых, на любом графике есть цены, при достижении которых рыночный тренд меняется. Цена может несколько раз касаться определенного уровня и почти сразу же возвращаться назад. Это уровни поддержки и сопротивления, знакомые любому трейдеру. Поддержка — это тот уровень, ниже которого цена не падает. Сопротивление — уровень, выше которого цена не растет.

Эти уровни также известны как вершины и впадины (tops and bottoms). Вероятность разворота тренда при их касании ценой особенно высока, что делает их идеальными кандидатами на роль контрольных уровней. Уровень, расположенный примерно на одинаковом расстоянии между поддержкой и сопротивлением, также можно использовать в качестве контрольного. Назовем его срединным уровнем (midpoints).

На любом участке графика можно выделить поддержку, сопротивление и срединный уровень (рис. 1).

Рис.1. Поддержка, сопротивление и срединный уровень

Рис. 1. Поддержка, сопротивление и срединный уровень

Нижняя фиолетовая линия обозначает уровень поддержки на ценовой отметке в 1.09838. Верхняя красная линия обозначает сопротивление на 1.10257.

Черная линия на 1.10048 является срединным уровнем. Точное определение поддержки и сопротивления субъективно и зависит от ваших правил входа в рынок и выхода из него. Вы можете открыть позицию по конкретной цене или на определенном ценовом интервале. Все зависит от вашего торгового стиля и целей.

Соответственно, расстояние между уровнями поддержки и сопротивления может различаться, так как они используются исключительно для определения условий входа в рынок.

Рис. 2. Ценовые диапазоны поддержки и сопротивления

Рис. 2. Ценовые диапазоны поддержки и сопротивления

На рис. 2 представлены четыре разных диапазона поддержки и сопротивления на минутном графике.

Некоторые из них шире, некоторые — уже. Как уже было сказано, ценовые уровни выделяются субъективно. Но принцип установки всегда один и тот же — по пикам и впадинам (а также на одинаковом расстоянии между ними) краткосрочных трендов.

На рисунках 3-6 представлены диапазоны поддержки и сопротивления длинных и коротких временных периодов на минутных графиках.

Рисунки 3 и 4 показывают бычий рынок, рисунки 5 и 6 — медвежий.

Рис. 3. Широкий бычий рынок

Рис. 3. Широкий бычий рынок


Рис. 4. Узкий бычий рынок

Рис. 4. Узкий бычий рынок


Рис. 5. Широкий медвежий рынок

Рис. 5. Широкий медвежий рынок


Рис. 6. Узкий медвежий рынок

Рис. 6. Узкий медвежий рынок


Эти контрольные ценовые уровни образуют области, в которых ожидаются ценовые действия определенных типов. Появление таких ценовых действий на графике сигнализирует о подходящем моменте для торговли.


2. Поиск эффективных условий входа в рынок по ценовому действию

Есть много двойных свечных моделей (паттернов), которые можно использовать в качестве эффективных сигналов для совершения сделок. В статье мы опишем три из них. Отслеживать эти паттерны необходимо возле контрольных уровней поддержки и сопротивления. Далее все примеры приводятся с использованием минутных свечей. Мы используем этот таймфрейм, так как система предполагает точное определение точек входа и небольшое расстояние до стоп-лосса.

Каждый из трех описываемых паттернов состоит из двух минутных свечей. Когда одна из этих моделей появляется возле контрольного ценового уровня (поддержки, сопротивления или срединного уровня), вход в рынок происходит строго по цене открытия следующей (третьей) минутной свечи. Примеры будут приведены после описания каждого из паттернов.

Паттерн 1 состоит из свечи, одна из теней которой длиннее тела, и второй свечи, которая закрывается за пределами первой в сторону, противоположную тени первой свечи. Под тенью понимается вертикальная линия, указывающая ценовой диапазон между максимумом и ценой открытия/закрытия свечи (верхняя тень), либо между минимумом и ценой открытия/закрытия (нижняя тень). Первой свечой паттерна может быть доджи (Doji).

Рис. 7. Бычий паттерн 1

Рис. 7. Бычий паттерн 1


Рис. 8. Медвежий паттерн 1

Рис. 8. Медвежий паттерн 1

На рисунке 7 изображен бычий паттерн, на рисунке 8 – медвежий.

Указанные паттерны похожи на свечную модель "Молот", но они не специфичны, так как в состав паттерна может входить любая комбинация восходящих или нисходящих свечей, а также доджи.

На рисунке 9 показан бычий тренд, начинающийся с указанного паттерна.

Рис. 9. Бычий тренд

Рис. 9. Бычий тренд


Паттерн 2 состоит из двух свечей с примерно одинаковыми по длине телами.

Тела обеих свечей также имеют примерно схожие цены открытия и закрытия. Как длина тела, так и цены не обязательно должны совпадать полностью. Медвежий паттерн такого типа показан на рис. 10, бычий — на рис. 11.

Паттерн такого типа называется "Пинцет". На рисунке 12 показан медвежий тренд, начинающийся с модели "Пинцет".

Рис. 10. Медвежий паттерн 2

Рис. 10. Медвежий паттерн 2


Рис. 11. Бычий паттерн 2

Рис. 11. Бычий паттерн 2


Рис. 12. Медвежий тренд

Рис. 12. Медвежий тренд

Паттерн 3 — более общий, так как первая из его свечей может быть любой, а вторая закрывается за пределами первой. На рисунке 13 изображен бычий паттерн, на рисунке 14 — медвежий.

На рисунке 15 показан бычий тренд, начинающийся с указанного паттерна.

Рис. 13. Бычий паттерн 3

Рис. 13. Бычий паттерн 3


Рис. 14. Медвежий паттерн 3

Рис. 14. Медвежий паттерн 3


Рис. 15. Бычий тренд

Рис. 15. Бычий тренд

При поиске указанных паттернов для входа в позицию необходимо учитывать расстояние между потенциальной ценой входа и ближайшим контрольным уровнем поддержки или сопротивления. Если цена входа находится слишком далеко от контрольного уровня, от открытия позиции лучше воздержаться независимо от паттерна.

Как уже было сказано, вход в рынок происходит сразу при появлении следующей (третьей по счету) минутной свечи. Подробнее такое поведение объясняется в следующем разделе, посвященном соответствующему MQL4-коду. Так как в нашем случае ценовое действие является ключевым элементом определения условий входа в рынок, для открытия позиций всегда используются рыночные ордера, а не отложенные.


3. MQL4-код для задания условий входа по ценовому действию

Теперь, когда мы описали методологию входа в рынок, пора рассмотреть код для ее реализации.

Приводимые ниже блоки кода могут быть использованы при разработке советников, основанных на ценовом действии и уровнях поддержки/сопротивления. Во-первых, необходимо определить переменные. Некоторые из них должны состоять из недавних цен открытия, закрытия, а также минимальных и максимальных цен на минутных свечах. Каждая из этих четырех цен определяется на текущей минутной свече, а также на двух предыдущих с помощью iOpen(), iHigh(), iLow() и iClose().

Так как мы ищем паттерн из двух полностью сформированных свечей, то свеча, появившаяся за две минуты до текущей, будет являться первой свечой паттерна (например, левая свеча на рис. 7). Назовем такую свечу Candle1. Соответственно, следующая свеча будет называться Candle2 (правая свеча на рис. 7).

Текущая свеча (справа от Candle2) обозначается как Candle3. Ценовое действие отслеживается в реальном времени, и советник должен всегда следить за текущей и двумя предыдущими свечами.

double O1=NormalizeDouble(iOpen(Symbol(),PERIOD_M1,2),4);

Приведенный выше код определяет цену открытия Candle1.

Так как переменная выражена десятичной дробью, используется тип данных double. "O1" обозначает цену открытия первой свечи паттерна. Данные предоставляются с помощью iOpen(), в то время как Symbol() используется в качестве первого параметра для работы с символом текущего графика.

PERIOD_M1 указывает на минутный таймфрейм, а последний параметр (в данном случае равный 2) определяет сдвиг относительно текущей свечи. Значение 0 означало бы текущую свечу, 1 — предыдущую, а 2 — свечу перед двумя последующими.

O1, H1, L1 и C1 означают, соответственно, цены открытия (Open), максимума (High), минимума (Low) и закрытия (Close) свечи Candle1. O2, H2, L2, C2 и O3, H3, L3, C3 означают то же самое применительно к свечам Candle2 и Candle3.

Ниже приведен пример определения данных переменных.

//---- Candle1 OHLC
double O1=NormalizeDouble(iOpen(Symbol(),PERIOD_M1,2),4);
double H1=NormalizeDouble(iHigh(Symbol(),PERIOD_M1,2),4);
double L1=NormalizeDouble(iLow(Symbol(),PERIOD_M1,2),4);
double C1=NormalizeDouble(iClose(Symbol(),PERIOD_M1,2),4);
//---- Candle2 OHLC
double O2=NormalizeDouble(iOpen(Symbol(),PERIOD_M1,1),4);
double H2=NormalizeDouble(iHigh(Symbol(),PERIOD_M1,1),4);
double L2=NormalizeDouble(iLow(Symbol(),PERIOD_M1,1),4);
double C2=NormalizeDouble(iClose(Symbol(),PERIOD_M1,1),4);
//---- Candle3 OHLC
double O3=NormalizeDouble(iOpen(Symbol(),PERIOD_M1,0),4);
double H3=NormalizeDouble(iHigh(Symbol(),PERIOD_M1,0),4);
double L3=NormalizeDouble(iLow(Symbol(),PERIOD_M1,0),4);
double C3=NormalizeDouble(iClose(Symbol(),PERIOD_M1,0),4);

Теперь настала очередь условных выражений, в частности тех, которые отслеживают появление одного из трех описанных паттернов.

Паттерн 1, показанный на рисунке 7, считается сформировавшимся, если следующее выражение является верным.

if(C1 >= O1 && L1 < O1 && ((O1-L1)>(C1-O1)) && C2 >= O2 && C2 > H1 && L2 > L1)

Данный паттерн требует соблюдения шести условий. Первое, C1>=O1, устанавливает, что Candle1 должна быть восходящей свечой, или цена ее открытия должна быть равна цене закрытия. L1<O1 устанавливает, что ценовой минимум Candle1 должен быть ниже цены открытия. Следующее условие гласит, что разница цены открытия Candle1 и ее минимальной цены должна превышать разницу цен закрытия и открытия Candle1. Другими словами, нижняя тень Candle1 должна быть длиннее тела.

Четвертое условие — цена закрытия Candle2 должна превышать или равняться цене открытия. C2>H1 требует, чтобы Candle2 закрывался выше максимума Candle1. И последнее, минимум Candle2 должен быть выше минимума Candle1.

При соблюдении всех этих условий паттерн 1 считается сформированным, поэтому приведенный ниже код открывает ордер на покупку.

Ордер имеет объем 0.1, проскальзывание 5, стоп-лосс равен 10 пипсам ниже цены Bid, а тейк-профит на 50 пипсов выше цены Bid.

 //---- Паттерн 1 - бычий 
 if(C1 >= O1 && L1 < O1 && ((O1-L1)>(C1-O1)) && C2 >= O2 && C2 > H1 && L2 > L1)
  { 
   OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-10*Point,Bid+50*Point);
   return;
  }

Для открытия ордера на продажу условия должны быть изменены для соответствия медвежьему паттерну, аналогичному тому, что изображен на рисунке 8. Параметры функции OrderSend() также будут отличаться необходимым образом.

Необходимый фрагмент кода приведен ниже:

 //---- Паттерн 1 - медвежий
 if(C1 <= O1 && H1 > O1 && ((H1-O1)>(O1-C1)) && C2 <= O2 && C2 < L1 && H2 < H1)
  { 
   OrderSend(Symbol(),OP_SELL,0.1,Bid,5,Ask+10*Point,Ask-50*Point);
   return;
  }

Аналогичный код будет использоваться для размещения рыночных ордеров при появлении Паттернов 2 и 3.

Бычий паттерн 2 ("пинцет") имеет следующие условия:

 //---- Паттерн 2 - бычий
 if(C1 < O1 && C2 > O2 && ((O1-C1)>(H1-O1)) && ((O1-C1)>(C1-L1)) && ((C2-O2)>(H2-C2)) && ((C2-O2)>(O2-L2)) && O2 <= C1 && O2 >= L1 && C2 >= O1 && C2 <= H1)
  { 
   OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-10*Point,Bid+50*Point);
   return;
  }

Код медвежьего паттерна 2:

 //---- Паттерн 2 - медвежий
 if(C1 > O1 && C2 < O2 && ((C1-O1)>(H1-C1)) && ((C1-O1)>(O1-L1)) && ((O2-C2)>(H2-O2)) && ((O2-C2)>(C2-L2)) && O2 >= C1 && O2 <= H1 && C2 <= O1 && C2 >= L1)
  { 
   OrderSend(Symbol(),OP_SELL,0.1,Bid,5,Ask+10*Point,Ask-50*Point)
   return;
  }

Наконец, паттерн 3 требует соблюдения следующих условий для покупки и продажи, соответственно:

 //---- Паттерн 3 - бычий
 if(C1 > O1 && ((C2-O2)>=(H2-C2)) && C2 > O2 && C2 > C1)
  { 
   OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-10*Point,Bid+50*Point);
   return;
  }

 //---- Паттерн 3 - медвежий
 if(C1 < O1 && ((O2-C2)>=(C2-L2)) && C2 < O2 && C2 < C1)
  { 
   OrderSend(Symbol(),OP_SELL,0.1,Bid,5,Ask+10*Point,Ask-50*Point)
   return;
  }
Некоторые параметры ордеров, такие как стоп-лосс и тейк-профит, также могут быть установлены в виде переменных, а не объявлены явно, как в примерах выше.


4. Сочетание поддержки/сопротивления с ценовым действием

Теперь пришло время объединить код ценового действия с дополнительным кодом, отслеживающим контрольные уровни поддержки и сопротивления.

Советник ждет, пока цена не дойдет до определенного уровня. Как только уровень достигнут, советник отслеживает типы ценового действия, представленные паттернами 1-3. При этом могут быть обнаружены все три паттерна, бычьи или медвежьи, либо только один, либо какое-то небольшое их число. Следующий код использует еще две переменные, чтобы проверить, достигла ли цена определенного уровня. В нашем случае это 1.09000 для EURUSD.

Для данного примера рассматривается ситуация, когда EURUSD торгуется ниже 1.09000 в момент срабатывания кода.

double ref=1.09000;
int refhit=0;

if(O2 < ref && C3 >= ref)
  {
   refhit=1;
   return;
  } 

Переменная ref обозначает отслеживаемый контрольный ценовой уровень (поддержки, сопротивления или срединный). Переменная refhit описывает текущее состояние рынка (достигнут ли контрольный ценовой уровень или нет). Refhit может быть равен 0 или 1. Значение по умолчанию 0 означает, что контрольный ценовой уровень не достигнут.

При соблюдении условий эти переменные отслеживают касание ценой контрольного уровня. Добавим указанные переменные к описанному выше коду ценового действия.

В примере с парой EURUSD переменные будут отслеживать преодоление бычьим паттерном 3 уровня 1.09000.

После добавления переменных паттерн 3 выглядит так:

  if(refhit==1 && C1 > O1 && ((C2-O2)>=(H2-C2)) && C2 > O2 && C2 > C1 && C1 > ref && C2 > ref)
  { 
   OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-10*Point,Bid+50*Point);
   return;
  }

Первое дополнительное условие, refhit==1, требует, чтобы цена достигла или преодолела уровень, указанный переменной ref. В данном случае это 1.09000. Помните, что рынок торгуется ниже уровня 1.09000 до его достижения. Два новых добавленных условия требуют, чтобы обе свечи паттерна 3 закрывались выше переменной ref, равной 1.09000.

Рисунок 16 показывает краткосрочный торговый диапазон на паре EURUSD, состоящий из поддержки (1.07660) и сопротивления (1.07841).

Рис. 16. EURUSD

Рис. 16. EURUSD

В крайней правой части скриншота видно, что рынок торгуется почти ровно посередине между двумя уровнями.

Советник будет рассматривать возможность покупки возле уровня поддержки (1.07660). Так как цена не всегда достигает поддержки или сопротивления, советник может использовать и близлежащие уровни.

В данном случае в качестве дополнительного контрольного уровня выступает 1.07690 (уровень, на 3 пипса превышающий поддержку). Советник отслеживает появление бычьих паттернов 1-3.

//---- Определение переменных ------------------
//---- Candle1 OHLC
double O1=NormalizeDouble(iOpen(Symbol(),PERIOD_M1,2),4);
double H1=NormalizeDouble(iHigh(Symbol(),PERIOD_M1,2),4);
double L1=NormalizeDouble(iLow(Symbol(),PERIOD_M1,2),4);
double C1=NormalizeDouble(iClose(Symbol(),PERIOD_M1,2),4);
//---- Candle2 OHLC
double O2=NormalizeDouble(iOpen(Symbol(),PERIOD_M1,1),4);
double H2=NormalizeDouble(iHigh(Symbol(),PERIOD_M1,1),4);
double L2=NormalizeDouble(iLow(Symbol(),PERIOD_M1,1),4);
double C2=NormalizeDouble(iClose(Symbol(),PERIOD_M1,1),4);
//---- Candle3 OHLC
double O3=NormalizeDouble(iOpen(Symbol(),PERIOD_M1,0),4);
double H3=NormalizeDouble(iHigh(Symbol(),PERIOD_M1,0),4);
double L3=NormalizeDouble(iLow(Symbol(),PERIOD_M1,0),4);
double C3=NormalizeDouble(iClose(Symbol(),PERIOD_M1,0),4);

double ref=1.07690;
int refhit=0;
//-----------------------------------------

int start()
 {
 //---- Проверка контрольного уровня
 if(O2 < ref && C3>=ref)
  {
   refhit=1;
   return;
  } 
 //--- Паттерн 1 - бычий 
 if(refhit==1 && C1 >= O1 && L1 < O1 && ((O1-L1)>(C1-O1)) && C2 >= O2 && C2 > H1 && L2 > L1 && C1 > ref && C2 > ref)
  { 
   OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-10*Point,Bid+100*Point);
   return;
  }
 //--- Паттерн 2 - бычий
 if(refhit==1 && C1 < O1 && C2 > O2 && ((O1-C1)>(H1-O1)) && ((O1-C1)>(C1-L1)) && ((C2-O2)>(H2-C2)) && ((C2-O2)>(O2-L2)) && O2 <= C1 && O2 >= L1 && C2 >= O1 && C2 <= H1 && C1 > ref && C2 > ref)
  { 
   OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-10*Point,Bid+100*Point);
   return;
  }
 //--- Паттерн 3 - бычий
 if(refhit==1 && C1 > O1 && ((C2-O2)>=(H2-C2)) && C2 > O2 && C2 > C1 && C1 > ref && C2 > ref)
  { 
   OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-10*Point,Bid+100*Point);
   return;
  }
 //---
return;
}

Рис. 17. Разворот EURUSD

Рис. 17. Разворот EURUSD


Рис. 18. Вход на EURUSD

Рис. 18. Вход на EURUSD


Рис. 19. Выход на EURUSD

Рис. 19. Выход на EURUSD

Все коды бычьих паттернов требуют достижения рынком уровня 1.07690 и закрытия свечей Candle1 и Candle2 выше него.

Также уровни тейк-профита были удвоены по сравнению с предыдущими примерами. Рис. 17 показывает, что рынок повернул вниз, ненадолго преодолел уровень 1.07690 и достиг 1.07670, перед тем как развернуться вверх. В результате переменная refhit стала равна 1.

Вскоре после разворота вверх сформировался паттерн 3. На уровне 1.07740 была открыта позиция на покупку, как показано на рис. 18. (При открытии Candle3 цена Bid составляла 1.07720. С учетом разрешенного проскальзывания 5, ордер был исполнен по цене 1.07740.) Как видно на рисунке 19, с этого момента начался сильный бычий тренд. Уровень стоп-лосс не был активирован, позиция закрылась по тейк-профиту на уровне 1.08740.


Заключение

Как видно из приведенных примеров, использование ценового действия совместно с уровнями поддержки и сопротивления может оказаться весьма эффективным в определении условий входа.

Приведенный MQL4-код, разумеется, не полон и призван лишь упростить создание полноценного советника. Основная цель статьи заключалась в описании методологии торговли. Другие паттерны ценового действия также могут быть превращены в код и реализованы в составе советника. Удачи во всех ваших торговых начинаниях!


Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/1734

Прикрепленные файлы |
Последние комментарии | Перейти к обсуждению на форуме трейдеров (7)
Михаил
Михаил | 22 июн. 2015 в 20:37
M1 для поиска "ценового действия" ))  - по моему хардкор
khorosh
khorosh | 23 июн. 2015 в 04:22
Примитивизм в изобразительном искусстве, как вид, имеет право на существование, а здесь почему нет? Торговля на финансовых и товарно-сырьевых рынках  - это же тоже искусство.)
Victor Nikolaev
Victor Nikolaev | 23 июн. 2015 в 05:22
khorosh:
Примитивизм в изобразительном искусстве, как вид, имеет право на существование, а здесь почему нет? Торговля на финансовых и товарно-сырьевых рынках  - это же тоже искусство.)
Код сырой. Логика хромает. Надо автору доводить все до ума. Публиковать рано было
Alexander Lasygin
Alexander Lasygin | 3 июл. 2015 в 22:25
Victor Nikolaev:
Код сырой. Логика хромает. Надо автору доводить все до ума. Публиковать рано было
Согласен код очень сырой. Кто знаком со мной по форуму знает что я программер не очень, но столько ..... даже мне не под силу. А вот на счет того что пускай пишет это в точку. Самовыражение это есть отличительная черта гомо сапиенс ( человек думающий). С самим принципом я согласен частично у меня более примитивная но достаточно эффективная метода . При всем своем на полном автомате.
Vitaly Muzichenko
Vitaly Muzichenko | 11 июл. 2015 в 00:52
Victor Nikolaev:
Код сырой. Логика хромает. Надо автору доводить все до ума. Публиковать рано было

Вот тут Я не согласен, смысл статьи не в пиаре совы чтоб её продать за кусок капусты, а сама идея достаточно неплохо изложена, кому нужен реал-код, тот напишет сам, кто не умеет - закажет.

За статью ставлю большой "+" , ну а код... это так - прилагательное.

Способ построения уровней сопротивления и поддержки средствами MQL5 Способ построения уровней сопротивления и поддержки средствами MQL5
В данной статье описывается способ нахождения четырех точек-экстремумов для дальнейшего построения по ним уровней сопротивления и поддержки. При нахождении экстремумов на графике валютной пары используется индикатор RSI. Для примера представлен код индикатора, отображающего уровни сопротивления и поддержки.
Рисование стрелочных индикаторов с использованием класса CCanvas Рисование стрелочных индикаторов с использованием класса CCanvas
В автомобилях и самолетах, на производстве и в быту нас окружают стрелочные приборы с круглой шкалой. Они применяются везде, где требуется быстрая реакция оператора на контролируемую величину. В этой статье мы познакомимся с библиотекой стрелочных приборов для MetaTrader 5.
Рецепты MQL5 - Пишем свой стакан цен Рецепты MQL5 - Пишем свой стакан цен
Эта статья научит читателей программно работать со стаканом цен, а также подробно опишет принципы работы класса CMarketBook, который органично расширит стандартную библиотеку классов MQL5 и предоставит удобные методы для работы со стаканом.
Как обезопасить себя и своего эксперта при торговле на Московской бирже Как обезопасить себя и своего эксперта при торговле на Московской бирже
В статье подробно описываются методы работы, призванные обеспечить безопасность совершения торговых операций на биржевых и малоликвидных рынках, на примере срочной секции Московской биржи. Статья является логическим продолжением статьи "Основы биржевого ценообразования на примере срочной секции Московской биржи", в которой даны теоретические основы биржевой торговли, но носит более практический характер.