【MT4/5】MetaTrader初心者専用24【ゆとり隔離スレ】
チャートの日付表示を4/12とかに変えられますか?
マルチタイムフレームの一目均衡表を探しているのですが、どこか公開しているところはないでしょうか
Forex-TSDのところは既に停止されていて、もう一つの所も停止済みでした・・・
954 :
Trader@Live!:2011/04/13(水) 09:50:36.69 ID:UQkaCLfn
新しい足が出来た時に、ってのを判定する関数教えてイケメン達
Time
bool IsNewBar()
{
static datetime prevtime = 0;
if (prevtime == Time[0]) return (false);
prevtime = Time[0];
return (true);
}
1回目の呼び出しに対して必ずtrueが返るけど、init()内で一度呼び出しとけば問題ない。
気に入らないなら、if (prevtime == 0) prevtime = Time[0];を追加してもいい。
けど、初期化用の条件判定が毎回呼ばれるのはあまりにも非効率だと俺は思う。
この関数はstart()内でも1回しか使えないので注意。2回目は必ずfalseになってるから。
複数の判定に使う場合は頭の方で判定させておいてその結果を使い回すようにね。
初心者です。バックテストがすごく遅いんです。4コアのうちの1個しか使ってくれません。マルチコアを使う
ようにできないのでしょうか?
また、EveryTickをControl等変えても問題ありませんか?その際時間足との関係はどうなるのでしょうか?
例えばControlに設定して時間足を1H にし、拾ってきたEAで動きを見ていると毎秒のデータは貰っているけど
毎時にしかトレードしないように見えます。
959 :
Trader@Live!:2011/04/13(水) 22:50:28.27 ID:JBqdWjFX
質問させてください。
ある参考書で価格と指標の交差で売買シグナルを出すという
プログラムで
// オープンポジションの計算
double pos = MyCurrentOrders(MY_OPENPOS, magic);
// 移動平均の計算
double sma1 = iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
int ret = 0;
// 買いシグナル
if(pos <= 0 && Close[2] <= sma1 && Close[1] > sma1) ret = 1;
// 売りシグナル
if(pos >= 0 && Close[2] >= sma1 && Close[1] < sma1) ret = -1;
とあるのですが、
Close[2] <= sma1 && Close[1] > sma1) ret = 1の
部分がいまいちしっくりきません。
というのは、Close[2]には sma2じゃないんでしょうか。
考え方がおかしいならどうおかしいのか親切な方教えていただけないでしょうか。
よろしくお願いします。
>>959 Close[2]の2は配列のインデックスで、sma1の1は変数名の一部。
でもきっとこの説明では分からないんだろうな。。。
>>958 MT4はマルチコアに対応していません。
基本設計が5年以上も前のものですから当たり前なんですよ。
MT5はマルチコア、分散コンピューティングに対応していますが、現在はβバージョンです。
正式バージョンが発表されるまではリアルアカウントを開ける業者はありません。
>>959 sma2 なんて変数はどこにも定義されていないのだから、
「sma2じゃないんでしょうか?」というのはおかしい。
if(pos <= 0 && Close[2] <= sma1 && Close[1] > sma1)
これは、
pos がゼロ以下で、
二本前の終値が sma1 以下で、
一本前の終値が sma1 より大きかったら・・・
という条件文なのは分かるかな?
これは、その参考書の作者が決めた条件なのだから、その作者にとっては正しいのだよ。
>>959 // 移動平均の計算
double sma1 = iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);//一本前の移動平均値
double sma2 = iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 2);//二本前の移動平均値
int ret = 0;
// 買いシグナル
if(pos <= 0 && Close[2] <= sma2 && Close[1] > sma1) ret = 1;
直感的に正しいのはこんな感じじゃないかな?とは思うけどね。
>>961 だいぶ前から疑問に思っているんだが、
MT5が「現在はβバージョン」っていうのは、どこを見れば確認できるの?
965 :
Trader@Live!:2011/04/14(木) 00:01:28.95 ID:87c10Q2m
>>962 文章たらずですみません。略しすぎました。
>>963 そうです。
まさしくそのようにしなきゃいけないのじゃないかと思ったんですが
それだと間違いなんでしょうか?
直感的に正しい=最も儲かる方法
・・・?
968 :
Trader@Live!:2011/04/14(木) 07:22:22.71 ID:3klX6Z43
MT4をダウンロードしようとすると、
デモ口座開設になって、名前や住所まで入力することになっているけど。
これって、MT4対応の証券会社に口座開設するように電話とかメールがくるのか?
FOREXにしてもいとは思っているけど、どうなのでしょうか?
>>968 ニュースレターに同意のチェックを外しておけばいいんでない?
>>966 そうか? 元のはMAを突き抜けたかどうかを判定してるだけたろ?
>>970 2本前の状態 Close[2] > sma2
1本前の状態 Close[1] > sma1
↑ 終値がどちらも移動平均の上にある状態を考える。
Close[1] > sma1 >
Close[2] > sma2
↑大小関係がこんな場合を想像してみて。
ゆっくり上昇中の相場が急騰した場合なんだけど、MAを突き抜けたと言える??
Close[1] > sma1 > Close[2] > sma2
973 :
954:2011/04/14(木) 09:03:12.23 ID:Q1GcMCBN
Close[2]ってのはOpen[1]と窓の分ってことだろ。
まあこういっても理解できないんだろうな。
>>968 適当な住所と名前、電話番号で良いよ。
海外でも偽住所、偽名、偽電話番号は当たり前みたいだから
それとメアドはいつでも捨てられるメアドにする事。
メアドは正直に書くとSPAMに襲われる・・
if (条件1 && 条件2 && 条件3)とか書いてる時点で手成りのサンプルコードなんだ
ろうから、あんまり深く考えても意味なくね?
点と点の位置判定よりは水平線と直線の交差判定の方が少しだけイケメンだ。
2直線の交差判定の方がもっとイケメンじゃね?って思うなら、そう書き直せばいい。
結構書ける人でも手成りだとそんなもんだ。書籍だからってあんま期待すんなw
>>977 >あんまり深く考えても意味なくね?
意味あったよ。
>>959のコードよりも
>>963のコードの方が正しい、
という訳ではない、ということが理解できた人(俺とかw)にとってはな。
「手成り」だから手法として劣ってしまった、とかいう話では全然無い。
>>959の
if(pos <= 0 && Close[2] <= sma1 && Close[1] > sma1) ret = 1;
が正しいと思えてしまう奴は、窓があいて無ければ
if(pos <= 0 && Open[1] <= sma1 && Close[1] > sma1) ret = 1;
と書いてもよいと考えていて、
Close[1] > sma1 >= Open[1] の関係が成立した場合、
始値が移動平均の下にあって、それが終値の時点で上回った=交差した
と思ってるのだろうが、
Close[1] > sma1 >= Open[1] > sma1'(オープン時のsma1)
実際は、始値が確定した時点では、
移動平均がその下に位置している可能性があることに気づいていないのだろう
>>974 あなたが正しい。。。特に二行目が(笑)
sma1とか[1]とかは確定値なんだから
Close[1] > sma1 >= Open[1]が確定したら
可能性も何も確定したんだよ。
まあ理解できんのかもしれんけど。
Close[2]っていうのは値であってグラフ上の点ではないのだよ。
理解できないのかもしれんが。
窓が開いてなけりゃClose[2]はOpen[1]と等しいんだよ。
等しくない場合に窓が開いたといってるんだからこれは理解できるだろ。
バッファのインデックスは0から始まるんだよ。
[0]が現在の足の値。
これは決まり事。
気をつけなきゃならんのは未確定値のClose[0]とかのPRICE_CLOSEでshiftが0の値なんだよ。
これは理解できなきゃEAなんか組まんほうがいい。
>>981 Close[1] > sma1 >= Open[1]が確定した時点で、
移動平均とのクロスが成立したと考えてるんだね?
それをクロスと見なすかどうかは意見が分かれるところかもしれないね。
>>982 ちがうだろ。
そしたらClose[2]はいらんだろ。
っていうか「確定した時点」って。。。
だましに敏感か鈍感かって差は出るね
短い足のチャートだと陽線が続いてるのにcloseがずっと下降してるとかあるしな
すいません、ある通貨ペアのある指標の最新の値を
常に表示することができれば方法をご教示下さい
たとえば、ドル円のチャートとデータウィンドウを表示させ、
チャートウィンドウで移動平均やMACDを表示してた場合、
チャート上でマウスカーソルを左右に動かしても
常に最新の移動平均やMACDの数値ををどこかに表示させたいです
よろしくお願いいたします
>>983 確定値なんだから「確定した時点」という表現は確かにおかしいねw
表現を変えると、
Close[1] > sma1 > Close[2] > sma2
この条件式が成立したら 移動平均のクロスが成立すると言う理解でOK?
>>986 そこかよ。
ちがうよ。移動平均のクロスなんか見てない。
なんかもう
>>987が分かってくれてるので俺は満足。
>>981 あなたは正しくなかった。。。9行目(空白行を含む)の最後が(笑)
>>959 の「価格と指標の交差で売買シグナルを出す」という命題について、
指標が、例えばピボットのように途中で変化しない固定的な値であれば、
Close[1] > 指標値 > Close[2]
Close[1] > 指標値 > Open[1] //窓が開いていない時のみ。
これは、価格と指標の交差があったことを検出できると思うのだけどね。
>>986,991
すいません。間違えました。あなたが正しいです。
「移動平均のクロス」には、「価格と移動平均のクロス」が含まれます。
そんなの全く誤解の余地のない常識です。
Close[1] > sma1 > Close[2] > sma2
というのが「価格と移動平均のクロス」を意味しているとは、私の馬鹿な頭では全く理解できませんでした。
sma2とか出てきたんで二つの「移動平均のクロス」のことでも言ってるのかと勘違いしました。
もう勘弁してください。お願いします。あなたの頭の良さは十二分にわかりました。降参です。
負け犬は去ります。失礼します。
おっと、言い忘れました。すいません。ごめんなさい。申し訳ない。
負け犬の、というかイタチの最後っ屁です(古っ
>>959のコード、テクニカルの基礎に通じていると良く理解できる。
TrueRangeの概念が入ってる。まあ、基礎中の基礎、古典中の古典だけどね。
Close[2]は、適当に関数化すれば、TrueOpen(1)とかいうことなんだよ。
窓が開いたらシグナルが出なかった、じゃ困るからな。
では退散。
>>982 そういうこと。
そもそもsma1とsma2の差は、必ずClose[1]とClose[2]の差より小さくなる。
>>971はそのありえない条件まで考えてしまってる。
> それをクロスと見なすかどうか
揉み合いでは通用しないからダメだろうね。
Close[1] > sma1 > Close[2] > sma2
この状況でどこがクロスしてるのか教えてくれ。
>>995 その状況が起こり得ないって話なんじゃないの?
いや、普通に起こりそう?
Close[2] > sma2の状況で、Close[1]が急上昇するとsma1がClose[2]を超える
可能性はありそうな気がする・・・・・・
>>996 起こり得るだろ。
仮に起こり得ないとしたら
>>986で成立したら云々と言ってるのはなぜだ?
ちょっとしばらくレスできなくなるけど納得のいく回答をお待ちしております。
>>998 そんなことは元の発言者に聞いてくれ。
俺は何も考えず2直線の交差判定として処理しとくからw
Close[1] <= sma1 && Close[0] > sma1) ret = 1
一つ前の終値がsma1以下にあり、且つ、現在の終値がsma1の上にある
=sma1に対するリアルタイムGC判定
Close[2] <= sma1 && Close[1] > sma1) ret = 1
二つ前の終値がsma1以下にあり、且つ、一つ前の終値がsma1の上にある
=sma1に対するひとつ前の足が確定した時点でのGC判定
じゃないの?
sma1がリアルタイムでは出てこない値だから、一つ前で判定してるとか。
Close[1] > sma1 > Close[2] > sma2
=一つ前の終値がsma1より上にあり、且つ、二つ前の終値がsma1未満でsma2より上にある
sma1=単純移動平均線[1]って意味じゃない場合、下がってもクロスするよな?
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。