using cAlgo.API;
using cAlgo.API.Internals;
using System;
namespace cAlgo
{
// このサンプルインジケーターは、シンボルMarketHoursの使い方を示します
[Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class MarketHoursSample : Indicator
{
private TextBlock _isOpenedTextBlock;
private TextBlock _timeTillCloseTextBlock;
private TextBlock _timeTillOpenTextBlock;
private Symbol _symbol;
[Parameter("現在のシンボルを使用する", DefaultValue = true)]
public bool UseCurrentSymbol { get; set; }
[Parameter("その他のシンボル名", DefaultValue = "GBPUSD")]
public string OtherSymbolName { get; set; }
protected override void Initialize()
{
var grid = new Grid(6, 2)
{
BackgroundColor = Color.Gold,
Opacity = 0.6,
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center,
};
var style = new Style();
style.Set(ControlProperty.Padding, 1);
style.Set(ControlProperty.Margin, <span="m">2);
style.Set<span="p">(<span="n">ControlProperty<span="p">.<span="n">BackgroundColor<span="p">, <span="n">Color<span="p">.<span="n">Black<span="p">);
<span="n">style<span="p">.<span="n">Set<span="p">(<span="n">ControlProperty<span="p">.<span="n">FontSize<span="p">, <span="m">8<span="p">);
<span="n">_symbol <span="o">= <span="n">UseCurrentSymbol <span="o">? <span="n">Symbol <span="p">: <span="n">Symbols<span="p">.<span="n">GetSymbol<span="p">(<span="n">OtherSymbolName<span="p">);
<span="n">grid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock <span="p">{ <span="n">Text <span="o">= <span="s">"シンボル情報"<span="p">, <span="n">Style <span="o">= <span="n">style<span="p">, <span="n">HorizontalAlignment <span="o">= <span="n">HorizontalAlignment<span="p">.<span="n">Center <span="p">}, <span="m">0<span="p">, <span="m">0<span="p">, <span="m">1<span="p">, <span="m">2<span="p">);
<span="n">grid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock <span="p">{ <span="n">Text <span="o">= <span="s">"オープンまでの時間"<span="p">, <span="n">Style <span="o">= <span="n">style <span="p">}, <span="m">1<span="p">, <span="m">0<span="p">);
<span="n">_timeTillOpenTextBlock <span="o">= <span="k">new <span="n">TextBlock <span="p">{ <span="n">Text <span="o">= <span="n">_symbol<span="p">.<span="n">MarketHours<span="p">.<span="n">TimeTillOpen<span="p">().<span="n">ToString<span="p">(), <span="n">Style <span="o">= <span="n">style <span="p">};
<span="n">grid<span="p">.<span="n">AddChild<span="p">(<span="n">_timeTillOpenTextBlock<span="p">, <span="m">1<span="p">, <span="m">1<span="p">);
<span="n">grid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock <span="p">{ <span="n">Text <span="o">= <span="s">"クローズまでの時間"<span="p">, <span="n">Style <span="o">= <span="n">style <span="p">}, <span="m">2<span="p">, <span="m">0<span="p">);
<span="n">_timeTillCloseTextBlock <span="o">= <span="k">new <span="n">TextBlock <span="p">{ <span="n">Text <span="o">= <span="n">_symbol<span="p">.<span="n">MarketHours<span="p">.<span="n">TimeTillClose<span="p">().<span="n">ToString<span="p">(), <span="n">Style <span="o">= <span="n">style <span="p">};
<span="n">grid<span="p">.<span="n">AddChild<span="p">(<span="n">_timeTillCloseTextBlock<span="p">, <span="m">2<span="p">, <span="m">1<span="p">);
<span="n">grid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock <span="p">{ <span="n">Text <span="o">= <span="s">"オープン済み"<span="p">, <span="n">Style <span="o">= <span="n">style <span="p">}, <span="m">3<span="p">, <span="m">0<span="p">);
<span="n">_isOpenedTextBlock <span="o">= <span="k">new <span="n">TextBlock <span="p">{ <span="n">Text <span="o">= <span="n">_symbol<span="p">.<span="n">MarketHours<span="p">.<span="n">IsOpened<span="p">().<span="n">ToString<span="p">(), <span="n">Style <span="o">= <span="n">style <span="p">};
<span="n">grid<span="p">.<span="n">AddChild<span="p">(<span="n">_isOpenedTextBlock<span="p">, <span="m">3<span="p">, <span="m">1<span="p">);
<span="n">grid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock <span="p">{ <span="n">Text <span="o">= <span="s">"取引セッション数"<span="p">, <span="n">Style <span="o">= <span="n">style <span="p">}, <span="m">4<span="p">, <span="m">0<span="p">);
<span="n">grid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock <span="p">{ <span="n">Text <span="o">= <span="n">_symbol<span="p">.<span="n">MarketHours<span="p">.<span="n">Sessions<span="p">.<span="n">Count<span="p">.<span="n">ToString<span="p">(), <span="n">Style <span="o">= <span="n">style <span="p">}, <span="m">4<span="p">, <span="m">1<span="p">);
<span="n">grid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock <span="p">{ <span="n">Text <span="o">= <span="s">"取引セッション曜日"<span="p">, <span="n">Style <span="o">= <span="n">style <span="p">}, <span="m">5<span="p">, <span="m">0<span="p">);
<span="kt">var <span="n">weekDays <span="o">= <span="kt">string<span="p">.<span="n">Empty<span="p">;
<span="k">for <span="p">(<span="kt">var <span="n">iSession <span="o">= <span="m">0<span="p">; <span="n">iSession <span="o">< <span="n">_symbol<span="p">.<span="n">MarketHours<span="p">.<span="n">Sessions<span="p">.<span="n">Count<span="p">; <span="n">iSession<span="o">++<span="p">)
<span="p">{
<span="kt">var <span="n">currentSessionWeekDays <span="o">= <span="kt">string<span="p">.<span="n">Format<span="p">(<span="s">"{0}({1})-{2}({3})"<span="p">, <span="n">_symbol<span="p">.<span="n">MarketHours<span="p">.<span="n">Sessions<span="p">[<span="n">iSession<span="p">].<span="n">StartDay<span="p">, <span="n">_symbol<span="p">.<span="n">MarketHours<span="p">.<span="n">Sessions<span="p">[<span="n">iSession<span="p">].<span="n">StartTime<span="p">, <span="n">_symbol<span="p">.<span="n">MarketHours<span="p">.<span="n">Sessions<span="p">[<span="n">iSession<span="p">].<span="n">EndDay<span="p">, <span="n">_symbol<span="p">.<span="n">MarketHours<span="p">.<span="n">Sessions<span="p">[<span="n">iSession<span="p">].<span="n">EndTime<span="p">);
<span="n">weekDays <span="o">= <span="n">iSession <span="o">== <span="m">0 <span="o">? <span="n">currentSessionWeekDays <span="p">: <span="kt">string<span="p">.<span="n">Format<span="p">(<span="s">"{0}, {1}"<span="p">, <span="n">weekDays<span="p">, <span="n">currentSessionWeekDays<span="p">);
<span="p">}
<span="n">grid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock <span="p">{ <span="n">Text <span="o">= <span="n">weekDays<span="p">, <span="n">Style <span="o">= <span="n">style <span="p">}, <span="m">5<span="p">, <span="m">1<span="p">);
<span="n">Chart<span="p">.<span="n">AddControl<span="p">(<span="n">grid<span="p">);
<span="n">Timer<span="p">.<span="n">Start<span="p">(<span="n">TimeSpan<span="p">.<span="n">FromSeconds<span="p">(<span="m">1<span="p">));
<span="p">}
<span="k">protected <span="k">override <span="k">void <span="nf">OnTimer<span="p">()
<span="p">{
<span="n">_timeTillOpenTextBlock<span="p">.<span="n">Text <span="o">= <span="n">_symbol<span="p">.<span="n">MarketHours<span="p">.<span="n">TimeTillOpen<span="p">().<span="n">ToString<span="p">();
<span="n">_timeTillCloseTextBlock<span="p">.<span="n">Text <span="o">= <span="n">_symbol<span="p">.<span="n">MarketHours<span="p">.<span="n">TimeTillClose<span="p">().<span="n">ToString<span="p">();
<span="n">_isOpenedTextBlock<span="p">.<span="n">Text <span="o">= <span="n">_symbol<span="p">.<span="n">MarketHours<span="p">.<span="n">IsOpened<span="p">().<span="n">ToString<span="p">();
<span="p">}
<span="k">public <span="k">override <span="k">void <span="nf">Calculate<span="p">(<span="kt">int <span="n">index<span="p">)
<span="p">{
<span="p">}
<span="p">}
<span="p">}