Détection Auto Des Divergences - Forex Forum

Welcome Guest ( Log In | Register )

 
> Détection Auto Des Divergences
Rostam
post May 22 2007, 10:50
Post


Bonjour aux matafien(ne)s,

Je cherche un algorithme de détection automatique des divergences (entre les cours et un indicateur par exemple).

Est-ce que quelqu'un aurait déjà vu cela sur metatrader ou sur d'autres plateformes ?

Bonne journée

This post has been edited by Rostam: May 22 2007, 10:51
Arnaud
post May 22 2007, 13:48
Post


Pour Prorealtime (non testé)

CODE
  Rem ======= pour passage en short =============  
EntreeShort = 0  
EL = 0  
CoursIsLower = 0  
DivNeg = 0  
iCycle = 0  
  
Rem === le SAR est au dessus du dernier cours ====  
IF SAR[0.06,0.08,0.15] > Close Then  
    CoursIsLower = 1  
EndIF  
  
Rem ==== Recherche de divergences sur le repulse, comparées à la MM7 lissée ====  
myWilderMM7 = wilderAverage[7](Close)  
myWilderRepulse7 = wilderAverage[7](Repulse[3](close))  
dMM7 = (myWilderMM7 - myWilderMM7[7]) / 7  
dRepulse7 = (myWilderRepulse7 - myWilderRepulse7[7] ) / 7  
IF dRepulse7 < 0 And dMM7 > 0 Then  
    DivNeg = 1  
EndIf  
  
myCycle = wilderAverage[3]( Cycle(Close))  
Rem  Cycle décroissant  
If myCycle[1] > myCycle Then  
    iCycle = 1  
Endif  
  
if iCycle And DivNeg and coursIsLower Then  
    EL = 1  
Endif  
  
  
Return EL As "Go Short"  

source : http://www.pro-at.com/forums-bourse/bourse...ce-1-24174.html

Voir aussi ici : http://www.traders.com/Documentation/FEEDb...ips.html#wealth

CODE

This script requires a new study that we created specifically for this article. The "ZigZagSer" study plots zigzag lines for any price or indicator, using the specified reversal amount. Save the following script in the Wealth-Lab Developer "Studies" folder, and name it "ZigZagSer." [indent] procedure ZigZagSer( Series, Pane: integer; Reversal: float );
begin
  var LastPeak, LastTrough: float;
  var Bar, LastPeakBar, LastTroughBar: integer;
  LastPeak := 0.0;
  LastTrough := 0.0;
  LastPeakBar := 0;
  LastTroughBar := 0;
  for Bar := 0 to BarCount() - 1 do
  begin
    if Peak( Bar, Series, Reversal ) <> LastPeak then
    begin
      LastPeak := Peak( Bar, Series, Reversal );
      LastPeakBar := PeakBar( Bar, Series, Reversal );
      DrawLine( LastTroughBar, LastTrough, LastPeakBar, LastPeak, Pane, 009, #Thin );
    end;
    if Trough( Bar, Series, Reversal ) <> LastTrough then
    begin
      LastTrough := Trough( Bar, Series, Reversal );
      LastTroughBar := TroughBar( Bar, Series, Reversal );
      DrawLine( LastPeakBar, LastPeak, LastTroughBar, LastTrough, Pane, 900, #Thin );
    end;
  end;
end; [/indent] You can now run the following Wealth-Lab script to perform the divergence analysis on any stock or future:  {$I 'ZigZagSer'}
{ Script variables }
var Bar, M, MF, MPane, MFPane, C, CPane, n: integer;
var pb1, pb2, mb1, mb2, lastDrawn: integer;
var p1, p2, m1, m2: float;
{ Function to return the sign of a number }
function Sign( x: float ): integer;
begin
  if x >= 0 then
    Result := 1
  else
    Result := -1;
end;
{ Momentum Analysis Period }
const Period = 30;
{ Reversal values to detect peaks/troughs }
const PriceReversal = 7.0;
const MReversal = 2.0;
const MFReversal = 8.0;
{ Obtain Mom and fracMom, and get correlation }
M := MomentumSeries( #Close, Period );
MF := ROCSeries( #Close, Period );
C := CreateSeries;
for Bar := 100 to BarCount - 1 do
  @C[Bar] := Correlation( M, MF, Bar - 99, Bar );
{ Plot them all }
MPane := CreatePane( 100, false, true );
MFPane := CreatePane( 100, false, true );
CPane := CreatePane( 100, false, true );
HideVolume;
PlotSeriesLabel( M, MPane, #Blue, #Thick, 'Mom(30)' );
PlotSeriesLabel( MF, MFPane, #Red, #Thick, 'fracMom(30)' );
PlotSeriesLabel( C, CPane, #Green, #Thick, 'Correlation(100)' );
{ Plot Zig-Zags on Price and Momentum indicators }
ZigZagSer( #Close, 0, 7 );
SetPeakTroughMode( #AsPoint );
ZigZagSer( M, MPane, 2 );
ZigZagSer( MF, MFPane, 8 );
{ Perform Divergence Analysis }
for Bar := 100 to BarCount - 1 do
begin
{ Divergence between Price and Mom - tops }
  SetPeakTroughMode( #AsPercent );
  pb1 := PeakBar( Bar, #Close, 7 );
  pb2 := PeakBar( pb1, #Close, 7 );
  p1 := Peak( Bar, #Close, 7 );
  p2 := Peak( pb1, #Close, 7 );
  SetPeakTroughMode( #AsPoint );
  mb1 := PeakBar( Bar, M, 2 );
  mb2 := PeakBar( mb1, M, 2 );
  m1 := Peak( Bar, M, 2 );
  m2 := Peak( mb1, M, 2 );
  if ( Abs( pb1 - mb1 ) < 4 ) and ( Abs( pb2 - mb2 ) < 4 ) then
  begin
    if Sign( p1 - p2 ) <> Sign( m1 - m2 ) then
    begin
      if pb1 <> lastDrawn then
      begin
        lastDrawn := pb1;
        DrawLine( pb1, p1 * 1.01, pb2, p2 * 1.01, 0, #Blue, #Thick );
        DrawLine( mb1, m1 + 1, mb2, m2 + 1, MPane, #Blue, #Thick );
        for n := pb2 to pb1 do
          SetPaneBackgroundColor( n, MPane, #RedBkg );
      end;
    end;
  end;
{ Divergence between Price and fracMom - bottoms }
  SetPeakTroughMode( #AsPercent );
  pb1 := TroughBar( Bar, #Close, 7 );
  pb2 := TroughBar( pb1, #Close, 7 );
  p1 := Trough( Bar, #Close, 7 );
  p2 := Trough( pb1, #Close, 7 );
  SetPeakTroughMode( #AsPoint );
  mb1 := TroughBar( Bar, MF, 8 );
  mb2 := TroughBar( mb1, MF, 8 );
  m1 := Trough( Bar, MF, 8 );
  m2 := Trough( mb1, MF, 8 );
  if ( Abs( pb1 - mb1 ) < 4 ) and ( Abs( pb2 - mb2 ) < 4 ) then
  begin
    if Sign( p1 - p2 ) <> Sign( m1 - m2 ) then
    begin
      if pb1 <> lastDrawn then
      begin
        lastDrawn := pb1;
        DrawLine( pb1, p1 * 0.99, pb2, p2 * 0.99, 0, #Red, #Thick );
        DrawLine( mb1, m1 - 2, mb2, m2 - 2, MFPane, #Red, #Thick );
        for n := pb2 to pb1 do
          SetPaneBackgroundColor( n, MFPane, #RedBkg );
      end;
    end;
  end;
end;

Rostam
post May 22 2007, 15:09
Post


Merci beaucoup Arnaud

Reply to this topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

> Similar Topics

    Topic Title Replies Topic Starter Views Last Action
No New Posts   2 kiki83 2,098 20th December 2005 - 20:55
Last post by: kiki83
No New Posts   0 kiki83 1,769 20th December 2005 - 22:33
Last post by: kiki83
No New Posts   2 kiki83 2,037 21st December 2005 - 7:50
Last post by: kiki83
No New Posts   8 danu 3,145 23rd January 2006 - 18:16
Last post by: Maxime
No New Posts   9 Goldy 4,267 27th January 2006 - 20:24
Last post by: Goldy


Lo-Fi Version: Détection Auto Des Divergences - Forex Forum