Знает ли кто-нибудь как применить iMA к индикатору iRSI в написании советника? (т.е. приведите пожалуйста пример как это сделать).
- iMA с "First Indicator's Data"
- Советники: iMA based on iRSI
- Советники: Day iRSI Current iMA
INFINITEITH >>:
Знает ли кто-нибудь как применить iMA к индикатору iRSI в написании советника? (т.е. приведите пожалуйста пример как это сделать).
Знает ли кто-нибудь как применить iMA к индикатору iRSI в написании советника? (т.е. приведите пожалуйста пример как это сделать).
образец:
#property copyright "leonid553 & co" #property link "http://www.tradersforum.net.ru/" //---- input parameters--------- extern int MagicLong=5675; extern int MagicShort=8976; extern bool Long =true; extern bool Short =true; extern string _____= "Параметры бай- позиций"; extern int RSI_period =20; extern int MA_period =21; extern int TP=200; extern int SL=61; extern int lMinProfit = 53;//порог начала работы трала extern int lTrailingStop = 53;//размер трала extern int lTrailingStep = 5;//шаг трала extern string ____= "Параметры селл- позиций"; extern int RSI_period_SELL =20; extern int MA_period_SELL =21; extern int TP_=200; extern int SL_=61; extern int sMinProfit = 53; extern int sTrailingStop = 53; extern int sTrailingStep = 5; //------------------------------ extern string ______= "Общие Параметры "; extern double Lot=0.1; extern int Slippage=3; extern bool UseTrailing = true;//трейлинг стоп //------------------- int ExpertBars; int ticket; int init() {ExpertBars = Bars; return(0); } //+------------------------------------------------------------------+ int start() { bool isNewBar=false; if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; } if (isNewBar) { //если появился новый бар //===== Ищем возможность войти в рынок ====================== if (Long) { //если "выключатель" включен if (!ExpertOrder( MagicLong ))//если нет открытых БАЙ позиций { //------заполняем массив значениями RSI для БАЙ позиций double RSI_array_buy[50];int j=0; while (j<50) { RSI_array_buy[j]= iRSI(NULL, 0, RSI_period, MODE_SMA, j); j++; }//вешаем ма на рси ArraySetAsSeries(RSI_array_buy,true); double MA_low =iMAOnArray(RSI_array_buy,0,MA_period,1,MODE_SMA,0); double RSI_0=iRSI(NULL, 0, RSI_period,MODE_SMA, 1); double RSI_1=iRSI(NULL, 0, RSI_period,MODE_SMA, 2); //---------проверяем условие на покупку---------------------- if ( (RSI_1<MA_low) && (RSI_0>MA_low) ) { ticket=OrderSend(Symbol(),0,Lot,Ask,Slippage,Bid-SL*Point,Ask+TP*Point,NULL,MagicLong,0,CLR_NONE); if (ticket<0) { Print("Ошибка открытия ордера BUY #", GetLastError()); return (0); } } }} //-------------------------------------------------------------- if (Short) { //если "выключатель" включен if (!ExpertOrder( MagicShort ))//если нет открытых СЕЛЛ позиций { // ---заполняем массив значениями Stochastic для СЕЛЛ позиций ------------- double RSI_array_sell[50];int k=0; while (k<50) { RSI_array_sell[k]= iRSI(NULL, 0,RSI_period_SELL, MODE_SMA, k); k++; }//вешаем ма на рси ArraySetAsSeries(RSI_array_sell,true); double MA_up =iMAOnArray(RSI_array_sell,0, MA_period_SELL ,1,MODE_SMA,0); double RSI_0s=iRSI(NULL, 0, RSI_period_SELL,MODE_SMA, 1); double RSI_1s=iRSI(NULL, 0, RSI_period_SELL,MODE_SMA,2); //--------проверяем условие на продажу------------------------------ if ( (RSI_1s > MA_up ) && (RSI_0s < MA_up )) { ticket=OrderSend(Symbol(),1,Lot,Bid,Slippage,Bid+SL_*Point,Bid-TP_*Point,NULL,MagicShort,0,CLR_NONE); if (ticket<0) { Print("Ошибка открытия ордера SELL #", GetLastError()); return (0); } } }} //------------------------------------------------------------------ if (UseTrailing) TrailPositions(); //---- } //isNewBar return(0); } //конец функции СТАРТ //+------------------------------------------------------------------+ void TrailPositions() { int Orders = OrdersTotal(); for (int i=0; i<Orders; i++) { if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue; if (OrderSymbol() != Symbol()) continue; if (OrderType() == OP_BUY) { if (Bid-OrderOpenPrice() > lMinProfit*Point) { if (OrderStopLoss() < Bid-(lTrailingStop+lTrailingStep-1)*Point) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid-lTrailingStop*Point, OrderTakeProfit(), 0, Blue); }} } if (OrderType() == OP_SELL) { if (OrderOpenPrice()-Ask > sMinProfit*Point) { if (OrderStopLoss() > Ask+(sTrailingStop+sTrailingStep-1)*Point || OrderStopLoss() == 0) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask+sTrailingStop*Point, OrderTakeProfit(), 0, Blue); }}}}} //---- Функция проверки наличия ордеров эксперта --+ //----------------------------------------------------------------- // false - ордеров данного эксперта нет; | // true - есть ордера данного эксперта; | //-------------------------------------------------------------------+ bool ExpertOrder (int VersionID){ bool result=false; int _OrdersTotal=OrdersTotal(); if (_OrdersTotal>0) { for (int v=0; v<_OrdersTotal; v++) { if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) { if (OrderMagicNumber()==VersionID) { result=true; break; } //Найден ордер принадлежащий эксперту else { result=false; } } } } else { result=false; } //--------------------- return(result); }
rid:
образец:
а как сделать что-бы при тестировании ма отображалась на графике
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь