i-RoundPrice-T01m-mod
Download scriptThe RoundPrice indicator is designed to provide a visual representation of price momentum and trend direction on your trading chart. Its primary goal is to smooth out market "noise" to help traders identify the underlying movement of the asset more clearly.
Core Logic and Functionality
Data Smoothing and Processing The script begins by looking at a specific number of past price bars (determined by your settings). It uses a sophisticated weighted calculation method to process these prices. Instead of simply looking at the latest price, it creates a sequence of smoothed values. This process ensures that minor, insignificant price fluctuations do not trigger false signals, allowing the indicator to focus on the "true" direction of the market.
Trend Calculation Once the price data is smoothed, the script applies a mathematical formula to calculate the rate of change between these smoothed values. This calculation helps determine the velocity and curvature of the price movement. By analyzing how these values interact with one another over time, the tool identifies whether the price is gaining strength or losing momentum.
Visual Output The indicator translates this complex math into two distinct visual components on your chart:
- Trend Direction: The logic evaluates whether the current calculated value is higher or lower than the previous one.
- Dynamic Plotting:
- When the price movement shows a specific directional trend, the script plots a line (the first buffer).
- When the direction shifts or satisfies the opposite condition, it switches to a different visual output (the second buffer).
User Experience
For a trader, this means the indicator acts as a visual guide. Rather than forcing you to interpret raw price candles, it provides a refined path that highlights where the momentum is heading. It effectively "filters" the market, helping you see if the current move is part of an established trend or just a temporary vibration in the price.
//+------------------------------------------------------------------+
//| i-RoundPrice-T01m.mq4 |
//| 25.07.2006 Translated on MT4 by Êèì Èãîðü Â. aka KimIV |
//| http://www.kimiv.ru |
//| modification by maloma - maloma@datasvit.net |
//+------------------------------------------------------------------+
/*[[
Name := RoundPrice
Author := Copyright © 2006, HomeSoft Tartan Corp.
Link := spiky@transkeino.ru
Separate Window := No
First Color := Lime
First Draw Type := Line
First Symbol := 217
Use Second Data := Yes
Second Color := Red
Second Draw Type := Line
Second Symbol := 218
]]*/
#property copyright "Copyright © 2006, HomeSoft Tartan Corp."
#property link "spiky@transkeino.ru"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 Red
//------- Âíåøíèå ïàðàìåòðû èíäèêàòîðà -------------------------------
extern int t3_period=21;
extern double b=0.7;
extern int mBar=300;
//------- Ãëîáàëüíûå ïåðåìåííûå èíäèêàòîðà ---------------------------
double dBuf0[], dBuf1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void init() {
SetIndexBuffer (0, dBuf0);
SetIndexEmptyValue(0, EMPTY_VALUE);
SetIndexStyle (0, DRAW_LINE,EMPTY,2);
SetIndexBuffer (1, dBuf1);
SetIndexEmptyValue(1, EMPTY_VALUE);
SetIndexStyle (1, DRAW_LINE,EMPTY,2);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
void start() {
bool ft=True;
double e1, e2, e3, e4, e5, e6, c1, c2, c3, c4, n, w1, w2, b2, b3;
double t3[];
int LoopBegin, shift;
if (mBar==0) LoopBegin=Bars-t3_period-1;
else LoopBegin=mBar;
LoopBegin=MathMin(LoopBegin, Bars-t3_period-1);
ArrayResize(t3, LoopBegin);
if (ft) {
b2=b*b;
b3=b2*b;
c1=-b3;
c2=(3*(b2+b3));
c3=-3*(2*b2+b+b3);
c4=(1+3*b+b3+3*b2);
n=t3_period;
if (n<1) n=1;
n=1+0.5*(n-1);
w1=2/(n+1);
w2=1-w1;
ft=False;
}
for (shift=LoopBegin; shift>=0; shift--) {
e1=w1*Close[shift]+w2*e1;
e2=w1*e1+w2*e2;
e3=w1*e2+w2*e3;
e4=w1*e3+w2*e4;
e5=w1*e4+w2*e5;
e6=w1*e5+w2*e6;
t3[shift]=c1*e6+c2*e5+c3*e4+c4*e3;
if (t3[shift+1]<=t3[shift]) dBuf0[shift]=t3[shift]; else dBuf0[shift]=0;
if (t3[shift+1]>t3[shift]) dBuf1[shift]=t3[shift]; else dBuf1[shift]=0;
}
}
//+------------------------------------------------------------------+
Comments