Спрашивайте! - страница 169

 

Индикатор автономного графика

Kalenzo:
Нет ничего особенного, что нужно кодировать внутри индикатора. Просто перетащите индикатор из nagivator на автономный график и он будет работать. Попробуйте сначала на обычных данных, доступных в metatrader, например, eurusd. Если индикатор работает на eurusd и не работает на NYSE, значит, индикатор считает что-то неправильно и нуждается в исправлении/корректировке (например, может быть, ему нужно округление или при вычислениях он выдает ошибку типа деления нуля).

Здравствуйте, Калензо,

Спасибо за ваш ответ. Индикаторы платформы MT4 работают отлично. Это пользовательский индикатор, который индивидуально закодирован, который не работает. Я заметил в коде символы валют. Я хотел спросить, нужно ли мне изменить символы с валютных пар GBPUSD на символ NYSE? Также хотелось узнать, как работают индикаторы. Какие данные в какой папке у индикаторов, являются ли индикаторы теми, которые были изначально установлены в платформе или же вы скачиваете бесплатный индикатор, написанный на заказ?

Спасибо!!!

 
winsumloosesum:
Привет, Калензо,

Спасибо за ваш ответ. Индикаторы платформы MT4 работают отлично. Это пользовательский индикатор, который индивидуально закодирован, который не работает. Я заметил в коде символы валют. Я хотел спросить, нужно ли мне изменить символы с валютных пар GBPUSD на символ NYSE? Также хотелось узнать, как работают индикаторы. Какие данные в какой папке у индикаторов, те ли это индикаторы, которые были изначально установлены в платформе или это вы скачиваете бесплатный кодированный индикатор?

Спасибо!!!

Здравствуйте!

Да, определенно вам нужно проверить код индикатора. Если ваш индикатор не использует функцию Symbol() (или вместо символа там, где он нужен, стоит значение NULL), то это проблема на 100%. Обычно индикатор преобразует данные с графика, к которому он привязан, поэтому оригинальные индикаторы MT4 работают. Однако в пользовательских индикаторах вы можете брать данные с других символов/таймфреймов, и тогда вам нужно вручную указать, какие данные вы хотите использовать. Например, вы можете использовать EURUSD в качестве основы и использовать GBPUSD и USDCHF в качестве других параметров для расчета.

Вам нужно проверить код индикатора и изменить символы на NYSE, которые вы хотите рассчитать. Тогда он будет работать нормально.

 

Еще раз спасибо за помощь

Еще раз спасибо за помощь.

 

Проблема отладки

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

Чтобы понять цифры, я использую функцию print() для печати значений в лог-отчете во время бэктеста. Но функция print, похоже, мешает печати журнала, и я теряю большую часть журнала. Убираю print, и журнал становится полным со всеми ордерами!

Есть идеи? Вот выдержка из моего кода

//----+ ОПРЕДЕЛЕНИЕ СИГНАЛОВ ДЛЯ СДЕЛОК

if (kline[1] < Level_Up) // под порогом

if (kline[0] > dline[0]) // основной сигнал превышения порога

если (kline[0] > kline[1]) // Основной сигнал должен идти вверх

if (dline[0] > 0 ) { // Сигнал должен оставаться на нулевом уровне < dline[1]) { // Предыдущий основной сигнал под сигналом, поэтому мы перешли вверх

BUY_Sign = true;

if (Debug) {

Print ("Longopen K0 ",DoubleToStr(kline[0],Digits)," K1 ",DoubleToStr(kline[1],Digits),

" K2 ",DoubleToStr(kline[2],Цифры), "K3 ",DoubleToStr(kline[3],Цифры));

Print (" D0 ",DoubleToStr(dline[0],Digits)," D1 ",DoubleToStr(dline[1],Digits)," D2 ",DoubleToStr(dline[2],Digits),

" D3 ",DoubleToStr(dline[3],Digits));

}

}

Спасибо за помощь

Марсель

 

Пожалуйста, помогите!!! Я не кодер, но я стараюсь изо всех сил. Любой совет о том, почему мой индикатор не работает, будет очень признателен!!!

Заранее спасибо

#property indicator_separate_window

#property indicator_buffers 4

#property indicator_color1 LimeGreen

#property indicator_color2 FireBrick

#property indicator_color3 Green

#property indicator_color4 Red

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

#property indicator_width4 2

//---------------------------------------------------------------------indicator parameters

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalSMA=9;

//---------------------------------------------------------------------indicator buffers

double OsmaBuffer[];

double Spm;

double Smm;

double Spmaks1;

double Spmaks2;

double Smmin1;

double Smmin2;

double nou[];

double ver[];

double OsMAUP[];

double OsMADOWN[];

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

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

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

int init()

{

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

IndicatorBuffers(4);

//--------------------------------------------------------------------drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexBuffer(0,OsMAUP);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,OsMADOWN);

SetIndexStyle(2,DRAW_ARROW);

SetIndexArrow(2,159);

SetIndexBuffer(2,Spmaks1);

SetIndexStyle(3,DRAW_ARROW);

SetIndexArrow(3,159);

SetIndexBuffer(3,Smmin1);

SetIndexDrawBegin(0,SignalSMA);

IndicatorDigits(Digits+2);

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

IndicatorShortName("OsMA Marius("+FastEMA+", "+SlowEMA+", "+SignalSMA+")");

//-------------------------------------------------------------------initialization done

return(0);

}

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

//| Скользящая средняя осциллятора || Moving Average of Oscillator

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

int start()

{

int limit;

int counted_bars=IndicatorCounted();

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

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//-------------------------------------------------------------------Main Loop

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

{

OsmaBuffer=iOsMA(NULL,0,FastEMA,SlowEMA,SignalSMA,PRICE_WEIGHTED,i);

nou = OsmaBuffer;

ver = OsmaBuffer;

if(OsmaBuffer > 0)

{

OsMAUP = OsmaBuffer;

OsMADOWN = 0;

}

else

{

OsMADOWN = OsmaBuffer;

OsMAUP = 0;

}

//-------------------------------------------------------------------Cross Down

if ((nou0))

{

Spmaks1 = Spmaks2;

if(Spmaks2 > 0)

{

Spmaks2 = 0;

}

}

//-------------------------------------------------------------------Cross Up

if ((nou>0)&&(ver<0))

{

Smmin1 = Smmin2;

if(Smmin2 < 0)

{

Smmin2 = 0;

}

}

//-------------------------------------------------------------------During Swing

if(ver > 0)

{

Spm = ver;

if((nou > ver) || (nou == ver))

{

Spm = nou;

}

if((Spm > Spmaks2) || (Spm == Spmaks2))

{

Spmaks2 = Spm;

}

}

else

{

Smm = ver;

if((nou < ver) || (nou == ver))

{

Smm = nou;

}

if((Smm < Smmin2) || (Smm == Smmin2))

{

Smmin2 = Smm;

}

}

}

//--------------------------------------------------------------------done

return(0);

}

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

 

Как провести линию между последними 20 барами

У меня вопрос!

Я хочу иметь индикатор скользящей средней.

Он всегда рисует линию среди последних 20 баров.

Но я не знаю, как его написать.

Надеюсь, вы сможете мне помочь и предложить подобный индикатор.

Спасибо большое!

 

Мир всем,

Надеюсь, у вас все хорошо.

Мой вопрос довольно простой для тех, кто компетентен в области программирования:

Я профессионально создал для себя электронную стратегию, используя 3 индикатора в их необработанном виде. Это система из 4 стратегий, закодированная в одном e.a., где 3 индикатора торгуются в различных комбинациях. Немного истории, но эта часть на самом деле не имеет значения.

Все 3 индикатора используют по два буфера, и единственной переменной, которую они все имели, был "CountBars". Поскольку они были в состоянии, когда их нельзя было оптимизировать, поскольку единственным регулируемым параметром был "CountBars", у меня возникла светлая идея использовать алгоритм Юрика в качестве своего рода предварительной обработки. Таким образом, я мог бы сохранить "сырой" индикатор, т.е. реагирующий быстро, но с несколькими "заминками", добавив при этом сглаживающий фактор, который все еще очень отзывчив и одновременно с низким запаздыванием. Поэтому я попросил хорошо известного члена этого форума помочь мне с этой частью проекта, что они и сделали, и, надо сказать, довольно безупречно. Однако, поскольку они сделали все, что было в их силах, я не хотел просить их оказать мне еще какие-либо услуги, т.е. установить новые сглаженные версии тех же индикаторов от Jurik вместо их необработанных подчиненных.

Тем не менее, я решил, что "это не так уж и сложно", и решил, что знаю достаточно, чтобы сделать это самому. Просто измените имена, вызываемые в 3 экземплярах iCustom, добавьте новые переменные в части "extern", а также ниже в части iCustoms, (Теперь JRK smthd версии индикаторов по-прежнему используют 2 буфера, но у них есть дополнительная переменная, всего 2: "SmoothLength" и "SmoothPhase". "CountBars" был удален.) и Вуаля!!! Если бы это было так просто. Я сделал эти вещи и скомпилировал его, никаких ошибок/предупреждений. Однако когда я пытаюсь провести бэктест/форвард-тест, ничего не получается.

Я что-то упустил? Любой совет будет высоко оценен.

 

Биззззззззззз!

 
forex_for_life:
Мир всем,

Надеюсь, у вас все хорошо.

Мой вопрос довольно простой для тех, кто компетентен в области программирования:

Я профессионально создал для себя электронную стратегию, используя 3 индикатора в их необработанном виде. Это система из 4 стратегий, закодированная в одном e.a., где 3 индикатора торгуются в различных комбинациях. Немного истории, но эта часть на самом деле не имеет значения.

Все 3 индикатора используют по два буфера, и единственной переменной, которую они все имели, был "CountBars". Поскольку они были в состоянии, когда их нельзя было оптимизировать, поскольку единственным регулируемым параметром был "CountBars", у меня возникла светлая идея использовать алгоритм Юрика в качестве своего рода предварительной обработки. Таким образом, я мог бы сохранить "сырой" индикатор, т.е. реагирующий быстро, но с несколькими "заминками", добавив при этом сглаживающий фактор, который все еще очень отзывчив и одновременно с низким запаздыванием. Поэтому я попросил хорошо известного члена этого форума помочь мне с этой частью проекта, что они и сделали, и, надо сказать, довольно безупречно. Однако, поскольку они сделали все, что было в их силах, я не хотел просить их оказать мне еще какие-либо услуги, т.е. установить новые сглаженные версии тех же индикаторов от Jurik вместо их необработанных подчиненных.

Тем не менее, я решил, что "это не так уж и сложно", и решил, что знаю достаточно, чтобы сделать это самому. Просто измените имена, вызываемые в 3 экземплярах iCustom, добавьте новые переменные в части "extern", а также ниже в части iCustoms, (Теперь JRK smthd версии индикаторов по-прежнему используют 2 буфера, но у них есть дополнительная переменная, всего 2: "SmoothLength" и "SmoothPhase". "CountBars" был удален.) и Вуаля!!! Если бы это было так просто. Я сделал эти вещи и скомпилировал его, никаких ошибок/предупреждений. Однако, когда я пытаюсь провести бэктест/форвард-тест, не работает trading......

Я что-то упустил? Любой совет будет высоко оценен.

Привет, Ffl,

Попробуйте iCustom(NULL,0," имя индикатора" SmoothLength,SmoothPhase,0,1) для покупки и iCustom(NULL,0," имя индикатора" SmoothLength,SmoothPhase,1,1), для продажи просто измените "имя индикатора" на индикатор, который вы пытаетесь вызвать.

 
mrtools:
Привет Ffl, Попробуйте iCustom(NULL,0," имя индикатора" SmoothLength,SmoothPhase,0,1) для покупки и iCustom(NULL,0," имя индикатора" SmoothLength,SmoothPhase,1,1), для продажи просто измените "имя индикатора" на индикатор, который вы пытаетесь вызвать.

Мир, мистер Т,

Спасибо за рекомендации. Я сделал эти изменения, основываясь на вашем предложении, и E.A. по-прежнему компилируется без ошибок/предупреждений, но также по-прежнему не размещает никаких сделок. Попробую еще один обходной путь в ближайшее время......