buona giornata a tutti
Ho una strategia realizzata su Trade Navigator che lavora sul Dax a 15 minuti e dal 1.1.2008 ad oggi 23.9.2008 performa € 40.700 su 752 trade di cui 82.6% positivo
ho fatto il porting a Amibroker per poterla usare in automatico con Interactivebrokers.
purtroppo a causa della scarsa dimestichezza con il codice AFL non funziona come si deve
in particolare quando la condizione si realizza invia una serie infinita di ordini a IB
sarei grato se qualche volontario volesse correggerla così che possa essere utilizzata da tutti.
ringrazio in anticipo per la collaborazione
_SECTION_BEGIN("mv_gx15.2");
/* strategia Mv_Gx15.2 ----------------22 settembre 2008
rel 1.01 da utilizzarsi sul DAX Con frame di 15'
*/
ibc = GetTradingInterface("IB");
sz = 1; //numero contratti
TimeFrameSet(in15Minute);
Plot(C,"C",colorBlack,64);Title=Name()+" ,";
//Parametri
tick = 8;
tm0 = int(080000); //fascia mattino
tm1 = int(120100);
tm2 = int(151400); // fascia pomeriggio
tm3 = int(173100);
/*TPL = Take profit Long in valore assoluto da aggiungere al prezzo di buy equivale es 400 =(16/0.5)*12.5
TPS = Take Profit short
SLL = Stoo loss lons
SLS = Stop loss short
sz = numro Contratti
tick = minimo spostamento
tickvalue = valore del tick
*/
if (Name() == "fdax dec 08-dtb-fut") {sz = 1; tick = 0.50; tickvalue = 12.50; TPL = 32; TPS = 8; SLL = 8; SLS = 48; tn = 8; }
//indicatori
Mv_low= L > Ref(L,-1) AND Ref(L,-2) > Ref(L,-1) AND Ref(C,-1)<Ref> O;
Mv_hi = H < Ref(H,-1)AND Ref(H,-2) < Ref(H,-1) AND C <O> Ref(L,-1) AND H > Ref(H,-1);
down_trend = L < Ref(L,-1) AND H < Ref(H,-1);
adesso = int(Now (4));
Lmprice = 0; STprice = 0;
pos = ibc.GetPositionSize( Name() );
//L1
if (pos == 0 )
{ // inizio ciclo se 0 posizioni
sz ==1;
Buy = Mv_low == 1 AND up_trend == 1 AND
((C - O)<tick> tm0 AND adesso <tm1>tm2 AND adesso < tm3) AND
RSIa(C,5) < 60 ;
_TRACE("L1 "+Buy);
for( i = 0; i < 1; i++ )
{
if( Buy == 1 )
{
parentID = ibc.PlaceOrder( Name(), "BUY", sz, "stp", 0, H+tick, "DAY", True );
ibc.PlaceOrder(Name(), "SELL", sz, "LMT", LastValue( C )+TPL, 0, "DAY", True, 0, "", parentID );
ibc.PlaceOrder(Name(), "SELL", sz, "STP", LastValue( C )-SLL, LastValue( C )-SLL, "DAY", True, 0, "", parentID );
PlotShapes(IIf(Buy,shapeDigit1,shapeNone),colorBlue);
}
}
}
if (pos < 0 ) // Short attivo
{
sz = pos *-2;
Buy = Mv_low == 1 AND up_trend == 1 AND
((C - O)<tick> tm0 AND adesso <tm1>tm2 AND adesso < tm3) AND
RSI(C,5) < 60 ;
for( i = 0; i <1>0 ) // Inizio Ciclo
{
sz = pos ;
Sell = mv_hi ==1 AND down_trend ==1 AND
((C - O)< tick) AND
RSI(C,5) < 10 ;
for( i = 0; i < 1; i++ )
{
if( Sell ==1 )
{
ibc.PlaceOrder( Name(), "SELL", sz, "MKTCLS", 0, 0, "DAY", True );
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorBlue);
}
}
}
//S1
if (pos == 0 )
{
sz ==1;
Short = mv_hi ==1 AND down_trend ==1 AND
((C - O)<tick> tm0 AND adesso <tm1>tm2 AND adesso < tm3) AND
RSIa(C,5) < 10 ;
for( i = 0; i <1> 0 )
{
sz = pos *2;
Short = mv_hi ==1 AND down_trend ==1 AND
((C - O)<tick> tm0 AND adesso <tm1>tm2 AND adesso < tm3) AND
RSIa(C,5) < 10 ;
for( i = 0; i < 1; i++ )
{
if( Short ==1 )
{
parentID = ibc.PlaceOrder( Name(), "SELL", sz, "stp", 0, L-tick, "DAY", True );
ibc.PlaceOrder(Name(), "BUY", sz, "LMT", LastValue( C )-TPS, 0, "DAY", True, 0, "", parentID );
ibc.PlaceOrder(Name(), "BUY", sz, "STP", LastValue( C )+SLS, LastValue( C )+SLS, "DAY", True, 0, "", parentID );
PlotShapes(IIf(Short,shapeDigit1,shapeNone),colorRed);
}
}
}
// Sx1
if (pos <0 )
{
sz = pos ;
Cover = Mv_low == 1 AND up_trend == 1 AND
((C - O)<tick> 60 ;
for( i = 0; i < 1; i++ )
{
if( Cover ==1 )
{
ibc.PlaceOrder( Name(), "buy", sz, "MKTCLS", 0, 0, "DAY", True );
PlotShapes(IIf(Cover,shapeUpArrow,shapeNone),colorRed);
}
}
}
Ho una strategia realizzata su Trade Navigator che lavora sul Dax a 15 minuti e dal 1.1.2008 ad oggi 23.9.2008 performa € 40.700 su 752 trade di cui 82.6% positivo
ho fatto il porting a Amibroker per poterla usare in automatico con Interactivebrokers.
purtroppo a causa della scarsa dimestichezza con il codice AFL non funziona come si deve
in particolare quando la condizione si realizza invia una serie infinita di ordini a IB
sarei grato se qualche volontario volesse correggerla così che possa essere utilizzata da tutti.
ringrazio in anticipo per la collaborazione
_SECTION_BEGIN("mv_gx15.2");
/* strategia Mv_Gx15.2 ----------------22 settembre 2008
rel 1.01 da utilizzarsi sul DAX Con frame di 15'
*/
ibc = GetTradingInterface("IB");
sz = 1; //numero contratti
TimeFrameSet(in15Minute);
Plot(C,"C",colorBlack,64);Title=Name()+" ,";
//Parametri
tick = 8;
tm0 = int(080000); //fascia mattino
tm1 = int(120100);
tm2 = int(151400); // fascia pomeriggio
tm3 = int(173100);
/*TPL = Take profit Long in valore assoluto da aggiungere al prezzo di buy equivale es 400 =(16/0.5)*12.5
TPS = Take Profit short
SLL = Stoo loss lons
SLS = Stop loss short
sz = numro Contratti
tick = minimo spostamento
tickvalue = valore del tick
*/
if (Name() == "fdax dec 08-dtb-fut") {sz = 1; tick = 0.50; tickvalue = 12.50; TPL = 32; TPS = 8; SLL = 8; SLS = 48; tn = 8; }
//indicatori
Mv_low= L > Ref(L,-1) AND Ref(L,-2) > Ref(L,-1) AND Ref(C,-1)<Ref> O;
Mv_hi = H < Ref(H,-1)AND Ref(H,-2) < Ref(H,-1) AND C <O> Ref(L,-1) AND H > Ref(H,-1);
down_trend = L < Ref(L,-1) AND H < Ref(H,-1);
adesso = int(Now (4));
Lmprice = 0; STprice = 0;
pos = ibc.GetPositionSize( Name() );
//L1
if (pos == 0 )
{ // inizio ciclo se 0 posizioni
sz ==1;
Buy = Mv_low == 1 AND up_trend == 1 AND
((C - O)<tick> tm0 AND adesso <tm1>tm2 AND adesso < tm3) AND
RSIa(C,5) < 60 ;
_TRACE("L1 "+Buy);
for( i = 0; i < 1; i++ )
{
if( Buy == 1 )
{
parentID = ibc.PlaceOrder( Name(), "BUY", sz, "stp", 0, H+tick, "DAY", True );
ibc.PlaceOrder(Name(), "SELL", sz, "LMT", LastValue( C )+TPL, 0, "DAY", True, 0, "", parentID );
ibc.PlaceOrder(Name(), "SELL", sz, "STP", LastValue( C )-SLL, LastValue( C )-SLL, "DAY", True, 0, "", parentID );
PlotShapes(IIf(Buy,shapeDigit1,shapeNone),colorBlue);
}
}
}
if (pos < 0 ) // Short attivo
{
sz = pos *-2;
Buy = Mv_low == 1 AND up_trend == 1 AND
((C - O)<tick> tm0 AND adesso <tm1>tm2 AND adesso < tm3) AND
RSI(C,5) < 60 ;
for( i = 0; i <1>0 ) // Inizio Ciclo
{
sz = pos ;
Sell = mv_hi ==1 AND down_trend ==1 AND
((C - O)< tick) AND
RSI(C,5) < 10 ;
for( i = 0; i < 1; i++ )
{
if( Sell ==1 )
{
ibc.PlaceOrder( Name(), "SELL", sz, "MKTCLS", 0, 0, "DAY", True );
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorBlue);
}
}
}
//S1
if (pos == 0 )
{
sz ==1;
Short = mv_hi ==1 AND down_trend ==1 AND
((C - O)<tick> tm0 AND adesso <tm1>tm2 AND adesso < tm3) AND
RSIa(C,5) < 10 ;
for( i = 0; i <1> 0 )
{
sz = pos *2;
Short = mv_hi ==1 AND down_trend ==1 AND
((C - O)<tick> tm0 AND adesso <tm1>tm2 AND adesso < tm3) AND
RSIa(C,5) < 10 ;
for( i = 0; i < 1; i++ )
{
if( Short ==1 )
{
parentID = ibc.PlaceOrder( Name(), "SELL", sz, "stp", 0, L-tick, "DAY", True );
ibc.PlaceOrder(Name(), "BUY", sz, "LMT", LastValue( C )-TPS, 0, "DAY", True, 0, "", parentID );
ibc.PlaceOrder(Name(), "BUY", sz, "STP", LastValue( C )+SLS, LastValue( C )+SLS, "DAY", True, 0, "", parentID );
PlotShapes(IIf(Short,shapeDigit1,shapeNone),colorRed);
}
}
}
// Sx1
if (pos <0 )
{
sz = pos ;
Cover = Mv_low == 1 AND up_trend == 1 AND
((C - O)<tick> 60 ;
for( i = 0; i < 1; i++ )
{
if( Cover ==1 )
{
ibc.PlaceOrder( Name(), "buy", sz, "MKTCLS", 0, 0, "DAY", True );
PlotShapes(IIf(Cover,shapeUpArrow,shapeNone),colorRed);
}
}
}