← К каталогу
Исходный код · ID 248

KusKus_EA

kuskus_ea.mq4

Похожие материалы по тегам

2 to 1 strategy with signals.pineTradingView · 2 общих теговmulti_lot_scalper_a.mq4MQL4 / MetaTrader 4 · 2 общих теговfresh algo signals & overlays v25_6334471093901859175.pineTradingView · 2 общих теговfresh algo v24 tradingview indicator_5918156155804195406.pineTradingView · 2 общих теговlinear regression channel.mq4MQL4 / MetaTrader 4 · 2 общих теговtrading criteria.mq4MQL4 / MetaTrader 4 · 2 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

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 и перейдите к оплате.

Стоимость полного кода
1 395,40₽ ≈ $17.05