myfriend.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «myfriend.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Программный продукт представляет собой торгового советника для платформы MetaTrader 4, написанный на языке MQL4. Советник предназначен для автоматической торговли на инструменте EUR/USD в таймфрейме M30 и использует комбинацию уровней Пивот, пользовательский индикатор «DC» и расчёт краткосрочного импульса цены для формирования торговых сигналов.
Советник открывает позиции BUY и SELL с расчётом размера лота на основе свободного маркета заданного риска. Для управления рисками предусмотрены фиксированные уровни тейк-профита и стоп-лосса, а также возможность включения трейлинг-стопа, который перемещает защитный уровень при достижении определённой прибыли.
Дополнительно советник поддерживает ручное закрытие позиций по условию срабатывания временного окна и направления цены, а также отображает ключевые уровни Пивот и их отражения на графике в виде горизонтальных линий с подписями.
Настройки программы
| Настройка | Описание |
|---|---|
| ParamExp | Разделитель основных настроек — Текстовый разделитель, обозначающий группу основных настроек экспертного советника в интерфейсе параметров. |
| Risk | Размер риска (%) — Процент риска от свободного маркета, используемый при расчёте размера лота для открытия позиции. |
| TP | Тейк-профит (пункты) — Расстояние в пунктах до уровня тейк-профита при открытии позиции по стандартным условиям. |
| SLPlus | Отступ стоп-лосса (пункты) — Дополнительный отступ в пунктах для расчёта уровня стоп-лосса при открытии позиции без альтернативных условий. |
| ParamClose | Разделитель настроек закрытия — Текстовый разделитель, обозначающий группу настроек закрытия позиций в интерфейсе параметров советника. |
| UseClose | Включить закрытие позиций — Логический переключатель, управляющий доступностью автоматического закрытия позиций по временному и ценовому условию. |
| ParamTrail | Разделитель настроек трейлинг-стопа — Текстовый разделитель, обозначающий группу настроек трейлинг-стопа в интерфейсе параметров советника. |
| ChPeriod | Период индикатора DC — Параметр периода, используемый при расчёте пользовательского индикатора «DC» для формирования торговых сигналов. |
| UseTrailingStop | Включить трейлинг-стоп — Логический переключатель, включающий или отключающий функцию трейлинг-стопа для защиты прибыли. |
| StartProfit | Прибыль для активации трейлинг-стопа (пункты) — Минимальная прибыль в пунктах, которую позиция должна получить, прежде чем трейлинг-стоп начнёт перемещать защитный уровень. |
| TSLPlus | Отступ трейлинг-стопа (пункты) — Дополнительный отступ в пунктах от значения индикатора при перемещении стоп-лосса активным трейлинг-стопом. |
Поиск по коду файла
extern string ParamExp="--- ????????? ???????? ---";
extern double Risk=0.33;
extern int TP=70;
extern int SLPlus=13;
extern string ParamClose=" --- ????????????? ??????????????? ?????????????? ---";
extern bool UseClose=true;
extern string ParamTrail=" --- ????????? Trailing Stop ---";
extern int ChPeriod=16;
extern bool UseTrailingStop=true;
extern int StartProfit=5;
extern int TSLPlus=1;
int start()
{
// код доступен только после оплаты
}
double Lots, TakeProfit, StopLoss;
double I1Current, I1Previous, I2Current, I2Previous;
double I3Current, I3Previous, I4Current, I4Previous;
double Pivot, R1, R2, R3, S1, S2, S3;
double MP;
int cnt, ticket, total;
int signal1, signal2;
static int se;
if(Bars<100 && se==0)
{
Print("????? ?????? ???? ?? ????? 100");
se++;
}
if(Symbol()!="EURUSD" && se==0)
{
Print("????????? ????? ???????? ?????? ?? ???? EUR/USD");
se++;
}
if(Period()!=PERIOD_M30 && se==0)
{
Print("????????? ?????????????? ??? ???? ????? ?30");
se++;
}
if(se>0) return(0);
I1Current=iCustom(NULL,0,"DC",ChPeriod,1,0,0,ChPeriod,0,0);
I1Previous=iCustom(NULL,0,"DC",ChPeriod,1,0,0,ChPeriod,0,1);
I2Current=iCustom(NULL,0,"DC",ChPeriod,1,0,0,ChPeriod,1,0);
I2Previous=iCustom(NULL,0,"DC",ChPeriod,1,0,0,ChPeriod,1,1);
Pivot=(iHigh(NULL,PERIOD_D1,1)+iLow(NULL,PERIOD_D1,1)+iClose(NULL,PERIOD_D1,1))/3;
S1=2*Pivot-iHigh(NULL,PERIOD_D1,1);
R1=2*Pivot-iLow(NULL,PERIOD_D1,1);
S2=Pivot-R1+S1;
R2=Pivot+R1-S1;
S3=iLow(NULL,PERIOD_D1,1)-2*(iHigh(NULL,PERIOD_D1,1)-Pivot);
R3=iHigh(NULL,PERIOD_D1,1)+2*(Pivot-iLow(NULL,PERIOD_D1,1));
ShowPivot(Pivot,R1,R2,R3,S1,S2,S3);
MP=((Close[0]+Close[1]+Close[2])/3
- (Close[0]+Close[1]+Close[2]
+Close[3]+Close[4]+Close[5]
+Close[6]+Close[7]+Close[8])/9)*1000;
if(Open[1]<Pivot // ???????? ??????????? ???? ???? ??????? ?????
&& Close[1]>Pivot // ???????? ??????????? ???? ???? ??????? ????? - ????????????? ??????
&& (Close[1]-Open[1])>12*Point // ????????? ???????? ???? ?????????? ???????
&& Ask>Close[1] // ???? ??????
&& MP>0 // ????????? ????? +
&& Ask<High[0] // ??????? ?? ?? ????????? ????
)
signal1=1;
if(Open[1]>Pivot // ???????? ??????????? ???? ???? ??????? ?????
&& Close[1]<Pivot // ???????? ??????????? ???? ???? ??????? ????? - ????????????? ??????
&& (Open[1]-Close[1])>12*Point // ????????? ???????? ???? ?????????? ???????
&& Bid<Close[1] // ???? ??????
&& MP<0 // ????????? ????? -
&& Bid>Low[0] // ??????? ?? ?? ???????? ????
)
signal1=-1;
if(I2Current-I1Current>R1-S1 // ??????? ????? ???????? ???? ?????? ???????? ??????
&& I2Previous-I1Previous<R1-S1 // ?????????? ??? ???
&& I2Current>I2Previous // ??????? ??????? ?????? ???????? ????? ?????
&& I1Current>=I1Previous // ?????? - ?? ????? ????
&& MP>0 // ????????? ????? +
&& Ask<High[0]-7*Point // ??????? ?? ?? ????????? ????
)
signal1=1;
if(I2Current-I1Current>R1-S1 // ??????? ????? ???????? ???? ?????? ???????? ??????
&& I2Previous-I1Previous<R1-S1 // ?????????? ??? ???
&& I1Current<I1Previous // ?????? ??????? ?????? ???????? ????? ????
&& I2Current>=I2Previous // ??????? - ?? ????? ?????
&& MP>0 // ????????? ????? +
&& Bid>Low[0]+7*Point // ??????? ?? ?? ???????? ????
)
signal1=-1;
total=OrdersTotal();
if(total<1)
{
if(AccountFreeMargin()<(1000*Lots))
{
Print("???????????? ????? ?? ?????. ????????? ????? = ", AccountFreeMargin());
return(0);
}
bool BUYStart=false;
bool SELLStart=false;
if(!BUYStart && !SELLStart)
{
if(signal1==1
|| signal2==1)
{
BUYStart=true;
SELLStart=false;
}
if(signal1==-1
|| signal2==-1)
{
SELLStart=true;
BUYStart=false;
}
}
if(BUYStart)
OpenBuy(signal2,I1Current);
if(SELLStart)
OpenSell(signal2,I2Current);
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
if(
UseClose
&& ((CurTime()-OrderOpenTime())>=3*Period()*60
&& (CurTime()-OrderOpenTime())<4*Period()*60
&& Close[1]<OrderOpenPrice()-3*Point)
)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(0);
}
if(UseTrailingStop
&& (Bid-OrderOpenPrice())>StartProfit*Point
&& I1Current>I1Previous)
{
StopLoss=I1Current-TSLPlus*Point;
if(OrderStopLoss()<StopLoss)
Показано первые 50% кода (символов: 7624)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.