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
コメント