Sostituisci le euristiche a soglia con regime e anticipo adattivi; un solo archivio per asta
Le strategie a numero fisso (calore, ritiro morbido, anti-bot, avversari aggressivi, puntata probabilistica, velocità del prezzo, esaurimento, concorrenza) e le impostazioni morte (cadenze di polling, finestra critica, database, log avanzati, suggerimenti sull'anticipo, schede dettagliate) non ci sono più: rigiocate sui dossier non fermavano una puntata sbagliata senza fermarne anche di giuste, e i loro numeri andavano tarati a mano. Restano i paletti dell'utente (tetti, budget, fascia oraria) e il duello. Al loro posto due componenti che imparano dalla sessione in corso, dentro i paletti: - CompetitionRegime per asta (Calmo / Sfogo / Sondaggio) guidato dal valore atteso appreso: tre negativi di fila e si lascia sfogare gli altri, si rientra con una puntata di prova dopo abbastanza cicli buoni, e se viene coperta subito la pazienza raddoppia. È il "capire da soli quando tornare a puntare". - LatencyModel per l'anticipo: margine + p99 della latenza misurata adesso, tenuto fra LeadMinMs e LeadMaxMs; una puntata tardiva alza il margine subito, venti in tempo lo abbassano piano. Un anticipo scritto a mano su un'asta vince sempre (BidLeadIsManual). Archiviazione: l'archivio mensile aste-AAAA-MM.jsonl (95 MB) duplicava il riepilogo che ogni dossier ha già in coda. AuctionDetailStore ora legge testa e coda dei dossier, con cache: 6349 file in 6 s la prima volta. Pulsanti per svuotare le esportazioni e per azzerare le statistiche voce per voce (lo storico passa dalla copia di sicurezza). Scheda Apprendimento: sezione "Autonomia sul momento" con il modello di latenza e il regime di ogni asta seguita. Ml/LEGGIMI.md descrive l'algoritmo per intero. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -106,6 +106,7 @@
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Stato -->
|
||||
@@ -212,6 +213,72 @@
|
||||
Text="Nessuna valutazione ancora. Premi «Valuta ora»."/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<!-- Autonomia sul momento -->
|
||||
<Border Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3" Style="{StaticResource CardBlock}">
|
||||
<StackPanel>
|
||||
<ctl:HelpHeader Title="Autonomia sul momento" Margin="0,0,0,10"
|
||||
Help="Due cose che il sistema decide da solo sulla sessione in corso, dentro i paletti delle impostazioni. ANTICIPO: margine di sicurezza più la coda alta (p99) della latenza misurata adesso. Una puntata arrivata tardi alza il margine di 150 ms subito; venti puntate in tempo lo abbassano di 25. Il risultato resta fra il minimo e il massimo impostati; un anticipo scritto a mano su una singola asta vince sempre. REGIME: per ogni asta seguita. Calmo = punta se il valore atteso è positivo. Sfogo = gli altri si stanno battendo, si aspetta che si sfoghino: si rientra solo dopo «pazienza» cicli buoni di fila. Sondaggio = una puntata di prova; se viene coperta entro 9 s si torna a Sfogo e la pazienza raddoppia (fino a 24)."/>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="12"/>
|
||||
<ColumnDefinition Width="2*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Grid.Column="0">
|
||||
<TextBlock Text="Anticipo adattivo" FontWeight="SemiBold" Margin="0,0,0,8"
|
||||
Foreground="{DynamicResource Brush.Text}"/>
|
||||
<UniformGrid Columns="3" Rows="2">
|
||||
<StackPanel Margin="0,0,8,10">
|
||||
<TextBlock x:Name="StatLeadNow" Style="{StaticResource Stat}" Text="—"/>
|
||||
<TextBlock Style="{StaticResource StatLabel}" Text="anticipo adesso"/>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="0,0,8,10">
|
||||
<TextBlock x:Name="StatLatP99" Style="{StaticResource Stat}" Text="—"/>
|
||||
<TextBlock Style="{StaticResource StatLabel}" Text="coda del ping (p99)"/>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="0,0,8,10">
|
||||
<TextBlock x:Name="StatLatMargin" Style="{StaticResource Stat}" Text="—"/>
|
||||
<TextBlock Style="{StaticResource StatLabel}" Text="margine"/>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="0,0,8,0">
|
||||
<TextBlock x:Name="StatLatP50" Style="{StaticResource Stat}" Text="—"/>
|
||||
<TextBlock Style="{StaticResource StatLabel}" Text="ping mediano"/>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="0,0,8,0">
|
||||
<TextBlock x:Name="StatLatSamples" Style="{StaticResource Stat}" Text="—"/>
|
||||
<TextBlock Style="{StaticResource StatLabel}" Text="campioni"/>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="0,0,8,0">
|
||||
<TextBlock x:Name="StatLatLate" Style="{StaticResource Stat}" Text="—"/>
|
||||
<TextBlock Style="{StaticResource StatLabel}" Text="puntate tardive / totali"/>
|
||||
</StackPanel>
|
||||
</UniformGrid>
|
||||
<TextBlock x:Name="StatLeadHint" Style="{StaticResource Hint}" Margin="0,8,0,0" Text=""/>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Grid.Column="2">
|
||||
<TextBlock Text="Regime per asta" FontWeight="SemiBold" Margin="0,0,0,8"
|
||||
Foreground="{DynamicResource Brush.Text}"/>
|
||||
<DataGrid x:Name="RegimeGrid" MaxHeight="240" IsReadOnly="True" HeadersVisibility="Column"
|
||||
AutoGenerateColumns="False" CanUserAddRows="False">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Asta" Binding="{Binding Asta}" Width="*"/>
|
||||
<DataGridTextColumn Header="Stato" Binding="{Binding StatoAsta}" Width="Auto" MinWidth="60"/>
|
||||
<DataGridTextColumn Header="Regime" Binding="{Binding Regime}" Width="Auto" MinWidth="80"/>
|
||||
<DataGridTextColumn Header="Pazienza" Binding="{Binding Pazienza}" Width="Auto" MinWidth="70"/>
|
||||
<DataGridTextColumn Header="Sondaggi coperti" Binding="{Binding Sondaggi}" Width="Auto" MinWidth="110"/>
|
||||
<DataGridTextColumn Header="P senza risposta" Binding="{Binding Prob}" Width="Auto" MinWidth="110"/>
|
||||
<DataGridTextColumn Header="Valore atteso" Binding="{Binding Ev}" Width="Auto" MinWidth="100"/>
|
||||
<DataGridTextColumn Header="Duello" Binding="{Binding Duello}" Width="Auto" MinWidth="60"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<TextBlock x:Name="RegimeHint" Style="{StaticResource Hint}" Margin="0,8,0,0" Text=""/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
|
||||
Reference in New Issue
Block a user