Помощь в кодировании - страница 288

 

Привет,

Во-первых, прошу прощения, если это не в том месте, я рассматриваю разворотную точку, но мой вопрос связан с кодированием, я мог бы поместить его и в MTF, но я подумал, что это лучшее место для начала.

В MT4 у нас есть ежедневные, еженедельные, ежемесячные = W1, D1, MN1.

но есть ли функция года или квартала.

Например, в прилагаемом индикаторе pivot как получить 1 год, и можно ли выбрать 12 месяцев или фиксированный предыдущий год, например 2013. И то же самое касается того, как мне заставить его вычислять квартальные поворотные точки.

Я уверен, что смогу модифицировать прилагаемый файл, но не знаю, как начать вводить в него данные, чтобы он выводил кварталы или год.

allpivots_monthly.mq4

Большое спасибо

Кевин

Файлы:
 
mladen:
Вы изменили его, чтобы использовать "#pollan indy" Я понятия не имею, что делает этот индикатор (если он похож на остальные индикаторы "pollan", то он перерисовывается, и это может вызвать ваши проблемы, но сейчас я просто занимаюсь гаданием).

Уважаемый господин MLADEN...

Не могли бы вы заменить этот (#pollan indy) на любой другой индикатор, который у вас есть... может быть вызов #VQ bars.... ПОЖАЛУЙСТА, попробуйте... потому что у меня есть показания на буфере индикатора, как на прикрепленной картинке... но я не смог вызвать его через iCustom в моем советнике, чтобы проверить этот "#pollan indy"...

Надеюсь получить от вас ответ в ближайшее время... СПАСИБО

Искренне Ваш

AZRUL

Файлы:
my_vq.jpg  48 kb
 
12BPRO:
Уважаемый сэр МЛАДЕН...

Не могли бы вы заменить этот (#pollan indy) на любой другой индикатор, который у вас есть... может быть, вызвать #VQ bars.... ПОЖАЛУЙСТА попробуйте.... потому что у меня есть показания на буфере индикатора, как на прикрепленной картинке... но я не смог вызвать через iCustom в моем советнике для дальнейшего тестирования этого "#pollan indy"....

Надеюсь получить от вас ответ в ближайшее время... СПАСИБО

Искренне Ваш

АЗРУЛ

Нет необходимости заменять #VQ на #VQ (он уже рассчитывает качество волатильности).

Если он работает так, как должен работать с обычным #VQ, единственный логический вывод - что-то не так с "#pollan indy".

 

Помощь в кодировании

Доброе утро всем

Здравствуйте, mladen

Я пытаюсь создать свои первые коды.

Учиться у других кодов, так как нет руководства MT4 на моем языке.

Прошу не смеяться над моим кодом.

Пожалуйста, помогите мне, он работает.

Это простой индикатор, который отмечает создание Дожи.

Я прошу вашей помощи.

Заранее большое спасибо.

С наилучшими пожеланиями.

Гермо.

PD. Компилируется нормально, но не работает.

Файлы:
 
Hermo:
Доброе утро всем

Здравствуйте, mladen

Я пытаюсь создать свои первые коды.

Учиться на других кодах, так как нет руководства MT4 на моем языке.

Я молюсь, чтобы не смеяться над моим кодом.

Пожалуйста, помогите мне, он работает.

Это простой индикатор, который отмечает создание Дожи.

Я прошу вашей помощи.

Заранее большое спасибо.

С наилучшими пожеланиями.

Гермо.

PD. Компилируется нормально, но не работает.

Hermo

Проверю.

Жду пресс-конференцию ЕЦБ сейчас :):):)

 
12BPRO:
Уважаемый сэр МЛАДЕН...

Вот почему в первую очередь я не разместил свой #VQ.... может быть вы правы в том, что есть что-то неправильное в "pollan indy" и ДА он перерисовывается....

Что касается меня, я просто хотел бы попробовать свою теорию с этим индикатором, чтобы посмотреть, что получится.....

Дело в том, что я не смог вызвать буфер индикатора в своем советнике... возможно, это вызвано модифицированной версией моего #VQ, которая блокирует вызов iCustom для моего советника.....

С оригинальным #VQ он работает просто отлично... и я мог запустить свой EA...., но с модифицированным #VQ (моим), я не мог превысить, но все еще есть значение, как показано в предыдущей теме...

Я думаю, что проблема в моей модифицированной версии #VQ.... может быть синтаксической ошибкой... Пожалуйста, если у вас есть время, посмотрите и убедитесь, что все работает как надо......

СПАСИБО... и извините за любой негативный вклад.....

искренне ваш...

AZRUL

AZRUL

Я просто не могу знать, что происходит с вашим "pollan indy", не видя кода.

Я могу только гадать, а гадать в кодировании очень, очень плохо.

всего наилучшего

 
mladen:
Нет необходимости заменять #VQ на #VQ (он уже вычисляет качество волатильности) Если он работает так, как должен работать с обычным #VQ, единственным логическим выводом является то, что что-то не так с "#pollan indy".

Уважаемый сэр МЛАДЕН...

Вот почему в первую очередь я не разместил свой #VQ.... может быть вы правы в том, что есть что-то неправильное в "pollan indy" и ДА он перерисовывается....

Для меня, я просто хотел бы попробовать свою теорию, с этим индикатором, чтобы посмотреть, что получится.....

Дело в том, что я не смог вызвать буфер индикатора в своем советнике... возможно, это вызвано модифицированной версией моего #VQ, которая блокирует вызов iCustom для моего советника.....

С оригинальным #VQ он работает просто отлично... и я мог запустить свой EA...., но с модифицированным #VQ (моим), я не мог превысить, но все еще есть значение, как показано в предыдущей теме...

Я думаю, что проблема в моей модифицированной версии #VQ.... может быть какая-то синтаксическая ошибка... Пожалуйста, если у вас есть время, посмотрите и проверьте, работает ли он так, как должен..... только для ОБУЧЕНИЯ....

СПАСИБО... Я ЗАПУСТИЛ ЭТУ EA СЕЙЧАС И ТЕСТИРУЮ, ЕСЛИ ВАМ ИНТЕРЕСНО УЗНАТЬ РЕЗУЛЬТАТ, Я ОПУБЛИКУЮ ЕГО В ТЕМЕ POLLAN.....

искренне ваш...

AZRUL

 
mladen:
AZRUL

Я просто не могу знать, что происходит с вашим "pollan indy", не видя кода.

Я могу только гадать, а гадать в кодировании очень, очень плохо.

всего наилучшего

Я ЗАПУСТИЛ ЭТУ ЕА СЕЙЧАС И ТЕСТИРУЮ, ЕСЛИ ВАМ ИНТЕРЕСНО УЗНАТЬ РЕЗУЛЬТАТ, Я ОПУБЛИКУЮ ЕГО В POLLAN THREAD.....

ЭТО БЫЛА МОЯ ВЕРСИЯ #VQ, КОТОРАЯ НЕ СРАБОТАЛА...

СПАСИБО...

искренне ваш...

AZRUL

 

Привет CODESGURUS,

У меня есть общий вопрос о мультитаймфрейме.... как прикреплено

на первой картинке слева - индикатор RSI на таймфрейме 5M...

На второй - мультитаймфрейм RSI 5M на таймфрейме 15M...

Вопрос в том, почему есть разница в значении, как указано в КРАСНОМ круге.....

Может ли кто-нибудь PLEASE объяснить и исправить это RsiMA-MTF коды........

#property indicator_separate_window

#property indicator_buffers 6

#property indicator_color1 Lime

#property indicator_color2 Red

#property indicator_color3 Aqua

#property indicator_color4 Yellow

#property indicator_color5 Белый

#property indicator_color6 Magenta

#property indicator_width1 1

#property indicator_width2 1

#property indicator_width3 1

#property indicator_width4 1

#property indicator_width5 1

#property indicator_width6 1

//-------------------------------------

//-----

//extern string TimeFrames = "M15; M60";

extern bool TimeFrame1bool = true;

extern int TimeFrame1 = 0;

extern bool TimeFrame2bool = False;

extern int TimeFrame2 = 0;

extern bool TimeFrame3bool = False;

extern int TimeFrame3 = 0;

//int period[]={1,5,15,30,60,240,1440,43200};

//string periodString[]={"M1","M5","M15","M30","H1","H4","D1",MN1"};

//создаем еще один массив с именами индикаторов

// строка signalNameString[]={"MA"};

int ExtCountedBars=0;

//---------------------

int TF;

//---- буферы

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double ExtMapBuffer3[];

double ExtMapBuffer4[];

double ExtMapBuffer5[];

double ExtMapBuffer6[];

//-------

//+------------------------------------------------------------------+

int init()

{

SetIndexBuffer(0, ExtMapBuffer1);

SetIndexBuffer(1, ExtMapBuffer2);

SetIndexBuffer(2, ExtMapBuffer3);

SetIndexBuffer(3, ExtMapBuffer4);

SetIndexBuffer(4, ExtMapBuffer5);

SetIndexBuffer(5, ExtMapBuffer6);

//-----

SetIndexStyle(0, DRAW_LINE);

SetIndexStyle(1, DRAW_LINE);

SetIndexStyle(2, DRAW_LINE);

SetIndexStyle(3, DRAW_LINE);

SetIndexStyle(4, DRAW_LINE);

SetIndexStyle(5, DRAW_LINE);

// SetIndexStyle(0,DRAW_LINE,EMPTY,1);

// SetIndexBuffer(0,ExtMapBuffer1);

//-------------------------------------------------------------+++

int M1 = PERIOD_M1;

int M5 = PERIOD_M5;

int M15 = PERIOD_M15;

int M30 = PERIOD_M30;

int H1 = PERIOD_H1;

int H4 = PERIOD_H4;

int D1 = PERIOD_D1;

int WK1 = PERIOD_W1;

int MN1 = PERIOD_M1;

TF=Period();

if (TF==PERIOD_M1) { TimeFrame1 = M1; TimeFrame2 = M1; TimeFrame3 = M1;}

else if (TF==PERIOD_M5) { TimeFrame1 = M1; TimeFrame2 = M5; TimeFrame3 = M15;}

else if (TF==PERIOD_M15) { TimeFrame1 = M5; TimeFrame2 = M15; TimeFrame3 = H1; }

else if (TF==PERIOD_M30) { TimeFrame1 = M5; TimeFrame2 = M15; TimeFrame3 = H1; }

else if (TF==PERIOD_H1) { TimeFrame1 = M15; TimeFrame2 = H1; TimeFrame3 = H4; }

else if (TF==PERIOD_H4) { TimeFrame1 = H4; TimeFrame2 = H4; TimeFrame3 = D1; }

else if (TF==PERIOD_D1) { TimeFrame1 = H4; TimeFrame2 = D1; TimeFrame3 = WK1;}

else if (TF==PERIOD_W1) { TimeFrame1 = D1; TimeFrame2 = WK1; TimeFrame3 = MN1;}

else if (TF==PERIOD_MN1) { TimeFrame1 = D1; TimeFrame2 = WK1; TimeFrame3 = MN1;}

else { TimeFrame1 = D1; TimeFrame2 = WK1; TimeFrame3 = MN1;}

//-----

return(0);

}

//+------------------------------------------------------------------+

int start()

{

datetime TimeArray1[];

datetime TimeArray2[];

datetime TimeArray3[];

int limit, i,y=0;

// int counted_bars = IndicatorCounted();

ExtCountedBars=IndicatorCounted();

if(ExtCountedBars < 0) return(-1);

if(ExtCountedBars > 0) ExtCountedBars--;

limit = Bars - ExtCountedBars;

//-----

ArrayCopySeries(TimeArray1,MODE_TIME,Symbol(),TimeFrame1);

ArrayCopySeries(TimeArray2,MODE_TIME,Symbol(),TimeFrame2);

ArrayCopySeries(TimeArray3,MODE_TIME,Symbol(),TimeFrame3);

for(i=0,y=0;i<limit;i++)

{

if(TimeFrame1bool)

{

if (Time<TimeArray1[y]) y++;

{

//ExtMapBuffer1

ExtMapBuffer1 = iCustom(NULL,TimeFrame1 , "#RSI-MA",0, y);

ExtMapBuffer2 = iCustom(NULL,TimeFrame1 , "#RSI-MA",3, y);

}

}

//-----

if(TimeFrame2bool)

{

if (Time<TimeArray2[y]) y++;

{

//ExtMapBuffer1

ExtMapBuffer3 = iCustom(NULL,TimeFrame2 , "#RSI-MA",0,y);

ExtMapBuffer4 = iCustom(NULL,TimeFrame2 , "#RSI-MA",3,y);

}

}

//-----

if(TimeFrame3bool)

{

if (Time<TimeArray3[y]) y++;

{

//ExtMapBuffer1

ExtMapBuffer5 = iCustom(NULL,TimeFrame3 , "#RSI-MA",0, y);

ExtMapBuffer6 = iCustom(NULL,TimeFrame3 , "#RSI-MA",3, y);

}

}

}

//-----//--------------------------------------------------------------------------+

//=======================================================

return(0);

}

//+--------------------------------------------------------------------------+

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

Файлы:
rsi-mtf_diff.jpg  290 kb
 

ЭТО КОПИЯ RSI-MA........

#property indicator_separate_window

#property indicator_buffers 4

#property indicator_color1 LimeGreen

#property indicator_color2 Red

#property indicator_color3 Yellow

#property indicator_color4 Белый ///DarkGray

#property indicator_width1 3

#property indicator_width2 3

#property indicator_width3 3

#property indicator_width4 1

#property indicator_levelcolor Aqua

extern string TimeFrame = "Текущий таймфрейм";

extern int RsiOma_Period = 13;

extern int RsiOma_Price = 0;

extern int RsiOma_Mode = MODE_LWMA;

extern int MaPeriod = 8;

extern int MaType = MODE_LWMA;

extern double levelOb = 88;

extern double levelOs = 13;

extern int OB_RSI = 80;

extern int OS_RSI = 15;

extern string note = "включить Alert = true; выключить = false";

extern bool alertsOn = true; ///false;

extern bool alertsOnCurrent = true;

extern bool alertsMessage = true;

extern bool alertsSound = true; ///false;

extern bool alertsEmail = false;

extern string soundfile = "connect.wav"; ///"alert2.wav";

extern string SoundUp = "ok.wav";

extern string SoundDown = "stops.wav";

double rsi[];

double rsida[];

double rsidb[];

double ma[];

double mab[];

double trend[];

double slope[];

string indicatorFileName;

int Char, timeFrame;

bool returnBars;

bool calculateValue;

//+------------------------------------------------------------------+

int init()

{

IndicatorBuffers(7);

SetIndexBuffer(0,rsi);

SetIndexBuffer(1,rsida);

SetIndexBuffer(2,rsidb);

SetIndexBuffer(3,ma);

SetIndexBuffer(4,mab);

SetIndexBuffer(5,trend);

SetIndexBuffer(6,slope);

SetLevelValue(0,levelOs);

SetLevelValue(1,levelOb);

indicatorFileName = WindowExpertName();

calculateValue = (TimeFrame=="calculateValue"); if (calculateValue) return(0);

returnBars = (TimeFrame=="returnBars"); if (returnBars) return(0);

timeFrame = stringToTimeFrame(TimeFrame);

IndicatorShortName(timeFrameToString(timeFrame)+" Rsi-Ma MaxMin("+RsiOma_Period+", "+MaPeriod+")");

SetIndexLabel(0, "RSI");

SetIndexLabel(1, "RSIDA");

SetIndexLabel(2, "RSIDB");

SetIndexLabel(3, "MA");

return(0);

}

int deinit() { return(0); }

//+------------------------------------------------------------------+

int start()

{

int counted_bars=IndicatorCounted();

int i,limit;

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limit = MathMin(Bars-counted_bars,Bars-1);

if (returnBars) { rsi[0] = limit+1; return(0); }

if (calculateValue || timeFrame==Period())

{

if (slope[limit] == -1) ClearPoint(limit,rsida,rsidb);

for (i=limit; i >= 0; i--) mab = iMA(NULL,0,RsiOma_Period,0,RsiOma_Mode,RsiOma_Price,i);

for (i=limit; i >= 0; i--) rsi = iRSIOnArray(mab,0,RsiOma_Period,i);

for (i=limit; i >= 0; i--)

{

ma = iMAOnArray(rsi,0,MaPeriod,0,MaType,i);

rsida = EMPTY_VALUE;

rsidb = EMPTY_VALUE;

slope = slope;

тренд = тренд;

if ((rsi > rsi) && (rsi > OB_RSI))

slope = 1;

if ((rsi < rsi) && (rsi < OS_RSI))

slope=-1;

if ((rsi > ma) && (rsi > OB_RSI))

trend= 1;

if ((rsi < ma) && (rsi < OS_RSI))

trend=-1;

if (slope == -1)

PlotPoint(i,rsida,rsidb,rsi);

}

manageAlerts();

return(0);

}

limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period()));

if (slope[limit]==-1) ClearPoint(limit,rsida,rsidb);

for (i=limit;i>=0; i--)

{

int y = iBarShift(NULL,timeFrame,Time);

rsi = iCustom(NULL,timeFrame,indicatorFileName, "calculateValue",RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaType,0,y);

rsida = EMPTY_VALUE;

rsidb = EMPTY_VALUE;

ma = iCustom(NULL,timeFrame,indicatorFileName, "calculateValue",RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaType,3,y);

trend = iCustom(NULL,timeFrame,indicatorFileName, "calculateValue",RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaType,5,y);

slope = iCustom(NULL,timeFrame,indicatorFileName, "calculateValue",RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaType,6,y);

}

for (i=limit;i>=0;i--) if (slope==-1) PlotPoint(i,rsida,rsidb,rsi);

manageAlerts();

return(0);

}

//+------------------------------------------------------------------

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)

{

tfs = stringUpperCase(tfs);

for (int i=ArraySize(iTfTable)-1; i>=0; i--)

if (tfs==sTfTable || tfs==""+iTfTable) return(MathMax(iTfTable,Period()));

return(Period());

}

string timeFrameToString(int tf)

{

for (int i=ArraySize(iTfTable)-1; i>=0; i--)

if (tf==iTfTable) return(sTfTable);

return("");

}

string stringUpperCase(string str)

{

string s = str;

for (int length=StringLen(str)-1; length>=0; length--)

{

Char = StringGetChar(s, length);

if((Char > 96 && Char 223 && Char < 256))

s = StringSetChar(s, length, Char - 32);

else if(Char > -33 && Char < 0)

s = StringSetChar(s, length, Char + 224);

}

return(s);

}

//+------------------------------------------------------------------+

void ClearPoint(int i,double& first[],double& second[])

{

if ((second != EMPTY_VALUE) && (second != EMPTY_VALUE))

second = EMPTY_VALUE;

иначе

if ((first != EMPTY_VALUE) && (first != EMPTY_VALUE) && (first == EMPTY_VALUE))

first = EMPTY_VALUE;

}

void PlotPoint(int i,double& first[],double& second[],double& from[])

{

if (first == EMPTY_VALUE)

{

if (first == EMPTY_VALUE)

{

first = from;

first = from;

second = EMPTY_VALUE;

}

else

{

second = from;

second = from;

first = EMPTY_VALUE;

}

}

else

{

first = from;

second = EMPTY_VALUE;

}

}

void manageAlerts()

{

if (!calculateValue && alertsOn)

{

if (alertsOnCurrent)

int whichBar = 0;

else whichBar = 1; whichBar = iBarShift(NULL,0,iTime(NULL,timeFrame,whichBar));

if (trend[whichBar] != trend[whichBar+1])

{

if (trend[whichBar] == 1)

//doAlert(whichBar, "trend");

doAlerts( whichBar, "UP RSI-MA "+Symbol()+" (tf: "+Period()+")", SoundUp);

if (trend[whichBar] ==-1)

//doAlert(whichBar, "no trend");

doAlerts( whichBar, "DOWN RSI-MA "+Symbol()+" (tf: "+Period()+")", SoundDown);

}

}

}

void doAlerts(int forBar, string doWhat, string SoundFile) {

static string previousAlert="ничего";

static datetime previousTime;

строковое сообщение;

if (previousAlert != doWhat || previousTime != Time[forBar]) {

previousAlert = doWhat;

previousTime = Time[forBar];

message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," - ",timeFrameToString(timeFrame)+" rsioma ",doWhat);

if (alertsMessage) Alert(message);

if (alertsSound) PlaySound(SoundFile);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," rsioma "),message);

}

}

//---------------------------------------------------------------------------------------------------

void doAlert(int forBar, string doWhat)

{

static string previousAlert="ничего";

static datetime previousTime;

строковое сообщение;

if (previousAlert != doWhat || previousTime != Time[forBar]) {

previousAlert = doWhat;

previousTime = Time[forBar];

message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," - ",timeFrameToString(timeFrame)+" rsioma ",doWhat);

if (alertsMessage) Alert(message);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," rsioma "),message);

if (alertsSound) PlaySound(soundfile);

}

}

СПАСИБО ВСЕМ.....

наилучшие пожелания

AZRUL..........

PS... как мне прикрепить код этих ФАЙЛОВ здесь..... Извините за беспорядок....