Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Помогите прикрутить входы к уровням Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Graf345



Зарегистрирован: 13.12.2008
Сообщения: 20

СообщениеДобавлено: Вт Сен 04, 2012 11:43 am Ответить с цитатой Вернуться к началу

есть код расчета уровней мюррея:
Код:

/*
//       $Archive: /AFL.root/AFL/YofaTrader/Custom/Murrey Math Price
Lines.afl.cs $           
//          $Date: 08.03.29 22:57 $         
//       $Modtime: 08.03.29 22:52 $       
//      $Revision: 15 $     
//      $Workfile: Murrey Math Price Lines.afl.cs $       
*/

ParamShowLevel=ParamList("Show harmonic levels", "1/8|1/4|1/2", 1 );
ParamShowLabel=ParamStyle("Show harmonic labels", styleNoLabel, styleNoLabel);

if(Status("action") ==1)  //indicator
{
    LastVisibleIndex = LastValue(Status("lastvisiblebarindex"));
    if (LastVisibleIndex > BarCount -1) //to avoid errors is case of cursor isbehind the last bar
       LastVisibleIndex = BarCount-1;
    TotalVisibleBars = LastVisibleIndex -
LastValue(Status("firstvisiblebarindex")) + 1;
}
else
{
    LastVisibleIndex = BarCount -1;
    TotalVisibleBars = BarCount;
}

HHScreen = HHV(High, TotalVisibleBars);
LLScreen = LLV(Low,  TotalVisibleBars);
PRScreen = HHScreen[LastVisibleIndex] - LLScreen[LastVisibleIndex]; //Pricerange

PriceRangeVisible = PRScreen * 1.1;
MiddleVisible = (HHScreen[LastVisibleIndex] + LLScreen[LastVisibleIndex]) /2;
HighestVisible= MiddleVisible + PriceRangeVisible / 2;
LowestVisible = MiddleVisible - PriceRangeVisible / 2;

SquareBase = 0.1953125;

if (HighestVisible > 0.390625)
    { SquareBase = 1.5625; }

if (HighestVisible > 1.5625)
    { SquareBase = 3.125; }
   
if (HighestVisible > 3.125)
    { SquareBase = 6.25; }
   
if (HighestVisible > 6.25)
    { SquareBase = 12.5; }
   
if (HighestVisible > 25)
    { SquareBase = 100; }
           
if (HighestVisible > 250)
    { SquareBase = 1000; }
   
if (HighestVisible > 2500)
    { SquareBase = 10000; }
   
if (HighestVisible > 25000)
    { SquareBase = 100000; }

ShowLevel = 1;

PriceStep = SquareBase / 8;
while ( PriceRangeVisible / 4 <= PriceStep AND ShowLevel < 4)
{
    PriceStep = PriceStep / 8;
    ShowLevel++;
}

//Lowest,highest harmonic value to show on the panel
LowerValue  = floor(LowestVisible  / PriceStep) * PriceStep;
HigherValue = ceil(HighestVisible / PriceStep) * PriceStep;

Octave1PriceStep = SquareBase / 8;
Octave2PriceStep = SquareBase / 64 ;
Octave3PriceStep = SquareBase / 512;

Harmonic = LowerValue;

//iterate from low to high values
while( Harmonic <= HigherValue )
{
    style = styleDashed; // 1/8, 3/8, 5/8, 7/8 lines of any level
    color = colorGreen;  //1/8, 7/8
    if ((Harmonic / PriceStep) % 8 == 1 OR (Harmonic / PriceStep) % 8 == 7)
        color = colorBlack; // 3/8, 5/8
    if (ParamShowLevel != "1/8")
        style = styleNoLine;
       
    if ((Harmonic / PriceStep) % 2 == 0) // 1/4, 3/4 lines of any level
    {
        style = styleDashed;
        color = colorRed;
        if (ParamShowLevel == "1/2")
            style = styleNoLine;
    }
     
    if ((Harmonic / PriceStep) % 4 == 0) // 1/2 line of any level
    {
        style = styleThick;
        color = colorRed;
    }
   
    if ((Harmonic / PriceStep) % 8 == 0) // 1/1 line of Baby level
    {
        color = colorBlue;
        style = styleLine;
        if ((Harmonic / Octave3PriceStep) % 64 == 0) // 1/1 line of Minor level

        {
             style = styleThick; // 1/1 /Level Minor
/*****************************************************/
/****************************************************/
        }
    }
   
    if (style != styleNoLine)  //if there is a line to plot... (avoid printingunused labels)
    {
       style = style + ParamShowLabel;
        Plot( Harmonic, "", color, style);
       PlotText(""+Harmonic, BarCount - 10, Harmonic + 20, color);
    }
   
    Harmonic = Harmonic + PriceStep;
}


он их только рисует
вот как прикрутить к этой теме например вход в покупку при пробитии уровня 1/1 снизу вверх (место где даются параметры отрсовки этого уровня выделил двумя строками с звездочками
помогите пожалуйста
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Сен 05, 2012 10:37 pm Ответить с цитатой Вернуться к началу

А зачем? Это все равно протестировать автоматически нельзя. Потому, что расположение этих линий и даже их число зависит от того, сколько баров видно на экране в данный момент. Посмотри эти линии, измени масштаб и увидишь, что их расположение изменилось.
В том виде, как ты дал этот индикатор пригоден только для ручного тестирования.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Graf345



Зарегистрирован: 13.12.2008
Сообщения: 20

СообщениеДобавлено: Чт Сен 06, 2012 9:21 am Ответить с цитатой Вернуться к началу

на РТС фуче не меняется годами...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Сен 06, 2012 1:10 pm Ответить с цитатой Вернуться к началу

Только что посмотрел на 15 мин. Меняется очень сильно. от 3 до 13 линий.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Вс Сен 16, 2012 7:28 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Только что посмотрел на 15 мин. Меняется очень сильно. от 3 до 13 линий.

А если такой код, не помню откуда взял, но, кажется, не перерисовывается. Может человек на правильном пути?
Код:


//http://www.tradewithme.me/uploads/7/9/9/5/7995199/murray_maths_with_patterns_modified_intraday.afl

//Credit for the Octave logic goes to Jacek below
//All other features developed by Abnash Singh 6-11-2011
// abnash1978@yahoo.co.uk
// 13/11/2011 Added S/R levels in the title line along with High and low
//------------------------------------------------------------------------------
//
//  Formula Name:    MURREY MATH LINES Formula
//  Author/Uploader: Jacek
//  E-mail:         
//  Date/Time Added: 2006-02-18 14:21:45
//  Origin:         
//  Keywords:        MURREY MATH
//  Level:           medium
//  Flags:           indicator
//  Formula URL:     http://www.amibroker.com/library/formula.php?id=588
//  Details URL:     http://www.amibroker.com/library/detail.php?id=588
//
//------------------------------------------------------------------------------
//
//  Murrey Math Horizontal Lines.
//
//  Use Parameter function to adjust Time Frame.
//
//  Enjoy !
//
//------------------------------------------------------------------------------

/* MURREY MATH HORIZONTAL LINES Formula for Amibroker
based on Excel spreadsheet by Jacek */
//Plot(C,"CLose",colorWhite,styleCandle);
//GraphXSpace=1; MaxGraph=12;
function splround(x)
{
   y=int(x)+round(x%int(x)*100)/100;
   return y;
}


up=Study("UP",GetChartID());
dm=Study("DN",GetChartID());

Color=IIf(C>O,colorGreen,colorRed);
//Graph0=Close; Graph0Color=1; Graph0Style=64;
//Plot(C,"close",color,styleBar);
// Colored bars starts

_SECTION_BEGIN("Carl_ASC");
function PercentR( periods )
{
 return -100 * ( HHV( H, periods ) - C )/( HHV( H, periods ) - LLV( L, periods ) );
}

periods= Param("periodes",14,1,100,1);
PR=PercentR( periods );

SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", IIf(pr>-50,colorBlue,colorRed), styleBar| styleThick|styleNoTitle | ParamStyle("Style") | GetPriceStyle() );

//if( ParamToggle("Tooltip shows", "All Values|Only Prices" ) )
//{
 //ToolTip=StrFormat("Open: %g\nHigh:  %g\nLow:   %g\nClose:  %g (%.1f%%)\nVolume: "+NumToStr( V, 1 ), O, H, L, C, SelectedValue( ROC( C, 1 )));
//}
_SECTION_END();

// Colored bars ends

Period=Param("MM_Period", 32, 4, 256, 1) ;
TYpe=ParamList("Rolling/Intraday","Rolling|Intraday") ;
PER = Period;
dn=DateNum();
tn=TimeNum();
Lox=Hix=0;
Lox =  LLV(Min(H,L),PER )  ;
Hix =  HHV(Max(H,L),PER )  ;
avp=(O+C)/2;
Line0=Line1=Line2=Line3=Line4=Line5=Line6=Line7=Line8=Lineplus2=Lineminus2=0;
Lo=L[0];Hi=H[0];
for (i=0;i<BarCount;i++)
{
//if (i>0 AND i<BarCount)PlotText(WriteVal(dm[i],1.0),i,L[i]-15,colorWhite);

if (Type=="Intraday")
{
   if(I>1)
   {
      if(dn[i]!=dn[i-1])
      {
         Lo=L[i];
         Hi=H[i];
      }
   }
   if (L[i]<Lo)Lo=L[i];
   if (H[i]>Hi)Hi=H[i];
}
else if (type=="Rolling")
{
   Hi=Hix[i];
   Lo=Lox[i];
}

if (up[i]>hi)Hi=up[i];
if (dm[i]<lo)Lo=dm[i];
//PlotText(WriteVal(Lo,1.0),colorWhite,i,H[i]+15);

Fractal = IIf(Hi<=250,100, IIf(Hi<=2500,1000, IIf(Hi<=25000,10000, IIf(Hi<=250000,100000, 0 )))) ;
int_Log = int( log(Fractal/(Hi-Lo))/log(2) ) ;
Oct = Fractal * ( exp(ln(1/2)* int_Log ) ) ;


Min_1 = int( Lo / Oct ) * Oct ;

Max_1 = IIf( (Min_1 + Oct) > Hi, Min_1 + Oct, Min_1 + 2*Oct ) ;

Min_2 = IIf( (Min_1 + 1/8*(Max_1-Min_1)) <= Lo AND Hi <= (Max_1 - 1/8*(Max_1-Min_1)) ,
(Min_1 + 1/4*(Max_1-Min_1)) , Min_1 ) ;

Max_2 = IIf( (Min_1 + 1/8*(Max_1-Min_1)) <= Lo AND Hi <= (Max_1 - 1/8*(Max_1-Min_1)) ,
(Max_1 - 1/4*(Max_1-Min_1)) , Max_1 ) ;

/******************************/

Diff = Max_2 - Min_2 ;

H1 = IIf( (Min_2 + 3/16*Diff) <= Lo AND Hi <= (9/16*Diff + Min_2) ,
Min_2 + 1/2*Diff, 0) ;

H2 = IIf( (Min_2 - 1/8*Diff) <= Lo AND Hi <= (5/8*Diff + Min_2) AND H1==0,
Min_2 + 1/2*Diff, 0) ;

H3 = IIf( (Min_2 + 7/16*Diff) <= Lo AND Hi <= (Min_2 + 13/16*Diff), Min_2 + 3/4*Diff, 0 ) ;

H4 = IIf( (Min_2 + 3/8*Diff) <= Lo AND Hi <= (Min_2 + 9/8*Diff) AND H3==0,
Max_2, 0 ) ;

H5 = IIf( (Min_2 + 1/8*Diff)<=Lo AND Hi <= (Min_2 + 7/8*Diff) AND H1==0 AND H2==0 AND H3==0 AND H4==0,
Min_2 + 3/4*Diff , 0 ) ;

H6 = IIf( ( H1 + H2 + H3 + H4 + H5 ) == 0, Max_2, 0 ) ;

/**************************/

L1 = IIf(H1>0, Min_2 + 1/4*Diff, 0) ;

L2 = IIf(H2>0, Min_2, 0) ;

L3 = IIf(H3>0, Min_2 + 1/2*Diff, 0) ;

L4 = IIf(H4>0, Min_2 + 1/2*Diff, 0) ;

L5 = IIf(H5>0, Min_2 + 1/4*Diff, 0) ;

L6 = IIf(H6>0, Min_2, 0 ) ;


M_8 = ( H1 + H2 + H3 + H4 + H5 + H6 ) ;

M_0 = ( L1 + L2 + L3 + L4 + L5 + L6 ) ;

/**************************************/
Line0[i] =  M_0 ;

Line1[i] =  M_0 + (1*(0.125*(M_8-M_0)));

Line2[i] =  M_0 + (2*(0.125*(M_8-M_0)));

Line3[i] =  M_0 + (3*(0.125*(M_8-M_0)));

Line4[i] =  M_0 + (4*(0.125*(M_8-M_0)));

Line5[i] =  M_0 + (5*(0.125*(M_8-M_0)));

Line6[i] =  M_0 + (6*(0.125*(M_8-M_0)));

Line7[i] =  M_0 + (7*(0.125*(M_8-M_0)));



Line8[i] =  M_8  ;

Lineplus2[i] = M_8 + (2*(0.125*(M_8-M_0)));

Lineminus2[i] = M_0 - (2*(0.125*(M_8-M_0)));


}

Plot(Line0,"Line0",6,styleLine);//0/8
Plot(Line1,"Line1",7,styleLine);//1/8
Plot(Line2,"Line2",4,styleLine);//2/8
Plot(Line3,"Line3",5,styleLine|styleDashed);//3/8
Plot(Line4,"Line4",6,styleLine);//4/8
Plot(Line5,"Line5",5,styleLine|styleDashed);//5/8
Plot(Line6,"Line6",4,styleLine);//6/8
Plot(Line7,"Line7",7,styleLine);//7/8
Plot(Line8,"Line8",6,styleLine);//8/8
Plot(Lineplus2,"Lineplus2",4,styleLine);//+2/8
Plot(Lineminus2,"Lineminus2",4,styleLine);//-2/8


/**************************************************************/
Title = Date()+" Murray Maths "+ Interval(format=2)+"  "+Name()+" O "+WriteVal(O,1.2)+" H "+WriteVal(H,1.2)+"  L "+WriteVal(L,1.2)+" C "+
         WriteVal(C,1.2)+" "+EncodeColor(colorYellow)+" Dayhigh " +WriteVal(Hi,1.2)+" Daylow "+WriteVal(Lo,1.2)
+"\n"+EncodeColor(colorGreen)+"Upper Breakout "+EncodeColor(colorRed)+WriteVal(Lineplus2,1.2)+EncodeColor(colorGreen)
         +" Resistance 8/8 "+EncodeColor(colorBlue)+WriteVal(Line8,1.2)+EncodeColor(colorGreen)+" Reversal 7/8 "+EncodeColor(colorYellow)
         +WriteVal(Line7,1.2)
+"\n"+EncodeColor(colorYellow)+"Middle S/R 4/8 "+EncodeColor(colorBlue)+WriteVal(Line4,1.2)
+"\n"+EncodeColor(colorRed)+"Lower Breakout "+EncodeColor(colorRed)+WriteVal(Lineminus2,1.2)+EncodeColor(colorRed)+" Support 0/8 "
         +EncodeColor(colorBlue)+WriteVal(Line0,1.2)+EncodeColor(colorRed)+" Reversal 1/8 "+EncodeColor(colorYellow)+WriteVal(Line1,1.2);

/*
Title = Name()
+ "=" + WriteIf( round(C)== C, NumToStr(C,1) , WriteVal(C) ) + " " + "\\c17"
+ WriteIf( Interval()==86400, "Daily ", WriteIf(Interval()==3600,"Hourly ", 
WriteIf(Interval()==900,"15 Min ",  WriteIf(Interval()==300,"5 Min ", 
WriteIf(Interval()==60,"1 Min ", "" ) ) ) ) )
+ Date() + "\\c12" +  WriteIf(Volume>0,"  Turnover=","")
+ WriteIf(Volume>0,  WriteVal(Volume*Close/1000), "" ) ;
*/
Filter = 1 ;
   AddColumn(Lineminus2,"Limit1",1.2);
   AddColumn(IIf(C>Lineminus2 AND C<Line0,C,Null),"Close",1.2, Null);
   AddColumn(Line0,"Supp1",1.2);
   AddColumn(IIf(C>Line0 AND C<Line1,C,Null),"Close",1.2, Null);
   AddColumn(Line1,"Reversal1",1.2);
   AddColumn(IIf(C>Line1 AND C<Line2,C,Null),"Close",1.2, Null);
   AddColumn(Line2,"Trend",1.2);
   AddColumn(IIf(C>Line2 AND C<Line3,C,Null),"Close",1.2, Null);
   AddColumn(Line3,"Short",1.2);
   AddColumn(IIf(C>Line3 AND C<Line4,C,Null),"Close",1.2, Null);
   AddColumn(Line4,"Supp/Res",1.2);
   AddColumn(IIf(C>Line4 AND C<Line5,C,Null),"Close",1.2, Null);
   AddColumn(Line5,"Long",1.2);
   AddColumn(IIf(C>Line5 AND C<Line6,C,Null),"Close",1.2, Null);
   AddColumn(Line6,"Trend",1.2);
   AddColumn(IIf(C>Line6 AND C<Line7,C,Null),"Close",1.2, Null);
   AddColumn(Line7,"Reversal2",1.2);
   AddColumn(IIf(C>Line7 AND C<Line8,C,Null),"Close",1.2, Null);
   AddColumn(Line8,"Res2",1.2);
   AddColumn(IIf(C>Line8 AND C<Lineplus2,C,Null),"Close",1.2, Null);
   AddColumn(Lineplus2,"Limit2",1.2);
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Сен 16, 2012 11:07 pm Ответить с цитатой Вернуться к началу

А в чем проблема? Даны конкретные линии
Line0, Line1, Line2...

ну и пиши
Buy = Cross(C, Line0) OR Cross(C, Line1) OR ...;

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen