プロが教えるわが家の防犯対策術!

Saitarさん、前回の質問の続きをさせていただきます。(メインの質問部分にご指名というのも変ですが、他に連絡手段がないので・・・)

前回の質問の際に作っていただいた以下のインジケーター(表示を三段に変更してありますが)で、直前の足の高値プラス0.3pips、安値マイナス0.3pipsの数字を自動で表示する方法はないでしょうか。

よろしくお願いします。


#property copyright "Copyright Saitar"
#property indicator_chart_window

int x_pos = 20; // x position
int y_pos = 0; // y position
int mag = 16; //font size

int init() {
ObjectCreate("values1", OBJ_LABEL, 0, 0, 0);
ObjectSet("values1", OBJPROP_CORNER, 1);
ObjectSet("values1", OBJPROP_XDISTANCE, x_pos);
ObjectSet("values1", OBJPROP_YDISTANCE, y_pos+25);
ObjectCreate("values2", OBJ_LABEL, 0, 0, 0);
ObjectSet("values2", OBJPROP_CORNER, 1);
ObjectSet("values2", OBJPROP_XDISTANCE, x_pos);
ObjectSet("values2", OBJPROP_YDISTANCE, y_pos);
ObjectCreate("values3", OBJ_LABEL, 0, 0, 0);
ObjectSet("values3", OBJPROP_CORNER, 1);
ObjectSet("values3", OBJPROP_XDISTANCE, x_pos);
ObjectSet("values3", OBJPROP_YDISTANCE, y_pos+50);

return(0);
}

int deinit() {
ObjectDelete("values1");
ObjectDelete("values2");
ObjectDelete("values3");
return(0);
}

int start() {
ObjectSetText("values1", DoubleToStr(High[1],Digits)+" "+DoubleToStr(Low[1],Digits), mag, "Eras Bold ITC", Snow);
ObjectSetText("values2", DoubleToStr(High[0],Digits)+" "+DoubleToStr(Low[0],Digits), mag, "Eras Bold ITC", Pink);
ObjectSetText("values3", DoubleToStr(Open[1],Digits)+" "+DoubleToStr(Close[1],Digits), mag, "Eras Bold ITC", Snow);

return(0);
}

A 回答 (4件)

ホイ。



#property copyright "Copyright Saitar"
#property indicator_chart_window

int x_pos = 20; // x position
int y_pos = 0; // y position
int mag = 16; //font size
double sabun = 0.3; // distance:pips
int init() {
ObjectCreate("values1", OBJ_LABEL, 0, 0, 0);
ObjectSet("values1", OBJPROP_CORNER, 1);
ObjectSet("values1", OBJPROP_XDISTANCE, x_pos);
ObjectSet("values1", OBJPROP_YDISTANCE, y_pos+25);
ObjectCreate("values2", OBJ_LABEL, 0, 0, 0);
ObjectSet("values2", OBJPROP_CORNER, 1);
ObjectSet("values2", OBJPROP_XDISTANCE, x_pos);
ObjectSet("values2", OBJPROP_YDISTANCE, y_pos);
ObjectCreate("values3", OBJ_LABEL, 0, 0, 0);
ObjectSet("values3", OBJPROP_CORNER, 1);
ObjectSet("values3", OBJPROP_XDISTANCE, x_pos);
ObjectSet("values3", OBJPROP_YDISTANCE, y_pos+50);
ObjectCreate("values4", OBJ_LABEL, 0, 0, 0);
ObjectSet("values4", OBJPROP_CORNER, 1);
ObjectSet("values4", OBJPROP_XDISTANCE, x_pos);
ObjectSet("values4", OBJPROP_YDISTANCE, y_pos+75);
sabun = sabun*Point*10;

return(0);
}

int deinit() {
ObjectDelete("values1");
ObjectDelete("values2");
ObjectDelete("values3");
ObjectDelete("values4");

return(0);
}

int start() {
ObjectSetText("values1", DoubleToStr(High[1],Digits)+" "+DoubleToStr(Low[1],Digits), mag, "Eras Bold ITC", Snow);
ObjectSetText("values2", DoubleToStr(High[0],Digits)+" "+DoubleToStr(Low[0],Digits), mag, "Eras Bold ITC", Pink);
ObjectSetText("values3", DoubleToStr(Open[1],Digits)+" "+DoubleToStr(Close[1],Digits), mag, "Eras Bold ITC", Snow);
ObjectSetText("values4", DoubleToStr(High[1]+sabun,Digits)+" "+DoubleToStr(Low[1]-sabun,Digits), mag, "Eras Bold ITC", Lavender);

return(0);
}

この回答への補足

Saitarさん、早速ありがとうございます。

直前の足の高値安値を0.3pipsずらすのは、プログラミングの本を読み始めた時に、もしかしてと思ってHigh[1]+0.003とやってみたら偶然出来たのですが、書いていただいたsabunというのを使うと簡単に数字も変更できていいですね。
私の読んだ本にはこういう内容は全くありませんでした。
ありがとうございました。

ちなみに、今は以下のような感じにして、チャートに直接入れて表示して使わせてもらっています。私はユーロ円しか今はやっていないのですが、6桁の価格の内、先頭の2桁は全く見ていないので、できたら表示したくないのですが、そのような事は出来るのでしょうか。
現在の文字の大きさだと、先頭の2桁が最新のローソク足と重なってしまい、少々見難い事もあるので、非表示に出来るとありがたいです。

#property copyright "Copyright Saitar"
#property indicator_chart_window

int x_pos = 20; // x position
int y_pos = 10; // y position
int mag = 10; //font size//

int init() {
ObjectCreate("values1", OBJ_LABEL, 0, 0, 0);
ObjectSet("values1", OBJPROP_CORNER, 1);
ObjectSet("values1", OBJPROP_XDISTANCE, x_pos-19);
ObjectSet("values1", OBJPROP_YDISTANCE, y_pos-10);//High+0.003
ObjectCreate("values2", OBJ_LABEL, 0, 0, 0);
ObjectSet("values2", OBJPROP_CORNER, 1);
ObjectSet("values2", OBJPROP_XDISTANCE, x_pos-19);
ObjectSet("values2", OBJPROP_YDISTANCE, y_pos+5);//High[1]
ObjectCreate("values3", OBJ_LABEL, 0, 0, 0);
ObjectSet("values3", OBJPROP_CORNER, 1);
ObjectSet("values3", OBJPROP_XDISTANCE, x_pos-19);
ObjectSet("values3", OBJPROP_YDISTANCE, y_pos+22);//High[0]

ObjectCreate("values4", OBJ_LABEL, 0, 0, 0);
ObjectSet("values4", OBJPROP_CORNER, 1);
ObjectSet("values4", OBJPROP_XDISTANCE, x_pos-19);
ObjectSet("values4", OBJPROP_YDISTANCE, y_pos+242);//Low[0]
ObjectCreate("values5", OBJ_LABEL, 0, 0, 0);
ObjectSet("values5", OBJPROP_CORNER, 1);
ObjectSet("values5", OBJPROP_XDISTANCE, x_pos-19);
ObjectSet("values5", OBJPROP_YDISTANCE, y_pos+258);//Low[1]
ObjectCreate("values6", OBJ_LABEL, 0, 0, 0);
ObjectSet("values6", OBJPROP_CORNER, 1);
ObjectSet("values6", OBJPROP_XDISTANCE, x_pos-19);
ObjectSet("values6", OBJPROP_YDISTANCE, y_pos+275);//Low[1]-0.003


return(0);
}

int deinit() {
ObjectDelete("values1");
ObjectDelete("values2");
ObjectDelete("values3");

ObjectDelete("values4");
ObjectDelete("values5");
ObjectDelete("values6");

return(0);
}

int start() {

ObjectSetText("values1", DoubleToStr(High[1]+0.003,Digits), mag, "Eras Bold ITC", Lime);

ObjectSetText("values2", DoubleToStr(High[1],Digits), mag, "Eras Bold ITC", Pink);
ObjectSetText("values3", DoubleToStr(Close[0],Digits), mag, "Eras Bold ITC", Yellow);

ObjectSetText("values4", DoubleToStr(Close[0],Digits), mag, "Eras Bold ITC", Yellow);
ObjectSetText("values5", DoubleToStr(Low[1],Digits), mag, "Eras Bold ITC", Pink);
ObjectSetText("values6", DoubleToStr(Low[1]-0.003,Digits), mag, "Eras Bold ITC", Lime);




return(0);
}

補足日時:2013/08/31 00:44
    • good
    • 0

すいませんが、これ以上の本件の対応はご遠慮します。

    • good
    • 0
この回答へのお礼

すいません。長々とお付き合いいただきありがとうございました。

Saitarさんのおかげで、MT4のインジケーターのプログラミングをほんの少しですが、色々と変更して使えるようになりました。
これからも、少しずつ気長に勉強していきます。

お礼日時:2013/09/01 00:29

don-naldoさん、こんにちは。


詳しくご説明頂き、すいません。以前の表示のご要望の主旨も含めて、良く分かりました。

プログラムについては、とりあえず今回は作ってくれ、ということなら即表示しますので、ご遠慮なく。

それと自動売買についてですが、私の考えを。
基本的にはdon-naldoさんのご指摘のように、時間や相場環境により取引をするかどうかを決めてある、と思います。どんな戦略でものべつ幕なしにやったら、負けますよね。
でも、その時間帯などの設定自体も事前に決めておいて、決められた環境の時だけプログラムが機能するようにしておくのだと思います。つまり、コンピュータは動かしっぱなしにしておくけど、取引は限られた時間だけ実行される、というのが現実解でしょう。
自動売買のプログラムを作っていると、戦略の策定に多分に自分の意志が入り込むので、ある意味それ自体が裁量の固まりと思えます。
しかし、大切なのは、「事前に」「決められた(決めた)」「ルール」に従って「機械的に」取引することです。その一連の流れをプログラムとして記述します。

具体的には、例えば、don-naldoさんの取引手法をプログラム化しておいて、取引したい相場環境になったら動かしておきます。すると、まさに自動でルールに従ってPositionをとり、決済まで実行します。そこには感情が入り込みません。悲しいぐらいに機械的ですが、感情に負けてズルズルと損切りが遅れる、なんてことは絶対にありません。自分でEAを止めない限りは^^;

成功する取引に欠かせないのは「規律」であると思います。それを実現してくれる一つの方法が、自動売買です。私のイメージは伝わりますか?

なので、多分、正しい表現は「自動売買で勝ち続けている」のではなくて、「勝ち続けられるロジックを持っているヒトが自動売買をやったら、規律に従った取引ができる」ってことだと思います。肝は自動で売買をすることではなく、やはり、勝てるロジックを構築し、取引の現場では余計な感情を入れないってことですね。

。。。実際は勝ち続けられるロジックを構築する方が1000倍大変です。
賢明にも今はデモ取引をされておられるようですね。まずは勝てるロジックを構築することに専念されるべきです。don-naldoさんくらい論理的思考ができる方なら、プログラミングは難しいものではありません。

では。

この回答への補足

Saitarさん、非常にご無沙汰しています。ちょっと、家や仕事の事で色々とあって、三ヶ月もの間、トレードの勉強などが一切できない状況でしたが、やっと戻って来れました。どう考えても「遅すぎだよ!」って感じですが、返信を書きます。

>成功する取引に欠かせないのは「規律」であると思います。それを実現してくれる一つの方法が、自動売買です。私のイメージは伝わりますか?

Saitarさんの仰っているイメージは物凄くよく分かります。
私は数年程前に、一度相場から退場を宣告されています。当時は本当に今考えると頭がおかしいのでは?と思えるくらい無謀な取引をしていました。
当然、ロスカットなんて言葉も概念も知りません。ただ、当時は全くの素人ながら、「上がるか下がるかなんて分かるわけがない!」という事は強く感じていたので、しばらくして思いついた方法が、みずほ銀行を後場の終了間際の14時59分頃に最低単元で買いと売りの両建てをして、翌日のまた同じ時間に利益になっている方は利食いをして、また最低単元で建玉をし、損失になっている方は新規で建てた方と取得単価が出来るだけ近くなるように増し玉をするという取引でした。
これが、三ヶ月くらいは非常に上手くいっていて、順調に資金が増えていったのですが、ある時から下げが連続して続き、信用枠が限界になってしまい、買いのナンピンが出来なくなり、見事に塩漬け状態。そのうちまた戻ってくるだろうと思って待っていたら、みずほ銀行は帰らぬ人に・・・。(今年5月のもうすぐ16000円という上げ上げ相場の時点でも、まだまだマイナスでした。)本当に素人って無謀な事やりますよね・・・。

一度退場をくらいましたが、しばらくして再び立ち上がり、真剣に勉強を始めました。
そして、勝ち続けている人々が最終的に到達する共通の考え方は、ひたすら検証をして、自分の性格に合った優位性の高いルールを見つけ、それを感情を一切いれずに、機械的に淡々と繰り返す事、すなわち自己規律でした。

確かに、自分の売買ルールのすべてを込めたEAが作れれば、これほどありがたい物は他にないですね。
でも、やはりSaitarさんが仰るように、まず勝てるロジックを構築する事が最優先だと思います。

ちなみに、プログラミングの本は「icustomで変幻自在メタトレーダー」「FXメタトレーダー入門」「FXメタトレーダー実践」などを大雑把に読んで、少しやってみましたが、仮にこれらの本を完全にマスターしても、Saitarさんに作っていただいた四本値のインジケーターは自力では作れないと分かりました。非常に貴重なインジケーターを作っていただいて本当に感謝しています。

今は、Saitarさんに作っていただいたインジケーターをベースにして、少しずつ出来る範囲で変更を加えて、色々と活用させていただいています。私が現時点で欲しいインジケーターは大体がオブジェクトを使うようなものばかりで、あまりネット上で手に入るものにはありません。

ですから、またSaitarさんにご迷惑だと思いますが、また色々と教えていただけるとありがたいです。

では、とりあえず、復帰のご報告でした。
また、よろしくお願いします。

補足日時:2013/08/30 18:15
    • good
    • 0

don-naldoさん、こんにちは。



先日のご質問にはちょっと困りました。
何しろ、質問自体は閉め切られているのですから、回答のしようがないですよ ^^;

さて、今回の0.3pipsずらした表示とはどういう目的なんでしょうか?
表示する目的を教えて頂けますか。思い違いを避けたいので。。。

、、、と言いつつ、don-naldoさんは先日、ご自身でmqlを書きたいとのご発言がありました。
そして、私のプログラムを調整してご自身で使い易いように変更もされている。

今回のような図形処理はmqlの中でも取っ付きにくいものですけど、多分、don-naldoさんは今後も色々と工夫をされたいに違いない。
幸い、今回の0.3pipsの件はかなり簡単な課題です。

一度、質問に掲載されたプログラムをジックリ見て、0.3pips違えた表示にトライされるのはいかがでしょうか。MT4が最も輝くのは、自分が思ったように表示が出来たり、自動売買が実現できた時です。

もちろん、分かりにくい箇所をきいて頂ければ、アドバイスはしますし、場合によっては作成もしますが、私のような者がウロチョロしている間にMT4のミラクルワールドへ足を踏み入れるのも、またおもしろきことかと。

。。。
最後に、一点だけ、ご注意を。
don-naldoさんが納得するまでは、ご質問を閉じないで下さいね ^^;

では。

この回答への補足

Saitarさん、こんにちは。ご連絡ありがとうございます。

0.3pipsずらして表示する目的ですが、私はエントリーする際にはいつも直前の高値、又は安値を0.3pips以上突破した時点で入ります。
通常は表示されている高値安値から0.3pipsを加減した数字を暗算で計算して突破を待つのですが、価格によっては暗算に少々戸惑う場合があります。
例えば、ユーロ円で132.001円や132.101などを0.3pips割ったら売りの場合、小数点の下3桁すべての数字が変わるので、小数点の下1~2桁だけの変化に比べると暗算が少しだけ遅くなります。遅くなるといっても、3秒も4秒も変わるわけではありませんが、計算に手間取ってしまい、高値をすでに0.3pips越えているのに暗算が追いついていなくて、明快にエントリーポイントを抜けた事が認識できずに入れなくて、はっきり分かった時には大きく抜けているため、リスクリターンの比率的に割りに合わなくなり止めるというケースが結構あります。そういう時に限って一気にターゲットポイントまで行く場合が多々あります。そのため、3桁の計算はいつも煩わしく思っています。
このような理由から、最初から0.3pipsが加減された数字が表示できたら便利だなと思った次第です。

ついでに、私の現在の売買ルールを簡単に記載しておきます。
私は1分、5分、1時間の三つの時間軸を使い、5分の流れをメインに、1分でタイミングをはかります。押し目買いや戻り売りで入り、直近の5分のフラクタルや直前の1時間足の高値安値、1時間足のフラクタルに引いたホリゾンタルラインまたは、フィボナッチラインなどの節目で利食いというトレードです。
そして、例えば5分が上向きだから買い目線で押し目買い狙う場合、1分足のMACDが上向きの状態で直前の足がフラクタルになるであろう状態、すなわち過去の安値を2本以上抜いていている状態の足があり、この足の高値を0.3pips抜けたらストリーミング注文で成り行き買いします。

私は基本的にフラクタルが出来るであろう場所で入るようにしています。この場所は勢いよく上昇する事が多いように思います。だから、ここだとすぐに含み益になる場合が多いので、いきなり逆行されるより精神的に楽な場所です。もちろん、エントリーした足とその次の足が暫定フラクタルの足の安値を割ってしまったらそこはフラクタルではなくて、ただの誰にも意識されない単なるローソク足になってしまうので、ここを0.3pips割られたら一旦撤退します。

また、フラクタルが確定してから逆行された場合は、この場所で一回売りの利食いが入り、上に少し戻るので、逃げるにしても被害が少なくてすみます。だから、私はフラクタル付近で入ることにこだわっています。

ちなみに、突破のpips数が0.3pipsの理由は、1分足を観察していた結果、もっとも騙しが少ないように感じたからです。0.2pips抜けて逆行したり、上昇トレンド中に直近の安値を0.2pips割ってから一気に上に戻ったりする場合が多いように思います。


私も自分でプログラムを書き、MT4の最高の輝きを経験してみたいです。しかし、まだまだ基礎の基礎も全く分からない状態なので、0.3pipsずらした表示を実現するのは少し時間がかかりそうですが、少しずつ挑戦してみます。

ただ、以前から疑問に思っていたのですが、MT4は自動売買が売りのひとつですが、自動売買で勝ち続けている人というのは実際にいるものなのでしょうか。裁量の部分を全くいれずに勝てるものなのかな?と常々思っています。24時間、勝手に売買をしてくれるのは便利ですが、例えばトレンドフォローが全く機能しないレンジ相場になれば負けまくるように思います。

私は一日平均で20~30pipsとるのが目標なのですが、もし自動売買でそれくらいが取れるなら物凄く喜ばし事です。
私は、取れるときは20~30pipsくらいは取れるのですが、駄目なときはひどいです。以前、気合を入れて、月曜の朝7時から13時間くらいやってマイナス5pipsなんて悲しい事がありました。この時はさすがに激しい虚しさに襲われ、非常に無駄な時間を過ごしたように感じがして悲しくなりました。今は、夕方16時~19時と21時~0時のボラの大きくなりやすい時間帯を中心にトレードしています。(ちなみに、まだひたすらデモトレ中です。)

自動売買で勝ち続けている人が本当にいるのだとしたら、本気でプログラムを勉強して、自動売買に挑戦してみたいですね。一日中、パソコン画面を見ているともちろん目が疲れるし、腰も痛くなるし、非常に不健康な暮らしです。

勝ち続けている人は、多少の裁量も入れているのでしょうか。例えば、ユーロ円やドル円の場合、ボラが少ない、午前から夕方15時頃までは自動売買をストップして、ボラが大きくなりやすい16時から深夜0時までしか自動売買を稼動させないとか。

すいません。気づいたら物凄い長い文章になっていましたので、この辺で止めます。

最後に、前回の質問はすいませんでした。閉めた後に、0.3pipsずらすという事を思いついたもので・・・。
私は他の方の質問に答えた経験がないので、お礼の文章をもらった事がなく、詳しい事は分からなかったのですが、ベストアンサーを決定した後は、たぶん回答をいただけないのだろうと思ったのですが、もしかしたら、お礼の文章に対して何か返信が書ける仕組みかもしれないと思って、試しに書いてみました。今後は、じっくり考えて完全に納得してから閉めるようにします。

補足日時:2013/05/20 01:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!