Allmänt meddelande

Collapse
No announcement yet.

När villkår 1 är uppfyllt, ignorera första villkåret för att uppfylla nästa villkår

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

  • När villkår 1 är uppfyllt, ignorera första villkåret för att uppfylla nästa villkår

    Finns säkert många enkla lösningar på mitt lilla problem, men som nybörjare får jag inte till det. Det är ett litet säljskript jag arbetar med.

    Jag vill testa om ett villkår är uppfyllt, när det villkåret är uppfyllt så vill testa om nästa villkår är uppfyllt utan att bry mig om det första villkåret.

    Så jag vill först se om villkåret - hög=gt(c,aref(hhv(c,10),1)) - är uppfyllt.

    När det villkåret har uppfyllts så vill jag vänta tills villkåret - sälja=lt(c,sar2(0.02,0.2,100)) - är uppfyllt innan jag säljer utan att längre bry mig om första villkåret

    Tanken är att jag ska rida ut uppgångar. Hur kodar jag detta på enklast sätt...
    AlgoPal - Emotionless Trading - Hyr ut våra trading algoritmer for Autostock via algopal.com

  • #2
    Så om jag förstår rätt är detta på säljsidan helt och hållet?
    Först kolla att gt(c,aref(hhv(c,10),1)) är uppfyllt och därefter sälja när C passerar SAR2?

    Det går i princip att koppla ihop direkt, villkoren behöver inte "inträffa i ordning" för att kunna testas, man kan "komma ihåg" att det första varit sant i x antal staplar med en till HHV.

    har_varit_hög_senaste_x=hhv(gt(aref(hhv(c,10),1)),20) {kommer ihåg 20 staplar bakåt}

    sälj=and(har_varit_hög_senaste_x,lt(c,sar2(0.02,0.2,100)))

    Comment


    • #3
      typo?: hhv(gt(aref(hhv(c,10),1)),20)

      Comment


      • #4
        Humm, ska testa ikväll, men jag tror att det villkåret kan komma att vara sant vid vissa tillfällen omedelbart efter att jag fått köpsignal.
        AlgoPal - Emotionless Trading - Hyr ut våra trading algoritmer for Autostock via algopal.com

        Comment


        • #5
          Ok, men du kan ju alltid blocka köpsignal om kursen redan är under SAR2?

          Comment


          • #6
            ..och/eller kolla att 10 dagars högsta har skett efter köpet. Beror generellt på upplägget.
            Last edited by Henric; 2019-11-20, 16:39.

            Comment


            • #7
              Försöker testa Henrics upplägg, bör fungera tänker jag.
              Menar att koden nedan bör fungera, men jag jag får programfel när jag kör backtest. Testar jag syntaxen får jag inget fel.

              HelaDagarSedanKöp=Int(Sub(Date(),lasttrade(b,d)))
              har_varit_hög_sen_köp=hhv(gt(c,aref(hhv(c,10),1)),HelaDagarSedanKöp)
              sälja1=and(har_varit_hög_sen_köp,lt(c,sar2(0.02,0.2,100)))

              Ser någon vart problemet ligger?
              AlgoPal - Emotionless Trading - Hyr ut våra trading algoritmer for Autostock via algopal.com

              Comment


              • #8
                Tror hela scriptet behövs, det är tex inte terminerat korrekt.

                PS. Såg just att du kör dynamiskt antal perioder också, då behövs max antal reserveras med :100 tex för 100 perioder.


                har_varit_hög_sen_köp=hhv(gt(c,aref(hhv(c,10),1)),HelaDagarSedanKöp:100)
                Last edited by Rikard Autostock; 2019-11-21, 19:57.

                Comment


                • #9
                  Får fortsatt programfel. Här är hela skriptet
                  Tror att jag utgick från ett av standardskripen från början.
                  ____________

                  minuter:=7
                  account_ok=not(eqv(cash(d),0))
                  inpådagen=gt(frac(date()),0.376)
                  köpdag=lasttrade(b,d)
                  stängning=le(mult(1440,sub(market(c),frac(date()))),minuter)
                  innehav=gt(portfolio(v),0)

                  HelaDagarSedanKöp=Int(Sub(Date(),lasttrade(b,d)))

                  HarVaritHögSenKöp=hhv(gt(c,aref(hhv(c,10),1)),HelaDagarSedanKöp:100)
                  sälja1=and(HarVaritHögSenKöp,lt(c,sar2(0.02,0.2,100)))

                  1days=ge(cmpref(d,1,a),köpdag)
                  sälj1=and(and(and(and(sälja1,1days),innehav),stängning),inpådagen)
                  sälj2=and(sälj1,account_ok)
                  mult(sälj2,10)


                  {@A(0,)}
                  AlgoPal - Emotionless Trading - Hyr ut våra trading algoritmer for Autostock via algopal.com

                  Comment


                  • #10
                    Kan vara extra objekt i samma upplösning som scriptet. Cmpref() behövs inte i det fallet.

                    1days=ge(aref(d,1),köpdag)

                    Och skippa extra objektdefinitionen längst ned så tror jag det ska rulla i bänken.

                    Last edited by Rikard Autostock; 2019-11-21, 21:28.

                    Comment


                    • #11
                      HelaDagarSedanKöp=Int(Sub(Date(),lasttrade(b,d)))

                      Jag tror uttrycket kan bli större än 100 som är reserverat med :
                      Prova så att inte det kan ske.

                      Comment


                      • #12
                        Tack, men det hjälpte inte. Tog bort compref och testade att reservera fler perioder :-/


                        minuter:=7
                        account_ok=not(eqv(cash(d),0))
                        inpådagen=gt(frac(date()),0.376)
                        köpdag=lasttrade(b,d)
                        stängning=le(mult(1440,sub(market(c),frac(date()))),minuter)
                        innehav=gt(portfolio(v),0)

                        HelaDagarSedanKöp=Int(Sub(Date(),lasttrade(b,d)))

                        HarVaritHögSenKöp=hhv(gt(c,aref(hhv(c,10),1)),HelaDagarSedanKöp:10000)
                        sälja1=and(HarVaritHögSenKöp,lt(c,sar2(0.02,0.2,100)))

                        1days=ge(aref(d,1),köpdag)
                        sälj1=and(and(and(and(sälja1,1days),innehav),stängning),inpådagen)
                        sälj2=and(sälj1,account_ok)
                        mult(sälj2,10)
                        AlgoPal - Emotionless Trading - Hyr ut våra trading algoritmer for Autostock via algopal.com

                        Comment


                        • #13
                          10000 perioder låter väldigt mycket, det går åt sjukt mycket RAM i så fall. Men det kan hara en låsning också. Prova att stänga programmet och processen Analyzer.exe och starta om igen.

                          Comment


                          • #14
                            Nog bättre att sätta ett maxvärde.

                            HelaDagarSedanKöp=mx(Int(Sub(Date(),lasttrade(b,d))),100)

                            Comment


                            • #15
                              Testat att starta om Autotradern och Analysern, det hjälpte inte. Har testat en massa olika perioder, men det hjälpter inte heller.

                              Kör jag någon annan trigger i skriptet och sätter braketter runt - {HarVaritHögSenKöp=hhv(gt(c,aref(hhv(c,10),1)),HelaDagarSedanKöp:200)} - så får jag inte progremfel...
                              AlgoPal - Emotionless Trading - Hyr ut våra trading algoritmer for Autostock via algopal.com

                              Comment

                              Working...
                              X