SMC Autotrader Momentum
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «smc_trader_triggerlines_v2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Программа написана на MQL4 для MetaTrader 4 и представляет собой торгового советника. Она выполняется при появлении нового бара и анализирует ценовые данные, рассчитывая собственный индикаторный показатель для трёх временных интервалов (15, 60 и 100 баров). На основе сравнения рассчитанных значений определяется направление тренда для каждого интервала.
Советник открывает длинные позиции при совпадении направления Long на всех трёх интервалах и коротные — при совпадении Short. Перед открытием ордера проверяется доступность свободного маржа. Реализована логика закрытия противоположных позиций при развороте тренда на краткосрочном интервале.
В коде присутствуют блоки управления стоп-лоссом и фиксацией прибыли, однако они отключены условными конструкциями и в текущем виде не активны. Параметры TakeProfit, Lots, InitialStop и TrailingStop объявлены как extern-переменные, но часть из них не задействована в активной логике.
Настройки программы
| Настройка | Описание |
|---|---|
| TakeProfit | Тейк-профит — Числовой параметр, объявленный как extern с значением по умолчанию 50. Задаёт уровень тейк-профита, используемый при модификации ордеров в отключённых блоках. |
| Lots | Объём лота — Числовой параметр, объявленный как extern с значением по умолчанию 0.1. Определяет объём сделки, используемый при открытии ордеров. |
| InitialStop | Начальный стоп-лосс — Числовой параметр, объявленный как extern с значением по умолчанию 30. В текущем коде не используется в активной логике. |
| TrailingStop | Трейлинг-стоп — Числовой параметр, объявленный как extern с значением по умолчанию 20. Используется в отключённом блоке корректировки стоп-лосса по тренду. |
Поиск по коду файла
extern double TakeProfit = 50;
extern double Lots = 0.1;
extern double InitialStop = 30;
extern double TrailingStop = 20;
datetime BarTime;
static string DirTrgS = "None";
static string DirTrgM= "None";
static string DirTrgL = "None";
int init()
{
// код доступен только после оплаты
}
int start()
{
// код доступен только после оплаты
}
int cnt,total,ticket,MinDist,tmp;
double Spread;
double ATR;
double StopMA;
double SetupHigh, SetupLow;
int length;
double lsma_length;
double sum[30];
double wt[30];
double lsma_ma[30];
double lengthvar;
double tmpTG;
int shift,i,j;
double lsma10, lsma25;
if(Bars<100)
{Print("bars less than 100");
return(0);}
if(BarTime == Time[0]) {return(0);}
BarTime = Time[0];
length = 15; //Hourly set to 15 bars
lsma_length = 15;
for(shift = 30; shift >= 0; shift--) // MAIN For Loop
{
sum[1] = 0;
for(i = length; i >= 1 ; i--) //LSMA loop
{
lengthvar = length + 1; //lengthvar = 21
lengthvar /= 3; //lengthvar = 7
tmpTG = 0;
tmpTG = ( i - lengthvar)*Close[length-i+shift]; //tmp = 20 - 7 * close[20-i+shift]
sum[1]+=tmpTG;
}
wt[shift] = sum[1]*6/(length*(length+1));
j = shift;
lsma_ma[shift] = wt[j+1] + (wt[j]-wt[j+1])* 2/(lsma_length+1);
}
DirTrgS = "None";
if(wt[1] > lsma_ma[1] && wt[2] > lsma_ma[2] ) DirTrgS = "Long"; //wt[2] < lsma_ma[2] &&
if(wt[1] < lsma_ma[1] && wt[2] < lsma_ma[2] ) DirTrgS = "Short"; // wt[2] > lsma_ma[2] &&
length = 60; //4Hourly = 15(hourly) *4
lsma_length = 60;
for(shift = 30; shift >= 0; shift--) // MAIN For Loop
{
sum[1] = 0;
for(i = length; i >= 1 ; i--) //LSMA loop
{
lengthvar = length + 1; //lengthvar = 21
lengthvar /= 3; //lengthvar = 7
tmpTG = 0;
tmpTG = ( i - lengthvar)*Close[length-i+shift]; //tmp = 20 - 7 * close[20-i+shift]
sum[1]+=tmpTG;
}
wt[shift] = sum[1]*6/(length*(length+1));
j = shift;
lsma_ma[shift] = wt[j+1] + (wt[j]-wt[j+1])* 2/(lsma_length+1);
}
DirTrgM = "None";
if(wt[1] > lsma_ma[1] && wt[2] > lsma_ma[2]) DirTrgM = "Long"; //2 days needed to confirm trend //wt[2] < lsma_ma[2] &&
if(wt[1] < lsma_ma[1] && wt[2] < lsma_ma[2]) DirTrgM = "Short"; //wt[2] > lsma_ma[2] &&
length = 100; // = Daily
lsma_length = 100;
for(shift = 30; shift >= 0; shift--) // MAIN For Loop
{
sum[1] = 0;
for(i = length; i >= 1 ; i--) //LSMA loop
{
lengthvar = length + 1; //lengthvar = 21
lengthvar /= 3; //lengthvar = 7
tmpTG = 0;
tmpTG = ( i - lengthvar)*Close[length-i+shift]; //tmp = 20 - 7 * close[20-i+shift]
sum[1]+=tmpTG;
}
wt[shift] = sum[1]*6/(length*(length+1));
j = shift;
lsma_ma[shift] = wt[j+1] + (wt[j]-wt[j+1])* 2/(lsma_length+1);
}
DirTrgL = "None";
if(wt[1] > lsma_ma[1] && wt[2] > lsma_ma[2]) DirTrgL = "Long"; //2 days needed to confirm trend //wt[2] < lsma_ma[2] &&
if(wt[1] < lsma_ma[1] && wt[2] < lsma_ma[2]) DirTrgL = "Short"; //wt[2] > lsma_ma[2] &&
MinDist=MarketInfo(Symbol(),MODE_STOPLEVEL);
Spread=(Ask-Bid);
double TrendS=iMA(NULL,0,5Показано первые 50% кода (символов: 5323)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.