// Sectores Media // Backtest Mensual // Activar Pad and align con indice SP500 Capini = Param("Capital", 100000,1,10000009,1); Refugio = ParamStr( "Refugio", "IEF" ); Reinvertir = ParamToggle("Reinvertir", "No|Yes", 0); Todos = ParamToggle("Incluimos XLC y XLRE", "No|Yes", 0);// Si se incluyen, la fecha inicio de backtest tiene que ser 28/02/2019 como muy pronto, si no 30/04/03 SetOption("ExtraColumnsLocation",1); SetOption("Commissionmode",2); SetOption("Commissionamount",0);// Podéis modificar la comisión por oporación cambiando el cero por la que querais SetOption("InitialEquity", Capini); SetOption( "AllowSameBarExit", True ); SetOption( "ReverseSignalForcesExit", False ); SetOption( "HoldMinBars", 1 ); SetOption( "AccountMargin", 1 ); RoundLotSize = 1; // --- detect watchlist --- wlnumber = GetOption( "FilterIncludeWatchlist" ); watchlist = GetCategorySymbols( categoryWatchlist, wlnumber ); numberOfAssets = StrCount( watchlist, "," ) + 1; posqty= numberOfAssets-1;//Optimize("Posiciones",4,1,4,1); SetOption("MaxOpenLong",posqty); SetOption("MaxOpenPositions",posqty); SetTradeDelays(0,0,0,0); SellPrice=BuyPrice=C; Per = Optimize("Periodo",8,1,20,1); // MENSUAL Cierre = TimeFrameCompress( C, inMonthly, compressLast); if (Todos == 1) { XLE = TimeFrameCompress( Foreign("XLE","C"), inMonthly, compressLast); XLF = TimeFrameCompress( Foreign("XLF","C"), inMonthly, compressLast); XLI = TimeFrameCompress( Foreign("XLI","C"), inMonthly, compressLast); XLK = TimeFrameCompress( Foreign("XLK","C"), inMonthly, compressLast); XLP = TimeFrameCompress( Foreign("XLP","C"), inMonthly, compressLast); XLU = TimeFrameCompress( Foreign("XLU","C"), inMonthly, compressLast); XLV = TimeFrameCompress( Foreign("XLV","C"), inMonthly, compressLast); XLY = TimeFrameCompress( Foreign("XLY","C"), inMonthly, compressLast); XLB = TimeFrameCompress( Foreign("XLB","C"), inMonthly, compressLast); XLC = TimeFrameCompress( Foreign("XLC","C"), inMonthly, compressLast); XLRE = TimeFrameCompress( Foreign("XLRE","C"), inMonthly, compressLast); } if (Todos == 0) { XLE = TimeFrameCompress( Foreign("XLE","C"), inMonthly, compressLast); XLF = TimeFrameCompress( Foreign("XLF","C"), inMonthly, compressLast); XLI = TimeFrameCompress( Foreign("XLI","C"), inMonthly, compressLast); XLK = TimeFrameCompress( Foreign("XLK","C"), inMonthly, compressLast); XLP = TimeFrameCompress( Foreign("XLP","C"), inMonthly, compressLast); XLU = TimeFrameCompress( Foreign("XLU","C"), inMonthly, compressLast); XLV = TimeFrameCompress( Foreign("XLV","C"), inMonthly, compressLast); XLY = TimeFrameCompress( Foreign("XLY","C"), inMonthly, compressLast); XLB = TimeFrameCompress( Foreign("XLB","C"), inMonthly, compressLast); } TimeFrameSet(inMonthly); Contador = 0; if (Todos == 1) { SetForeign ( "XLE" ); Contador = IIf(XLE>EMA(XLE,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLF" ); Contador = IIf(XLF>EMA(XLF,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLI" ); Contador = IIf(XLI>EMA(XLI,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLK" ); Contador = IIf(XLK>EMA(XLK,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLP" ); Contador = IIf(XLP>EMA(XLP,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLU" ); Contador = IIf(XLU>EMA(XLU,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLV" ); Contador = IIf(XLV>EMA(XLV,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLY" ); Contador = IIf(XLY>EMA(XLY,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLB" ); Contador = IIf(XLB>EMA(XLB,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLC" ); Contador = IIf(XLC>EMA(XLC,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLRE" ); Contador = IIf(XLRE>EMA(XLRE,Per), Contador+1,Contador); RestorePriceArrays(); } if (Todos == 0) { SetForeign ( "XLE" ); Contador = IIf(XLE>EMA(XLE,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLF" ); Contador = IIf(XLF>EMA(XLF,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLI" ); Contador = IIf(XLI>EMA(XLI,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLK" ); Contador = IIf(XLK>EMA(XLK,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLP" ); Contador = IIf(XLP>EMA(XLP,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLU" ); Contador = IIf(XLU>EMA(XLU,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLV" ); Contador = IIf(XLV>EMA(XLV,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLY" ); Contador = IIf(XLY>EMA(XLY,Per), Contador+1,Contador); RestorePriceArrays(); SetForeign ( "XLB" ); Contador = IIf(XLB>EMA(XLB,Per), Contador+1,Contador); RestorePriceArrays(); } Media = EMA(Cierre,Per); CondCompra = Cierre>Media; TimeFrameRestore(); // Diario CondCompra = TimeFrameExpand(CondCompra,inMonthly); Cierre = TimeFrameExpand(Cierre,inMonthly); Contador = TimeFrameExpand(Contador,inMonthly); Media = TimeFrameExpand(Media,inMonthly); EOM = Month() != Ref(Month(),1); Buy = CondCompra AND EOM; Sell = EOM; Short = Cover = 0; if (Reinvertir == 1) { PositionSize = IIf( Name() == Refugio, iif(ContadorEMA(C,Per);// HAcer el explorer en mensual AddTextColumn( FullName(), "Nombre ", 77); AddColumn(C,"Cierre",1.2); AddColumn(Contador,"Contador",1.0); AddColumn(numberOfAssets,"Activos",1.0); AddColumn(EMA(C,Per),"Media",1.2); AddColumn(Posqty,"Posiciones",1.0); AddColumn(PositionSize,"Capital",1.0); AddColumn(int(PositionSize/C),"Nº ETFs",1.0);