Стратегия Kijun-Sen Bandit форекс

Подборка торговых стратегий - фондовая биржа, срочный рынок, форекс.
Ответить
tehnogen
Администратор
Сообщения: 209
Зарегистрирован: 19 фев 2020 19:01

Стратегия Kijun-Sen Bandit форекс

Сообщение tehnogen »

Стратегия форекс «Kijun-Sen Bandit» включает в себя 6 индикаторов форекс и она хорошо подходит для основных валютных пар: EURUSD, GBPUSD, USDJPY и USDCHF, а при желании, может быть распространена на остальные валютные пары, торговля ведется на интервале H1.

Используемые индикаторы форекс:
1) Индикатор форекс Kijun-Sen (26,9) — является Основным индикатором в данной стратегии форекс, т.к. он дает возможность точки равновесия на рынке. Если он пробит ценой в одну из сторон — это признак
изменения моментума цены на рынке.
2) Экспоненциальные скользящие средние ЕМА (8) — красная и EMA (24) — синяя.
3) Индикатор форекс BBands_Stop_v1 — основан на полосах Боллинджера. Он позволяет определить уровни выставления стоп-лосса и сигнализирует о смене тренда на рынке.
4) Трендовый индикатор форекс ADX (14) с уровнями 20, 30 и 40.
5) Индикатор форекс – MACD (12,26,9).
6) Cтохастический осциллятор — Stochastic (30,10,10), который необходимо поместить на индикатор форекс MACD. Его используют для подтверждения торговых сигналов — определения выхода цены из зоны перекупленности и перепроданности (пересечение с уровнями: 20 и 80).

Торговая позиция на ПОКУПКУ открывается, при выполнении следующих условий:
kijun_sen1.gif
1) Цена закрывается над линией индикатора Kijun-Sen (желтая линия).
2) красная ЕМА (8) пересекает синюю EMA (24) снизу вверх.
3) Индикатор BBands_Stop_v1 рисует под ценой Большую красную точку (далее превращается в линию с точками).
4) линия ADX и линия +DI должны располагаеться над своим уровнем 20 и возрастает.
5) Гистограмма индикатора MACD расположена на положительной стороне (выше своей нулевой линии).
6) 1-й страховочный стоп-лосс следует установить выше на 1-2 тика уровня индикатора форекс BBands_Stop_v1. А далее его следует переносить по ходу движения цены выше следующих прорисованных точек этого же индикатора (BBands_Stop_v1).

Правила выхода из торговой позиции по стратегии форекс «Kijun-Sen Bandit»
Закрыть сделку следует в любом из 2-х случаях:

1) Свеча закрылась на противоположной стороне индикатора Kijun Sen.
2) Обратное пересечение 2-х экспоненциальных скользящих средних.

Для открытия и закрытия сделок на ПРОДАЖУ действуют противоположные правила.
Дополнение: после того, как цена проходит 20-30 пунктов в направлении движения торговой позиции — стоп-лосс следует переместить на уровень безубыточности. А так же, при желании можно закрыть часть позиции.

И так все следующие индикаторы следует поместить в папку …\experts\indicators\, а шаблон в папку …\templates\ (или просто загрузить шаблон кликая правой клавишей по графику в МТ4):

Видео Стратегия форекс «Kijun-Sen Bandit»:



Код индикатора — BBands_Stop_v1.mq4
//+------------------------------------------------------------------+
//| BBands_Stop_v1. mq4 |
// / Copyright � 2006, TrendLaboratory Ltd. |
//| http://finance.groups.yahoo.com/group/TrendLaboratory |
//| E-mail: igorad2004@list.ru |
//+------------------------------------------------------------------+
#имущественное авторское право " Copyright � 2006, TrendLaboratory Ltd."
#property link "http://finance.groups.yahoo.com/group/TrendLaboratory"

#свойство indicator_chart_window
#Property indicator_buffers 6
#property indicator_color1 Шартрез
#свойство indicator_color2 оранжевый
#property indicator_color3 Шартрез
#свойство indicator_color4 оранжевый
#property indicator_color5 Шартрез
#property indicator_color6 оранжевый
//---- входной параметр
extern int Length=20; / / период Полос Боллинджера
extern int Deviation=2; / / отклонение
extern double MoneyRisk=0,5; / / Коэффициент смещения
extern int Signal=1; / / режим отображения сигналов: 1-сигналы & остановки; 0-только остановки; 2-только сигналы;
extern int Line=1; / / режим отображения строки: 0-Нет, 1-да
extern int Nbars=1000;
//---- индикаторный буфер
двойной UpTrendBuffer[];
двойной понижательный тренд[];
двойной восходящий сигнал тренда[];
двойной нисходящий сигнал[];
двойной восходящий тренд[];
двойной нисходящий тренд[];
//+------------------------------------------------------------------+
// / Функция инициализации пользовательского индикатора |
//+------------------------------------------------------------------+
int init()
{
строка short_name;
//---- индикаторная линия

SetIndexBuffer(0, UpTrendBuffer);
SetIndexBuffer(1, DownTrendBuffer);
SetIndexBuffer(2, UpTrendSignal);
SetIndexBuffer(3, DownTrendSignal);
SetIndexBuffer(4, UpTrendLine);
SetIndexBuffer(5, DownTrendLine);
SetIndexStyle(0, DRAW_ARROW);
SetIndexStyle(1, DRAW_ARROW);
SetIndexStyle(2, DRAW_ARROW);
SetIndexStyle(3, DRAW_ARROW);
SetIndexStyle(4, DRAW_LINE);
SetIndexStyle(5, DRAW_LINE);
Сетиндексарроу(0,159);
Сетиндексарроу(1,159);
Сетиндексарроу(2,108);
Сетиндексарроу (3,108);
IndicatorDigits(MarketInfo (Symbol (), MODE_DIGITS));
// - - - - имя для метки DataWindow и индикатора subwindow
short_name= " BBands Stop ("+длина+", " + отклонение+")";
IndicatorShortName(short_name);
SetIndexLabel(0, " UpTrend Stop");
SetIndexLabel(1, " Остановка Нисходящего Тренда");
SetIndexLabel(2, " Сигнал Восходящего Тренда");
SetIndexLabel(3, " Сигнал Нисходящего Тренда");
SetIndexLabel(4, " Восходящая Линия Тренда");
SetIndexLabel(5, " Линия Нисходящего Тренда");
//----
SetIndexDrawBegin(0, Длина);
SetIndexDrawBegin(1, Длина);
SetIndexDrawBegin(2, Длина);
SetIndexDrawBegin(3, Длина);
SetIndexDrawBegin(4, Длина);
SetIndexDrawBegin(5, Длина);
//----
возврат(0);
}

//+------------------------------------------------------------------+
// / Bollinger Bands_Stop_v1 |
//+------------------------------------------------------------------+
int start()
{
int i, сдвиг, тренд;
двойной smax[25000], smin[25000], bsmax[25000], bsmin[25000];

для (shift=Nbars; shift>=0; shift--)
{
UpTrendBuffer[shift]=0;
DownTrendBuffer[shift]=0;
UpTrendSignal [shift]=0;
DownTrendSignal [shift]=0;
UpTrendLine[shift]=EMPTY_VALUE;
DownTrendLine[shift]=EMPTY_VALUE;
}

для (shift=Nbars-Length-1; shift>=0; shift--)
{
smax[shift]=iBands(NULL, 0, длина, отклонение, 0, PRICE_CLOSE, MODE_UPPER, shift);
smin[shift]=iBands(NULL, 0, длина, отклонение, 0, PRICE_CLOSE, MODE_LOWER, shift);

если (закрыть[shift]>smax[shift+1]) тренд=1;
если (закрыть [shift];

если (тренд>0 & & smin [shift]>];
если (тренд<0 && smax [shift]>smax[shift+1]) smax [shift]=smax[shift+1];

bsmax [shift]=smax[shift]+0.5*(MoneyRisk-1)*(smax[shift] - smin[shift]);
bsmin [shift]=smin[shift]-0,5*(MoneyRisk-1)*(smax[shift] - smin[shift]);

если (тренд>0 && bsmin [shift]>];
если (тренд<0 && bsmax [shift]>bsmax[shift+1]) bsmax [shift]=bsmax[shift+1];

если (тренд>0)
{
if (Signal>0 & & UpTrendBuffer[shift+1]==-1.0)
{
UpTrendSignal [shift]=bsmin[сдвиг];
UpTrendBuffer[shift]=bsmin[shift];
если (линия>0) восходящая линия тренда [сдвиг]=bsmin[сдвиг];
}
еще
{
UpTrendBuffer[shift]=bsmin[shift];
если (линия>0) восходящая линия тренда [сдвиг]=bsmin[сдвиг];
UpTrendSignal [shift]=-1;
}
если (Сигнал==2) UpTrendBuffer [shift]=0;
DownTrendSignal [shift]=-1;
DownTrendBuffer[shift]=-1,0;
DownTrendLine[shift]=EMPTY_VALUE;
}
если (тренд)
{
if (Signal>0 & & DownTrendBuffer[shift+1]==-1.0)
{
DownTrendSignal [shift]=bsmax[сдвиг];
DownTrendBuffer[shift]=bsmax[shift];
если (линия>0) нисходящая линия тренда [сдвиг]=bsmax[сдвиг];
}
еще
{
DownTrendBuffer[shift]=bsmax[shift];
если (линия>0)нисходящая линия тренда [сдвиг]=bsmax[сдвиг];
DownTrendSignal [shift]=-1;
}
если (Сигнал==2) DownTrendBuffer [shift]=0;
UpTrendSignal [shift]=-1;
UpTrendBuffer[shift]=-1,0;
UpTrendLine[shift]=EMPTY_VALUE;
}

}
возврат(0);
}


Код индикатора EMA-Crossover_Signal.mq4 (рисует стрелки при пересечении мувингов)
//+------------------------------------------------------------------+
// / EMA-Crossover_Signal. mq4 |
// / Copyright � 2005, Jason Robinson (jnrtrading) |
//| http://www.jnrtading.co.uk |
//+------------------------------------------------------------------+

/*
+------------------------------------------------------------------+
| Позволяет ввести два периода ema, а затем он покажет вам на |
| Через какую точку они перешли. Это более usful на более короткие |
/ периоды, которые затемняются барами / свечами и когда |
| уровень масштабирования отсутствует. Также позволяет затем удалить emas |
| из графика. (EMA первоначально установлены на 5 и 6) |
+------------------------------------------------------------------+
*/
#property copyright " Copyright � 2005, Jason Robinson (jnrtrading)"
#property link "http://www.jnrtrading.co.uk"

#свойство indicator_chart_window
#Property indicator_buffers 2
#property indicator_color1 зеленый
#свойство indicator_color2 Красный

двойной Кросс-АП[];
двойной Кроссдаун[];
extern int FasterEMA = 5;
extern int SlowerEMA = 6;
//+------------------------------------------------------------------+
// / Функция инициализации пользовательского индикатора |
//+------------------------------------------------------------------+
int init()
{
//---- указатели
SetIndexStyle(0, DRAW_ARROW, пустой);
SetIndexArrow(0, 233);
SetIndexBuffer(0, CrossUp);
SetIndexStyle(1, DRAW_ARROW, пустой);
SetIndexArrow(1, 234);
SetIndexBuffer(1, CrossDown);
//----
возврат(0);
}
//+------------------------------------------------------------------+
// / Функция деинициализации пользовательского индикатора |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
возврат(0);
}
//+------------------------------------------------------------------+
// / Функция итерации пользовательского индикатора |
//+------------------------------------------------------------------+
int start() {
int limit, i, счетчик;
дважды быстрее, медленнее, медленнее, медленнее, медленнее, медленнее, медленнее ... ;
двойной ряд, AvgRange;
int counted_bars=IndicatorCounted();
// - - - - проверьте наличие возможных ошибок
если(counted_bars);
// - - - - последний подсчитанный бар будет пересчитан
если (counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

ибо(i = 0; i) {

счетчик=i;
Диапазон=0;
AvgRange=0;
для (счетчик=i; счетчик)
{
AvgRange=AvgRange+MathAbs(High [counter] - Low [counter]);
}
Диапазон=AvgRange / 10;

fasterEMAnow = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i);
fasterEMAprevious = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);
fasterEMAafter = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);

slowerEMAnow = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i);
slowerEMAprevious = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);
slowerEMAafter = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);

если ((fasterEMAnow > slowerEMAnow) & & (fasterEMAprevious >< slowerEMAprevious) & & (fasteremafter > sloweremafter)) {
CrossUp = низкий - диапазон*0,5;
}
иначе если ((fasterEMAnow < slowerEMAnow) & & (fasterEMAprevious > slowerEMAprevious) & & (fasteremafter < slowerEMAnow) & & (fasterEMAprevious >)) {
CrossDown = высокий + диапазон*0,5;
}
}
возврат(0);
}



Код индикатора Kijun-Sen.mq4
//+------------------------------------------------------------------+
//| Ichimoku.mq4 |
//| Copyright � 2004, MetaQuotes Software Corp. |
//| Copyright � 2004, AlexSilver � ����� + |
//| http://www.metaquotes.net/ |
//| http://www.viac.ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright � 2004, AlexSilver � ����� +"
#property link "http://www.viac.ru/"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
//---- input parameters
extern int Kijun=26;
extern int KijunShift=9;
//---- buffers
double Kijun_Buffer[];
//----
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- ����� Kijun-sen
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,Kijun_Buffer);
SetIndexDrawBegin(1,Kijun+KijunShift-1);
SetIndexShift(1,KijunShift);
SetIndexLabel(1,"Kijun Sen");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Ichimoku Kinko Hyo |
//+------------------------------------------------------------------+
int start()
{
int i,k;
double u=0;
int counted_bars=IndicatorCounted();
double high,low,price;
//----
if(Bars<=Kijun) return(0);
//---- initial zero
if(counted_bars<1)
{
for(i=1;i<=Kijun;i++) Kijun_Buffer[Bars-i]=0;
}

//---- Kijun Sen
i=Bars-Kijun;
if(counted_bars>Kijun) i=Bars-counted_bars-1;
while(i>=0)
{
high=High; low=Low; k=i-1+Kijun;
while(k>=i)
{
price=High[k];
if(high<price) high=price;
price=Low[k];
if(low>price) low=price;
k--;
}
Kijun_Buffer[i+KijunShift]=(high+low)/2;
i--;
} i=KijunShift-1;
while(i>=0)
{
high=High[0]; low=Low[0]; k=Kijun-KijunShift+i;
while(k>=0)
{
price=High[k];
if(high<price) high=price;
price=Low[k];
if(low>price) low=price;
k--;
}
Kijun_Buffer=(high+low)/2;

i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+



Код индикатора b-clock modified.mq4 (показывает сколько времени осталось до закрытия свечи)
//+------------------------------------------------------------------+
// / b-clock.mq4 |
// / Core time code by Nick Bilak |
//| http://metatrader.50webs.com/ beluck[at]gmail.com |
// / изменено adoleh2000 и dwt5 |
//+------------------------------------------------------------------+

#property copyright " Copyright � 2005, Ник Билак"
#property link "http://metatrader.50webs.com/"

#свойство indicator_chart_window

//---- буфера
двойной s1[];

//+------------------------------------------------------------------+
// / Функция инициализации пользовательского индикатора |
//+------------------------------------------------------------------+

int init()

{

}
возврат(0);


//+------------------------------------------------------------------+
// / Функция итерации пользовательского индикатора |
//+------------------------------------------------------------------+
int start()
{

двойной i;
int m, s, k;
m=Time[0]+Period()*60-CurTime();
i=m / 60,0;
s=m%60;
m=(m-m%60) / 60;
Комментарий (m + "минут" + s + " секунд осталось до конца бара");


ObjectDelete ("время");

if (ObjectFind ("time")!= 0)
{
ObjectCreate ("time", OBJ_TEXT, 0, Time[0], Close[0]+ 0.0005);
ObjectSetText ("time",");
}
еще
{
ObjectMove ("time", 0, Time[0], Close[0]+0.0005);
}


возврат(0);
}
//+------------------------------------------------------------------+




Источник: https://strategy4you.ru



Ответить

Моды и расширения phpBB