RSIが70以上か30未満で逆張りトレードするEA
RSIが70以上か30未満で逆張りトレードするEAを作成したいと思います。
メタエディタ(MetaEditor)を立ち上げる
メタエディタ(MetaEditor)を立ち上げましょう。今回は名前を「RSI-7030」で作成します。
パラメーターを記述する
パラメーターを記述しましょう。
input int TakeProfit = 5;//利確(pips)。 input double Lots = 0.01;//ロット数 input int MagicNumber = 12345;//マジックナンバー
Copy
OnTick()関数を記述する
OnTick()関数を記述しましょう。
まず、OrdersTotal()でポジションが0なのを確認してRSIが30以下の場合という条件にします。
if(iRSI(Symbol(),0,14,PRICE_CLOSE,0) < 30 && OrdersTotal() == 0)
条件を満たしていればロングのポジションを持ちます。
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point*10,"Order Long",MagicNumber,0,Lime);
ショートエントリーも同様にOrdersTotal()でポジションが0なのを確認して70以上の場合という条件にします。
if(iRSI(Symbol(),0,14,PRICE_CLOSE,0) > 70 && OrdersTotal() == 0)
条件が満たされていればショートのポジションを持ちます。
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point*10,"Order Short",MagicNumber,0,Red);
これでOnTick()関数は完了です。
if(iRSI(Symbol(),0,14,PRICE_CLOSE,0) < 30 && OrdersTotal() == 0) //RSIが30以下でオーダーが0の時
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point*10,"Order Long",MagicNumber,0,Lime);
}
if(iRSI(Symbol(),0,14,PRICE_CLOSE,0) > 70 && OrdersTotal() == 0)//RSIが70以上でオーダーが0の時
{
TOrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point*10,"Order Short",MagicNumber,0,Red);
}
}Copy
ソースコード全体
//+------------------------------------------------------------------+
//| RSI-7030.mq4 |
//| Copyright 2020, FX-EA System Project Creator |
//| https://creator.fx-ea-system-project.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, FX-EA System Project Creator"
#property link "https://creator.fx-ea-system-project.com/"
#property version "1.00"
#property strict
/*パラメーター*/
input int TakeProfit = 5;//利確(pips)。
input double Lots = 0.01;//ロット数
input int MagicNumber = 12345;//マジックナンバー
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
if(iRSI(Symbol(),0,14,PRICE_CLOSE,0) < 30 && OrdersTotal() == 0) //RSIが30以下でオーダーが0の時
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point*10,"Order Long",MagicNumber,0,Lime);
}
if(iRSI(Symbol(),0,14,PRICE_CLOSE,0) > 70 && OrdersTotal() == 0)//RSIが70以上でオーダーが0の時
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point*10,"Order Short",MagicNumber,0,Red);
}
}
//+------------------------------------------------------------------+Copy






コメント