Sviluppo TradingBot

This commit is contained in:
2026-06-09 18:29:41 +02:00
parent 61f1e59964
commit e3c0bd51b2
133 changed files with 24903 additions and 1 deletions
+176
View File
@@ -0,0 +1,176 @@
<UserControl x:Class="DesktopBot.Views.WalletView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{StaticResource BackgroundDarkBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- HEADER -->
<Grid Grid.Row="0" Margin="24,20,24,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Wallet &amp; Posizioni"
Style="{StaticResource SectionTitle}" Margin="0"/>
<StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="Caricamento..."
Foreground="{StaticResource TextSecondaryBrush}"
FontFamily="Segoe UI" FontSize="12" VerticalAlignment="Center"
Margin="0,0,12,0"
Visibility="{Binding IsLoading, Converter={StaticResource BoolToVisConverter}}"/>
<Button Content="Chiudi Tutto"
Command="{Binding CloseAllCommand}"
Style="{StaticResource DangerButton}"
Padding="12,7" Margin="0,0,8,0"
VerticalAlignment="Center"/>
<Button Content="&#8635; Aggiorna"
Command="{Binding RefreshCommand}"
Style="{StaticResource OutlineButton}"
Padding="14,7"
VerticalAlignment="Center"/>
</StackPanel>
</Grid>
<!-- Sottotitolo -->
<TextBlock Grid.Row="1" Margin="24,8,24,0"
Text="{Binding Positions.Count, StringFormat='Posizioni aperte: {0}'}"
Style="{StaticResource LabelSecondary}"/>
<!-- Errore -->
<Border Grid.Row="2" Margin="24,10,24,0"
Background="#2A1515" BorderBrush="{StaticResource AccentRedBrush}"
BorderThickness="1" CornerRadius="6" Padding="14,8"
Visibility="{Binding HasError, Converter={StaticResource BoolToVisConverter}}">
<TextBlock Text="{Binding ErrorMessage}"
Foreground="{StaticResource AccentRedBrush}"
FontFamily="Segoe UI" FontSize="12"/>
</Border>
<!-- Equity Summary -->
<Border Grid.Row="3" Margin="24,14,24,0"
Background="{StaticResource BackgroundPanelBrush}"
BorderBrush="{StaticResource BorderBrush}"
BorderThickness="1" CornerRadius="8" Padding="20,14">
<StackPanel Orientation="Horizontal">
<StackPanel Margin="0,0,48,0">
<TextBlock Text="EQUITY TOTALE" Style="{StaticResource LabelSecondary}" Margin="0,0,0,4"/>
<TextBlock Text="{Binding Equity, StringFormat='${0:N2}'}"
Foreground="{StaticResource AccentGreenBrush}"
FontFamily="Segoe UI" FontSize="28" FontWeight="Bold"/>
</StackPanel>
</StackPanel>
</Border>
<!-- Tabella Posizioni -->
<Border Grid.Row="4" Margin="24,14,24,20"
Background="{StaticResource BackgroundPanelBrush}"
BorderBrush="{StaticResource BorderBrush}"
BorderThickness="1" CornerRadius="8" Padding="0">
<DockPanel>
<!-- Header colonne -->
<Grid DockPanel.Dock="Top"
Background="{StaticResource BackgroundDarkBrush}"
Margin="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="120"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="SIMBOLO" Style="{StaticResource LabelSecondary}" Padding="20,12"/>
<TextBlock Grid.Column="1" Text="QUANTIT&#xC0;" Style="{StaticResource LabelSecondary}" Padding="0,12"/>
<TextBlock Grid.Column="2" Text="PREZZO ENTRATA" Style="{StaticResource LabelSecondary}" Padding="0,12"/>
<TextBlock Grid.Column="3" Text="PREZZO ATTUALE" Style="{StaticResource LabelSecondary}" Padding="0,12"/>
<TextBlock Grid.Column="4" Text="P&amp;L NON REALIZ." Style="{StaticResource LabelSecondary}" Padding="0,12"/>
</Grid>
<!-- Lista Posizioni -->
<ListView DockPanel.Dock="Top"
ItemsSource="{Binding Positions}"
Background="Transparent"
BorderThickness="0">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0,0,0,1"/>
<Setter Property="BorderBrush" Value="{StaticResource BorderBrush}"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource NavActiveBrush}"/>
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="120"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Symbol}"
Foreground="{StaticResource AccentGreenBrush}"
FontFamily="Segoe UI" FontWeight="SemiBold" FontSize="14"
Padding="20,10" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" Text="{Binding Quantity}"
Foreground="{StaticResource TextPrimaryBrush}"
FontFamily="Segoe UI" FontSize="13" VerticalAlignment="Center"/>
<TextBlock Grid.Column="2" Text="{Binding EntryPrice, StringFormat='${0:N2}'}"
Foreground="{StaticResource TextPrimaryBrush}"
FontFamily="Segoe UI" FontSize="13" VerticalAlignment="Center"/>
<TextBlock Grid.Column="3" Text="{Binding CurrentPrice, StringFormat='${0:N2}'}"
Foreground="{StaticResource TextPrimaryBrush}"
FontFamily="Segoe UI" FontSize="13" VerticalAlignment="Center"/>
<TextBlock Grid.Column="4" Text="{Binding UnrealizedPnL, StringFormat='${0:N2}'}"
FontFamily="Segoe UI" FontWeight="SemiBold" FontSize="13"
VerticalAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{StaticResource AccentGreenBrush}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsProfit}" Value="False">
<Setter Property="Foreground" Value="{StaticResource AccentRedBrush}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<!-- Placeholder vuoto -->
<TextBlock DockPanel.Dock="Top"
Text="Nessuna posizione aperta"
HorizontalAlignment="Center" Margin="0,40">
<TextBlock.Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource LabelSecondary}">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Positions.Count}" Value="0">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DockPanel>
</Border>
</Grid>
</UserControl>