Demande de conversion système MAMA Amibroker
Forums › ProRealTime forum Français › Support ProBuilder › Demande de conversion système MAMA Amibroker
- This topic has 11 replies, 2 voices, and was last updated 5 years ago by carlvan.
Tagged: drawcandle, FAMA, MAMA
-
-
11/12/2018 at 1:18 PM #84687
Bonjour, et merci d’avance pour toute aide! Le but ici est de convertir
1: la formule AFL (Amibroker) de l’indicateur MAMA/FAMA, qui est plus réactive, mais très proche, de la version ProRealCode
2: les signaux d’achats compris dans la formule, qui génèrent les flèches achat-vente sur le graphique
Demande additionnelle: j’aimerais automatiser le système pour du trading automatique, ce serait formidable d’avoir ça en plus
Note: le système est “stop and reverse”, ce qui signifie tout le temps dans le marché: un signal “sell” signifie une sortie de la position longue et une entrée short.
Voici la formule AFL:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364_SECTION_BEGIN("MAMA");SetPositionSize(500, spsShares);prc = ( High + Low ) / 2;fastlimit = 0.5;slowlimit = 0.05;pi=4*atan(1);RTD=180/pi;DTR=pi/180;Cyclepart=Param("Alpha",0.5,0.1,1,0.1);Smooth[0] = Period = Detrender[0] = I1[0] = Q1[0] = 0;phase[0]=deltaphase[0]=MAMA[0]=FAMA[0]=0;for ( i = 6; i < BarCount; i++ ){Smooth[i] = ( 4 * prc[i] + 3 * prc[i-1] + 2 * prc[i-2] + prc[i-3] ) / 10;AmpCorr[i] = 0.075 * Period[i-1] + 0.54;Detrender[i] = ( 0.0962 * Smooth[i] + 0.5769 * Smooth[i-2] - 0.5769 * Smooth[i-4] - 0.0962 * Smooth[i-6] ) * AmpCorr[i];Q1[i] = ( 0.0962 * Detrender[i] + 0.5769 * Detrender[i-2] - 0.5769 * Detrender[i-4] - 0.0962 * Detrender[i-6] ) * AmpCorr[i];I1[i] = Detrender[i-3];if (I1[i] != 0) phase[i] = DTR*360/atan(q1[i]/I1[i]);deltaphase[i]=phase[i-1]-phase[i];if (deltaphase[i] <1) deltaphase[i]=1;alpha[i]=fastlimit[i]/deltaphase[i];if (alpha[i] < slowlimit[i]) alpha[i]=slowlimit[i]; MAMA[i]=alpha[i] * prc [i] +(1-alpha[i])*MAMA[i-1]; FAMA[i]=Cyclepart*alpha[i] * prc [i] +(1-Cyclepart*alpha[i])*FAMA[i-1]; } Plot( MAMA, "MAMA", colorTurquoise, styleLine|styleThick ); Plot( FAMA, "FAMA", colorYellow, styleLine|styleThick ); PlotOHLC(O,H,L,C,"MAMA",IIf(MAma>fama,colorblue,colorRed),styleBar|styleThick,0,0,0,0,2);_SECTION_END();_SECTION_BEGIN("SYSTEM");BuySetupValue=ValueWhen(Cross(MAMA,FAMA),H,1);SellsetupValue=ValueWhen(Cross(FAMA,MAMA),L,1);Buysetup =Cross(MAMA,FAMA) ;Sellsetup = Cross(FAMA,MAMA);Longa = Flip(Buysetup,Sellsetup);shrta = Flip(Sellsetup,Buysetup);Buy=Longa AND Cross(C,BuySetupValue);Sell=shrta AND Cross(SellsetupValue,C);Buy = ExRem(Buy,Sell);Sell = ExRem(Sell,Buy);Short=Sell;Cover=Buy;t1= Flip(Buy,Sell);t2= Flip(Sell,Buy);BPrice=ValueWhen(t1 AND Ref(t1,-1)==0,C,1);SPrice=ValueWhen(t2 AND Ref(t2,-1)==0,C,1);GraphXSpace = 5;dist = 1.5*ATR(20);for( i = 0; i < BarCount; i++ ){if( Buy[i] ) PlotText( "" + C[ i ], i, L[ i ]-dist[i], colorLime );if( Sell[i] ) PlotText( "" + C[ i ], i, H[ i ]+dist[i], colorYellow );}_SECTION_END();AlertIf(Buy,"SOUND H:\\Users\\Carl\\Documents\\Enregistrements audio\\Buy NQ.m4a","BUY NQ",1 );AlertIf(Sell,"SOUND H:\\Users\\Carl\\Documents\\Enregistrements audio\\Sell NQ.m4a","SELL NQ",2 );PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);_SECTION_END();Merci encore pour toute aide,
Carl V.
11/12/2018 at 4:07 PM #84697Voilà déjà l’indicateur des 2 moyennes mobiles, y compris coloration des chandeliers telle que dans le code Amibroker:
1234567891011121314151617181920212223242526272829303132333435363738394041424344Period=20prc = ( High + Low ) / 2fastlimit = 0.5slowlimit = 0.05pi=4*atan(1)//RTD=180/piDTR=pi/180Cyclepart=0.1if barindex>6 thenSmooth = ( 4 * prc + 3 * prc[1] + 2 * prc[2] + prc[3] ) / 10AmpCorr = 0.075 * Period[1] + 0.54Detrender = ( 0.0962 * Smooth + 0.5769 * Smooth[2] - 0.5769 * Smooth[4] - 0.0962 * Smooth[6] ) * AmpCorrQ1 = ( 0.0962 * Detrender + 0.5769 * Detrender[2] - 0.5769 * Detrender[4] - 0.0962 * Detrender[6] ) * AmpCorrI1 = Detrender[3]if (I1 <> 0) thenphase = DTR*360/atan(q1/I1)endifdeltaphase=phase[1]-phaseif (deltaphase <1) thendeltaphase=1endifalpha=fastlimit/deltaphaseif (alpha < slowlimit) thenalpha=slowlimitendifMAMA=alpha * prc +(1-alpha)*MAMA[1]FAMA=Cyclepart*alpha * prc +(1-Cyclepart*alpha)*FAMA[1]endifif MAMA>FAMA thenr=0g=0b=255elser=255g=0b=0endifdrawcandle(open,high,low,close) coloured(r,g,b)return MAMA coloured(0,245,255) as "MAMA", FAMA coloured(255,255,0) as "FAMA"1 user thanked author for this post.
11/12/2018 at 7:55 PM #8470711/12/2018 at 8:13 PM #84711Cher Nicolas, ce qui est curieux c’est que lorsque je mets côte à côte les 2 graphes (amibroker et PRT, avec votre code) avec Nasdaq 2′, les courbes MAMA sont similaires, mais pas du tout la FAMA, qui ne colle pas au MAMA contrairement à la version Amibroker (voir graphe). Pourtant, j’ai relu votre code et il semble effectivement parfaitement calqué sur l’AFL. Bizarre.
11/13/2018 at 8:27 AM #8474111/13/2018 at 1:17 PM #8475711/15/2018 at 12:02 PM #84910Cher Nicolas, as-tu réussi à convertir les signaux achat/vente pour le MAMA/FAMA indicator? Entre temps, j’ai découvert ton code pour ALMA hi-lo: excellent pour l’intraday, très réactif. Merci de partager ce travail intensif et créatif.
11/15/2018 at 12:34 PM #84914et voilà ! ci-dessous le code de la stratégie, achat/vente selon les croisements de ces 2 moyennes mobiles :
12345678910111213141516171819202122232425262728293031323334353637383940defparam cumulateorders=falsePeriod=20prc = ( High + Low ) / 2fastlimit = 0.5slowlimit = 0.05pi=4*atan(1)//RTD=180/piDTR=pi/180Cyclepart=0.1if barindex>6 thenSmooth = ( 4 * prc + 3 * prc[1] + 2 * prc[2] + prc[3] ) / 10AmpCorr = 0.075 * Period[1] + 0.54Detrender = ( 0.0962 * Smooth + 0.5769 * Smooth[2] - 0.5769 * Smooth[4] - 0.0962 * Smooth[6] ) * AmpCorrQ1 = ( 0.0962 * Detrender + 0.5769 * Detrender[2] - 0.5769 * Detrender[4] - 0.0962 * Detrender[6] ) * AmpCorrI1 = Detrender[3]if (I1 <> 0) thenphase = DTR*360/atan(q1/I1)endifdeltaphase=phase[1]-phaseif (deltaphase <1) thendeltaphase=1endifalpha=fastlimit/deltaphaseif (alpha < slowlimit) thenalpha=slowlimitendifMAMA=alpha * prc +(1-alpha)*MAMA[1]FAMA=Cyclepart*alpha * prc +(1-Cyclepart*alpha)*FAMA[1]endifif not longonmarket and MAMA crosses over FAMA thenbuy at marketendifif not shortonmarket and MAMA crosses under FAMA thensellshort at marketendifil n’y pas de stoploss / takeprofit.
11/15/2018 at 12:35 PM #8491511/15/2018 at 1:31 PM #84927Bonjour à nouveau nicolas. Je me permets de revenir vers toi concernant le code car il y a encore une petite différence avec le code original AFL: dans ce code, il faut effectivement que MAMA crosses over FAMA, ET qu’il y ait ensuite un close > que le high de cette bar “MAMA cross FAMA”.
En fait, la bar “MAMA cross FAMA” est la bar de setup et il faut ensuite qu’elle soit cassée en clôture. Je ne maîtrise pas assez (c’est peu dire!) le language Prorealcode que pour ajouter cette condition. Merci pour toute aide complémentaire.
11/15/2018 at 3:25 PM #84935On peut essayer comme ceci:
123456if not longonmarket and MAMA[1] crosses over FAMA[1] and Close>High[1] thenbuy at marketendifif not shortonmarket and MAMA[1] crosses under FAMA[1] and close<Low[1] thensellshort at marketendif11/15/2018 at 3:35 PM #84936 -
AuthorPosts
Find exclusive trading pro-tools on