Allmänt meddelande

Collapse
No announcement yet.

Enkel Money mgmt kod

Collapse
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Enkel Money mgmt kod

    Har ngn ett tips på hur man enklast skapar ett system som handlar baserat på tidigare innehav?

    Om man skriver det i Easy Language skulle det kunna se ut så här:
    If signal1<signal1[1] and current contracts=0 then sell 4 contracts at xxxxx;
    If signal1<signal1[1] and current contracts=4 then sell 4 contracts at xxxxx;
    If signal1<signal1[1] and current contracts>=8 then sell 2 contracts at xxxxx;

    If close crosses over signal1 exitlong;{säljer allt innehav long}

    If signal1>signal1[1] and current contracts=0 then buy 4 contracts at xxxxx;
    If signal1>signal1[1] and current contracts=4 then buy 4 contracts at xxxxx;
    If signal1>signal1[1] and current contracts>=8 then buy 2 contracts at xxxxx;

    If close crosses under signal1 exitshort;{säljer allt innehav short}

    Har även funderat lite på kursen som genererar signal och nivå för order. Det bör vara baserat på "tick"-värdet alltså senaste avslutskurs för termin eller aktie. Hur hämtar man det enklast, för jag kan ju ite använda i1( ) eller hur det blir på en minutsbasis eller?
    gbd

  • #2
    current_contracts:=portfolio(v)
    signal1:= <scriptet för signal1 här>
    ifner:=lt(signal1,aref(signal1,1))
    ifupp:=gt(signal1,aref(signal1,1))
    port0:=eqv(current_contracts,0)
    port4:=eqv(current_contracts,4)
    port8:=ge(current_contracts,8)
    if4:=if(port8,2,0)
    if3:=if(port4,4,if4)
    if2:=if(port0,4,if3)
    sellantal:=if(not(ifner),0,if2)
    buyantal:=if(not(ifupp),0,if2)

    Antaldelarna returnerar noll ifall inte allt är uppfyll enligt ena eller andra principen. Annars skiljt från noll.

    Senaste tick blir ju samma som close för senaste period som bara betecknar c helt enkelt. Sedan vilken upplösning spelar ingen roll då, senaste close är alltid senaste close.

    Vill du låta limit vara samma som close så kan ett vl)-script bli

    add(c,0)

    Det är hela scriptet.

    current_contracts:=portfolio(v)
    signal1:= <scriptet för signal1 här>
    ifner:=lt(signal1,aref(signal1,1))
    ifupp:=gt(signal1,aref(signal1,1))
    port0:=eqv(current_contracts,0)
    port4:=eqv(current_contracts,4)
    port8:=ge(current_contracts,8)
    if4:=if(port8,2,0)
    if3:=if(port4,4,if4)
    if2:=if(port0,4,if3)
    sellantal:=if(not(ifner),0,if2)
    buyantal:=if(not(ifupp),0,if2)
    sellantal

    kan vara va)-scriptet för att ange antal i orderns sekvens för sälj.

    current_contracts:=portfolio(v)
    signal1:= <scriptet för signal1 här>
    ifner:=lt(signal1,aref(signal1,1))
    ifupp:=gt(signal1,aref(signal1,1))
    port0:=eqv(current_contracts,0)
    port4:=eqv(current_contracts,4)
    port8:=ge(current_contracts,8)
    if4:=if(port8,2,0)
    if3:=if(port4,4,if4)
    if2:=if(port0,4,if3)
    sellantal:=if(not(ifner),0,if2)
    buyantal:=if(not(ifupp),0,if2)
    buyantal

    kan vara va)-scriptet för att ange antal i orderns sekvens för köp.

    Nu är det för mig lite oklart vad du menar att signal1 skall vara för typ av signal.

    Men triggersignaler kan i princip vara

    gt(c,signal1)

    eller

    lt(c,signal1)

    så för sl)-script för sekvensen med innehållet för signal1, och avsluta med testen bara.

    Intradayprefix för att bestämma upplösning kan ju behövas då.

    Comment


    • #3
      Tack Lasse,

      Kan ovanstående även hantera att modellen fortsätter utöver 8 kontrakt, stannar den inte på 8?
      Jag vill bygga på positionen i princip i det oändliga tills säkerheten slår i taket.

      Får man komma med en till fråga om hur man smartast tillför ett villkor som tar hänsyn till entry-kursen som man fick i föregående position?
      D.v.s om man köpt 4 kontrakt och vid nästa köp av 4 till vill man lägga ett avstånd på säg 3 punkter innan nästa order läggs.

      Då kan man säkerställa att föregående entry har gått in i vinst innan nästa entry kommer och vänder det då direkt kan man lägga in en break-even stopp så att man kan gå ur positionen med ett 0-resultat.

      Bör man använda getval och retval för det?
      (Jag tänkte försöka snåla med användningen av minnescellerna)
      gbd

      Comment


      • #4
        Har du minst 8 fortsätter den att köpa om den får trigger. Jag försökte bara följa vad jag tror Easylanguage-grejerna gjorde.

        lastentry:=lasttrade(b,p)
        vinst:=gt(c,lastentry)

        VPD dvs volym, pris och datum+tid för senaste trans på köpsidan och säljsidan kan du alltid adressera på detta sättet via lasttrade() utan att förbruka retval()-celler.

        Har du något i cellerna 0-4 i triggerscriptet, så lagras de undan med varje trans och kan hämtas med lasttrade(BS,01234) dvs antingen B eller S, och något av siffrorna där.

        Det är ett flyttal som lagras undan så du kan administrera vad du vill egentligen med hjälp av det. Flytta info mellan ordermodeller, eller mellan sekvenser, vad du vill.

        Comment


        • #5
          Du kanske vill pytsa på enligt denna principen här varje minut som scripten körs.

          Eller så kan du få fram vad du har tillgängligt via funktionen Cash() som ger vad depån säger är tillgängligt att handla för.

          Du kanske vet att du har 500 000 i kredit som inte syns i tillgängligt att handla för.

          mincash:=add(cash(),500000)

          Så du kan beräkna fram direkt antal på studs som du kan handla för om du så vill.

          Comment


          • #6
            Ahhh, excellent!!!

            Jag missade att läsa ge, det såg i all hast ut som eqv på skärmen, jag blev nog bländad av din förmåga att skriva kod.

            Tusen tack Lasse!
            gbd

            Comment

            Working...
            X