RSIインジケータEA
RSIインジケータを使用したEAです。RSI指標を監視しながら自動取引を実行します。
パラメータのデフォルトの設定は、
① RSI値が30以下で成行買い注文実行。
② 買い注文がある状態の時、RSI値が60以上になったら決済。
③ RSI値が70以上で成行売り注文実行。
④ 売り注文がある状態の時、RSI値が40以下になったら決済。
⑤ 計算期間は14期間。
パラメータのデフォルト設定は、通常の日足チャート用に設定していますが、取引通貨ペアや時間軸によって設定を変更した方が良いので、ストラテジーテスターのシミュレーション機能を使っていろいろ検討してみてください。
コード
// RSIインジケータのEA
#property strict
extern double lots = 0.01; // ロット数
extern int magic = 1001; // マジックナンバー
extern int period = 14; // RSIの計算期間
extern int buy = 30; // 指標以下で買い注文
extern int buy_close = 60; // 指標以上で買い注文の決済
extern int sell = 70; // 指標以上で売り注文
extern int sell_close = 40; // 指標以下で売り注文の決済
int slippagePips = 3; // スリッページを3Pipsに設定
int slippagePoint; // スリッページの単位をPipsからPointへ変換した変数
double PipsPerCunit; // 1Pipsあたり各国通貨単位に変換する係数
int i, j, ticket, type; // i,j:計数用の変数, ticket:チケットNoの変数, type:買い注文or売り注文のタイプ
bool tf; // true or false
void OnInit() {
int coe = 1; // 2,4桁表示業者の場合の係数は「1」
if(_Digits == 3 || _Digits == 5) { // 3,5桁表示業者の場合の係数は「10」
coe = 10;
}
PipsPerCunit = _Point * coe; //1Pipsあたりを各国通貨単位に変換する係数
slippagePoint = slippagePips * coe; //スリッページの単位をPipsからPointへ変換
}
void OnDeinit(const int reason) { //終了処理
ObjectsDeleteAll(); // オブジェクトテキストをEA削除時消すための処理
}
void OnTick() { //レート変動毎の処理
// 既に注文されているかチェック。無しの時、ticket=-1。
ticket = -1;
for(j=0; j < OrdersTotal(); j++) {
if(OrderSelect(j, SELECT_BY_POS) == false) {
break;
}
if(magic == OrderMagicNumber() && OrderSymbol() == _Symbol) {
ticket = OrderTicket();
type = OrderType();
break;
}
}
double RSI = iRSI(NULL, 0, period, 0, 0);
// 現在、注文が成立していなくて、条件が合えば注文実行
if(ticket == -1) {
if(RSI <= buy) {
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippagePoint, 0, 0, "買い注文", magic, 0, clrNONE); // 買い注文
} else if(RSI >= sell) {
ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, slippagePoint, 0, 0, "売り注文", magic, 0, clrNONE); // 売り注文
}
// 現在、注文が成立していて、条件が合えば決済実行
} else {
if(RSI >= buy_close && type == OP_BUY) {
tf = OrderClose(ticket, lots, Bid, slippagePoint);
}else if(RSI <= sell_close && type == OP_SELL) {
tf = OrderClose(ticket, lots, Ask, slippagePoint);
}
}
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
ストラテジーテスターを使って次の条件でシミュレーションした結果です。パラメータの設定はデフォルトです。
取引内容
レポート
※ストラテジーテスターによるシミュレーション結果は、保存されているヒストリカルデータや現在のスワップによって異なってきます。