Market Trader Forum

Market Trader Forum
das ultimative Expertenforum
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Market Trader Forum Foren-Übersicht -> Fragen, Antworten und Vorschläge
Autor
Nachricht
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main

Dynamischer GD
Verfasst am: 22.03.2006, 09:02

Ich bin auf der Suche nach einem adaptiven GD, der ein bisschen anders ist als man kennt.

- Der KAMA, der adaptive GD geht in Seitwärtsphasen DURCH die Schwankungen, und verläuft horizontal. Geändert wird ein Faktor.

Was ich brauche ist ein GD der zwischen 5-50 steht.
- In Seitwärtsphasen verläuft er ÜBER und nicht durch die Schwankungen! Das passiert weil hier ein GD z.B. 40 genommen wird.
In Trendphasen ist der GD vielleicht 5-8.

Die Berechnung ist ziemlich komplex, habe mit SMA gemacht, werde auch mit EMA versuchen. Der Verlauf des GDs ist aber ziemlich zackig, und bin damit nicht zufrieden.

Frage: gibt es irgondwo etwas ähnliches?


_________________
 
Paeda




Anmeldedatum: 02.03.2006
Beiträge: 305


Verfasst am: 22.03.2006, 09:51

Nordie hat mal etwas aehnliches zur Trendbestimmung geschrieben. Kannst du dir ja mal anschauen...

// --------------------------------------------------------------------------------
// Project: Trenderkennung via 2fachem Highest/Lowest
// Versioning: 050303-01 / 0.02 alpha
// Author: nordie
// Functions: ./.
// --------------------------------------------------------------------------------

Meta: Synopsis ("Trenderkennung via 2fachem Highest/Lowest" ),
ShortCode ("TRDHL"),
Author ("nordie@nordie.de"),
SubChart (false);

Inputs: slowPeriod (70),
fastPeriod (20);

Vars: slowHIGH (0),
slowLOW (0),
fastHIGH (0),
fastLOW (0),
slowMID (0),
fastMID (0),

LongCondition1 (0),
ShortCondition1 (0);


// --------------------------------------------------------------------------------

// Kanäle errechnen (obere, untere, mittlere Linie)
slowHIGH = highest(h,slowPeriod);
slowLOW = lowest(l,slowPeriod);
fastHIGH = highest(h,fastPeriod);
fastLOW = lowest(l,fastPeriod);
slowMID = (slowHIGH+slowLOW)/2;
fastMID = (fastHIGH+fastLOW)/2;


// Eindeutige Trends erkennen
LongCondition1 = (slowHIGH = fastHIGH);
ShortCondition1 = (slowLOW = fastLOW);


// Kanäle zeichnen
DrawLine (slowHIGH,"slowHIGH",StyleSolid,3,DarkGreen);
DrawLine (slowLOW,"slowLOW",StyleSolid,3,Red);
DrawLine (slowMID,"slowMID",StyleSolid,2,Blue);

DrawLine (fastHIGH,"fastHIGH",StyleSolid,2,DarkGreen);
DrawLine (fastLOW,"fastLOW",StyleSolid,2,Red);
DrawLine (fastMID,"fastMID",StyleSolid,1,Blue);


// Trends markieren - Export von Variablen für eigenständigen Indikator
Global::Trendvalue = 0;
if LongCondition1 then Global::Trendvalue = 10;
if ShortCondition1 then Global::Trendvalue = -10;



// --------------------------------------------------------------------------------
// End Of Code


// --------------------------------------------------------------------------------
// Project: Trenderkennung via 2fachem Highest/Lowest
// Darstellung des Trends in einem Binary Wave Indikator
// Versioning: 050303-01 / 0.01 alpha
// Author: nordie
// Functions: ./.
// --------------------------------------------------------------------------------

Meta: Synopsis ("KanTrend: Binary Wave Indikator" ),
ShortCode ("KanTrend BinWave"),
Author ("nordie@nordie.de"),
SubChart (true);

// --------------------------------------------------------------------------------

// Zeichnen
if (Global::Trendvalue > 0) then
DrawForest (0,Global::Trendvalue,"LONGTrendvalue0L","LONGTrendvalue1L",thin,DarkGreen,False);

if (Global::Trendvalue < 0) then
DrawForest (Global::Trendvalue,0,"LONGTrendvalue0S","LONGTrendvalue1S",thin,Red,False);

if (Global::Trendvalue = 0) then
DrawForest (-5,5,"LONGTrendvalue0N","LONGTrendvalue1N",thin,Blue,False);


// --------------------------------------------------------------------------------
// End Of Code
 
Paeda




Anmeldedatum: 02.03.2006
Beiträge: 305


Verfasst am: 22.03.2006, 10:17

Schau dir mal den VLX(Volatility Index) bei Tradesignal an. Ich finde diesen sehr interessant. Habe leider keinen Code gefunden, aber da kann man ja mal Rene Rose eine E-Mail schreiben...

 
Fisch


Anmeldedatum: 02.09.2005
Beiträge: 1641


Verfasst am: 22.03.2006, 10:47

Hier ist der Code aus TSe

Meta:
Synopsis( "Returns the trend following system working with SAR points" );

Inputs:
Price( NumericSeries ),
Period( NumericSimple ),
Factor( NumericSimple );

Variables:
first_run_range( True ), first_run_vlx( True ), sip( 0 ), sar( 0 ), next_sar( 0 ),
position_long( True ), result( 0 ), price_range( 0 ), smoothed_range( 0 );

If first_run_range Then Begin
first_run_range = False;
price_range = High - Low;
End Else Begin
price_range = MaxItems( High - Low, High - Price{1}, Price{1} - Low ); // [ für {
End;

smoothed_range = MEMA( price_range, Period );

If first_run_vlx And smoothed_range <> 0 Then Begin
first_run_vlx = False;
sip = Highest( Price, Period );
next_sar = sip - smoothed_range * factor;
sar = next_sar;
End Else Begin
sar = next_sar;
If position_long Then Begin
If Price < sar Then Begin
position_long = False;
sip = Price;
next_sar = sip + smoothed_range * factor;
End Else Begin
position_long = True;
sip = MaxItems( Price, sip );
next_sar = sip - smoothed_range * factor;
End
End Else Begin
If Price > sar Then Begin
position_long = True;
sip = Price;
next_sar = sip - smoothed_range * factor;
End Else Begin
position_long = False;
sip = MinItems( Price, sip );
next_sar = sip + smoothed_range * factor;
End
End
End;

VolaIndex = sar;

// *** Copyright SystemSoft GmbH ***
// *** www.tradesignal.com ***


Zuletzt bearbeitet von Fisch am 22.03.2006, 10:49, insgesamt einmal bearbeitet
 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 22.03.2006, 10:49

@Paeda, @Fisch

Danke, ich werde mir angucken.
 
wp


Anmeldedatum: 29.08.2005
Beiträge: 388


Verfasst am: 22.03.2006, 10:56


Vielleicht hilft dir das weiter: Es wird eine dynamische Länge verwendet. Ansonsten mal das Forum dort nach dem user amcan durchsuchen.

https://www.tradestation.com/Discussions/Topic.aspx?Topic_ID=16265&SearchTerm=&selMatch=1
 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 22.03.2006, 11:00

@wp

Danke, Amcan ist ein Schritt näher an was ich brauche. Mal gucken.
 
wp


Anmeldedatum: 29.08.2005
Beiträge: 388


Verfasst am: 22.03.2006, 11:08

Ich habe das so umgesetzt. Das wird für dich aber etwas zu "schnell und unrund" sein, wenn du einen KAMA nachbilden willst.

Die Inputs müssten auf jeden Fall höher gewählt werden, d.h. 20 und 50.



meta: Subchart(false),
Synopsis ( "steGD-dynLen" ),
ShortCode ( "ste-GD" );
inputs:

StatLength( 10 ), //Für Betrachtung ohne dynamische Länge
Mult(0.5), //Multiplikator für die ATR-Bänder
PeriodATR(10), //Input für die ATR-Länge
XLen(2), //Input für letzte Glättung
Bands(true), //Zeige Bänder
DynLen(true), //Verwende die dynamische Länge
ShowUPDN(false), //Zeige Auf- und Abwärtstrend
Len1(10), //Erster GD-Input für dynamische Länge
Len2(20), //Zweiter GD-Input für dynamische Länge
LenFactLen1(0.Cool; //Maximale Abweichung der neuen dynamischen




Variables:
Price ( close ),
counter ( 0 , 1 ),
num1 ( 0 , 1 ),
num2 ( 0 , 1 ),
sumBars ( 0 , 1 ),
sumSqrBars ( 0 , 1 ),
sumY ( 0 , 1 ),
sum1 ( 0 , 1 ),
sum2 ( 0 , 1 ),
m ( 0 , 1 ),
b ( 0 , 1 ),
LRValue ( 0 , 1 ),
ProjectionBar ( 0 , 1 ),
Period (0),
Verschiebung (0),
UpperBand (0),
LowerBand (0),
LRValue1 (0);

//Preis
price = ((O+H+L+2*C)/5);
{price=C}
//Statische Länge
If DynLen= false then Period = StatLength;

//Berechnung der dynamischen Länge
// Dynamische Länge aus https://www.tradestation.com/Discussions/Topic.aspx?Topic_ID=16265
If DynLen= true then begin

{===========================================================}
{+++++++++++++++++ START Immediate AVERAGE +++++++++++++++++}
Value1 = Xaverage( Price, Len1);
{++++++++++++++++++ END Immediate AVERAGE ++++++++++++++++++}
{===========================================================}
{++++++++++++++++++++ START DAY AVERAGE ++++++++++++++++++++}
Value2 = Xaverage( Price, Len2);
{++++++++++++++++++++++ END DAY AVERAGE ++++++++++++++++++++}
{===========================================================}

Value3 = (100 * (Value1 - Value2) / Value2);


Value4 = ((Len1+Len2)/2);

Value5 = 100*LinearRegSlope(Value3, Value4) ;

Value6 = 1 - Value5 ;

Value7 = Len1 * Value6 ; {New Len1}
Value8 = Len2 * Value6 ; {New Len2}



If Value7 >= Len1*(1+ LenFactLen1) then Period = Len1* (1+LenFactLen1) //Der maximale Abweischungsgrad nach oben wird eingschränkt
//Die neue Länge soll maximal um den Faktor LenFactLen1
//größer sein als die ursprüngliche Länge (default=80%)
else
If Value7 <= Len1* (1-LenFactLen1) then Period = maxitems (2,Len1* (1-LenFactLen1))
else Period = Value7;
end;




If Period <= 0 Then LRValue = 0;

sumBars = 0;
sumSqrBars = 0;


For counter = 0 to Period - 1 step 1 do begin

sumSqrBars = sumSqrBars + (Period-counter)*(Period-counter)*(Period-counter)*(Period-counter)*Price[counter];


sumBars = sumBars + (Period-counter)*(Period-counter)*(Period-counter)*(Period-counter);

end ;


{LRValue = m * (Period - 1 - ProjectionBar) + b;}

LRValue1=(sumSqrBars/sumBars);
LRValue=average(LRValue1,Xlen);


//Zeichne

if currentbar>2*Period then begin
drawline(LRValue,"STE-DYNLEN",stylesolid,3,yellow);

verschiebung= AvgTrueRange( PeriodATR );
UpperBand= LRValue+verschiebung*mult;
LowerBand= LRValue-verschiebung*mult;
if bands = true then begin
drawline(upperBand,"upperBand",stylesolid,3,blue);
drawline(LowerBand,"LowerBand",stylesolid,3,blue);
end;
If ShowUPDN=true then begin
if LRValue>=LRValue[ 1] then drawsymbol(LRValue,"up",symboltriangleup,6,green,green)
else drawsymbol(LRValue,"dn",symboltriangledown,6,red,red)
end;
end;


Zuletzt bearbeitet von wp am 22.03.2006, 11:10, insgesamt einmal bearbeitet
 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 22.03.2006, 11:18

@wp

Mit KAMA hat nicht direkt zu tun.
1. Ich wollte ein MACD mit KAMAs machen, und statt % Filter der Steigung die MACD benutzen.
2. Den adaptiven GD habe ich in einer Software gesehen, es gibt aber keine Infos darüber. In Seitwärtsphasen steigt die Kurve tatsächlich über die Bars.

- Wenn Du nichts zu tun hast(!?), bin ich neugierig wie ein MACD mit dem Amcan aussehen kann. Vermutlich müßte man zwei unterschiedliche Paare nehmen?
 
Fisch


Anmeldedatum: 02.09.2005
Beiträge: 1641


Verfasst am: 22.03.2006, 11:22

Hallo @WP,

Was macht die Funktion LinearRegSlope?
 
wp


Anmeldedatum: 29.08.2005
Beiträge: 388


Verfasst am: 22.03.2006, 11:51

@ swingman

Wenn man den Code einfach kopiert mit höheren weiteren Inputs, also Len1 = 6, Len2 =14 für den ersten GD und Len3 = 20 und Len4 = 45, für den zweiten dann sollte das funktionieren. Werde das heute abend mal probieren.

Allerdings habe ich festgestellt, dass es nicht unbedingt sinnvoll ist, zwei adaptive GDs zu nehmen. Zwei Juriks JMAs als MACD finde ich zB schlechter in den Singalausprägungen als ein normaler MACD.



@Fish

Das ist die Lineare Regression.

Funktion LinearRegSlope


inputs: Price( numericseries ), Length( numericsimple ) ;
variables: oLRSlope( 0 ), oLRAngle( 0 ), oLRIntercept( 0 ), oLRValue( 0 ) ;

Value1 = LinearReg( Price, Length, 0, oLRSlope, oLRAngle, oLRIntercept, oLRValue ) ;

LinearRegSlope = oLRSlope ;


und Funktion LinearReg


{ Linear Regression multiple-output function; see MULTIPLE-OUTPUT FUNCTIONS note
below }

inputs:
Price( numericseries ),
Length( numericsimple ), { Length > 1 }
TgtBar( numericsimple ), { use negative integer for future, positive for past }
oLRSlope( numericref ),
oLRAngle( numericref ),
oLRIntercept( numericref ), { left intercept, at vertical through
Price[ Length - 1 ] }
oLRValue( numericref ) ;

variables:
SumXY( 0 ),
SumY( 0 ),
SumX( 0 ),
SumXSqr( 0 ),
OneSixth( 1 / 6 ),
Divisor( 0 ) ;

if Length > 1 then
begin
SumX = Length * ( Length - 1 ) * .5 ;
SumXSqr = Length * ( Length - 1 ) * ( 2 * Length - 1 ) * OneSixth ;
Divisor = Square( SumX ) - Length * SumXSqr ;
SumXY = 0;
for Value1 = 0 to Length - 1
begin
SumXY = SumXY + Value1 * Price[Value1] ;
end ;
SumY = Summation( Price, Length ) ;

oLRSlope = ( Length * SumXY - SumX * SumY) / Divisor ;
oLRAngle = ArcTangent( oLRSlope ) ;
oLRIntercept = ( SumY - oLRSlope * SumX ) / Length ;
oLRValue = oLRIntercept + oLRSlope * ( Length - 1 + ExecOffset - TgtBar ) ;
LinearReg = 1 ;
end
else
LinearReg = -1 ;




Zuletzt bearbeitet von wp am 22.03.2006, 11:51, insgesamt einmal bearbeitet
 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 22.03.2006, 11:55

@wp

Zitat:

Allerdings habe ich festgestellt, dass es nicht unbedingt sinnvoll ist, zwei adaptive GDs zu nehmen. Zwei Juriks JMAs als MACD finde ich zB schlechter in den Singalausprägungen als ein normaler MACD.



Im Prinzip hast Du Recht.

Ich habe nur kurz mit 2 KAMAs (12/26) probiert: die Entrys sind ganz gut, weil der KAMA sich von der horizontalen Bewegung nach oben oder nach unten bewegt. Den Ausstieg muß man aber mit dem klassischen MACD machen.


Zuletzt bearbeitet von SwingManT am 22.03.2006, 11:55, insgesamt einmal bearbeitet

 
Paeda




Anmeldedatum: 02.03.2006
Beiträge: 305


Verfasst am: 22.03.2006, 12:02

Zitat:

SwingManT schrieb am 22.03.2006 12:55
@wp

Zitat:

Allerdings habe ich festgestellt, dass es nicht unbedingt sinnvoll ist, zwei adaptive GDs zu nehmen. Zwei Juriks JMAs als MACD finde ich zB schlechter in den Singalausprägungen als ein normaler MACD.



Im Prinzip hast Du Recht.

Ich habe nur kurz mit 2 KAMAs (12/26) probiert: die Entrys sind ganz gut, weil der KAMA sich von der horizontalen Bewegung nach oben oder nach unten bewegt. Den Ausstieg muß man aber mit dem klassischen MACD machen.




Einen Austieg mit dem MACD zu suchen, halte ich fuer keine gute Idee!
Es kommt sehr oft zu falschen signalen und danach kommt erst der eigentliche Run. Wenn der Macd ein exit anzeigt, wuerde ich die Posi immer mit Stopp absichern und laufen lassen.

 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 22.03.2006, 12:12

@Paeda

Praktisch schon. Es ging nur um eine visuelle Auswertung der Möglichkeiten MACD mit anderen GDs als mit EMAs zu berechnen.

 
wp


Anmeldedatum: 29.08.2005
Beiträge: 388


Verfasst am: 22.03.2006, 12:41

Die besten Erfahrungen mit MACD-Varianten habe ich mit Tickcharts gemacht. Man läßt die Einstellungen normal und verwendet die BollingerBänder mit einer Stdev. um etwas früher in den Markt zu kommen.

https://www.tradestation.com/Discussions/Topic.aspx?Topic_ID=22670&SearchTerm=&selMatch=1

Für die Signalfarbe nimmt man die Steigung eines einfachen Blau TSI.

Der "Trick" ist, dass die Anpassung nicht über die Länge/Inputs des Indikators, sondern über die Chartintervalle funktioniert. Bei mir zB mit einem 120 und einem 66 Tickchart im FDAX.

Ich hoffe man kann etwas erkennen, da die Bilder im Forum etwas kleiner zu werden scheinen als zuletzt.





 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 22.03.2006, 12:49

@wp

Wenn @Joram nich gleich fragt wie er mit dem Spinnennetz von Linien zurecht kommen kann, fresse ich meine Mütze!
 
Joram




Anmeldedatum: 17.08.2005
Beiträge: 2238


Verfasst am: 22.03.2006, 13:00

@Swingman
höffentlich gut bekommt Dir sie (die Mütze).
Auf meinem 5 min. Chart ist auch ziemlich dicht. Nur ich kann damit umgehen. Wenn WP mit seinem Chart ebenfalls umgehen kann, desto besser (für ihn und sein Konto).
Weil.... im Endeffekt ist nicht das wichtig welche Linien durchkreuzen ein Chart, nur das wie sich die Interpretation der Linien real auszahlt (auf dem Tradingkonto).
Wenn man das nur just for fun macht, dann ist ja ein nettes Hobby, wenn man aufgrund dessen traden muss, dann muss man das schon durchblicken. Da es sich nicht um mein Chart handelt, blicke ich das nicht durch, aber das spielt keine Rolle.
Übrigens, ich nutze 5 und 22 EMA. In 5 Min Bundchart. Ich halte das für ausreichend als MA.
_________________


 
von Bödefeld




Anmeldedatum: 11.11.2005
Beiträge: 725


Verfasst am: 22.03.2006, 23:51


Ein KAMA aus der Amibroker newsgroup bei Yahoo:

function KAMA(P,Periods)
{

Periods = IIF( Periods == 0, 14, Periods );

Direction = P - Ref(P,-periods);
Volatility = Sum(abs(P-Ref(P,-1)),periods);
Volatility =IIf(Volatility>0,Volatility,0.00001);
ER = abs(Direction/Volatility);
FastSC = 2/(2 + 1);//FastSC = 2/(2 + 1);//Standard
SlowSC = 2/(30 + 1);//SlowSC = 2/(30 + 1);
SSC = ER * (FastSC - SlowSC) + SlowSC;
Constant = SSC^2;
return AMA( P, Constant );
}


_________________


 
Neues Thema eröffnen   Neue Antwort erstellen    Market Trader Forum Foren-Übersicht -> Fragen, Antworten und Vorschläge

Tags: kama, sma, ema

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Berechnung der Pivots (Dax) 774 05.07.2006, 11:09
Keine neuen Beiträge Berechnung der Stärke 688 31.12.2005, 10:11
Keine neuen Beiträge Berechnung O-Up 479 28.10.2005, 17:19
Keine neuen Beiträge Berechnung Grid 622 23.09.2005, 23:23
Keine neuen Beiträge Berechnung des Pivotpoints, sowie R und S 718 29.08.2005, 13:39
 



[ Time: 0.5639s ][ Queries: 177 (0.0216s) ][ GZIP on - Debug on ]