Algorithm built by @ebous64 around the base indicator established by PRC SuperBandPass
In Incubation since December 2021. Not tested in real life.
Long on filter crossing above its -RMS line
Short on filter crossing below its RMS line
Long position output when filter passes below RMS, or below -RMS, false input signal
Short position output when filter passes above -RMS or above RMS (meaning false input signal)
Less logical additions possible: Short only (or complementary) at -RMS (long) and RMS (short) line crossings
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
// **************************** // * BANDE PASSANTE - DAX H4 * // **************************** //Algorithme construit par @ebous64 autour de l'indicateur de base établi par PRC SuperBandPass //En Incubation depuis décembre 2021. Pas testé en réel. //Long sur le filtre traversant au dessus de sa ligne -RMS //Short sur le filtre traversant en dessous de sa ligne RMS //Sortie de position longue lorsque le filtre passe en dessous de RMS, ou en dessous de -RMS, faux signal d'entrée //Sortie de position courte lorsque le filtre passe au-dessus de -RMS ou au-dessus de RMS (ce qui signifie un faux signal d'entrée) //Ajouts moins logiques possibles: Court-circuits seulement (ou complémentaires) aux passages traversants des lignes -RMS (long) et RMS (short) //*************** Définition des paramètres du code************************ DEFPARAM CumulateOrders = False // Cumul des positions désactivé DEFPARAM Preloadbars = 1000 //*********** Déclaration des variables - Initialisation - Définition des stoploss et sécuristaion des gains ********** ONCE STOPTARGET = stptg // Stop Target initial à +220 ; optimisable à 215 ? ONCE pointSupplementaires = ptsup //initial 10 ; optimisable à 5 ? Attention 5 distance minimale à respecter avec le broker ONCE debutSecurisationPoints = STOPTARGET + pointSupplementaires //Variable debutSecurisationPoints initialisée ! flen = flen //initial 35:fast length; peut-être travaillé slen = slen //initial 65 slow length; peut-être travaillé IF barindex>slen then a1= 5/flen //initial 35; division avec flen a2= 5/slen //initial 65; division avec slen PB = (a1 - a2) * close + (a2*(1 - a1) - a1 * (1 - a2))* close[1] + ((1 - a1) + (1 - a2))*(PB[1])- (1 - a1)* (1 - a2)*(PB[2]) RMSa = summation[50](PB*PB) RMSplus = sqrt(RMSa/50) RMSminus = -RMSplus //********************* Réinitialisation / à une nouvelle journée ********************* IF intradaybarindex = 0 THEN conditionACHAT = 0 conditionVENTE = 0 valeurindicateur = undefined ENDIF ENDIF // ************************ Horaires de trading *************************************** TradeTime = time>000000 and time<220000 NoTradeTime = time>=220000 and time<000000 // ************ Code pour limiter le nombre d'ouvertures par jour ********************* ONCE nombreTrades = 2 // nombres maximum de trades dans la journée : IF intradaybarindex = 0 THEN takenCall = 0 takenPut = 0 conditionNbTradeByDay = 1 ENDIF IF takenCall + takenPut < nombreTrades THEN conditionNbTradeByDay = 1 ELSE conditionNbtradeByDay = 0 ENDIF //********************* VOLATILITY DETECTION ************************************** volatilitySmallMin = vsmin //initial 25 volatilitySmallMax = vsmax //initial 110 //volatilityMidMin = vmmin //15 //volatilityMidMax = vmmax //140 volatilitySmall = STD[5] (close) //volatilityMid = STD[10] (close) conditionVolatilitySmall = volatilitySmall > volatilitySmallMin AND volatilitySmall < volatilitySmallMax //conditionVolatilityMid = volatilityMid > volatilityMidMin AND volatilityMid < volatilityMidMax conditionVolatility = conditionVolatilitySmall //AND conditionVolatilityMid // ****** Conditions pour ouvrir une position acheteuse ******** c1 = PB CROSSES OVER RMSminus c2 = PB >= pby //initial -55 //c02 = RMSA >= pbz //23 //************************ Conditions pour ouvrir une position d'achat ******************************* IF NOT LongOnMarket AND TradeTime AND conditionNbTradeByDay AND conditionVolatility THEN IF c1 AND c2 AND sqrt(summation[50](PB*PB)/50)< nbx THEN BUY 1 CONTRACT AT MARKET takenCall = takenCall + 1 //Mise à zéro des variables prixachat = 0 prixSTOPVente = 0 profitPoint = 0 ENDIF ENDIF //***************** Conditions pour fermer une position acheteuse **************** // options toutes présentées car le code ici n'est pas intuitif. Utilisations, ajouts possibles des variables type "c0." c3 = PB CROSSES OVER RMSplus // préféré à under...les résultats...mais moins intuitif... SURPRISE !!! //c03 = PB CROSSES UNDER RMSplus // Utilisation dans l'alternative, ajout, optionnels. A développer c4 = PB CROSSES OVER RMSminus // préféré à UNDER plus logique mais moins efficace //c04 = PB CROSSES UNDER RMSminus // Utilisation dans l'alternative, ajout, optionnels. A développer IF LongOnMarket THEN IF c3 OR c4 THEN //or c03 or c04 SELL AT MARKET ENDIF //Sécurisation des gains prixachat = POSITIONPRICE profitPoint = close - prixachat conditionProfitPoint = (profitPoint >= debutSecurisationPoints) IF conditionProfitPoint THEN closeMoinsX = close -1 prixSTOPVente = MAX(prixSTOPVente, closeMoinsX) SELL AT prixSTOPVente STOP ENDIF ENDIF //**************** Conditions pour ouvrir une position en vente à découvert ************* c5 = PB CROSSES UNDER RMSplus c6 = PB <= pbx // 56 IF NOT ShortOnMarket AND TradeTime AND conditionNbTradeByDay AND conditionVolatility THEN IF c5 AND c6 AND sqrt(summation[50](PB*PB)/50)> nby THEN SELLSHORT 1 CONTRACT AT MARKET takenPut = takenPut + 1 //Mise à zéro des variables prixvente = 0 prixSTOPAchat = 0 profitPoint = 0 ENDIF ENDIF //************ Conditions pour fermer une position en vente à découvert ****************** c7 = PB CROSSES under RMSminus //c07 = PB CROSSES over RMSminus //Utilisation dans l'alternative, ajout, optionnels. A développer c8 = PB CROSSES OVER RMSplus //c08= PB CROSSES UNDER RMSplus //Utilisation dans l'alternative, ajout, optionnels. A développer IF ShortOnMarket THEN IF c7 OR c8 THEN //or c07 or c08 EXITSHORT AT MARKET ENDIF //Sécurisation des gains prixvente = POSITIONPRICE profitPoint = prixvente - close conditionProfitPoint = (profitPoint >= debutSecurisationPoints) IF conditionProfitPoint THEN closePlusX = close + 1 prixSTOPAchat = MAX (prixSTOPAchat, closePlusX) BUY AT prixSTOPAchat STOP ENDIF ENDIF //************* Stops et objectifs ***************** SET STOP %Loss stplos // 1.25 SET Target %profit tp // 2.8 Target "haut". Détailler les opérations...pour un choix autre GRAPH PB GRAPH RMSplus coloured(0,0,255) GRAPH RMSminus coloured(255,0,0) |
Share this
No information on this site is investment advice or a solicitation to buy or sell any financial instrument. Past performance is not indicative of future results. Trading may expose you to risk of loss greater than your deposits and is only suitable for experienced investors who have sufficient financial means to bear such risk.
ProRealTime ITF files and other attachments :PRC is also on YouTube, subscribe to our channel for exclusive content and tutorials
could you explain this “sqrt(summation[50](PB*PB)/50)> nby”?
what does it mean and what does it do?
RMS = Root Mean Square
Standard deviation calculated over a sufficiently long period (significant) to make it a mean reversion signal and from there to trade orders.
PB = Pass Band
Equation for the passband (PB) variable in closed form by taking the difference of the two EMA Z-transform responses.
Ability to write each EMA and take their difference :
EMA = a*Price+(1-a)* EMA with a as a fraction (of the price)
Two Responses = Two exponential moving averages used as a Low Pass filter with two different frequencies ( 1:Period)
Other points:
The subtraction cancels without offset the low frequency signals common to the two initial filters.
To go further, author’s article:
https://store.traders.com/stcov341supa.html
i dont think you understod the question.
i did not ask about the band pass indicator.
i asked what this “sqrt(summation[50](PB*PB)/50)> nby” condition is for?
could you explain what that condition is meant to do?
Je cherche à traiter des effets de bords avec un encadrement ajustable des variables. Vous augmenter les gains en supprimant les inégalités avec “nbx et nby”. Vous dégradez d’autres ratios. A traiter au cas par cas suivant les marchés et ses préférences, objectifs, c’est mon idée…
Hi,
Is this startegy suitable for daily SPY?
Regards
What are the values for nbx, nby, pbx, pby, ptsup, stplos, stptg, tp, vsmax, vsmin?