Maurizio-Ciullo

Bot Azionario Nasdaq Multiticker Trend Long 1440 Min

Apr 2nd, 2026 (edited)
120
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.                                                         // ============================================================
  3.                                                         // *** BOT AZIONARIO NASDAQ MULTI TICKER TREND LONG 1440 MIN  *** //
  4.                                                         // ============================================================
  5.  
  6.  
  7. // ============================================================
  8. // TIPO STRATEGIA: TREND
  9. // STRUMENTO: AZIONARIO NASDAQ MULTI TICKER
  10. // TICKER: TRADESTATION 100 TICKER NASDAQ CSV IN CARTELLA
  11. // TIMEFRAME: 1440 MIN
  12. // DATI: TRADESTATION DAL 01/01/2006 AL 01/04/2026
  13. // SESSIONI: EXCHANGE TIME
  14. // LUN-LUN 09:30 - 16:00 SESSION END YES
  15. // MAR-MAR 09:30 - 16:00 SESSION END YES
  16. // MER-MER 09:30 - 16:00 SESSION END YES
  17. // GIO-GIO 09:30 - 16:00 SESSION END YES
  18. // VEN-VEN 09:30 - 16:00 SESSION END YES
  19. // MINI PAUSA : NO
  20. // BARS BACK: 200
  21. // COMMISSIONI SVILUPPO: 0
  22. // COMMISSIONI DOPO SVILUPPO: 1$, 2$ TOT, 2 TICK SLIPPAGE
  23. // POSITION SIZE SVILUOPPO 10000 / CLOSE
  24. // CORRELAZIONI STRUMENTI:  S&P 500 / RUSSEL 2000
  25. // ============================================================
  26.  
  27. // ==================LONG======================================
  28. // DESCRIZIONE INGRESSO: UNA PERCENTUALE DEI TITOLI NASDAQ È SOPRA NUOVI 52W HIGH / CLOSE > SMA / SUPERTREND / PATTERN INCLUSIONE SETTIMANALE / PATTERN ESCLUSIONE SETTIMANALE
  29. // DESCRIZIONE USCITA: CLOSE CROSS UNDER LEADLINE2 E CONVERSIONELINE > LEADLINE / NO SUPERTREND / TRAILING STOP PERCENTUALE
  30. // ESCLUSIONI: MESI/GIORNI/ORE NESSUNA
  31. // ============================================================
  32.  
  33.  
  34. // ============================================================================
  35. // INIZIO FILTRO RISK ON RISK OFF DATA 2 $52WHLQD 1440 MIN
  36. // ============================================================================
  37. // Questo era il PRIMO tentativo di filtro Risk-On / Risk-Off basato su: Close > data2 = simbolo $52WHLQD (52 Week High/Low Nasdaq 1440 min)
  38. // È stato sostituito dal nuovo filtro HLIDX più avanzato sotto. Lo teniamo solo come riferimento per future strategie. NON VIENE USATO NELLA STRATEGIA ATTUALE.
  39.  
  40. // Logica:
  41. // - Calcola la media a 10 periodi del Close di Data2
  42. // - Se Close > Media → mercato in regime Risk-On → BreadthOK = true
  43. // - Se Close < Media → mercato Risk-Off → BreadthOK = false
  44. // ============================================================================
  45. { Vars: Breadth(0), BreadthMA(0), BreadthOK(false);
  46.  
  47. Breadth = Close of Data2;
  48. BreadthMA = Average(Breadth, 10);
  49.  
  50. If Breadth > BreadthMA then
  51.     BreadthOK = true
  52. else
  53.     BreadthOK = false;    }
  54. // ============================================================================
  55. // FINE FILTRO RISK ON RISK OFF DATA 2 $52WHLQD 1440 MIN
  56. // ============================================================================
  57.  
  58.  
  59. // ============================================================================
  60. // INIZIO FILTRO MARKET REGIME – RISK ON / RISK OFF (ATTIVO)
  61. // ============================================================================
  62. // Data2 = simbolo $52WHLQD 1440 min → indice Market Breadth Nasdaq
  63. // Misura quanti titoli fanno nuovi 52 Week High vs 52 Week Low.
  64. //
  65. // LOGICA:
  66. // 1) Prendiamo High e Low di Data2 (numero titoli a nuovi massimi/minimi)
  67. // 2) Costruiamo un rapporto di forza del mercato:
  68. //
  69. //        Ratio = High / (High + Low)
  70. //
  71. //    → vicino a 1 = tanti nuovi massimi = mercato forte
  72. //    → vicino a 0 = tanti nuovi minimi = mercato debole
  73. //
  74. // 3) Smussiamo il Ratio con una media (EMA o SMA)
  75. //    controllata dagli Inputs:
  76. //
  77. //    Len     = velocità del filtro regime (sensibilità)
  78. //    UseEMA  = 1 usa EMA (più reattiva)
  79. //              0 usa SMA (più lenta)
  80. //
  81. // 4) Convertiamo in percentuale:
  82. //
  83. //        HLIDX = media(Ratio) * 100
  84. //
  85. // 5) Determinazione regime:
  86. //
  87. //        HLIDX > 50  → RISK ON  → BreadthOK = true
  88. //        HLIDX < 50  → RISK OFF → BreadthOK = false
  89. //
  90. // Questo filtro è ATTIVO nella strategia e blocca le entrate
  91. // quando il mercato globale non è in regime favorevole.  
  92.  
  93.  
  94. // ============================================================================
  95. // INIZIO FILTRO MARKET REGIME – RISK ON / RISK OFF (ATTIVO)
  96. // ============================================================================
  97. Inputs:
  98.     Len(10),
  99.     UseEMA(1),
  100.     OffsetPct(50);
  101.    
  102. Vars:
  103.     Highs(0),
  104.     Lows(0),
  105.     Ratio(0),
  106.     HLIDX(0),
  107.  
  108.     BreadthOK(false),
  109.  
  110.     RangeLow(0),
  111.     RangeHigh(0),
  112.     PlotVal(0);  
  113.    
  114.    
  115. If BarNumber of Data2 >= Len then begin
  116.  
  117.     // =========================
  118.     // DATA
  119.     // =========================
  120.     Highs = High of Data2;
  121.     Lows  = Low of Data2;
  122.  
  123.     // =========================
  124.     // RATIO
  125.     // =========================
  126.     If (Highs + Lows) > 0 then
  127.         Ratio = Highs / (Highs + Lows)
  128.     else
  129.         Ratio = 0;
  130.  
  131.     // =========================
  132.     // SMOOTH 1= EMA 0=SMA
  133.     // =========================
  134.     If UseEMA = 1 then
  135.         HLIDX = XAverage(Ratio, Len) * 100
  136.     else
  137.         HLIDX = Average(Ratio, Len) * 100;
  138.  
  139.     // =========================
  140.     // REGIME (color logic)
  141.     // =========================
  142.     If HLIDX > OffsetPct then
  143.         BreadthOK = true
  144.     else
  145.         BreadthOK = false;
  146.  
  147. end
  148. else
  149.     BreadthOK = false; // default: non aprire trade se dati insufficienti
  150. // ============================================================================
  151. // FINE FILTRO MARKET REGIME – RISK ON / RISK OFF (ATTIVO)
  152. // ============================================================================
  153.  
  154.  
  155. // ============================================================================
  156. // INIZIO MEDIA MOBILE LUNGA – SIMPLE MOVING AVERAGE
  157. // ============================================================================
  158. Inputs:
  159.     LongLen(200);        
  160. Vars:
  161.     LongMA(0);
  162.    
  163. LongMA = Average(Close, LongLen);
  164. // ============================================================================
  165. // FINE MEDIA MOBILE LUNGA – SIMPLE MOVING AVERAGE
  166. // ============================================================================
  167.  
  168.  
  169. // ============================================================================
  170. // INIZIO ICHIMOKU
  171. // ============================================================================
  172. Inputs:
  173.     ConversionPeriods(9),
  174.     BasePeriods(26),
  175.     TenkanLen(5),
  176.     LeadLine2LowPeriods(26),
  177.     SpanBPeriods(52);
  178.    
  179. vars:    
  180.     ConversionLine(0),
  181.     BaseLine(0),
  182.     LeadLine1(0),
  183.     LeadLine2(0),
  184.     SpanA(0),
  185.     Kijun(0),
  186.     Tenkan(0),
  187.     Slope(0);
  188.  
  189. // ===== DONCHIAN =====
  190. ConversionLine = (Lowest(Low, ConversionPeriods) + Highest(High, ConversionPeriods)) / 2;
  191. BaseLine = (Lowest(Low, BasePeriods) + Highest(High, BasePeriods)) / 2;
  192.  
  193. // ===== LEADING SPANS =====
  194. LeadLine1 = (ConversionLine + BaseLine) / 2;  
  195. LeadLine2 = (Lowest(Low, LeadLine2LowPeriods) + Highest(High, SpanBPeriods)) / 2; // Originale 52 PERIODI: LeadLine2 = (Lowest(Low, SpanBPeriods) + Highest(High, SpanBPeriods)) / 2; SOSTITUITO SpanBPeriods CON LeadLine2LowPeriods ORIGINALE LA PORTA A 52 PERIODI, QUI MESSA A 26. PIU' VELOCE !!!
  196. Tenkan = (Highest(High,9) + Lowest(Low,9)) / 2;
  197. Slope = Tenkan - Tenkan[TenkanLen];
  198. SpanA = (Tenkan + Kijun) / 2;
  199. // ============================================================================
  200. // FINE ICHIMOKU
  201. // ============================================================================
  202.  
  203.  
  204. // ============================================================================
  205. // INIZIO SUPERTREND
  206. // ============================================================================
  207. Inputs:
  208.     atrPeriod(10),
  209.     factor(3);       //ANCHE 2.1 VA BENE
  210.  
  211. Vars:
  212.     atr(0),
  213.     upperBand(0),
  214.     lowerBand(0),
  215.     finalUpper(0),
  216.     finalLower(0),
  217.     supertrend(0),
  218.     direction(0);   // -1 = uptrend, +1 = downtrend
  219.  
  220. // --- ATR ---
  221. atr = AvgTrueRange(atrPeriod);
  222.  
  223. // --- Bande base ---
  224. upperBand = (High + Low) / 2 + factor * atr;
  225. lowerBand = (High + Low) / 2 - factor * atr;
  226.  
  227. // --- Inizializzazione ---
  228. if CurrentBar = 1 then begin
  229.     finalUpper = upperBand;
  230.     finalLower = lowerBand;
  231.     direction = 1;
  232. end
  233. else begin
  234.  
  235.     // --- Upper band (trailing) ---
  236.     if upperBand < finalUpper[1] or Close[1] > finalUpper[1] then
  237.         finalUpper = upperBand
  238.     else
  239.         finalUpper = finalUpper[1];
  240.  
  241.     // --- Lower band (trailing) ---
  242.     if lowerBand > finalLower[1] or Close[1] < finalLower[1] then
  243.         finalLower = lowerBand
  244.     else
  245.         finalLower = finalLower[1];
  246.  
  247.     // --- Direzione ---
  248.     if supertrend[1] = finalUpper[1] then begin
  249.         if Close > finalUpper then
  250.             direction = -1   // uptrend
  251.         else
  252.             direction = 1;   // downtrend
  253.     end
  254.     else begin
  255.         if Close < finalLower then
  256.             direction = 1
  257.         else
  258.             direction = -1;
  259.     end;
  260.  
  261. end;
  262.  
  263. if direction = -1 then
  264.     supertrend = finalLower
  265. else
  266.     supertrend = finalUpper;
  267. // ============================================================================
  268. // FINE SUPERTREND
  269. // ============================================================================
  270.  
  271.  
  272. // ============================================================================
  273. // ENTRY LONG 10000 $ PER POSIZIONE
  274. // ============================================================================
  275. If MarketPosition = 0
  276.     //and BreadthOK
  277.     and HLIDX > 50                                                                                        
  278.     and Close > LongMA                                                                                      
  279.     and direction < 0                        
  280.     and (loww(1)<loww(5))             //PtnBaseSA(MyPtnLY) // 23
  281.     and (highw(1)>highw(5)) = False   //PtnBaseSA(MyPtnLN) = false // 21                                                                                                                                                                          
  282.     then
  283.     Buy 10000/Close shares Next Bar at Market;
  284.    
  285. // ============================================================================
  286. // EXIT LONG 1
  287. // ============================================================================
  288. If MarketPosition = 1 then
  289. begin
  290.     If close cross under leadLine2 and conversionLine > leadLine2 then                                                                                  
  291.     Sell ("LE_1") Next Bar at Market;
  292. end;
  293.  
  294. // ============================================================================
  295. // EXIT LONG 2
  296. // ============================================================================
  297. If MarketPosition = 1 then
  298. begin
  299.     if direction > 0 then                                                  
  300.     Sell ("LE_2") Next Bar at Market;
  301. end;
  302.  
  303. // ============================================================================
  304. // EXIT LONG 3
  305. // ============================================================================
  306. // ============================================================
  307. // BREAKEVEN + BUFFER LONG CON STOP DINAMICO %
  308. // ============================================================
  309. // ============================================================
  310. // ATTENZIONE: TRAILING E BREAK-EVEN
  311. // ============================================================
  312. // Questo blocco di codice è progettato **per una sola posizione aperta per ticker**.
  313. // Se mai dovessi aprire più ingressi sullo stesso ticker (scale-in o multi-entry),
  314. // le variabili MaxPriceDuringTrade e StopPlaced verrebbero condivise tra tutte le posizioni,
  315. // causando stop confusi e break-even non corretti.
  316. // Per sicurezza: aprire **una sola posizione per ticker alla volta**.
  317.  
  318. // Aggiornamento MaxPriceDuringTrade a chiusura barra !!!.
  319. // ============================================================
  320. Inputs:
  321.     TrailingActive(True),
  322.     InpBreakEvenPercent(50),    // 50 = 0.5%
  323.     InpMaxProfitPercent(300);   // 300 = 3%
  324.  
  325. Vars:
  326.     IntraBarPersist MaxPriceDuringTrade(0),  // Massimo intratrade
  327.     IntraBarPersist StopPlaced(False);
  328. // ============================================================
  329. // LOGICA TRADE LONG
  330. // ============================================================
  331. If TrailingActive and MarketPosition = 1 Then Begin
  332.  
  333.     // Registrazione prezzo ingresso
  334.     If MaxPriceDuringTrade = 0 Then
  335.         MaxPriceDuringTrade = EntryPrice;
  336.  
  337.     // Aggiorna massimo intratrade
  338.     MaxPriceDuringTrade = MaxList(MaxPriceDuringTrade, High);
  339.  
  340.     // Se supero la soglia profitto
  341.     If ((MaxPriceDuringTrade - EntryPrice) / EntryPrice * 10000) >= InpMaxProfitPercent Then Begin
  342.  
  343.         // Calcolo livello stop
  344.         Vars: StopPrice(0);
  345.         StopPrice = EntryPrice * (1 + InpBreakEvenPercent / 10000);
  346.  
  347.         // Set stop intrabar sulla posizione intera
  348.         SetStopPosition;
  349.         Sell ("BEPlusStopLong") next bar at StopPrice stop;
  350.         StopPlaced = True;
  351.     End;
  352.  
  353. End;
  354.  
  355. // ============================================================
  356. // RESET VARIABILI ALLA CHIUSURA
  357. // ============================================================
  358. If MarketPosition = 0 Then Begin
  359.     MaxPriceDuringTrade = 0;
  360.     StopPlaced = False;
  361. End;
  362.  
  363.  
  364.  
  365.  
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment