Mouteki EA
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «mouteki ea 01.4.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Mouteki EA — торговый советник для MetaTrader 4, работающий на основе анализа линий тренда. Советник определяет верхнюю и нижнюю линии тренда по ключевым максимумам и минимумам цены и открывает сделки при пробое этих линий. Расчёт стоп-лосса и тейк-профита основывается на оценке потенциального движения цены после пробоя.
Советник проверяет условия входа и модификации позиций в первые 10 секунд каждого четвёртого часа. При достижении заданного уровня прибыли стоп-лосс перемещается в зону безубытка. При формировании нового сигнала в направлении существующей позиции советник может корректировать уровни стоп-лосса и тейк-профита, а при наличии разрешения — добавлять дополнительные позиции. При формировании сигнала в противоположном направлении существующие позиции закрываются.
Для управления торговлей доступны настройки сессий: Лондон, Нью-Йорк и Токио, позволяющие ограничить торговлю определёнными часовыми периодами. Советник поддерживает уведомления о событиях и позволяет управлять количеством одновременных позиций, размером лота и дополнительными смещениями стоп-лосса и тейк-профита.
Настройки программы
| Настройка | Описание |
|---|---|
| AlertsOn | Уведомления — Включает или выключает отправку уведомлений о событиях и условиях |
| MultiPositions | Множественные позиции — Разрешает открытие нескольких позиций одновременно в одном направлении |
| LotsPerTrade | Лот на сделку — Задаёт размер объёма позиции в лотах для каждой сделки |
| ProfitToMoveSL | Прибыль для переноса стоп-лосса — Уровень прибыли в пунктах, при достижении которого стоп-лосс перемещается в зону безубытка |
| PositiveSL | Положительный стоп-лосс — Смещение стоп-лосса в пунктах от цены входа при переносе в безубыток |
| SL_Offset | Смещение стоп-лосса — Дополнительное смещение уровня стоп-лосса в пунктах |
| TP_Offset | Смещение тейк-профита — Дополнительное смещение уровня тейк-профита в пунктах |
| LondonOpen | Лондонская сессия — Разрешает торговлю в лондонской сессии |
| NewYorkOpen | Нью-йоркская сессия — Разрешает торговлю в нью-йоркской сессии |
| TokyoOpen | Токийская сессия — Разрешает торговлю в токийской сессии |
Поиск по коду файла
extern bool AlertsOn=true;
extern bool MultiPositions=false;
extern double LotsPerTrade=1;
extern int ProfitToMoveSL=40;
extern int PositiveSL=10;
extern int SL_Offset=0;
extern int TP_Offset=0;
extern bool LondonOpen=true;
extern bool NewYorkOpen=true;
extern bool TokyoOpen=true;
int spread;
bool TD=False;/*Default is false. True setting draws up and down arrows instead of dots on TD Points creating more clutter.*/
int BackSteps=0;/*Used to be extern int now just int. Leave at 0*/
int ShowingSteps=1;/*Used to be extern int now just int. Leave at 1*/
bool FractalAsTD=false;/*Used to be extern bool now just bool. Leave at false, otherwise Trend Lines based on Fractal Points not TD Points*/
double TrendLineBreakUp=-1;//Line added.
double TrendLineBreakUpPrev=-1;//Line added.
double TrendLineBreakUpPrev1=-1;//Line added.
bool TrendLineBreakUpFlag=False;//Line added.
double TrendLineBreakDown=-1;//Line added.
double TrendLineBreakDownPrev=-1;//Line added.
double TrendLineBreakDownPrev1=-1;//Line added.
bool TrendLineBreakDownFlag=False;//Line added.
bool BothTLBroken=false;
double highs[100000];
double lows[100000];
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int SetTDPoint(int B)
{
int shift;
if (FractalAsTD==false)
{
for (shift=B;shift>2;shift--)
{
if (High[shift+2]<=High[shift] && High[shift+1]<=High[shift] &&
High[shift-1]<High[shift] && High[shift-2]<High[shift])
highs[shift]=High[shift];
if (Low[shift+2]>=Low[shift] && Low[shift+1]>=Low[shift] &&
Low[shift-1]>Low[shift] && Low[shift-2]>Low[shift])
lows[shift]=Low[shift];
}
highs[0]=0;
lows[0]=0;
highs[1]=0;
lows[1]=0;
}
else
{
for (shift=B;shift>3;shift--)
{
if (High[shift+1]<=High[shift] && High[shift-1]<High[shift] &&
High[shift+2]<=High[shift] && High[shift-2]<High[shift])
highs[shift]=High[shift];
else highs[shift]=0;
if (Low[shift+1]>=Low[shift] && Low[shift-1]>Low[shift] &&
Low[shift+2]>=Low[shift] && Low[shift-2]>Low[shift])
lows[shift]=Low[shift];
else lows[shift]=0;
}
highs[0]=0;
lows[0]=0;
highs[1]=0;
lows[1]=0;
highs[2]=0;
lows[2]=0;
}
return(0);
}
int GetHighTD(int P)
{
int i=0,j=0;
while (j<P)
{
i++;
while(highs[i]==0)
{i++;if(i>Bars-2)return(-1);}
j++;
}
return (i);
}
int GetNextHighTD(int P)
{
int i=P+1;
while(highs[i]<=High[P]){i++;if(i>Bars-2)return(-1);}
return (i);
}
int GetLowTD(int P)
{
int i=0,j=0;
while (j<P)
{
i++;
while(lows[i]==0)
{i++;if(i>Bars-2)return(-1);}
j++;
}
return (i);
}
int GetNextLowTD(int P)
{
int i=P+1;
while(lows[i]>=Low[P] || lows[i]==0){i++;if(i>Bars-2)return(-1);}
return (i);
}
int start()
{
// код доступен только после оплаты
}
int cnt, H1, H2, L1, L2, ii, iii, pos, total, ticket;
double kH, kL, k, pp, tp, sl;
if (MathMod(Hour(),4)==0 && Minute()==0 && Seconds()<10)
{
total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==true)
{
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY &&
Bid-OrderOpenPrice()>=ProfitToMoveSL*Point &&
OrderOpenPrice()-OrderStopLoss()>=0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+PositiveSL*Point,OrderTakeProfit(),0);
continue;
}
if(OrderType()==OP_SELL &&
OrderOpenPrice()-Ask>=ProfitToMoveSL*Point &&
OrderOpenPrice()-OrderStopLoss()<=0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-PositiveSL*Point,OrderTakeProfit(),0);
continue;
}
}
}
else
Print("OrderSelect returned the error of ",GetLastError());
}
SetTDPoint(Bars-1);
H1=GetHighTD(1);
H2=GetNextHighTD(H1);
L1=GetLowTD(1);
L2=GetNextLowTD(L1);
kH=(High[H2]-High[H1])/(H2-H1);
kL=(Low[L1]-Low[L2])/(L2-L1);
TrendLineBreakUp=High[H2]-kH*H2;
TrendLineBreakUpPrev=High[H2]-kH*(H2-1);
TrendLineBreakUpPrev1=High[H2]-kH*(H2-2);
TrendLineBreakDown=Low[L2]+kL*L2;
TrendLineBreakDownPrev=Low[L2]+kL*(L2-1);
TrendLineBreakDownPrev1=Low[L2]+kL*(L2-2);
/*
Print("H1=", H1, " High[H1]=", High[H1]);
Print("H2=", H2, " High[H2]=", High[H2]);
Print("L1=", L1, " Low[L1]=", Low[L1]);
Print("L2=", L2, " Low[L2]=", Low[L2]);
Print("TrendLineBreakUp=", TrendLineBreakUp);
Print("TrendLineBreakDown=", TrendLineBreakDown);
Print("Open[0]=", Open[0], " Open[1]=", Open[1]);
*/
if(Open[0]>TrendLineBreakUp && Open[0]<TrendLineBreakDown)
{
/*
total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==true)
{
if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
continue;
}
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
continue;
}
}
else
Print("OrderSelect returned the error of ",GetLastError());
}
*/
BothTLBroken=true;
ArrayInitialize(highs, 0.0);
ArrayInitialize(lows, 0.0);
return(0);
}
Показано первые 50% кода (символов: 8384)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.