Kijun Sen Robot
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ksrobot_1_5_h1_v1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Kijun Sen Robot — торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник анализирует ценовые данные с использованием индикатора Ichimoku Kinko Hyo и скользящей средней EMA для формирования торговых сигналов на покупку и продажу. Работает в ограниченное время суток и допускает только одну открытую позицию одновременно.
Настройки программы
| Настройка | Описание |
|---|---|
| StopLoss | Стоп-лосс — Фиксирует максимальный убыток позиции в пунктах от цены входа |
| BreakEven | Безубыток — Переводит стоп-лосс в точку безубыточности при достижении указанного количества пунктов прибыли |
| TrailingStop | Трейл-стоп — Двигает стоп-лосс вслед за ценой при достижении указанного отступа в пунктах |
| MAfilter | Фильтр MA — Задаёт минимальное расстояние между линией Kijun Sen и скользящей средней для подтверждения сигнала |
| UseOptimizedValues | Использовать оптимизированные значения — Переключает применение предустановленных параметров для конкретных валютных пар |
| Lots | Лоты — Определяет объём торговой позиции в лотах |
Поиск по коду файла
/* expert specific parameters */
#define EXPERT_COLOR Yellow
#define EXPERT_STRING "Kijun Sen Robot"
#define EXPERT_MAGIC 13
#define UP 1
#define DOWN -1
#define NEUTRAL 0
/*
Optimized results
GBP/USD:
4.38 1000.00 8.38% StopLoss=50 BreakEven=9 TrailingStop=10 MAfilter=6 TakeProfit=120
EUR/USD:
2.68 1520.00 12.24% StopLoss=60 BreakEven=9 TrailingStop=6 MAfilter=6 TakeProfit=120
*/
int MaxOpenPositions=1;
/* Default parameters. */
int TakeProfit =120; /* default 120 */
extern int StopLoss =50; /* 50 very imporant to allow for a substaintial movement in the other direction */
extern int BreakEven =9; /* default = 9 */
extern int TrailingStop =10; /* default 10 */
extern int MAfilter =6; /* MA must be at least 6 pips away from KS in order to be valid */
extern bool UseOptimizedValues=true;
/* MM */
extern double Lots =1;
int TenkanSen =6;
int KijunSen =12;
int Senkou =24;
/* globals */
double lastbid =0.0;
double lastask =0.0;
double longcross =0.0;
double shortcross =0.0;
double longentry =0.0;
double shortentry =0.0;
int daystart =7; /* 5AM GMT */
int dayend =19;/* 5PM GMT */
int MAdir =NEUTRAL;
int precision =4;
int lastbar =0;
bool newbar =false;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
/* expert specific utility functions */
int SymbolPrecision()
{
return(MarketInfo(Symbol(), MODE_DIGITS));
}
int OpenPosition()
{
double KS =iIchimoku(NULL, 0, TenkanSen, KijunSen, Senkou, MODE_KIJUNSEN, 0);
double KS1 =iIchimoku(NULL, 0, TenkanSen, KijunSen, Senkou, MODE_KIJUNSEN, 1);
double KS2 =iIchimoku(NULL, 0, TenkanSen, KijunSen, Senkou, MODE_KIJUNSEN, 2);
double Ema20 =iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,0);
double PEma20 =iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,1);
double PSAR =iSAR(NULL, 0, 0.02, 0.2, 0); /* fast parabolic for tight exits */
if (lastbid==0.0) lastbid=Bid;
if (lastask==0.0) lastask=Ask;
/* Make sure the time is right */
if(Hour() < daystart || Hour() > dayend-1)return(0);
/* KS cross */
if(Open[0] < KS && lastbid < KS && Bid > KS && longcross==0 && KS>=KS2)
{
/* the cross is only interesting if the KS line is above the MA */
if(Ema20 < KS - MAfilter * Point)
{
longcross=KS;
shortcross=0;
}
}
if(Open[0] > KS && lastask > KS && Ask < KS && shortcross==0 && KS<=KS2)
{
/* the cross is only interesting if the KS line is under the MA */
if(Ema20 > KS + MAfilter * Point)
{
shortcross=KS;
longcross=0;
}
}
/* check MA direction */
if(PEma20 < Ema20 )
{
MAdir=UP;
}
if(PEma20 > Ema20 )
{
MAdir=DOWN;
}
/* once the MA is pointing in the right direction set the the entry price to be the current KS */
if (MAdir==UP && longcross!=0 && longentry==0)
{
longentry=NormalizeDouble( KS, precision );
return(1);
}
/* once the MA is pointing in the right direction set the the entry price to be the current KS */
if (MAdir==DOWN && shortcross!=0 && shortentry==0)
{
shortentry=NormalizeDouble( KS, precision );
return(-1);
}
lastbid=Bid;
lastask=Ask;
return(0);
}
int ClosePosition()
{
double PEma20 =iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,1);
double PPEma20 =iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,2);
if(OrderType()==OP_BUY )
{
if (newbar && PEma20 < PPEma20 && OrderStopLoss() < OrderOpenPrice() )
{
return(1);
}
}
if(OrderType()==OP_SELL )
{
if (newbar && PEma20 > PPEma20 && OrderStopLoss() > OrderOpenPrice() )
{
return(-1);
}
}
return(0);
}
int start()
{
// код доступен только после оплаты
}
int cnt, experttickets, ticket, total, i, pos, action=0, method;
double hardstop;
datetime ticketexpiration=0;
/* make sure that the char is valid */
if (Bars<100)
{
Print("Invalid chart: less than 100 bars!");
return(-1);
}
if(( Hour() < daystart || Hour() > dayend-1))
{
Comment("\nTrading halted. (will start again at ", daystart, " AM )\n");
}
else
{
Comment("\nExpert is active. (will halt at ", dayend, " PM )\n");
Comment("\nTS = ", TrailingStop, " BE = ", BreakEven, " SL = ", StopLoss, " MAfilter = ", MAfilter,"\n");
}
total=OrdersTotal();
if (Time[0]==lastbar)
{
newbar=false;
}
else
{
lastbar=Time[0];
newbar=true;
}
/* Only allow one open position at a time (per expert)- so if there is an open position - do not open another one. */
for(cnt=0,experttickets=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==EXPERT_MAGIC)
{
experttickets=experttickets+1;
}
}
if(experttickets<MaxOpenPositions)
{
Показано первые 50% кода (символов: 7192)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.