คือ ผมต้องการทำ backtest ของ set50index future คับ ที่นี้ก้อได้ตั้งค่าต่างๆ set ค่าต่างๆจนคิดว่าถูกต้องแล้ว แต่ผล test ที่ได้มัน ไม่ Match กับความเป็นจริงพอไปเช็คดู ......คือระบบ วางไว้ประมานนี้คับ
1. เงินต้น 1,000,000
2. positionsize ในการวางเงินทุกรอบคือ 100% (วางเงินหมดหน้าตัก)
3. Multiplier =200 (ตัวคูณดัชนี)
4.ใช้ levaerage คงที่เป็น % ของมูลค่าใน 1 สัญญา (ในที่นี้ใช้ 30% ของมูลค่าใน 1 สัญญาเพื่อวางหลักประกันใน 1 สัญญา ...ทำแบบนี้ทุกครั้งที่เปิดสถานะ)
5.ระบบ จะคำนวณ มาว่า ถ้าวางเงินหมดหน้าตัก 100% ที่ leverage 30% จะเปิดสถานะได้กี่สัญญา
พอรัน backtest ผลลัพธ์มันไม่ถูกต้อง โปรแกรมมันให้ผลลัพธ์ของจำนวนสัญญา(Contract) ไม่ตรงกับความเป็นจริง ทั้งๆที่ผมก้อตั้งค่า Margindeposit ให้เป็น 30% มูลค่าสัญญา ณ เวลานั้นๆที่จะเปิดสถานะ
.... สูตรตามด้านล่างคับ
// General setting
SetOption("InitialEquity", 1000000 );
SetOption("CommissionMode",3);
SetOption("CommissionAmount",85);
SetOption("Futuresmode",True);
SetPositionSize(100,spsPercentOfEquity);
TickSize = 0.1;
PointValue = 200;
RoundLotSize = 1;
// Buy and Sell
SetTradeDelays(0,0,0,0);
BuyPrice = Close;
SellPrice = Close;
ShortPrice =Close;
CoverPrice = Close;
//-----------------------------
Buyperfectcon = MACD(3,14)>0;
Totalbuycon = Buyperfectcon AND RSI()>55 ;
// -----------------------------------------------------
Sellperfectcon = MACD(3,14)<Signal(3,14,9) OR MACD(3,14)<0;
Totalsellcon = Sellperfectcon and RSI()<50;
// --------------------------------
Shortperfectcon = MACD(3,14)<0 ;
Totalshortcon = Shortperfectcon AND RSI()<55;
//---------------------------------
Coverperfectcon = MACD(3,14)>Signal(3,14,9) OR MACD(3,14)>0;
Totalcovercon = Coverperfectcon and RSI()>50;
Entry1 = Totalbuycon OR Totalshortcon; // assign Entry condition(Open Long or Open Short)
CloseatXXX = ValueWhen(Entry1,Close,1); // get value of Close price to Closeatxxx under condition Entry1
MarginDeposit_for_1_contract = Closeatxxx*200*0.3; // assign margin deposit on Leverage = 30% per 1 contract
MarginDeposit = MarginDeposit_for_1_contract; // assign margin deposit on Leverage = 30% per 1 contract
Buy = Totalbuycon;
Sell = Totalsellcon;
buy = ExRem( buy, sell );
sell = ExRem( sell, buy );
Short = Totalshortcon;
Cover = Totalcovercon;
Short = ExRem( Short, Cover );
Cover = ExRem( Cover, Short );
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-20);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-30);
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-25);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset=20);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset=30);
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-25);
PlotShapes(IIf(Short, shapeHollowDownArrow, shapeNone), colorYellow, 0, H, -55);
PlotShapes(IIf(Cover, shapeHollowUpArrow, shapeNone), colorSkyblue, 0, L, -55);
//Applystop
// ApplyStop(stopTypeLoss,stopModePercent,2);
*** สอบถามเรื่อง tfex backtest โดยใช้ amibroker เกี่ยวกับการใช้ Leverage รบกวนด้วยคับ ใครเก่งขอเชิญเลยคับ(ต่อภาค 2 คับ)
1. เงินต้น 1,000,000
2. positionsize ในการวางเงินทุกรอบคือ 100% (วางเงินหมดหน้าตัก)
3. Multiplier =200 (ตัวคูณดัชนี)
4.ใช้ levaerage คงที่เป็น % ของมูลค่าใน 1 สัญญา (ในที่นี้ใช้ 30% ของมูลค่าใน 1 สัญญาเพื่อวางหลักประกันใน 1 สัญญา ...ทำแบบนี้ทุกครั้งที่เปิดสถานะ)
5.ระบบ จะคำนวณ มาว่า ถ้าวางเงินหมดหน้าตัก 100% ที่ leverage 30% จะเปิดสถานะได้กี่สัญญา
พอรัน backtest ผลลัพธ์มันไม่ถูกต้อง โปรแกรมมันให้ผลลัพธ์ของจำนวนสัญญา(Contract) ไม่ตรงกับความเป็นจริง ทั้งๆที่ผมก้อตั้งค่า Margindeposit ให้เป็น 30% มูลค่าสัญญา ณ เวลานั้นๆที่จะเปิดสถานะ
.... สูตรตามด้านล่างคับ
// General setting
SetOption("InitialEquity", 1000000 );
SetOption("CommissionMode",3);
SetOption("CommissionAmount",85);
SetOption("Futuresmode",True);
SetPositionSize(100,spsPercentOfEquity);
TickSize = 0.1;
PointValue = 200;
RoundLotSize = 1;
// Buy and Sell
SetTradeDelays(0,0,0,0);
BuyPrice = Close;
SellPrice = Close;
ShortPrice =Close;
CoverPrice = Close;
//-----------------------------
Buyperfectcon = MACD(3,14)>0;
Totalbuycon = Buyperfectcon AND RSI()>55 ;
// -----------------------------------------------------
Sellperfectcon = MACD(3,14)<Signal(3,14,9) OR MACD(3,14)<0;
Totalsellcon = Sellperfectcon and RSI()<50;
// --------------------------------
Shortperfectcon = MACD(3,14)<0 ;
Totalshortcon = Shortperfectcon AND RSI()<55;
//---------------------------------
Coverperfectcon = MACD(3,14)>Signal(3,14,9) OR MACD(3,14)>0;
Totalcovercon = Coverperfectcon and RSI()>50;
Entry1 = Totalbuycon OR Totalshortcon; // assign Entry condition(Open Long or Open Short)
CloseatXXX = ValueWhen(Entry1,Close,1); // get value of Close price to Closeatxxx under condition Entry1
MarginDeposit_for_1_contract = Closeatxxx*200*0.3; // assign margin deposit on Leverage = 30% per 1 contract
MarginDeposit = MarginDeposit_for_1_contract; // assign margin deposit on Leverage = 30% per 1 contract
Buy = Totalbuycon;
Sell = Totalsellcon;
buy = ExRem( buy, sell );
sell = ExRem( sell, buy );
Short = Totalshortcon;
Cover = Totalcovercon;
Short = ExRem( Short, Cover );
Cover = ExRem( Cover, Short );
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-20);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-30);
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-25);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset=20);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset=30);
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-25);
PlotShapes(IIf(Short, shapeHollowDownArrow, shapeNone), colorYellow, 0, H, -55);
PlotShapes(IIf(Cover, shapeHollowUpArrow, shapeNone), colorSkyblue, 0, L, -55);
//Applystop
// ApplyStop(stopTypeLoss,stopModePercent,2);