Thank you but not quite was i was looking for, would you mind adding smoothing additionally please?mrtools wrote: Sat Mar 15, 2025 9:59 am I adjusted the speed down to 0.25 and changed to a smoothed moving average and got this.
Re: MT4 Indicator requests and ideas
21132Maybe try the rsx version hereErrør314159 wrote: Sat Mar 15, 2025 10:25 am Thank you but not quite was i was looking for, would you mind adding smoothing additionally please?
Re: MT4 Indicator requests and ideas
21133
Could someone add percentage numbers for this indicator like in the screenshot?
//+------------------------------------------------------------------+
//| mn Curr Strength Meter.mq4 |
//+------------------------------------------------------------------+
#property copyright "Mn"
#property link ""
#property indicator_separate_window
#property indicator_buffers 8
#define mPowerLevels 20
extern int mCorner = 2, mPrd = 2, mTimeFrame = 5, mShift = 0;
extern int mRocShift = 20, mHist = 100, mWindow = 1;
extern bool mAlert = false;
extern color mTxtCol;
string aPair[] = {"EURUSD","BTCUSD", };
string Currency[] = {"USD","BTC"};
int MeterXPos[] = {107, 90, 73, 56, 39, 22, 5};
int mTable[10] = {0,5,10,25,40,50,60,75,90,95};
int mPrCnt, mMeterCurrs;
double mMeter[], mHigh[], mLow[], mClose[], mRatio[], mRange[], mTabPos[], mTabPos2[];
double mRocMeter[], mC0[], mC1[], mC2[], mC3[], mC4[], mC5[], mC6[], mC7[];
//+------------------------------------------------------------------+
int init()
{
int x, yPos;
mPrCnt = ArrayRange(aPair, 0);
mMeterCurrs = ArrayRange(Currency, 0);
SetIndexBuffer(0, mC0); SetIndexStyle(0, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(1, mC1); SetIndexStyle(1, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(2, mC2); SetIndexStyle(2, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(3, mC3); SetIndexStyle(3, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(4, mC4); SetIndexStyle(4, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(5, mC5); SetIndexStyle(5, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(6, mC6); SetIndexStyle(6, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(7, mC7); SetIndexStyle(7, 12, EMPTY, EMPTY, CLR_NONE);
ArrayResize(mMeter, mMeterCurrs); // No currency columns
ArrayResize(mRocMeter, mMeterCurrs);
ArrayResize(mHigh, mPrCnt);
ArrayResize(mLow, mPrCnt);
ArrayResize(mClose, mPrCnt);
ArrayResize(mRatio, mPrCnt);
ArrayResize(mRange, mPrCnt);
ArrayResize(mTabPos, mPrCnt);
ArrayResize(mTabPos2, mPrCnt);
SetIndexLabel(0, NULL);
SetIndexLabel(1, NULL);
SetIndexLabel(2, NULL);
SetIndexLabel(3, NULL);
SetIndexLabel(4, NULL);
SetIndexLabel(5, NULL);
SetIndexLabel(6, NULL);
SetIndexLabel(7, NULL);
ObjectsDeleteAll(0,OBJ_LABEL);
for (x = 0; x < mMeterCurrs; x++)
{
for(yPos = 1; yPos <= mPowerLevels; yPos++)
{
mCreate(Currency[x]+yPos, MeterXPos[x], 91 - yPos * 4);
mCreate(Currency[x]+"roc"+yPos, 140 + MeterXPos[x], 91 - yPos * 4);
}
mCreate(Currency[x], MeterXPos[x]+2, 20, Currency[x], 7, "Arial Narrow ", mTxtCol ); // Curr name
}
mCreate("Name1", 15, 2, "", 10, "Times", mTxtCol);
mCreate("Name2", 175, 2, "ROC", 10, "Times", mTxtCol);
mCreate("line", 3, 25,"", 10, "Times", mTxtCol);
mCreate("line2", 139, 25,"", 10, "Times", mTxtCol);
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
ObjectsDeleteAll(0, OBJ_LABEL);
return(0);
}
//+------------------------------------------------------------------+
int start()
{
double point, cmeter;
int i, mPrInd, z;
string mySymbol;
for(z = mHist; z >=0; z--) // Build ROC history
{
for(i = 0; i < mPrCnt; i++) // values every pair into arrays
{
mySymbol = aPair;
if (StringSubstr(mySymbol,3,3) == "JPY") point = 0.001;
else point = 0.00001;
mHigh = iMA(mySymbol, mTimeFrame, mPrd, 0, 0, PRICE_HIGH, z);
mLow = iMA(mySymbol, mTimeFrame, mPrd, 0, 0, PRICE_LOW, z);
mClose = iMA(mySymbol, mTimeFrame, mPrd, 0, 0, PRICE_CLOSE, z);
mRange = MathMax((mHigh - mLow) / point, 1);
mRatio = (mClose - mLow) / mRange[i] / point;
mTabPos[i] = mRate(mRatio[i] * 100); // 0-10 from Table[]
mTabPos2[i] = 10 - mTabPos[i];
}
CalcStrengthMeter();
ClearMeter(1); // repaint the meter
for (mPrInd = 0; mPrInd < mMeterCurrs; mPrInd++)
{
mPaintMeter(mPrInd, mMeter[mPrInd]);
switch(mPrInd)
{
case 0: {mC0[z] = mMeter[mPrInd]; break; }
case 1: {mC1[z] = mMeter[mPrInd]; break; }
case 2: {mC2[z] = mMeter[mPrInd]; break; }
case 3: {mC3[z] = mMeter[mPrInd]; break; }
case 4: {mC4[z] = mMeter[mPrInd]; break; }
case 5: {mC5[z] = mMeter[mPrInd]; break; }
case 6: {mC6[z] = mMeter[mPrInd]; break; }
case 7: {mC7[z] = mMeter[mPrInd]; break; }
default: break;
}
} // for i
} // for z
CalcRoc();
ClearMeter(2);
for (int m = 0; m < mMeterCurrs; m++)
mPaintRocMeter(m, mRocMeter[m]);
return(0);
}
//+------------------------------------------------------------------+
void CalcStrengthMeter()
{
int i, mPrInd, cnt;
double cmeter;
for (mPrInd = 0; mPrInd < mMeterCurrs; mPrInd ++) // For each meter currency
{
cnt = 0; cmeter = 0;
for (i = 0; i < mPrCnt; i++) // For every monitored pair
{
if (StringSubstr(aPair[i],0,3) == Currency[mPrInd])
{
cnt++;
cmeter = cmeter + mTabPos[i];
}
if (StringSubstr(aPair[i],3,3) == Currency[mPrInd])
{
cnt++;
cmeter = cmeter + mTabPos2[i];
}
if (cnt > 0)
mMeter[mPrInd] = NormalizeDouble(cmeter / cnt,1);
else
mMeter[mPrInd] = -1;
} // For i
}
return(0);
}
//+------------------------------------------------------------------+
int mRate(double ratio)
{
int i, j = -1;
if(ratio <= mTable[0])
j = 0;
else {
for(i = 1; i < mPowerLevels; i++)
if(ratio < mTable[i]) // returns 0-10
{
j = i-1;
break;
}
if(j == -1) j = 10;
}
return(j);
}
//+------------------------------------------------------------------+
void mCreate(string name, int x, int y, string text = "-",int size = 38,
string font = "Times", color colour = CLR_NONE)
{
ObjectCreate(name, OBJ_LABEL, mWindow, 0, 0);
ObjectSet(name, OBJPROP_CORNER, mCorner);
ObjectSet(name, OBJPROP_COLOR, colour);
ObjectSet(name, OBJPROP_XDISTANCE, x);
ObjectSet(name, OBJPROP_YDISTANCE, y);
ObjectSetText(name, text, size, font, colour);
}
//+------------------------------------------------------------------+
void ClearMeter(int mMtr)
{
int z, y;
for (z = 0; z < mMeterCurrs; z++)
{
for(y = 1; y <= mPowerLevels; y++)
if(mMtr == 1)
ObjectSet(Currency[z]+y, OBJPROP_COLOR, CLR_NONE);
else
ObjectSet(Currency[z]+"roc"+y, OBJPROP_COLOR, CLR_NONE);
}
}
//+------------------------------------------------------------------+
void mPaintMeter(int mPrInd, double mVal)
{
if (mVal > 0.0) ObjectSet(Currency[mPrInd]+"20", OBJPROP_COLOR, Blue);
if (mVal > 0.5) ObjectSet(Currency[mPrInd]+"19", OBJPROP_COLOR, Blue);
if (mVal > 1.0) ObjectSet(Currency[mPrInd]+"18", OBJPROP_COLOR, RoyalBlue);
if (mVal > 1.5) ObjectSet(Currency[mPrInd]+"17", OBJPROP_COLOR, RoyalBlue);
if (mVal > 2.0) ObjectSet(Currency[mPrInd]+"16", OBJPROP_COLOR, DodgerBlue);
if (mVal > 2.5) ObjectSet(Currency[mPrInd]+"15", OBJPROP_COLOR, DodgerBlue);
if (mVal > 3.0) ObjectSet(Currency[mPrInd]+"14", OBJPROP_COLOR, DeepSkyBlue);
if (mVal > 3.5) ObjectSet(Currency[mPrInd]+"13", OBJPROP_COLOR, DeepSkyBlue);
if (mVal > 4.0) ObjectSet(Currency[mPrInd]+"12", OBJPROP_COLOR, Aqua);
if (mVal > 4.5) ObjectSet(Currency[mPrInd]+"11", OBJPROP_COLOR, Aqua);
if (mVal > 5.0) ObjectSet(Currency[mPrInd]+"10", OBJPROP_COLOR, SpringGreen);
if (mVal > 5.5) ObjectSet(Currency[mPrInd]+"9", OBJPROP_COLOR, SpringGreen);
if (mVal > 6.0) ObjectSet(Currency[mPrInd]+"8", OBJPROP_COLOR, Red);
if (mVal > 6.5) ObjectSet(Currency[mPrInd]+"7", OBJPROP_COLOR, Red);
if (mVal > 7.0) ObjectSet(Currency[mPrInd]+"6", OBJPROP_COLOR, Lime);
if (mVal > 7.5) ObjectSet(Currency[mPrInd]+"5", OBJPROP_COLOR, Lime);
if (mVal > 8.0) ObjectSet(Currency[mPrInd]+"4", OBJPROP_COLOR, PaleGreen);
if (mVal > 8.5) ObjectSet(Currency[mPrInd]+"3", OBJPROP_COLOR, PaleGreen);
if (mVal > 9.0) ObjectSet(Currency[mPrInd]+"2", OBJPROP_COLOR, White);
if (mVal > 9.5) ObjectSet(Currency[mPrInd]+"1", OBJPROP_COLOR, White);
}
//+------------------------------------------------------------------+
void mPaintRocMeter(int mm, double mRocVal)
{
}
//+------------------------------------------------------------------+
void CalcRoc()
{
int j;
for (j = 0; j < mMeterCurrs; j ++) // For each meter currency
{
switch(j)
{
case 0: {mRocMeter[j] = mC0[0] - mC0[mRocShift]; break; }
case 1: {mRocMeter[j] = mC1[0] - mC1[mRocShift]; break; }
case 2: {mRocMeter[j] = mC2[0] - mC2[mRocShift]; break; }
case 3: {mRocMeter[j] = mC3[0] - mC3[mRocShift]; break; }
case 4: {mRocMeter[j] = mC4[0] - mC4[mRocShift]; break; }
case 5: {mRocMeter[j] = mC5[0] - mC5[mRocShift]; break; }
case 6: {mRocMeter[j] = mC6[0] - mC6[mRocShift]; break; }
case 7: {mRocMeter[j] = mC7[0] - mC7[mRocShift]; break; }
default: break;
}
}
return(0);
}
//+------------------------------------------------------------------+
//| mn Curr Strength Meter.mq4 |
//+------------------------------------------------------------------+
#property copyright "Mn"
#property link ""
#property indicator_separate_window
#property indicator_buffers 8
#define mPowerLevels 20
extern int mCorner = 2, mPrd = 2, mTimeFrame = 5, mShift = 0;
extern int mRocShift = 20, mHist = 100, mWindow = 1;
extern bool mAlert = false;
extern color mTxtCol;
string aPair[] = {"EURUSD","BTCUSD", };
string Currency[] = {"USD","BTC"};
int MeterXPos[] = {107, 90, 73, 56, 39, 22, 5};
int mTable[10] = {0,5,10,25,40,50,60,75,90,95};
int mPrCnt, mMeterCurrs;
double mMeter[], mHigh[], mLow[], mClose[], mRatio[], mRange[], mTabPos[], mTabPos2[];
double mRocMeter[], mC0[], mC1[], mC2[], mC3[], mC4[], mC5[], mC6[], mC7[];
//+------------------------------------------------------------------+
int init()
{
int x, yPos;
mPrCnt = ArrayRange(aPair, 0);
mMeterCurrs = ArrayRange(Currency, 0);
SetIndexBuffer(0, mC0); SetIndexStyle(0, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(1, mC1); SetIndexStyle(1, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(2, mC2); SetIndexStyle(2, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(3, mC3); SetIndexStyle(3, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(4, mC4); SetIndexStyle(4, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(5, mC5); SetIndexStyle(5, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(6, mC6); SetIndexStyle(6, 12, EMPTY, EMPTY, CLR_NONE);
SetIndexBuffer(7, mC7); SetIndexStyle(7, 12, EMPTY, EMPTY, CLR_NONE);
ArrayResize(mMeter, mMeterCurrs); // No currency columns
ArrayResize(mRocMeter, mMeterCurrs);
ArrayResize(mHigh, mPrCnt);
ArrayResize(mLow, mPrCnt);
ArrayResize(mClose, mPrCnt);
ArrayResize(mRatio, mPrCnt);
ArrayResize(mRange, mPrCnt);
ArrayResize(mTabPos, mPrCnt);
ArrayResize(mTabPos2, mPrCnt);
SetIndexLabel(0, NULL);
SetIndexLabel(1, NULL);
SetIndexLabel(2, NULL);
SetIndexLabel(3, NULL);
SetIndexLabel(4, NULL);
SetIndexLabel(5, NULL);
SetIndexLabel(6, NULL);
SetIndexLabel(7, NULL);
ObjectsDeleteAll(0,OBJ_LABEL);
for (x = 0; x < mMeterCurrs; x++)
{
for(yPos = 1; yPos <= mPowerLevels; yPos++)
{
mCreate(Currency[x]+yPos, MeterXPos[x], 91 - yPos * 4);
mCreate(Currency[x]+"roc"+yPos, 140 + MeterXPos[x], 91 - yPos * 4);
}
mCreate(Currency[x], MeterXPos[x]+2, 20, Currency[x], 7, "Arial Narrow ", mTxtCol ); // Curr name
}
mCreate("Name1", 15, 2, "", 10, "Times", mTxtCol);
mCreate("Name2", 175, 2, "ROC", 10, "Times", mTxtCol);
mCreate("line", 3, 25,"", 10, "Times", mTxtCol);
mCreate("line2", 139, 25,"", 10, "Times", mTxtCol);
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
ObjectsDeleteAll(0, OBJ_LABEL);
return(0);
}
//+------------------------------------------------------------------+
int start()
{
double point, cmeter;
int i, mPrInd, z;
string mySymbol;
for(z = mHist; z >=0; z--) // Build ROC history
{
for(i = 0; i < mPrCnt; i++) // values every pair into arrays
{
mySymbol = aPair;
if (StringSubstr(mySymbol,3,3) == "JPY") point = 0.001;
else point = 0.00001;
mHigh = iMA(mySymbol, mTimeFrame, mPrd, 0, 0, PRICE_HIGH, z);
mLow = iMA(mySymbol, mTimeFrame, mPrd, 0, 0, PRICE_LOW, z);
mClose = iMA(mySymbol, mTimeFrame, mPrd, 0, 0, PRICE_CLOSE, z);
mRange = MathMax((mHigh - mLow) / point, 1);
mRatio = (mClose - mLow) / mRange[i] / point;
mTabPos[i] = mRate(mRatio[i] * 100); // 0-10 from Table[]
mTabPos2[i] = 10 - mTabPos[i];
}
CalcStrengthMeter();
ClearMeter(1); // repaint the meter
for (mPrInd = 0; mPrInd < mMeterCurrs; mPrInd++)
{
mPaintMeter(mPrInd, mMeter[mPrInd]);
switch(mPrInd)
{
case 0: {mC0[z] = mMeter[mPrInd]; break; }
case 1: {mC1[z] = mMeter[mPrInd]; break; }
case 2: {mC2[z] = mMeter[mPrInd]; break; }
case 3: {mC3[z] = mMeter[mPrInd]; break; }
case 4: {mC4[z] = mMeter[mPrInd]; break; }
case 5: {mC5[z] = mMeter[mPrInd]; break; }
case 6: {mC6[z] = mMeter[mPrInd]; break; }
case 7: {mC7[z] = mMeter[mPrInd]; break; }
default: break;
}
} // for i
} // for z
CalcRoc();
ClearMeter(2);
for (int m = 0; m < mMeterCurrs; m++)
mPaintRocMeter(m, mRocMeter[m]);
return(0);
}
//+------------------------------------------------------------------+
void CalcStrengthMeter()
{
int i, mPrInd, cnt;
double cmeter;
for (mPrInd = 0; mPrInd < mMeterCurrs; mPrInd ++) // For each meter currency
{
cnt = 0; cmeter = 0;
for (i = 0; i < mPrCnt; i++) // For every monitored pair
{
if (StringSubstr(aPair[i],0,3) == Currency[mPrInd])
{
cnt++;
cmeter = cmeter + mTabPos[i];
}
if (StringSubstr(aPair[i],3,3) == Currency[mPrInd])
{
cnt++;
cmeter = cmeter + mTabPos2[i];
}
if (cnt > 0)
mMeter[mPrInd] = NormalizeDouble(cmeter / cnt,1);
else
mMeter[mPrInd] = -1;
} // For i
}
return(0);
}
//+------------------------------------------------------------------+
int mRate(double ratio)
{
int i, j = -1;
if(ratio <= mTable[0])
j = 0;
else {
for(i = 1; i < mPowerLevels; i++)
if(ratio < mTable[i]) // returns 0-10
{
j = i-1;
break;
}
if(j == -1) j = 10;
}
return(j);
}
//+------------------------------------------------------------------+
void mCreate(string name, int x, int y, string text = "-",int size = 38,
string font = "Times", color colour = CLR_NONE)
{
ObjectCreate(name, OBJ_LABEL, mWindow, 0, 0);
ObjectSet(name, OBJPROP_CORNER, mCorner);
ObjectSet(name, OBJPROP_COLOR, colour);
ObjectSet(name, OBJPROP_XDISTANCE, x);
ObjectSet(name, OBJPROP_YDISTANCE, y);
ObjectSetText(name, text, size, font, colour);
}
//+------------------------------------------------------------------+
void ClearMeter(int mMtr)
{
int z, y;
for (z = 0; z < mMeterCurrs; z++)
{
for(y = 1; y <= mPowerLevels; y++)
if(mMtr == 1)
ObjectSet(Currency[z]+y, OBJPROP_COLOR, CLR_NONE);
else
ObjectSet(Currency[z]+"roc"+y, OBJPROP_COLOR, CLR_NONE);
}
}
//+------------------------------------------------------------------+
void mPaintMeter(int mPrInd, double mVal)
{
if (mVal > 0.0) ObjectSet(Currency[mPrInd]+"20", OBJPROP_COLOR, Blue);
if (mVal > 0.5) ObjectSet(Currency[mPrInd]+"19", OBJPROP_COLOR, Blue);
if (mVal > 1.0) ObjectSet(Currency[mPrInd]+"18", OBJPROP_COLOR, RoyalBlue);
if (mVal > 1.5) ObjectSet(Currency[mPrInd]+"17", OBJPROP_COLOR, RoyalBlue);
if (mVal > 2.0) ObjectSet(Currency[mPrInd]+"16", OBJPROP_COLOR, DodgerBlue);
if (mVal > 2.5) ObjectSet(Currency[mPrInd]+"15", OBJPROP_COLOR, DodgerBlue);
if (mVal > 3.0) ObjectSet(Currency[mPrInd]+"14", OBJPROP_COLOR, DeepSkyBlue);
if (mVal > 3.5) ObjectSet(Currency[mPrInd]+"13", OBJPROP_COLOR, DeepSkyBlue);
if (mVal > 4.0) ObjectSet(Currency[mPrInd]+"12", OBJPROP_COLOR, Aqua);
if (mVal > 4.5) ObjectSet(Currency[mPrInd]+"11", OBJPROP_COLOR, Aqua);
if (mVal > 5.0) ObjectSet(Currency[mPrInd]+"10", OBJPROP_COLOR, SpringGreen);
if (mVal > 5.5) ObjectSet(Currency[mPrInd]+"9", OBJPROP_COLOR, SpringGreen);
if (mVal > 6.0) ObjectSet(Currency[mPrInd]+"8", OBJPROP_COLOR, Red);
if (mVal > 6.5) ObjectSet(Currency[mPrInd]+"7", OBJPROP_COLOR, Red);
if (mVal > 7.0) ObjectSet(Currency[mPrInd]+"6", OBJPROP_COLOR, Lime);
if (mVal > 7.5) ObjectSet(Currency[mPrInd]+"5", OBJPROP_COLOR, Lime);
if (mVal > 8.0) ObjectSet(Currency[mPrInd]+"4", OBJPROP_COLOR, PaleGreen);
if (mVal > 8.5) ObjectSet(Currency[mPrInd]+"3", OBJPROP_COLOR, PaleGreen);
if (mVal > 9.0) ObjectSet(Currency[mPrInd]+"2", OBJPROP_COLOR, White);
if (mVal > 9.5) ObjectSet(Currency[mPrInd]+"1", OBJPROP_COLOR, White);
}
//+------------------------------------------------------------------+
void mPaintRocMeter(int mm, double mRocVal)
{
}
//+------------------------------------------------------------------+
void CalcRoc()
{
int j;
for (j = 0; j < mMeterCurrs; j ++) // For each meter currency
{
switch(j)
{
case 0: {mRocMeter[j] = mC0[0] - mC0[mRocShift]; break; }
case 1: {mRocMeter[j] = mC1[0] - mC1[mRocShift]; break; }
case 2: {mRocMeter[j] = mC2[0] - mC2[mRocShift]; break; }
case 3: {mRocMeter[j] = mC3[0] - mC3[mRocShift]; break; }
case 4: {mRocMeter[j] = mC4[0] - mC4[mRocShift]; break; }
case 5: {mRocMeter[j] = mC5[0] - mC5[mRocShift]; break; }
case 6: {mRocMeter[j] = mC6[0] - mC6[mRocShift]; break; }
case 7: {mRocMeter[j] = mC7[0] - mC7[mRocShift]; break; }
default: break;
}
}
return(0);
}
Re: MT4 Indicator requests and ideas
21134hello guys!
looking for an indicator that would show me another pair's chart in the bottom of the platform. in the place like RSI is. full candle chart. like if I have EURUSD chart open, I would want to have GBPUSD pair in the bottom. I have seen it somewhere but now I cant find it.
thanks very much guys!
looking for an indicator that would show me another pair's chart in the bottom of the platform. in the place like RSI is. full candle chart. like if I have EURUSD chart open, I would want to have GBPUSD pair in the bottom. I have seen it somewhere but now I cant find it.
thanks very much guys!
Re: MT4 Indicator requests and ideas
21135Anybody got a Mt5 (Kvo) Klinger Volume Oscillator?
Or can convert one?
Or can convert one?
Re: MT4 Indicator requests and ideas
21136Check thereJimmy wrote: Tue Apr 04, 2017 11:31 am Here are two Mini Charts that should fit your needs. Give them a try.
Re: MT4 Indicator requests and ideas
21137Try hereErrør314159 wrote: Mon Mar 17, 2025 11:49 am Anybody got a Mt5 (Kvo) Klinger Volume Oscillator?
Or can convert one?
- These users thanked the author mrtools for the post:
- Errør314159
Re: MT4 Indicator requests and ideas
21139Official Forex-station GIF animator at your service 
See a GIF with Forex-station.com on it? I probably made it
The best divergence indicator in the world.
Real news exists: Infowars.com
See a GIF with Forex-station.com on it? I probably made it
The best divergence indicator in the world.
Real news exists: Infowars.com
Re: MT4 Indicator requests and ideas
21140
it' s like momo saying :
"leather strap is of the anus"
I don't understand what you don't understand

- These users thanked the author ionone for the post (total 2):
- Errør314159, moey_dw
Scalping the Century TimeFrame since 1999