st_ind_2_v1
Download scriptThis tool is designed as a visual aid for traders to help identify momentum shifts and manage active positions on a 5-minute chart. It works by analyzing price movements in relation to a Moving Average (MA) and cross-referencing that data with your current open trades.
Here is a breakdown of the logic used by the script:
Trend Identification
The core of the indicator relies on a Linear Weighted Moving Average. It constantly monitors whether the current moving average value is increasing or decreasing compared to the previous price point:
- Rising Momentum: When the average is trending upward, the script identifies a "rising" state and marks the high of the candle with a small dot.
- Falling Momentum: When the average is trending downward, the script identifies a "falling" state and marks the low of the candle with a small dot.
Active Trade Tracking
The script scans your current account to see if you have any open positions for the specific currency pair or asset you are currently viewing. It distinguishes between "Bought" (Long) positions and "Sold" (Short) positions.
If an active trade is detected, it places a Large Dot on the chart (at the high for buys and the low for sells). This serves as a constant visual reminder that a position is currently "in progress," making it easier to track your active exposure at a glance.
Exit & Reversal Signals
The most unique feature of this script is how it interacts with your existing open trades to highlight potential conflicts or reversal points:
- Sell Signals for Buy Positions: If you have an open "Buy" trade but the moving average starts trending downward (falling), the script places a Down Arrow at the high of the candle. This alerts you that the momentum is shifting against your current position.
- Buy Signals for Sell Positions: If you have an open "Sell" trade but the moving average starts trending upward (rising), the script places an Up Arrow at the low of the candle. This alerts you that the price action may be turning in favor of a reversal.
Summary for the User
Essentially, this tool automates the "monitoring" phase of trading. It provides:
- Trend Awareness: Small dots to show the general direction of the market.
- Status Awareness: Large dots to confirm your current active trades.
- Risk Alerts: Specific arrows that appear only when the market momentum contradicts your current open trade, signaling a potential time to review your position or take profits.
//+------------------------------------------------------------------+
//| 5 Min RSI 12-period qual INDICATOR |
//+------------------------------------------------------------------+
#property copyright "Ron T"
#property link "http://www.lightpatch.com"
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 White
#property indicator_color2 Red
#property indicator_color3 White
#property indicator_color4 Red
#property indicator_color5 White
#property indicator_color6 Red
//---- buffers
double Buffer1[];
double Buffer2[];
double Buffer3[];
double Buffer4[];
double Buffer5[];
double Buffer6[];
// User Input
extern double MovingAvg=10;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//|------------------------------------------------------------------|
int init()
{
// 233 up arrow
// 234 down arrow
// 159 big dot
// 158 little dot
// 168 open square
// 120 box with X
SetIndexStyle(0,DRAW_ARROW);
SetIndexBuffer(0, Buffer1);
SetIndexArrow(0,159); //big dot
SetIndexStyle(1,DRAW_ARROW);
SetIndexBuffer(1, Buffer2);
SetIndexArrow(1,159); //big dot
SetIndexStyle(2,DRAW_ARROW);
SetIndexBuffer(2, Buffer3);
SetIndexArrow(2,158); //little dot
SetIndexStyle(3,DRAW_ARROW);
SetIndexBuffer(3, Buffer4);
SetIndexArrow(3,158); //little dot
SetIndexStyle(4,DRAW_ARROW);
SetIndexBuffer(4, Buffer5);
SetIndexArrow(4,233); //arrow
SetIndexStyle(5,DRAW_ARROW);
SetIndexBuffer(5, Buffer6);
SetIndexArrow(5,234); //arrow
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
int i;
for( i=0; i<Bars; i++ ) Buffer1[i]=0;
for( i=0; i<Bars; i++ ) Buffer2[i]=0;
for( i=0; i<Bars; i++ ) Buffer3[i]=0;
for( i=0; i<Bars; i++ ) Buffer4[i]=0;
for( i=0; i<Bars; i++ ) Buffer5[i]=0;
for( i=0; i<Bars; i++ ) Buffer6[i]=0;
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int pos=Bars-100; // leave room for moving average periods
double cMA=0, pMA=0;
bool found=false;
bool rising=false;
bool falling=false;
bool bought=false;
bool sold=false;
int cnt=0;
int err=0;
while(pos>=0)
{
// get 1 & 2 MA (avoid 0, as it's too noisy)
// (possible mod - open of 0 and 1 has no noise)
cMA=iMA(Symbol(), 0, MovingAvg, 0, MODE_LWMA, PRICE_CLOSE, pos);
pMA=iMA(Symbol(), 0, MovingAvg, 0, MODE_LWMA, PRICE_CLOSE, pos+1);
if (pMA<=cMA) {rising=true; falling=false; Buffer3[pos]=High[pos];}
if (pMA>=cMA) {rising=false; falling=true; Buffer4[pos]=Low[pos];}
// Does the Symbol() have an open order
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol())
{
// if found, get all the trailing stoploss data
// from bar 1 not 0
found=true;
if (OrderType()==0) {bought=true; sold=false;}
if (OrderType()==1) {bought=false; sold=true;}
break;
}
else
{
found=false;
}
}
// Draw a big dot if there
// is an order open so user
// can tell it's in progress
if (found && bought)
{
Buffer1[pos]=High[pos];
return(0);
}
if (found && sold)
{
Buffer2[pos]=Low[pos];
return(0);
}
if (rising && sold) //existing sell
{
Buffer6[pos]=Low[pos];
}
if (falling && bought) // existing buy
{
Buffer5[pos]=High[pos];
}
pos--;
}
return(0);
}
//+------------------------------------------------------------------+
Comments