Мультитаймфреймовые индикаторы - страница 5

 
sailor:
выглядит хорошо, но мне интересно, почему я не могу прикрепить пары YEN, единственная причина в том, что я думаю, что пара YEN использует эхх мой английский lol .... сравните котировку.

евро имеет 1.2000, а usdjpy 117.50 (смотрите после запятой).

моряк

Я собирался написать об этом и забыл. Как есть, это не работает с некоторыми парами из-за того, что вы описали выше. Мне нужно будет попытаться разобраться с математикой, чтобы придумать общую многоцелевую формулу, которая нормализует их все. Думаю, я попрошу Code Guru или Игоря помочь мне с этим.

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

Кроме того, я обновил индикатор так, чтобы CorrBarrs по умолчанию был равен 50, а не 100. Это не имеет значения, но на более высоких таймфреймах (D1) иногда цены так сильно расходятся, скажем, за 100 дней, что вы не видите обе MA на экране.

 
sailor:
Кто-нибудь знает, что нужно изменить в коде, чтобы можно было использовать эту функцию на скользящем среднем ------ extern string Currency = "NULL";-------- ...

Я пытался найти, где написать остальной код, но не смог... Newdigital сделал это некоторое время назад с macd. https://c.mql5.com/forextsd/forum/2/macd_gbp_on_jpy_h1.gif ...

Это моя идея использовать keris MTF movingaverage для корреляционного анализа, мне просто интересно, как это будет выглядеть.

моряк

моряк,

Попробуйте это: #MTF_MovingAverage Correlation

Он построит 2 скользящих средних, 1 для текущего символа и 1 для любого символа, который вы введете. Вы все еще можете установить TimeFrame для любого символа.

Есть 2 новых входа:

  1. Валюта (Вы должны использовать ALL CAPS, когда вводите валюту для сравнения.) - По умолчанию пусто, поэтому все, что вы увидите, это 1 скользящее среднее, пока вы не введете значение для этого входа).
  2. CorrBars (Сколько баров назад вы хотите, чтобы корреляция начиналась) - По умолчанию=100.

Значение MA для коррелирующей валюты, по необходимости, не является корректным. (Цена для коррелирующей валюты обычно слишком отличается от цены базовой валюты. Вы не сможете увидеть это на графике, поэтому оно "нормализуется" для соответствия.) Но "вид" MA правильный, поэтому вы должны иметь возможность сделать хорошее корреляционное сравнение.

Надеюсь, это то, что вам нужно. Дайте мне знать, если вы найдете в нем что-то неправильное или захотите что-то другое.

Я приложил 2 фотографии, чтобы показать, как это выглядит. На рисунках показано следующее:

EURUSD H4 Chart

SMA(13) - таймфрейм D1

SMA(13) - таймфрейм D1 для USDCHF

График EURUSD H4

SMA(5) - таймфрейм D1

SMA(5) - таймфрейм D1 для GBPUSD

Keris

 

Я помню, что у меня была такая же проблема с gridbuilder, прежде чем я опубликовал ее, программист помог мне, и это должно быть что-то с divisor Я обернул часть кода из gridbuilder

double Divisor = 0.1/Point;

HighPrice = MathRound(High * Divisor);

//SL = High;

LowPrice = MathRound(Low[Lowest(NULL,0,MODE_LOW, Bars - 1, 2)] * Divisor);

GridS = GridSpace / 10;

моряк

 

Мультитаймфреймовые индикаторы

Здравствуйте, уважаемый Keris:

Не могли бы Вы помочь перевести этот MACD-2 в мультитаймфрейм?

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

jingming

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

//| macd-2.mq4 |

//| Copyright ?2004, MetaQuotes Software Corp. |

//| http://www.metaquotes.net/ |

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

#property copyright "Copyright ?2004, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net/"

//---- настройки индикатора

#property indicator_separate_window

#property indicator_buffers 4

#property indicator_color1 Magenta

#property indicator_color2 Yellow

#property indicator_color3 Белый

#property indicator_color4 Yellow

//---- параметры индикатора

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalEMA=8;

//---- буферы индикатора

double ind_buffer1[];

double ind_buffer2[];

double ind_buffer3[];

double ind_buffer4[];

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

//| Пользовательская функция инициализации индикатора |

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

int init()

{

//---- 2 дополнительных буфера используются для подсчета.

IndicatorBuffers(5);

//---- настройки рисования

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);

SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);

SetIndexDrawBegin(0,SignalEMA);

SetIndexDrawBegin(1,SignalEMA);

//---- отображение 4 индикаторных буферов

if(!SetIndexBuffer(0,ind_buffer1) &&

!SetIndexBuffer(1,ind_buffer2) &&

!SetIndexBuffer(2,ind_buffer3) &&

!SetIndexBuffer(3,ind_buffer4))

Print("cannot set indicators\' buffers!");

//---- имя для DataWindow и метки подокна индикатора

IndicatorShortName("MACD-2");

//---- инициализация выполнена

return(0);

}

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

//| Осциллятор |

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

int start()

{

int limit;

int counted_bars=IndicatorCounted();

double prev,current;

//---- проверка на возможные ошибки

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

//---- последний подсчитанный бар будет пересчитан

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- macd подсчитывается в 1-ом дополнительном буфере

for(int i=0; i<limit; i++)

ind_buffer3=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//Строка сигнала ---- подсчитывается во 2-м дополнительном буфере

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

ind_buffer4=iMAOnArray(ind_buffer3,Bars,SignalEMA,0,MODE_EMA,i);

//---- диспетчеризация значений между 2 буферами

bool up=true;

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

{

current=ind_buffer3-ind_buffer4;

prev=ind_buffer3-ind_buffer4;

if(current>prev) up=true;

if(current<prev) up=false;

if(!up)

{

ind_buffer2=3*current;

ind_buffer1=0.0;

}

else

{

ind_buffer1=3*current;

ind_buffer2=0.0;

}

}

return(0);

}

 

Макд-2

zhu28ming,

Представляем вашему вниманию MTF-версию MACD-2. Помните, что для работы вам нужен и оригинальный macd-2.mq4, и новый #MTF_MACD-2.mq4.

Keris

Файлы:
macd-2.mq4  3 kb
 

Макд-2

Большое спасибо за помощь, Керис. Это действительно решило мою большую проблему.

Jingming.zhu

 

Привет

Керри или другие, знаете ли вы, если это возможно, чтобы иметь как и клонированные скользящие средние пунктов выше / ниже существующей скользящей средней?

моряк

 

ups just forget my last post but if any1 was thinking of the same. use in the indicator property window level add. Но Керри, ты знаешь, почему мы не можем сделать это на MTF movingaverage?

моряк

 
sailor:
Я просто забыл о своем последнем сообщении, но если кто-то из вас думал о том же самом, используйте в окне свойств индикатора добавление уровня. Но Керри, ты знаешь, почему мы не можем сделать это на MTF movingaverage sailor?

Пользовательские индикаторы не поддерживают уровни. Я модифицировал #MTF_MovingAverage.mq4, чтобы вы могли добавлять уровни (симулированные). Используйте вкладку "Входы". Если вам нужны уровни, измените UseLevels на True. Затем вы можете установить уровни 0-5 на любое значение.

Смотрите рисунки. Дайте мне знать, если это работает нормально для вас.

Keris

Файлы:
 
keris2112:
Пользовательские индикаторы не поддерживают уровни. Я модифицировал #MTF_MovingAverage.mq4, чтобы вы могли добавлять уровни (симулированные). Используйте вкладку "Входы". Если вам нужны уровни, измените UseLevels на True. Затем вы можете установить уровни 0-5 на любое значение.

Смотрите фотографии. Дайте мне знать, если это работает нормально для вас.

Keris

Я использовал ваш MTF_moving average на своих графиках, он очень хорош, я скачал его раньше, не знаю, отличается ли он от этого, но ваша работа просто великолепна.

Джек

Причина обращения: