Как можно вывести окно недельного стохастика с любыми параметрами, например стандартными, на Daily графике, что бы не переключаться каждый раз с Daily на Weekly?
- бета-тестирование новой системы MetaTrader
- Индикаторы: Индикатор уровней поддержки и сопротивления
- FOREX - Тенденции, прогнозы и следствия 2015(продолжение)
Как можно вывести окно недельного стохастика с любыми параметрами, например стандартными, на Daily графике, что бы не переключаться каждый раз с Daily на Weekly?
Попробуйте StochasticR:
//+------------------------------------------------------------------+
//| StochasticR.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
// Индикатор отображает значения Stochastic Oscillator большего таймфрейма.
// Перед использованием данного индикатора необходимо в папку
// MetaTrader4\experts\indicators поместить индикатор Stochastic Oscillator,
// который можно скачать с http://mql4.com/ru/codebase/indicators/237/.
// Вначале нужно открыть окно графика большего таймфрейма, а затем рабочий.
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
//---- input parameters
extern int KPeriod=5;
extern int DPeriod=3;
extern int Slowing=3;
//---- buffers
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//----
int draw_begin1=0;
int draw_begin2=0;
int GrossPeriod;
datetime daytimes[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 2 additional buffers are used for counting.
IndicatorBuffers(4);
SetIndexBuffer(2, HighesBuffer);
SetIndexBuffer(3, LowesBuffer);
//---- indicator lines
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0, MainBuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1, SignalBuffer);
//---- name for DataWindow and indicator subwindow label
switch (Period())
{
case 1: GrossPeriod = 5; break;
case 5: GrossPeriod = 15; break;
case 15: GrossPeriod = 30; break;
case 30: GrossPeriod = 60; break;
case 60: GrossPeriod = 240; break;
case 240: GrossPeriod = 1440; break;
case 1440: GrossPeriod = 10080; break;
case 10080: GrossPeriod = 43200; break;
default: GrossPeriod = 43200; break;
}
short_name="StochR"+"_"+GrossPeriod+" ("+KPeriod+","+DPeriod+","+Slowing+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
SetIndexLabel(1,"Signal");
//----
draw_begin1=KPeriod+Slowing;
draw_begin2=draw_begin1+DPeriod;
SetIndexDrawBegin(0,draw_begin1);
SetIndexDrawBegin(1,draw_begin2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Stochastic oscillator for GrossPeriod |
//+------------------------------------------------------------------+
int start()
{
int limit, bigshift;
int counted_bars=IndicatorCounted();
datetime tLastBarTime;
//----
if(counted_bars<0) return(-1);
int nBars = ArrayCopySeries(daytimes,MODE_TIME,Symbol(),GrossPeriod);
int LastError = GetLastError();
if(LastError == 4066)
{
int lastBars = nBars;
for( int k = 0; k <5; k++)
{
Sleep(500);
tLastBarTime = daytimes[0];
nBars = ArrayCopySeries(daytimes,MODE_TIME,Symbol(),GrossPeriod);
LastError = GetLastError();
if(tLastBarTime == daytimes[0] && lastBars==nBars && LastError == 0) break;
lastBars = nBars;
}
}
if (counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for (int i=0; i<limit; i++)
{
if(Time[i]>=daytimes[0])
bigshift=0;
else
{
bigshift = ArrayBsearch(daytimes,Time[i-1],WHOLE_ARRAY,0,MODE_DESCEND);
bigshift++;
}
MainBuffer[i]=iCustom(NULL,GrossPeriod,"Stochastic",KPeriod,DPeriod,Slowing,0,bigshift);
SignalBuffer[i]=iCustom(NULL,GrossPeriod,"Stochastic",KPeriod,DPeriod,Slowing,1,bigshift);
}
//----
return(0);
}
//+------------------------------------------------------------------+
Как можно вывести окно недельного стохастика с любыми параметрами, например стандартными, на Daily графике, что бы не переключаться каждый раз с Daily на Weekly?
Еще один вариант StochasticR+ с использованием встроенного технического индикатора Stochastic Oscillator:
//+------------------------------------------------------------------+
//| StochasticR+.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
// Индикатор отображает значения Stochastic Oscillator большего таймфрейма.
// Вначале нужно открыть окно графика большего таймфрейма, а затем рабочий.
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
//---- input parameters
extern int KPeriod=5;
extern int DPeriod=3;
extern int Slowing=3;
extern int MAMethod=0;
extern int PriceField=0;
//---- buffers
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//----
int draw_begin1=0;
int draw_begin2=0;
int GrossPeriod;
datetime daytimes[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 2 additional buffers are used for counting.
IndicatorBuffers(4);
SetIndexBuffer(2, HighesBuffer);
SetIndexBuffer(3, LowesBuffer);
//---- indicator lines
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0, MainBuffer);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1, SignalBuffer);
//---- name for DataWindow and indicator subwindow label
switch (Period())
{
case 1: GrossPeriod = 5; break;
case 5: GrossPeriod = 15; break;
case 15: GrossPeriod = 30; break;
case 30: GrossPeriod = 60; break;
case 60: GrossPeriod = 240; break;
case 240: GrossPeriod = 1440; break;
case 1440: GrossPeriod = 10080; break;
case 10080: GrossPeriod = 43200; break;
default: GrossPeriod = 43200; break;
}
short_name="StochR+"+"_"+GrossPeriod+" ("+KPeriod+","+DPeriod+","+Slowing+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
SetIndexLabel(1,"Signal");
//----
draw_begin1=KPeriod+Slowing;
draw_begin2=draw_begin1+DPeriod;
SetIndexDrawBegin(0,draw_begin1);
SetIndexDrawBegin(1,draw_begin2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Stochastic oscillator for GrossPeriod |
//+------------------------------------------------------------------+
int start()
{
int limit, bigshift;
int counted_bars=IndicatorCounted();
datetime tLastBarTime;
//----
if(counted_bars<0) return(-1);
int nBars = ArrayCopySeries(daytimes,MODE_TIME,Symbol(),GrossPeriod);
int LastError = GetLastError();
if(LastError == 4066)
{
int lastBars = nBars;
for( int k = 0; k <5; k++)
{
Sleep(500);
tLastBarTime = daytimes[0];
nBars = ArrayCopySeries(daytimes,MODE_TIME,Symbol(),GrossPeriod);
LastError = GetLastError();
if(tLastBarTime == daytimes[0] && lastBars==nBars && LastError == 0) break;
lastBars = nBars;
}
}
if (counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for (int i=0; i<limit; i++)
{
if(Time[i]>=daytimes[0])
bigshift=0;
else
{
bigshift = ArrayBsearch(daytimes,Time[i-1],WHOLE_ARRAY,0,MODE_DESCEND);
bigshift++;
}
MainBuffer[i]=iStochastic(NULL,GrossPeriod,KPeriod,DPeriod,Slowing,MAMethod,PriceField,0,bigshift);
SignalBuffer[i]=iStochastic(NULL,GrossPeriod,KPeriod,DPeriod,Slowing,MAMethod,PriceField,1,bigshift);
}
//----
return(0);
}
//+------------------------------------------------------------------+
И скриншот:
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь