Olika BetSize
Satt å fipplade med lite olika metoder att välja storlek på positionerna här under dagen,, iaf skillnaderna är oftast väldigt stora så tänkte lägga in en kodsnutt i easylanguage till lite olika ,,bara att klippa in i toppen på signalscriptet och skriva in UnitsToTrade vid köp/säljvilkoren t.ex (buy UnitsToTrade shares at {nivå} stop;) sen kan man välja mellan 5 olika från chartet,,någon kanske har lite nöje med koden eller lämna gärna förslag på andra varianter..lägger in bild på AA med samma system men med dom olika varianterna..
0: Fixedratio
1: Compounding
2: FixedFractionATR
3: KellyFactor
4: FixedFractionATR Safe
mvh PQ..
{kod under}
Inputs:ATRL(20),PctE(50),Select(1);
Vars:Equity(0);
{FFATR Vars}
vars: fFraction(0),EqPct(0),MarketVolatility(0),AmountToRisk(0),UnitsToTrade(0);
{Kelly Vars}
Vars: WinPct(0),PayOff(0),AvgProf(0),AvgLoss(0),KellyF(0),UnitsToTradeKf(0);
{FixedFractionATR Safe Vars}
Vars: AmountToRiskHalf(0);
{******Position Sizing******}
{PQ.. 2005-09-26}
{******Fixed Ratio******}{Select0}
if Select = 0 then
begin
Equity = 50000;
UnitsToTrade = Round(Equity / close,0);
end;
{******Compund******}{Select1}
if Select = 1 then
begin
Equity = 50000 + netprofit;
UnitsToTrade = Round(Equity / close,0);
end;
{******FixedFractionATR******}{Select2}
if Select = 2 then
begin
fFraction = 1 / 100;
EqPct = PctE / 100;
MarketVolatility = Avgtruerange(ATRL);
Equity = 50000 + netprofit;
AmountToRisk = fFraction * (Equity * EqPct);
if MarketVolatility > 0 then
UnitsToTrade = Round((AmountToRisk / ( MarketVolatility * Bigpointvalue)),0)
else
UnitsToTrade = 0;
end;
{******KellyFactor******}{Select3}
If Select = 3 then
begin
Equity = 50000 + netprofit;
if totaltrades > 30 then
begin
AvgProf = GrossProfit / NumWintrades;
AvgLoss = - GrossLoss / NumLostrades;
WinPct = (NumWinTrades / TotalTrades);
Payoff = (AvgProf/AvgLoss);
KellyF = WinPct - (1-WinPct)/Payoff;
end;
UnitsToTradeKf = Round((Equity * KellyF) / close,0);
if UnitsToTradeKf > 100 then
Unitstotrade = UnitsToTradeKf
else
UnitsToTrade = 100;
end;
{******FixedFractionATR Safe ******}{Select4}
if Select = 4 then
begin
Equity = 50000 + netprofit;
fFraction = 1 / 100;
EqPct = PctE / 100;
MarketVolatility = Avgtruerange(ATRL);
AmountToRisk = fFraction * (Equity * EqPct);
AmountToRiskHalf = fFraction * (Equity * EqPct)/2;
if Positionprofit(1) < 0 then
UnitsToTrade = Round((AmountToRiskHalf / ( MarketVolatility * Bigpointvalue)),0)
else
UnitsToTrade = Round((AmountToRisk / ( MarketVolatility * Bigpointvalue)),0);
end;
Inlägget är redigerat av författaren.

Visa sida
Ogilla! 3
Gilla!
Verkar ju kanon .. :)
/Utsikt