・・と言いたいところですが、その前に1つお約束事があります。
本ブログ内のEA関係の記事は、注文クラスと呼んでいるクラスを使用しています。
「クラス」とは何かという説明はひとまず置いといて、EAを作成するのに必要なソースファイルがあるとだけ理解しておいてください。
ファイルの内容はこちらで公開しています。
http://mt4program.blogspot.jp/2016/04/mt4_57.html
必要なファイルは以下の2つです。
上記の記事のコードをそのままコピーし、Include/Customフォルダの下にそれぞれのファイル名で保存してください。
・TradingWrapper.mqh
・TradingDefines.mqh
準備ができたら、EAのコードを次のように変更します。
//+------------------------------------------------------------------+
//| Sample1.mq4 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#include <Custom/TradingWrapper.mqh>
input int MagicNumber = 37858260; //マジックナンバー 他のEAと当らない値を使用する。
input int MaxPosition = 1; //最大ポジション数
input double SpreadFilter = 2; //最大スプレット値(PIPS)
// トレード補助クラス
CTradingWrapper m_wrapper(Symbol(), MagicNumber, MaxPosition, SpreadFilter);
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
コードを変更したら、メタエディターの[コンパイル]ボタンをクリックしてみましょう。
・図015.01 コンパイルボタン
メタエディター左下の[エラー]欄に赤いびっくりマークのエラーが出た場合は、上記のファイル内容やファイル名、保存先が正しいか、または変更したコードが正しいかどうかを確認してください。
エラーが出なければ正しく準備が完了していることになりますので、先へ進みます。
ここまでではまだ取引は一切行われませんので、引き続き次のように実際に取引するコードを追加しましょう。
//+------------------------------------------------------------------+
//| Sample1.mq4 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#include <Custom/TradingWrapper.mqh>
input int MagicNumber = 37858260; //マジックナンバー 他のEAと当らない値を使用する。
input int MaxPosition = 1; //最大ポジション数
input double SpreadFilter = 2; //最大スプレット値(PIPS)
input double Lot = 0.02; //売買ロット
input uint Slippage = 2; //許容スリップページ(pips)
input uint StopLoss = 200; //ストップロス
input uint TakeProfit = 200; //利益確定
// トレード補助クラス
CTradingWrapper m_wrapper(Symbol(), MagicNumber, MaxPosition, SpreadFilter);
int counter = 0;
bool isBuy = true;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
string symbol = Symbol();
static ENUM_TIMEFRAMES target = PERIOD_H1;
static datetime before = 0;
// 1時間の確定足でのみ動作
datetime current = iTime(symbol, target, 0);
if( before == current )
{
return ;
}
before = current;
counter++;
if ( counter < 5 )
{
// 5本に1回しか処理しない
return;
}
// カウンターをリセット
counter = 0;
m_wrapper.RefreshPositions();
bool hasPosition = ( m_wrapper.GetPositionCount() > 0 );
if ( !hasPosition )
{
// ポジションを保持していなければ注文する
int orderCmd = ( isBuy ? OP_BUY : OP_SELL );
m_wrapper.SendOrder( orderCmd, Lot, 0, Slippage, StopLoss, TakeProfit );
// 売/買を反転
isBuy = !isBuy;
}
else
{
// ポジションを保持していれば決済する
m_wrapper.CloseOrder( 0, Slippage );
}
}
//+------------------------------------------------------------------+
先ほどと同様にコンパイルを行い、エラーが出ないことを確認してください。
内容としては、5時間ごとに、買い→決済→売り→決済→買い→・・・と取引を繰り返すだけです。
コードの説明は後ほどしたいと思いますので、まずは結果を見てみましょう。
長くなりましたので、続きは次回に。
次の回へ
「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧
Twitterもよろしくお願いします。
https://twitter.com/mt4program
ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 |
お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。