Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

Spoutnik V2015 projet collaboratif

  • Jerome

    Bonjour,

    le site manquant de rythme jai décidé de revenir avec un nouveau vieux projet :) :)

    "Spoutnik" les anciens connaissent, les nouveaux apprécieront.

    J'eu testé a l'époque cette ea dont javais apprécié l'efficacité mais encore fallait t'il rester derrière ..

    Je propose plusieurs modifications afin d'en faire un full auto en moyen terme :

    Intégrer un stop loss automatique en fonction de l'ATR ainsi que pour le Take Profit.
    Donner un espace minimum entre chaque ordre correspondant au spread

    Intégrer un breakeven afin de protéger le gain de la position lors du bisous au Take Profit ainsi le Stop loss remonte au prix d'entré et nous pouvons continuer de grignoter la tendance jusqu'au nouveau Take Profit deplacé lui aussi d'egale distance.
    C'est a ce moment là que se font les vrais gains en trading.

    Ensuite puisqu'il fait du contre tendance je pense qu'il serait souhaitable d'avoir un filtre ... j'attends vos idées !!


    Afin d'éviter les range je propose de filtrer par le cross de deux ATR afin d'éviter les signaux sans volatitlité par exemple ATR14 et ATR 80 ainsi un signal d'entré avec un ATR 14 inférieur a un ATR 80 sera annulé cela nous évitant bcp de petites perte et nous permettant de rétrécir le Stop Loss ;)

    Bien sûr je pense aussi necessaire dutiliser un currency metter (puissance relative des devises) afin d'entrer sur un marché uniquement si la parité long terme est dans le bon sens
    Cette méthode nous permettra de temps a autre de prendre des retrounements de tendance en m30 et avec l'aide du breakeven et du stop loss suiveur d'avoir une position gagnante, réellement gagnante ;)

    J'attends vos commentaires et vos idées !!!



    Au plaisir !


    Code
    //+------------------------------------------------------------------+ //| S P O U T N I K v1.08 by Furynick //| Free for all the forexagone.com members //| Gratuit pour les membres de forexagone.com //+------------------------------------------------------------------+ //| Last version is Spoutnik v1.08 by Furynick, first week of May 2011. //+------------------------------------------------------------------+ //| v1.08 by Furynick //| - Different sounds added when a position is opened and closed. //| //| v1.07 by Furax: //| - Modified Angle Alpha to <-25 and >25 //| ( Increase the opportunitie to open a new trade. ) //| - Modified "TakeProfit" name to be more clear for the users. //| - Modified "NBPositions" name to be more clear for the users. //| ( Number of the positions allowed for the pair AND for all the other pairs. ) //| - Modified the value of T/P, S/L, DecreaseFactor. //| - Modified "comments". The number of the version appears now correctly. //| - Created the data "Security" to protect the account pair by pair. //| ( Every pair can have his own value for "Security" in EUR, USD and more. ) //[ ( The new little formula created is : Security = Equity - Margin ) //| ( In fact, "Security" is the "Available Margin". ) //| ( By default, the setting is 500€, 500$ or another currency. ) //| //| v1.06 by Furynick: //| Created S/L by Furynick. Thank you so much. //| //| v1.05 by Furax: //| Added "TotalNBPositionsMaxi" to increase the money magement. //| //| v1.04 by Furax: //| - Modified Angle Alpha to -85 to -85 by Furax //+------------------------------------------------------------------+ //| Copyright © 2005, MetaQuotes Software Corp. //| http://www.metaquotes.net //+------------------------------------------------------------------+ #property copyright "Copyright © 2011. Furax for forexagone.com" #property link "http://www.forexagone.com/" #define MAGICMA 20050610 extern double Lots = 0.1; // was 1.2 extern double TotalNBPositionsMaxi = 30; // added line by Furax for v1.05 extern double Security = 500; // Added a security with free margin by Furax for v1.07 extern double MaximumRisk = 0.036; // was 0.036 extern double DecreaseFactor = -12; // was -100 extern double TakeProfit = 100; // was 15 extern int StopLoss = 20; // Added by Furinick for v1.06 extern double MAPeriod = 1.0; double spread = 1.5; bool openSound = false; bool closeSound = false; // was 1.5 //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double Laguerre; double Alpha; double MA, MAprevious; int cnt, ticket, total; // was int cnt, ticket, total; Laguerre = 0; //iCustom(NULL, 0, "Laguerre", 0, 0); Alpha = iCCI(NULL, 0, 14, PRICE_CLOSE, 0); MA = iMA(NULL,0,MAPeriod, 0, MODE_EMA, PRICE_MEDIAN, 0); MAprevious = iMA(NULL, 0, MAPeriod, 0, MODE_EMA, PRICE_MEDIAN, 1); // ***************************************************************** Number of positions in the air total = OrdersTotal(); if(total < TotalNBPositionsMaxi) { // was if(total < 3) Number of positions // ****************************************************************************************************** { // no opened orders identified if(AccountFreeMargin() < ((Security *10)*Lots)) { // was if(AccountFreeMargin() < (1000*Lots)) // Security to verified... { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } // check for long position (BUY) possibility if((Laguerre == 0) && (MA > MAprevious) && (Alpha < -25)) { //+-- && Juice>JuiceLevel) // was if((Laguerre == 0) && (MA > MAprevious) && (Alpha < -5)) //+-- && Juice>JuiceLevel)// <-105 { ticket = OrderSend(Symbol(), OP_BUY, LotsOptimized(), Ask, 3, Ask - StopLoss * Point * MathPow(10, Digits % 2), 0, "Buy-Spoutnik v1.08", 16384, 0, Green); if (GetLastError() == 0) openSound=true; } // check for short position (SELL) possibility if((Laguerre == 0) && (MA < MAprevious) && (Alpha > 25)) { //+-- && Juice>JuiceLevel) // was if((Laguerre == 0) && (MA < MAprevious) && (Alpha > 5)) //+-- && Juice>JuiceLevel)// > 105 { ticket = OrderSend(Symbol(), OP_SELL, LotsOptimized(), Bid, 3, Bid + StopLoss * Point * MathPow(10, Digits % 2), 0, "Sell-Spoutnik v1.08", 16384, 0, Red); if (GetLastError() == 0) openSound=true; } } // it is important to enter the market correctly, // but it is more important to exit it correctly... for (cnt = 0; cnt < total; cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType() <= OP_SELL && // check for opened position OrderSymbol() == Symbol()) { // check for symbol { if(OrderType() == OP_BUY) { // long position is opened { // should it be closed? if(Laguerre > 1) {// was > 0 { if (OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet)) closeSound=true; // close position return(0); // exit } // check for stop if(TakeProfit > 1) { // was > 0 { if(Bid - OrderOpenPrice() > Point*TakeProfit) { if (OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet)) closeSound=true; // close position return(0); } } } else { // go to short position { // should it be closed? if(Laguerre > 0) { OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet); // close position return(0); // exit } // check for TakeProfit if(TakeProfit > 0) { if(OrderOpenPrice() - Ask > Point*TakeProfit) { OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet); // close position return(0); } } } } } if (openSound) { PlaySound("ok.wav"); openSound = false; } if (closeSound) { PlaySound("expert.wav"); closeSound = false; } return(0); } //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double lot = Lots; // was double lot = Lots; int orders = HistoryTotal(); // history orders total int losses = 2; // number of losses orders without a break was 0 then 3 //---- select lot size lot = NormalizeDouble(AccountFreeMargin()*MaximumRisk / 500, 1); //---- calcuulate number of losses orders without a break if(DecreaseFactor > 1) { // was if(DecreaseFactor > 0) { for (int i = orders - 1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == false) { Print("Error in history!"); break; } //---- if(OrderSymbol() != Symbol() || OrderType() > OP_SELL) continue; //---- if(OrderProfit() > 0) break; //---- if(OrderProfit() < 0) losses++; } if(losses > 1) lot = NormalizeDouble(lot - lot*losses / DecreaseFactor,1); } //---- return lot size if(lot <0.1)// was if(lot < 0.1) lot = 0.1; // was lot = 0.1; return(lot); } //+------------------------------------------------------------------+ // the end.
    Modifié le 2015-11-10 18:36:22 par AliX
  • Papyrox — en réponse à Jerome dans son message #103440

    Salut Jérôme,
    Je n'ai pas tout saisi, mais je tente le coup. Je pourrai t'apporter ma modeste contribution selon ma disponibilité, car toujours actif dans le monde du travail :(

    Je viens de passer l'EA sur l'optimiseur du Mt4 et cela pourrait tenir la route.

    Tu préconises une méthode de travail, ou chacun y va au feeling ?
  • Jerome

    Welcome papi goupil !!
    Désolé si mon poste fut parfois incompréhensible .. Parfois mes phrases ne font sens que pour moi même .

    Cet ea fonctionne en contre tendance donc parfois quand le marché est dans la tendance c'est catastrophique !
    Alors je propose d'avoir deux sens de trading en fonction de l'unité de temps h1 et d1 quand par exemple l'on trade en m30 avec l'ea.
    Je met dans un autre message les 2 formes de spoutnik.
    Ainsi si trend h1 d1 bullish alors dans la tendance sinon contre tendance.

    Personnellement je ne sais pas trop coder mais je sais trouver les bouts de code nécessaires pour battir notre V2015.
    Au pire si tu n'as pas le temps je paierai quelqu'un mais je trouvais amusant de réactiver ce projet ici afin de partager mes connaissances au passage.

    Je mettrai ensuite ces bouts dans un nouveau message.

    C'est une bonne chose les bac test mais insuffisant surtout que tout dépend du marché...

    Par exemple en contre tendance nos sl tp seront réduit alors qu'ils seront plus large en tendance sans oublier le filtre atr pour éviter les ranges soit le plus gros des pertes pour ce genre de robots.
    Et bien sûr le breakeven qui remontant le stop au prix d'entrée quand le tp est touché afin de laisser filer le trade jusqu'au nouveau tp déplacé du montant du stop Loss
    Modifié le 2015-11-10 20:02:54 par Jerome
  • Jerome

    J'ai passé la journée à faire des backtest en modifiant l'ema et le cci

    Soit ema longue et cci court ou inversement.

    Maintenant je tente d'intégrer le sl atr et tp atr
    Modifié le 2015-11-11 15:52:55 par Jerome
  • Papyrox — en réponse à Jerome dans son message #103448

    Voici ce que j'ai placé dans le code pour l'ATR:
    Pas très académique, mais ça fonctionne ;)

    (Au fait, je ne suis pas programmeur non plus)

    Code
    //............ double ATR14, ATR80; ATR14 = iATR (NULL, 0,14,0); ATR80 = iATR (NULL, 0,80,0); //................ if (ATR14 >= ATR80){StopLoss=StopLoss+20;} ticket = OrderSend(Symbol(), OP_BUY, LotsOptimized(), Ask, 3, Ask - StopLoss * Point * MathPow(10, Digits % 2), 0, "Buy-Spoutnik v1.08", 16384, 0, Green); if (ATR14 >= ATR80){StopLoss=StopLoss-20;} //........ if (ATR14 <= ATR80){StopLoss=StopLoss-20;} ticket = OrderSend(Symbol(), OP_SELL, LotsOptimized(), Bid, 3, Bid + StopLoss * Point * MathPow(10, Digits % 2), 0, "Sell-Spoutnik v1.08", 16384, 0, Red); if (ATR14 <= ATR80){StopLoss=StopLoss+20;}
  • Jerome

    Bonsoir

    Si je. Comprend bien le code est un ordre d'ouverture buy ou sell en fct du cross atr .. C'est pas tellement ce à quoi je m'attendais alors je m'en suis servis tout de même en remplaçant atr par le cross rsi 20.80 en h1 en filtrant le sens grace à la tendance d1


    Et bien c'est super efficace ...

    As-tu des suggestions pour cette ea ?
    Modifié le 2015-11-11 22:42:47 par Jerome
  • Papyrox — en réponse à Jerome dans son message #103453

    Salut Jerome,
    Pour des suggestions concernant cet EA, ce n’est pas trop facile pour moi d’en discuter, car je dois encore me familiariser avec certains termes comme Cross, Range, Swing… mais aussi j’aborde les EA avec le principe immuable que la base d’un EA doit être avant tout performante sur un maximum de paires et sur plusieurs années, sans changer aucun paramètre, en backtest bien entendu. Et ce avant d’y adjoindre le moindre stop, indicateurs ou autres signaux. Juste récolter régulièrement les gains, ou faire du scalping, si tu préfères, quel que soit le montant des gains. Et seulement après, nous venons tester la réaction de l’EA avec les artifices connus. Il me faudrait la version de base de l'EA, autrement dit, déshabiller la version présente pour me faire une idée.
    Cette philosophie est utilisée dans beaucoup de domaine, la photographie par exemple. Inutile d’essayer de traiter une photo mal prise au départ, après rafistolage, le résultat final sera très décevant.

    Trêve de blablas. J’ai remarqué, en testant l’ATR20.80 posté ci-dessus, qu’il existe un rapport proportionnel entre les « petits » et les « grands » StopLoss. Réduire le nombre des petits, augmente automatiquement le nombre des grands. C’est valable inversement. Cela pourra fonctionner sur une période et pas sur une autre, voire, sur une paire et pas sur les autres.

    Cross RSI 20.80, tu pourrais poster le code ? Histoire que je me fasse une idée.
    Modifié le 2015-11-12 14:23:30 par Papyrox
  • Jerome

    Bonsoir PapyRox,

    L'ATR étant un indicateur donnant la variation moyenne sur une période donnée cela n'a aucun sens de vouloir entrer sur un cross de celui ci car il ne donne pas le sens du marché : seulement un changement de volatilité; exemple l'ATR 14 croise a la hausse l'ATR 80, nous déduisons donc que le marché a quitté sa zone de distribution représenté graphiquement par un range ce qui est 70% du temps le cas et c'est dans ces moments que nous perdrons de l'argent puisque nos stop loss aurons de fortes chances d’êtres touchés ou alors nous aurons l'obligation de mettre des stop loss très laaaarges pour nous protéger du nombre affreux de petites pertes tout en encaissant de plus grosses mais moins nombreuses, c''est généralement le gros dilemme donc problème évité.

    L'avantage du cross ATR est de nous indiquer que la marché a entreprit un mouvement et c'est a ce moment là que nous allons lire notre signal sur le croisement RSI qui lui représente la force dynamique du marché, le sens, nous saurons quand le marché a entrepris de bouger et dans quel sens ce qui nous permettra d'avoir des stop loss réduit a la valeur simple de l'ATR 14 par exemple au lieu de deux fois l'ATR ou trois fois comme c'est communément le cas.

    Maintenant que nous savons comment rentrer sur le marché il reste le plus important : Quand SORTIR et comment.

    C'est pour cela que j'ai parlé du Breakeven, c'est une façon simple de protéger ses gains a partir d'une valeurs voulue tout en laissant la posibilité a l'ordre de continuer sa route.
    Par exemple :

    Entrée achat sur EurUsd a 1.1450 , notre stop loss est de 50pips soit 1.1400
    notre TakeProfit initial est a 1.1550 soit 100 Pips

    le Breakeven est de 80pips
    donc si notre ordre arrive a 1.1530 alors le stop loss de déplacera au point d'entrée soit 1.1450
    Il existe aussi une variable consistant a déterminer une valeur minimum de gain a protéger par exemple le stop loss remonte au point d'entrée plus 10 pips de gain ce qui donne 1.1460 comme stop loss, et ensuite notre ordre est en roue libre jusqu'au TAkeProfit et là rebelotte ... on déplace automatiquement le stop loss a 1.1535 donc ont tolére une perte de 15 pips sur nos 100 pips mais avec un nouveau take profit par exemple 1.1590.

    Pour résumer le stop loss et le take profit joue au chat et a la souris.
    C'est là le plus intéressant car c'est ce qui nous permettra de temps a autre d'avoir de gros profits tout en grignotant entre temps.


    Code
    //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { double RSI20, RSI100; RSI20 = iRSI (NULL,0,20,PRICE_CLOSE,0); RSI100 = iRSI (NULL,0,100,PRICE_CLOSE,0); double Laguerre; double Alpha; double MA, MAprevious; *************************************** } if (RSI20 >= RSI100){StopLoss=StopLoss+20;} ticket = OrderSend(Symbol(), OP_BUY, LotsOptimized(), Ask, 3, Ask - StopLoss * Point * MathPow(10, Digits % 2), 0, "Buy-Spoutnik v1.08", 16384, 0, Green); if (RSI20 >= RSI100){StopLoss=StopLoss-20;} if (RSI20 <= RSI100){StopLoss=StopLoss-20;} ticket = OrderSend(Symbol(), OP_SELL, LotsOptimized(), Bid, 3, Bid + StopLoss * Point * MathPow(10, Digits % 2), 0, "Sell-Spoutnik v1.08", 16384, 0, Red); if (RSI20 <= RSI100){StopLoss=StopLoss+20;}
    Modifié le 2015-11-12 19:23:22 par AliX
  • Jerome

    Dernier détail,

    Pour éviter les pertes je pense souhaitable de déceler la tendance en daily avant d'entrer en H1 ou M30 ;

    Voila un exemple en image, donc nous avons en daily nos zones de tendance ce qui nous permettra d'avoir un ratio d'ordre gagnant supérieur avec bien sur des opportunités ratés...


    Les unites de temps sont là pour l'exemple, après il serait plus heureux peut etre de trader m15 ou m30 sur h4 par exemple.
    chacun voit midi a sa porte :)
    Modifié le 2015-11-12 19:32:50 par Jerome
    Jerome a joint une image
    spoutnik-v2015-projet-collaboratif-10057
  • Papyrox — en réponse à Jerome dans son message #103459

    Superbe, je commence à comprendre. Désolé, je comprends vite, mais faut m'expliquer longtemps ;)

    En attendant, j'ai dégoté un indicateur qui va te plaire. Il t'indique le RSI en Daily quel que soit le time frame utilisé.
    Comme je ne sais plus où je l'ai trouvé, je poste le code ci-dessous.

    Pour l'appeler dans l'EA : double Valeur1 = iCustom(NULL,0,"Rsi_0nChart",14,0,20,1,0,70,30,"D1",0,0);
    Attention, j'ai conservé l'intitulé de l'indicateur original: Rsi_0nChart, le "0" est un zéro ;)
    Code
    //+------------------------------------------------------------------+ //| OnChart Rsi.mq4 | //| mladen | //| | //+------------------------------------------------------------------+ #property copyright "mladen" #property link "" //---- #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 DarkSlateGray #property indicator_color2 DarkSlateGray #property indicator_color3 DarkSlateGray #property indicator_color4 DarkOrange #property indicator_width4 2 #property indicator_style1 STYLE_DOT //---- parameters extern int RSIPeriod =14; extern int RSIPriceType= 0; extern int maPeriod =20; extern int maMethod =1; extern int maPrice =0; extern int overBought =70; extern int overSold =30; //extern string timeFrame="Current time frame"; Modifié par Papyrox pour forcer en D1, voir ligne suivante extern string timeFrame="D1"; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; double ExtMapBuffer4[]; datetime RTimeArray[]; datetime TTimeArray[]; int TimeFrame; int atrTimeFrame; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { SetIndexBuffer(0,ExtMapBuffer1); SetIndexBuffer(1,ExtMapBuffer2); SetIndexBuffer(2,ExtMapBuffer3); SetIndexBuffer(3,ExtMapBuffer4); //---- TimeFrame=stringToTimeFrame(timeFrame); atrTimeFrame=PERIOD_D1; if (TimeFrame>=atrTimeFrame) switch(TimeFrame) { case PERIOD_D1: atrTimeFrame=PERIOD_W1; break; default: atrTimeFrame=PERIOD_MN1; } return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double maValue; double avgRange; double rsiValue; int counted_bars=IndicatorCounted(); int limit; int i,r,y; //---- if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- ArrayCopySeries(RTimeArray ,MODE_TIME ,NULL,atrTimeFrame); ArrayCopySeries(TTimeArray ,MODE_TIME ,NULL,TimeFrame); //---- for(i=0,r=0,y=0;i<limit;i++) { if(Time[i]<RTimeArray[r]) r++; if(Time[i]<TTimeArray[y]) y++; avgRange =iATR(NULL,atrTimeFrame,maPeriod,r); maValue =iMA(NULL,TimeFrame,maPeriod,0,maMethod,maPrice,y); rsiValue =iRSI(NULL,TimeFrame,RSIPeriod,RSIPriceType,y); ExtMapBuffer1[i]=maValue; ExtMapBuffer2[i]=maValue+(avgRange*(overBought-50)/100); ExtMapBuffer3[i]=maValue-(avgRange*(50- overSold)/100); ExtMapBuffer4[i]=maValue+avgRange*(rsiValue-50)/100; } return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int stringToTimeFrame(string tfs) { int tf=0; tfs=StringUpperCase(tfs); if (tfs=="M1" || tfs=="1") tf=PERIOD_M1; if (tfs=="M5" || tfs=="5") tf=PERIOD_M5; if (tfs=="M15"|| tfs=="15") tf=PERIOD_M15; if (tfs=="M30"|| tfs=="30") tf=PERIOD_M30; if (tfs=="H1" || tfs=="60") tf=PERIOD_H1; if (tfs=="H4" || tfs=="240") tf=PERIOD_H4; if (tfs=="D1" || tfs=="1440") tf=PERIOD_D1; if (tfs=="W1" || tfs=="10080") tf=PERIOD_W1; if (tfs=="MN" || tfs=="43200") tf=PERIOD_MN1; if (tf<Period()) tf=Period(); return(tf); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string StringUpperCase(string str) { string s=str; int lenght=StringLen(str) - 1; int cha; //---- while(lenght>=0) { cha=StringGetChar(s, lenght); //---- if((cha > 96 && cha < 123) || (cha > 223 && cha < 256)) s=StringSetChar(s, lenght, cha - 32); else if(cha > -33 && cha < 0) s=StringSetChar(s, lenght, cha + 224); lenght--; } //---- return(s); } //+------------------------------------------------------------------+
  • Jerome

    Merci mais c'est inutile

    Il suffit de modifier la valeur de la période dans la ligne d'introduction du rsi et mettre 1440 pour DAILY.
    Et donc rajouter plusieurs rsi en modifiant leur paramètres
    http://docs.mql4.com/indicators/irsi
    Bien sûr il ne s'affichera pas.
    :)
    Modifié le 2015-11-13 12:00:42 par Jerome
  • Papyrox

    Jerome, le 12/11/2015 dit :
    Pour éviter les pertes je pense souhaitable de déceler la tendance en daily avant d'entrer en H1 ou M30 ;


    Rassure-moi, cela répond bien à ce qui précède ?
    Papyrox a joint une image
    spoutnik-v2015-projet-collaboratif-10058
  • Jerome

    Alors la j'ai aucune idée de comment tu as pu coller le rsi sur le graphique :)

    Les prises de positions ont l'air bonnes, non.?
  • Papyrox — en réponse à Jerome dans son message #103465

    Oui, cela semble bon. Il suffit de passer en Daily ald H4 et de vérifier la concordance. D'un simple clic tu passes d'un timeframe à l'autre.
  • Papyrox — en réponse à Papyrox dans son message #103466

    Voici exactement ta zone d'achat représentée différemment.
    Avec, exprimé en Daily sur une fenêtre en H1: RSI15 et RSI30
    Et en fenêtre séparée en H1: RSI14
    Papyrox a joint une image
    spoutnik-v2015-projet-collaboratif-10059
  • Papyrox — en réponse à Papyrox dans son message #103468

    C'est mieux sans la grille ;)
    Papyrox a joint une image
    spoutnik-v2015-projet-collaboratif-10060
  • Papyrox

    Jerome, le 12/11/2015 dit :
    Les unites de temps sont là pour l'exemple, après il serait plus heureux peut etre de trader m15 ou m30 sur h4 par exemple.
    Papyrox a joint une image
    spoutnik-v2015-projet-collaboratif-10061
  • Papyrox — en réponse à Papyrox dans son message #103470

    Salut Jérôme, Toujours sur le projet ?
  • Jerome

    Bonsoir

    Pas mal occupé n'es derniers temps donc pas le temps de trifouiller le code.

    Tu en es où ?

    As tu eu le temps de tester tes modifications .?
  • Papyrox — en réponse à Jerome dans son message #103557

    En fait, tu ne m’as toujours pas dit si cette partie correspond à un de tes souhaits. J’en suis resté sur l’inutilité de ce module selon ton écrit ci-avant.

    L’image, ci-dessous, résume le problème (le code utilisé n’est pas Spoutnik pour en simplifier la compréhension). Pour prendre position, no problemo. C’est pour en sortir qu’il faudra voir à présent.

    Je vais maintenant m’attaquer à une sorte de Trailing Stop qui ressemblera à ce que tu énonces plus haut.
    Dommage que d’autres traders ne viennent pas collaborer à ce projet. Je me sens bien seul :(


    (image code Der6)
    Modifié le 2015-11-22 12:02:49 par Papyrox
    Papyrox a joint une image
    spoutnik-v2015-projet-collaboratif-10072