| -
En vinst robot???
Hej alla intresserade!
Har kodat en liten robot som tradar GBPUSD på 4H charts.
Den har visat bra avkastning. Vad anser ni om automatiserad handel?
För mig tror jag att det är det enda sättet då jag inte vill sitta framför datorn
24/7.
Bifogar statement för roboten. Kommentarer????
//Ghozt
///////////////////////////////////////////////////////////////////////////////////////
Bars in test 3367
Ticks modelled 19243918
Modelling quality 90.00%
Mismatched charts errors 3
Initial deposit 1000.00
Total net profit 3799.80
Gross profit 4147.38
Gross loss -347.58
Profit factor 11.93
Expected payoff 49.35
Absolute drawdown 312.25
Maximal drawdown 865.55 (40.13%)
Relative drawdown 48.62% (716.10)
Total trades 77
Short positions (won %) 46 (60.87%)
Long positions (won %) 31 (90.32%)
Profit trades (% of total) 56 (72.73%)
Loss trades (% of total) 21 (27.27%)
Largest
profit trade 552.82
loss trade -52.31
Average
profit trade 74.06
loss trade -16.55
Maximum
consecutive wins (profit in money) 11 (944.47)
consecutive losses (loss in money) 4 (-150.72)
Maximal
consecutive profit (count of wins) 944.47 (11)
consecutive loss (count of losses) -150.72 (4)
Average
consecutive wins 4
consecutive losses 2
//////////////////////////////////////////////////////////////////////////////////////
-
Att analysera en strategi
Jag tänkte med detta inlägg visa hur man kan analysera en strategi. - Total trades 77
- Profit trades (% of total) 56 (72.73%)
- Loss trades (% of total) 21 (27.27%)
- Average profit trade 74.06
- Average loss trade -16.55
- RR 4,49
- Initial deposit 1000
- Total net profit 3799
- Relative drawdown 48.62% (716.10)
- Average consecutive wins 4
- Average consecutive losses 2
Jag tog mig friheten att rensa upp lite i statistiken, till de mått som jag tycker är intressanta vid en utvärdering av en strategi.
Det viktigaste är det totala antalet affärer. Ju fler affärer en strategi genomfört desto robustare och säkrare är de estimat som återges. Enligt skolboken skall man vid statistiks undersökningar minst ha 30 observationer för att undvika att slumpen får alldeles för stor påverka på ens resultat.
(2) visar sannolikheten för vinst vilket ligger på 72%, detta är ett högt och bra värde för att det krävs inte många förlustaffärer innan man vet att ens strategi slutat fungera. Som vi kan se på punkt (11) så genomför strategin i genomsnitt "maximalt" 2 förluster på raken. Vi ser dessutom att strategin i genomsnitt genomför "maximal" 4 vinster på raken. Börjar således denna strategi att producera 4 eller mer förluster på raken så vet vi att marknadsförutsättningarna ändrats och vi bör undersöka ifall strategin fortfarande är lämplig för marknaden.
Punkt (4) och (5) visar genomsnittlig vinst och förlust. Delar vi genomsnittsvinsten genom, genomsnittsförlusten så få vi vårt RR värde, vilket blir 4,49 -> punkt (6). Detta värde är också väldigt bra med tanke på hur hög sannolikheten är för vinst är per trade.
Punkt (7) visar den ingående kontobalansen som låg på 1000 enheter och punkt (8) visar nettovinsten på 3799 enheter, vilket innebär att kontot ökat från 1000 enheter till 4799 enheter. Detta motsvarar en procentuell ökning på 3,79 gånger pengarna. Detta mått bör relateras till hur långtid som det tagit att skapa denna avkastning. Om det tagit ca 5 år att skapa denna vinst motsvarar detta en procentuell uppgång på ca 30% per år. Vilket inte är helt orimligt avkastning om man handlar med en unik strategi och ett litet konto. Men det är värt att kommentera att 30% avkastning per år motsvarar det bra en väldigt bra hedgefonder avkastar.
Om det tagit mindre än 5 år att skapa denna vinst är risken hög att det slutar lilla i långa loppen. För strategin är helt enkelt för aggressiv. Mått (9) visar just ett mått på risk och visar att den största nedgången motsvarat 48,62% av kontot. Efter denna nedgång var strategin i princip tvungen att dubbla pengarna för att komma upp på plus minns noll.
Jag kan därför sammanfattningsvis säga att givet denna data som presenterats så är strategin väldigt bra men något för aggressiv för min smak. - Helst skulle jag vilja se en lägre drawdown på ca 25%-30%.
- Sedan skulle det vara intressant att veta över hur lång tidsperiod du har testat strategin.
- Sedan själva logiken
- Samt om du optimerat över all tillgänglig data eller om du delat upp datan i stycken för att få ett relativt "unbiased" resultat. För det är lätt att överoptimera en strategi efter data.
Men annars måste jag säga att du plockat fram en bra och lovande strategi Mr Ghozt -
 Originally Posted by ghozt Hej alla intresserade!
Har kodat en liten robot som tradar GBPUSD på 4H charts.
Den har visat bra avkastning. Vad anser ni om automatiserad handel?
För mig tror jag att det är det enda sättet då jag inte vill sitta framför datorn
24/7.
Bifogar statement för roboten. Kommentarer????
//Ghozt
///////////////////////////////////////////////////////////////////////////////////////
Bars in test 3367
Ticks modelled 19243918
Modelling quality 90.00%
Mismatched charts errors 3
Initial deposit 1000.00
Total net profit 3799.80
Gross profit 4147.38
Gross loss -347.58
Profit factor 11.93
Expected payoff 49.35
Absolute drawdown 312.25
Maximal drawdown 865.55 (40.13%)
Relative drawdown 48.62% (716.10)
Total trades 77
Short positions (won %) 46 (60.87%)
Long positions (won %) 31 (90.32%)
Profit trades (% of total) 56 (72.73%)
Loss trades (% of total) 21 (27.27%)
Largest
profit trade 552.82
loss trade -52.31
Average
profit trade 74.06
loss trade -16.55
Maximum
consecutive wins (profit in money) 11 (944.47)
consecutive losses (loss in money) 4 (-150.72)
Maximal
consecutive profit (count of wins) 944.47 (11)
consecutive loss (count of losses) -150.72 (4)
Average
consecutive wins 4
consecutive losses 2
//////////////////////////////////////////////////////////////////////////////////////
Skullle vara intressant i vad för typ av marknadsläge du kört den i? Kom ihåg att det sällan finns en strategi som fungerar i alla marknadslägen. Min erfarenhet av automatiska handelsstrategier är att man ändå måste lägga lite kraft och analysera vad som fungerar i vad för marknad. Skulle vara intressant att höra mer....!
-
Testet är utfört mellan 2009-01-01 - 2010-09-18.
Det är en risfylld strategi som involverar martingale strategi dvs man dubblar storleken på kontraktet om man förlorar( men det visste ni nog).
Strategin går ut på att man går mot trenden vid extrema lägen(typ överköpt).
Om man lägger Bollingerband på 4H GBPUSD med värdena
period 40
shift 0
Deviation 3
och en simple moving average period 40, price close
Det som strategin går ut på är att när priset når yttre bollingerbandet så går man mot trenden. Om positionen går emot dig så addar man och dubblar vid specifika intervaller. Man tar hem vinsten när priset når moving average.
Som sagt "farligt farligt men härligt härligt".
Nedan följer koden till roboten, kopiera och klistra in i expertadvisor mappen.
Sedan är det bara att testa.
OBS!!!!!!!!!! försök inte att trada detta system live eftersom det inte finns några säkerhetsrutiner i koden, detta är bara ett grovt skal avsett för backtesting.
Om ni har några funderingar så fråga på
//ghozt
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern double TakeProfit = 0;
extern double Lots = 0.01;
extern double stoploss = 0;
extern int map,bbp;
extern double spacing=0.0100;
double open,openPrice,close,high=999,low=0,startPrice,shortMov=999,BB1Upper=999,longMov,BB3Lower,BB3Upper,BB1Lower,ma,BB2Lower
,BB2Upper;
int prevprofit = 1,prevPos,nrOfLots,profit,short=0,long=0;
bool restore = false;
bool prevLong = false;
bool prevShort = false;
bool buyLong = false;
bool buyShort = false;
bool sellShort = false;
bool sellLong = false;
bool longPos = false;
bool shortPos = false;
bool oneLong = true;
bool twoLong = true;
bool threLong = true;
bool fourLong = true;
bool fiveLong = true;
bool sixLong = true;
bool sevenLong = true;
bool eightLong = true;
bool nineLong = true;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int limit;
int cnt, ticket, total;
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
//------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------
BB3Lower=iBands(NULL,0,bbp,3,0,PRICE_TYPICAL,MODE_LOWER,0);
BB3Upper=iBands(NULL,0,bbp,3,0,PRICE_TYPICAL,MODE_UPPER,0);
BB2Lower=iBands(NULL,0,bbp,2,0,PRICE_TYPICAL,MODE_LOWER,0);
BB2Upper=iBands(NULL,0,bbp,2,0,PRICE_TYPICAL,MODE_UPPER,0);
BB1Lower=iBands(NULL,0,bbp,1,0,PRICE_CLOSE,MODE_LOWER,0);
BB1Upper=iBands(NULL,0,bbp,1,0,PRICE_CLOSE,MODE_UPPER,0);
ma=iMA(NULL,0,map,0,MODE_LWMA,PRICE_CLOSE,0);
if(Ask<=BB3Lower && oneLong) {buyLong=true; oneLong =false; longMov=BB3Lower;}
if(Ask<longMov-spacing && twoLong) {buyLong=true; twoLong =false; Lots=Lots*2;}
if(Ask<longMov-spacing*2 && threLong) {buyLong=true; threLong =false; Lots=Lots*2;}
if(Ask<longMov-spacing*3 && fourLong) {buyLong=true; fourLong =false; Lots=Lots*2;}
if(Ask<longMov-spacing*4 && fiveLong) {buyLong=true; fiveLong =false; Lots=Lots*2;}
if(Bid>=BB3Upper && oneLong) {buyShort=true; oneLong=false; shortMov=BB3Upper;}
if(Bid>shortMov+spacing && twoLong) {buyShort=true; twoLong=false; Lots=Lots*2;}
if(Bid>shortMov+spacing*2 && threLong) {buyShort=true; threLong=false; Lots=Lots*2;}
if(Bid>shortMov+spacing*3 && fourLong) {buyShort=true; fourLong=false; Lots=Lots*2;}
if(Bid>shortMov+spacing*4 && fiveLong) {buyShort=true; fiveLong=false; Lots=Lots*2;}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
total=OrdersTotal();
if(total>0)
{
if(longPos)
{
if(Bid>ma)CloseAll();
}
if(shortPos)
{
if(Ask<ma)CloseAll();
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
total=OrdersTotal();
if(total<20)
{
// no opened orders identified
if(AccountFreeMargin()<(100*Lots))
{
return(0);
}
// check for long position (BUY) possibility.
if(buyLong)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-stoploss*Point,Ask+TakeProfit*Point,"adx-m",16384,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("BUY order opened : ",OrderOpenPrice());
openPrice=OrderOpenPrice();
buyLong=false;
longPos=true;
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
// check for short position (SELL) possibility
if(buyShort)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+stoploss*Point,Bid-TakeProfit*Point,"adx-m",16384,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
openPrice=OrderOpenPrice();
shortPos=true;
buyShort=false;
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
}
void restore()
{
Print("i restore : ***************************************************************************");
prevPos = 0;
buyLong = false;
buyShort = false;
oneLong = true;
twoLong = true;
threLong = true;
fourLong = true;
fiveLong = true;
sixLong = true;
sevenLong = true;
eightLong = true;
nineLong = true;
longPos = false;
shortPos = false;
shortMov = 999;
longMov = 0;
Lots = 0.01;
}
void CloseAll()
{
int i;
bool result = false;
while(OrdersTotal()>0)
{
// Close open positions first to lock in profit/loss
for(i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i, SELECT_BY_POS)==false) continue;
result = false;
if ( OrderType() == OP_BUY) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 15, Red );
if ( OrderType() == OP_SELL) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 15, Red );
}
for(i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i, SELECT_BY_POS)==false) continue;
result = false;
if ( OrderType()== OP_BUYSTOP) result = OrderDelete( OrderTicket() );
if ( OrderType()== OP_SELLSTOP) result = OrderDelete( OrderTicket() );
if ( OrderType()== OP_BUYLIMIT) result = OrderDelete( OrderTicket() );
if ( OrderType()== OP_SELLLIMIT) result = OrderDelete( OrderTicket() );
//if (UseAlerts) PlaySound("alert.wav");
}
Sleep(1000);
}
restore();
}
// the end.
//+------------------------------------------------------------------+
-
Genom att införa lite trolleri med storleken på positionerna så har jag fått $1000
att växa till ca $20000 under perioden 2009-01-01 tills idag.
Nedan följer rapporten från Metatrader.
//Ghozt
Bars in test 3381
Ticks modelled 19402686
Modelling quality 90.00%
Mismatched charts errors 1
Initial deposit 1000.00
Total net profit 20062.16
Gross profit 21549.17
Gross loss -1487.02
Profit factor 14.49
Expected payoff 257.21
Absolute drawdown 313.45
Maximal drawdown 3301.50 (30.97%)
Relative drawdown 59.33% (1451.64)
Total trades 78
Short positions (won %) 47 (61.70%)
Long positions (won %) 31 (90.32%)
Profit trades (% of total) 57 (73.08%)
Loss trades (% of total) 21 (26.92%)
Largest
profit trade 5197.74
loss trade -183.08
Average
profit trade 378.06
loss trade -70.81
Maximum
consecutive wins (profit in money) 12 (10974.19)
consecutive losses (loss in money) 4 (-510.14)
Maximal
consecutive profit (count of wins) 10974.19 (12)
consecutive loss (count of losses) -510.14 (4)
Average
consecutive wins 4
consecutive losses 2
-
Nu ska ditt första inlägg synas.
Då det i princip är kod så tror forumet att du försöker spamma vilket gör att någon administratör måste godkänna inlägget innan det visas.
De skulle nog vara bättre ifall du ladda upp din EA och sedan så kan de intresserade kolla upp koden i sin Metatrader 4 plattform?
Jag tror även det skulle vara kul om du kunde ladda upp strategins avkastningskurva samt kommentera resultatet? Många är nya när det gäller backtesting och du vet ju att en bild säger mer än tusen ord -
Gör ett försök att lägga upp en bild på avkastningskurvan. -
Strategins svaghet är när vi får en mycket kraftig trend och priset inte åtrkommer till ma40 på mycket länge. I slutet av 2008 hade vi ett sådant prisfall som hade varit katastrof och resulterat i ett margincall. Det skulle säkert gå att hitta något sätt att förhindra att man öppnar nya positioner vid sådana tillfällen.
Det skulle vara roligt om ni hade några förslag på förbättringar eller kanske någon egen strategi som vi kunde hjälpas åt med att koda och testa.
Som sagt om ni har några frågor så svarar jag mer än gärna.
//Ghozt
-
Hej Alejandro!
När jag försöker att ladda upp filen med EA:n så kan jag inte hitta den(skumt).
Jag har döpt den till extremeBB och borde finnas i foldern experts.
Men jag kan inte hitta den????????
Får försöka senare.
//Ghozt
-
Ok.
Förresten alltså dina strategier, de är lite för aggressiva för min smak men de behöver vara det för att vinna 10 000 USD i FXCM Automated Trading Challenge.
Skulle det inte vara kul vara med i den tävlingen?
-
Hej Ghozt, Mycket intressant angreppssätt! Jag är ny på det här, vilket system använder du för att handla, och har dom någon demo man kan testa?
mvh /p
-
 Originally Posted by StyrBernt Hej Ghozt, Mycket intressant angreppssätt! Jag är ny på det här, vilket system använder du för att handla, och har dom någon demo man kan testa?
mvh /p Hej StyrBernt! Välkommen till forumet! Mitt namn är Alejandro och jag arbetar som moderator på forumet. Jag är osäker på ifall Ghozt tar emot e-post när nya medelanden postats. Jag ska se om jag kan få tag på honom.
Mvh
Alejandro
-
Hej StyrBernt och välkommen!
Jag använder Metatrader som plattform.
Det finns många som erbjuder Metatrader som demo.
Själv använder jag Interbank.
Om du har övriga frågor så svarar jag gärna.
//Ghozt
Last edited by Daily FX; 11-08-2010 at 09:36 AM.
-
-
 Originally Posted by StyrBernt Hej Alejandro, Tack så mycket
Du som också verkar rätt insatt i det här vet inte vart man kan läsa lite om olika sätt att bygga valutamodeller på? Typ en crash cours? Jag är inte helt grön på modeller, har av eget intresse byggt en del aktiemodeller  Jag har googlar runt en hel det, och internet är ju nersmetat med modeller som man får köpa om man vill :P Känner inte att det är min grej, vill veta vad ja/modellen gör
/Philip När du byggt modeller tidigare så antar jag att du menar "tekniska modeller" alltså modeller som bygger på teknisk analys.
För detta har vi har en speciell sektion på den engelska forumet där det finns resurser - > Strategy Trader - DailyFX Forex Forum
I grund och botten så handlar det om att kunna programmera och att kunna omsätta sina kunskaper om marknaden och teknisk analys för skapa automatiska system.
På vilken nivå har du tidigare arbetat med automatiska system?
Mvh
Alejandro
|