ichimoku-chinkou-hyo_system_1.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ichimoku-chinkou-hyo_system_1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для MetaTrader 4, основанный на индикаторе Ichimoku Kinko Hyo. Реализует стратегию пересечения Чинкоу/Цена: бычий сигнал возникает при пересечении спана Чинкоу ценой снизу вверх, медвежий — при пересечении сверху вниз. Вход подтверждается расположением текущей цены относительно Кумо (облака) и выходом последнего Чинкоу за пределы Кумо.
Советник включает систему управления позицией на основе ATR или фиксированных параметров риска. Поддерживаются варианты расчёта размера лота: процентный риск от баланса/эквити, фиксированный баланс и риск в базовой валюте. Дополнительные настройки позволяют задать количество знаков после запятой в размере позиции и допустимое проскальзывание.
Реализован механизм failsafe, который при активации частично закрывает позицию и переводит её в безубыток. Также имеется правило закрытия по линии Кидзун-Сэн. При открытии позиций советник отправляет уведомления по электронной почте. Работает только при появлении нового бара, использует магический номер для идентификации ордеров.
Настройки программы
| Настройка | Описание |
|---|---|
| minimum size of kumo to open an order (kumoThreshold) | Порог Кумо — Минимальный размер Кумо для открытия ордера |
| 0 is off, >0 sets the break even n pips above the entry price (failSafe) | Безубыток — 0 — отключено; если >0, устанавливает безубыток в пипсах выше цены входа |
| the amount of lots that are closed if failsafe is on (failSafeCloserMultiplier) | Множитель закрытия при безубытке — Доля лота, которая закрывается при активном failsafe |
| stop loss %risk of account balance entered in decimal format (orderStopLossRisk) | Риск стоп-лосса — Процент риска стоп-лосса от баланса счёта в десятичном формате (например, 0.02 для 2%) |
| Basic lot size (Lots) | Размер лота — Базовый размер лота |
| If true - ATR-based position sizing (MM) | Управление капиталом — Если true — используется ATR-based расчёт размера позиции |
| ATR_Period | Период ATR — Период индикатора ATR, используемого для определения стоп-лосса |
| ATR_Multiplier | Множитель ATR — Множитель ATR для расчёта потенциального убытка при позиционировании |
| Risk tolerance in percentage points (Risk) | Риск в процентах — Допустимый риск в процентах |
| If greater than 0, position size calculator will use it instead of actual account balance. (FixedBalance) | Фиксированный баланс — Если больше 0, калькулятор размера позиции использует это значение вместо фактического баланса счёта |
| Risk tolerance in base currency (MoneyRisk) | Риск в валюте — Допустимый риск в базовой валюте счёта |
| UseMoneyInsteadOfPercentage | Использовать деньги вместо процентов — Если true, риск задаётся в базовой валюте вместо процентного соотношения |
| UseEquityInsteadOfBalance | Использовать эквити вместо баланса — Если true, для расчёта размера позиции используется эквити вместо баланса |
| How many digits after dot supported in lot size. For example, 2 for 0.01, 1 for 0.1, 3 for 0.001, et (LotDigits) | Разрядность лота — Количество знаков после запятой в размере лота (например, 2 для 0.01, 1 для 0.1, 3 для 0.001) |
| Tolerated slippage in brokers' pips (Slippage) | Проскальзывание — Допустимое проскальзывание в пипсах брокера |
Поиск по коду файла
/*
Trades using Ichimoku Kinko Hyo indicator.
Implements Chinkou/Price cross strategy.
Chinkou crossing price (close) from below is a bullish signal.
Chinkou crossing price (close) from above is a bearish signal.
No SL/TP. Positions remain open from signal to signal.
Entry confirmed by current price above/below Kumo, latest Chinkou outside Kumo.
*/
input int kumoThreshold=300;//minimum size of kumo to open an order
input int failSafe=0;//0 is off, >0 sets the break even n pips above the entry price
input double failSafeCloserMultiplier=.1;//the amount of lots that are closed if failsafe is on
extern double orderStopLossRisk=.02;//stop loss %risk of account balance entered in decimal format
extern double Lots=0.1; // Basic lot size
extern bool MM=true; // If true - ATR-based position sizing
extern int ATR_Period=14;
extern double ATR_Multiplier=1;
extern double Risk=2; // Risk tolerance in percentage points
extern double FixedBalance=0; // If greater than 0, position size calculator will use it instead of actual account balance.
extern double MoneyRisk=0; // Risk tolerance in base currency
extern bool UseMoneyInsteadOfPercentage=false;
extern bool UseEquityInsteadOfBalance=false;
extern int LotDigits=2; // How many digits after dot supported in lot size. For example, 2 for 0.01, 1 for 0.1, 3 for 0.001, etc.
extern int Slippage=100; // Tolerated slippage in brokers' pips
int Magic=2130512104; // Order magic number
string OrderCommentary="Ichimoku-Chinkou-Hyo";
int Tenkan = 9; // Tenkan line period. The fast "moving average".
int Kijun = 26; // Kijun line period. The slow "moving average".
int Senkou= 52; // Senkou period. Used for Kumo (Cloud) spans.
int LastBars=0;
bool HaveLongPosition;
bool HaveShortPosition;
double StopLoss; // Not actual stop-loss - just a potential loss of MM estimation.
bool ChinkouPriceBull = false;
bool ChinkouPriceBear = false;
bool KumoBullConfirmation = false;
bool KumoBearConfirmation = false;
bool KumoChinkouBullConfirmation = false;
bool KumoChinkouBearConfirmation = false;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
if((!IsTradeAllowed()) || (IsTradeContextBusy()) || (!IsConnected()) || ((!MarketInfo(Symbol(), MODE_TRADEALLOWED)) && (!IsTesting()))) return(0);
if(LastBars!=Bars) LastBars=Bars;
else return(0);
if(MM)
{
StopLoss=iATR(NULL,0,ATR_Period,1)*ATR_Multiplier;
}
double ChinkouSpanLatest=iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_CHINKOUSPAN,Kijun+1); // Latest closed bar with Chinkou.
double ChinkouSpanPreLatest=iIchimoku(NULL,0,Tenkan,Kijun,Senkou,MODE_CHINKOUSPAN,Kijun+2); // Bar older than latest closed bar with Chinkou.
if((ChinkouSpanLatest>Close[Kijun+1]) && (ChinkouSpanPreLatest<=Close[Kijun+2]))
{
ChinkouPriceBull = true;
ChinkouPriceBear = false;
}
else if((ChinkouSpanLatest<Close[Kijun+1]) && (ChinkouSpanPreLatest>=Close[Kijun+2]))
{
ChinkouPriceBull = false;
ChinkouPriceBear = true;
}
else if(ChinkouSpanLatest==Close[Kijun+1]) // Voiding entry conditions if cross is ongoing.
{
ChinkouPriceBull = false;
ChinkouPriceBear = false;
}
double tenkanSen= iIchimoku(NULL,PERIOD_CURRENT,Tenkan,Kijun,Senkou,MODE_TENKANSEN,0);
double kijunSen = iIchimoku(NULL,PERIOD_CURRENT,Tenkan,Kijun,Senkou,MODE_KIJUNSEN,0);
double tenkanSenHist= iIchimoku(NULL,PERIOD_CURRENT,Tenkan,Kijun,Senkou,MODE_TENKANSEN,1);
double kijunSenHist = iIchimoku(NULL,PERIOD_CURRENT,Tenkan,Kijun,Senkou,MODE_KIJUNSEN,1);
double stopLoss1=0;
if(orderStopLossRisk>0) stopLoss1=NormalizeDouble((AccountBalance()*orderStopLossRisk)/LotsOptimized(),0);
double tenkanSen5=iIchimoku(NULL,PERIOD_CURRENT,Tenkan,Kijun,Senkou,MODE_TENKANSEN,1);
double slope=(tenkanSen-tenkanSen5)*1000;
int cnt;
int totally;
setLabel("Next lot size: "+LotsOptimized(),"Max Lot ",20,20,10,Black);
setLabel("Stop loss: "+stopLoss1,"stl ",20,40,10,Black);
setLabel("Risk: "+(orderStopLossRisk)*100+"% ","risk ",20,60,10,Black);
setLabel("Tenkan-Sen slope: "+slope,"tenkandigff ",20,120,10,Black);
setLabel("Chinkou Bull signal: "+ChinkouPriceBull,"chinkou bull sig ",200,20,10,Black);
setLabel("Chinkou Bear signal: "+ChinkouPriceBear,"chinkou bear sig ",200,40,10,Black);
setLabel("Kumo Bull Confirmation: "+KumoBullConfirmation,"kumo bull conf ",200,60,10,Black);
setLabel("Kumo Bear Confirmation: "+KumoBearConfirmation,"kumo bear conf ",200,80,10,Black);
setLabel("Kumo Chinkou Bull Confirmation: "+KumoChinkouBullConfirmation,"kumo chinkou bull conf ",200,100,10,Black);
setLabel("Kumo Chinkou Bear Confirmation: "+KumoChinkouBearConfirmation,"kumo chinkou bear conf ",200,120,10,Black);
if(failSafe>0) setLabel("Failsafe is ON ","failsafe ",20,80,10,Black);
else setLabel("Failsafe is OFF ","failsafe ",20,80,10,Black);
double SenkouSpanALatestByPrice = iIchimoku(NULL, 0, Tenkan, Kijun, Senkou, MODE_SENKOUSPANA, 1); // Senkou Span A at time of latest closed price bar.
double SenkouSpanBLatestByPrice = iIchimoku(NULL, 0, Tenkan, Kijun, Senkou, MODE_SENKOUSPANB, 1); // Senkou Span B at time of latest closed price bar.
if((Close[1]>SenkouSpanALatestByPrice) && (Close[1]>SenkouSpanBLatestByPrice)) KumoBullConfirmation=true;
else KumoBullConfirmation=false;
if((Close[1]<SenkouSpanALatestByPrice) && (Close[1]<SenkouSpanBLatestByPrice)) KumoBearConfirmation=true;
else KumoBearConfirmation=false;
double SenkouSpanALatestByChinkou = iIchimoku(NULL, 0, Tenkan, Kijun, Senkou, MODE_SENKOUSPANA, Kijun + 1); // Senkou Span A at time of latest closed bar of Chinkou span.
double SenkouSpanBLatestByChinkou = iIchimoku(NULL, 0, Tenkan, Kijun, Senkou, MODE_SENKOUSPANB, Kijun + 1); // Senkou Span B at time of latest closed bar of Chinkou span.
if((ChinkouSpanLatest>SenkouSpanALatestByChinkou) && (ChinkouSpanLatest>SenkouSpanBLatestByChinkou)) KumoChinkouBullConfirmation=true;
else KumoChinkouBullConfirmation=false;
if((ChinkouSpanLatest<SenkouSpanALatestByChinkou) && (ChinkouSpanLatest<SenkouSpanBLatestByChinkou)) KumoChinkouBearConfirmation=true;
else KumoChinkouBearConfirmation=false;
GetPositionStates();
double SenkouSpanALatestByPriceF = iIchimoku(NULL, 0, Tenkan, Kijun, Senkou, MODE_SENKOUSPANA, -25);
double SenkouSpanBLatestByPriceF = iIchimoku(NULL, 0, Tenkan, Kijun, Senkou, MODE_SENKOUSPANB, -25);
double kumo=(SenkouSpanALatestByPriceF-SenkouSpanBLatestByPriceF)*1000;
setLabel("Kumo: "+kumo,"kumo label ",20,100,10,BПоказано первые 50% кода (символов: 10138)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.