Я пытаюсь модифицировать индикатор MACD, чтобы превратить его в Trend Thrust Indicator, как описано в книге Баффа Дормайера "Инвестирование с помощью анализа объема".
У меня проблемы с переменной и я не могу добиться достойного результата. Я прилагаю volWMA и VW MACD, которые работают.
Вот описание
Индикатор трендовой тяги
Индикатор направленного тренда (Tti), усовершенствованная версия индикатора схождения/расхождения скользящих средних, взвешенных по объему (VW-Macd), был представлен в моей книге Investing With Volume Analysis. Tti использует множитель объема уникальным образом, чтобы преувеличить влияние объема на скользящие средние, взвешенные по объему. Как и VW-Macd, Tti использует скользящие средние, взвешенные по объему, в отличие от экспоненциальных скользящих средних. Средние, взвешенные по объему, взвешивают цены закрытия пропорционально объему торгов за каждый период времени, поэтому Tti придает большее значение ценовым тенденциям с большим объемом и меньшее значение периодам с меньшим объемом. В февральском номере журнала Stocks & Commodities за 2001 год я показал, что скользящие средние, взвешенные по объему (Buff averages, или Vwmas), улучшают реагирование и одновременно повышают надежность простых скользящих средних.
Как и Macd и VW-Macd, Tti рассчитывает спред путем вычитания короткой (быстрой) средней из длинной (медленной) средней. Этот спред в сочетании с множителем объема создает спред Buff.
Мне нужен советник, которыйотправляет push-уведомление всякий раз, когда разница между ценой предложения и ценой кинджун сен (в ишимоку) превышает 3 пипса (30 пунктов) в 1-минутном временном потоке.
Я нашел темы типа "iCustom возвращает неверные значения", но это немного другое.
Я пытаюсь создать индикатор, который сравнивает размер одинаковых баров (бычий/медвежий) в последовательности.
и показывает максимальные значения сравнения в гистограмме.
вот так.
//-----------------------------
С ArrayMaximum результат получается быстрее. но что-то не так с моим кодом.пример:
вот код, который сравнивает значения iCustom и возвращает неправильные значения:
#property indicator_separate_window#property indicator_buffers4#property indicator_color1 DeepSkyBlue
#property indicator_width110#property indicator_color2 Red
#property indicator_width210#property indicator_color3 DodgerBlue
#property indicator_width34#property indicator_color4 Crimson
#property indicator_width44#property indicator_level10#property indicator_levelcolor White
#property indicator_levelstyle0string LF = "\n"; // use this in custom or utility blocks where you need line feedsint ObjCount = 0; // count of all objects created on the chart, allows creation of objects with unique namesint current = 0; // variable points to current bardouble Buffer1[];
double Buffer2[];
double Buffer3[];
double Buffer4[];
double bar_0;
double bar_1;
double bar_2;
double bar_3;
double bar_4;
double bar_5;
double bar_6;
double bar_7;
double bar_8;
double bar_9;
double bar_10;
double bar_11;
//+------------------------------------------------------------------+int init()
{
if (false) ObjectsDeleteAll(); // clear the chartIndicatorDigits(Digits-5);
IndicatorBuffers(4);
SetIndexBuffer(0, Buffer1);
SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID);
SetIndexBuffer(1, Buffer2);
SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID);
SetIndexBuffer(2, Buffer3);
SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID);
SetIndexBuffer(3, Buffer4);
SetIndexStyle(3, DRAW_HISTOGRAM, STYLE_SOLID);
return(0);
}
//+------------------------------------------------------------------+int deinit()
{
if (false) ObjectsDeleteAll();
return(0);
}
//+------------------------------------------------------------------+int start()
{
OnEveryTick1();
return(0);
}
//+------------------------------------------------------------------+void OnEveryTick1()
{
int i;
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
i = Bars - counted_bars - 1;
// main calculation loopwhile (i >= 0)
{
current = i;
//current >0//current+1=0
TechnicalAnalysis00();
//current >0//current+1>0//current+2=0
TechnicalAnalysis01();
//current >0//current+1>0//current+2>0//current+3=0
TechnicalAnalysis02();
i--;
}
}
//-----------------------------------------------------//---------bar_0-------------------------------//-----------------------------------------------------void TechnicalAnalysis00()
{
bar_0 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current);
bar_1 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+1);
if
(
bar_0 > 0
&&
bar_1 == 0
)
{
Histogram00();
}
}
void Histogram00()
{
Buffer1[current]= bar_0;
}
//-----------------------------------------------------//---------bar_1-------------------------------//-----------------------------------------------------void TechnicalAnalysis01()
{
bar_0 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current);
bar_1 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+1);
bar_2 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+2);
if
(
bar_0 > 0
&&
bar_1 > 0
&&
bar_2 == 0
)
{
Histogram01();
}
}
void Histogram01()
{
int x_up_01[] = {0,0};
x_up_01[0] = bar_0;
x_up_01[1] = bar_1;
int maxValue_01 = ArrayMaximum(x_up_01);
Buffer1[current]= x_up_01[maxValue_01];
}
//-----------------------------------------------------//---------bar_2-------------------------------//-----------------------------------------------------void TechnicalAnalysis02()
{
bar_0 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current);
bar_1 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+1);
bar_2 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+2);
bar_3 = iCustom(NULL, NULL, "candles_from_chart-celi_masivi",0,current+3);
if
(
bar_0 > 0
&&
bar_1 > 0
&&
bar_2 > 0
&&
bar_3 == 0
)
{
Histogram02();
}
}
void Histogram02()
{
int x_up_02[] = {0,0,0};
x_up_02[0] = bar_0;
x_up_02[1] = bar_1;
x_up_02[2] = bar_2;
int maxValue_02 = ArrayMaximum(x_up_02);
Buffer1[current]= x_up_02[maxValue_02];
}
//-----------------------------------------------------//---------bar_3--------and so on-----------------------//-----------------------------------------------------
где моя ошибка? как я могу ее исправить? Я пробовал вызывать iCustom со всеми внешними параметрами - тот же неверный результат. Я попробовал вызвать iCustom без внешних параметров - тот же неверный результат.
спасибо за помощь
основной код (первая гистограмма) и второй код (вторая гистограмма) на его основе:
Пожалуйста, помогите мне в этом вопросе.
Ниже приведен кросс-алерт MA, но я получаю слишком много сообщений на одно и то же уведомление.
Я просто хочу получать 1 уведомление на 2 последовательных бара, это означает, что нужнопропустить 2бара перед следующим уведомлением.
Как я могу это сделать, пожалуйста, помогите мне. Большое спасибо
Когда я объявляю переменную extern, я получаю сообщение об ошибке "extern-unexpected token".
Пожалуйста, помогите
Когда я объявляю переменную extern, я получаю сообщение об ошибке "extern-unexpected token".
Пожалуйста, помогите
Вы не можете использовать extern внутри метода или функции.
как исправить ошибку ??
" GBPUSD"
" GBPUSD"
спасибо
Помогите модифицировать индикатор
Я пытаюсь модифицировать индикатор MACD, чтобы превратить его в Trend Thrust Indicator, как описано в книге Баффа Дормайера "Инвестирование с помощью анализа объема".
У меня проблемы с переменной и я не могу добиться достойного результата. Я прилагаю volWMA и VW MACD, которые работают.
Вот описание
Индикатор трендовой тяги
Индикатор направленного тренда (Tti), усовершенствованная версия индикатора схождения/расхождения скользящих средних, взвешенных по объему (VW-Macd), был представлен в моей книге Investing With Volume Analysis. Tti использует множитель объема уникальным образом, чтобы преувеличить влияние объема на скользящие средние, взвешенные по объему. Как и VW-Macd, Tti использует скользящие средние, взвешенные по объему, в отличие от экспоненциальных скользящих средних. Средние, взвешенные по объему, взвешивают цены закрытия пропорционально объему торгов за каждый период времени, поэтому Tti придает большее значение ценовым тенденциям с большим объемом и меньшее значение периодам с меньшим объемом. В февральском номере журнала Stocks & Commodities за 2001 год я показал, что скользящие средние, взвешенные по объему (Buff averages, или Vwmas), улучшают реагирование и одновременно повышают надежность простых скользящих средних.
Как и Macd и VW-Macd, Tti рассчитывает спред путем вычитания короткой (быстрой) средней из длинной (медленной) средней. Этот спред в сочетании с множителем объема создает спред Buff.
Расчеты выглядят следующим образом
множитель объема = быстрый VolWMA / медленный VolWMA
множитель объема возводится во вторую степень, а затем умножается на быструю VolWMA, чтобы получить объем, увеличенный до быстрого среднего значения
множитель объема возводится во вторую степень, а затем умножается на медленный VolWMA, чтобы получить среднее значение Volume enhance slow
TTi = увеличение быстрого среднего - увеличение медленного среднего
Спасибо за помощь
ссылка на индикатор: https://www.sendspace.com/file/rfy2dv
Здравствуйте, мой друг. Вы разобрались с TTI? Можете ли вы поделиться здесь или отправить мне через PM? Спасибо
хай,
пожалуйста, добавьте звуковое оповещение, оповещение сообщением и мобильное уведомление для этого индикатора.
спасибо
Привет
Я нашел темы типа "iCustom возвращает неверные значения", но это немного другое.
Я пытаюсь создать индикатор, который сравнивает размер одинаковых баров (бычий/медвежий) в последовательности.
и показывает максимальные значения сравнения в гистограмме.
вот так.
//-----------------------------
С ArrayMaximum результат получается быстрее. но что-то не так с моим кодом.пример:
вот код, который сравнивает значения iCustom и возвращает неправильные значения:
где моя ошибка? как я могу ее исправить?
Я пробовал вызывать iCustom со всеми внешними параметрами - тот же неверный результат. Я попробовал вызвать iCustom без внешних параметров - тот же неверный результат.
спасибо за помощь
основной код (первая гистограмма) и второй код (вторая гистограмма) на его основе: