「メタトレーダー」なんでもスレッド
掲示板トップ≫掲示板をみる
37 takechanさん
新参者のくせに、新規スレッドを立てちゃいまして、ご無礼つかまつりまする。
このスレッドで、いろいろと情報交換できるとうれしいと思い、立てました。
メタトレーダーの操作方法やカスタムインジケーター・EAについての初歩的な質問からハイレベルな質問など、また、自作EAやメタトレーダーによるリアルトレードのパフォーマンス自慢、最新のEA販売情報…。
とにかく、メタトレーダーに関する話題ならなんでも書いちゃおう、というスレッドです。
皆様、よろしくお願いしまーす。
このスレッドで、いろいろと情報交換できるとうれしいと思い、立てました。
メタトレーダーの操作方法やカスタムインジケーター・EAについての初歩的な質問からハイレベルな質問など、また、自作EAやメタトレーダーによるリアルトレードのパフォーマンス自慢、最新のEA販売情報…。
とにかく、メタトレーダーに関する話題ならなんでも書いちゃおう、というスレッドです。
皆様、よろしくお願いしまーす。
2010/02/16 19:55
前の10件 | 1 | 2 | 3 | 4 | 5 | 次の10件
新しい書き込み順に表示|【古い書き込み順に表示】
37_41 中居犬@管理人さん
>その何%の中に自分がどうしたら入れるか、日々努力をすることが一番大切だと思います。
結果が伴わないと辞めてしまうと何ものにもならないけど、
それでも継続することで何か見えてくるものはありますね。
続けることの大切さを痛感しております。
結果が伴わないと辞めてしまうと何ものにもならないけど、
それでも継続することで何か見えてくるものはありますね。
続けることの大切さを痛感しております。
2010/03/03 02:47
37_42 takechanさん
以前、このスレッドで、EAバックテスト時のスプレッドを固定する方法として、次のように書きました。
>また、それぞれのEAの中で、たとえば、
>extern double spread=0.03;
>ビッド→Bid
>アスク→Bid+spread
>などとすれば、外部パラメーターを利用して、スプレッドの大小によって>パフォーマンスがどのくらい変化するかも分析できますね。
しかし、どうもこれではうまくいかないようで、ごめんなさい(汗)。メタトレーダーの仕様全体が変動式スプレッドになっているため、OrderSend()関数やOrderClose()関数など部分的にスプレッドを固定しようとしても、相容れないのだと推測します。
そこで、以下のサイトで、簡単に問題を解決する方法が紹介されていました。よかったら参考にしてください。
http://d.hatena.ne.jp/fai_fx/20100227/1267196449
>また、それぞれのEAの中で、たとえば、
>extern double spread=0.03;
>ビッド→Bid
>アスク→Bid+spread
>などとすれば、外部パラメーターを利用して、スプレッドの大小によって>パフォーマンスがどのくらい変化するかも分析できますね。
しかし、どうもこれではうまくいかないようで、ごめんなさい(汗)。メタトレーダーの仕様全体が変動式スプレッドになっているため、OrderSend()関数やOrderClose()関数など部分的にスプレッドを固定しようとしても、相容れないのだと推測します。
そこで、以下のサイトで、簡単に問題を解決する方法が紹介されていました。よかったら参考にしてください。
http://d.hatena.ne.jp/fai_fx/20100227/1267196449
2010/03/14 16:12
37_43 takechanさん
RSIやストキャスのようなオシレーター系指標を使って、損切りを付けて逆張りする場合、そのまますべてのエントリーシグナルに従うと、勝率が非常に悪いです(30%前後)。理由の一つとして、大きなトレンド中に何度もダマシサインが出てしまうことによります。
そこで、ロングとショートを、必ず交互にエントリーすると、売買回数は少なくなりますが、勝率はかなり上がります。RSIでも50%以上は簡単に出せますね。
問題は、これをEAでどのように記述するか。
ぱっと思いつく方法としては、OrderSelect()関数で前回のポジションの方向を調べるというやり方ですが、これだと記述がめんどうな上に、通信エラーなどで約定しなかった場合に不都合です。
私の場合、static変数を使います。C言語ではおなじみのテクニックのようですが、MT4でこれを頻繁に使っている人は意外に少ないみたいですね。通常の内部変数を使用すると、ティックが変わるたびに変数が初期化されてしまうところ、static変数は以前の数値を維持してくれるのがミソです。使い方は、通常の変数のデータ型の前に、「static」という文字を書くだけで、条件分岐がとても簡単にできるので、私はよく使います。
たとえば、
static int x=0;
if(買いシグナル発生 && x<=0)
{
OrderSend();
x=1;
}
if(売りシグナル発生 && x>=0)
{
OrderSend();
x=-1;
}
みたいな感じです。
もちろん、外部変数やグローバル変数を利用してもいいわけですが、これらは、変数宣言の場所と実際にその変数を使用する場所が離れてしまい、あとからプログラムを見たときに分かりづらいので、私は、static変数の方が好きです。
「それがどうした?」というような投稿内容になってしまい、スミマセン。
m(><)m
そこで、ロングとショートを、必ず交互にエントリーすると、売買回数は少なくなりますが、勝率はかなり上がります。RSIでも50%以上は簡単に出せますね。
問題は、これをEAでどのように記述するか。
ぱっと思いつく方法としては、OrderSelect()関数で前回のポジションの方向を調べるというやり方ですが、これだと記述がめんどうな上に、通信エラーなどで約定しなかった場合に不都合です。
私の場合、static変数を使います。C言語ではおなじみのテクニックのようですが、MT4でこれを頻繁に使っている人は意外に少ないみたいですね。通常の内部変数を使用すると、ティックが変わるたびに変数が初期化されてしまうところ、static変数は以前の数値を維持してくれるのがミソです。使い方は、通常の変数のデータ型の前に、「static」という文字を書くだけで、条件分岐がとても簡単にできるので、私はよく使います。
たとえば、
static int x=0;
if(買いシグナル発生 && x<=0)
{
OrderSend();
x=1;
}
if(売りシグナル発生 && x>=0)
{
OrderSend();
x=-1;
}
みたいな感じです。
もちろん、外部変数やグローバル変数を利用してもいいわけですが、これらは、変数宣言の場所と実際にその変数を使用する場所が離れてしまい、あとからプログラムを見たときに分かりづらいので、私は、static変数の方が好きです。
「それがどうした?」というような投稿内容になってしまい、スミマセン。
m(><)m
2010/03/15 14:07
37_44 名無しさん
はじめまして。EAのプログラミングについて質問させて頂きたいのですが宜しいでしょうか?
自作のインディケーターをiCustom関数でEAに組み込んでバックテストをしてみたのですが、iCustom関数が正しい値を取得できずに困っています(Print関数を使ってテスターで確認しました)
チャートに表示させると何の問題もなく表示できているのに、EAで使用すると値が変わってしまっています。
原因の分かる方がおりましたらご指摘頂けないでしょうか?
http://www.dotup.org/uploda/www.dotup.org758743.txt
自作のインディケーターをiCustom関数でEAに組み込んでバックテストをしてみたのですが、iCustom関数が正しい値を取得できずに困っています(Print関数を使ってテスターで確認しました)
チャートに表示させると何の問題もなく表示できているのに、EAで使用すると値が変わってしまっています。
原因の分かる方がおりましたらご指摘頂けないでしょうか?
http://www.dotup.org/uploda/www.dotup.org758743.txt
2010/03/25 19:29
37_45 takechanさん
名無しさん。
>EAで使用すると値が変わってしまっています。
もう少し具体的に、どのように変わってしまうのか教えていただくと、ひょっとして解決策が見つかるかもしれません。
>EAで使用すると値が変わってしまっています。
もう少し具体的に、どのように変わってしまうのか教えていただくと、ひょっとして解決策が見つかるかもしれません。
2010/03/27 11:20
37_46 恋多労さん
こんばんは。
超初心者な質問で恐縮ですが、私も1つお願いします。
メタトレーダーで、MACDを出したら、その辺のFX本にあるような線が2本ある状態じゃなく、どうやらシグナル 1本 とヒストグラムだけでている状態になるのですが、どうしたら? あるいは どう見たら? 良いのでしょうか???
・・・さらに言うと、MACDの有効な使い方、見方をシンプルに教えて頂けたりすると幸いです。
超初心者な質問で恐縮ですが、私も1つお願いします。
メタトレーダーで、MACDを出したら、その辺のFX本にあるような線が2本ある状態じゃなく、どうやらシグナル 1本 とヒストグラムだけでている状態になるのですが、どうしたら? あるいは どう見たら? 良いのでしょうか???
・・・さらに言うと、MACDの有効な使い方、見方をシンプルに教えて頂けたりすると幸いです。
2010/04/04 00:58
37_47 takechanさん
恋多労さん
まず、MACDの計算式は、一般的には次のようです。
MACD値=短期指数平滑移動平均-長期指数平滑移動平均
シグナル値=MACDの単純移動平均
ヒストグラム=MACD-シグナル値
次に通常のチャートの表示方法は以下のようです。
MACD値とシグナル値をそれぞれ二本の折れ線グラフで表示し、ヒストグラムを棒グラフで表示する。よって、MACD値とシグナル値がクロスするたびにヒストグラムが0をまたいで上下します。
ところが、メタトレーダーの罫線分析ツールの表示方法はこれと異なるようです。
MACD値をシルバーの棒グラフで表示し、シグナル値を赤の折れ線グラフで表示し、いわゆるヒストグラムを表示しておりません。
ところで、MACDの一般的な使い方は、MACD値とシグナル値がゴールデンクロスをしたら買い、デッドクロスをしたら売り、というものです。
これをメタトレーダー上のチャートで判断するためには、シルバーの棒グラフが赤い折れ線グラフを上に突き抜けたら買い、シルバーの棒グラフが赤い折れ線グラフを下抜いたら売り、ということになるかと思います。
まず、MACDの計算式は、一般的には次のようです。
MACD値=短期指数平滑移動平均-長期指数平滑移動平均
シグナル値=MACDの単純移動平均
ヒストグラム=MACD-シグナル値
次に通常のチャートの表示方法は以下のようです。
MACD値とシグナル値をそれぞれ二本の折れ線グラフで表示し、ヒストグラムを棒グラフで表示する。よって、MACD値とシグナル値がクロスするたびにヒストグラムが0をまたいで上下します。
ところが、メタトレーダーの罫線分析ツールの表示方法はこれと異なるようです。
MACD値をシルバーの棒グラフで表示し、シグナル値を赤の折れ線グラフで表示し、いわゆるヒストグラムを表示しておりません。
ところで、MACDの一般的な使い方は、MACD値とシグナル値がゴールデンクロスをしたら買い、デッドクロスをしたら売り、というものです。
これをメタトレーダー上のチャートで判断するためには、シルバーの棒グラフが赤い折れ線グラフを上に突き抜けたら買い、シルバーの棒グラフが赤い折れ線グラフを下抜いたら売り、ということになるかと思います。
2010/04/04 12:47
37_48 takechanさん

恋多労さん
一般的なMACDチャートのインジケーターを作成してみました。もしよかったら使ってください(たぶんこれで大丈夫だと思います)。
MACD値を赤の折れ線グラフで、シグナル値を青の折れ線グラフで表示し、ヒストグラムをシルバーの棒グラフで表示しました。
mq4ファイルを貼り付けることができないので、プログラム自体を貼り付けておきます。
メタエディター(黄土地に黒のびっくりマーク)→File→New→Custom Indicatorにチェック→次へ→nameへファイル名を英語で適当に入れる→次へ→完了
すると、インジケーター作成用画面が表示されるので、
#property copyright "Copyright ゥ 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
みたいな文字があるので、その下の記述を全部Deletで消去して、代わりに、以下のプログラムを書き写してください(日本語以外はすべて半角英数で、スペースも半角で)。プログラムが長いので分割投稿します。
全部書けたら、compileのボタンをおして(写し間違えると、下にエラーが出ます)、File→Save As…→保存→メタトレーダーを再起動→Custom Indicatorの中に保存したファイルがあるので、それをチャートに表示さればOKです。
//指標の設定
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Silver
#property indicator_width3 4
//外部パラメーター
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
//指標バッファの宣言
double MacdBuf[];
double SignalBuf[];
double HGBuf[];

恋多労さん
一般的なMACDチャートのインジケーターを作成してみました。もしよかったら使ってください(たぶんこれで大丈夫だと思います)。
MACD値を赤の折れ線グラフで、シグナル値を青の折れ線グラフで表示し、ヒストグラムをシルバーの棒グラフで表示しました。
mq4ファイルを貼り付けることができないので、プログラム自体を貼り付けておきます。
メタエディター(黄土地に黒のびっくりマーク)→File→New→Custom Indicatorにチェック→次へ→nameへファイル名を英語で適当に入れる→次へ→完了
すると、インジケーター作成用画面が表示されるので、
#property copyright "Copyright ゥ 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
みたいな文字があるので、その下の記述を全部Deletで消去して、代わりに、以下のプログラムを書き写してください(日本語以外はすべて半角英数で、スペースも半角で)。プログラムが長いので分割投稿します。
全部書けたら、compileのボタンをおして(写し間違えると、下にエラーが出ます)、File→Save As…→保存→メタトレーダーを再起動→Custom Indicatorの中に保存したファイルがあるので、それをチャートに表示さればOKです。
//指標の設定
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Silver
#property indicator_width3 4
//外部パラメーター
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
//指標バッファの宣言
double MacdBuf[];
double SignalBuf[];
double HGBuf[];
2010/04/04 17:57
37_49 takechanさん
//初期化関数
int init()
{
//指標スタイル
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_HISTOGRAM);
SetIndexDrawBegin(1,SignalSMA);
IndicatorDigits(Digits+1);
//指標バッファの割り当て
SetIndexBuffer(0,MacdBuf);
SetIndexBuffer(1,SignalBuf);
SetIndexBuffer(2,HGBuf);
//指標ラベルの設定
IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")");
SetIndexLabel(0,"MACD");
SetIndexLabel(1,"Signal");
SetIndexLabel(2,"HISTOGRAM");
return(0);
}
//スタート関数
int start()
{
//指標の計算範囲
int counted_bars=IndicatorCounted();
int limit=Bars-counted_bars;
//指標の算出
for(int i=limit-1; i>=0; i--)
MacdBuf[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
for(i=limit-1; i>=0; i--)
SignalBuf[i]=iMAOnArray(MacdBuf,0,SignalSMA,0,MODE_SMA,i);
for(i=limit-1; i>=0; i--)
HGBuf[i]=MacdBuf[i]-SignalBuf[i];
return(0);
}
int init()
{
//指標スタイル
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_HISTOGRAM);
SetIndexDrawBegin(1,SignalSMA);
IndicatorDigits(Digits+1);
//指標バッファの割り当て
SetIndexBuffer(0,MacdBuf);
SetIndexBuffer(1,SignalBuf);
SetIndexBuffer(2,HGBuf);
//指標ラベルの設定
IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")");
SetIndexLabel(0,"MACD");
SetIndexLabel(1,"Signal");
SetIndexLabel(2,"HISTOGRAM");
return(0);
}
//スタート関数
int start()
{
//指標の計算範囲
int counted_bars=IndicatorCounted();
int limit=Bars-counted_bars;
//指標の算出
for(int i=limit-1; i>=0; i--)
MacdBuf[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
for(i=limit-1; i>=0; i--)
SignalBuf[i]=iMAOnArray(MacdBuf,0,SignalSMA,0,MODE_SMA,i);
for(i=limit-1; i>=0; i--)
HGBuf[i]=MacdBuf[i]-SignalBuf[i];
return(0);
}
2010/04/04 17:57
37_50 恋多労さん
takechanさん
貴重なお時間をありがとうございました。
EMAなど検索して調べ、MACDの意義みたいなのも納得しました。
早速、やってみようと思ったのですが、
日本語だけ、コピー&ペーストできず、手入力してもダメで、
うまくいきませんでした。
入力まで訊くのも申し訳ありませんが、もう少しご指南
お願いいたします。
貴重なお時間をありがとうございました。
EMAなど検索して調べ、MACDの意義みたいなのも納得しました。
早速、やってみようと思ったのですが、
日本語だけ、コピー&ペーストできず、手入力してもダメで、
うまくいきませんでした。
入力まで訊くのも申し訳ありませんが、もう少しご指南
お願いいたします。
2010/04/05 01:36
前の10件 | 1 | 2 | 3 | 4 | 5 | 次の10件
スレッド検索


natumi
[02/04 12:55更新]
良ければポンっとお願いします ↓↓↓ 為替ブログ FX 女性投資家 30日(月)…-36.1pips 31日(火)…+10pips 1日(水)…+10pips 2日(木)…+10pips ちょっとづつ回復させ...



Mihawkfx(ミホークエフエックス)
[02/01 05:51更新]
デイトレ派のバナー・右プロフ画像下のバナーの応援クリックお願いします! 応援クリックをよろしくお願いします。 モチベーション維持や更新頻度・ブログレベルにかかわります。 ...





















