208 lines
12 KiB
XML
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="" 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.
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>
|