digital buysell volume 3 mtf.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «digital buysell volume 3 mtf.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Цифровой индикатор для MetaTrader 5, отображающий давление объёма в виде гистограмм покупок и продаж. Классификация объёма на покупательское и продавательское давление выполняется на основе сравнения цены закрытия со скользящей средней выбранного типа.
Поддерживается работа на нескольких таймфреймах с возможностью интерполяции данных. Доступен широкий выбор из 20 видов скользящих средних и множества типов цен для расчёта, включая варианты Хайкин Аши.
Индикатор оснащён системой уведомлений с поддержкой всплывающих сообщений, push-уведомлений, звуковых сигналов и email-рассылки. Тренд определяется по смене направления давления объёма.
Настройки программы
| Настройка | Описание |
|---|---|
| Time frame (TimeFrame) | Таймфрейм — Таймфрейм, на котором работает индикатор |
| MaMethod | Метод скользящей средней — Тип скользящей средней, используемой для расчёта среднего значения цены |
| Price (Price) | Тип цены — Тип цены, используемый для расчёта индикатора |
| smoothing period (SmoothPeriod) | Период сглаживания — Период сглаживания для расчёта скользящей средней |
| Turn alert on or off (alertsOn) | Включить уведомления — Включает или отключает систему уведомлений |
| Alerts on current (still opened) bar (alertsOnCurrent) | Уведомления на текущем баре — Определяет, учитывать ли текущий незакрытый бар при срабатывании уведомлений |
| Alerts should show pop-up message (alertsMessage) | Всплывающие сообщения — Включает или отключает всплывающие сообщения при срабатывании событий |
| Alerts should send push notification (alertsPushNotif) | Push-уведомления — Включает или отключает отправку push-уведомлений при срабатывании событий |
| Alerts should play a sound (alertsSound) | Звуковые уведомления — Включает или отключает воспроизведение звукового сигнала при срабатывании событий |
| Alerts should send email (alertsEmail) | Email-уведомления — Включает или отключает отправку email-уведомлений при срабатывании событий |
| Interpolate in multi time frame mode (Interpolate) | Интерполяция в многотаймфреймовом режиме — Включает или отключает интерполяцию данных при работе на нескольких таймфреймах |
Поиск по коду файла
#property version ""
#property strict
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 PaleVioletRed
#property indicator_color2 DeepSkyBlue
#property indicator_color3 DimGray
#property indicator_color4 DimGray
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
enum enPrices
{
pr_close, // Close
pr_open, // Open
pr_high, // High
pr_low, // Low
pr_median, // Median
pr_typical, // Typical
pr_weighted, // Weighted
pr_average, // Average (high+low+open+close)/4
pr_medianb, // Average median body (open+close)/2
pr_tbiased, // Trend biased price
pr_tbiased2, // Trend biased (extreme) price
pr_haclose, // Heiken ashi close
pr_haopen , // Heiken ashi open
pr_hahigh, // Heiken ashi high
pr_halow, // Heiken ashi low
pr_hamedian, // Heiken ashi median
pr_hatypical, // Heiken ashi typical
pr_haweighted, // Heiken ashi weighted
pr_haaverage, // Heiken ashi average
pr_hamedianb, // Heiken ashi median body
pr_hatbiased, // Heiken ashi trend biased price
pr_hatbiased2 // Heiken ashi trend biased (extreme) price
};
enum maTypes
{
ma_sma, // simple moving average - SMA
ma_ema, // exponential moving average - EMA
ma_dsema, // double smoothed exponential moving average - DSEMA
ma_dema, // double exponential moving average - DEMA
ma_tema, // tripple exponential moving average - TEMA
ma_smma, // smoothed moving average - SMMA
ma_lwma, // linear weighted moving average - LWMA
ma_pwma, // parabolic weighted moving average - PWMA
ma_alxma, // Alexander moving average - ALXMA
ma_vwma, // volume weighted moving average - VWMA
ma_hull, // Hull moving average
ma_tma, // triangular moving average
ma_sine, // sine weighted moving average
ma_linr, // linear regression value
ma_ie2, // IE/2
ma_nlma, // non lag moving average
ma_zlma, // zero lag moving average
ma_lead, // leader exponential moving average
ma_ssm, // super smoother
ma_smoo // smoother
};
extern ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT; // Time frame
extern maTypes MaMethod = 19;
extern enPrices Price = pr_close; // Price
extern int SmoothPeriod = 14; // smoothing period
extern bool alertsOn = false; // Turn alert on or off
extern bool alertsOnCurrent = true; // Alerts on current (still opened) bar
extern bool alertsMessage = true; // Alerts should show pop-up message
extern bool alertsPushNotif = false; // Alerts should send push notification
extern bool alertsSound = false; // Alerts should play a sound
extern bool alertsEmail = false; // Alerts should send email
extern bool Interpolate = true; // Interpolate in multi time frame mode
double bb[];
double bs[];
double vols[];
double volb[];
double trend[];
string indicatorFileName;
bool returnBars;
double open[];
double high[];
double low[];
double close[];
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
void manageAlerts()
{
if (alertsOn)
{
int whichBar = 1; if (alertsOnCurrent) whichBar = 0;
if (trend[whichBar] != trend[whichBar+1])
{
if (trend[whichBar+1]==-1) doAlert(whichBar,"trend changed up");
if (trend[whichBar+1]== 1) doAlert(whichBar,"trend changed down");
}
}
}
void doAlert(int forBar, string doWhat)
{
static string previousAlert="nothing";
static datetime previousTime;
string message;
if (previousAlert != doWhat || previousTime != Time[forBar])
{
previousAlert = doWhat;
previousTime = Time[forBar];
message = timeFrameToString(Period())+" "+Symbol()+" at "+TimeToStr(TimeLocal(),TIME_SECONDS)+" Buy Sell volume "+doWhat;
if (alertsMessage) Alert(message);
if (alertsEmail) SendMail(StringConcatenate(Symbol()," Buy Sell volume "),message);
if (alertsPushNotif) SendNotification(StringConcatenate(Symbol()," Buy Sell volume "+message));
if (alertsSound) PlaySound("alert2.wav");
}
}
string sTfTable[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"};
int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200};
int stringToTimeFrame(string tfs)
{
StringToUpper(tfs);
for (int i=ArraySize(iTfTable)-1; i>=0; i--)
if (tfs==sTfTable[i] || tfs==""+(string)iTfTable[i]) return(MathMax(iTfTable[i],Period()));
return(Period());
}
string timeFrameToString(int tf)
{
for (int i=ArraySize(iTfTable)-1; i>=0; i--)
if (tf==iTfTable[i]) return(sTfTable[i]);
return("");
}
#define priceInstances 1
double workHa[][priceInstances*4];
double getPrice(int tprice, int i, int instanceNo=0)
{
if (tprice>=pr_haclose)
{
if (ArrayRange(workHa,0)!= Bars) ArrayResize(workHa,Bars); instanceNo*=4;
int r = Bars-i-1;
double haOpen;
if (r>0)
haOpen = (workHa[r-1][instanceNo+2] + workHa[r-1][instanceNo+3])/2.0;
else haOpen = (open[i]+close[i])/2;
double haClose = (open[i] + high[i] + low[i] + close[i]) / 4.0;
double haHigh = MathMax(high[i], MathMax(haOpen,haClose));
double haLow = MathMin(low[i] , MathMin(haOpen,haClose));
if(haOpen <haClose)
{
workHa[r][instanceNo+0] = haLow; workHa[r][instanceNo+1] = haHigh;
}
else
{
workHa[r][instanceNo+0] = haHigh; workHa[r][instanceNo+1] = haLow;
}
workHa[r][instanceNo+2] = haOpen;
workHa[r][instanceNo+3] = haClose;
switch (tprice)
{
case pr_haclose: return(haClose);
case pr_haopen: return(haOpen);
case pr_hahigh: return(haHigh);
case pr_halow: return(haLow);
case pr_hamedian: return((haHigh+haLow)/2.0);
case pr_hamedianb: return((haOpen+haClose)/2.0);
case pr_hatypical: return((haHigh+haLow+haClose)/3.0);
case pr_haweighted: return((haHigh+haLow+haClose+haClose)/4.0);
case pr_haaverage: return((haHigh+haLow+haClose+haOpen)/4.0);
case pr_hatbiased:
if (haClose>haOpen)
return((haHigh+haClose)/2.0);
else return((haLow+haClose)/2.0);
case pr_hatbiased2:
if (haClose>haOpen) return(haHigh);
if (haClose<haOpen) return(haLow);
return(haClose);
}
}
switch (tprice)
{
case pr_close: return(close[i]);
case pr_open: return(open[i]);
case pr_high: return(high[i]);
case pr_low: return(low[i]);
case pr_median: return((high[i]+low[i])/2.0);
case pr_medianb: return((open[i]+close[i])/2.0);
case pr_typical: return((high[i]+low[i]+close[i])/3.0);
case pr_weighted: return((high[i]+low[i]+close[i]+close[i])/4.0);
case pr_average: return((high[i]+low[i]+close[i]+open[i])/4.0);
case pr_tbiased:
if (close[i]>open[i])
return((high[i]+close[i])/2.0);
else return((low[i]+close[i])/2.0);
case pr_tbiased2:
if (close[i]>open[i]) return(high[i]);
if (close[i]<open[i]) return(low[i]);
return(close[i]);
}
return(0);
}
string methodNames[] = {"SMA","EMA","Double smoothed EMA","Double EMA","Triple EMA","Smoothed MA","Linear weighted MA","Parabolic weighted MA","Alexander MA","Volume weghted MA","Hull MA","Triangular MA","Sine weighted MA","Linear regression","IE/2","NonLag MA","Zero lag EMA","Leader EMA","Super smoother","Smoother"};
string getAverageName(int method)
{
int max = ArraySize(methodNames)-1;
method=MathMax(MathMin(method,max),0); return(methodNames[method]);
}
#define _maWorkBufferx1 3
#define _maWorkBufferx2 6
#define _maWorkBufferx3 9
#define _maWorkBufferx5 15
double iCustomMa(int mode, double price, double length, int i, int instanceNo=0)
{
int r = Bars-i-1;
switch (mode)
{
case 0 : return(iSma(price,(int)length,r,instanceNo));
case 1 : return(iEma(price,length,r,instanceNo));
case 2 : return(iDsema(price,length,r,instanceNo));
case 3 : return(iDema(price,length,r,instanceNo));
case 4 : return(iTema(price,length,r,instanceNo));
case 5 : return(iSmma(price,length,r,instanceNo));
case 6 : return(iLwma(price,length,r,instanceNo));
case 7 : return(iLwmp(price,length,r,instanceNo));
case 8 : return(iAlex(price,length,r,instanceNo));
case 9 : return(iWwma(price,length,r,instanceNo));
case 10 : return(iHull(price,length,r,instanceNo));
case 11 : return(iTma(price,length,r,instanceNo));
case 12 : return(iSineWMA(price,(int)length,r,instanceNo));
case 13 : return(iLinr(price,length,r,instanceNo));
case 14 : return(iIe2(price,length,r,instanceNo));
case 15 : return(iNonLagMa(price,length,r,instanceNo));
case 16 : return(iZeroLag(price,length,r,instanceNo));
case 17 : return(iLeader(price,length,r,instanceNo));
case 18 : return(iSsm(price,length,r,instanceNo));
case 19 : return(iSmooth(price,(int)length,r,instanceNo));
default : return(0);
}
}
double workSma[][_maWorkBufferx2];
double iSma(double price, int period, int r, int instanceNo=0)
{
int k;
if (ArrayRange(workSma,0)!= Bars) ArrayResize(workSma,Bars); instanceNo *= 2;
workSma[r][instanceNo] = price;
if (r>=period){
workSma[r][instanceNo+1] = workSma[r-1][instanceNo+1]+(workSma[r][instanceNo]-workSma[r-period][instanceNo])/period;
Показано первые 50% кода (символов: 21181)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.