Come creare indicatori di sessione di trading e supporto/resistenza
L'API cTrader Algo fornisce i tipi necessari per creare indicatori che disegnano rettangoli, linee, triangoli, nuvole e altri oggetti sui grafici di trading. I rettangoli, in particolare, sono ampiamente utilizzati per evidenziare periodi importanti, zone di consolidamento e livelli di supporto/resistenza.
In questo articolo e nel video corrispondente imparerai a disegnare rettangoli che rappresentano sessioni di trading e livelli di supporto/resistenza su un grafico dei simboli.
Crea un indicatore di sessione di trading
Esistono quattro principali sessioni di trading: Sydney, Tokyo, Londra e New York. Ogni sessione è unica in termini di volatilità e livelli di attività. Monitorando le sessioni e le sovrapposizioni tra di esse, i trader sanno quando vengono scambiati asset specifici e possono sfruttare le opportunità.
In questo esempio vogliamo creare un indicatore che disegna le sessioni di trading su un grafico.
In cTrader Algo, vai alla scheda Indicatori e fai clic sul pulsante Nuovo. Inserisci un nome nel campo di testo e poi fai clic su Crea.
Inizia a modificare l'indicatore nell'editor di codice. Per prima cosa, rendilo un indicatore in sovrimpressione.
Scrivi il codice per disegnare un rettangolo che indica la sessione di Londra su un grafico.
1234567
TimeSpanlondonOpen=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,9,0,0),TimeZoneInfo.FindSystemTimeZoneById("Greenwich Standard Time")).TimeOfDay;TimeSpanlondonClose=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,18,0,0),TimeZoneInfo.FindSystemTimeZoneById("Greenwich Standard Time")).TimeOfDay;Chart.DrawRectangle("London Session ",Server.Time.Date.Add(londonOpen),Chart.TopY,Server.Time.Date.Add(londonClose),Chart.BottomY,Color.FromArgb(50,0,50,255)).IsFilled=true;
Premi Ctrl+B o fai clic su Compila, quindi aggiungi l'indicatore a un grafico facendo clic su Aggiungi istanza.
Il rettangolo della sessione di Londra può essere visto sul grafico.
Torna all'editor di codice e aggiungi il codice per le restanti tre sessioni di trading.
1 2 3 4 5 6 7 8 91011121314151617181920212223
TimeSpannyOpen=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,9,0,0),TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")).TimeOfDay;TimeSpannyClose=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,18,0,0),TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")).TimeOfDay;Chart.DrawRectangle("NY Session ",Server.Time.Date.Add(nyOpen),Chart.TopY,Server.Time.Date.Add(nyClose),Chart.BottomY,Color.FromArgb(50,255,50,0)).IsFilled=true;TimeSpansydneyOpen=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,9,0,0),TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time")).TimeOfDay;TimeSpansydneyClose=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,18,0,0),TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time")).TimeOfDay;Chart.DrawRectangle("Sydney Session ",Server.Time.Date.Add(sydneyOpen).AddDays(-1),Chart.TopY,Server.Time.Date.Add(sydneyClose),Chart.BottomY,Color.FromArgb(50,50,255,0)).IsFilled=true;TimeSpantokyoOpen=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,9,0,0),TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time")).TimeOfDay;TimeSpantokyoClose=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,18,0,0),TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time")).TimeOfDay;Chart.DrawRectangle("Tokio Session ",Server.Time.Date.Add(tokyoOpen),Chart.TopY,Server.Time.Date.Add(tokyoClose),Chart.BottomY,Color.FromArgb(50,0,50,255)).IsFilled=true;
usingSystem;usingcAlgo.API;usingcAlgo.API.Collections;usingcAlgo.API.Indicators;usingcAlgo.API.Internals;namespacecAlgo{[Indicator(AccessRights = AccessRights.None, IsOverlay = true)]publicclassTradingSessions:Indicator{protectedoverridevoidInitialize(){}publicoverridevoidCalculate(intindex){TimeSpanlondonOpen=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,9,0,0),TimeZoneInfo.FindSystemTimeZoneById("Greenwich Standard Time")).TimeOfDay;TimeSpanlondonClose=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,18,0,0),TimeZoneInfo.FindSystemTimeZoneById("Greenwich Standard Time")).TimeOfDay;Chart.DrawRectangle("London Session ",Server.Time.Date.Add(londonOpen),Chart.TopY,Server.Time.Date.Add(londonClose),Chart.BottomY,Color.FromArgb(50,0,50,255)).IsFilled=true;TimeSpannyOpen=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,9,0,0),TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")).TimeOfDay;TimeSpannyClose=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,18,0,0),TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")).TimeOfDay;Chart.DrawRectangle("NY Session ",Server.Time.Date.Add(nyOpen),Chart.TopY,Server.Time.Date.Add(nyClose),Chart.BottomY,Color.FromArgb(50,255,50,0)).IsFilled=true;TimeSpansydneyOpen=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,9,0,0),TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time")).TimeOfDay;TimeSpansydneyClose=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,18,0,0),TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time")).TimeOfDay;Chart.DrawRectangle("Sydney Session ",Server.Time.Date.Add(sydneyOpen).AddDays(-1),Chart.TopY,Server.Time.Date.Add(sydneyClose),Chart.BottomY,Color.FromArgb(50,50,255,0)).IsFilled=true;TimeSpantokyoOpen=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,9,0,0),TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time")).TimeOfDay;TimeSpantokyoClose=TimeZoneInfo.ConvertTimeToUtc(newDateTime(Server.Time.Year,Server.Time.Month,Server.Time.Day,18,0,0),TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time")).TimeOfDay;Chart.DrawRectangle("Tokyo Session ",Server.Time.Date.Add(tokyoOpen),Chart.TopY,Server.Time.Date.Add(tokyoClose),Chart.BottomY,Color.FromArgb(50,0,50,255)).IsFilled=true;}}}
Ricompila l'indicatore e poi controlla il grafico per vedere tutte le sessioni di trading rappresentate lì.
Crea un indicatore di supporto/resistenza
Creeremo un indicatore che traccia zone di resistenza e supporto su un grafico utilizzando i frattali.
Crea un nuovo indicatore utilizzando gli stessi passaggi, ma assegnagli un nome diverso.
Una zona di resistenza frattale viene disegnata dove il valore massimo è superiore alle due barre adiacenti su ciascun lato. La zona è l'area tra i prezzi massimo e di chiusura di una candela frattale. Le zone di resistenza aiutano a identificare aree in cui un trend rialzista potrebbe fermarsi e invertirsi, il che si traduce in opportunità di trading.
Scrivi il codice che disegna una zona di resistenza.
A differenza delle zone di resistenza, le zone di supporto aiutano a identificare dove un trend ribassista potrebbe fermarsi e invertirsi. Tali zone possono essere interpretate come segnali di acquisto.
Scrivi il codice che disegna una zona di supporto.
Compila l'indicatore e aggiungi un'istanza a un grafico. Dovresti vedere le zone di supporto e resistenza sul grafico.
Questo articolo ha dimostrato come creare indicatori con oggetti utili, come i rettangoli, che possono essere utilizzati per rappresentare sessioni di trading e livelli di supporto/resistenza sui grafici.