Gimmebar.mq4: A Non-Technical Explanation
Overview
The Gimmebar.mq4
script is a custom indicator used in MetaTrader 4 (MT4) to help traders identify potential entry and exit points for trades based on Bollinger Bands. The concept of "Gimme Bars" refers to price bars that touch or breach these bands, suggesting possible market movements.
Key Features
Bollinger Bands
- Bands Calculation: The script uses two Bollinger Bands, one upper and one lower, calculated over a specified period (
BobaPeriod
) with a set number of standard deviations (BobaDeviations
). - Purpose: These bands help identify volatility in the market. When prices touch or breach these bands, it may indicate potential trading opportunities.
Indicator Settings
- Buffers: The script uses six buffers to store data for drawing lines and arrows on the chart.
- Two buffers for Bollinger Bands (
BufferBand1
,BufferBand2
). - Two buffers for marking "Gimme Bars" (
BufferSell
,BufferBuy
). - Two buffers for potential entry points (
BufferSellEntry
,BufferBuyEntry
).
- Two buffers for Bollinger Bands (
Visual Indicators
- Arrows:
- Upward arrows indicate a potential buying opportunity when prices touch the lower band.
- Downward arrows suggest a selling opportunity when prices reach the upper band.
Alerts
- Sound Notifications: If enabled, the script can alert traders with sound notifications when certain conditions are met, such as when a "Gimme Bar" is identified.
Logic Flow
-
Initialization:
- Sets up the indicator's appearance and parameters.
- Configures buffers for storing calculated values.
-
Data Processing:
- Iterates through historical price data to calculate Bollinger Bands.
- Identifies "Gimme Bars" where prices touch or breach these bands.
-
Marking Opportunities:
- Places visual markers (arrows) on the chart to indicate potential buy or sell signals based on the identified "Gimme Bars".
-
Alerts:
- Triggers alerts for traders when specific conditions are met, helping them make informed trading decisions.
Conclusion
The Gimmebar.mq4
script is a tool designed to assist traders by visually identifying potential market movements using Bollinger Bands and marking these opportunities on the chart. It combines data analysis with visual cues and optional alerts to enhance trading strategies in MT4.
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
BolliToucher_003
//+------------------------------------------------------------------+
//| Gimmebar.mq4 |
//| See Joe Ross Trading Manual on Gimme-Bars (e.g. from the |
//| library on www.trading-naked.com)
//|Bolllitouch - yet another perky mod |
//+------------------------------------------------------------------+
#property copyright "by Shimodax, 2005"
#property link "http://www.strategybuilder.com"
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 SlateBlue
#property indicator_color2 SlateBlue
#property indicator_color3 Pink
#property indicator_color4 LightBlue
#property indicator_color5 Pink
#property indicator_color6 LightBlue
//---- indicator parameters
extern int BobaPeriod= 20;
extern int BobaDeviations= 2;
extern bool Use_Sound=true;
double alertBar;
//---- indicator buffers
double BufferBand1[];
double BufferBand2[];
double BufferSell[];
double BufferBuy[];
double BufferSellEntry[];
double BufferBuyEntry[];
string UD="";
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
//---- 2 additional buffers are used for counting.
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
// two bollies
SetIndexBuffer(0,BufferBand1);
SetIndexStyle(0,DRAW_LINE);
SetIndexDrawBegin(0,BobaPeriod);
SetIndexBuffer(1,BufferBand2);
SetIndexStyle(1,DRAW_LINE);
SetIndexDrawBegin(1,BobaPeriod);
// marks for gimmees
SetIndexBuffer(2,BufferSell);
SetIndexStyle(2,DRAW_ARROW);
SetIndexDrawBegin(2,BobaPeriod);
SetIndexArrow(2, 167);
SetIndexEmptyValue(2, 0);
SetIndexBuffer(3,BufferBuy);
SetIndexStyle(3,DRAW_ARROW);
SetIndexDrawBegin(3,BobaPeriod);
SetIndexArrow(3, 167);
SetIndexEmptyValue(3, 0);
// marks for entries
SetIndexBuffer(4,BufferSellEntry);
SetIndexStyle(4,DRAW_ARROW);
SetIndexDrawBegin(4,BobaPeriod);
SetIndexArrow(4, 238);
SetIndexEmptyValue(4, 0);
SetIndexBuffer(5,BufferBuyEntry);
SetIndexStyle(5,DRAW_ARROW);
SetIndexDrawBegin(5,BobaPeriod);
SetIndexArrow(5, 236);
SetIndexEmptyValue(5, 0);
//---- name for DataWindow and indicator subwindow label
// IndicatorShortName("GimmeBar ");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars= IndicatorCounted(),
lastbar;
if (counted_bars>0)
counted_bars--;
lastbar= Bars - counted_bars;
GimmeeBar(0, lastbar, BufferSell, BufferBuy, BufferSellEntry, BufferBuyEntry, BufferBand1, BufferBand2, BobaPeriod, BobaDeviations);
return (0);
}
//+------------------------------------------------------------------+
//| Mark Gimmee-Bars and mark possible entries for deals |
//+------------------------------------------------------------------+
double GimmeeBar(int offset, int lastbar, double &sellbuf[], double &buybuf[], double &sellbuf2[], double &buybuf2[],
double &band1buf[], double&band2buf[], int period, int deviation)
{
double band1, band2;
int markerdist= 5; // distance between bars and marker dots
lastbar= MathMin(Bars-period, lastbar);
//---- main loop
for(int i= lastbar; i>=offset; i--){
sellbuf[i]= 0;
buybuf[i]=0;
sellbuf2[i]= 0;
buybuf2[i]=0;
band1= iBands(NULL,0, period, deviation, 0, PRICE_CLOSE, MODE_UPPER, i);
band2= iBands(NULL,0, period, deviation, 0, PRICE_CLOSE, MODE_LOWER, i);
band1buf[i]= band1;
band2buf[i]= band2;
// 1. Prices were rising.
// 2. Prices touched the upper band.
// 3. The price bar closed lower than it
// opened when prices were previously rising.
// or vice versa
if (High[i]>=band1) {
sellbuf[i]= High[i] + markerdist*Point;
if (i < 2 )
{
UD="m Down";
DoAlert(UD);
}
}
if (Low[i]<=band2) {
buybuf[i]= Low[i] - markerdist*Point;
if (i < 2 )
{
UD="m Up.";
DoAlert(UD);
}
}
// Should such a price bar occur, a sell short order is to be executed
// one tick below the low of the Gimmee bar.
// if (sellbuf[i+1]!=0 && Low[i]<Low[i+1]-1*Point) {
// sellbuf2[i]= Low[i+1]-1*Point;
// }
// if (buybuf[i+1]!=0 && High[i]>High[i+1]+1*Point) {
// buybuf2[i]= High[i+1]+1*Point;
// }
}
/*
if (DebugLogger)
Print(TimeOffset(offset), "BG-GimmeBar ", "");
*/
return (0);
}
//+------------------------------------------------------------------+
void DoAlert(string UD)
{
if (!NewBar() || !Use_Sound)
return;
if(Bars>alertBar) {Alert("BolliToucher Alert Signal ",Symbol()," Period ",Period());alertBar = Bars;}
}
bool NewBar()
{
static datetime dt = 0;
if (dt != Time[0])
{
dt = Time[0];
return(true);
}
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---