Amibroker with IB

#22
Hi Bait,


I also wanted to start auto on IB with Ami, can you connect me to someone for the same....


Also does IB provide datafee also, or we have to do via third party

Regards
Deepak
 

looser89

Active Member
#24
Hi I am doing live as well as paper trading with brokers like Composite & GRD
I also try to paper trading via symphonyfintech but their presto is a failed to test my afl. they have no position sizing acceptance of afl.it has one profit booking parameters for all the scripts. they have not providing full control of afl to presto. so it is useless
 
#25
Symphony recently added accumulation in there level 2 for me, but u need to run diff afls for the same scrip, each giving different entiries... u can check with them...


I will go from paper next week, meanwhile i was tempted for IB, coz what i heard was they provide the Data feed + no annual license feee, and you can implement ur strat in ami, plus free paper trade account. Not sure on the brokerage, as diff ppl sayin diff things, some say they cheap, some say they very expensive....

It will be great if somebody already doing AMi with IB can help me on this......

Regards
 
#26
bunti_k23
will run the afl on monday will post a screenshot on monday evening.

Algo

How much are you paying commission to IB for live Trading in NSE? Are they available for MCX as well?
0.01% for futures, ie Rs 78 for 2 lots buy and sell. they are not available for MCX
toptrader

amibroker as far as I know has multiple broker builtin official plug-in but live trading you can only do with esignal and interactive broker
that is true.

abhi121
Aren't they charging $500 per month for brokerage? Source: https://www.interactivebrokers.co.in...dex.php?f=3405
no they need US$ 2000 equivalent to open an account and they would need a brokerage of less than 0.01% in futures.

looser89'
I also try to paper trading via symphonyfintech but their presto is a failed to test my afl. they have no position sizing acceptance of afl.it has one profit booking parameters for all the scripts. they have not providing full control of afl to presto. so it is useless
with IB they have code in Amibroker afl that allows you to send orders the code is like this
  • if(LastValue(Sell))
  • {
  • ibc.PlaceOrder( Name(), "SELL", AplliedQuantity, "MKT", 0, 0, "Day", True);
  • StaticVarSetText("LastTrade", "Sell");
  • }

makes it easy to test.
dk614nd

I will go from paper next week, meanwhile i was tempted for IB, coz what i heard was they provide the Data feed + no annual license feee, and you can implement ur strat in ami, plus free paper trade account. Not sure on the brokerage, as diff ppl sayin diff things, some say they cheap, some say they very expensive....

It will be great if somebody already doing AMi with IB can help me on this......
no annual license feee is wrong they charge USD 5 per month for no account activity
5 x 12 = USD 60 dollars
brokerage is very low rs 78 for 2 lots buy and sell intraday. you decide if the brokerge is costly or cheap

and the amibroker implementation of the strategy is the best part of it.
 

manojborle

Well-Known Member
#27
This is an afl ffrom marketcalls, can you please test this afl ?

/* Done by Rajandran R */
/* Author of www.marketcalls.in */
/* Code Completion Date : 15th Apr 2013 */


_SECTION_BEGIN("BBand TSL");

SetBarsRequired(100000,0);

GraphXSpace = 15;

SetChartOptions(0,chartShowArrows|chartShowDates);

SetChartBkColor(ParamColor("bkcolor",ColorRGB(0,0, 0)));

GfxSetBkMode(0);

GfxSetOverlayMode(1);

SetBarFillColor(IIf(C>O,ParamColor("Candle UP Color", colorGreen),IIf(C<=O,ParamColor("Candle Down Color", colorRed),colorLightGrey)));

Plot(C,"\nPrice",IIf(C>O,ParamColor("Wick UP Color", colorDarkGreen),IIf(C<=O,ParamColor("Wick Down Color", colorDarkRed),colorLightGrey)),64,0,0,0,0);



SetTradeDelays(1,1,1,1);


_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));

per=Optimize("Period",30, 5,50,1);

se = StdErr(C,per);

Bbup = BBandTop(C,per)+se;
Bbdown =BBandBot(C,per)-se;

MoneyRisk = 1.0;
iSignal = 1;
Line = 1;
Trend=0;
TrendUp=Null;
TrendDown=Null;
sig=Null;

g_ibuf_108 = 0;
g_ibuf_112 = 0;
g_ibuf_116 = 0;
g_ibuf_120 = 0;
iUp = Null;
iDown = Null;



for(i=1;i<BarCount-1;i++) {

if (Close > Bbup[i - 1]) Trend = 1;
if (Close < Bbdown[i - 1]) Trend = -1;
if (Trend > 0 && Bbdown < Bbdown[i - 1]) Bbdown = Bbdown[i - 1];
if (Trend < 0 && Bbup > Bbup[i - 1]) Bbup = Bbup[i - 1];
TrendUp = Bbup + (MoneyRisk - 1.0) / 2.0 * (Bbup - Bbdown);
TrendDown = Bbdown - (MoneyRisk - 1.0) / 2.0 * (Bbup - Bbdown);
if (Trend > 0 && TrendDown < TrendDown[i - 1]) TrendDown = TrendDown[i - 1];
if (Trend < 0 && TrendUp > TrendUp[i - 1]) TrendUp = TrendUp[i - 1];
if (Trend > 0) {
if (sig > 0 && g_ibuf_108[i - 1] == -1.0) {
g_ibuf_116 = TrendDown;
g_ibuf_108 = TrendDown;
if (Line > 0) iUp = TrendDown;
} else {
g_ibuf_108 = TrendDown;
if (Line > 0) iUp = TrendDown;
g_ibuf_116 = -1;
}
if (sig == 2) g_ibuf_108 = 0;
g_ibuf_120 = -1;
g_ibuf_112 = -1.0;
iDown = Null;
}
if (Trend < 0) {
if (sig > 0 && g_ibuf_112[i - 1] == -1.0) {
g_ibuf_120 = TrendUp;
g_ibuf_112 = TrendUp;
if (Line > 0) iDown = TrendUp;
} else {
g_ibuf_112 = TrendUp;
if (Line > 0) iDown = TrendUp;
g_ibuf_120 = -1;
}
if (sig == 2) g_ibuf_112 = 0;
g_ibuf_116 = -1;
g_ibuf_108 = -1.0;
iUp = Null;
}
}




Plot(iUp,"iUP",colorGreen,ParamStyle("Style", styleDots | styleNoLine, maskDefault | styleDots | styleNoLine ));

Plot(iDown,"iDown",colorRed,ParamStyle("Style", styleDots | styleNoLine, maskDefault | styleDots | styleNoLine ));


Buy = iUp>0;
Sell= iDown>0;

Buy=ExRem(Buy,Sell);

Sell=ExRem(Sell,Buy);

Short=Sell;

Cover=Buy;





BuyPrice=ValueWhen(Buy,C);

SellPrice=ValueWhen(Sell,C);

ShortPrice=ValueWhen(Short,C);

CoverPrice=ValueWhen(Cover,C);




BuyPrice=ValueWhen(Buy,C);

SellPrice=ValueWhen(Sell,C);

ShortPrice=ValueWhen(Short,C);

CoverPrice=ValueWhen(Cover,C);





Title = EncodeColor(colorWhite)+ "BBand TSL AFL code from www.marketcalls.in" + " - " + Name() + " - " + EncodeColor(colorRed)+ Interval(2) + EncodeColor(colorWhite) +

" - " + Date() +" - "+"\n" +EncodeColor(colorRed) +"Op-"+O+" "+"Hi-"+H+" "+"Lo-"+L+" "+

"Cl-"+C+" "+ "Vol= "+ WriteVal(V)+"\n"+

EncodeColor(colorLime)+

WriteIf (Buy , " GO LONG / Reverse sig at "+C+" ","")+

WriteIf (Sell , " EXIT LONG / Reverse sig at "+C+" ","")+"\n"+EncodeColor(colorYellow)+

WriteIf(Sell , "Total Profit/Loss for the Last Trade Rs."+(C-BuyPrice)+"","")+

WriteIf(Buy , "Total Profit/Loss for the Last trade Rs."+(SellPrice-C)+"","");



PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);

PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);

PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);

PlotShapes(IIf(Short, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);

PlotShapes(IIf(Short, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);

PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);



TrendSL=IIf(C>iUp,iUp,iDown);


for(i=BarCount-1;i>1;i--)

{

if(Buy == 1)

{

entry = C;

sig = "BUY";

sl = TrendSL;

STP = C-0.004*BuyPrice;

tar1 = entry + (entry * .0050);

tar2 = entry + (entry * .0078);

tar3 = entry + (entry * .01);



bars = i;

i = 0;

}

if(Sell == 1)

{

sig = "SELL";

entry = C;

sl = TrendSL;

STP = C+0.004*SellPrice;

tar1 = entry - (entry * .0050);

tar2 = entry - (entry * .0078);

tar3 = entry - (entry * .01);





bars = i;

i = 0;

}

}

Offset = 20;

Clr = IIf(sig == "BUY", colorLime, colorRed);

ssl = IIf(bars == BarCount-1, TrendSL[BarCount-1], Ref(TrendSL, -1));

sl = ssl[BarCount-1];





//Plot(LineArray(bars-Offset, tar1, BarCount, tar1,1), "", Clr, styleLine|styleDots, Null, Null, Offset);

//Plot(LineArray(bars-Offset, tar2, BarCount, tar2,1), "", Clr, styleLine|styleDots, Null, Null, Offset);

//Plot(LineArray(bars-Offset, tar3, BarCount, tar3,1), "", Clr, styleLine|styleDots, Null, Null, Offset);

//Plot(LineArray(bars-Offset, STP, BarCount, STP,1), "", colorYellow, styleLine|styleDots, Null, Null, Offset);




//Plot(LineArray(bars-Offset, sl, BarCount, sl,1), "", colorDarkRed, styleLine|styleLine, Null, Null, Offset);

//Plot(LineArray(bars-Offset, entry, BarCount, entry,1), "", colorGreen, styleLine|styleLine, Null, Null, Offset);



/*

for (i=bars; i <BarCount;i++)

{

PlotText(""+sig+"@"+entry, BarCount-5,entry,Null,colorBlue);

PlotText("T1@"+tar1,BarCount-5,tar1,Null,Clr);PlotText("T2@"+tar2,BarCount-5,tar2,Null,Clr);PlotText ("T3@"+tar3,BarCount-5,tar3,Null,Clr);



}*/



messageboard = ParamToggle("Message Board","Show|Hide",1);

if (messageboard == 1 )

{

GfxSelectFont( "Tahoma", 13, 100 );

GfxSetBkMode( 1 );

GfxSetTextColor( colorWhite );



if ( sig =="BUY")

{

GfxSelectSolidBrush( colorBlue ); // this is the box background color

}

else

{

GfxSelectSolidBrush( colorRed ); // this is the box background color

}

pxHeight = Status( "pxchartheight" ) ;

xx = Status( "pxchartwidth");

Left = 1100;

width = 310;

x = 5;

x2 = 290;



y = pxHeight;



GfxSelectPen( colorGreen, 1); // broader color

GfxRoundRect( x, y - 98, x2, y , 7, 7 ) ;

GfxTextOut( ( "Marketcalls - BBand TSL"),13,y-100);

GfxTextOut( (" "),27,y-100);

GfxTextOut( ("Last " + sig + " Signal came " + (BarCount-bars-1) * Interval()/60 + " mins ago"), 13, y-80) ; // The text format location

GfxTextOut( ("" + WriteIf(sig =="BUY",sig + " @ ",sig + " @") + " : " + entry), 13, y-60);

GfxTextOut( ("Trailing SL : " + Ref(TrendSL,-1) + " (" + WriteVal(IIf(sig == "SELL",entry-sl,sl-entry), 2.2) + ")"), 13, y-40);

/*GfxTextOut( ("TGT:1 : " + tar1), 13, y -80);

GfxTextOut( ("TGT:2 : " + tar2), 13,y-60);

GfxTextOut( ("TGT:3 : " + tar3), 13,y-40);*/

GfxTextOut( ("Current P/L : " + WriteVal(IIf(sig == "BUY",(C-entry),(entry-C)),2.2)), 13, y-22);;









//Magfied Market Price

FS=Param("Font Size",30,11,100,1);

GfxSelectFont("Times New Roman", FS, 700, True );

GfxSetBkMode( colorWhite );

GfxSetTextColor( ParamColor("Color",colorGreen) );

Hor=Param("Horizontal Position",940,1,1200,1);

Ver=Param("Vertical Position",12,1,830,1);

GfxTextOut(""+C, Hor , Ver );

YC=TimeFrameGetPrice("C",inDaily,-1);

DD=Prec(C-YC,2);

xx=Prec((DD/YC)*100,2);

GfxSelectFont("Times New Roman", 11, 700, True );

GfxSetBkMode( colorBlack );

GfxSetTextColor(ParamColor("Color",colorYellow) );

GfxTextOut(""+DD+" ("+xx+"%)", Hor , Ver+45 );



}



_SECTION_END();



_SECTION_BEGIN("Time Left");

function GetSecondNum()

{

Time = Now( 4 );

Seconds = int( Time % 100 );

Minutes = int( Time / 100 % 100 );

Hours = int( Time / 10000 % 100 );

SecondNum = int( Hours * 60 * 60 + Minutes * 60 + Seconds );

return SecondNum;

}

RequestTimedRefresh( 1 );

TimeFrame = Interval();

SecNumber = GetSecondNum();

Newperiod = SecNumber % TimeFrame == 0;

SecsLeft = SecNumber - int( SecNumber / TimeFrame ) * TimeFrame;

SecsToGo = TimeFrame - SecsLeft;



x=Param("xposn",50,0,1000,1);

y=Param("yposn",380,0,1000,1);



GfxSelectSolidBrush( ColorRGB( 230, 230, 230 ) );

GfxSelectPen( ColorRGB( 230, 230, 230 ), 2 );

if ( NewPeriod )

{

GfxSelectSolidBrush( colorYellow );

GfxSelectPen( colorYellow, 2 );

Say( "New period" );

}

//GfxRoundRect( x+45, y+40, x-3, y-2, 0, 0 );

//GfxSetBkMode(1);

GfxSelectFont( "Arial", 14, 700, False );

GfxSetTextColor( colorRed );

GfxTextOut( "Time Left :"+SecsToGo+"", x, y );

_SECTION_END();
 
#28
i have access to a paper trading account from Interactive Brokers
if you want to do trading system development using amibroker

i suggest that we team up together and make a system for automatic trading

please email me at [email protected] for any afl that you want to test in Amibroker in Real market data
i m trying to made a new afl... but i have some problem... pls help me .........

my email id :- [email protected]

CY1 = Param("Short Cycle Length?" ,10, 1 ,1000 ,1 )/2;
CY2 = Param("Medium Cycle Length?" ,80, 1 ,1000 ,1 )/2;
M1 = Param("Short Cycle Multiplyer?" ,1, 0.01 ,10 ,1 );
M2 = Param("Medium Cycle Multiplyer?" ,3, 0.01 ,10 ,1 );
T1 = Ref(MA(Close ,CY1 ),CY1/2)+ M1*ATR(CY1 );
B1 = Ref(MA(Close ,CY1 ),CY1/2)- M1*ATR(CY1 );
T2 = Ref(MA(Close ,CY2 ),CY2/2)+ M2*ATR(CY2 );
B2 = Ref(MA( Close ,CY2 ),CY2/2)- M2*ATR(CY2 );

Plot(T1, "", colorLime);
Plot(B1, "", colorBlue);
Plot(T2, "", colorPink);
Plot(B2, "", colorRed);

GraphXSpace = 5;
_SECTION_BEGIN( "Price" );
SetChartOptions( 0, chartShowDates | chartShowArrows | chartLogarithmic | chartWrapTitle );
_N( Title = StrFormat( "{{NAME}} - " + SectorID( 1 ) + " - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) Vol " + WriteVal( V, 1.0 ) + " {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ) );
Plot( C, "Close", colorRose, styleCandle | styleNoTitle | ParamStyle( "Style" ) | GetPriceStyle() );

if ( ParamToggle( "Tooltip shows", "All Values|Only Prices" ) )
{
ToolTip = StrFormat( "Open: %g\nHigh: %g\nLow: %g\nClose: %g (%.1f%%)\nVolume: " + NumToStr( V, 1 ), O, H, L, C, SelectedValue( ROC( C, 1 ) ) );
}
_SECTION_END();


Buy = (L<=B1) ;
Sell = (H>=T1);
//ExRem(Buy,Sell);
//ExRem(Sell,Buy);
//PlotShapes(Buy*shapeUpArrow+Sell*shapeDownArrow,IIf(Buy,colorGreen,colorRed) );
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-10);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-20);
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-15);
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);





_SECTION_BEGIN("swing1");

messageboard = ParamToggle("Message Board","Show|Hide",0);
showsl = ParamToggle("Stop Loss Line", "Show|Hide", 0);


no=30;
res=HHV(L+ATR(30),no);
sup=LLV(H-ATR(30),no);
avd=IIf(C>Ref(res,-1),1,IIf(C<Ref(sup,-1),-1,0));
avn=ValueWhen(avd!=0,avd,1);
supres=IIf(avn==1,sup,res);
//s5d=IIf(avn==1,sup,res);
a=Cross(C,supres);
b=Cross(supres,C);

if (showsl == 0)
{
Plot(supres,"Stop Loss",colorCustom8,styleDots);
}

in this AFL my problem is that when it works on live market. the band expands and previous signal disappear... or new signal genearte on previous candle...
so how to solve the problem.....

problem may be solving by these things...
1) once value generated the value is recorded in any variable....
2) it changes only when the second signal generated....
 
#30
manojborle
This is an afl ffrom marketcalls, can you please test this afl ?
running will post a screenshot in the end with the signals.

singhsfamily

i m trying to made a new afl... but i have some problem... pls help me .........

-------
in this AFL my problem is that when it works on live market. the band expands and previous signal disappear... or new signal genearte on previous candle...
so how to solve the problem.....

problem may be solving by these things...
1) once value generated the value is recorded in any variable....
2) it changes only when the second signal generated....
i cant help you with the afl however if you want i can test it out

also please check your mail.
 

Similar threads