SilverTrendTrading v5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «silvertrendtrader_v5.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
SilverTrendTrading v5 — это советник (Expert Advisor) для платформы MetaTrader 4, написанный на языке MQL4. Программа анализирует ценовые данные и генерирует торговые сигналы на основе пользовательского индикатора SilverTrendSignal, а также поддерживает три варианта фильтра направления: EMA, JMA (Jurik Moving Average) и J-TPO (Jurik Time Price Opportunity).
Советник открывает длинные и короткие позиции на текущем графике с возможностью задания начального стоп-лосса, тейк-профита и скользящего стопа. Также реализована фильтрация входа в сделки в пятничный вечер по заданному часу, что позволяет избежать нежелательных позиций перед выходными.
Внутренняя логика расчёта индикаторов и условий формирования сигналов не раскрывается. Программа использует торговые функции MetaTrader 4 для управления позициями и включает механизм блокировки одновременных торговых операций через глобальные переменные.
Настройки программы
| Настройка | Описание |
|---|---|
| MAPeriod | Период скользящей средней — Период скользящей средней, используемой в расчётах индикатора. |
| TrailingStop | Скользящий стоп — Расстояние скользящего стопа в пунктах для открытых позиций. Если равно 0, скользящий стоп не применяется. |
| TakeProfit | Тейк-профит — Расстояние тейк-профита в пунктах для новых позиций. Если равно 0, тейк-профит не устанавливается. |
| InitialStopLoss | Начальный стоп-лосс — Начальное расстояние стоп-лосса в пунктах для новых позиций. Если равно 0, стоп-лосс не устанавливается. |
| 1=EMA / 2=JMA / 3=JTPO (Type) | Тип индикатора — Тип индикатора направления: 1 — EMA, 2 — JMA (Jurik Moving Average), 3 — JTPO (Jurik Time Price Opportunity). |
| FridayNightHour | Час пятничной фильтрации — Час в пятницу, после которого новые сделки не открываются (по умолчанию 16). Если значение равно 0, фильтр пятницы отключён. |
Поиск по коду файла
#include <stdlib.mqh>
#property stacksize 1024
extern int MAPeriod=14;
extern double TrailingStop = 0;
extern double TakeProfit = 0;
extern double InitialStopLoss=0;
extern int Type=1; // 1=EMA / 2=JMA / 3=JTPO
extern double FridayNightHour=16;
double Lots = 1;
int risk=3;
datetime bartime;
double Slippage=3;
int Signal, OldSignal;
int start()
{
// код доступен только после оплаты
}
int func_TimeFrame_Const2Val(int Constant ) {
switch(Constant) {
case 1: // M1
return(1);
case 5: // M5
return(2);
case 15:
return(3);
case 30:
return(4);
case 60:
return(5);
case 240:
return(6);
case 1440:
return(7);
case 10080:
return(8);
case 43200:
return(9);
}
}
string func_TimeFrame_Val2String(int Value ) {
switch(Value) {
case 1: // M1
return("PERIOD_M1");
case 2: // M1
return("PERIOD_M5");
case 3:
return("PERIOD_M15");
case 4:
return("PERIOD_M30");
case 5:
return("PERIOD_H1");
case 6:
return("PERIOD_H4");
case 7:
return("PERIOD_D1");
case 8:
return("PERIOD_W1");
case 9:
return("PERIOD_MN1");
default:
return("undefined " + Value);
}
}
int func_Symbol2Val(string symbol) {
if(symbol=="AUDUSD") { return(01);
} else if(symbol=="CHFJPY") { return(10);
} else if(symbol=="EURAUD") { return(10);
} else if(symbol=="EURCAD") { return(11);
} else if(symbol=="EURCHF") { return(12);
} else if(symbol=="EURGBP") { return(13);
} else if(symbol=="EURJPY") { return(14);
} else if(symbol=="EURUSD") { return(15);
} else if(symbol=="GBPCHF") { return(20);
} else if(symbol=="GBPJPY") { return(21);
} else if(symbol=="GBPUSD") { return(22);
} else if(symbol=="USDCAD") { return(40);
} else if(symbol=="USDCHF") { return(41);
} else if(symbol=="USDJPY") { return(42);
} else if(symbol=="GOLD") { return(90);
} else { Comment("unexpected Symbol"); return(0);
}
}
int OrderSendExtended(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment, int magic, datetime expiration=0, color arrow_color=CLR_NONE) {
datetime OldCurTime;
int timeout=30;
int ticket;
OldCurTime=CurTime();
while (GlobalVariableCheck("InTrade") && !IsTradeAllowed()) {
if(OldCurTime+timeout<=CurTime()) {
Print("Error in OrderSendExtended(): Timeout encountered");
return(0);
}
Sleep(1000);
}
GlobalVariableSet("InTrade", CurTime()); // set lock indicator
ticket = OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color);
GlobalVariableDel("InTrade"); // clear lock indicator
return(ticket);
}
double SilverTrendSignal(int shift)
{
int RISK=3;
int CountBars=350;
int SSP=9;
int i;
int i1,i2,K;
double Range,AvgRange,smin,smax,SsMax,SsMin,price,val=0;
bool uptrend,old;
K=33-RISK;
for (i = CountBars-SSP; i>=shift; i--) {
Range=0;
AvgRange=0;
for (i1=i; i1<=i+SSP; i1++) {AvgRange=AvgRange+MathAbs(High[i1]-Low[i1]); }
Range=AvgRange/(SSP+1);
SsMax=High[i];
SsMin=Low[i];
for (i2=i;i2<=i+SSP-1;i2++) {
price=High[i2];
if(SsMax<price) SsMax=price;
price=Low[i2];
if(SsMin>=price) SsMin=price;
}
smin = SsMin+(SsMax-SsMin)*K/100;
smax = SsMax-(SsMax-SsMin)*K/100;
val=0;
if (Close[i]<smin) {
uptrend = false;
}
if (Close[i]>smax) {
uptrend = true;
}
/*
if (uptrend!=old && uptrend==true) { val=1;
} else if (uptrend!=old && uptrend==false) { val=-1;
} else { val=0; }
*/
if (uptrend==true) { val=1;
} else if (uptrend==false) { val=-1;
} else { val=0; }
old=uptrend;
}
return(val);
}
double J_TPO(int Len, int shift)
{
double f0, f8, f10, f18, f20, f28, f30, f40, k,
var14, var18, var1C, var20, var24, value;
int f38, f48, var6, var12, varA, varE;
double arr0[300], arr1[300], arr2[300], arr3[300];
for(int i=200-Len-100; i>=shift; i--)
{
var14=0;
var1C=0;
if(f38==0)
{
f38=1;
f40=0;
if (Len-1>= 2) f30=Len-1;
else f30=2;
f48=f30+1;
f10=Close[i];
arr0[f38] = Close[i];
k=f48;
f18 = 12 / (k * (k - 1) * (k + 1));
f20 = (f48 + 1) * 0.5;
}
else
{
if (f38 <= f48) f38 = f38 + 1;
else f38 = f48 + 1;
f8 = f10;
f10 = Close[i];
if (f38 > f48)
{
for (var6 = 2; var6<=f48; var6++) arr0[var6-1] = arr0[var6];
arr0[f48] = Close[i];
}
else arr0[f38] = ClПоказано первые 50% кода (символов: 13217)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.