{"id":11967,"date":"2021-11-09T00:00:00","date_gmt":"2021-11-08T23:00:00","guid":{"rendered":"https:\/\/ungeracademy.com\/it\/blog\/semplice-codice-per-confrontare-visivamente-le-equity-dei-trading-system"},"modified":"2025-06-20T16:14:49","modified_gmt":"2025-06-20T14:14:49","slug":"semplice-codice-per-confrontare-visivamente-le-equity-dei-trading-system","status":"publish","type":"post","link":"https:\/\/ungeracademy.com\/it\/blog\/semplice-codice-per-confrontare-visivamente-le-equity-dei-trading-system","title":{"rendered":"Semplice codice per confrontare visivamente le Equity dei Trading System"},"content":{"rendered":"<p>Ciao a tutti ragazzi e benvenuti in questo nuovo video.<\/p>\n<p>Spesso sulle piattaforme di trading, quelle dedicate al backtest delle strategie, &egrave; possibile andare a valutare un&#8217;equity line alla volta, ma esiste un modo semplice e pratico per poter gestire pi&ugrave; equity line sullo stesso grafico per poterle andare a confrontare meglio?<\/p>\n<p>Durante lo sviluppo e la fase di ottimizzazione di una strategia capita molto spesso di dover guardare ripetutamente al performance report per dare un&#8217;occhiata ai parametri numerici della nostra strategia, oltre ad andare a visualizzare graficamente un&#8217;equity line che non fa altro che mostrare la cumulata dei trade che sono avvenuti durante il backtest.<\/p>\n<p>Purtroppo per&ograve; non c&#8217;&egrave; un tool presente sulle piattaforme che utilizziamo pi&ugrave; spesso, come MultiCharts o TradeStation, per andare ad analizzare un confronto diretto tra due strategie magari identiche o che cambiano semplicemente di uno o due parametri, per avere un confronto visivo dell&#8217;andamento delle equity line una sovrapposta all&#8217;altra per capire meglio come si comporterebbe la strategia nei casi che sto andando ad analizzare.<\/p>\n<p>Volevo quindi proporvi oggi uno script molto semplice da aggiungere alla fine delle vostre strategie per automatizzare quanto pi&ugrave; possibile questo confronto.<\/p>\n<p>Per vedere di che si tratta, possiamo prendere come analisi una delle strategie che abbiamo gi&agrave; costruito insieme in un video precedente. Vi lascio in alto a destra il link.<\/p>\n<p>La strategia l&#8217;avevamo chiamata RSI Filter. Era una strategia piuttosto buona sul Mini S&amp;P 500 e aveva un&#8217;equity molto simile a questa.<\/p>\n<p>Proviamo a ritornare alla fase di sviluppo, nella quale siamo andati a cercare l&#8217;ottimo tra i parametri, e possiamo farlo adesso come esempio per andare a confrontare come cambierebbero i parametri, e quindi l&#8217;equity line, se cambiasse lo stop loss, portandolo da 1.000 a 1.500 dollari per esempio.<\/p>\n<h3 id=\"il-codice\">Il codice<\/h3>\n<p>Vi mostro il codice della strategia come l&#8217;avevamo costruita. Eccola qui. Quello che ho fatto &egrave; stato semplicemente aggiungere questa parola, che in realt&agrave; richiama una funzione, per andare ad esportare tutti i trade della strategia. Quindi questa funzione la potr&ograve; utilizzare per questa strategia ma anche per tutte le altre strategie che andr&ograve; a creare.<\/p>\n<p>Ma cosa c&#8217;&egrave; dentro questa funzione? Andiamo a scoprirlo. Semplicemente, questa funzione va a creare un file di testo all&#8217;interno del nostro PC, nella cartella che desideriamo. Ad esempio, io l&#8217;ho pubblicato su Documenti in una cartella dedicata chiamata &#8216;Export Trades&#8217;. Andr&agrave; a generare un file che si chiama esattamente come il simbolo sul quale stiamo applicando la strategia, e andr&agrave; a richiamare il nome della strategia stessa.<\/p>\n<p>Dopodich&eacute; andr&ograve; a fare una verifica di questo tipo molto importante. Andr&ograve; a fare una verifica sulla market position nel corso del backtest. Per ogni barra, quindi ad ogni ricalcolo della strategia, io andr&ograve; a verificare la market position, andr&ograve; ad inserirla in una variabile che abbiamo chiamato &#8216;MarkP&#8217; e poi far&ograve; questo confronto.<\/p>\n<p>Andr&ograve; a verificare il valore attuale della market position confrontato rispetto al valore della market position di una barra fa. Andr&ograve; poi ad aggiungere un&#8217;altra condizione tramite la scrittura &#8216;and&#8217;, quindi dovranno verificarsi entrambe le condizioni, sulla market position della barra precedente che deve essere diversa da zero.<\/p>\n<p>Questo cosa sta ad indicare nell&#8217;insieme? Sta ad indicare che una barra fa eravamo a mercato, perch&eacute; la nostra posizione era diversa da zero, e la nostra market position &egrave; stata cambiata. Quindi o siamo usciti da una posizione long per entrare in un&#8217;altra posizione short, oppure siamo usciti da una posizione, long o short che sia, per ritornare flat.<\/p>\n<p>Quindi se ci ritroviamo in queste condizioni, quindi effettivamente se si &egrave; appena concluso un trade, andr&ograve; a stampare nel file, quindi con il comando &#8216;Print&#8217; aperta parentesi &#8216;file&#8217; e andr&ograve; a richiamare il nome del file sul quale vorr&ograve; andare a scrivere, quindi il nome contenuto in questa riga. E andr&ograve; poi ad inserire, tramite &#8216;FormatDate&#8217; la data nel quale si &egrave; concluso il trade, il tempo (quindi &#8216;FormatTime&#8217;).<\/p>\n<p>Dopodich&eacute; andr&ograve; ad inserire &#8216;positionprofit(1)&#8217;. Questa keyword sta ad indicare semplicemente qual &egrave; stato il profitto o la perdita della posizione appena chiusa.<\/p>\n<p>Andando avanti io poi ho aggiunto queste tre righe nel caso ci fossero barre daily. In questo caso risulta un po&#8217; pi&ugrave; difficile usare questo tipo di condizioni e ho utilizzato per semplicit&agrave; un&#8217;altra funzione che &egrave; chiamata &#8216;TradesToday&#8217;. In ogni caso vi consiglio di utilizzare questa funzione solo per timeframe intraday, in quanto potrebbe essere che, nell&#8217;eventualit&agrave; in cui si usino barre daily, avvengano ingressi e uscite nella stessa barra. E questa cosa, lo sapete benissimo, non &egrave; assolutamente conveniente. E quindi lascerei l&#8217;utilizzo di questa funzione solo per i timeframe intraday.<\/p>\n<h3 id=\"utilizzo-e-conclusioni\">Utilizzo e conclusioni<\/h3>\n<p>Andiamo adesso a vedere qual &egrave; il risultato di quanto abbiamo appena fatto. Quindi compilata la strategia con alla fine la parola che richiama la funzione, andiamo su Esplora Risorse a vedere che effettivamente nella cartella Documenti&gt;Export Trades viene generato un file .txt.<\/p>\n<p>Andiamo ad aprirlo e qui scopriamo che abbiamo una lista di tutti i nostri trade, alla quale abbiamo associato poi un time e una data che corrispondono all&#8217;orario e alla data di chiusura di tale posizione. Possiamo poi quindi andare ad importare ad esempio questa tabella, gi&agrave; cos&igrave; preparata, in Excel per andare a conservare tutti i nostri backtest che abbiamo effettuato.<\/p>\n<p>In questo modo noi potremmo semplicemente andare a riprodurre l&#8217;equity line con diversi input e diversi parametri, per andare a capire non solo guardando ai numeri sulle tabelle di ottimizzazione, ma anche a vedere che cosa cambia proprio a livello di equity line.<\/p>\n<p>Questo riporta l&#8217;esempio che vi ho citato poco fa. Possiamo vedere l&#8217;equity in rosso con la strategia avente uno stop loss di 1.000$, mentre in blu la stessa strategia con uno stop loss di 1500$.<\/p>\n<p>Spero che questo video vi sia stato utile!<\/p>\n<p>Se volete approfondire il nostro metodo per lo sviluppo di strategie sistematiche basato sul lavoro del 4 volte campione del mondo di trading Andrea Unger, qui sotto in descrizione vi lascio un link ad un webinar totalmente gratuito nel quale potrete approfondire il mondo del trading sistematico.<\/p>\n<p>Vi lascio anche lo script della funzione da utilizzare con PowerLanguage, quindi in MultiCharts.<\/p>\n<p>Vi ringrazio per avermi seguito fino a questo punto e vi do appuntamento ad un prossimo video. Ciao!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ciao a tutti ragazzi e benvenuti in questo nuovo video. Spesso sulle piattaforme di trading, quelle dedicate al backtest delle [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[57],"tags":[],"class_list":["post-11967","post","type-post","status-publish","format-standard","hentry","category-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/ungeracademy.com\/it\/wp-json\/wp\/v2\/posts\/11967","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ungeracademy.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ungeracademy.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ungeracademy.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ungeracademy.com\/it\/wp-json\/wp\/v2\/comments?post=11967"}],"version-history":[{"count":0,"href":"https:\/\/ungeracademy.com\/it\/wp-json\/wp\/v2\/posts\/11967\/revisions"}],"wp:attachment":[{"href":"https:\/\/ungeracademy.com\/it\/wp-json\/wp\/v2\/media?parent=11967"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ungeracademy.com\/it\/wp-json\/wp\/v2\/categories?post=11967"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ungeracademy.com\/it\/wp-json\/wp\/v2\/tags?post=11967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}