MT4で時間を指定するにはどのようにすれば良いでしょうか。
例えば、取引を日本時間で午前9時から午後3時の間に指定して、午後3時の時点で建て玉があった場合は手仕舞いできるようにしたいのです。
MT4付属EAの、MACD Sampleで時間指定する場合は、どのようなプログラムをどの位置に書けば良いのでしょうか。
時間指定をいろいろ変えてバックテストを行ってみたいと思っています。
プログラムは、トレードスタジアムで少しやった程度ですので、MT4のプログラムは初心者のレベルです。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
回答が大変遅くなってごめんなさい。
実は、私も悩んでいました。
MACDのサンプルプログラムを下の方までよく読んでみると、マジックナンバーが16384となっているので、これに統一しなければ決済されません。
よって、私が書いた最初の部分で、
# define MAGIC 0001
という部分を、
# define MAGIC 16384
としていただければ、うまくいくかと思います。
一時やってみてください。
再度のご回答ありがとうございます。
ご指示のようにマジックナンバーを統一し、5・15・30・60分足でバックテストしたところ、無事に9時から15時の間に取引を行い、ポジションが残ったら15時にクローズすることができました。
この時間制限を使用して、いろいろな条件でバックテストしてみようと思っています。
ちなみにUSDJPNの5分足で2009年10月から2010年1月までをバックテストしましたらきれいな右肩下がりのグラフになりました。ひょっとして売りと買いを逆にすれば良いのかと思いました。
MT4のEAは、まだまだ理解が足りませんのでこれからも勉強していきたいと思っています。
今回は、ご親切に教えて頂き有難うございました。感謝しております。
No.1
- 回答日時:
当方のメタトレーダーの調子が悪く、きちんと実験できませんでしたが、おおよそ、以下のような感じでいかがでしょうか。
このプログラムでは、あくまでも、チャート上の時刻(サーバーの時刻)が基準になります。日本時間とは必ずしも一致しないので、ご注意ください。
int init()
{
return(0);
}
int deinit()
{
return(0);
}
#define MAGIC 0001
//外部パラメーター
extern double TakeProfit = 50;
extern double Lots = 0.1;
extern int Slip = 3;
extern double TrailingStop = 30;
extern double MACDOpenLevel=3;
extern double MACDCloseLevel=2;
extern double MATrendPeriod=26;
extern int StartTime = 9;//トレード開始時刻
extern int EndTime = 15;//トレード終了時刻
//ポジション決済関数
void ClosePos(int magic)
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS) == false) break;
if(OrderSymbol() != Symbol() || OrderMagicNumber() != magic) continue;
{
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slip,White);
break;
}
}
}
int start()
{
double MacdCurrent, MacdPrevious, SignalCurrent;
double SignalPrevious, MaCurrent, MaPrevious;
int cnt, ticket, total;
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0);
}
//トレード可否
if(IsTradeAllowed()==false) return(0);
//時間設定
int Jikoku=0;
int Ji = TimeHour(CurTime());
if(Ji>=StartTime && Ji<EndTime) Jikoku=1;
else Jikoku=0;
if(Jikoku==0)
{
ClosePos(MAGIC);
return(0);
}
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
total=OrdersTotal();
if(total<1)
以下、サンプル通り。
この回答への補足
プログラムを見直し、USDJPNの15分足で同じ期間でバックテストしてみました。
取引回数は44回あり、新規の注文は9時から15時の間に行われていますが、決済は15時を過ぎることが多々あります。(時間はチャート時間を使用)
15時までにポジションが残っていた時に、15時で決済されないようです。どのようにすれば15時で決済されるのでしょうか。
もう一度教えていただけないでしょうか。よろしくお願いします。
早速のご回答ありがとうございます。
チャートの時刻と日本時間のずれを考慮して設定すれば良いのですね。
上記のとうりにEAを作り、2009年10月から今年1月末迄でバックテストを行いました。
時間はチャートの時刻で9時から15時にしてみました。USDJPNの1分足です。
結果を見ますと、15時に手仕舞いしないで翌営業日に持ち越すものがあります。そして翌営業日に持ち越すものは負けが多いようです。
しかし、当日に手仕舞いするものは、すべて勝っています。
エントリー回数が意外と少ないようです。(4ヶ月間で8回)
まだ、詳しく見直していませんので、見直しを行いいろいろな時間設定でも検証したいと思っています。
詳しいプログラムを教えて頂き大変助かりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数字に強い方お願いします。 先...
-
ソロスチャートが公開されてる...
-
FXの損切り、ロスカットについて
-
FXのマイルールについて なかな...
-
fxの確定申告について
-
FXってがんばればモノになりま...
-
積み立てFXされてるかたいますか
-
FXはギャンブルだと思ってるん...
-
ユーロを円に交換したい
-
投資に勝つ方法は低レバに限り...
-
一時払いドル建て定期預金をし...
-
今夜のfomcについて 何%の利下...
-
FXの円キャリートレードのいわ...
-
海外から出金したいのですが、...
-
FXのスキャルピングって抵抗線...
-
日本でドルを保有し、そのまま...
-
fx で利益が出ている場合、確定...
-
外貨建ての取引をしたあと予約...
-
FX トルコ円について
-
ユーロ紙幣、米ドル紙幣 の活用
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2回戦止まりは2回戦は勝ってい...
-
mql4のコンパイルエラー箇所の...
-
MT4で取引時間を指定する。
-
MT4で時間を指定するにはどのよ...
-
MT4のEAで通貨ペア毎に最...
-
ポジションを同時に2個持つの...
-
MT4によるバックテストの信頼性...
-
MT4のSidus v.2のプログラムを...
-
トレーディングストップは利用...
-
ストップラインが82.454より高...
-
MT4(メタトレーダー)で単純...
-
Tera Termが途中で切れるのです...
-
遠藤さくらと言う人が、毎日100...
-
FXの日足時系列データをダウン...
-
メタトレーダー MT4について
-
メタトレーダーでのヒストリー...
-
ボリンジャーバンドのアラート
-
【MQL4】ZigZagの天底の値の取得
-
MT4のオーダー発注インジケーター
-
バックテストする期間はどれく...
おすすめ情報