Bonjour,
Je souhaite utiliser le Repulse d\\\'Eric Lefort avec Metatrader. Quelqu\\\'un sait-il si cet indicateur est programm
bonjour à tous,
voici les codes pour metatrader mq4: //---------------------------------------------------------------------------------------------------- // Repulse //---------------------------------------------------------------------------------------------------- vars: ZeroLine(0), Repulse(0), ForceHaussiere(0), ForceBaissiere(0); ForceHaussiere = XAverage( ((3*C) - (2*L)-O) / C * 100, 5); ForceBaissiere = XAverage( (O + (2*H)-(3*C)) / C * 100, 5); Repulse = ForceHaussiere-ForceBaissiere ; Plot1( Repulse, "Repulse" ); Plot2( ZeroLine, "Zero Line"); //---------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------- // Repulse(x) //---------------------------------------------------------------------------------------------------- input: Length(5); vars: Repulse(0), ForceHaussiere(0), ForceBaissiere(0); ForceHaussiere = XAverage( ((3*C) - (2*lowest(L, Length))-O[Length]) / C * 100, 5*Length); ForceBaissiere = XAverage( (O[Length] + (2*highest(H, Length))-(3*C)) / C * 100, 5*Length); Repulse = ForceHaussiere-ForceBaissiere ; Plot1( Repulse, "Repulse(x)" ); //---------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------- // STPMT //---------------------------------------------------------------------------------------------------- inputs: Length(9), OverSold( 20 ), OverBought( 80 ) ; variables: STPMT(0), MM_STPMT(0); STPMT = (4.1*SlowKCustomOrig(H, L, C, 5, 3) + 2.5*SlowKCustomOrig(H, L, C, 14, 3) + SlowKCustomOrig(h, L, C, 45, 14) + 4*SlowKCustomOrig(H, L, C, 75, 20))/11.6; MM_STPMT = Average(STPMT, Length); Plot1( STPMT, "STPMT" ) ; Plot2( MM_STPMT, "MM_STPMT" ) ; Plot3( OverBought, "OverBot" ) ; Plot4( OverSold, "OverSld" ) ; //---------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------- // Cycle //---------------------------------------------------------------------------------------------------- inputs: Length(9); vars: STPMT(0), Cycle(0); Value1 = SlowKCustomOrig(H, L, C, 5, 3); Value2 = SlowKCustomOrig(H, L, C, 14, 3); Value3 = SlowKCustomOrig(h, L, C, 45, 14); Value4 = SlowKCustomOrig(H, L, C, 75, 20); STPMT = ((4.1*Value1)+(2.5*Value2)+(Value3)+(4*Value4))/11.6; Cycle = STPMT - AverageFC( STPMT, Length ); Cycle = STPMT - AverageFC( STPMT, Length ); Plot1( Cycle, "Cycle" ); //----------------------------------------------------------------------------------------------------
merci à toi !
mais..il doit en manquer des bouts, j'ai des erreurs de compilation...à suivre !
édité le : 05-05-2008 09:38:10correze for ever !
Je n'ai pas l'impression que ce soit du mq4....
Entre temps j'ai trouvé le code suivant qui fonctionne : //+------------------------------------------------------------------+ //| Repulse.mq4 | //| Anaphrais | //| | //+------------------------------------------------------------------+ #property copyright "Anaphrais" #property link "" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Red //---- buffers double ExtMapBuffer1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); SetLevelValue(0,0); SetLevelStyle(STYLE_DOT,0,White); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { double forcehaussiere=0 ,forcebaissiere=0; for(int i=300;i>=0;i--) { forcehaussiere=iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,i)*(((3*Close)-(2*Low)-Open)/Close*100); forcebaissiere=iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,i)*((Open+(2*High)-(3*Close))/Close*100); ExtMapBuffer1=(forcehaussiere-forcebaissiere); } //---- //---- return(0); } //+------------------------------------------------------------------+
édité le : 07-06-2008 01:11:04
Voici un repulse pour Metatrader : les périodes par défaut sont 1, 5, 15 (et modifiables bien entendu).
C'est mon premier indicateur pour Metatrader, alors d'avance merci pour toutes vos remarques, y compris des suggestion d'optimisation. //+------------------------------------------------------------------+ //| Repulse.mq4 | //| FCognet | //| | //+------------------------------------------------------------------+ #property copyright "Eric Lefort" #property link "http://www.pro-at.com" #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Gray #property indicator_color2 Yellow #property indicator_color3 Cyan //---- input parameters extern int RepulsePeriod1=1; extern int RepulsePeriod2=5; extern int RepulsePeriod3=15; //---- buffers double RepulseBuffer1[]; double RepulseBuffer2[]; double RepulseBuffer3[]; double PosBuffer[]; double NegBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; short_name="Repulse("+RepulsePeriod1+", "+RepulsePeriod2+", "+RepulsePeriod3+")"; IndicatorShortName(short_name); //---- indicators IndicatorBuffers(5); SetIndexBuffer(0,RepulseBuffer1); SetIndexBuffer(1,RepulseBuffer2); SetIndexBuffer(2,RepulseBuffer3); SetIndexBuffer(3,PosBuffer); SetIndexBuffer(4,NegBuffer); SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_LINE); SetIndexStyle(2,DRAW_LINE); SetIndexStyle(3,DRAW_NONE); SetIndexStyle(4,DRAW_NONE); SetLevelValue(0,0); SetLevelStyle(STYLE_DOT,0,DimGray); //---- return(0); } //+------------------------------------------------------------------+ //| iteration function | //+------------------------------------------------------------------+ int start() { double forceHaussiere, forceBaissiere; int index = 0; int counted_bars=IndicatorCounted(); int limit = Bars - counted_bars; // Repulse1 for(index=0;index<Bars;index++) { PosBuffer[index] = ((((3*Close[index])-(2*getLow(index, RepulsePeriod1))-Open[index])/Close[index])*100); NegBuffer[index] = (((Open[index]+(2*getHigh(index, RepulsePeriod1))-(3*Close[index]))/Close[index])*100); } for(index=0;index<limit;index++) { forceHaussiere=iMAOnArray(PosBuffer, 0, RepulsePeriod1 * 5, 0, MODE_EMA, index); forceBaissiere=iMAOnArray(NegBuffer, 0, RepulsePeriod1 * 5, 0, MODE_EMA, index); RepulseBuffer1[index]=forceHaussiere-forceBaissiere; } // Repulse2 for(index=0;index<Bars;index++) { PosBuffer[index] = ((((3*Close[index])-(2*getLow(index, RepulsePeriod2))-Open[index+RepulsePeriod2])/Close[index])*100); NegBuffer[index] = (((Open[index+RepulsePeriod2]+(2*getHigh(index, RepulsePeriod2))-(3*Close[index]))/Close[index])*100); } for(index=0;index<limit;index++) { forceHaussiere=iMAOnArray(PosBuffer, 0, RepulsePeriod2 * 5, 0, MODE_EMA, index); forceBaissiere=iMAOnArray(NegBuffer, 0, RepulsePeriod2 * 5, 0, MODE_EMA, index); RepulseBuffer2[index]=forceHaussiere-forceBaissiere; } // Repulse3 for(index=0;index<Bars;index++) { PosBuffer[index] = ((((3*Close[index])-(2*getLow(index, RepulsePeriod3))-Open[index+RepulsePeriod3])/Close[index])*100); NegBuffer[index] = (((Open[index+RepulsePeriod3]+(2*getHigh(index, RepulsePeriod3))-(3*Close[index]))/Close[index])*100); } for(index=0;index<limit;index++) { forceHaussiere=iMAOnArray(PosBuffer, 0, RepulsePeriod3 * 5, 0, MODE_EMA, index); forceBaissiere=iMAOnArray(NegBuffer, 0, RepulsePeriod3 * 5, 0, MODE_EMA, index); RepulseBuffer3[index]=forceHaussiere-forceBaissiere; } return(0); } //+------------------------------------------------------------------+ double getLow(int from, int period) { double low = 9999999999; for (int index=from; index<=from+period; index++) { if (low > Low[index]) { low = Low[index]; } } return (low); } double getHigh(int from, int period) { double high = 0; for (int index=from; index<=from+period; index++) { if (high < High[index]) { high = High[index]; } } return (high); }
édité le : 07-06-2008 22:00:54
Voici le STPMT.
A priori c'est ça, mais ça serait vraiment bien si quelqu'un pouvait comparer avec une implémentation sûre du STPMT sur une autre plate-forme. //+------------------------------------------------------------------+ //| STPMT.mq4 | //| FCognet | //| | //+------------------------------------------------------------------+ #property copyright "Eric Lefort" #property link "http://www.pro-at.com" #property indicator_separate_window #property indicator_buffers 6 #property indicator_color1 DimGray #property indicator_color2 DimGray #property indicator_color3 DimGray #property indicator_color4 DimGray #property indicator_color5 Blue #property indicator_color6 Red //---- buffers double Buffer1[]; double Buffer2[]; double Buffer3[]; double Buffer4[]; double STPMT[]; double STPMT_MA[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; short_name="STPMT"; IndicatorShortName(short_name); //---- indicators IndicatorBuffers(6); SetIndexBuffer(0, Buffer1); SetIndexBuffer(1, Buffer2); SetIndexBuffer(2, Buffer3); SetIndexBuffer(3, Buffer4); SetIndexBuffer(4, STPMT); SetIndexBuffer(5, STPMT_MA); SetIndexStyle(0, DRAW_LINE, STYLE_DOT); SetIndexStyle(1, DRAW_LINE, STYLE_DOT); SetIndexStyle(2, DRAW_LINE, STYLE_DOT); SetIndexStyle(3, DRAW_LINE, STYLE_DOT); SetIndexStyle(4, DRAW_LINE, EMPTY, 1); SetIndexStyle(5, DRAW_LINE, EMPTY, 1); //---- return(0); } //+------------------------------------------------------------------+ //| iteration function | //+------------------------------------------------------------------+ int start() { int index = 0; int counted_bars=IndicatorCounted(); int limit = Bars - counted_bars; for(index=0;index<limit;index++) { Buffer1[index] = iStochastic( NULL, 0, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, index); Buffer2[index] = iStochastic( NULL, 0, 14, 3, 3, MODE_SMA, 0, MODE_SIGNAL, index); Buffer3[index] = iStochastic( NULL, 0, 45, 14, 3, MODE_SMA, 0, MODE_SIGNAL, index); Buffer4[index] = iStochastic( NULL, 0, 75, 20, 3, MODE_SMA, 0, MODE_SIGNAL, index); STPMT[index] = (4.1 * Buffer1[index] + 2.5 * Buffer2[index] + Buffer3[index] + 4 * Buffer4[index]) / 11.6; } for(index=0;index<limit;index++) { STPMT_MA[index] = iMAOnArray(STPMT, 0, 9, 0, MODE_SMA, index); } return(0); }
édité le : 07-06-2008 14:57:44
Et enfin Cycles
//+------------------------------------------------------------------+ //| Cycles.mq4 | //| FCognet | //| | //+------------------------------------------------------------------+ #property copyright "Eric Lefort" #property link "http://www.pro-at.com" #property indicator_separate_window #property indicator_buffers 7 #property indicator_color1 Yellow //---- buffers double Cycle[]; double Buffer1[]; double Buffer2[]; double Buffer3[]; double Buffer4[]; double STPMT[]; double STPMT_MA[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; short_name="Cycles"; IndicatorShortName(short_name); //---- indicators IndicatorBuffers(7); SetIndexBuffer(0, Buffer1); SetIndexBuffer(1, Buffer2); SetIndexBuffer(2, Buffer3); SetIndexBuffer(3, Buffer4); SetIndexBuffer(4, STPMT); SetIndexBuffer(5, STPMT_MA); SetIndexBuffer(6, Cycle); SetIndexStyle(0, DRAW_LINE, EMPTY, 1); SetIndexStyle(1, DRAW_NONE); SetIndexStyle(2, DRAW_NONE); SetIndexStyle(3, DRAW_NONE); SetIndexStyle(4, DRAW_NONE); SetIndexStyle(5, DRAW_NONE); SetIndexStyle(6, DRAW_NONE); //---- return(0); } //+------------------------------------------------------------------+ //| iteration function | //+------------------------------------------------------------------+ int start() { int index = 0; int counted_bars=IndicatorCounted(); int limit = Bars - counted_bars; for(index=0;index<limit;index++) { Buffer1[index] = iStochastic( NULL, 0, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, index); Buffer2[index] = iStochastic( NULL, 0, 14, 3, 3, MODE_SMA, 0, MODE_SIGNAL, index); Buffer3[index] = iStochastic( NULL, 0, 45, 14, 3, MODE_SMA, 0, MODE_SIGNAL, index); Buffer4[index] = iStochastic( NULL, 0, 75, 20, 3, MODE_SMA, 0, MODE_SIGNAL, index); STPMT[index] = (4.1 * Buffer1[index] + 2.5 * Buffer2[index] + Buffer3[index] + 4 * Buffer4[index]) / 11.6; } for(index=0;index<limit;index++) { STPMT_MA[index] = iMAOnArray(STPMT, 0, 9, 0, MODE_SMA, index); Cycle[index] = STPMT[index] - STPMT_MA[index]; } return(0); }
édité le : 07-06-2008 14:59:48
il y a une erreur dans le code de Cycles dans cette file.
J'ai créé une autre file pour l'implémentation sur Metatrader des indicateurs d'Eric Lefort. http://www.pro-at.com/forums-bourse/bourse-1-27352.html
|
Invest-AT,
l'analyse technique au service de l'investissement actif.
Analyses, forums et signaux AT. |
Créer votre blog gratuitement avec TradersBlog, plateforme de blogs pour traders. |
Trading School, modules de formation à la bourse en ligne, glossaire de la bourse ... |





