sergey_0.2.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «sergey_0.2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Торговый советник для MetaTrader 4, основанный на модифицированной стратегии TrendScalper. Советник определяет торговые сигналы с помощью пользовательских индикаторов (ZigZag, Fractals, 3Line_Break) и выполняет открытие позиций в направлении обнаруженного сигнала. Перед открытием нового ордера сигнал подтверждается индикатором 3Line_Break, что служит дополнительной фильтрацией.
В советнике реализованы управление рисками и трейлинг-стоп. При активном режиме управления капиталом размер лота рассчитывается на основе баланса счёта и заданного коэффициента риска. Трейлинг-стоп корректирует уровень Stop Loss ордера на основе значения ATR, отслеживая движение цены в пользу позиции.
Советник также контролирует уже открытые ордера: при появлении сигнала на противоположную сторону он может закрыть имеющуюся позицию и открыть новую. Все торговые операции выполняются через стандартные функции MQL4, при этом советник отслеживает последний обработанный бар, чтобы избежать повторной обработки на каждом тике.
Настройки программы
| Настройка | Описание |
|---|---|
| LotsIfNoMM | Размер лота, используемый при отключённом управлении капиталом (MM_Mode = 0). |
| Stoploss | Начальный уровень стоп-лосса в пунктах, задаваемый при открытии ордера. |
| Slip | Допустимое проскальзывание в пунктах при выполнении торговых операций. |
| InitialTarget | Начальная цель в пунктах, используемая как целевой уровень прибыли для контроля открытия позиции (применяется в зависимости от режима работы советника). |
| MM_Mode | Режим управления капиталом: 0 — фиксированный размер лота, отрицательные значения — дробные лоты для мини-счётов, положительные значения — полные лоты с расчётом от баланса. |
| MM_Risk | Коэффициент риска, определяющий увеличение размера лота в зависимости от баланса счёта при активном управлении капиталом. |
Поиск по коду файла
extern double LotsIfNoMM=0.1;
extern int Stoploss=200;
extern int Slip=5;
extern int InitialTarget=999;
extern int MM_Mode=0;
extern int MM_Risk=40;
double Opentrades,orders,first,mode,Ilo,sym,b;
double b4signal,Signal,Triggerline,b4Triggerline,Nowsignal,NowTriggerline,sl,LastOpByExpert,LastBarChecked;
int cnt,cnt2;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
Comment(" Trailingstop ", b, "\n"," Tick no. ", iVolume(NULL,0,0),
"\n"," Lots ",Ilo);
/**********************************Money and Risk Management***************************************
Changing the value of mm will give you several money management options
mm = 0 : Single 1 lot orders.
mm = -1 : Fractional lots/ balance X the risk factor.(use for Mini accts)
mm = 1 : Full lots/ balance X the risk factor up to 100 lot orders.(use for Regular accounts)
***************************************************************************************************
RISK FACTOR:
risk can be anything from 1 up.
Factor of 5 adds a lot for every $20,000.00 added to the balance.
Factor of 10 adds a lot with every $10.000.00 added to the balance.
The higher the risk, the easier it is to blow your margin..
**************************************************************************************************/
if (MM_Mode < 0) {
Ilo = MathCeil(AccountBalance()*MM_Risk/10000)/10;
if (Ilo > 100) {
Ilo = 100;
}
} else {
Ilo = LotsIfNoMM;
}
if (MM_Mode > 0)
{
Ilo = MathCeil(AccountBalance()*MM_Risk/10000)/10;
if (Ilo > 1)
{
Ilo = MathCeil(Ilo);
}
if (Ilo < 1)
{
Ilo = 1;
}
if (Ilo > 100)
{
Ilo = 100;
}
}
/*
Print(iCustom(Symbol(),0,"Ind-Fractals-1",True,7,7));
Print(iCustom(Symbol(),0,"High_Low v2 (ZigZag)",300,6,0,19));
Print(iCustom(Symbol(),0,"3Line_Break",3,0,1));
*/
if (LastBarChecked == Time[0])
return(0);
else
{
LastBarChecked = Time[0];
Opentrades=0;
for (cnt=0;cnt<OrdersTotal();cnt++)
{
if ( OrderSelect (cnt, SELECT_BY_POS) == false ) continue;
if ( OrderSymbol()==Symbol()) Opentrades=Opentrades+1;
}
if (Opentrades != 0)
{
orders=0;
sym=0;
for (cnt=0;cnt<OrdersTotal();cnt++)
{
if ( OrderSelect (cnt, SELECT_BY_POS) == false ) continue;
if ( OrderSymbol()==Symbol())
{
sym=cnt;
orders=1;
b=5*Point+iATR(NULL,0,3,1)*2;
}
}
mode=OrderType();
if (mode==OP_BUY)
{
if (Bid-OrderOpenPrice()>b)
{
if (OrderStopLoss()<Bid-b)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-b,OrderTakeProfit(),0,LimeGreen);
LastOpByExpert=CurTime();
}
}
}
if (mode==OP_SELL)
{
if (OrderOpenPrice()-Ask>(b))
{
if (OrderStopLoss()>(Ask+b))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+b,OrderTakeProfit(),0,HotPink);
LastOpByExpert=CurTime();
}
}
}
}
Signal = 0;
for (cnt=1;cnt<=40;cnt++)
{
if (iCustom(Symbol(),0,"High_Low v2 (ZigZag)",300,6,0,cnt)<=Low[cnt])
{
for (cnt2=1;cnt2<=7;cnt2=cnt2+2)
{
if (iCustom(Symbol(),0,"Ind-Fractals-1",True,cnt2,cnt)!=0)
{
Signal = 1; //1=BUY, 2=SELL
break;
}
}
if (Signal != 0) break;
}
if (iCustom(Symbol(),0,"High_Low v2 (ZigZag)",300,6,0,cnt)>=High[cnt])
{
for (cnt2=0;cnt2<=7;cnt2=cnt2+2)
{
if (iCustom(Symbol(),0,"Ind-Fractals-1",True,cnt2,cnt)!=0)
{
Signal = 2; //1=BUY, 2=SELL
break;
}
}
if (Signal != 0) break;
}
}
if (Signal == 0)
{
Print("No signal over 40 bars..."); //Highly unlikely, but interesting to check
return(0);
}
else
{
if (Signal == 1 && iCustom(Symbol(),0,"3Line_Break",3,0,1) > iCustom(Symbol(),0,"Показано первые 50% кода (символов: 7827)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.