i-RoundPrice-T01m-mod

Download script
Author: Copyright � 2006, HomeSoft Tartan Corp.
i-RoundPrice-T01m-mod

The 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.

10 Views
0 Downloads
0 Favorites
i-RoundPrice-T01m-mod
//+------------------------------------------------------------------+
//|                                            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