İş tamamlandı
İş Gereklilikleri
help me create an expert advisor with the iRSIonarray indicator. Here is the indicator's mql4 code:
//+------------------------------------------------------------------+
//| iRSIONARRAY.mq4 |
//| Copyright 2019, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 2
#property indicator_plots 1
#property indicator_level1 30.0
#property indicator_level2 70.0
#property indicator_levelcolor clrRed
#property indicator_levelstyle STYLE_DOT
//--- plot RSIOnArray
#property indicator_label1 "RSIOnArray"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrBlack
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- indicator buffers
double RSIOnArrayBuffer[];
double OSMABuffer[];
input int BarsToCompute = 1000000;
input int OSMAFastPer = 12, OSMASlowPer = 26, OSMASignalPer = 9;
input int RSIPer = 14;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,RSIOnArrayBuffer);
SetIndexBuffer(1,OSMABuffer);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int limit = MathMin(BarsToCompute,MathMin(rates_total-1,rates_total-prev_calculated));
for (int i=limit; i>=0; i--)
{
OSMABuffer[i] = iOsMA(_Symbol,_Period,OSMAFastPer,OSMASlowPer,OSMASignalPer,PRICE_CLOSE,i);
RSIOnArrayBuffer[i] = iRSIOnArray(OSMABuffer,0,RSIPer,i);
}
return(rates_total);
}
//+------------------------------------------------------------------+
Take profit = 30
Stop loss = 20
The lot = 0.01
We will use for the positions taken the RSI curve of the indicator above.
Checklist for buying:
- H4, RSI> 70
- M30, RSI make a first peak on the line of 70 then a first trough on the line of 30
- H4, RSI is always> 70
- Position statement in M30.
Note:
- Do not take a long position if in step 4 the RSI < 70
- The checklist is valid if RSI > 70 in step 1 and 2 at the same time.
Checklist for selling:
- H4, RSI <30
- M30, RSI make a first dip on the line of 30 then a first vertex on the line of 70
- H4, RSI is always <30
- Position statement in M30.
Note:
- Do not take a short position if in step 4 the RSI > 30
- The checklist is valid if RSI < 30 in step 1 and 2 at the same time.
Do not forget to put the function that allows you to perform the backtest.
Thank you