Files
Encelado/Encelado/src/Encelado.Bot/Ui/Pages/AccountPage.xaml
T

208 lines
12 KiB
XML

<UserControl x:Class="Encelado.Bot.Ui.Pages.AccountPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ui="clr-namespace:Encelado.Bot.Ui">
<UserControl.Resources>
<!-- One label/value line, the shape the whole page is built from. -->
<Style x:Key="Row" TargetType="Grid">
<Setter Property="Margin" Value="0,0,0,9"/>
</Style>
</UserControl.Resources>
<ScrollViewer VerticalScrollBarVisibility="Auto" Padding="0,0,6,0">
<StackPanel>
<StackPanel Style="{StaticResource PageHeader}">
<TextBlock Text="Conto" Style="{StaticResource PageTitle}"/>
<TextBlock Style="{StaticResource Hint}"
ToolTip="I valori arrivano da Alpaca e sono aggiornati a ogni riconciliazione, circa ogni 30 secondi. Sono quello che vede il broker, non un calcolo del bot: se non coincidono con la pagina Stato, quelli giusti sono questi."/>
</StackPanel>
<!-- Nothing truthful to show before the first reconcile. -->
<Border Style="{StaticResource Card}" Padding="26"
Visibility="{Binding HasAccount, Converter={StaticResource BoolVis}, ConverterParameter=invert}">
<StackPanel HorizontalAlignment="Center">
<TextBlock Text="&#xE9F3;" FontFamily="Segoe MDL2 Assets" FontSize="26"
Foreground="{StaticResource Faint}" HorizontalAlignment="Center"/>
<TextBlock Style="{StaticResource Sub}" Margin="0,10,0,0" TextAlignment="Center"
Text="Nessun dato dal conto.&#x0a;Avvia il bot: i valori compaiono alla prima riconciliazione."/>
</StackPanel>
</Border>
<StackPanel Visibility="{Binding HasAccount, Converter={StaticResource BoolVis}}">
<!-- ==================== headline ==================== -->
<UniformGrid Rows="1" Columns="4" Margin="0,0,-10,10">
<Border Style="{StaticResource Kpi}">
<StackPanel>
<TextBlock Text="VALORE DEL PORTAFOGLIO" Style="{StaticResource Label}"/>
<TextBlock Style="{StaticResource Value}" Text="{Binding Account.PortfolioValue, StringFormat=N2}"/>
<TextBlock Style="{StaticResource Sub}" Text="{Binding Account.Currency}"/>
</StackPanel>
</Border>
<Border Style="{StaticResource Kpi}">
<StackPanel>
<TextBlock Text="VARIAZIONE DI OGGI" Style="{StaticResource Label}"/>
<TextBlock Style="{StaticResource Value}"
Text="{Binding Account.ChangeToday, StringFormat='{}{0:+#,##0.00;-#,##0.00;0.00}'}"
Foreground="{Binding Account.ChangeToday, Converter={StaticResource PnlBrush}}"/>
<TextBlock Style="{StaticResource Sub}"
Text="{Binding Account.ChangeTodayPct, StringFormat='{}{0:+0.00%;-0.00%;0.00%}'}"/>
</StackPanel>
</Border>
<Border Style="{StaticResource Kpi}">
<StackPanel>
<TextBlock Text="LIQUIDITÀ" Style="{StaticResource Label}"/>
<TextBlock Style="{StaticResource Value}" Text="{Binding Account.Cash, StringFormat=N2}"/>
<TextBlock Style="{StaticResource Sub}" Text="non investita"/>
</StackPanel>
</Border>
<Border Style="{StaticResource Kpi}">
<StackPanel>
<TextBlock Text="POTERE D'ACQUISTO" Style="{StaticResource Label}"/>
<TextBlock Style="{StaticResource Value}" Text="{Binding Account.BuyingPower, StringFormat=N2}"/>
<TextBlock Style="{StaticResource Sub}"
Text="{Binding Account.Multiplier, StringFormat='leva {0:0.#}x'}"/>
</StackPanel>
</Border>
</UniformGrid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- ==================== identity ==================== -->
<Border Grid.Column="0" Style="{StaticResource Card}" VerticalAlignment="Top">
<StackPanel>
<TextBlock Text="ANAGRAFICA" Style="{StaticResource Head}"/>
<Grid Style="{StaticResource Row}">
<TextBlock Text="Numero di conto" Style="{StaticResource Sub}" Margin="0"/>
<TextBlock HorizontalAlignment="Right" FontFamily="{StaticResource Mono}" FontSize="12"
Text="{Binding Account.AccountNumber}"/>
</Grid>
<Grid Style="{StaticResource Row}">
<TextBlock Text="Stato" Style="{StaticResource Sub}" Margin="0"/>
<TextBlock HorizontalAlignment="Right" FontFamily="{StaticResource Mono}" FontSize="12"
Text="{Binding Account.Status}"/>
</Grid>
<Grid Style="{StaticResource Row}">
<TextBlock Text="Ambiente" Style="{StaticResource Sub}" Margin="0"/>
<Border Style="{StaticResource ModeBadge}" HorizontalAlignment="Right" Padding="7,2">
<TextBlock Text="{Binding Mode}" FontFamily="{StaticResource Mono}"
FontSize="10.5" FontWeight="SemiBold"/>
</Border>
</Grid>
<Grid Style="{StaticResource Row}">
<TextBlock Text="Vendita allo scoperto" Style="{StaticResource Sub}" Margin="0"/>
<TextBlock HorizontalAlignment="Right" FontFamily="{StaticResource Mono}" FontSize="12"
Text="{Binding Account.ShortingEnabled, Converter={StaticResource YesNo}}"/>
</Grid>
<Grid Style="{StaticResource Row}">
<TextBlock Text="Ultimo aggiornamento" Style="{StaticResource Sub}" Margin="0"/>
<TextBlock HorizontalAlignment="Right" FontFamily="{StaticResource Mono}" FontSize="12"
Foreground="{StaticResource Dim}"
Text="{Binding Account.UpdatedUtc, Converter={StaticResource LocalTime}}"/>
</Grid>
</StackPanel>
</Border>
<!-- ==================== balances & limits ==================== -->
<Border Grid.Column="2" Style="{StaticResource Card}" VerticalAlignment="Top">
<StackPanel>
<TextBlock Text="SALDI E LIMITI" Style="{StaticResource Head}"/>
<Grid Style="{StaticResource Row}">
<TextBlock Text="Equity" Style="{StaticResource Sub}" Margin="0"/>
<TextBlock HorizontalAlignment="Right" FontFamily="{StaticResource Mono}" FontSize="12"
Text="{Binding Account.Equity, StringFormat=N2}"/>
</Grid>
<Grid Style="{StaticResource Row}">
<TextBlock Text="Equity alla chiusura precedente" Style="{StaticResource Sub}" Margin="0"/>
<TextBlock HorizontalAlignment="Right" FontFamily="{StaticResource Mono}" FontSize="12"
Text="{Binding Account.LastEquity, StringFormat=N2}"/>
</Grid>
<Grid Style="{StaticResource Row}">
<TextBlock Text="Potere d'acquisto intraday" Style="{StaticResource Sub}" Margin="0"/>
<TextBlock HorizontalAlignment="Right" FontFamily="{StaticResource Mono}" FontSize="12"
Text="{Binding Account.DaytradingBuyingPower, StringFormat=N2}"/>
</Grid>
<Grid Style="{StaticResource Row}">
<TextBlock Text="Operazioni intraday (5 giorni)" Style="{StaticResource Sub}" Margin="0"/>
<TextBlock HorizontalAlignment="Right" FontFamily="{StaticResource Mono}" FontSize="12"
Text="{Binding Account.DaytradeCount}"/>
</Grid>
<Grid Style="{StaticResource Row}">
<TextBlock Text="Pattern day trader" Style="{StaticResource Sub}" Margin="0"/>
<TextBlock HorizontalAlignment="Right" FontFamily="{StaticResource Mono}" FontSize="12"
Text="{Binding Account.PatternDayTrader, Converter={StaticResource YesNo}}"/>
</Grid>
<Border Background="{StaticResource Bg}" BorderBrush="{StaticResource Line}"
BorderThickness="1" CornerRadius="7" Padding="11,9" Margin="0,4,0,0">
<StackPanel>
<TextBlock Text="RESTRIZIONI" Style="{StaticResource Label}" FontSize="9"/>
<TextBlock Margin="0,4,0,0" FontFamily="{StaticResource Mono}" FontSize="11.5"
TextWrapping="Wrap" Text="{Binding Account.Restrictions}"
Foreground="{Binding Account.Restrictions, Converter={StaticResource RestrictionBrush}}"/>
</StackPanel>
</Border>
</StackPanel>
</Border>
</Grid>
<!-- ==================== what the bot is allowed to do ==================== -->
<Border Style="{StaticResource Card}" Margin="0,10,0,20">
<StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,0,10">
<TextBlock Text="LIMITI IMPOSTI DAL BOT" Style="{StaticResource Head}" Margin="0"/>
<TextBlock Style="{StaticResource Hint}" FontSize="12"
ToolTip="Questi non vengono dal broker: sono i vincoli della configurazione, e si applicano prima che un ordine venga inviato. Il broker dice cosa è possibile, questi dicono cosa è permesso."/>
</StackPanel>
<UniformGrid Rows="1" Columns="4" Margin="0,0,-8,0">
<Border Background="{StaticResource Panel2}" BorderBrush="{StaticResource Line}"
BorderThickness="1" CornerRadius="7" Padding="11,9" Margin="0,0,8,0">
<StackPanel>
<TextBlock Text="DIMENSIONE" Style="{StaticResource Label}" FontSize="9"/>
<TextBlock x:Name="SizingText" Margin="0,4,0,0" FontFamily="{StaticResource Mono}"
FontSize="11" TextWrapping="Wrap"/>
</StackPanel>
</Border>
<Border Background="{StaticResource Panel2}" BorderBrush="{StaticResource Line}"
BorderThickness="1" CornerRadius="7" Padding="11,9" Margin="0,0,8,0">
<StackPanel>
<TextBlock Text="PERDITA MASSIMA GIORNALIERA" Style="{StaticResource Label}" FontSize="9"/>
<TextBlock Margin="0,4,0,0" FontFamily="{StaticResource Mono}" FontSize="11"
Text="{Binding MaxDailyLossPct, StringFormat=P2}"/>
</StackPanel>
</Border>
<Border Background="{StaticResource Panel2}" BorderBrush="{StaticResource Line}"
BorderThickness="1" CornerRadius="7" Padding="11,9" Margin="0,0,8,0">
<StackPanel>
<TextBlock Text="POSIZIONI CONTEMPORANEE" Style="{StaticResource Label}" FontSize="9"/>
<TextBlock Margin="0,4,0,0" FontFamily="{StaticResource Mono}" FontSize="11"
Text="{Binding MaxOpenPositions}"/>
</StackPanel>
</Border>
<Border Background="{StaticResource Panel2}" BorderBrush="{StaticResource Line}"
BorderThickness="1" CornerRadius="7" Padding="11,9" Margin="0,0,8,0">
<StackPanel>
<TextBlock Text="OPERAZIONI AL GIORNO" Style="{StaticResource Label}" FontSize="9"/>
<TextBlock Margin="0,4,0,0" FontFamily="{StaticResource Mono}" FontSize="11"
Text="{Binding MaxTradesPerDay}"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
</Border>
</StackPanel>
</StackPanel>
</ScrollViewer>
</UserControl>