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

forex-flex-ea.mq4

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

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

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

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

О программе

Forex-Flex-EA — торговый советник для MetaTrader 4, основанный на сигналах индикатора Fractals. При обнаружении нижнего или верхнего фрактала советник открывает сделки Buy или Sell с заданными стоп-лоссом и тейк-профитом. Основной торговый логический цикл реализован в функции start(), вызываемой при каждом новом тике.

Советник поддерживает управление позициями: закрытие по достижении уровня убытка или прибыли, скрытие стоп-лосса и тейк-профита при открытии, трейлинг-стоп с настраиваемым шагом, а также брейк-эвен по прибыли. Доступна функция закрытия всех позиций при достижении заданного процента просадки или плавающей прибыли (basket percent).

В настройках предусмотрены фильтры по времени торговли (дни недели, часы), максимальный спред, магический номер для идентификации сделок, а также управление размером лота с возможностью мартингейла. Отображение на графике настраивается через параметры шрифта, цвета и размера текста.

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

НастройкаОписание
Strategy Стратегия — Номер торговой стратегии
Strategy_Controlled_Settings Управляемые настройки стратегии — Текстовый разделитель для управляемых настроек стратегии
RealTakeProfit Реальный тейк-профит — Реальный тейк-профит в пипсах для новых сделок
RealStopLoss Реальный стоп-лосс — Реальный стоп-лосс в пипсах для новых сделок
PipStep Шаг в пипсах — Шаг в пипсах для внутренних расчётов
VirtualTrades Виртуальные сделки — Количество виртуальных сделок
VirtualTakeProfit Виртуальный тейк-профит — Виртуальный тейк-профит в пипсах
LotMultiplier Множитель лота — Множитель лота для расчёта размера позиции
MaxBuyTrades Максимум покупательских сделок — Максимальное количество одновременно открытых покупательских позиций
MaxSellTrades Максимум продавательских сделок — Максимальное количество одновременно открытых продавательских позиций
End_Of_Strategy_Settings Конец настроек стратегии — Текстовый разделитель конца настроек стратегии
MM Управление капиталом — Режим управления денежными средствами
Risk_Info Информация о риске — Описание уровней риска
Risk_ Коэффициент риска — Коэффициент риска для расчёта размера лота
ManualLot Ручной лот — Ручной размер лота
Accuracy Точность — Точность расчётов (множитель для округления)
DD_StoplossPct_Info Информация о стоп-лоссе по просадке — Описание параметра процента стоп-лосса по просадке
DD_StoplossPct Процент стоп-лосса по просадке — Процент просадки, при достижении которого закрываются все сделки
FloatingTP_Pct_Info Информация о плавающем тейк-профите — Описание параметра процента плавающего тейк-профита
FloatingTP_Pct Процент плавающего тейк-профита — Процент плавающей прибыли, при достижении которого закрываются все сделки
ECN Режим ECN — Переключатель режима ECN
Slippage Проскальзывание — Допустимое проскальзывание в пунктах для исполнения ордеров
StartingTradeDay День начала торговли — День недели начала торговли (0 — воскресенье, 6 — суббота)
EndingTradeDay День окончания торговли — День недели окончания торговли (0 — воскресенье, 6 — суббота)
RestartSlippage Проскальзывание перезапуска — Проскальзывание при перезапуске
RestartHours Часы перезапуска — Часы перезапуска торговой сессии
MagicNumber Магический номер — Магический номер для идентификации ордеров советника
EA_Name Имя советника — Имя советника, используемое в комментариях к сделкам
ChartDisplay Отображение на графике — Включает или отключает отображение информации на графике
Font Шрифт — Шрифт текста на графике
Color Цвет — Цвет отображаемого текста на графике
Size Размер текста — Размер текста на графике
TrailingMode Режим трейлинга — Режим работы трейлинг-стопа
TrailingStep Шаг трейлинга — Шаг трейлинг-стопа в пипсах
TrailTP Трейлинг тейк-профит — Параметр трейлинг-тейк-профита
TrailSL Трейлинг стоп-лосс — Параметр трейлинг-стоп-лосса
newMode Новый режим — Флаг нового режима работы
Получить полный код

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

extern int Strategy = 0;
extern string Strategy_Controlled_Settings = "==================================================================";
extern int RealTakeProfit = 29;
extern int RealStopLoss = 0;
extern int PipStep = 21;
extern int VirtualTrades = 5;
extern int VirtualTakeProfit = 34;
extern double LotMultiplier = 1.7;
extern int MaxBuyTrades = 5;
extern int MaxSellTrades = 5;
extern string End_Of_Strategy_Settings = "=============================================================";
extern int MM = 0;
extern string Risk_Info = "0.1-3 =Low, 4-7 =Medium, 8+ =High";
extern double Risk_ = 0.5;
extern double ManualLot = 0.01;
extern int Accuracy = 100;
extern string DD_StoplossPct_Info = "Closes all trades when DD reaches this Percent";
extern double DD_StoplossPct = 50.0;
extern string FloatingTP_Pct_Info = "Closes all trades when Floating trades reach this Pct";
extern double FloatingTP_Pct = 5.0;
extern bool ECN = TRUE;
extern int Slippage = 6;
extern int StartingTradeDay = 0;
extern int EndingTradeDay = 6;
extern int RestartSlippage = 10;
extern int RestartHours = 10;
extern int MagicNumber = 29988;
extern string EA_Name = "Flex EA";
extern bool ChartDisplay = TRUE;
extern string Font = "Calibri";
extern int Color = 16760576;
extern int Size = 10;
extern int TrailingMode = 1;
extern int TrailingStep = 2;
extern int TrailTP = 3;
extern int TrailSL = 3;
extern int newMode = 1;

 string comment="Forex-Flex-EA";                
 double lots=0.1;                
 bool lotsoptimized=false;        
 bool martingale=false;           
 double multiplier=2.0;            
 double minlot=0.01;              
 double maxlot=10;               
 double lotdigits=2;              
 bool basketpercent=false;      
 double profit=10;              
 double loss=30;                 
 bool oppositeclose=false;         
 bool reversesignals=false;        
 int tradesperbar=1;             
 bool hidestop=true;              
 bool hidetarget=true;           
 int trailingstart=0;              
 int trailingstop=0;               
 int breakevengain=0;             
 int breakeven=0;                
int expiration=0;                     
 double maxspread=100;            
 bool onlycross=false;             
 int MaMetod1=1;
 int MaPeriod1=3;
 int shift=1;                     
 int gmtshift=2;                   
 bool filter=false;                
 int start=7;                      
 int end=21;                       
 bool tradesunday=true;            
 bool fridayfilter=false;         
 int fridayend=24;                

int mod;
int sel;
int clo;

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,tps=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;

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

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

   total=OrdersTotal();

   if(breakevengain>0){
      for(int b=0;b<total;b++){
         sel=OrderSelect(b,SELECT_BY_POS,MODE_TRADES);
         if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber){
            if(OrderType()==OP_BUY){
               if(NormalizeDouble((Bid-OrderOpenPrice()),dg)>=NormalizeDouble(breakevengain*pt,dg)){
                  if((NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),dg)<NormalizeDouble(breakeven*pt,dg))||OrderStopLoss()==0){
                     mod=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))||OrderStopLoss()==0){
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-breakeven*pt,dg),OrderTakeProfit(),0,Red);
                     return(0);
                  }
               }
            }
         }
      }
   }

   if(trailingstop>0){
      for(int a=0;a<total;a++){
         sel=OrderSelect(a,SELECT_BY_POS,MODE_TRADES);
         if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber){
            if(OrderType()==OP_BUY){
               if(NormalizeDouble(Ask,dg)>NormalizeDouble(OrderOpenPrice()+trailingstart*pt,dg)
               && (NormalizeDouble(OrderStopLoss(),dg)<NormalizeDouble(Bid-(trailingstop+TrailingStep)*pt,dg))||(OrderStopLoss()==0)){
                  mod=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)){                 
                  mod=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--){
            sel=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY){
               clo=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*mt);
            }
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL){
               clo=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*mt);
            }
         }
         return(0);
      }
   }

   double fru=iFractals(Symbol(),0,MODE_LOWER,shift+1);
   double frd=iFractals(Symbol(),0,MODE_UPPER,shift+1);

   int frsignal=0;
   if(fru>0 && fru!=EMPTY_VALUE && Close[shift]>Close[shift+1] && Close[shift]>Open[shift+1])frsignal=1;
   if(frd>0 && frd!=EMPTY_VALUE && Close[shift]<Close[shift+1] && Close[shift]<Open[shift+1])frsignal=2;

   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;tps=1;}

   bool buy=false;bool sell=false;

   if(frsignal==1
   )if(reversesignals)sell=true;else buy=true;

   if(frsignal==2
   )if(reversesignals)buy=true;else sell=true;

   if(bc!=Bars){tpb=0;tps=0;bc=Bars;}

   if((oppositeclose && sell)){
      for(i=total-1;i>=0;i--){
         sel=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY){
            clo=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*mt);
         }
      }
   }
   if((oppositeclose && buy)){
      for(j=total-1;j>=0;j--){
         sel=OrderSelect(j,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_SELL){
            clo=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*mt);
         }
      }
   }

   if(hidestop){
      for(k=total-1;k>=0;k--){
         sel=OrderSelect(k,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUY && RealStopLoss>0 && Bid<(OrderOpenPrice()-RealStopLoss*pt)){
            clo=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*mt);
         }
        

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

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

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

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

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

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

Стоимость полного кода
1 387,70₽ ≈ $16.96