basketEUR
Download scriptThis script is designed for the MetaTrader platform to provide a specialized visual analysis of currency movements. Unlike standard charts that show the price of a single currency pair, this tool creates a custom "Heiken Ashi" style visualization based on a weighted average of multiple European and Japanese currency pairs.
Core Functionality
The primary purpose of this script is to smooth out market noise by aggregating data from four specific currency pairs: EURUSD, EURGBP, EURCHF, and EURJPY. By combining these sources, the indicator seeks to provide a more comprehensive view of the Euro's strength or movement relative to a basket of diverse currencies.
How the Logic Works
The script processes the market data using the following logical steps:
- Data Aggregation: Instead of looking at one price point, the tool pulls the "Open," "High," "Low," and "Close" prices for four different pairs simultaneously.
- Weighted Calculation: Not all currencies are treated equally in this calculation. The logic applies a specific multiplier to the EURGBP data (doubling its influence) before averaging it with the other three pairs. This suggests a strategic preference for the Euro/British Pound relationship within the overall basket.
- Custom Price Mapping: The script calculates four unique values for every point in time:
- A synthesized High price.
- A synthesized Low price.
- A calculated Opening price.
- A calculated Closing price.
- Visual Output: These four values are then plotted on a separate window in your trading platform. It uses specific colors (Royal Blue and Crimson) to draw lines that represent the boundaries of these synthesized prices.
User Experience
For the trader, this means you aren't looking at raw, jagged price action. Instead, you are viewing a smoothed, composite trend. By using this logic, the indicator aims to highlight the underlying momentum of the Euro across a broader range of markets, making it easier to identify general trends while filtering out the "jitter" often found in individual currency pairs.
//+------------------------------------------------------------------+
//| HeikenAshi_DM.mq4 |
//| Copyright c 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//| revised, Dean Malone |
//+------------------------------------------------------------------+
//| For Heiken Ashi we recommend next chart settings ( press F8 or |
//| select on menu 'Charts'->'Properties...'): |
//| - On 'Color' Tab select 'Black' for 'Line Graph' |
//| - On 'Common' Tab disable 'Chart on Foreground' checkbox and |
//| select 'Line Chart' radiobutton |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
//#property indicator_chart_window
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Crimson
#property indicator_color2 RoyalBlue
#property indicator_color3 Crimson
#property indicator_color4 RoyalBlue
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//----
int ExtCountedBars=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//|------------------------------------------------------------------|
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE, 0, 1, RoyalBlue);
SetIndexBuffer(0, ExtMapBuffer1);
SetIndexLabel(0,"HA_0"); //included "HA_0" Buffer Label for Data Window
SetIndexStyle(1,DRAW_LINE, 0, 1, Crimson);
SetIndexBuffer(1, ExtMapBuffer2);
SetIndexLabel(1,"HA_1"); //included "HA_1" Buffer Label for Data Window
SetIndexStyle(2,DRAW_NONE, 0, 3, Crimson);
SetIndexBuffer(2, ExtMapBuffer3);
SetIndexLabel(2,"HA_Open"); //included "HA_Open" Buffer Label for Data Window
SetIndexStyle(3,DRAW_LINE, 0, 3, Lime);
SetIndexBuffer(3, ExtMapBuffer4);
SetIndexLabel(3,"HA_Close"); //included "HA_Close" Buffer Label for Data Window
//----
SetIndexDrawBegin(0,10);
SetIndexDrawBegin(1,10);
SetIndexDrawBegin(2,10);
SetIndexDrawBegin(3,10);
//---- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexBuffer(2,ExtMapBuffer3);//HA_Open
SetIndexBuffer(3,ExtMapBuffer4);//HA_Close
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
double haOpen, haHigh, haLow, haClose;
if(Bars<=10) return(0);
ExtCountedBars=IndicatorCounted();
//---- check for possible errors
if (ExtCountedBars<0) return(-1);
//---- last counted bar will be recounted
if (ExtCountedBars>0) ExtCountedBars--;
int pos=Bars-ExtCountedBars-1;
while(pos>=0)
{
haOpen= (iOpen("EURUSD",0,pos)+iOpen("EURGBP",0,pos)*2+iOpen("EURCHF",0,pos)+iOpen("EURJPY",0,pos)/100)/4;//(ExtMapBuffer3[pos+1]+ExtMapBuffer4[pos+1])/2;
haClose= (iClose("EURUSD",0,pos)+iClose("EURGBP",0,pos)*2+iClose("EURCHF",0,pos)+iClose("EURJPY",0,pos)/100)/4;//(Open[pos]+High[pos]+Low[pos]+Close[pos])/4;
haHigh= (iHigh("EURUSD",0,pos)+iHigh("EURGBP",0,pos)*2+iHigh("EURCHF",0,pos)+iHigh("EURJPY",0,pos)/100)/4;//MathMax(High[pos], MathMax(haOpen, haClose));
haLow= (iLow("EURUSD",0,pos)+iLow("EURGBP",0,pos)*2+iLow("EURCHF",0,pos)+iLow("EURJPY",0,pos)/100)/4;//MathMin(Low[pos], MathMin(haOpen, haClose));
ExtMapBuffer1[pos]=haHigh;
ExtMapBuffer2[pos]=haLow;
ExtMapBuffer3[pos]=haOpen;
ExtMapBuffer4[pos]=haClose;
pos--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
Comments