Show/Hide Toolbars

Hitta kursvinnare - Hjälpmanual

Navigation: HkScript

Skapa strategiscript (Hk v4.5)

Scroll Föregående Topp Nästa Fler

För att skapa strategiskript (eller övriga egna signaler & strategier), öppna meny Verktyg -> Inställningar -> Strategi & signal.

HkScript-strategi

* Välj här att ändra till alternativet "Script" enligt bilden ovan.
* Strategiscripten markeras i listan med symbolen "Script" i högerkolumnen.

 

Hitta kursvinnares grundinställning är att strategier skapas via ett enklare användargränssnitt, se avsnittet Skapa egna strategier och signaler,
och inte med script. Dvs det finns två lägen, som ändras via alternativet "Script".
HkScript-strategi-byta

1."Lägg till enkel Strategi". (Script Av)

2."Lägg till Strategiscript". (Script )
 

När "Script" är aktiverat:
Klicka "Lägg till Strategiscript" för att skapa nytt strategiscript.
 
HkScript-nytt_strategi-script

* Ett kodfönster kommer nu skapas med det nya strategiskriptet.

 

 

1. Villkor för Signalstyrka

Nästa steg är att ange de köpvillkor och eventuella säljvillkor som ska gälla. Villkoren kan baseras på kurser, tekniska indikatorer och tekniska formationer.  
Ett enkelt exempel med glidande medelvärden kan se ut så här, i fallet där villkoret först sparas i Signal-objketet:

if (MA1(20)[0] > MA2(50)[0])
 Signal.SetPlus();
else if (MA1(20)[0] < MA2(50)[0])
 Signal.SetMinus();

 

I exemplet ovan använde vi "större än" som villkor när vi jämförde MA1 mot MA2. (Signal sattes till Plus).
Förutom "större än" så finns såklart många andra sätt att skapa köpvillkor, och det går även direkt göra Köp/sälj via "Entry",  till exempel:
 
Indikator korsar upp över en nivå:
if (StoS(14).crossAbove(20))
Strategy.EntryLong();

 

Indikator korsar upp över annan indikator:
if (MA1(5).crossAbove(MA2(10)))
Strategy.EntryLong();
 
Stigande indikator:
if (RSI(14)[0] > 70 && RSI(14).isUp())
Strategy.EntryLong();
 
Händelse har inträffat (här Rapport och Key reversal):
if (Fa._isReportDay() && Pattern.Rev_pos())
Strategy.EntryLong();
 

Jämförelsevillkor och logiska operatorer

Vid skapande av mer avancerade villkor används logiska operatorer, såsom och, eller och inte, för att kombinera flera uttryck.

De skrivs i HkScript på samma sätt som i många andra programspråk:

Operator

Förklaring

Exempel

&&

Och – båda villkoren måste vara sanna

<villkor1> && <villkor2>

||

Eller – något av villkoren måste vara sanna

<villkor1> || <villkor2>

!

Inte – inverterar ett villkor

!<villkor1>

&& !

Och inte – ett sant villkor och ett inte sant

<villkor1> && !<villkor2>

 
Du kan alltså bygga upp komplexa logiska uttryck genom att kombinera flera villkor.

För att hålla koden tydlig rekommenderas att först lagra varje delvillkor i en lokal variabel, och sedan kombinerar dessa i en if-sats.

Det gör koden mer läsbar och enklare att felsöka.
 

Exempel 1
local villkor1 = RSI(14)[0] < 30;
local villkor2 = MA1(20)[0] > MA2(50)[0];
local villkor3 = VOL()[0] > VOL_MA(20)[0];
if (villkor1 && (villkor2 || villkor3) && Strategy.IsClosed())
Strategy.EntryLong();
 

Exempel 2
local oversalt = RSI(14)[0] < 30;
local stigande = Close[0] > Close[-1];
if (oversalt && stigande && Strategy.IsClosed())
Strategy.EntryLong();

 
 

2. Entry för Köp (eller kort position)
Nästa steg är att ange hur strategin faktiskt ska genomföra köp- eller säljaffärer.

Detta görs med funktionerna i objektet Strategy, som används för att öppna och stänga positioner.
 

De mest grundläggande funktionerna är:

Strategy.EntryLong() – öppnar en lång position (köp)

Strategy.EntryShort() – öppnar en kort position (sälj/kort)

Strategy.CloseAll() – stänger alla öppna positioner

 
Dessa funktioner anropas vanligtvis när dina köp- och säljvillkor uppfylls.

Du kan välja att anropa dem direkt, eller låta signalerna (Signal.SetPlus() / Signal.SetMinus()) styra köpen.
 
Ett enkelt exempel:
// --- Entry ---
if (Strategy.IsClosed() && Signal.ChangedToPlus())
 Strategy.EntryLong();

 
Här utförs köpet först när signalen ändrats till "+", dvs ChangedToPlus(), och positionen stängs när negativ signal uppstår.

Denna struktur är mycket tydlig och används ofta i strategier som testas över tid.
 

Du kan även använda hjälpfunktioner för att kontrollera aktuell position:

Strategy.IsOpen() – har öppen position

Strategy.IsClosed() – ingen öppen position

Strategy.IsLong() – en lång position är öppen

Strategy.IsShort() – en kort position är öppen

 

Dessa gör det enkelt att exempelvis förhindra dubbla köp, eller att skapa särskilda exit-regler för korta positioner.
 

3. Exit- och stoppvillkor

Nästa steg är att ange hur strategin ska stänga positioner – antingen via säljsignaler eller automatiska stoppar.

Detta kan göras med både manuella villkor och funktioner i Strategy-objektet.
 

Vanliga sätt att stänga en position:

oVillkorsbaserad exit (t.ex. när en indikator passerar ett värde)

oStop-loss – stänger när priset faller under viss nivå

oProfit target – stänger vid uppnådd vinstnivå

oTidsbaserad exit – stänger efter ett visst antal staplar
 

De viktigaste funktionerna är:

Strategy.SetPriceStop(price)  – anger en prisnivå där positionen ska stängas om kursen går emot dig.

Strategy.SetPriceTarget(price) – anger en prisnivå för vinsttagning.

Strategy.CloseAll() – stänger manuellt alla positioner.
 

Exempel på villkorsbaserad exit:

if  (RSI(14)[0] > 70)
 Strategy.CloseAll();
 
Exempel på prisnivå för vinsttagning:

if (Strategy.IsClosed() && Signal.ChangedToPlus())
{ // --- Entry ---
 Strategy.EntryLong();
 Strategy.SetPriceTarget(Close[0] * 1.05);
}
 
Exempel på tidsbaserad exit:

if  (Strategy.BarsSinceEntry() >= 5)
 Strategy.CloseAll();
 

Genom att kombinera olika exits (prisstop, vinstmål, villkorsstyrda exits) kan du bygga flexibla och realistiska handelsmodeller.
Se alla verktyg i Referenslistan för Strategiscript.