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

ichimoku ea.mq4

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

coin_flip.mq4MQL4 / MetaTrader 4 · 2 общих теговindo run 1.5.mq4MQL4 / MetaTrader 4 · 2 общих теговoverdraftspazm v6.mq4MQL4 / MetaTrader 4 · 2 общих теговforex-flex-ea.mq4MQL4 / MetaTrader 4 · 2 общих теговadx_rsi_amp_atr_strategy_ea.mq4MQL4 / MetaTrader 4 · 2 общих теговanother martingale fix.mq4MQL4 / MetaTrader 4 · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

ichimoku ea.mq4 — торговый советник для платформы MetaTrader 4, работающий на основе индикатора Ишимоку. Советник анализирует сигналы индикатора Ишимоку для принятия решений об открытии и закрытии позиций. Поддерживает гибкое управление лотами, мартингейл, трейлинг-стоп и другие средства управления рисками. Работает в режиме реального времени на графике валютной пары.

Настройки программы

НастройкаОписание
comment Комментарий — Текст, добавляемый к комментарию ордера при его открытии.
magic Магический номер — Уникальный идентификатор ордеров советника для их фильтрации и управления.
moneymanagement Управление денежными средствами — Название раздела параметров управления размером позиции.
lots1 Лоты условия 1 — Размер лота для первого условия сигнала индикатора Ишимоку.
lots2 Лоты условия 2 — Размер лота для второго условия сигнала индикатора Ишимоку.
lots3 Лоты условия 3 — Размер лота для третьего условия сигнала индикатора Ишимоку.
lotsoptimized Оптимизация лотов — Включает автоматический расчёт размера лота на основе баланса счёта и параметра риска.
risk1 Риск условия 1 — Множитель риска для первого условия сигнала при расчёте размера позиции.
risk2 Риск условия 2 — Множитель риска для второго условия сигнала при расчёте размера позиции.
risk3 Риск условия 3 — Множитель риска для третьего условия сигнала при расчёте размера позиции.
martingale Мартингейл — Включает увеличение размера лота после убыточных сделок.
multiplier Множитель мартингейла — Коэффициент умножения лота при активированном мартингейле.
minlot Минимальный лот — Минимально допустимый размер позиции.
maxlot Максимальный лот — Максимально допустимый размер позиции.
lotdigits Точность лота — Количество знаков после запятой для округления размера лота.
basketpercent Корзина по проценту — Включает закрытие всех позиций при достижении прибыли или убытка в процентах от баланса.
profit Процент прибыли — Порог прибыли в процентах от баланса для срабатывания закрытия корзины.
loss Процент убытка — Порог убытка в процентах от баланса для срабатывания закрытия корзины.
ordersmanagement Управление ордерами — Название раздела параметров управления ордерами.
oppositeclose Закрытие противоположных — Закрывает позицию противоположного направления при поступлении нового сигнала.
reversesignals Инверсия сигналов — Разворачивает направление сигналов: покупка вместо продажи и наоборот.
maxtrades Максимум сделок — Максимальное количество одновременно открытых позиций.
tradesperbar Сделок на бар — Максимальное количество сделок, открываемых за один тиковый бар.
hidestop Скрытие стоп-лосса — Закрывает позицию, если стоп-лосс скрыт и цена отдалилась от входа на заданное расстояние.
hidetarget Скрытие тейк-профита — Закрывает позицию, если тейк-профит достигнут и цена отдалилась от входа на заданное расстояние.
buystop Стоп лонг — Расстояние стоп-лосса для покупки в пунктах от цены входа.
buytarget Тейк лонг — Расстояние тейк-профита для покупки в пунктах от цены входа.
sellstop Стоп шорт — Расстояние стоп-лосса для продажи в пунктах от цены входа.
selltarget Тейк шорт — Расстояние тейк-профита для продажи в пунктах от цены входа.
trailingstart Начало трейлинга — Расстояние от цены входа в пунктах, после которого начинается трейлинг-стоп.
Получить полный код

Поиск по коду файла

extern string comment="";
extern int magic=1234;

extern string moneymanagement="Money Management";

extern double lots1=0.1;
extern double lots2=0.2;
extern double lots3=0.3;
extern bool lotsoptimized=false;
extern double risk1=1;
extern double risk2=2;
extern double risk3=3;
extern bool martingale=false;
extern double multiplier=2.0;
extern double minlot=0.01;
extern double maxlot=10;
extern double lotdigits=2;
extern bool basketpercent=false;
extern double profit=10;
extern double loss=30;

extern string ordersmanagement="Order Management";

extern bool oppositeclose=true;
extern bool reversesignals=false;
extern int maxtrades=100;
extern int tradesperbar=1;
extern bool hidestop=false;
extern bool hidetarget=false;
extern int buystop=0;
extern int buytarget=0;
extern int sellstop=0;
extern int selltarget=0;
extern int trailingstart=0;
extern int trailingstop=0;
extern int trailingstep=1;
extern int breakevengain=0;
extern int breakeven=0;
int expiration=225;
extern int slippage=5;
extern double maxspread=20;

extern string entrylogics="Entry Logics";

extern int tenkansen=9;
extern int kijunsen=26;
extern int senkospan=52;
extern int shift=1;

extern string timefilter="Time Filter";

extern int gmtshift=2;
extern bool filter=false;
extern int start=7;
extern int end=21;
extern bool tradesunday=true;
extern bool fridayfilter=false;
extern int fridayend=24;

int dsf;
int xtn;
int dys; 

datetime t0,t1,lastbuyopentime,lastsellopentime;
double cb=0,lastbuyopenprice=0,lastsellopenprice=0;
double sl,tp,pt,mt,min,max,lastprofit;
int i,j,k,l,dg,bc=-1,tpb=0,total,ticket;
int buyopenposition=0,sellopenposition=0;
int totalopenposition=0,buyorderprofit=0;
int sellorderprofit=0,cnt=0;
double lotsfactor=1,ilots;
double initiallotsfactor=1;
int istart,iend;
double lots=0.1,risk=1;

int init(){
      // код доступен только после оплаты
   }

int start(){
      // код доступен только после оплаты
   }

   total=OrdersTotal();

   if(breakevengain>0)
   {
      for(int b=0;b<total;b++){
         dsf=OrderSelect(b,SELECT_BY_POS,MODE_TRADES);
         if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
            if(OrderType()==OP_BUY){
               if(NormalizeDouble((Bid-OrderOpenPrice()),dg)>=NormalizeDouble(breakevengain*pt,dg)){
                  if(NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),dg)<NormalizeDouble(breakeven*pt,dg)){
                     dys=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+breakeven*pt,dg),OrderTakeProfit(),0,Blue);
                     return(0);
                  }
               }
            }
            else{
               if(NormalizeDouble((OrderOpenPrice()-Ask),dg)>=NormalizeDouble(breakevengain*pt,dg)){
                  if(NormalizeDouble((OrderOpenPrice()-OrderStopLoss()),dg)<NormalizeDouble(breakeven*pt,dg)){
                     dys=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-breakeven*pt,dg),OrderTakeProfit(),0,Red);
                     return(0);
                  }
               }
            }
         }
      }
   }
   if(trailingstop>0)
   {
      for(int a=0;a<total;a++){
         dsf=OrderSelect(a,SELECT_BY_POS,MODE_TRADES);
         if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
            if(OrderType()==OP_BUY){
               if(NormalizeDouble(Ask,dg)>NormalizeDouble(OrderOpenPrice()+trailingstart*pt,dg)
               && (NormalizeDouble(OrderStopLoss(),dg)<NormalizeDouble(Bid-(trailingstop+trailingstep)*pt,dg))||(OrderStopLoss()==0)){
                  dys=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-trailingstop*pt,dg),OrderTakeProfit(),0,Blue);
                  return(0);
               }
            }
            else{
               if(NormalizeDouble(Bid,dg)<NormalizeDouble(OrderOpenPrice()-trailingstart*pt,dg)
               && (NormalizeDouble(OrderStopLoss(),dg)>(NormalizeDouble(Ask+(trailingstop+trailingstep)*pt,dg)))||(OrderStopLoss()==0)){                 
                  dys=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+trailingstop*pt,dg),OrderTakeProfit(),0,Red);
                  return(0);
               }
            }
         }
      }
   }
   if(basketpercent){
      double ipf=profit*(0.01*AccountBalance());double ilo=loss*(0.01*AccountBalance());
      cb=AccountEquity()-AccountBalance();
      if(cb>=ipf||cb<=(ilo*(-1))){
         for(i=total-1;i>=0;i--){
            dsf=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUY){
               xtn=OrderClose(OrderTicket(),OrderLots(),Bid,slippage*pt);
            }
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_SELL){
               xtn=OrderClose(OrderTicket(),OrderLots(),Ask,slippage*pt);
            }
         }
         return(0);
      }
   }

   for(cnt=0;cnt<OrdersTotal();cnt++){
      dsf=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==magic&&OrderCloseTime()==0){
         totalopenposition++;
         lastprofit=OrderProfit();
         if(OrderType()==OP_BUY){
            buyopenposition++;lastbuyopenprice=OrderOpenPrice();buyorderprofit=OrderProfit();lastbuyopentime=OrderOpenTime();
         }
         if(OrderType()==OP_SELL){
            sellopenposition++;lastsellopenprice=OrderOpenPrice();sellorderprofit=OrderProfit();lastsellopentime=OrderOpenTime();
         }
      }
   }

   bool ichibuy=false;
   bool ichisell=false;

   double Tenkan=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_TENKANSEN,shift);
   double Kijun=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_KIJUNSEN,shift);
   double Tenkana=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_TENKANSEN,shift+1);
   double Kijuna=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_KIJUNSEN,shift+1);

   double Senkoua=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANA,shift);
   double Senkoub=iIchimoku(NULL,0,tenkansen,kijunsen,senkospan,MODE_SENKOUSPANB,shift);

   if(Tenkan>Kijun && Tenkana<Kijuna){
      if(Kijun<Senkoub && Kijun<Senkoua){ichibuy=true;lots=lots1;risk=risk1;}
      if((Kijun>Senkoub && Kijun<Senkoua)||(Kijun<Senkoub && Kijun>Senkoua)){ichibuy=true;lots=lots2;risk=risk2;}
      if(Kijun>Senkoua && Kijun>Senkoub){ichibuy=true;lots=lots3;risk=risk3;}
   }
   if(Tenkan<Kijun && Tenkana>Kijuna){
      if(Kijun>Senkoub && Kijun>Senkoua){ichisell=true;lots=lots1;risk=risk1;}
      if((Kijun>Senkoub && Kijun<Senkoua)||(Kijun<Senkoub && Kijun>Senkoua)){ichisell=true;lots=lots2;risk=risk2;}
      if(Kijun<Senkoua && Kijun<Senkoub){ichisell=true;lots=lots3;risk=risk3;}
   }

   bool openbuy=true;bool opensell=true;
   bool closebuy=false;bool closesell=false;

   if(lotsoptimized && (martingale==false || (martingale && lastprofit>=0)))lots=NormalizeDouble((AccountBalance()/1000)*minlot*risk,lotdigits);
   if(lots<minlot)lots=minlot;if(lots>maxlot)lots=maxlot;

   if(tradesperbar==1 && (((TimeCurrent()-lastbuyopentime)<Period()) || ((TimeCurrent()-lastsellopentime)<Period())))tpb=1;

   bool buy=false;bool sell=false;

   if(ichibuy==true
   && openbuy)if(reversesignals)sell=true;else buy=true;

   if(ichisell==true
   && opensell)if(reversesignals)buy=true;else sell=true;

   if(bc!=Bars){tpb=0;bc=Bars;}
   /*Comment("\nSEFCU1  =  " + DoubleToStr(SEFCU1,4),"\nSEFCD1  =  " + DoubleToStr(SEFCD1,4));*/

   if((oppositeclose && sell)||(closebuy)){
      for(i=total-1;i>=0;i--){
         dsf=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUY){
            xtn=OrderClose(OrderTicket(),OrderLots(),Bid,slippage*pt);
         }
      }
   }
   if((oppositeclose && buy)||(closesell)){
      for(j=total-1;j>=0;j--){
         dsf=OrderSelect(j,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_SELL){
            xtn=OrderClose(OrderTicket(),OrderLots(),Ask,slippage*pt);
         }
      }
   }
   if(hidestop){
      for(k=total-1;k>=0;k--){
       

Показано первые 50% кода (символов: 14512)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 451,20₽ ≈ $17.74