SilverTrendExpert_v2
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «silvertrendexpert_v2a.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
SilverTrendExpert_v2 — торговый советник для MetaTrader 4, использующий индикатор SilverTrend для определения направления тренда и генерации сигналов на покупку или продажу. Советник анализирует динамику цен с помощью собственной логики трендового индикатора и дополняет сигналы фильтром Juice на основе стандартного отклонения, который позволяет выявлять флэт-рынок и приостанавливать торговлю в таких условиях.
Продукт поддерживает управление денежными средствами с расчётом размера лота на основе процента риска от капитала, а также механизм уменьшения лота после серии убытков. Реализованы стандартные элементы управления рисками: стоп-лосс, трейлинг-стоп, тейк-профит и ограничение максимального количества открытых позиций.
Советник работает на нескольких валютных парах с автоматическим определением магического номера для каждой пары и таймфрейма. Имеется режим отладки с записью информации в файлы для анализа работы стратегии. Торговля может быть включена и отключена глобальным параметром Turnon.
Настройки программы
| Настройка | Описание |
|---|---|
| Change to 1 to allow print (Debug) | Отладка — Включает вывод отладочной информации в файлы при значении 1 |
| Change to 1 if trading live. (LiveTrading) | Реальная торговля — Включает режим реальной торговли при значении 1 |
| Change to 0 if you want to shutdown money management controls. Lots = 1 will be in effect and only 1 (mm) | Управление рисками — Включает или отключает систему управления денежными средствами: при 0 лот фиксируется равным Lots |
| Change to whatever percent of equity you wish to risk. (Riskpercent) | Процент риска — Процент от капитала, рискуемый на одну позицию |
| Used to decrease lot size after a loss is experienced to protect equity. Recommended not to change. (DecreaseFactor) | Коэффициент уменьшения — Коэффициент уменьшения лота после убытка для защиты капитала |
| Maximum pips willing to lose per position. (StopLoss) | Стоп-лосс — Максимальное количество пипсов для стоп-лосса на позицию |
| Change to whatever number of pips you wish to trail your position with. (TrailingStop) | Трейлинг-стоп — Количество пипсов для трейлинг-стопа |
| Expert will stop trading if equity level decreases to that level. (Margincutoff) | Порог маржи — Порог капитала — советник прекращает торговлю при снижении equity до этого уровня |
| Total number of positions on all currency pairs. You can change this number as you wish. (Maxtrades) | Максимум сделок — Общее количество разрешённых открытых позиций на всех парах |
| Maximum profit level achieved. (TakeProfit) | Тейк-профит — Максимальный уровень прибыли для фиксации на позицию |
| Possible fix for not getting filled or closed (Slippage) | Проскальзывание — Допустимое проскальзывание при выполнении ордеров |
| SSP | SSP — Параметр периода индикатора SilverTrend |
| Is this the same as RiskPercent?? (RISK) | RISK — Параметр индикатора SilverTrend, влияющий на расчёт диапазона |
| UseJuice | Использовать Juice — Включает или отключает фильтр Juice для определения флэт-рынка |
| JuicePeriod | Период Juice — Период расчёта индикатора Juice |
| JuiceLevel | Уровень Juice — Уровень фильтра Juice для определения флэт-рынка |
| standard lot size. (Lots) | Лот — Стандартный размер лота |
| Turns expert on, change to 0 and no trades will take place even if expert is enabled. (Turnon) | Включение — Включает или отключает советник: при значении 0 сделки не совершаются |
Поиск по коду файла
#include <stdlib.mqh>
extern int Debug = 0; // Change to 1 to allow print
extern int AccountIsMini = 0; // Change to 1 if trading mini account
extern int LiveTrading = 0; // Change to 1 if trading live.
extern int mm = 1; // Change to 0 if you want to shutdown money management controls. Lots = 1 will be in effect and only 1 lot will be open regardless of equity.
extern double Riskpercent = 5; // Change to whatever percent of equity you wish to risk.
extern double DecreaseFactor = 3; // Used to decrease lot size after a loss is experienced to protect equity. Recommended not to change.
extern double StopLoss = 45; // Maximum pips willing to lose per position.
extern double TrailingStop = 0; // Change to whatever number of pips you wish to trail your position with.
extern double Margincutoff = 800; // Expert will stop trading if equity level decreases to that level.
extern double Maxtrades = 10; // Total number of positions on all currency pairs. You can change this number as you wish.
extern int TakeProfit = 0; // Maximum profit level achieved.
extern int Slippage = 10; // Possible fix for not getting filled or closed
extern int SSP=9;
extern int RISK=3; // Is this the same as RiskPercent??
extern bool UseJuice=true;
extern int JuicePeriod= 7;
extern int JuiceLevel= 4;
extern double Lots = 1; // standard lot size.
extern int Turnon = 1; // Turns expert on, change to 0 and no trades will take place even if expert is enabled.
string OrderText = "";
double lotMM;
int TradesInThisSymbol;
datetime LastTime;
double Sl;
double Tr;
int ticket;
bool OK2Buy, OK2Sell; // determines if buy or sell trades are allowed
bool FlatMarket;
int NumBuys, NumSells; // Number of buy and sell trades in this symbol
bool first_time = true;
int SilverTrendVal;
double CurrentJuice; // From Juice
int init()
{
// код доступен только после оплаты
}
int deinit()
{
int handle;
if (Debug == 1)
{
handle = GlobalVariableGet("MyHandle");
FileFlush(handle);
FileClose(handle);
GlobalVariableDel("MyHandle");
}
return(0);
}
int Write(string str)
{
int handle;
handle = GlobalVariableGet("MyHandle");
FileWrite(handle,str,"\r\n");
}
int SilverTrend(int SSPval, double Risk, int shift)
{
int i,K;
double Range,AvgRange,smin,smax,SsMax,SsMin,price;
int trend;
K=33-Risk;
Range=0;
AvgRange=0;
for (i=0; i<=SSPval; i++)
{
AvgRange=AvgRange+MathAbs(High[i+shift]-Low[i+shift]);
}
Range=AvgRange/(SSPval+1);
SsMax=High[shift]; SsMin=Low[shift];
for (i=0;i<=SSPval-1;i++)
{
price=High[i+shift];
if(SsMax<price) SsMax=price;
price=Low[i+shift];
if(SsMin>=price) SsMin=price;
}
smin = SsMin+(SsMax-SsMin)*K/100;
smax = SsMax-(SsMax-SsMin)*K/100;
if (Close[shift]<smin)
{
trend = -1;
}
if (Close[shift]>smax)
{
trend = 1;
}
return(trend);
}
int DetermineJuiceLevel()
{
if (Symbol() == "GBPUSD") return (8);
return (JuiceLevel);
}
double Juice(int shift, int period, int level)
{
double osma= 0;
osma= iStdDev(NULL,0, period, MODE_EMA, 0, PRICE_CLOSE,shift) - level*Point;
return (osma); // return last computed value
}
bool GetSTExit(string type,int exitall, int SilverTr)
{
bool ExitCondition;
ExitCondition = false;
if (type == "BUY")
{
if (SilverTr == -1)
{
if (Debug == 1)
{
Print ("Exit Condition met for Buy");
Write ("Exit Condition met for Buy");
}
ExitCondition = true;
}
}
if (type == "SELL")
{
if (SilverTr == 1)
{
if (Debug == 1)
{
Print ("Exit Condition met for Sell");
Write ("Exit Condition met for Sell");
}
ExitCondition = true;
}
}
if(exitall==1) ExitCondition = true;
return(ExitCondition);
}
bool CheckBuyCondition(int STrend)
{
if (STrend > 0)
{
if (Debug == 1) Print ("Buy Condition met");
return(true);
}
return (false);
}
bool CheckSellCondition(int STrend)
{
if (STrend < 0)
{
if (Debug == 1) Print ("Sell Condition met");
return(true);
}
return (false);
}
int start()
{
// код доступен только после оплаты
}
int ClosePositions(string type)
{
int err,cnt;
err = 1;
cnt = 0;
while (err>0 && cnt < 3)
{
if (type == "BUY") err = HandleBuys(true);
if (type == "SELL") err = HandleSells(true);
if (err > 0) cnt++;
}
return (0);
}
int HandleBuys(int ExitConditions)
{
int err = 0;
if (ExitConditions == 1)
{
if (!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet)) err = GetLastError();
return(err); // exit
}
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
if (!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Aqua))
{
err = GetLastError();
}
return(err);
}
Показано первые 50% кода (символов: 12726)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.