Автор |
Сообщение |
ID
Советник
Зарегистрирован: 07.01.2008
Сообщения: 370
|
Привет, парни
У кого-нить есть NRTR для ами?
Если есть - могете дать? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
ID писал(а): |
Привет, парни
У кого-нить есть NRTR для ами?
Если есть - могете дать? |
Есть вечерком скину |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Первый |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
второй, брал скорее всего на пауке оба. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
ID
Советник
Зарегистрирован: 07.01.2008
Сообщения: 370
|
Для некоторых нужно, чтоб NRTR учитывал цены хай и лоу при пересечении реверса.
Выкладываю тута
Если кто-нить найдет ошибку и напинает - буду благодарен
Удачи! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
Вот правильный NRTR (не WATR):
SetBarsRequired(100000,0);
GraphXSpace = 3;
// Параметры
k = Param("K", 3, 0, 50, 0.1) / 100;
Trend[0] = 1; // тренд вверх
Revers[0] = C[0] - C[0] * k;
PE[0] = C[0];
for(i = 1; i < BarCount; i++)
{
if(Trend[i-1] == 1) //Up Trend
{
if(H[i] > PE[i-1]) //Новый High
{
Trend[i] = 1;
PE[i] = H[i];
Revers[i] = H[i] - H[i]*k;
}
else
{
if(C[i] < Revers[i-1]) //Реверс
{
Trend[i] = -1;
PE[i] = L[i];
Revers[i] = L[i] + L[i]*k;
}
else //Нет нового high и реверса
{
Trend[i] = 1;
PE[i] = PE[i-1];
Revers[i] = Revers[i-1];
}
}
}
//======================================
else //Down Trend
{
if(L[i] < PE[i-1]) //Новый Low
{
Trend[i] = -1;
PE[i] = L[i];
Revers[i] = L[i] + L[i]*k;
}
else
{
if(C[i] > Revers[i-1]) //Реверс
{
Trend[i] = 1;
PE[i] = H[i];
Revers[i] = H[i] - H[i]*k;
}
else //Нет нового Low и реверса
{
Trend[i] = -1;
PE[i] = PE[i-1];
Revers[i] = Revers[i-1];
}
}
}
}
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g {{VALUES}}", O, H, L, C, Revers ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
Plot(Revers, "NRTR", IIf(Trend == 1, 27, 4), 4);
ЗЫ а то что вы тут пишите уродцы какие-то |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
Блин, это тоже не правильный NRTR... надо редактировать. Кароч, в этом индюке важно, чтобы он не менялся, когда цена начинает флэтовать, то есть автоматом выстраивается в линию поддержки/соправтивления цены. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Хм. Проверил. Все отлично.
Код: |
SetBarsRequired(500000,0);
GraphXSpace = 3;
// Параметры
k = Param("K", 1, 0, 10, 0.1) / 100;
Trend[0] = 1; // тренд вверх
Revers[0] = C[0] - C[0] * k;
PE[0] = C[0];
for(i = 1; i < BarCount; i++)
{
if(Trend[i-1] == 1) { //Up Trend
if(H[i] > PE[i-1]) { //Новый High
Trend[i] = 1;
PE[i] = H[i];
Revers[i] = H[i] - H[i]*k;
}
else {
if(C[i] < Revers[i-1]) { //Реверс
Trend[i] = -1;
PE[i] = L[i];
Revers[i] = L[i] + L[i]*k;
}
else { //Нет нового high и реверса
Trend[i] = 1;
PE[i] = PE[i-1];
Revers[i] = Revers[i-1];
}
}
}
//======================================
else { //Down Trend
if(L[i] < PE[i-1]) { //Новый Low
Trend[i] = -1;
PE[i] = L[i];
Revers[i] = L[i] + L[i]*k;
}
else {
if(C[i] > Revers[i-1]) { //Реверс
Trend[i] = 1;
PE[i] = H[i];
Revers[i] = H[i] - H[i]*k;
}
else { //Нет нового Low и реверса
Trend[i] = -1;
PE[i] = PE[i-1];
Revers[i] = Revers[i-1];
}
}
}
}
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g {{VALUES}}", O, H, L, C, Revers ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
Plot(Revers, "NRTR", IIf(Trend == 1, 27, 4), 4);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
Да не, сам по себе он правилен, просто он не оригинальный - выстраивается по High и Low вместо Close. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Действительно. Сейчс глянул оригинал от Конкопа. Там используются цены закрытия. Если надо могу поправить. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
вообще сложный для непрограммеров индюк, сам много голову над ним ломал)))
вот оригинал, написал за минуты, оказался даже короче:
Код: |
SetBarsRequired(100000,0);
GraphXSpace = 3;
k = Param("koef",0.1,0.005,0.5,0.005);
Trend[0] = 1;
Revers[0] = C[0]*(1-k);
Level[0] = C[0];
for(i = 1; i < BarCount; i++)
{
if(Trend[i-1] == 1)
{
if (C[i] < revers[i-1])
{
trend[i] = -1;
Level[i] = C[i];
revers[i] = Level[i]*(1+k);
}
else
{
if (C[i] > Level[i-1])
{
trend[i] = 1;
Level[i] = C[i];
revers[i] = Level[i]*(1-k);
}
else
{
trend[i] = 1;
Level[i] = Level[i-1];
revers[i] = revers[i-1];
}
}
}
else
{
if (C[i] > revers[i-1])
{
trend[i] = 1;
Level[i] = C[i];
revers[i] = C[i]*(1-k);
}
else
{
if (C[i] < Level[i-1])
{
trend[i] = -1;
Level[i] = C[i];
revers[i] = Level[i]*(1+k);
}
else
{
trend[i] = -1;
Level[i] = Level[i-1];
revers[i] = revers[i-1];
}
}
}
}
Plot(revers, "NRTR", IIf(Trend == 1, 27, 4), 4);
|
|
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Но самый лучший получился у Томаша.
Код: |
SetBarsRequired(sbrAll);
// get start date
Start = Cross( DateNum(), ParamDate("Start Date", "2005-10-30" ) );
Started = Flip( Start, 0 );
StopMode = ParamToggle("Stop Mode", "Fixed|Chandelier" );
StopLevel = Param("Fixed perc %", 14, 0.1, 50, 0.1)/100;
StopATRFactor = Param("Chandelier ATR multiple", 4, 0.5, 10, 0.1 );
StopATRPeriod = Param("Chandelier ATR period", 14, 3, 50 );
// calculate support and resistance levels
if( StopMode == 0 ) // fixed percent trailing stop
{
sup = C * ( 1 - stoplevel );
res = C * ( 1 + stoplevel );
}
else // Chandelier ATR-based stop
{
sup = C - StopATRFactor * ATR( StopATRPeriod );
res = C + StopATRFactor * ATR( StopATRPeriod );
}
// calculate trailing stop line
trailARRAY = Null;
trailstop = 0;
for( i = 1; i < BarCount; i++ )
{
if( Started[ i ] == 0 ) continue;
if( C[ i ] > trailstop AND C[ i - 1 ] > trailstop )
trailstop = Max( trailstop, sup[ i ] );
else
if( C[ i ] < trailstop AND C[ i - 1 ] < trailstop )
trailstop = Min( trailstop, res[ i ] );
else
trailstop = IIf( C[ i ] > trailstop, sup[ i ], res[ i ] );
trailARRAY[ i ] = trailstop;
}
// generate buy/sell signals based on crossover with trail stop line
Buy = Start OR Cross( C, trailArray );
Sell = Cross( trailArray, C );
PlotShapes(Buy*shapeUpArrow,colorGreen,0,trailarray);
PlotShapes(Sell*shapeDownArrow,colorRed,0,trailarray);
Plot( Close,"Price",colorBlack,styleBar);
Plot( trailARRAY,"trailing stop level", colorRed );
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
красиво)))))) и просто, потому, наверное, и сложно... |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Torino
Зарегистрирован: 27.01.2009
Сообщения: 72
|
000 писал(а): |
Но самый лучший получился у Томаша.
Код: |
SetBarsRequired(sbrAll);
----
Plot( Close,"Price",colorBlack,styleBar);
Plot( trailARRAY,"trailing stop level", colorRed );
|
|
У меня этот код не работает.
Значение trailing stop level при любых параметрах EMPTY.
Почему это может быть? |
_________________ Андрей
Your my your... |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В настройках Start Date должна быть не меньше, чем дата начала истории на графике |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|