Введение
Станислав Чувашов предложил методику своей разработки по торговле на
Forex при помощи построения паттерна "Вилка Чувашова". В этой методике
подход к анализу состояния рынка перекликается с подходом Т. Демарка к
построению линий тренда для последнего ближайшего отрезка времени.
1. Метод построения линий паттерна "Вилка Чувашова"
Для построения "Вилки Чувашова" используется
индикатор фракталов. На графике цен (смотри рис ниже) через два соседних
фрактала 1 и 2 строим основную трендовую линию. Основную трендовую
линию вверх строим по нижним фракталам, основную трендовую линию вниз
строим по верхним фракталам.

Рисунок 1. Построение "Вилки Чувашова"
Ждем, когда сформируется такой же фрактал 3 после
пробоя основной трендовой линии в противоположную сторону тренда.
Ответвленная линия, построенная через 2 и 3 фракталы в составе с
основной трендовой линией, образуют паттерн "Вилка Чувашова" (ВЧ). Так
ее назвал автор Станислав Чувашов.
Основное требование к паттерну ВЧ заключается в том,
чтобы ответвленная линия вилки была направлена в сторону тренда. Когда
пробиваются ответвленные линии, возникают сигналы: для продажи при
тренде вверх и для покупки при тренде вниз. Стратегию и методику торгов
от автора можно посмотреть и послушать, скачав видео урок по Вилке Чувашова.
Ниже приведена последовательность формирования
паттернов "Вилки Чувашова" на примере 4-х последовательных дней пары
EURUSD на таймфрейме H1.

Рисунок 2. Возникновение паттерна "Вилка Чувашова"
На рис. 2 показано возникновение паттерн "Вилка
Чувашова" (ВЧ) на восходящем тренде, предвещая окончание тренда или
перехода его во флет. МТС открыла позицию SELL.

Рисунок 3. Новый паттерн ВЧ
Спустя 6 баров (часов) образовался новый паттерн ВЧ с
более широкой вилкой (рис. 3), подтверждающий предыдущий паттерн о
развороте тренда или перехода тренда во флет.
МТС закрыла предыдущую позицию SELL по Take Profit, и открыла позицию SELL снова по условиям паттерна ВЧ.

Рисунок 4. Подтверждение паттерна ВЧ
Рис. 4 показывает, что тренд, развернувшись 11
октября, пошел вниз, что подтверждает в начале 12 октября паттерн ВЧ,
направленный вниз.
В середине дня наметился новый разворот тренда, т.к.
цена направилась в сторону ответвленной линии ВЧ. После пересечения
ответвленной линии можно закрывать имеющуюся позицию SELL, и открывать
позицию BUY.

Рисунок 5. Разворот тренда
Как видно из рис. 5, оставшуюся часть дня 12 октября и
начало дня 13 октября, тренд продолжал двигаться вверх. Ближе к
середине дня образовался паттерн ВЧ, направленный вверх. В середине дня
13 октября снова наметился разворот тренда вниз. После сформировавшихся
сигналов МТС закроет позицию BUY и откроет позицию SELL.
Приведенную выше последовательность формирования
паттернов можно проследить на тестере стратегий в визуальном режиме
лучше на медленной скорости, протестировав прикрепленный файл в качестве
эксперта Vilka_Ch_Demo20.mq4.

Рисунок 6. Торговые сигналы
Рисунок 6 дает некоторые пояснения по сигналам открытия и закрытия позиций.
2. Некоторые особенности предлагаемого кода "Вилка Чувашова" в MQL4
Перечень переменных, функции открытия и закрытия
ордеров, функции нанесения значков и трендовых линий в ниже приведенном
коде остаются без пояснений и в статье не приводятся, т.к. их можно
посмотреть в программах прикрепленных файлов и они достаточно просты для
понимания.
Обратите внимание на то, что некоторые переменные
внесены в главную функцию программы Start(), поскольку эти переменные
должны обнуляться при каждом тике.
Начинаем с поиска последних трех фракталов, следующих
друг за другом, лежащих, например, на нисходящем тренде. В этом случае
мы получим вилку, направленную вниз. В случае пробоя ответвленной линии
вверх можно будет открывать позицию BUY.
for (i=3;i<=25;i++) { if(High[i]>High[i+1] && High[i]>High[i+2] && High[i]>High[i-1] && High[i]>High[i-2]) { VFN++; if(VFN==1) { Vnf1=i; VMF1=High[i]; tim1=iTime(NULL,0,i); } if(VFN==2) { VMF2=High[i]; if(VMF2>VMF1) { Vnf2=i; tim2=iTime(NULL,0,i); } } if(VFN==3) { VMF3=High[i]; if(VMF3>VMF2) { Vnf3=i; tim3=iTime(NULL,0,i); } }
if(VFN==3) break;
} }
В приведенном выше цикле мы нашли три фрактала,
расположенных заданным образом, т.е. 1-й фрактал ниже 2-го фрактала, и
2-ой фрактал ниже 3-го фрактала. 3-й и 2-ой фракталы являются опорными
точками для построения Основой трендовой линии и они являются базовыми
для построения.
А вот 3-й фрактал (его значение) может оказаться ниже проекции основной трендовой линии на вертикале 1-го фрактала:

Рисунок 7. Уточнение положения реперной точки
Поэтому вводится ряд операторов, уточняющих положение 3-ей реперной точки в соответствии с требованиями к построению паттерна.
if(VMF3>VMF2 && VMF2>VMF1) { V_down1=((VMF3-VMF2)/(Vnf3-Vnf2)); PricePrL1_1f=VMF2-(Vnf2-Vnf1)*V_down1; if(VMF1>PricePrL1_1f) { V_down2=((VMF2-VMF1)/(Vnf2-Vnf1)); PricePrL2_1b=VMF1-Vnf1*V_down2; PricePrL1_1b=VMF2-Vnf1*V_down1; patternBuy = true; patternSell = false; DelLine(); CreateLine(); CreateArrow(); } }
Если Max цена 1-го фрактала выше цены проекции
ОСНОВНОЙ(1) трендовой линии на этом же фрактале, условия построения
Вилки Чувашова выполнены.
Таким образом, определился паттерн "Вилка Чувашова" - наносим на график значки и линии паттерна.
Теперь надо определиться с условиями и параметрами открываемой позиции BUY.
if(OrdersTotal()<1) {
if(patternBuy==true) {
Лучше если размах цен за последние 25 баров будет составлять не менее 50 пунктов.
Введем дополнительные условия, например, скользящая
средняя периода 150 за последние 24 или 48 часов (баров) будет
направлена вниз и цена будет отстоять от этого индикатора на 89 пунктов
ниже (уровень Fibo89s).
if((High[iHighest(Symbol(),Period(),MODE_HIGH,25,0)]-Low[iLowest(Symbol(),Period(),MODE_LOW,25,0)])>=50*Point) { if(Bid<Ma144_1-89*Point && (Ma144_1-Ma144_48)<0) {
Основным условием открытия позиции является пересечение ценой ответвленной линии паттерна.
Например, оно может быть таким:
if((High[1]>PricePrL2_1b || Close[1]>PricePrL2_1b || (Open[1]<Close[1] && Close[1]>PricePrL2_1b) || Bid>PricePrL2_1b) && Bid<PricePrL2_1b+3*Point) {
Далее определяемся с параметрами Stop Loss и Take
Profit. Устанавливаем Stop Loss, равное минимальному значению цены на
отрезке от "0" бара до бара 2-го фрактала т.е. на Low уровне первого
фрактала. Устанавливаем Take Profit на уровне 0,6 от размаха цен.
Поскольку в этой стратегии применяется отслеживание
по нижним фракталам восходящего тренда, то Take Profit установим больше
двух минимальных размахов цен, например 100 - 200 пунктов.
{ SL_B=(Bid-Low[iLowest(Symbol(),Period(),MODE_LOW,Vnf2,0)])/Point; if(SL_B<StopLevel) SL_B=Bid-(StopLevel+2)*Point; TP_B=120; Print(" OP_BUY вилка Чувашова"," VMF1 = ",VMF1," < ",PricePrH1_1f); Op_Buy_Ch(); return; }
Поиск последних трех следующих друг за другом
фракталов, лежащих на восходящем тренде, определяем по нижним фракталам,
и весь процесс для построения паттерна, направленного вверх производим,
применяя логику построения паттерна на нисходящем тренде.
for (i=OrdersTotal()-1; i>=0; i--) { if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка выбора ордера = ", GetLastError()); } if(OrderType()==OP_BUY ) {
Если была открыта позиция BUY и сформировался паттерн, направленный
вверх, это значит, что цена развернулась и пошла вниз. Надо закрывать
позицию BUY.
if(patternSell==true) { Print(" закрытие поз BUY - т.к. сформировался противоположный паттерн"); Close_B_Ch(); return; }
Переходим к модификации открытой позиции BUY.
Процесс модификации разбит на 3-и этапа. На первом
этапе подтягиваем Stop Loss поближе к "безубытку". На втором этапе при
достижении ценой положительного профита, равного или большего размера
Stop Loss, передвигаем Stop Loss на уровень открытия позиции.
if((Bid-OrderOpenPrice())>SL_B*Point && OrderStopLoss()<OrderOpenPrice()) { OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss()+(SL_B/2)*Point, OrderTakeProfit()+1*Point, 0, Red); return; }
if((Bid-OrderOpenPrice())>SL_B*Point && OrderStopLoss()<OrderOpenPrice()) { OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss()+(SL_B+StopLevel)*Point, OrderTakeProfit()+1*Point, 0, Magenta); return; }
При достижении ценой величины профита, большего чем
1.5 размера Stop Loss, подтянем SL_B на ближайший нижний фрактал,
который должен быть выше предыдущего Stop Loss и далее по повышающимся
нижним фракталам восходящего тренда.
if((Bid-OrderOpenPrice())>=(SL_B+SL_B/2)*Point && OrderStopLoss()>=OrderOpenPrice()) { for (k=3;k<=24;k++) { if(Low[k]<Low[k+1] && Low[k]<Low[k+2] && Low[k]<Low[k-1] && Low[k]<Low[k-2]) { VlFl_L=Low[k]; if(VlFl_L>OrderStopLoss()) { tim1_L=iTime(NULL,0,k); OrderModify(OrderTicket(), OrderOpenPrice(), VlFl_L+2*Point, OrderTakeProfit()+1*Point, 0, Aqua); if(VlFl_L!=0) break; return;
Заключение
Краткий вывод таков, что при тестировании у разных
брокеров представленная пробная МТС дает примерно одинаковые
положительные результаты.
Описанная здесь методика может быть использована
трейдерами, как составная часть торговой системы. Однако требуется
доработка по добавлению фильтров открытия позиций. Предложенные здесь
фильтры могут быть усовершенствованы с учетом рекомендаций автора
методики Станислава Чувашова.
Рекомендации можно посмотреть в бесплатных 17-ти уроках Станислава Чувашова.
|