Allmänt meddelande

Collapse
No announcement yet.

Spara högsta värdet på depå

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

  • Spara högsta värdet på depå

    Hej!

    Försöker skapa ett script som trackar högsta värdet på depån, tanken är att scriptet sätter en "TP" för att hämta hem ackumulerad förlust.

    Försökt skapa något som sparar undan värdet på Cash() , med RetVal, GetVal etc. Har dock dålig erfarenhet om hur dessa kommandon fungerar. Detta är en del av ett annat säljscript, får dock inte detta att fungera i analysbänken...

    Någon skarpsinnad som kan ta en titt på koden nedan, alternativt ge tips på hur man kan uppnå detta på annat sätt? (tex spara undan punkter etc).. Vill som sagt kunna testa i bänken..


    Tack på förhand
    /Petter


    i1(


    depå=add(CASH(a),CASH(t)) {totalt depåvärde}

    okT=not(ge(GetVal(4),GetVal(3))) {True om senast sparade depåvärde inte är samma eller högre som högsta depåvärde}
    takeProfit=ge(depå,GetVal(3)){Trigger, nuvarande depå är samma nivå som tidigare högsta depåvärde}

    {==========skriv in nya värden i tp räknare==========}
    depStörre=gt(depå,GetVal(3))
    trigg=and(takeProfit,innehav) {samma som säljtrigger}
    depHögsta=IF(and(depStörre,trigg),RetVal(depå,3),0) {spara depåvärde om större än tidagare}
    depNu=IF(trigg,RetVal(depå,4),0) {spara nuvarande depåvärde}

    {==========säljtrigger===============================}
    sälj=and(takeProfit,1) {säljtrigger}


    )

  • #2
    Är det i Analysbänken du vill spara högsta depåvärde?

    Comment


    • #3
      Ja precis, eller rättare sagt jag vill skapa ett script som jag kan testa i analysbänken, där högsta depåvärde i bakåttestet sparas undan.

      Sen om jag kan använda samma script skarpt är det ju positivt.

      /Petter

      Comment


      • #4
        Retval/Getval fungerar endast "flyktigt" live, dvs inom samma script och inom en scriptexekvering. Men däremot kan tex SetgvarIf()/Getgvar() används, eller ännu hellre SetiniIf() och GetIni() som inte riskerar att tappa värdet i händelse av omstart osv.

        konto=sub(add(cash(t),cash(a)),mult(2,cash(s))))
        värde=getini(2000)
        setiniif(konto,2000,gt(konto,värde))

        sparar undan kontovärdet i ini-cell 2000 som ligger på disk i filen:

        c:/programdata/autotraderbas/scriptvariables.ini

        Borde fungera både i bänken och live. Möjligen att man behöver nolla cellen live om man ändrar nåt med kontot osv.

        Comment


        • #5
          Fungerar kanske på testkonto, men definitivt inte på skarpt konto.

          Comment


          • #6
            Varör inte? Är det någon bugg kanske, jag har inte hunnit testköra det.

            Comment


            • #7
              cash(a) är netto av long och short.
              cash(t) verkar bero på typ av konto(kf, isk eller vanlig depå) och om det finns kreditavtal för tex terminer. Dessutom om man har använt krediteten eller ej.

              Comment


              • #8
                Ah, jo det kan stämma. Har man inte använt kredit tror jag den ska stämma fint.
                Borde gå att lura ut hur krediten ser ut, tex med Cash(c) eller likn.

                Comment


                • #9
                  Tack för svar!

                  Live ser det ut som setiniif() fungerar bra, i bänken verkar den dock inte vilja skriva värden till scriptvariables.ini.. Är jag ensam om etta problem?

                  /Petter

                  Comment


                  • #10
                    Det skrivs inget till själva filen från bänken, men det borde fungera att läsa ut i bänken? Annars kan man använda vanliga globala celler i bänken, de vet jag funkar.

                    Comment


                    • #11
                      Cash(t) fungerar inte då det innehåller belåningsvärde även om ingen kredit används. Dessutom krånglar säkerhetskrav och terminssaldo till det. Jag brukar först titta på webben hur depåvärdet är beräknat. Finns det ett gammalt historiskt kredisaldo eller ej. Finns det inget kreditsaldo kan man helt enkelt använda add(cash(n),cash(a)). Det räcker med att kreditsaldot utnyttjas en gång så ligger den kvar om även om ingen kredit används. Dessutom kommer inte terminsaldo med och om man vill ha med det får scripten beräkna värdet. Finns det kreditsaldo lägger jag till det manuellt typ:

                      kreditsaldo:=x
                      depå=sub(add(cash(n),cash(a),kreditsaldo)

                      Det vore bra om någon vet ett enhetligt sätt att beräkna depåvärdet.

                      Edit: Jag handlar själv inte så mycket minifutures. Att tänka på är att innehavet redovisas till senaste trade även om det är glest mellan affärerna.
                      Last edited by Henric; 2020-05-28, 15:49.

                      Comment


                      • #12
                        Ok, men vad returnerar cash(c)? Kan den användas för att nolla ut påverkan från kreditsaldot?

                        Comment


                        • #13
                          cash(c) är nära kreditsaldot på webben, men inte samma värde. Jag har bara ett konto med kreditsaldo och kan ej verifiera. Om cash(c)=kreditsaldo går det i alla fall på detta kontao att beräkna depåvärdet som:

                          sub(add(cash(a),cash(n)),cash(c))

                          Edit: Detta måste innebära kreditsaldo utan att krediten används läggs på cash(n)
                          Last edited by Henric; 2020-05-28, 16:19.

                          Comment


                          • #14
                            Ursprungligen postat av Rikard Autostock Visa inlägg
                            Det skrivs inget till själva filen från bänken, men det borde fungera att läsa ut i bänken? Annars kan man använda vanliga globala celler i bänken, de vet jag funkar.

                            Försöker spara undan värden till ini fil, läste denna tråd. Stämmer det att det inte går att skriva vid bänkkörning?

                            Mitt problem är att mitt skript inte skriver alls, ser ok ut i debug förutom att skrivning inte sker. Jag har kopplat skript på en USA aktie för att den ska köras.
                            Måste man ha setinif i ordermodell för att den ska skriva eller räcker det med att koppla till ett diagram?

                            Väldigt synd om det inte går att få setinif i bänken, man vill ju kunna köra både live och testa med samma lösning.

                            Comment


                            • #15
                              Hittade annan tråd med svar att dynamiskt cellnummer inte fungerar med

                              SetIniIf. När jag hårdkodade istället fungeradet det.

                              https://www.autostock.se/vbulletin/s...68&postcount=8

                              Skulle vara bra om
                              alla förutsättningar och begränsningar fanns beskrivna i scriptref (manualen) så man slipper leta i forumet.

                              Det viktigaste tycker jag är att manualen skriver ut när något t.ex. inte fungerar i bänken som live osv.

                              Comment

                              Working...
                              X