nichtsnutz Posted September 27, 2009 Report Share Posted September 27, 2009 Ich habe mir die Tage mal das Buch von Philipp Kahler angeschaut und versucht die Swing High Low Punkte nach seiner Definition zu programmieren. Swing High = ein Hoch umgeben von zwei tieferen Hochs und das zweite tiefere Hoch ist kein inside DaySwing Low = genau anders rum Seine Outside Bar Regel habe ich noch nicht drin. Mal schauen was man damit machen kann. Es ist ein erster Ansatz, Anregungen etc. sind willkommen. _SECTION_BEGIN("Price"); 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", ParamColor("Color", colorGrey40 ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); _SECTION_END(); GraphZOrder = 1; GraphXSpace = 5; swingLow = 0; swingHigh = 0; UpDown = 0; // 1 = next is High, 2 = next is Low tmpHighMarker = 0; tmpLowMarker = 0; LowLine = 0; HighLine = 0; for(i=10;i<BarCount;i++) { //printf("---Loop %g---\n",i); InsideDay = L[i] >= L[i-1] AND H[i] <= H[i-1]; if( (UpDown == 0 OR UpDown == 1) AND H[i-2] <= H[i-1] AND H[i-1] >= H[i] AND NOT tmpHighMarker[i-1]) { if(InsideDay) { tmpHighMarker[i-1] = 1; tmpCounter = 0; } else { swingHigh[i-1] = 1; UpDown = 2; HighLine[i-1] = H[i-1]; //printf("set new high at bar %g\n",i-1); } } if( (UpDown == 0 OR UpDown == 2) AND L[i-2] >= L[i-1] AND L[i-1] <= L[i] AND NOT tmpLowMarker[i-1] ) { if(InsideDay) { tmpLowMarker[i-1] = 1; tmpCounter = 0; } else { swingLow[i-1] = 1; UpDown = 1; UpDownChange = 1; LowLine[i-1] = L[i-1]; } } if(tmpHighMarker[i-1]) { tmpCounter++; if(H[i] > H[i-tmpCounter]) { for(j=tmpCounter;j>0;j--) tmpHighMarker[i-j] = 0; } else { if(L[i] < L[i-tmpCounter]) { swingHigh[i-tmpCounter] = 1; HighLine[i-tmpCounter] = H[i-tmpCounter]; //printf("initial change high at bar %g value %g\n",i-tmpCounter,H[i-tmpCounter]); for(j=tmpCounter;j>0;j--) { tmpHighMarker[i-j] = 0; if(j == tmpCounter) continue; HighLine[i-j] = HighLine[i-j-1]; //printf("change high at bar %g value %g\n",i-j,HighLine[i-j-1]); } UpDown = 2; } else { tmpHighMarker[i] = 1; } } } if(tmpLowMarker[i-1]) { tmpCounter++; if(L[i] < L[i-tmpCounter]) { for(j=tmpCounter;j>0;j--) tmpLowMarker[i-j] = 0; } else { if(H[i] > H[i-tmpCounter]) { swingLow[i-tmpCounter] = 1; LowLine[i-tmpCounter] = L[i-tmpCounter]; for(j=tmpCounter;j>0;j--) { tmpLowMarker[i-j] = 0; if(j == tmpCounter) continue; LowLine[i-j] = LowLine[i-j-1]; } UpDown = 1; } else { tmpLowMarker[i] = 1; } } } HighLine[i] = HighLine[i-1]; LowLine[i] = LowLine[i-1]; // printf("set high bar %g value %g\n",i,HighLine[i-1]); // if(H[i] > HighLine[i]) // HighLine[i] = Null; // printf("---End Loop %g---\n",i); } Plot(HighLine,"h",colorBlue); Plot(LowLine,"l",colorGreen); PlotShapes(shapeSmallUpTriangle*swingLow,colorYellow,0,Low-(Low*0.0005)); PlotShapes(shapeSmallDownTriangle*swingHigh,colorYellow,0,High+(High*0.0005)); Quote Link to comment Share on other sites More sharing options...
ibelieve Posted September 28, 2009 Report Share Posted September 28, 2009 Mal schauen was man damit machen kann. Es ist ein erster Ansatz, Anregungen etc. sind willkommen. Warte mal bis duncan wieder da ist.Der hat schon in die gleiche Richtung gearbeitet. Habt Ihr ja fast die gleichen Punkte. Quote Link to comment Share on other sites More sharing options...
nichtsnutz Posted September 28, 2009 Author Report Share Posted September 28, 2009 Warte mal bis duncan wieder da ist.Der hat schon in die gleiche Richtung gearbeitet. Habt Ihr ja fast die gleichen Punkte. Jo da sind bestimmt noch ein paar kleine bugs drin. Werde das die Tage noch weiter verbessern. Quote Link to comment Share on other sites More sharing options...
duncan Posted October 4, 2009 Report Share Posted October 4, 2009 Jo da sind bestimmt noch ein paar kleine bugs drin. Werde das die Tage noch weiter verbessern.Hi, ich würde mir dann gern deine letzte Version ansehen und gegen unsere vorhandene gegen prüfen ... also bis später Gruß Duncan Quote Link to comment Share on other sites More sharing options...
nichtsnutz Posted October 4, 2009 Author Report Share Posted October 4, 2009 Hallo Duncan, habe am Algorithmus noch nichts geändert. Aber noch einen Zähler eingefügt wann das letzte Hoch/Tief war, um dann z.B. eine 123 Umkehr zu erkennen. Gruss nn swing2.afl Quote Link to comment Share on other sites More sharing options...
nichtsnutz Posted October 12, 2009 Author Report Share Posted October 12, 2009 Hallo duncan,könntest du mir mal ein Bild vom Infineon Chart mit deiner Version reinstellen ? Dann könnte ich mal schauen wie du mit den Ouside Days umgehst. Anbei mal ein Chart, in dem die Outside Days mit einem kleinen Kreis markiert sind. Würden beispielsweise die Bars an Punkt 1 und 2 zu neuen SH und SL werden ? Gruß nn Quote Link to comment Share on other sites More sharing options...
ibelieve Posted October 12, 2009 Report Share Posted October 12, 2009 Ich nehme an er hat das gleiche,weiss nicht so genau ob Sie da schon weiter sind. Mir fallen 4 Punkte auf die anders sind. hast Du ,2 Duncan Quote Link to comment Share on other sites More sharing options...
nichtsnutz Posted October 12, 2009 Author Report Share Posted October 12, 2009 Ich nehme an er hat das gleiche,weiss nicht so genau ob Sie da schon weiter sind. Mir fallen 4 Punkte auf die anders sind. hast Du ,2 Duncan Ich danke Dir für deine Mühe. Dann werd ich mal weiter schauen wie ich das umsetze. Gruß nn Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.