Allmänt meddelande

Collapse
No announcement yet.

Stoploss säljposition och nestlade if-satser

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

  • Stoploss säljposition och nestlade if-satser

    Testade att nestla några if-satser men det vill sig inte:

    lastsell:=LastTrade(S,P) {hämtar värde från "lokala ordertrans"}
    level1:=add(lastsell,2) {stoploss -2 punkter}
    level2:=sub(lastsell,1) {breakevenstop +1 punkt}
    level3:=mult(L,1.003) {trailingstop L X +0,3%}
    level4:=mult(lastsell,0.98) {tröskelvärde trailingstop 2%}
    notbreakeven:=gt(c,level2)
    trailingstop:=lt(c,level4)
    if2:=if(trailingstop,level3,level2)
    if1:=if(notbreakeven,level1,if2)
    stopp:=if1
    {för grafisk visning}
    i1(
    add(stopp,0) {returnerar stoppnivån för grafisk visning}
    )

    Att nestla flera if-satser i varann har jag lite svårt med i Friendly men visst borde det här gå? AV någon anledning verkar det inte fungera, något tips att enklast hantera detta?

    Göran
    gbd

  • #2
    Villkoren och allt funkar säkert. Det saknas bara en bit, och det är en avslutande test mot den framvalda stoppnivån.

    Det är ju massa olika levels som du väljer mellan, men ingen test sedan på det som kommer ut av if-satserna.

    Byt ut

    add(stopp,0) {returnerar stoppnivån för grafisk visning}

    mot

    gt(c,stopp)

    eller liknande.


    Men sedan till logiken.

    Det den gör är att vid ordern så gäller stopp -2 punkter. Om man gått förbi breakeven så gäller den nivån. Går man 2% vinst väntar man bara på 0.3% åt fel håll innan det bryter.

    Lägg in lite draw() så ser du nivåerna hela tiden.

    lastsell:=LastTrade(S,P) {hämtar värde från "lokala ordertrans"}
    level1:=add(lastsell,2) {stoploss -2 punkter}
    level2:=sub(lastsell,1) {breakevenstop +1 punkt}
    level3:=mult(L,1.003) {trailingstop L X +0,3%}
    level4:=mult(lastsell,0.98) {tröskelvärde trailingstop 2%}
    notbreakeven:=gt(c,level2)
    trailingstop:=lt(c,level4)
    if2:=if(trailingstop,level3,level2)
    if1:=if(notbreakeven,level1,if2)
    stopp:=if1
    {för grafisk visning}
    i1(
    draw(mult(notbreakeven,10),2,rsbf)
    draw(mult(trailing,5),3,bsbf)
    add(stopp,0) {returnerar stoppnivån för grafisk visning}
    )

    Då får du en röd flagga så länge inte breakeven, och blå ifall nöjdnivån.

    Dock en varning,

    du kör 1 minuts upplösning

    level3:=mult(L,1.003) {trailingstop L X +0,3%}

    och L plockar low i varje 1-minuts stapel. Det betyder att du måste röra dig 0.3% i just den perioden.

    Lite snävt kanske att kräva sådär 3 punkter inom en minut för att lösa ut.

    Mitt förslag är att lägga en slide med en llv() på den nivån


    level3:=mult(Llv(L,5),1.003) {trailingstop L X +0,3%}

    Här tar den lägst per 5 senaste perioder och kollar mot.

    Comment


    • #3
      Tack!

      Men då borde skriptet fungera för produktionsversionen har
      gt(c,stopp), den grafiska bara för att se hur den ritar ut det hela.

      Ska testa med draw och se vad som händer, sen hade jag nog blandat en logik för en stop för long position och en för kort.
      Det ska vara en lastbuy i den här eftersom stopparna ligger under
      kursen och jag hänvisar till en low.
      Det bästa är nog att hänvisa till dagens low(efter kl. 16.00) alternativt gårdagens low tidigare på dagen. Jag lägger in en Cmpref för level3 för daily low.
      Cmpref(C,0,B) blir väl dagens och Cmpref(C,1,B) gårdagens?
      gbd

      Comment


      • #4
        Om det är för säljposition som du skrev skall det vara som det är, dvs du kollat vad du blankade vid för pris.

        Om du har ett extra objekt B som har EOD-upplösning blir det som du säger.

        Comment

        Working...
        X