ブログトップ 記事一覧 ログイン 無料ブログ開設

とあるMetaTraderの備忘秘録 RSSフィード Twitter

忙しいです。ネタもないし・・・

2013-01-13

ステータスバーの価格を拡大表示する。

謹みて 新年を賀し 申し上げます。<(_ _)>



735 :Trader@Live!:2013/01/12(土) 17:54:40.57 ID:YhLpHkcT

チャートの各ローソク足にマウスポインタ当てると

始値終値高値安値

が表示されると思うんですけど

この数値をチャートの四隅あたりに表示できるインジってありませんか?

何かシンプルなインジ程全然見つからなくて

・・・という訳で、早速作ってみました。

f:id:fai_fx:20130113092442p:image

http://ux.getuploader.com/fai_fx/download/338/MT4StatusView.zip

AutoHotkeyによるGUIアプリで、ステータスバーの内容を200ミリ秒間隔で読み取って表示させているだけです。



ウィンドウ枠も邪魔かなと、消してみたモノが下記です。

f:id:fai_fx:20130113092441p:image

http://ux.getuploader.com/fai_fx/download/339/MT4StatusView1.1.zip

タイトルバー用のウィンドウと、枠なしの表示ウィンドウを2つ並べています。

kiyotakikiyotaki 2013/01/13 20:09 はじめまして
FAI様

先日DLマーケットにて
BOの商材を購入したのですが、
なぜか不具合、販売者も
PC遠隔操作で対応するとのことで
ちょっと???
しかしよく見ると
よく、参考にさせていただいている
fai様の文字が・・・。
fai software とありましたので
一応連絡してみました。

fai様、ご本人?
もしくは、きちっと製作した外注品??

まったく、関係のないことでしたら
申し訳ございません。

fai&gt;kiyotaki fai>kiyotaki 2013/01/13 20:24 私がサイトで配布しているソースコードは、営利・非営利を問わず、一部または全部の複製・改変・再配布・販売などを承諾無しに自由に行うことが可能です。
残念ながら、BOの商材作者の人とは面識が無い・・気がします。^^;
(ご商売で配布される人には、fai software の文字等は削除をお願いしていますし。。)

寺谷寺谷 2013/01/13 21:26 fai様
初めまして!
いつも尊敬の眼差しで拝読していたのですが
そちらに登場してくださるとは驚きです(^_^;)
私は622に書き込みした者です。
faiさんのローソク足インジケーターを元に
陽線を塗りつぶさないようにできないか試行錯誤しています。
そして横幅の調整(左辺と右辺)はできたのですが
縦幅の調整(上辺と下辺の調整)のほうがイマイチうまく行きません。

ExtMapBuffer5[pos]=Open[pos]*0.9+Close[pos]*0.1;
ExtMapBuffer6[pos]=Close[pos]*0.9+Open[pos]*0.1;
というヒストグラムを書くことでそれらしくはなりましたが・・・
足の実体部の長短によって下辺と上辺の太さがマチマチになってしまいます。
なんとか「ライン1本分」を表現することはできないでしょうか?

最後にファイ様のブログにまでお尋ねしてしまい申し訳ございません。

nabenabe 2013/01/14 00:05 fai様

はじめまして!

ダブルゼロやトリプルゼロを意識する。
http://d.hatena.ne.jp/fai_fx/20100109/1263005708
でご紹介されていた!ZeroZeroPrice.mq4のインジがとても重宝しており、
MT5でも使えないかと自分で試してみたのですが、うまくいかず困っております。。。

以下の内容で変更をかけたのですが、何がいけないのでしょうか?
ネットで調べてみたものの、有効な情報が得られず困っています。
お時間がある時にでもご回答頂ければ幸いです。

<変更内容>

?Vista と MQL4互換ライブラリ
 http://d.hatena.ne.jp/fai_fx/20091022/1256142536
 でご紹介されていたMQL4→MQL5へのコンバータを実行

※以降、変換された.mql5用のファイル内での変更

?OnCalculate関数の引数「time[]→Time[]」に変更

?OnCalculate関数内に以下を追加

 ArraySetAsSeries(Time,true);

?SetPrice関数内の「SYMBOL_RIGHTPRICE→OBJ_ARROW_RIGHT_PRICE」に変更

?SetPrice関数内の「OBJPROP_TIME1→OBJPROP_TIME」に変更

?ObjectSet(name, OBJPROP_PRICE1, Prc);をコメントアウト
※変更方法がわからなかったので一先ずコメントアウトしました。

nabenabe 2013/01/14 01:03 先程投稿させて頂いたnabeです。

実際に私が変更したソースコードを見て頂いた方が理解が早いと思いましたので、
再投稿させて頂きます。
※変更箇所は、ADD,CHG,DELで記述しています。

//+------------------------------------------------------------------+
//| !ZeroZeroPrice.mq4 |
//| Copyright (c) 2009, Fai Software Corp. |
//| http://d.hatena.ne.jp/fai_fx/ |
//+------------------------------------------------------------------+
#property copyright "Copyright (c) 2009, Fai Software Corp."
#property link "http://d.hatena.ne.jp/fai_fx/"

#property indicator_chart_window
//---- input parameters

//:::::::::::::::::::::::::::::::::::::::::::::
#include <mt4accountinfo.mqh>
#include <mt4string.mqh>
#include <mt4datetime.mqh>
#include <mt4objects_1.mqh>
#include <mt4timeseries_2.mqh>
//Etc.
//:::::::::::::::::::::::::::::::::::::::::::::::

input int ZeroNum=2;
input color LabelColor = C'64,64,64';//C'32,32,32';
input color LabelColor2 = DimGray;
input int Size = 1;
input int Shift = 2;

int ZeroValue;
string Prefix = "Zero-";
color ObjColor;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//:::::::::::::::::::::::::::::::::::::::::::::
double Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
double Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
int Bars=Bars(Symbol(),PERIOD_CURRENT);
double Point=Point();
//Etc.
//:::::::::::::::::::::::::::::::::::::::::::::::

ZeroValue = MathPow(10,ZeroNum);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int OnDeinit()
{
//:::::::::::::::::::::::::::::::::::::::::::::
double Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
double Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
int Bars=Bars(Symbol(),PERIOD_CURRENT);
double Point=Point();
//Etc.
//:::::::::::::::::::::::::::::::::::::::::::::::

int obj_total=ObjectsTotal();
string name;
for(int i=obj_total-1;i>=0;i--)
{
name=ObjectName(i);
if(StringFind(name,Prefix)==0) ObjectDelete(name);
}
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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[])
{
//:::::::::::::::::::::::::::::::::::::::::::::
double Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
double Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
int Bars=Bars(Symbol(),PERIOD_CURRENT);
double Point=Point();
//Etc.
//:::::::::::::::::::::::::::::::::::::::::::::::

//ADD--------------------------------
ArraySetAsSeries(Time,true);
//-----------------------------------

static datetime LastDrawTime = 0;
if( LastDrawTime == Time[0]) return(0);
LastDrawTime = Time[0];

int ap = Ask/Point;
int base = ap - MathMod(ap,ZeroValue);
int start = base - ZeroValue*10;
int end = base + ZeroValue*10;
int i=0,j=0;
for(i=start,j=0;i<=end;i=i+ZeroValue,j++){
if(i<0) continue;
ObjColor = LabelColor;
if(MathMod(i,ZeroValue*10)==0.0) ObjColor = LabelColor2;
double price = i*Point;
SetPrice(Prefix+j, Time[0]+Shift*Period()*60,price,ObjColor,Size);
}
return(rates_total);
}
//+------------------------------------------------------------------+
void SetPrice(string name, datetime Tm, double Prc, color clr,int size)
{
if(ObjectFind(name) == -1)
{
ObjectCreate(name, OBJ_ARROW, 0, Tm, Prc);
ObjectSet(name, OBJPROP_COLOR, clr);
ObjectSet(name, OBJPROP_WIDTH, size);
//CHG--------------------------------
//ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
ObjectSet(name, OBJPROP_ARROWCODE, OBJ_ARROW_RIGHT_PRICE);
//-----------------------------------
ObjectSet(name, OBJPROP_BACK, true);
}
else
{
//CHG--------------------------------
//ObjectSet(name, OBJPROP_TIME1, Tm);
ObjectSet(name, OBJPROP_TIME, Tm);
//-----------------------------------
//DEL--------------------------------
//ObjectSet(name, OBJPROP_PRICE1, Prc);
//-----------------------------------
ObjectSet(name, OBJPROP_COLOR, clr);
ObjectSet(name, OBJPROP_WIDTH, size);
//CHG--------------------------------
//ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
ObjectSet(name, OBJPROP_ARROWCODE, OBJ_ARROW_RIGHT_PRICE);
//-----------------------------------
ObjectSet(name, OBJPROP_BACK, true);
}
}

PIKOPIKO 2013/01/16 03:53 あけましておめでとうございます。
本年もよろしくお願いいたします。
早速ですが、現在目視でMT4LevelStopRevrse-v2をフィッティングして使用しております。
しかし、フィッティングと言っても数値的な裏付けが無いため頻繁にMultiplierの数値を
変更する状態に陥っています。
MT4LevelStopRevrse-v2を数日、または数時間という期間の中で機械的にフィッティング
させるようなコードなどは存在しないのでしょうか。
15分や1時間足を見て決めた方向のみに最適化されたサインでエントリーすれば長期的に
損失<利益となるのではと考えています。

中村家中村家 2013/01/16 16:26 いつも有益な情報有難うございます。
ところでAHKでMT4のチャートウィンドウ(MDI子ウィンドウ)をリサイズすることはできますか?
AHKは不慣れですのでデタラメに書いてみましたが動きませんでした(><)
MouseGetPos,,,,ctrl,2
WinMove,ahk_id %ctrl%,,,,800
---
単純に幅・高さだけを変える場合どう書けばいいのでしょうか・・?

kiyotakikiyotaki 2013/01/16 18:10 fai様
ご返答ありがとうございます。

販売者の方はあまり、なんとなく詳しくなさそうなんで
不信感が募り、ソースコードエラーを
疑ったりもしたんですが、
fai様のところで製作されてるんだったら
大丈夫そうですね。

感謝です。

keimkeim 2013/01/17 18:41 fai様、初めまして

長らくブログを読んでおりますがいつも面白い内容で勉強しながらも楽しませております。
今、EAに裁定を加えたものというか、自分で引いたトレンドラインに対して反応するEAを作ろうとしてるのですが、難しいでしょうか?
といいますのも、他のサイトでMT4の場合ユーザー変数の上限が8つと決まってるために数多くのラインを渡すことが出来ないと書いてあったためです。
確かに水平線に対して反応するEAも2本のみという制限でした。

またお暇な時に教えていただければと思います。よろしくお願いします。

fai&gt;寺谷fai>寺谷 2013/01/20 22:16 諦めましょう...。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/fai_fx/20130113/1358037953