Jag vill när en trigger löser ut vara säker på att få avslut på hela antalet poster som önskas. Anledningen till att jag helst inte vill lösa detta genom att buda långt förbi aktuell kurs är att market makern ibland hoppar ur någon sekund här och där, och då riskerar man att få betydligt sämre kurs på avslutet om man har otur vilket har hänt i test. Har istället skrivit en snurra som ser till att man fortsätter handla om man inte fått fullt avslut på första försöket.
Antalet som ska handlas ligger i global cell 1 i exemplet. Triggern löser ut om detta värde är över 0.
I global cell 2 sparas portföljvärdet, så att man kan jämföra varv för varv om det har ändrats sedan sist, i så fall antar man att man har handlat.
Om något handlats sedan förra varvet ("antal_diff") så ska det dras av från värdet i global cell 1, så att man endast handlar det som återstår i nästa varv. Om man fått avslut på hela det önskade antalet så ska det innebära att värdet i global cell 1 blir 0, så att scriptet inte fortsätter handla.
antal_diff=sub(portfolio(v),GetGVar(2))
SetGVarIf(sub(GetGVar(1),antal_diff),add(thisindex,1),gt(antal_diff,0))
SetGVarIf(portfolio(v),2,not(eqv(antal_diff,0)))
add(0,GetGVar(1))
Detta funkar fint i test, så till vida att den slutar handla efter att ha fått "avslut" på första försöket då portfolio(v) har ändrats med samma antal som önskades. Men kommer det att funka lika bra om man kör skarpt? Det hänger på att portfolio(v) hinner uppdateras omedelbart om man fått avslut på en order, redan innan nästa varv i scriptet körs. Annars skulle den fortsätta handla samma antal tills portfolio(v) hunnit uppdateras.
Finns det någon risk att portfolio(v) inte uppdateras lika fort när man kör skarpt som när man kör på testkonto? Och finns det i så fall någon bra lösning i allmänhet?
Antalet som ska handlas ligger i global cell 1 i exemplet. Triggern löser ut om detta värde är över 0.
I global cell 2 sparas portföljvärdet, så att man kan jämföra varv för varv om det har ändrats sedan sist, i så fall antar man att man har handlat.
Om något handlats sedan förra varvet ("antal_diff") så ska det dras av från värdet i global cell 1, så att man endast handlar det som återstår i nästa varv. Om man fått avslut på hela det önskade antalet så ska det innebära att värdet i global cell 1 blir 0, så att scriptet inte fortsätter handla.
antal_diff=sub(portfolio(v),GetGVar(2))
SetGVarIf(sub(GetGVar(1),antal_diff),add(thisindex,1),gt(antal_diff,0))
SetGVarIf(portfolio(v),2,not(eqv(antal_diff,0)))
add(0,GetGVar(1))
Detta funkar fint i test, så till vida att den slutar handla efter att ha fått "avslut" på första försöket då portfolio(v) har ändrats med samma antal som önskades. Men kommer det att funka lika bra om man kör skarpt? Det hänger på att portfolio(v) hinner uppdateras omedelbart om man fått avslut på en order, redan innan nästa varv i scriptet körs. Annars skulle den fortsätta handla samma antal tills portfolio(v) hunnit uppdateras.
Finns det någon risk att portfolio(v) inte uppdateras lika fort när man kör skarpt som när man kör på testkonto? Och finns det i så fall någon bra lösning i allmänhet?
Comment