Se pot câștiga bani din swing trading cu criptomonede?

Spread the love

Swing trading este o strategie pe termen scurt prin care se cumpără sau se vând criptomonede a căror indicatori tehnici sugerează ca urmează o perioadă de creștere sau de scădere a valorii.

Există tot felul de indicatori tehnici folosiți pentru a previziona variația de preț, iar pe baza lor au fost dezvoltate aplicații automate (bot) care rulează pentru a obține profit. Nu ați întâlnit niciodată reclame care se laudă ca-ți vor dubla invesția inițială in căteva zile sau chiar câteva ore? – de obicei afirma ca se bazeaza pe astfel de agenti tip bot.

Haideti sa vedem daca chiar este posibil sa faci bani cu ajutorul unor astfel de aplicatii

Ce-mi propun să fac: pe baza datelor de tip istoric voi încerca să aplic diferite strategii de tranzacționare automată.

1. Am descărcat istoria prețului pentru ultimele 2000 ore (aprox. 83 zile) si ultimele 2000 zile (aprox. 5 ani și jumătate) – aici puteți descărca fișierele

2. Am scris cateva funcții în java, foarte simple, care să testeze variantele de strategii de tranzactionare – la la finalul articolului ai  funcțiile folosite

3. Am pornit de la următoarea ipoteză:
Dacă 3 valori de preț consecutive sunt în ordine crecătoare sau descrescătoare, înseamnă că se manifestă un trend ți voi lua o decizie de cumpărare sau de vănzare (voi încerca ambele variante să văd care e mai profitabilă)
Exemplu de funcționare:
– pornesc cu 1.000 USD (virtuali, evident)
– identific o creștere continuă a prețului timp de 3 ore – voi cumpăra monedă (să zicem litecoin) de 1,000 USD
– aștept ca prețul să scadă 3 ore la rând (nu conteaza dacă mai crește între timp), moment în care vând toate monedele deținute si calculez cât am obținut
– ciclul se repetă
(pentru simplitate voi verifica doar 1,2,3 && 4,5,6 && 7,8,9 etc, nu voi verifica toate combinațiile de câte 3 care ar mai fi posibile: 2,3,4 || 3,4,5 || 5,6,7 || 6,7,8)

4. Rezultate obținute în urma simulării (toate fisierele rezultate le puteți descărca de aici)

a. BTC/ ora, cumpărare la trend de creștere și vănzare la trend descrescător
1.054 $ după 167 tranzacții
b. BTC/ ora, vânzare la trend de creștere și cumpărare la trend descrescător
1.073 $ după 168 tranzacții
c. BTC/zi, cumpărare la trend de creștere și vănzare la trend descrescător
27.383$ după 277 tranzacții
c1. BTC/zi, cumpărare la trend de creștere și vănzare la trend descrescăto, DOAR pentru ultimii 2 ani
3.776$ după 53 tranzacții
d. BTC/ zi, vânzare la trend de creștere și cumpărare la trend descrescător
950$ după 140 tranzacții
d1. BTC/ zi, vânzare la trend de creștere și cumpărare la trend descrescător, DOAR pentru ultimii 2 ani
954$ după 52 tranzacții

e. ETH/ ora, cumpărare la trend de creștere și vănzare la trend descrescător
1.497$ după 165 tranzacții
f. ETH/ ora, vânzare la trend de creștere și cumpărare la trend descrescător
1.034$ după 164 tranzacții
g. ETH/zi, cumpărare la trend de creștere și vănzare la trend descrescător
156.624$ după 92 tranzacții
g1. ETH/zi, cumpărare la trend de creștere și vănzare la trend descrescător, DOAR pentru ultimii 2 ani
17.418$ după 56 tranzacții
h. ETH/ zi, vânzare la trend de creștere și cumpărare la trend descrescător
698$ după 93 tranzacții
h1. ETH/ zi, vânzare la trend de creștere și cumpărare la trend descrescător, DOAR pentru ultimii 2 ani
698$ după 55 tranzacții

Nu voi mai face simularea și pentru celelalte criptomonede – nu cred că sunt mari diferențe.

Concluzie: S-ar părea că dacă cumpăr imediat ce apare un trend zilnic de creștere și vând imediat ce am un trend descrescător, voi obține profit. Ar trebui luată în calcul doar simularea pe ultimii 2 ani, orice stategie care presupune cumpărarea de monede importante de când au apaărut va da rezultate pozitive fabuloase). La trendul pe ore nu se obține profit.De asemnea, profitul e obținut după multe tranzacții – din cauza comisioanelor, probabil în realitate nu aș obține mai nimic (ar putea fi analizat și acest aspect)

Dacă ai alt model de tranzacționare, spune-mi în comentarii și-l putem simula. Dacă se dovedește a fi super-eficient, vom folosi un api de obținere preț automat (de exemplu cryptocompare.com) împreună cu un API de exchange (de exemplu Binance) și vom deveni bogați !!!
Cod pentru functiile java:

  
    private float moneda_cumparata;
    private float valoare = 1000.0f;
    private boolean e_cumparata;
    private int numar_tranzactii;
    private static final SimpleDateFormat SDF_ORA = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
    private static final SimpleDateFormat SDF_ZI = new SimpleDateFormat("dd.MM.yyyy");

public void analiza(String fisier) throws IOException {
        float pret_unu = 0.0f, pret_doi = 0.0f, pret_trei = 0.0f;
        moneda_cumparata = 0.0f;
        e_cumparata = false;
        numar_tranzactii = 0;
        int cnt = 0;
        List linii = Files.readAllLines(Paths.get(fisier));
        StringBuilder sb = new StringBuilder();
        for (String linie : linii) {
            sb.append(linie);
        }
        JSONObject jo = new JSONObject(sb.toString());
        JSONArray ja = jo.getJSONArray("Data");
        TreeMap<Long, Float> preturi = new TreeMap<>();
        for (Object o : ja) {
            JSONObject obj = (JSONObject) o;
            preturi.put(obj.getLong("time"), obj.getFloat("close"));
        }
        for (long data : preturi.keySet()) {
            cnt++;
            if (cnt % 3 == 1) {
                pret_unu = preturi.get(data);
            } else if (cnt % 3 == 2) {
                pret_doi = preturi.get(data);
            } else if (cnt % 3 == 0) {
                pret_trei = preturi.get(data);
                verifica(pret_unu, pret_doi, pret_trei, data);

            }
        }
        System.out.println("numar_tranzactii=" + numar_tranzactii);

    }

    private void verifica(float pret_unu, float pret_doi, float pret_trei, long data) {
        Calendar cal = Calendar.getInstance();
        //din 2017
       cal.set(2017, 1, 1);
        //din 2010 (toate datele disponibile)
      //  cal.set(2010,1,1);
        if (Float.compare(pret_unu, pret_doi) <= 0 && Float.compare(pret_doi, pret_trei) <= 0) {
        //avem crestere de pret de 3 ori consecutiv 
         vand(pret_trei, data);
        // cumpar(pret_trei, data, cal.getTimeInMillis()); 
        } else if (Float.compare(pret_unu, pret_doi) >= 0 && Float.compare(pret_doi, pret_trei) >= 0) {
             //avem scadere de pret de 3 ori consecutiv
            cumpar(pret_trei, data, cal.getTimeInMillis());
            //vand(pret_trei, data);

        } else {
            //nu avem o tendinta de crestere sau scadere
        }

    }

    private void vand(float pret_vanzare, long data) {
        if (e_cumparata) {
            numar_tranzactii++;
            System.out.println("_______________________________________________");
            System.out.println(" vanzare la pret=" + pret_vanzare);
            System.out.println(" valabil la data de =" + SDF_ORA.format(new Date(data * 1000)));
            valoare = moneda_cumparata * pret_vanzare;
            e_cumparata = false;
            System.out.println("valoare=" + valoare);
        }
    }

    private void cumpar(float pret_cumparare, long data, long de_cand) {
        //daca nu am cumparat deja si pretul nu este zero
        if (!e_cumparata && Float.compare(pret_cumparare, 0.0f) != 0
                //de cand pot cumpara
                && data * 1000 > de_cand) {
            numar_tranzactii++;
            System.out.println("_______________________________________________");
            System.out.println("cumparare la pret==" + pret_cumparare);
            System.out.println(" valabil la data de =" + SDF_ORA.format(new Date(data * 1000)));
            moneda_cumparata = valoare / pret_cumparare;
            e_cumparata = true;
        }
    }
Adaugă la favorite Legătură permanentă.

Lasă un răspuns

Fii primul care lasă un comentariu

avatar
  Subscribe  
Notificare