2017-06-24 2 views
0

Ich lerne RX und versuche zu sehen, ob ich es verwenden kann, um das folgende Problem anzugehen: Ich habe einen Strom von Crypto-Münze Preise und ich versuche herauszufinden, wann Preisumkehr beginnt während einer Pumpe. Während dieser Pumpen steigt der Preis der Münze sehr schnell und wenn sie fällt, möchte ich eine Aktion durchführen (Verkaufsauftrag). Manchmal kann es jedoch ein wenig stehen bleiben und dann weiter nach oben gehen, aber meistens fällt es wirklich, wenn es anfängt zu fallen.So finden Sie eine Preisumkehrung mit RX.NET

Ich habe es geschafft, den Ticker Strom in Gang zu bringen und einige Deltas zwischen ihnen, in einer Art und Weise der Berechnung, die Sie wahrscheinlich machen erschaudern (I Scan-Methode ein wenig bin mißbrauchen):

public class Ticker 
{ 
    public decimal Ask { get; set; } 
    public decimal Bid { get; set; } 
    public decimal Delta { get; set; } 
    public decimal DeltaPercent { get; set; } 
    public DateTime Time { get; set; } 
    public override string ToString() 
    { 

     return $"a: {Ask} B:{Bid} D:{Delta} DP:{DeltaPercent} T:{Time}"; 
    } 
}  

res.AsObservable().DistinctUntilChanged(x => x.Ask) 
    .Scan((state, t) => 
    { 
     var d = t.Ask-state.Ask; 
     t.Delta = d; 
     t.DeltaPercent = t.Delta/state.Ask; 
     return t; 
    }) 

I Now Ich würde gerne sehen, wenn N aufeinanderfolgende Deltas weniger als X Betrag innerhalb von T Zeit waren und wenn sie etwas tun. Ich denke, ich müsste sie irgendwie gruppieren, bin aber im Moment ratlos.

Antwort

3

Sie haben Ihr Problem nicht fest definiert. Aber Sie werden wahrscheinlich Ihre Lösung in einer Kombination dieser Operatoren finden:

  • Buffer - Gruppen Elemente aus einer beobachtbaren in eine Liste basierend auf einer Zählung, den Zeitraum, oder kundenspezifische Logik
  • Window - wie Puffer, aber anstatt in eine Liste zu gruppieren, gruppieren Gruppen in eine Observable
  • TimeInterval - Wraps jedes Element in einer Observablen mit einem Stempel, der Ihnen sagt, wie viel Zeit seit dem letzten Artikel vergangen ist.
  • Scan - Für Zustand Akkumulieren (wie Sie demonstriert)
+0

Buffer hat super funktioniert! –