omosiroizo’s diary

きままにプログラムLife

一つのチャートでまとめて陽線陰線の本数を監視するインジ

連続100本までOKになりましたw
f:id:omosiroizo:20180808182315j:plain
パラメーターは適当にいじっていただければと思います。
extern string Pairs = "USDJPY,EURUSD,GBPUSD,AUDUSD,USDCHF,USDCAD,EURJPY,GBPJPY,AUDJPY,CHFJPY,CADJPY";
extern string Periods = "1,5,15,30,60,240";
extern int settimer = 15;
extern color FColor = clrWhite;
extern int AlertLebel = 4;
extern int AlertInterval = 60;
extern color AlertColor = clrMagenta;

ダウンロードはこちらから
!!_candle_dashbord_alert_v0.mq4
https://ux.getuploader.com/omox/download/10



f:id:omosiroizo:20180717202855j:plainやっと表示できるようになりました!嬉しいです。
4本以上でピンクにしています。
このくらいで処理時間は約1秒です。5秒間隔で動きます。これはパラメータで指定できます。
通貨ペア、ペリオッド(時間)は自由に設定できます。 
アラートはこれから入れます。ご要望などありましたらコメントお願いします。

[f:id:omosiroizo:20180717202855j:plain]

ダウンロード
https://ux.getuploader.com/omox/download/1
!!_candle_dashbord.mql

テスト版ですが。。。よかったら試してください。でも
ブログに張り付けると文字化けしてしますね。ちょっといろいろやってみます。
ファイル添付の方法を探したほうがよさそうですねwちょっとおまちください。
//Candle_alert_v1.mql
#property indicator_separate_window
string UniqueName = "Candle_alert_v1";
extern string Pairs = "USDJPY,EURUSD,GBPUSD,AUDUSD,USDCHF,CADUSD,EURJPY,GBPJPY,AUDJPY,CHFJPY,CADJPY";
extern string Periods = "1,5,15,30,60,240";
extern int settimer = 5;
extern color FColor = clrWhite;
extern color AlertColor = clrMagenta;
extern color SymbolColor = clrYellow;
extern color PeriodColor = clrAqua;
extern int Xshift = 160;
extern int Yshift = 30;
extern int XSize = 70;
extern int YSize = 25;
extern int FSize = 14;
extern int XRowSize = 500;
int i,j;
int x,y;
string Sym_arr; // Pairs symbols
int Sym_count; // Number of symbols
string Period_arr
;
int Period_count;

string Name;
string text;

int msgret;//test


int OnInit()
{


EventSetTimer(settimer);

split(Sym_arr, Pairs, ",");
Sym_count = ArraySize(Sym_arr);

for (i=0; i < Sym_count; i++)
{
text = Sym_arr[i] ;
x = 0;
y = Yshift + YSize * i;
Comment(y);

Name = UniqueName + ":SYMBOL:" + i;
//ObjectDelete(Name);
ObjectCreate(Name, OBJ_LABEL,1,Time[0],Close[0]);
ObjectSetText(Name, text , FSize , "MS ゴシック" , SymbolColor);
ObjectSet( Name, OBJPROP_XDISTANCE, x);
ObjectSet( Name, OBJPROP_YDISTANCE, y);
}

//
split(Period_arr, Periods, ",");
Period_count = ArraySize(Period_arr);

for (i=0; i < Period_count; i++)
{
text = Period_arr[i] ;
x = Xshift + XSize * i;
y = 0;


Name = UniqueName + ":PERIOD:" + i;
//ObjectDelete(Name);
ObjectCreate(Name, OBJ_LABEL,1,Time[0],Close[0]);
ObjectSetText(Name, text , FSize , "MS ゴシック" , PeriodColor);
ObjectSet( Name, OBJPROP_XDISTANCE, x);
ObjectSet( Name, OBJPROP_YDISTANCE, y);
}


for (i=0; i < Sym_count; i++)
{
y = Yshift + YSize * i;
for (j=0; j < Period_count; j++)
{


x = Xshift + XSize * j;

Name = UniqueName + ":STATUS:" + Sym_arr[i] + Period_arr[j];

ObjectCreate(Name, OBJ_LABEL,1,Time[0],Close[0]);
ObjectSetText(Name, "?" , FSize , "MS ゴシック" , FColor);
ObjectSet( Name, OBJPROP_XDISTANCE, x);
ObjectSet( Name, OBJPROP_YDISTANCE, y);

}

}

return(0);
}

int deinit()
{

EventKillTimer();
ObjectDelete(Name);
return(0);
}

int start()
{




return(0);
}




void OnTimer()
{
datetime t = TimeCurrent();
int status = 0;
color c;

for (i=0; i < Sym_count; i++)
{
for (j=0; j < Period_count; j++)
{
Name = UniqueName + ":STATUS:" + Sym_arr[i] + Period_arr[j];
status = XStatus(Sym_arr[i],Period_arr[j]);

ObjectSetText(Name,status, FSize , "MS ゴシック" , FColor);

if (status >= 4 || status <= -4) c = AlertColor;//
else c = FColor;
ObjectSet( Name, OBJPROP_COLOR,c);

}
}

Comment*1>0)
{ ret = 1;
if*2>0)
{ ret = 2;
if*3>0)
{ ret = 3;
if*4>0)
{ ret = 4;
if*5>0)
{ ret = 5;
if*6>0)
{ ret = 6;
}
}
}
}
}
}

if*7<0)
{ ret = -1;
if*8<0)
{ ret = -2;
if*9<0)
{ ret = -3;
if*10<0)
{ ret = -4;
if*11<0)
{ ret = -5;
if*12<0)
{ ret = -6;
}
}
}
}
}
}

return ret;
}

void split(string& arr[], string str, string sym)
{
ArrayResize(arr, 0);
string item;
int pos, size;

int len = StringLen(str);
for (i=0; i < len;) {
pos = StringFind(str, sym, i);
if (pos == -1) pos = len;

item = StringSubstr(str, i, pos-i);
item = StringTrimLeft(item);
item = StringTrimRight(item);

size = ArraySize(arr);
ArrayResize(arr, size+1);
arr[size] = item;

i = pos+1;
}
}

*1:TimeCurrent() - t) + " sec"); } int XStatus(string symbol, string period) { int ret = 0; if((iClose(symbol,period,0)-iOpen(symbol,period,0

*2:iClose(symbol, period,1) - iOpen(symbol, period,1

*3:iClose(symbol, period,2) - iOpen(symbol, period,2

*4:iClose(symbol, period,3) - iOpen(symbol, period,3

*5:iClose(symbol, period,4) - iOpen(symbol, period,4

*6:iClose(symbol, period,5) - iOpen(symbol, period,5

*7:iClose(symbol,period,0)-iOpen(symbol,period,0

*8:iClose(symbol, period,1) - iOpen(symbol, period,1

*9:iClose(symbol, period,2) - iOpen(symbol, period,2

*10:iClose(symbol, period,3) - iOpen(symbol, period,3

*11:iClose(symbol, period,4) - iOpen(symbol, period,4

*12:iClose(symbol, period,5) - iOpen(symbol, period,5