MT4のメインチャートで毎時間の00分から15分など指定した時間だけを色分けして、時間内か外か一目で分かるインジケータ
ダウンロード
ux.getuploader.com
長方形に色塗つぶしで表示してみたらどうだろうろうか。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
パラメーターは適当にいじっていただければと思います。
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
やっと表示できるようになりました!嬉しいです。
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);
}