forex-flex-ea.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «forex-flex-ea.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.