KusKus_EA
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «kuskus_ea.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
KusKus_EA — торговый советник для MetaTrader 4, написанный Робертом Хиллом в 2007 году для группы Forex-tsd. Советник анализирует ценовые данные с использованием нескольких технических индикаторов (Heikin Ashi, StepMA, Fisher, BBands Stop, а также фильтров трендов на основе EMA, LSMA, ITrend и HMA) и формирует сигналы на покупку и продажу.
В продукте реализованы управление денежным риском, стоп-лоссы, тейк-профиты, трейлинг-стоп и фильтр торговых часов по сессиям Азии, Европы и Нью-Йорка. Советник работает на одном символе одновременно с одной позицией и использует магический номер для идентификации ордеров.
Входные параметры сгруппированы в несколько блоков: управление капиталом, контроль прибыли, настройки индикаторов, параметры трендовых фильтров и торговые часы. Советник не использует внешние библиотеки API — все операции выполняются встроенными средствами MQL4.
Настройки программы
| Настройка | Описание |
|---|---|
| Change to false to shutdown money management controls. (MoneyManagement) | Управление денежным риском — Переключатель управления денежным риском. При значении false размер лота фиксируется равным Lots. |
| Change to whatever percent of equity you wish to risk. (TradeSizePercent) | Процент риска — Процент от баланса, который используется как риск при расчёте размера лота. |
| standard lot size. (Lots) | Размер лота — Стандартный размер лота для торговли при отключённом управлении денежным риском. |
| MaxLots | Максимальный лот — Максимально допустимый размер лота для одной позиции. |
| Maximum pips willing to lose per position. (StopLoss) | Стоп-лосс — Максимальное количество пунктов убытка, допустимое на одну позицию. |
| UseTrailingStop | Использовать трейлинг-стоп — Переключатель активации трейлинг-стопа для открытых позиций. |
| Change to whatever number of pips you wish to trail your position with. (TrailingStop) | Трейлинг-стоп — Расстояние в пунктах для трейлинг-стопа. |
| Expert will stop trading if equity level decreases to that level. (Margincutoff) | Порог маржи — Минимальный уровень маржи, при снижении которого советник прекращает торговлю. |
| Maximum profit level achieved. (TakeProfit) | Тейк-профит — Максимальный уровень прибыли в пунктах, достижение которого фиксирует позицию. |
| Possible fix for not getting filled or closed (Slippage) | Проскальзывание — Допустимое проскальзывание при открытии и закрытии ордеров. |
| Expert_Name | Имя эксперта — Имя эксперта, используемое в заголовке ордеров и идентификации советника. |
| s3 | Заголовок BBands Stop — Заголовок блока настроек BBands Stop. |
| Bollinger Bands Period (Length) | Период Bollinger Bands — Период Bollinger Bands для индикатора BBands Stop. |
| Deviation (Deviation) | Отклонение — Параметр отклонения для индикатора Bollinger Bands Stop. |
| Offset Factor (MoneyRisk) | Коэффициент смещения — Коэффициент смещения для индикатора BBands Stop. |
| SignalTimeFrame | Таймфрейм сигналов — Таймфрейм для расчёта сигналов индикаторов. |
| dstr0 | Заголовок фильтра D1 — Заголовок блока настроек трендового фильтра D1. |
| dstr1 | Метод 0 (D1) — Подпись метода фильтра: 0 — без фильтра. |
| dstr2 | Метод 1 (D1) — Подпись метода фильтра: 1 — MACD. |
| dstr3 | Метод 2 (D1) — Подпись метода фильтра: 2 — EMA(14). |
| dstr4 | Метод 3 (D1) — Подпись метода фильтра: 3 — LSMA(18). |
| dstr5 | Метод 4 (D1) — Подпись метода фильтра: 4 — ITrend(26). |
| dstr6 | Метод 5 (D1) — Подпись метода фильтра: 5 — HMA(16). |
| TrendD_Method | Метод фильтра (D1) — Метод фильтра тренда на графике D1: 0 — без фильтра, 1 — MACD, 2 — EMA, 3 — LSMA, 4 — ITrend, 5 — HMA. |
| TrendD_Period | Период (D1) — Период скользящей средней для фильтра тренда D1. |
| TrendD_Threshold | Порог (D1) — Порог угла для определения тренда в фильтре D1. |
| TrendD_PrevShift | Предыдущий сдвиг (D1) — Предыдущий сдвиг для расчёта угла скользящей средней в фильтре D1. |
| TrendD_CurShift | Текущий сдвиг (D1) — Текущий сдвиг для расчёта угла скользящей средней в фильтре D1. |
| TrendD_TimeFrame | Таймфрейм (D1) — Таймфрейм для анализа тренда в фильтре D1. |
| TrendD_SignalCandle | Сигнальная свеча (D1) — Сдвиг сигнальной свечи для фильтра тренда D1. |
| sD | Заголовок GMACD (D1) — Заголовок блока настроек GMACD для фильтра D1. |
| TD_FastEMA | Быстрая EMA (D1) — Период быстрой EMA для трендового фильтра на дневном графике D1. |
| TD_SlowEMA | Медленная EMA (D1) — Период медленной EMA для трендового фильтра на дневном графике D1. |
| TD_SignalSMA | Период сигнальной SMA (D1) — Период сигнальной SMA для MACD-фильтра на дневном графике D1. |
| fstr0 | Заголовок фильтра H4 — Заголовок блока настроек трендового фильтра H4. |
| fstr1 | Метод 0 (H4) — Подпись метода фильтра: 0 — без фильтра. |
| fstr2 | Метод 1 (H4) — Подпись метода фильтра: 1 — MACD. |
| fstr3 | Метод 2 (H4) — Подпись метода фильтра: 2 — EMA(14). |
| fstr4 | Метод 3 (H4) — Подпись метода фильтра: 3 — LSMA(18). |
| fstr5 | Метод 4 (H4) — Подпись метода фильтра: 4 — ITrend(26). |
| fstr6 | Метод 5 (H4) — Подпись метода фильтра: 5 — HMA(16). |
| Trend4_Method | Метод фильтра (H4) — Метод фильтра тренда на графике H4: 0 — без фильтра, 1 — MACD, 2 — EMA, 3 — LSMA, 4 — ITrend, 5 — HMA. |
| Trend4_Period | Период (H4) — Период скользящей средней для фильтра тренда H4. |
| Trend4_Threshold | Порог (H4) — Порог угла для определения тренда в фильтре H4. |
| Trend4_PrevShift | Предыдущий сдвиг (H4) — Предыдущий сдвиг для расчёта угла скользящей средней в фильтре H4. |
| Trend4_CurShift | Текущий сдвиг (H4) — Текущий сдвиг для расчёта угла скользящей средней в фильтре H4. |
| Trend4_TimeFrame | Таймфрейм (H4) — Таймфрейм для анализа тренда в фильтре H4. |
| Trend4_SignalCandle | Сигнальная свеча (H4) — Сдвиг сигнальной свечи для фильтра тренда H4. |
| T4_FastEMA | Быстрая EMA (H4) — Период быстрой EMA для трендового фильтра на часовом графике H4. |
| T4_SlowEMA | Медленная EMA (H4) — Период медленной EMA для трендового фильтра на часовом графике H4. |
| T4_SignalSMA | Период сигнальной SMA (H4) — Период сигнальной SMA для MACD-фильтра на часовом графике H4. |
| UseTradingHours | Использовать торговые часы — Переключатель использования ограничений по торговым часам. |
| TradeAsianMarket | Торговля на азиатском рынке — Переключатель торговли на азиатском рынке. |
| Start trades after time (StartHour1) | Начало торговли (Азия) — Час начала торговли на азиатском рынке. |
| Stop trading after time (StopHour1) | Окончание торговли (Азия) — Час окончания торговли на азиатском рынке. |
| TradeEuropeanMarket | Торговля на европейском рынке — Переключатель торговли на европейском рынке. |
| Start trades after time (StartHour2) | Начало торговли (Европа) — Час начала торговли на европейском рынке. |
| Stop trading after time (StopHour2) | Окончание торговли (Европа) — Час окончания торговли на европейском рынке. |
| TradeNewYorkMarket | Торговля на рынке Нью-Йорка — Переключатель торговли на рынке Нью-Йорка. |
| Start trades after time (StartHour3) | Начало торговли (Нью-Йорк) — Час начала торговли на рынке Нью-Йорка. |
| Stop trading after time (StopHour3) | Окончание торговли (Нью-Йорк) — Час окончания торговли на рынке Нью-Йорка. |
Поиск по коду файла
#include <stdlib.mqh>
#define UP 1
#define DOWN 2
#define NO_FILTER 0
#define MACD_FILTER 1
#define EMA_FILTER 2
#define LSMA_FILTER 3
#define ITREND_FILTER 4
#define HMA_FILTER 5
extern bool AccountIsMini = true; // Change to true if trading mini account
extern bool MoneyManagement = true; // Change to false to shutdown money management controls.
extern double TradeSizePercent = 10; // Change to whatever percent of equity you wish to risk.
extern double Lots = 0.1; // standard lot size.
extern double MaxLots = 100;
extern double StopLoss = 30; // Maximum pips willing to lose per position.
extern bool UseTrailingStop = false;
extern double TrailingStop = 15; // Change to whatever number of pips you wish to trail your position with.
extern double Margincutoff = 800; // Expert will stop trading if equity level decreases to that level.
extern int TakeProfit = 15; // Maximum profit level achieved.
extern int Slippage = 10; // Possible fix for not getting filled or closed
extern string Expert_Name = "---- KusKus_EA ----";
extern string s3="BBandsStop settings";
extern int Length=20; // Bollinger Bands Period
extern int Deviation=2; // Deviation
extern double MoneyRisk=1.00; // Offset Factor
extern int SignalTimeFrame = 30;
extern string dstr0 = " 4 Hr Trend";
extern string dstr1 = " 0 = None";
extern string dstr2 = " 1 = MACD";
extern string dstr3 = " 2 = EMA(14)";
extern string dstr4 = " 3 = LSMA(18)";
extern string dstr5 = " 4 = ITrend(26)";
extern string dstr6 = " 5 = HMA(16)";
extern int TrendD_Method = 5;
extern int TrendD_Period=6;
extern double TrendD_Threshold=20;
extern int TrendD_PrevShift=3;
extern int TrendD_CurShift=1;
extern int TrendD_TimeFrame = 240;
extern int TrendD_SignalCandle = 0;
extern string sD=" 4 Hr GMACD settings";
extern int TD_FastEMA = 8;
extern int TD_SlowEMA = 17;
extern int TD_SignalSMA = 9;
extern string fstr0 = " 1 Hr Trend";
extern string fstr1 = " 0 = None";
extern string fstr2 = " 1 = MACD";
extern string fstr3 = " 2 = EMA(14)";
extern string fstr4 = " 3 = LSMA(18)";
extern string fstr5 = " 4 = ITrend(26)";
extern string fstr6 = " 5 = HMA(16)";
extern int Trend4_Method = 0;
extern int Trend4_Period=6;
extern double Trend4_Threshold=10;
extern int Trend4_PrevShift=3;
extern int Trend4_CurShift=1;
extern int Trend4_TimeFrame = 60;
extern int Trend4_SignalCandle = 0;
extern string s4="//====GMACD settings====//";
extern int T4_FastEMA = 8;
extern int T4_SlowEMA = 17;
extern int T4_SignalSMA = 9;
extern bool UseTradingHours = true;
extern bool TradeAsianMarket = true;
extern int StartHour1 = 0; // Start trades after time
extern int StopHour1 = 3; // Stop trading after time
extern bool TradeEuropeanMarket = true;
extern int StartHour2 = 9; // Start trades after time
extern int StopHour2 = 11; // Stop trading after time
extern bool TradeNewYorkMarket = false;
extern int StartHour3 = 15; // Start trades after time
extern int StopHour3 = 17; // Stop trading after time
string setup;
double lotMM;
int TradesInThisSymbol;
int MagicNumber;
bool YesStop;
double haOpen, haClose;
double LineMin, LineMid;
double Fish;
double BBStopUp, BBStopDown;
int SignalCandle = 1;
double macd_H4, macd_HH4;
double macd_D1, macd_DD1;
double MACurrent, MAPrevious;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
double MA_Angle( int PrevShift, int CurShift, double fPrevMA, double fCurMA)
{
double fAngle, mFactor;
string Sym;
int ShiftDif;
mFactor = 100000.0;
Sym = StringSubstr(Symbol(),3,3);
if (Sym == "JPY") mFactor = 1000.0;
ShiftDif = PrevShift-CurShift;
mFactor /= ShiftDif;
fAngle = mFactor * (fCurMA - fPrevMA)/2.0;
return(fAngle);
}
double fLSMA(int TimeFrame, int myRperiod, int shift)
{
int i;
double sum;
int length;
double lengthvar;
double tmp;
double wt;
length = myRperiod;
sum = 0;
for(i = length; i >= 1 ; i--)
{
lengthvar = length + 1;
lengthvar /= 3;
tmp = 0;
tmp = ( i - lengthvar)*iClose(NULL, TimeFrame,length-i+shift);
sum+=tmp;
}
wt = sum*6/(length*(length+1));
return(wt);
}
bool CheckHeikenAshi(int cmd)
{
haOpen = iCustom(NULL, SignalTimeFrame, "Heiken_Ashi_Ma",1,15,2,1);
haClose = iCustom(NULL, SignalTimeFrame, "Heiken_Ashi_Ma",1,15,3,1);
switch (cmd)
{
case OP_BUY : if (haOpen < haClose) return(true);
break;
case OP_SELL : if (haOpen > haClose) return(true);
}
return(false);
}
bool CheckStepMA(int cmd)
{
LineMin = iCustom(NULL, SignalTimeFrame, "Hist_StepMA_Stoch_KV1_Ex_03",0,1);
LineMid = iCustom(NULL, SignalTimeFrame, "Hist_StepMA_Stoch_KV1_Ex_03",1,1);
switch (cmd)
{
case OP_BUY : if (LineMid > 0) return(true);
break;
case OP_SELL : if (LineMin < 0) return(true);
}
return(false);
}
bool CheckFish(int cmd)
{
Fish = iCustom(NULL, SignalTimeFrame, "Fisher_m11",35,0.3, 0.3,0,1);
switch (cmd)
{
case OP_BUY : if (Fish > 0) return(true);
break;
case OP_SELL : if (Fish < 0) return(true);
}
return(false);
}
bool CheckBBStop(int cmd)
{
BBStopUp = iCustom(NULL, SignalTimeFrame, "BBands_Stop_v2", Length, Deviation, MoneyRisk, 0, 1);
BBStopDown = iCustom(NULL, SignalTimeFrame, "BBands_Stop_v2", Length, Deviation, MoneyRisk, 1, 1);
switch (cmd)
{
case OP_BUY : if (BBStopUp > 0 ) return(true);
break;
case OP_SELL : if (BBStopDown > 0) return(true);
}
return(false);
}
void GetMA(int TimeFrame, int MAPeriod, int Prev, int Cur)
{
MACurrent=iMA(NULL,TimeFrame,MAPeriod,0,MODE_EMA,PRICE_CLOSE,Cur);
MAPrevious=iMA(NULL,TimeFrame,MAPeriod,0,MODE_EMA,PRICE_CLOSE,Prev);
}
void GetLSMA(int TimeFrame, int MAPeriod, int Prev, int Cur)
{
MACurrent=fLSMA(TimeFrame,MAPeriod,Cur);
MAPrevious=fLSMA(TimeFrame,MAPeriod,Prev);
}
void GetITrend(int TimeFrame, int MAPeriod, int Prev, int Cur)
{
MACurrent=iCustom(NULL,TimeFrame,"Ehlers_iTrend",MAPeriod,0,Cur);
MAPrevious=iCustom(NULL,TimeFrame,"Ehlers_iTrend",MAPeriod,0,Prev);
}
void GetHMA(int TimeFrame, int MAPeriod, int Prev, int Cur)
{
MACurrent=iCustom(NULL,TimeFrame,"HMA2",MAPeriod,0,Cur);
MAPrevious=iCustom(NULL,TimeFrame,"HMA2",MAPeriod,0,Prev);
}
void GetMA_Trend (int TrendMethod, int myTimeFrame, int myPeriod, int PrevShift, int CurShift)
{
switch (TrendMethod)
{
case EMA_FILTER : GetMA(myTimeFrame, myPeriod, PrevShift, CurShift);
break;
case LSMA_FILTER : GetLSMA(myTimeFrame, myPeriod, PrevShift, CurShift);
break;
case ITREND_FILTER : GetITrend(myTimeFrame, myPeriod, PrevShift, CurShift);
break;
case HMA_FILTER : GetHMA(myTimeFrame, myPeriod, PrevShift, CurShift);
}
}
bool CheckTrend(int cmd)
{
bool H4TrendUP, H4TrendDOWN, D1TrendUP, D1TrendDOWN;
bool trendD, trend4;
double maAngle;
H4TrendUP = true;
H4TrendDOWN = true;
switch(Trend4_Method)
{
case NO_FILTER :
if (cmd == OP_BUY) H4TrendDOWN = false;
if (cmd == OP_SELL) H4TrendUP = false;
break;
case MACD_FILTER :
macd_H4=iMACD(NULL,Trend4_TimeFrame,T4_FastEMA,T4_SlowEMA,T4_SignalSMA,PRICE_CLOSE,MODE_MAIN,Trend4_SignalCandle);
macd_HH4=iMACD(NULL,Trend4_TimeFrame,T4_FastEMA,T4_SlowEMA,T4_SignalSMA,PRICE_CLOSE,MODE_SIGNAL,Trend4_SignalCandle);
if (macd_H4 < macd_HH4) H4TrendUP = false;
if (macd_H4 > macd_HH4) H4TrendDOWN = false;
break;
default :
GetMA_Trend(Trend4_Method, Trend4_TimeFrame, Trend4_Period, Trend4_PrevShift, Trend4_CurShift );
maAngle = MA_Angle(Trend4_PrevShift, Trend4_CurShift, MAPrevious, MACurrent);
switch (cmd)
{
case OP_BUY : if (maAngle < Trend4_Threshold) H4TrendUP = false;
break;
case OP_SELL : if (maAngle > -Trend4_Threshold) H4TrendDOWN = false;
}
}
D1TrendUP = true;
D1TrendDOWN = true;
switch(TrendD_Method)
{
case NO_FILTER :
if (cmd == OP_BUY) D1TrendDOWN = false;
if (cmd == OP_SELL) D1TrendUP = false;
break;
case MACD_FILTER :
macd_D1=iMACD(NULL,TrendD_TimeFrame,TD_FastEMA,TD_SlowEMA,TD_SignalSMA,PRICE_CLOSE,MODE_MAIN,TrendD_SignalCandle);
macd_DD1=iMACD(NULL,TrendD_TimeFrame,TD_FastEMA,TD_SlowEMA,TD_SignalSMA,PRICE_CLOSE,MODE_SIGNAL,TrendD_SignalCandle);
if (macd_D1 < macd_DD1) D1TrendUP = false;
if (macd_D1 > macd_DD1) D1TrendDOWN = false;
break;
default :
GetMA_Trend(TrendD_Method, TrendD_TimeFrame, TrendD_Period , TrendD_PrevShift, TrendD_CurShift);
maAngle = MA_Angle(TrendD_PrevShift, TrendD_CurShift, MAPrevious, MACurrent);
switch (cmd)
{
case OP_BUY : if (maAngle < TrendD_Threshold) D1TrendUP = false;
break;
case OP_SELL : if (maAngle > -TrendD_Threshold) D1TrendDOWN = false;
}
}
switch (cmd)
{
case OP_BUY : if (H4TrendUP && D1TrendUПоказано первые 50% кода (символов: 13954)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.