1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110 | using cAlgo.API;
using System.Linq;
namespace cAlgo
{
// HistoricalTradeの使い方を示すサンプルインジケータ
[Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class HistorySample : Indicator
{
private Style _textBlocksStyle;
private StackPanel _stackPanel;
private Grid _tradesGrid;
protected override void Initialize()
{
_stackPanel = new StackPanel
{
Orientation = Orientation.Vertical,
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = <span="n">VerticalAlignment.<span="n">Center,
BackgroundColor = <span="n">Color.<span="n">Gold
};
_textBlocksStyle = new Style();
_textBlocksStyle.<span="n">Set(ControlProperty.<span="n">Margin, 5);
_stackPanel.<span="n">AddChild(new TextBox
{
Text = <span="s">"Your Last 10 Trades",
FontWeight = <span="n">FontWeight.<span="n">ExtraBold,
HorizontalAlignment = <span="n">HorizontalAlignment.<span="n">Center,
Style = <span="n">_textBlocksStyle
});
Chart.<span="n">AddControl(_stackPanel);
UpdateLastTradeTextBlock();
Positions.<span="n">Closed += <span="n">args => <span="n">UpdateLastTradeTextBlock();
}
public override void Calculate(int index)
{
}
private void UpdateLastTradeTextBlock()
{
if (_tradesGrid != null)
_stackPanel.<span="n">RemoveChild(_tradesGrid<span="p">);
_tradesGrid = <span="k">new Grid<span="p">(11<span="p">, 6<span="p">);
_tradesGrid.<span="n">AddChild(new TextBlock
{
Text = <span="s">"Symbol",
Style = <span="n">_textBlocksStyle
}, 0<span="p">, 0<span="p">);
_tradesGrid.<span="n">AddChild(new TextBlock
{
Text = <span="s">"Direction",
<span="n">Style = <span="n">_textBlocksStyle
}, 0<span="p">, 1<span="p">);
<span="n">_tradesGrid.<span="n">AddChild<span="p">(<span="k">new TextBlock
{
<span="n">Text = <span="s">"Volume"<span="p">,
<span="n">Style <span="o">= <span="n">_textBlocksStyle
}, <span="m">0<span="p">, <span="m">2<span="p">);
<span="n">_tradesGrid<span="p">.<span="n">AddChild<span="p">(<span="k">new TextBlock
<span="p">{
<span="n">Text = <span="s">"Open Time"<span="p">,
<span="n">Style <span="o">= <span="n">_textBlocksStyle
}, <span="m">0<span="p">, <span="m">3<span="p">);
<span="n">_tradesGrid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock
{
<span="n">Text <span="o">= <span="s">"Close Time"<span="p">,
<span="n">Style <span="o">= <span="n">_textBlocksStyle
<span="p">}, <span="m">0<span="p">, <span="m">4<span="p">);
<span="n">_tradesGrid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock
{
<span="n">Text <span="o">= <span="s">"Net Profit"<span="p">,
<span="n">Style <span="o">= <span="n">_textBlocksStyle
<span="p">}, <span="m">0<span="p">, <span="m">5<span="p">);
<span="kt">var <span="n">lastTenTrades <span="o">= <span="n">History<span="p">.<span="n">OrderByDescending<span="p">(<span="n">iTrade <span="o">=> <span="n">iTrade<span="p">.<span="n">ClosingTime<span="p">).<span="n">Take<span="p">(<span="m">10<span="p">).<span="n">ToArray<span="p">();
<span="k">for <span="p">(<span="kt">int <span="n">iRowIndex <span="o">= <span="m">1<span="p">; <span="n">iRowIndex <span="o"><= <span="n">lastTenTrades<span="p">.<span="n">Length<span="p">; <span="n">iRowIndex<span="o">++<span="p">)
{
<span="kt">var <span="n">trade <span="o">= <span="n">lastTenTrades<span="p">[<span="n">iRowIndex <span="o">- <span="m">1<span="p">];
<span="n">_tradesGrid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock
{
<span="n">Text <span="o">= <span="n">trade<span="p">.<span="n">SymbolName<span="p">,
<span="n">Style <span="o">= <span="n">_textBlocksStyle
<span="p">}, <span="n">iRowIndex<span="p">, <span="m">0<span="p">);
<span="n">_tradesGrid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock
{
<span="n">Text <span="o">= <span="n">trade<span="p">.<span="n">TradeType<span="p">.<span="n">ToString<span="p">(),
<span="n">Style <span="o">= <span="n">_textBlocksStyle
<span="p">}, <span="n">iRowIndex<span="p">, <span="m">1<span="p">);
<span="n">_tradesGrid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock
{
<span="n">Text <span="o">= <span="n">trade<span="p">.<span="n">VolumeInUnits<span="p">.<span="n">ToString<span="p">(),
<span="n">Style <span="o">= <span="n">_textBlocksStyle
<span="p">}, <span="n">iRowIndex<span="p">, <span="m">2<span="p">);
<span="n">_tradesGrid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock
{
<span="n">Text <span="o">= <span="n">trade<span="p">.<span="n">EntryTime<span="p">.<span="n">ToString<span="p">(<span="s">"g"<span="p">),
<span="n">Style <span="o">= <span="n">_textBlocksStyle
<span="p">}, <span="n">iRowIndex<span="p">, <span="m">3<span="p">);
<span="n">_tradesGrid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock
{
<span="n">Text <span="o">= <span="n">trade<span="p">.<span="n">ClosingTime<span="p">.<span="n">ToString<span="p">(<span="s">"g"<span="p">),
<span="n">Style <span="o">= <span="n">_textBlocksStyle
<span="p">}, <span="n">iRowIndex<span="p">, <span="m">4<span="p">);
<span="n">_tradesGrid<span="p">.<span="n">AddChild<span="p">(<span="k">new <span="n">TextBlock
{
<span="n">Text <span="o">= <span="n">trade<span="p">.<span="n">NetProfit<span="p">.<span="n">ToString<span="p">(),
<span="n">Style <span="o">= <span="n">_textBlocksStyle
<span="p">}, <span="n">iRowIndex<span="p">, <span="m">5<span="p">);
<span="p">}
<span="n">_stackPanel<span="p">.<span="n">AddChild<span="p">(<span="n">_tradesGrid<span="p">);
<span="p">}
<span="p">}
<span="p">}
|