朝スキャEAの作り方とソースコードをコメント付きで解説
FX取引で、朝の市場を手中に収めたいあなたへ。「朝スキャEA」こそが、そのための鍵となります。
この記事では、「朝スキャEA」をどうやって作るのか、初心者でも理解できるように説明します。
また勉強方法も紹介してるので最後までご覧いただければ幸いです。
成功への第一歩、ここから踏み出しましょう。
FXの朝の市場で利益を上げたいんだけど、具体的に何をすればいいの?
それなら「朝スキャEA」を試してみるのはどうかな?それの作り方を知りたい?
え、それって何?どうやって作るの?
OANDAで簡単な例を紹介していたから何をしているのか説明するね!
朝スキャEAの作り方
まず朝スキャとはなんなの?っていう人もいると思うから超簡単に説明すると、
作り方についてはOANDAのサイトで掲載していたので少しかみ砕いて紹介します。
OANDAで紹介されている朝スキャEAの作り方
記事本文でも紹介されていますが、時間制限とRSIだけ設定されているロジックの様です
それぞれ簡単にコメントを付けると以下のようになります。
// Expert Advisor (EA) のプロパティを定義します。
#property copyright "Copyright(C) 2023, OANDA"
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
// EAのパラメータを入力します。
input int MAGICMA = 23498721; // マジックナンバー:このEAによる取引を区別するための識別子です。
input double Lots =0.01; // ロット数:取引のサイズを定義します(1ロットは十万通貨単位)。
input int Slippage = 4; // スリッページ:許容する最大の価格変動(ピプス)。
input double MaxSpread = 5; // 最大スプレッド:このスプレッド以上ではエントリーを見送ります。
input double TakeProfit = 10.0; // 利益確定幅:利益確定を行うための価格差(ピプス)。
input double LossCut = 20.0; // 損切り確定幅:損切りを行うための価格差(ピプス)。
input int RSIPeriod=6; // RSIの計算期間。
input ENUM_APPLIED_PRICE RSIAppliedPrice = PRICE_CLOSE; // RSIの計算に使用する価格タイプ(終値、始値など)。
input int UpLine = 85; // RSIの上限ライン。
input int DownLine = 25; // RSIの下限ライン。
input int TradeTime = 0; // トレードを行う時間(24時間制)。
double dSpread; // スプレッドを格納する変数。
int OnInit()
{
// EAの初期化時に行う処理を書きます。
// 今回のEAでは特に初期化時に行う処理はありません。
return(INIT_SUCCEEDED);
}
void OnTick()
{
// スプレッドを計算します。
dSpread = (Ask - Bid) / (Point * 10);
// 現在のオーダーが0で、スプレッドが最大スプレッド以下の場合にのみトレードを考慮します。
if(CalculateCurrentOrders()==0 && dSpread < MaxSpread) CheckForOpen();
}
void CheckForOpen()
{
int res;
// RSIを計算します。
double RSI = iRSI(Symbol(), 0, RSIPeriod, RSIAppliedPrice, 1);
// 指定された時間でのトレードを検討します。
if(TradeTime == TimeHour(Time[1]))
{
// RSIが下限ラインよりも低い場合、買い注文を出します。
if(RSI < DownLine)
{
res=OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Bid - LossCut * Point * 10, Ask + TakeProfit * Point * 10,"", MAGICMA, 0, Red);
}
// RSIが上限ラインよりも高い場合、売り注文を出します。
if(RSI > UpLine)
{
res=OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Ask + LossCut * Point * 10, Bid - TakeProfit * Point * 10, "", MAGICMA, 0, Blue);
}
}
}
int CalculateCurrentOrders()
{
int positions = 0;
// すべてのオーダーを調査し、このEAによる現行のオーダー数を計算します。
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
positions++;
}
}
return positions;
}
下記はOANDAの引用元の記事サイトになります
朝スキャEAの基本設定
RSI(Relative Strength Index、相対力指数)は、トレーダーが頻繁に使用するテクニカル指標の一つです。
それでは、RSIを活用したシンプルなMQL4のExpert Advisor (EA)の作成について解説しますね!
最初にEAの基本情報を設定します。以下のプロパティを定義します。
#property copyright "Copyright(C) 2023, OANDA"
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
取引パラメータの設定
次に、EAの動作に必要なパラメータを設定します。
これらのパラメータはEAの動作に大きな影響を与えます。
input int MAGICMA = 23498721; // マジックナンバー:このEAによる取引を区別するための識別子です。
input double Lots =0.01; // ロット数:取引のサイズを定義します(1ロットは十万通貨単位)。
input int Slippage = 4; // スリッページ:許容する最大の価格変動(ピプス)。
input double MaxSpread = 5; // 最大スプレッド:このスプレッド以上ではエントリーを見送ります。
input double TakeProfit = 10.0; // 利益確定幅:利益確定を行うための価格差(ピプス)。
input double LossCut = 20.0; // 損切り確定幅:損切りを行うための価格差(ピプス)。
input int RSIPeriod=6; // RSIの計算期間。
input ENUM_APPLIED_PRICE RSIAppliedPrice = PRICE_CLOSE; // RSIの計算に使用する価格タイプ(終値、始値など)。
input int UpLine = 85; // RSIの上限ライン。
input int DownLine = 25; // RSIの下限ライン。
input int TradeTime = 0; // トレードを行う時間(24時間制)
EAの設定をする時みんなも見るところだね!
ここで表示してたり非表示にしたりできるよ!
主要な動作
OnTick()
関数は、新たな価格情報が到着するたびに呼び出されます。
ここでは、現在のスプレッドを計算し、条件が揃っている場合にのみ取引を実行します。
void OnTick()
{
dSpread = (Ask - Bid) / (Point * 10);
if(CalculateCurrentOrders()==0 && dSpread < MaxSpread) CheckForOpen();
}
AskとかBidって聞いたことある人もいるよね!
トレード条件のチェック
CheckForOpen()
関数では、RSIを計算し、定められた時間にRSIが一定の閾値を超えた場合に取引を実行します。
void CheckForOpen()
{
int res;
double RSI = iRSI(Symbol(), 0, RSIPeriod, RSIAppliedPrice, 1);
if(TradeTime == TimeHour(Time[1]))
{
if(RSI < DownLine)
{
res=OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Bid - LossCut * Point * 10, Ask + TakeProfit * Point * 10,"", MAGICMA, 0, Red);
}
if(RSI > UpLine)
{
res=OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Ask + LossCut * Point * 10, Bid - TakeProfit * Point * 10, "", MAGICMA, 0, Blue);
}
}
}
既存のオーダー計算
CalculateCurrentOrders()
関数では、現行のオーダー数を計算します。
この数が0であることが、新たな取引の条件の一つとなります。
int CalculateCurrentOrders()
{
int positions = 0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
positions++;
}
}
return positions;
}
このように、このEAはRSIの値とスプレッドを見て取引のタイミングを判断します。
条件が揃うと、購入または売却の注文を出します。
取引の基本的なパラメータは設定可能で、取引のサイズやスリッページ、利益確定と損切りのレベルなどを調整することができます。
上記はほんの一部でロジックなんかを盛り込んでいくと数千行なんかいったりしちゃうよ・・
朝スキャEAを作りたいけど何から勉強したらいいのか
朝スキャEAに限らずMT4で作成されるEAはMQL4(MetaQuotes Language 4)という言語が使用されています。
もしあなたが朝スキャEAを作成したい場合、まずMQL4というプログラミング言語から学び始めることが一つの良いステップになります。
MQL4は取引プラットフォーム「MetaTrader 4」のために設計された言語で、FXやCFDなどの金融取引の自動化に使用されます。
MQL4はC++と似ていますが、取引と金融市場分析専用の特別な関数が用意されている点が特徴的です。
そのため、C++やそれに似た言語(例えば、C、Java、JavaScript)を知っていると、MQL4の学習はスムーズに進むでしょう。
しかし、金融市場の動きや取引の仕組みについての基本的な理解も必要です。
そのため、MQL4の学習を始める前に、FX取引の基本や市場分析についても学んでおくと良いでしょう。
MQL4を学ぶためには、公式ドキュメンテーション、オンラインチュートリアル、コミュニティフォーラムなどのリソースがあります。
これらを活用して、MQL4の基本構文、関数、そしてEAの作成方法を学んでみてください。
よくある質問
「朝スキャEA」を使う最適な時間帯は何時ですか?
「朝スキャ」は日本の金融市場が開始する前の時間帯、つまり朝の7時から9時頃が一般的に最適な時間帯とされています。
この時間帯は欧米市場が閉じ、アジア市場が開くため、大きな価格変動が起きやすい時間帯です。
自分で「朝スキャEA」を作るのは難しいですか?
それはあなたのプログラミングスキルや金融市場に関する知識によります。
基本的なプログラミングスキル(特にC++やその派生言語)とFX取引の基本的な知識があれば、MQL4でEAを作成するのは可能です。
しかし、効果的な取引ロジックを作るには時間と経験が必要です。
「朝スキャEA」の効果を最大化するためのアドバイスはありますか?
朝スキャEAの効果を最大化するためには、以下のポイントが考えられます。
1つ目は、EAのパラメータを最適化すること。
これは市場環境に合わせてEAのパラメータ(例えば、利益確定幅や損切り幅など)を調整することを指します。
2つ目は、EAのパフォーマンスを定期的に評価し、必要に応じて更新することです。
「朝スキャEA」を使ったトレーディングで注意すべきポイントは何ですか?
一つはスリッページです。朝スキャEAは市場の高ボラティリティを利用するため、スリッページが大きくなりやすいです。
また、EAの損益管理をしっかり行うことも重要です。
自動取引は便利ですが、適切な損切り設定やリスク管理を怠ると大きな損失を招く可能性があります。