omosiroizo’s diary

きままにプログラムLife

MT4のメインチャートで毎時間の00分から15分など指定した時間だけを色分けして、時間内か外か一目で分かるインジケータ

ダウンロード
ux.getuploader.com

f:id:omosiroizo:20180721212249j:plain長方形に色塗つぶしで表示してみたらどうだろうろうか。1分足とかで使うのかな。
結局、サブウィンドウに太線を引くことにしましたw

短い足で使ってくださいね。。。
パラメータ初期値は
・開始分:0
・終了分:15
・色:clrMagenta
・線の太さ
みたいな
適当に変更してお使いください。
サブウィンドウで距離が少しあるのでローソク足の下あたりにだすのもありかと。。。

ちょっと作ってみよ。。
経済指標なんかに使えそうだし。。
//!!_time_zone_v0.mq4
#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_label1 "time_zone"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrMagenta
#property indicator_style1 STYLE_SOLID
#property indicator_width1 7
extern int time_from = 0; //開始分
extern int time_to = 15; //終了分
double time_zone;
int OnInit()
{
SetIndexBuffer(0,time_zone);
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time
,
const double &open,
const double &high
,
const double &low,
const double &close
,
const long &tick_volume,
const long &volume
,
const int &spread[])
{
for( int i = rates_total - prev_calculated - 1; i >= 0; i-- )
{
if (time_from < time_to)
{
if (TimeMinute(time[i]) >= time_from && TimeMinute(time[i]) <= time_to ) time_zone[i] = 1;
}
else
{
if (TimeMinute(time[i]) >= time_from || TimeMinute(time[i]) <= time_to ) time_zone[i] = 1;
}
}

return(rates_total - 1);
}
//+-------------------------------------------------------------

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

連続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

mt4のサインでブラウザ画面から注文する方法(案)

ーー 案 ーー

・mt4でサインをファイル出力する
・マクロがファイルを常に監視する
・ファイルを読んでサインに従い画面をクリックする
ざっとこんな感じが思いつきますが。。。

MT4のインジケーターで使用期限や指定口座でのみ動作するようにするには

・使用期限は、例えば「2018年12月31日」を過ぎたらALERTをだすとか

 

MT4サーバタイムかPCタイムを使う。PCタイムは故意に変更可能です。

サーバタイムは土日とまったり、ずれが出たり。。ですが。

両方のタイムを使う手もありそうですね。

 

・口座取得関数で取得して一致しなければALERTをだすとか

だと思います。

 

 

 

 

ローソク足の残り時間を表示する

2つのインジは今のところ、tick更新時に表示していますw

ローソク足に残り時間を表示する。

!!_candl_time_v0.mq4

https://ux.getuploader.com/omox/download/3

ローソク足にプライスを表示する。

!!_candle_price_v0.mq4
https://ux.getuploader.com/omox/download/4

 

ローソク足の近くに残り時間を表示するインジを作ってみましたが

tickが動いたときしか計算しないので残り時間が止まってしまいますw

もし、ご要望があれば止まらないようにしたいかも。。。

 

// !!_candle_price.mq4 ファイル名は何でもいいです。

#property indicator_chart_window

string Name = "!!_candle_price";

extern int FSize = 10;

extern color FColor = clrWhite;

extern int Xshift = 10;

extern int Yshift = 30;


int init(){return(0);}


int deinit(){ObjectDelete(Name);return(0);}


int start(){
int pixel_x,pixel_y;

ObjectDelete("Name");

ObjectCreate( "Name", OBJ_LABEL, 0 , Time[0],Close[0]);

ObjectSetText("Name", Close[0] , FSize , "MS ゴシック" , FColor);

ChartTimePriceToXY(0,0,Time[0],Close[0],pixel_x,pixel_y);

ObjectSet( "Name", OBJPROP_XDISTANCE, pixel_x+Xshift);

ObjectSet( "Name", OBJPROP_YDISTANCE, pixel_y+Yshift);
return(0);}

 

1M   0 :25

5M   3:25

15M  13:25

...こんな感じのを、作ったら、チャート見るのが面白くなるかも。。

これも後程やりたいかも

 

下準備でラベル表示の実験もかねてwローソク足の近くにリアルタイムレートを表示するのを作ってみました。

// mt4

#property indicator_chart_window
int init(){return(0);}
int deinit(){return(0);}
int start()

{
int pixel_x,pixel_y;

ObjectDelete("LABEL0");ObjectCreate( "LABEL0", OBJ_LABEL, 0 , Time[0],Close[0]);

ObjectSetText("LABEL0", Close[0] , 16 , "MS ゴシック" , clrWhite);

ChartTimePriceToXY(0,0,Time[0],Close[0],pixel_x,pixel_y);

ObjectSet( "LABEL0", OBJPROP_XDISTANCE, pixel_x);

ObjectSet( "LABEL0", OBJPROP_YDISTANCE, pixel_y+50);
return(0);

}

 

 

今現在の獲得pipsが表示され各々をワンクリックすると利確できるmq4

こんな感じかな。。。

・未決済のOrdersTotal()数を繰り返し、ラベルに評価pipをtick毎に表示する

・ワンクリックイベントで利確する 

これあったら便利そう!!!作るテンション上がりますw

これから、たぶん今日中に作りますwwwちょっとまって。

といいつつLabelObjectにてこずっていますw

 

まずは現在値をラベル表示してみる

// mt4

#property indicator_chart_window
int init(){return(0);}

int deinit(){return(0);}
int start()

{
int pixel_x,pixel_y;

ObjectDelete("LABEL0");

ObjectCreate( "LABEL0", OBJ_LABEL, 0 , Time[0],Close[0]);

ObjectSetText("LABEL0", Close[0] , 16 , "MS ゴシック" , clrWhite);

ChartTimePriceToXY(0,0,Time[0],Close[0],pixel_x,pixel_y);

ObjectSet( "LABEL0", OBJPROP_XDISTANCE, pixel_x);

ObjectSet( "LABEL0", OBJPROP_YDISTANCE, pixel_y+50);
return(0);

}