SilverTrendTrading v3
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «silvertrendtrader_v3_jma.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
SilverTrendTrading v3 — это торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник анализирует рыночный сигнал через собственную функцию SilverTrendSignal() и дополнительно использует фильтр на основе индикатора JMA. Торговые решения принимаются при совпадении направления сигнала и знака значения JMA.
Советник поддерживает открытие длинных и коротких позиций с возможностью установки начального стоп-лосса и тейк-профита. Для управляемых позиций реализован трейлинг-стоп, который периодически корректирует уровень стоп-лосса по рыночной цене.
Встроена защита от открытия новых сделок в пятницу вечером (настраиваемый час). Каждая позиция идентифицируется уникальным магическим номером, рассчитываемым на основе символа и таймфрейма. Также предусмотрен блокировочный механизм через глобальные переменные для предотвращения одновременных торговых операций.
Настройки программы
| Настройка | Описание |
|---|---|
| MAPeriod | Период — Параметр периода, используемый во внутренних расчётах советника. |
| TrailingStop | Трейлинг-стоп — Значение трейлинг-стопа в пунктах для управляемых позиций. Если значение равно 0, трейлинг-стоп не используется. |
| TakeProfit | Тейк-профит — Тейк-профит для новых позиций, задаваемый в пунктах. Если значение равно 0, тейк-профит не устанавливается. |
| InitialStopLoss | Начальный стоп-лосс — Начальный стоп-лосс для новых позиций, задаваемый в пунктах. Если значение равно 0, стоп-лосс не устанавливается. |
| FridayNightHour | Час запрета сделок в пятницу — Час (UTC) после которого новые сделки не открываются в пятницу. Если значение равно 0, ограничение отключено. |
Поиск по коду файла
#include <stdlib.mqh>
#property stacksize 1024
extern int MAPeriod=60;
extern double TrailingStop = 0;
extern double TakeProfit = 0;
extern double InitialStopLoss=0;
extern double FridayNightHour=16;
double Lots = 1;
int risk=3;
datetime bartime = 0;
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 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>=0; 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 JMA(int Len, int phase) {
int BarCount=300;
int counted_bars=300;
int AccountedBars=0;
int jj=0;
int ii=0;
int shift=0;
double series=Показано первые 50% кода (символов: 11011)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.