Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
NMA indicator with Button Trading for Amibroker (AFL)
This is the popular Nick MA system with the Button Trading system
Similar Indicators / Formulas
Indicator / Formula
_SECTION_BEGIN("NICK MA Swing");
EnableTextOutput(False);
SetChartOptions(0, chartShowDates);
RequestTimedRefresh(1);
Filename = StrLeft(_DEFAULT_NAME(),StrLen(_DEFAULT_NAME())-2);
_N(Title = Filename + StrFormat(" - {{DATE}} \nOpen %g, Hi %g, Lo %g, Close %g (%.1f%%) Vol " + " {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 )) ));
VarPfx = "Btn1"; // some var that reflects the trading file
// #### Parameters ########################################################################################################
AutoTrade = ParamToggle("Auto trade", "Off|Running");
Contracts = Param("Num contracts", 1, 1, 1000, 1);
typeOrder = ParamList("Order type", "MKT,STP");
BuyOrder = ParamTrigger("Place Buy order","Buy");
SellOrder = ParamTrigger("Place Sell order","Sell");
CloseAll = ParamTrigger("Close all positions","Close all");
CancelAll = ParamTrigger("Cancel all orders","Cancel all");
Reset = ParamTrigger("Reset", "Reset");
SetBarsRequired(200,0);
GraphXSpace = 5;
SetChartOptions(0,chartShowArrows|chartShowDates);
k = Optimize("K",Param("K",2,0.25,5,0.25),0.25,5,0.25);
Per= Optimize("atr",Param("atr",20,3,20,1),3,20,1);
HACLOSE=(O+H+L+C)/4;
HaOpen = AMA( Ref( HaClose, -1 ), 0.5 );
HaHigh = Max( H, Max( HaClose, HaOpen ) );
HaLow = Min( L, Min( HaClose, HaOpen ) );
PlotOHLC( HaOpen, HaHigh, HaLow, HaClose, "" + Name(), colorBlack, styleCandle | styleNoLabel );
j=Haclose;
//=======================================================================================================================
//=========================Indicator==============================================================================================
f=ATR(15);
rfsctor = WMA(H-L, Per);
revers = k * rfsctor;
Trend = 1;
NW[0] = 0;
NW[BarCount-1] = Null;
for(i = 1; i < BarCount-1; i++)
{
if(Trend[i-1] == 1)
{
if(j[i] < NW[i-1])
{
Trend[i] = -1;
NW[i] = j[i] + Revers[i];
}
else
{
Trend[i] = 1;
if((j[i] - Revers[i]) > NW[i-1])
{
NW[i] = j[i] - Revers[i];
}
else
{
NW[i] = NW[i-1];
}
}
}
if(Trend[i-1] == -1)
{
if(j[i] > NW[i-1])
{
Trend[i] = 1;
NW[i] = j[i] - Revers[i];
}
else
{
Trend[i] = -1;
if((j[i] + Revers[i]) < NW[i-1])
{
NW[i] = j[i] + Revers[i];
}
else
{
NW[i] = NW[i-1];
}
}
}
}
//===============system================
Plot(NW, "", IIf(Trend == 1, 27, 4), 4);
Buy=NW<HACLOSE;
Sell=NW>HACLOSE;
SellPrice=ValueWhen(Sell,C,1);
BuyPrice=ValueWhen(Buy,C,1);
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy );
Short=Sell;
Cover=Buy;
NMAB= NW<HACLOSE;
NMAS= NW>HACLOSE;
NMA_status= WriteIf(NMAB, "BUY MODE", WriteIf(NMAS, "SELL MODE", "NEUTRAL"));
NMAS_Col=IIf(NMAB, colorGreen, IIf(NMAS, colorRed, colorLightGrey));
Filter=1;
AddColumn( NW[BarCount-1], "SAR", 1.2 );
AddColumn( HACLOSE, "HA Close", 1.2 );
AddColumn( C, "Close", 1.2 );
AddTextColumn(NMA_status, "MODE", 1, colorWhite, NMAS_Col);
AddColumn( DateTime(), "Date / Time", formatDateTime );
// #### Static vars reset ##################################################################################################
if( reset OR Nz(StaticVarGet(varPfx + "Init") == False) )
{
StaticVarSetText(varPfx + "orderID", "");
StaticVarSetText(VarPfx + "lastTrade", "");
StaticVarSet(VarPfx + "numPositions", 0);
_TRACE("# init, " + NumToStr(StaticVarGet(varPfx + "num"), 1.0));
}
// #### functions ###########################################################################################################
function fSayOnce( text )
{
if( StaticVarGetText(VarPfx + "lastsaidtext") != text )
{
Say( text );
StaticVarSetText(VarPfx + "lastsaidtext", text );
if(DebugOn) _TRACE("#, SayOnce Text =" + text + "\n");
}
}
// #### Trading section ########################################################################################################
if(autotrade)
{
ibc = GetTradingInterface("IB");
ConnectedStatus = ibc.IsConnected(); // get the connection status, 2 is OK
// this is where the trade processing is done
if( ConnectedStatus == 2 OR ConnectedStatus == 3) // connected to TWS with no error messages
{
OrderID = StaticVarGetText(VarPfx + "OrderID");
OrderStatus = ibc.GetStatus( OrderID, True );
oldNumPositions = StaticVarGet(VarPfx + "numPositions");
numPositions = ibc.GetPositionSize(Name());
StaticVarSet(VarPfx + "numPositions", numPositions );
LastTrade = StaticVarGetText(VarPfx + "lastTrade");
_TRACE("# buy, positions = " + NumToStr(numPositions, 1.0) + ", last trade = " + LastTrade + ", OID = " + OrderID);
if( ( LastTrade == "Buy" AND numPositions > oldNumPositions ) OR
( LastTrade == "Sell" AND numPositions < oldNumPositions ) OR
( LastTrade == "Close" AND numPositions == 0) )
{
fSayOnce("Filled");
OrderID = StaticVarSetText(VarPfx + OrderID, "");
}
else if (OrderStatus == "Cancelled")
OrderID = StaticVarSetText(VarPfx + OrderID, "");
if( BuyOrder )
{
fSayOnce("buy");
OrderID = ibc.PlaceOrder( Name(), "Buy", Contracts, typeOrder, 0, LastValue(C), "GTC", True);
StaticVarSetText(VarPfx + "OrderID", OrderID);
StaticVarSetText(VarPfx + "lastTrade", "Buy");
_TRACE("# buy, positions = " + NumToStr(numPositions, 1.0));
}
if( SellOrder )
{
fSayOnce("sell");
OrderID = ibc.PlaceOrder( Name(), "Sell", Contracts, typeOrder , 0, LastValue(C), "GTC", True);
StaticVarSetText(VarPfx + "OrderID", OrderID);
StaticVarSetText(VarPfx + "lastTrade", "Sell");
_TRACE("# sell, positions = " + NumToStr(numPositions, 1.0));
}
else if( CloseAll )
{
fSayOnce("close all");
ibc.CancelAllPendingOrders( );
ibc.CloseAllOpenPositions();
StaticVarSetText(VarPfx + "lastTrade", "Close");
_TRACE("# close, positions = " + NumToStr(numPositions, 1.0));
}
else if( CancelAll )
{
fSayOnce("cancel all");
ibc.CancelAllPendingOrders( );
_TRACE("# cancel, ");
}
LastTWSMsg = ibc.getLastError( 0 );
// the following will display in the interprettion window
printf("Order type: " + LastTrade +
"\nOrder Status: " + OrderStatus +
"\nOrder ID: " + StaticVarGetText(VarPfx + "OrderID") +
"\nNum positions: " + NumToStr(ibc.GetPositionSize( Name() ),1.0,False) +
"\nLast TWS Msg: " + LastTWSMsg );
}
else // ConnectedStatus == 0 OR ConnectedStatus == 1, lost connection
{
// handle commection errors
if(ConnectedStatus == 0) stat = "Not Connected."; else if(ConnectedStatus == 1) stat = "Lost Connection.";
SetChartBkColor( colorYellow);
// the following will display in the interprettion window
printf("\nTWS Status: " + stat + "\n");
}
} // end auto trading loop
else
{
SetChartBkColor( colorTan);
// the following will display in the interprettion window
printf("\n1. Autotrading is turned off\n" +
"2. TWS not started." );
}
_SECTION_END();
//=================TITLE================================================================================================
_SECTION_BEGIN("Title");
if( Status("action") == actionIndicator )
(
Title = EncodeColor(colorWhite)+ "NICK MA Swing System" + " - " + 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 Signal at "+C+" ","")+
WriteIf (Sell , " EXIT LONG / Reverse Signal at "+C+" ","")+"\n"+EncodeColor(colorWhite)+
WriteIf(Sell , "Total Profit/Loss for the Last Trade Rs."+(C-BuyPrice)+"","")+
WriteIf(Buy , "Total Profit/Loss for the Last trade Rs."+(SellPrice-C)+"",""));
//WriteIf(Long AND NOT Buy, "Trade : Long - Entry price Rs."+(BuyPrice),"")+
//WriteIf(shrt AND NOT Sell, "Trade : Short - Entry price Rs."+(SellPrice),"")+"\n"+
//WriteIf(Long AND NOT Buy, "Current Profit/Loss Rs."+(C-BuyPrice)+"","")+
//WriteIf(shrt AND NOT Sell, "Current Profit/Loss 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(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);
for(i=BarCount-1;i>1;i--)
{
if(Buy[i] == 1)
{
entry = H[i];
sig = "BUY";
sl = Ref(NW,-1);
tar1 = entry + (entry * .0050);
tar2 = entry + (entry * .0092);
tar3 = entry + (entry * .0179);
bars = i;
i = 0;
}
if(Sell[i] == 1)
{
sig = "SELL";
entry = L[i];
sl = Ref(NW,-1);
tar1 = entry - (entry * .0050);
tar2 = entry - (entry * .0112);
tar3 = entry - (entry * .0212);
bars = i;
i = 0;
}
}
Offset = 20;
Clr = IIf(sig == "BUY", colorLime, colorRed);
ssl = IIf(bars == BarCount-1, NW[BarCount-1], Ref(NW, -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);
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( ( "NMA Trading System"),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 : " + sl + " (" + 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);
}
_SECTION_END();
_SECTION_BEGIN("Magfied Market Price");
//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",800,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",350,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(); 0 comments
Leave Comment
Please login here to leave a comment.
Back