Price Data Components
Miscellaneous
0
Views
0
Downloads
0
Favorites
CCFp_Close_v1[1].1vert
//+------------------------------------------------------------------+
//| CCFp_v1.0.2.mq4 |
//| SemSemFX@rambler.ru |
//| http://onix-trade.net/forum/index.php?showtopic=107 |
//| Modifed version by Skyline on 09 Oct 2008 |
//+------------------------------------------------------------------+
// Rev. v1.0.1 ** Added +/-/= symbols to show strength of last 2 closed candles
// ** Added IBFX symbols management
// Rev. v1.0.2 ** Fixed symbols paint issue whenever a new candle starts
#property copyright "SemSemFX@rambler.ru"
#property link "http://onix-trade.net/forum/index.php?showtopic=107"
//----
extern string Indicator_ID = "CCFocv2:";
int Objs = 0;
//----
#property indicator_separate_window
#property indicator_buffers 8
extern bool USD = true;
extern bool EUR = true;
extern bool GBP = true;
extern bool CHF = true;
extern bool JPY = true;
extern bool AUD = true;
extern bool CAD = true;
extern bool NZD = true;
extern color Color_USD = Green;
extern color Color_EUR = Aqua;
extern color Color_GBP = Red;
extern color Color_CHF = Chocolate;
extern color Color_JPY = Maroon;
extern color Color_AUD = DarkOrange;
extern color Color_CAD = Purple;
extern color Color_NZD = Teal;
extern int Line_Thickness = 2;
extern int All_Bars = 200;
extern int Last_Bars = 0;
extern int Y_Top = 14;
extern int Y_Step = 15;
extern int TxtSize = 10;
//----
double arrUSD[];
double arrEUR[];
double arrGBP[];
double arrCHF[];
double arrJPY[];
double arrAUD[];
double arrCAD[];
double arrNZD[];
double myPoint;
string Indicator_Name;
string sAUDUSD,sEURUSD,sUSDCHF,sNZDUSD,sGBPUSD,sUSDJPY,sUSDCAD;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
Indicator_Name = Indicator_ID;
IndicatorShortName(Indicator_Name);
int width = 0;
if(0 > StringFind(Symbol(), "USD", 0))
width = 1;
else
width = Line_Thickness;
SetIndexStyle(0, DRAW_LINE, DRAW_LINE, width, Color_USD);
SetIndexBuffer(0, arrUSD);
SetIndexLabel(0, "USD");
if(0 > StringFind(Symbol(), "EUR", 0))
width = 1;
else
width = Line_Thickness;
SetIndexStyle(1, DRAW_LINE, DRAW_LINE, width, Color_EUR);
SetIndexBuffer(1, arrEUR);
SetIndexLabel(1, "EUR");
if(0 > StringFind(Symbol(), "GBP", 0))
width = 1;
else
width = Line_Thickness;
SetIndexStyle(2, DRAW_LINE, DRAW_LINE, width, Color_GBP);
SetIndexBuffer(2, arrGBP);
SetIndexLabel(2, "GBP");
if(0 > StringFind(Symbol(), "CHF", 0))
width = 1;
else
width = Line_Thickness;
SetIndexStyle(3, DRAW_LINE, DRAW_LINE, width, Color_CHF);
SetIndexBuffer(3, arrCHF);
SetIndexLabel(3, "CHF");
if(0 > StringFind(Symbol(), "JPY", 0))
width = 1;
else
width = Line_Thickness;
SetIndexStyle(4, DRAW_LINE, DRAW_LINE, width, Color_JPY);
SetIndexBuffer(4, arrJPY);
SetIndexLabel(4, "JPY");
if(0 > StringFind(Symbol(), "AUD", 0))
width = 1;
else
width = Line_Thickness;
SetIndexStyle(5, DRAW_LINE, DRAW_LINE, width, Color_AUD);
SetIndexBuffer(5, arrAUD);
SetIndexLabel(5, "AUD");
if(0 > StringFind(Symbol(), "CAD", 0))
width = 1;
else
width = Line_Thickness;
SetIndexStyle(6, DRAW_LINE, DRAW_LINE, width, Color_CAD);
SetIndexBuffer(6, arrCAD);
SetIndexLabel(6, "CAD");
if(0 > StringFind(Symbol(), "NZD", 0))
width = 1;
else
width = Line_Thickness;
SetIndexStyle(7, DRAW_LINE, DRAW_LINE, width, Color_NZD);
SetIndexBuffer(7, arrNZD);
SetIndexLabel(7, "NZD");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
for(int i = 0; i < Objs; i++)
{
if(!ObjectDelete(Indicator_Name + i))
Print("error: code #", GetLastError());
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
string AddChar;
int limit;
int counted_bars = IndicatorCounted();
//---- checking for possible errors
if(counted_bars < 0)
return(-1);
//---- the last bar will be recounted
if(All_Bars < 1)
All_Bars = Bars;
if(counted_bars > 0 && Last_Bars > 0)
counted_bars -= Last_Bars;
limit = All_Bars;
//---- IBFX Changes
// if (StringFind(Symbol(),"m") != -1)
if (StringLen(Symbol()) == 7)
{
AddChar = StringSubstr(Symbol(), 6, 1);
sAUDUSD = "AUDUSD" + AddChar;
sEURUSD = "EURUSD" + AddChar;
sUSDCHF = "USDCHF" + AddChar;
sNZDUSD = "NZDUSD" + AddChar;
sGBPUSD = "GBPUSD" + AddChar;
sUSDJPY = "USDJPY" + AddChar;
sUSDCAD = "USDCAD" + AddChar;
}
else
{
sAUDUSD = "AUDUSD";
sEURUSD = "EURUSD";
sUSDCHF = "USDCHF";
sNZDUSD = "NZDUSD";
sGBPUSD = "GBPUSD";
sUSDJPY = "USDJPY";
sUSDCAD = "USDCAD";
}
//---- main cycle
for(int i = 0; i < limit; i++)
{
GetOpenCloseCalcs(i);
}//end block for(int i=0; i<limit; i++)
PlotResults();
//----
return(0);
}
void GetOpenCloseCalcs(int i)
{
if(EUR)
{
double EURUSD_1 = iClose(sEURUSD, 0, i+1);
double EURUSD_2 = iClose(sEURUSD, 0, i+2);
if(!EURUSD_1 || !EURUSD_2)
return;
}
if(GBP)
{
double GBPUSD_1 = iClose(sGBPUSD, 0, i+1);
double GBPUSD_2 = iClose(sGBPUSD, 0, i+2);
if(!GBPUSD_1 || !GBPUSD_2)
return;
}
if(AUD)
{
double AUDUSD_1 = iClose(sAUDUSD, 0, i+1);
double AUDUSD_2 = iClose(sAUDUSD, 0, i+2);
if(!AUDUSD_1 || !AUDUSD_2)
return;
}
if(NZD)
{
double NZDUSD_1 = iClose(sNZDUSD, 0, i+1);
double NZDUSD_2 = iClose(sNZDUSD, 0, i+2);
if(!NZDUSD_1 || !NZDUSD_2)
return;
}
if(CAD)
{
double USDCAD_1 = iClose(sUSDCAD, 0, i+1);
double USDCAD_2 = iClose(sUSDCAD, 0, i+2);
if(!USDCAD_1 || !USDCAD_2)
return;
}
if(CHF)
{
double USDCHF_1 = iClose(sUSDCHF, 0, i+1);
double USDCHF_2 = iClose(sUSDCHF, 0, i+2);
if(!USDCHF_1 || !USDCHF_2)
return;
}
if(JPY)
{
double USDJPY_1 = iClose(sUSDJPY, 0, i+1);
double USDJPY_2 = iClose(sUSDJPY, 0, i+2);
if(!USDJPY_1 || !USDJPY_2)
return;
}
// calculation of currencies
if(USD)
{
arrUSD[i] = 0;
if(EUR)
arrUSD[i] += EURUSD_2 / EURUSD_1 - 1;
if(GBP)
arrUSD[i] += GBPUSD_2 / GBPUSD_1 - 1;
if(AUD)
arrUSD[i] += AUDUSD_2 / AUDUSD_1 - 1;
if(NZD)
arrUSD[i] += NZDUSD_2 / NZDUSD_1 - 1;
if(CHF)
arrUSD[i] += USDCHF_1 / USDCHF_2 - 1;
if(CAD)
arrUSD[i] += USDCAD_1 / USDCAD_2 - 1;
if(JPY)
arrUSD[i] += USDJPY_1 / USDJPY_2 - 1;
}// end if USD
if(EUR)
{
arrEUR[i] = 0;
if(USD)
arrEUR[i] += EURUSD_1 / EURUSD_2 - 1;
if(GBP)
arrEUR[i] += (EURUSD_1 / GBPUSD_1) /
(EURUSD_2/GBPUSD_2) - 1;
if(AUD)
arrEUR[i] += (EURUSD_1 / AUDUSD_1) /
(EURUSD_2/AUDUSD_2) - 1;
if(NZD)
arrEUR[i] += (EURUSD_1 / NZDUSD_1) /
(EURUSD_2/NZDUSD_2) - 1;
if(CHF)
arrEUR[i] += (EURUSD_1*USDCHF_1) /
(EURUSD_2*USDCHF_2) - 1;
if(CAD)
arrEUR[i] += (EURUSD_1*USDCAD_1) /
(EURUSD_2*USDCAD_2) - 1;
if(JPY)
arrEUR[i] += (EURUSD_1*USDJPY_1) /
(EURUSD_2*USDJPY_2) - 1;
}// end if EUR
if(GBP)
{
arrGBP[i] = 0;
if(USD)
arrGBP[i] += GBPUSD_1 / GBPUSD_2 - 1;
if(EUR)
arrGBP[i] += (EURUSD_2 / GBPUSD_2) /
(EURUSD_1 / GBPUSD_1) - 1;
if(AUD)
arrGBP[i] += (GBPUSD_1 / AUDUSD_1) /
(GBPUSD_2 / AUDUSD_2) - 1;
if(NZD)
arrGBP[i] += (GBPUSD_1 / NZDUSD_1) /
(GBPUSD_2 / NZDUSD_2) - 1;
if(CHF)
arrGBP[i] += (GBPUSD_1*USDCHF_1) /
(GBPUSD_2*USDCHF_2) - 1;
if(CAD)
arrGBP[i] += (GBPUSD_1*USDCAD_1) /
(GBPUSD_2*USDCAD_2) - 1;
if(JPY)
arrGBP[i] += (GBPUSD_1*USDJPY_1) /
(GBPUSD_2*USDJPY_2) - 1;
}// end if GBP
if(AUD)
{
arrAUD[i] = 0;
if(USD)
arrAUD[i] += AUDUSD_1 / AUDUSD_2 - 1;
if(EUR)
arrAUD[i] += (EURUSD_2 / AUDUSD_2) /
(EURUSD_1 / AUDUSD_1) - 1;
if(GBP)
arrAUD[i] += (GBPUSD_2 / AUDUSD_2) /
(GBPUSD_1 / AUDUSD_1) - 1;
if(NZD)
arrAUD[i] += (AUDUSD_1/NZDUSD_1) /
(AUDUSD_2 / NZDUSD_2) - 1;
if(CHF)
arrAUD[i] += (AUDUSD_1*USDCHF_1) /
(AUDUSD_2*USDCHF_2) - 1;
if(CAD)
arrAUD[i] += (AUDUSD_1*USDCAD_1) /
(AUDUSD_2*USDCAD_2) - 1;
if(JPY)
arrAUD[i] += (AUDUSD_1*USDJPY_1) /
(AUDUSD_2*USDJPY_2) - 1;
}// end if AUD
if(NZD)
{
arrNZD[i] = 0;
if(USD)
arrNZD[i] += NZDUSD_1 / NZDUSD_2 - 1;
if(EUR)
arrNZD[i] += (EURUSD_2 / NZDUSD_2) /
(EURUSD_1/NZDUSD_1) - 1;
if(GBP)
arrNZD[i] += (GBPUSD_2 / NZDUSD_2) /
(GBPUSD_1 / NZDUSD_1) - 1;
if(AUD)
arrNZD[i] += (AUDUSD_2 / NZDUSD_2) /
(AUDUSD_1 / NZDUSD_1) - 1;
if(CHF)
arrNZD[i] += (NZDUSD_1*USDCHF_1) /
(NZDUSD_2*USDCHF_2) - 1;
if(CAD)
arrNZD[i] += (NZDUSD_1*USDCAD_1) /
(NZDUSD_2*USDCAD_2) - 1;
if(JPY)
arrNZD[i] += (NZDUSD_1*USDJPY_1) /
(NZDUSD_2*USDJPY_2) - 1;
}// end if NZD
if(CAD)
{
arrCAD[i] = 0;
if(USD)
arrCAD[i] += USDCAD_2 / USDCAD_1 - 1;
if(EUR)
arrCAD[i] += (EURUSD_2*USDCAD_2) /
(EURUSD_1*USDCAD_1) - 1;
if(GBP)
arrCAD[i] += (GBPUSD_2*USDCAD_2) /
(GBPUSD_1*USDCAD_1) - 1;
if(AUD)
arrCAD[i] += (AUDUSD_2*USDCAD_2) /
(AUDUSD_1*USDCAD_1) - 1;
if(NZD)
arrCAD[i] += (NZDUSD_2*USDCAD_2) /
(NZDUSD_1*USDCAD_1) - 1;
if(CHF)
arrCAD[i] += (USDCHF_1 / USDCAD_1) /
(USDCHF_2 / USDCAD_2) - 1;
if(JPY)
arrCAD[i] += (USDJPY_1 / USDCAD_1) /
(USDJPY_2 / USDCAD_2) - 1;
}// end if CAD
if(CHF)
{
arrCHF[i] = 0;
if(USD)
arrCHF[i] += USDCHF_2 / USDCHF_1 - 1;
if(EUR)
arrCHF[i] += (EURUSD_2*USDCHF_2) /
(EURUSD_1*USDCHF_1) - 1;
if(GBP)
arrCHF[i] += (GBPUSD_2*USDCHF_2) /
(GBPUSD_1*USDCHF_1) - 1;
if(AUD)
arrCHF[i] += (AUDUSD_2*USDCHF_2) /
(AUDUSD_1*USDCHF_1) - 1;
if(NZD)
arrCHF[i] += (NZDUSD_2*USDCHF_2) /
(NZDUSD_1*USDCHF_1) - 1;
if(CAD)
arrCHF[i] += (USDCHF_2 / USDCAD_2) /
(USDCHF_1 / USDCAD_1) - 1;
if(JPY)
arrCHF[i] += (USDJPY_1 / USDCHF_1) /
(USDJPY_2 / USDCHF_2) - 1;
}// end if CHF
if(JPY)
{
arrJPY[i] = 0;
if(USD)
arrJPY[i] += USDJPY_2 / USDJPY_1 - 1;
if(EUR)
arrJPY[i] += (EURUSD_2*USDJPY_2) /
(EURUSD_1*USDJPY_1) - 1;
if(GBP)
arrJPY[i] += (GBPUSD_2*USDJPY_2) /
(GBPUSD_1*USDJPY_1) - 1;
if(AUD)
arrJPY[i] += (AUDUSD_2*USDJPY_2) /
(AUDUSD_1*USDJPY_1) - 1;
if(NZD)
arrJPY[i] += (NZDUSD_2*USDJPY_2) /
(NZDUSD_1*USDJPY_1) - 1;
if(CAD)
arrJPY[i] += (USDJPY_2/USDCAD_2) /
(USDJPY_1/USDCAD_1) - 1;
if(CHF)
arrJPY[i] += (USDJPY_2/USDCHF_2) /
(USDJPY_1/USDCHF_1) - 1;
}// end if JPY
}
void PlotResults()
{
int cur = Y_Top;
// int st = 23;
int st = Y_Step;
if(USD)
{
if (arrUSD[2]<arrUSD[1]) sl("USD", arrUSD[1], arrUSD[2], "SymbUSD","+", cur, Color_USD);
if (arrUSD[2]>arrUSD[1]) sl("USD", arrUSD[1], arrUSD[2], "SymbUSD","-", cur, Color_USD);
if (arrUSD[2]==arrUSD[1]) sl("USD", arrUSD[1], arrUSD[2], "SymbUSD","=", cur, Color_USD);
cur += st;
}
if(EUR)
{
if (arrEUR[2]<arrEUR[1]) sl("EUR", arrEUR[1], arrEUR[2], "SymbEUR","+", cur, Color_EUR);
if (arrEUR[2]>arrEUR[1]) sl("EUR", arrEUR[1], arrEUR[2], "SymbEUR","-", cur, Color_EUR);
if (arrEUR[2]==arrEUR[1]) sl("EUR", arrEUR[1], arrEUR[2], "SymbEUR","=", cur, Color_EUR);
cur += st;
}
if(GBP)
{
if (arrGBP[2]<arrGBP[1]) sl("GBP", arrGBP[1], arrGBP[2], "SymbGBP","+", cur, Color_GBP);
if (arrGBP[2]>arrGBP[1]) sl("GBP", arrGBP[1], arrGBP[2], "SymbGBP","-", cur, Color_GBP);
if (arrGBP[2]==arrGBP[1]) sl("GBP", arrGBP[1], arrGBP[2], "SymbGBP","=", cur, Color_GBP);
cur += st;
}
if(CHF)
{
if (arrCHF[2]<arrCHF[1]) sl("CHF", arrCHF[1], arrCHF[2], "SymbCHF","+", cur, Color_CHF);
if (arrCHF[2]>arrCHF[1]) sl("CHF", arrCHF[1], arrCHF[2], "SymbCHF","-", cur, Color_CHF);
if (arrCHF[2]==arrCHF[1]) sl("CHF", arrCHF[1], arrCHF[2], "SymbCHF","=", cur, Color_CHF);
cur += st;
}
if(AUD)
{
if (arrAUD[2]<arrAUD[1]) sl("AUD", arrAUD[1], arrAUD[2], "SymbAUD","+", cur, Color_AUD);
if (arrAUD[2]>arrAUD[1]) sl("AUD", arrAUD[1], arrAUD[2], "SymbAUD","-", cur, Color_AUD);
if (arrAUD[2]==arrAUD[1]) sl("AUD", arrAUD[1], arrAUD[2], "SymbAUD","=", cur, Color_AUD);
cur += st;
}
if(CAD)
{
if (arrCAD[2]<arrCAD[1]) sl("CAD", arrCAD[1], arrCAD[2], "SymbCAD","+", cur, Color_CAD);
if (arrCAD[2]>arrCAD[1]) sl("CAD", arrCAD[1], arrCAD[2], "SymbCAD","-", cur, Color_CAD);
if (arrCAD[2]==arrCAD[1]) sl("CAD", arrCAD[1], arrCAD[2], "SymbCAD","=", cur, Color_CAD);
cur += st;
}
if(JPY)
{
if (arrJPY[2]<arrJPY[1]) sl("JPY", arrJPY[1], arrJPY[2], "SymbJPY","+", cur, Color_JPY);
if (arrJPY[2]>arrJPY[1]) sl("JPY", arrJPY[1], arrJPY[2], "SymbJPY","-", cur, Color_JPY);
if (arrJPY[2]==arrJPY[1]) sl("JPY", arrJPY[1], arrJPY[2], "SymbJPY","=", cur, Color_JPY);
cur += st;
}
if(NZD)
{
if (arrNZD[2]<arrNZD[1]) sl("NZD", arrNZD[1], arrNZD[2], "SymbNZD","+", cur, Color_NZD);
if (arrNZD[2]>arrNZD[1]) sl("NZD", arrNZD[1], arrNZD[2], "SymbNZD","-", cur, Color_NZD);
if (arrNZD[2]==arrNZD[1]) sl("NZD", arrNZD[1], arrNZD[2], "SymbNZD","=", cur, Color_NZD);
cur += st;
}
}
//+------------------------------------------------------------------+
//| Subroutines |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void sl(string currency, double val1, double val2, string IndicatoreName, string sym, int y, color col)
{
int window = WindowFind(Indicator_Name);
string ID = Indicator_Name+Objs;
string mIndicatoreName, disp;
double diff;
mIndicatoreName = Indicator_ID + IndicatoreName;
int tmp = 10 + y;
Objs++;
diff = val1 - val2;
// disp = currency + " " + sym + " " + DoubleToStr(diff*1000.0, 2);
disp = currency + " " + sym + " " + DoubleToStr(val1,4) + " : " + DoubleToStr(val2, 4) + " : " + DoubleToStr(diff, 4);
if (ObjectFind(mIndicatoreName)==-1)
{
if(ObjectCreate(mIndicatoreName, OBJ_LABEL, window, 0, 0))
{
//ObjectDelete(ID);
ObjectSet(mIndicatoreName, OBJPROP_XDISTANCE, 10);
ObjectSet(mIndicatoreName, OBJPROP_YDISTANCE, y);
ObjectSetText(mIndicatoreName, disp, TxtSize, "Arial Black", col);
}
}
else
{
ObjectSet(mIndicatoreName, OBJPROP_XDISTANCE, 10);
ObjectSet(mIndicatoreName, OBJPROP_YDISTANCE, y);
ObjectSetText(mIndicatoreName, disp, TxtSize, "Arial Black", col);
}
/* if(ObjectCreate(ID, OBJ_LABEL, window, 0, 0))
{
//ObjectDelete(ID);
ObjectSet(ID, OBJPROP_XDISTANCE, y + 35);
ObjectSet(ID, OBJPROP_YDISTANCE, 10);
ObjectSetText(ID, sym, 15, "Arial Black", col);
}
*/
}
//+------------------------------------------------------------------+
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
---