Группа "Стол заказов MQL"

Рейтинг 2153



РЕКОМЕНДУЮ



Советник сеточник на основе RSI

Здравствуйте.Можно написать сеточник на RSI, чтобы каждый ордер в сетке открывался по индикатору.и в настройка цена и минимальное растояние, на каждый ордер проcтавлялось вручную.Минимум на10-15 ордеров.И трейлинг сетки.Спасибо. Прошу поручителя.
  • 0
  • Просмотров: 6217
  • 8 июня 2020, 14:20
  • vedenmak
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник на основе индикаторов SuperTrend и RSIchannel
Следующая запись в группе  
Советник полуавтомат
08 июня 2020
09 июня 2020

Брокер для ваших роботов, 15 лет на рынке

Комментарии (37)

+
0
Этот не устроит:
www.mql5.com/ru/code/20612
avatar

  20  alex30774 Сообщений: 778

  • 8 июня 2020, 16:22
+
0
примено такой, но смысл в том чтоб каждый следующий ордер в сетке открывалсятак же по RSI, но минимальное растояние и цену устанавлива сам.
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 8 июня 2020, 16:33
+
0
ищите поручителя
avatar

  35  AM2 Сообщений: 16443 - Андрей

  • 8 июня 2020, 17:44
+
+1
Люди добрые, поручитесь, мы сами не местные…
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 8 июня 2020, 18:00
+
0
посмотрите в базе. я там делал усреднители на рси
avatar

  35  AM2 Сообщений: 16443 - Андрей

  • 8 июня 2020, 19:54
+
0
нет, такого не нашел. я давно ищу с такими настройками. подскажите как поручителя найти, я тут новенький.
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 9 июня 2020, 17:41
+
0
Ваша фраза: «очень надо». предполагает две отправные изначальные точки:
Вариант 1. Я торгую по этой стратегии не один день вручную, у меня все
получается и я зарабатываю. Но не всегда нахожусь возле компа и
пропускаю сделки.
Нужен советник для авто торговли. Тогда его можно будет
использовать на нескольких парах и зарабатывать еще больше!

— Тогда обратитесь к платному программисту и вам за час напишут советника.

Вариант 2.ХОЧУ попробовать такую стратегию. Но руками торговать лень, а
советник за две минуты в тестере прогонит кучу вариантов.
Искать в базе www.mql5.com/ru/ тоже лень (там к стати более 1000
вариантов разных советников, и это только на русском языке).
Гугл тоже не айс.
Искать в местной базе долго.
Изучать язык программирования неохота.
Ждать неделю для набора статуса — не терпится.
Пускай кто то другой потратит свое время и напишет мне мою ХОТЕЛКУ.
Я склоняюсь к Варианту 2.
Но это все лирика.
Предоставьте во вторник скрины сделок и отчет по этой стратегии торгуя руками, покажите что она прибыльная и я вечером вам напишу бесплатно советник по этой стратегии.
avatar

  16  ssg Сообщений: 817

  • 12 июня 2020, 17:29
+
0
вариант 3. Хочу попробовать эту стратегию.Но руками торговать-это вообще не отходить от компа.В mq5 и местной базе есть что то подобное, но не то. И не только там.Неделей для набора статуса как я понял тут и не пахнет. Как и язык.И как я понимаю что Хотелки здесь пишут не по доброте душевной. А стратегия хоть и примитивная, нет её НИГДЕ. Поэтому подозреваю что она прибыльная. И это тоже лирика
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 12 июня 2020, 18:43
+
0
Статус набирается частотой посещений данного сайта.
Хотелки конечно пишутся не «по доброте душевной».
Андрей для нас пишет бесплатно, но ему деньги платят другие.
Кто умеет программировать у того своих идей куча.Чтобы их заинтересовать нужно платить или показать отчетами, что идея стоящая внимания.
У каждого обратившегося есть только один патрон в месяц.И отдавать «за просто так» этот патрон никто не будет.
Лично я обращаюсь только с той просьбой которую сам не смог осилить.

А в советнике на который ссылка есть все что Вам надо:
<code>if (RSI0>=level_buy && RSI1<=level_buy)//если индикатор в зоне
   {
      if ((MinOrderBuy-MinStep*Point>Ask || MinOrderBuy==0))//если нет позиций бай или есть но опустились ниже шага MinStep
      {
         Lots=NormalizeDouble(Lot*MathPow(K_Lot,b),DigitsLot);

         if (Lots>MAXLOT) Lots = MAXLOT;
         if (Lots<MINLOT) Lots = MINLOT;
      //открываем позицию бай
         if (OrderSend(Symbol(),OP_BUY, Lots,NormalizeDouble(Ask,Digits),slippage,0,0,NULL,Magic,0,CLR_NONE)==-1)
            Print("Ошибка ",GetLastError()," открытия ордера ");
         else TimeBar=iTime(NULL,timeframe_RSI,0);
      }
   }</code>


Аналогично с продажами.
И еще в помощь book.mql4.com/ru/appendix/examples, но это если Вы решили зарабатывать а не играть в форекс.
Мое предложение в силе. Будет хороший отчет за пару дней работы с меня бесплатный советник.
Сами хоть что то сделайте.
Редактирован: 12 июня 2020, 19:20
avatar

  16  ssg Сообщений: 817

  • 12 июня 2020, 18:50
+
0
*good* 
avatar

  12  Slava78 Сообщений: 598

  • 12 июня 2020, 19:24
+
0
этот советник и его модификации самые лучшие, из подобных.
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 12 июня 2020, 19:29
+
0
тогда в чем проблема?
Пользуйтесь бесплатно.
avatar

  16  ssg Сообщений: 817

  • 12 июня 2020, 19:32
+
0
Я этими советниками пользуюсь давно. И написал что надо.
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 12 июня 2020, 19:40
+
0
Тогда к чему все эти рассуждения и пожелания?
Чем не устраивает?
avatar

  16  ssg Сообщений: 817

  • 12 июня 2020, 19:44
+
0
Здравствуйте.Можно написать сеточник на RSI, чтобы каждый ордер в сетке открывался по индикатору.и в настройка цена и минимальное растояние, на каждый ордер проcтавлялось вручную.Минимум на10-15 ордеров.И трейлинг сетки.Спасибо. Прошу поручителя.
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 12 июня 2020, 19:47
+
0
это кажется немножко не то
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 12 июня 2020, 19:48
+
0
Конкретно — что не то?
avatar

  16  ssg Сообщений: 817

  • 12 июня 2020, 19:55
+
0
что бы в настройках на каждый ордер- цену и мин.шаг сетки, устанавливал в ручную
Редактирован: 12 июня 2020, 20:10
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 12 июня 2020, 20:03
+
0
Ничего не понял.пример?
Если человек не понял, то машина тем более не поймет.
Редактирован: 12 июня 2020, 20:17
avatar

  16  ssg Сообщений: 817

  • 12 июня 2020, 20:15
+
0
стартовый лот -0.1
1 ордер- лот 0.2 мин.степ 100
2ордер- лот 0.3 мин.степ 200
и так далее.в идеальном варианте добавить таймфрейм индикатора на каждый ордер.
Редактирован: 12 июня 2020, 20:31
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 12 июня 2020, 20:24
+
0
Пробуйте, но пользователь должен понимать что одновременный переход в зоны индикатора и шаг не линейны.Сделки будут очень редкие.
1 часть(весь код не входит)
//+------------------------------------------------------------------+
//|                            EA RSI Averange+ регулируемый шаг.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                               Copyright © 2018, Vladimir Hlystov |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, cmillion@narod.ru"
#property link      "cmillion@narod.ru"
#property version   "1.00"
#property strict
//-------------------------------------------------------------------
extern ENUM_TIMEFRAMES timeframe_RSI = 60;
extern int    period_RSI      = 14;
extern int    level_buy       = 30;
extern int    level_sell      = 70;
extern int    MinStep         = 100;
extern double K_step          = 2;
extern double Lot             = 0.1;
extern double K_Lot           = 1.5;
extern int    Takeprofit      = 50;
extern int    Magic           = 0;
extern int    DigitsLot       = 2;
extern int    slippage        = 3;
//-------------------------------------------------------------------
string AC;
double MINLOT,MAXLOT;
datetime TimeBar=0;
//-------------------------------------------------------------------
void OnTick()
{
   if (!IsTradeAllowed()) 
   {
      DrawLABEL("cm Торговля",1,5,20,Red,"Торговля запрещена");
      return;
   } 
   else DrawLABEL("cm Торговля",1,5,20,clrGreen,"Торговля разрешена");

   //---

   double STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   //---
   double MaxOrderBuy=0,MinOrderSell=0,MinOrderBuy=0,MaxOrderSell=0,OL=0,LB=0,LS=0,PB=0,PS=0;
   double OSL,OTP,OOP,SL,Profit=0,ProfitB=0,ProfitS=0;
   int i,b=0,s=0,tip;
   for (i=0; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      { 
         if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
         { 
            tip = OrderType(); 
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            OL = OrderLots();
            if (tip==OP_BUY)             
            {  
               PB += OOP*OL; LB+=OL;
               ProfitB+=OrderProfit()+OrderCommission()+OrderSwap();
               b++; 
               if (MaxOrderBuy < OOP || MaxOrderBuy==0) MaxOrderBuy = OOP;
               if (MinOrderBuy > OOP || MinOrderBuy==0) MinOrderBuy = OOP;
            }                                         
            if (tip==OP_SELL)        
            {
               PS += OOP*OL; LS+=OL;
               ProfitS+=OrderProfit()+OrderCommission()+OrderSwap();
               s++;
               if (MinOrderSell > OOP || MinOrderSell==0) MinOrderSell = OOP;
               if (MaxOrderSell < OOP || MaxOrderSell==0) MaxOrderSell = OOP;
            } 
         }
      }
   }
   //---
   Profit=ProfitB+ProfitS;
   double NLb=0,NLs=0;
   if (b>0) NLb = NormalizeDouble(PB/LB,Digits);
   if (s>0) NLs = NormalizeDouble(PS/LS,Digits);
   double TPB=0,TPS=0;
   if (b>0) TPB = NormalizeDouble(NLb+Takeprofit*Point,Digits);
   if (s>0) TPS = NormalizeDouble(NLs-Takeprofit*Point,Digits);
   //---

   if (b+s > 0) 
   {
      for (i=0; i<OrdersTotal(); i++)
      {    
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         { 
            if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
            { 
               tip = OrderType(); 
               OSL = NormalizeDouble(OrderStopLoss(),Digits);
               OTP = NormalizeDouble(OrderTakeProfit(),Digits);
               OOP = NormalizeDouble(OrderOpenPrice(),Digits);
               SL = OSL;
               if (tip==OP_BUY)             
               {  
                  if (TPB != OTP)
                  {  
                     if (!OrderModify(OrderTicket(),OOP,OSL,TPB,0,White)) Print("Error OrderModify TP Martin ",GetLastError());
                  }
               }                                         
               if (tip==OP_SELL)        
               {
                  if (TPS != OTP)
                  {  
                     if (!OrderModify(OrderTicket(),OOP,OSL,TPS,0,White)) Print("Error OrderModify TP Martin ",GetLastError());
                  }
               } 
            }
         }
      }
   }   
   
   double AB = AccountBalance();
   
   DrawLABEL("cm Balance"        ,1,5,35,clrGreen,DoubleToStr(AB,2));
   DrawLABEL("cm Equity"         ,1,5,50,clrGreen,DoubleToStr(AccountEquity(),2));
   DrawLABEL("cm FreeMargin"     ,1,5,65,clrGreen,DoubleToStr(AccountFreeMargin(),2));
   DrawLABEL("cm Take"           ,1,5,80,Color(Profit>0,clrGreen,clrRed),DoubleToStr(Profit,2));
   
   //---
   if (TimeBar==iTime(NULL,timeframe_RSI,0)) return;
   double Lots=0,RSI1=0,RSI0=0;

   //---
   if (b==0 || s==0)
   {
      RSI0= iRSI (NULL,timeframe_RSI,period_RSI,PRICE_CLOSE,0);
      RSI1= iRSI (NULL,timeframe_RSI,period_RSI,PRICE_CLOSE,1);
   }

   if (RSI0>=level_buy && RSI1<=level_buy)
   {
      if ((MinOrderBuy-NormalizeDouble(MinStep*MathPow(K_step,b),0)*Point>Ask || MinOrderBuy==0))
      {
         Lots=NormalizeDouble(Lot*MathPow(K_Lot,b),DigitsLot);

         if (Lots>MAXLOT) Lots = MAXLOT;
         if (Lots<MINLOT) Lots = MINLOT;
      
         if (OrderSend(Symbol(),OP_BUY, Lots,NormalizeDouble(Ask,Digits),slippage,0,0,NULL,Magic,0,CLR_NONE)==-1) 
            Print("Ошибка ",GetLastError()," открытия ордера ");
         else TimeBar=iTime(NULL,timeframe_RSI,0);
      }
   }

   //---
   Lots=0;
   if (RSI0<=level_sell && RSI1>=level_sell)
   {

      if (MaxOrderSell+NormalizeDouble(MinStep*MathPow(K_step,s),0)*Point<Bid)
      {
         Lots=NormalizeDouble(Lot*MathPow(K_Lot,s),DigitsLot);
   
         if (Lots>MAXLOT) Lots = MAXLOT;
         if (Lots<MINLOT) Lots = MINLOT;

         if (OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),slippage,0,0,NULL,Magic,0,CLR_NONE)==-1) 
            Print("Ошибка ",GetLastError()," открытия ордера ");
         else TimeBar=iTime(NULL,timeframe_RSI,0);
      }
   }
//-----
Comment(   "\nВСЕГО ОРДЕРОВ НА ПОКУПКУ ",b,
           "\nВСЕГО ЛОТОВ НА ПОКУПКУ ",LB, 
           "\nБЕЗУБЫТОК ОРДЕРОВ НА ПОКУПКУ ",NLb, 
           "\nПРОФИТ ОРДЕРОВ НА ПОКУПКУ ",TPB,
           "\n", 
           "\nВСЕГО ОРДЕРОВ НА ПРОДАЖУ ",s,
           "\nВСЕГО ЛОТОВ НА ПРОДАЖУ ",LS,
           "\nБЕЗУБЫТОК ОРДЕРОВ НА ПРОДАЖУ ",NLs, 
           "\nПРОФИТ ОРДЕРОВ НА ПРОДЖУ ",TPS,
           "\n",
           "\nТЕКУЩЕЕ ЗНАЧЕНИЕ РСИ,",NormalizeDouble(RSI0,0));
//-----   
return;
}
//------------------------------------------------------------------
avatar

  16  ssg Сообщений: 817

  • 12 июня 2020, 21:56
+
+1
2 часть идет сразу после первой.
Скопируете обе, затем компиляция.
//------------------------------------------------------------------
void OnDeinit(const int reason)
{
   if (!IsTesting()) 
   {
      ObjectsDeleteAll(0,"cm");
   }
}
//-------------------------------------------------------------------
void DrawLABEL(string name, int CORNER, int X, int Y, color clr, string Name,ENUM_ANCHOR_POINT ANCHOR=ANCHOR_RIGHT_UPPER)
{
   if (ObjectFind(name)!=-1) ObjectDelete(name);
   ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
   ObjectSet(name, OBJPROP_CORNER, CORNER);
   ObjectSet(name, OBJPROP_ANCHOR, ANCHOR);
   ObjectSet(name, OBJPROP_XDISTANCE, X);
   ObjectSet(name, OBJPROP_YDISTANCE, Y);
   ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
   ObjectSetText(name,Name,10,"Arial",clr);
}
//+------------------------------------------------------------------+
int OnInit()
{
   RectLabelCreate(0,"cm fon",0,195,15,195,85);
   DrawLABEL("cm Balance AC"        ,1,190,35,clrGreen,"Balance ",ANCHOR_LEFT_UPPER);
   DrawLABEL("cm Equity AC"         ,1,190,50,clrGreen,"Equity ",ANCHOR_LEFT_UPPER);
   DrawLABEL("cm FreeMargin AC"     ,1,190,65,clrGreen,"FMargin ",ANCHOR_LEFT_UPPER);
   DrawLABEL("cm Profit AC"         ,1,190,80,clrGreen,"Profit ",ANCHOR_LEFT_UPPER);
   MINLOT = MarketInfo(Symbol(),MODE_MINLOT);
   MAXLOT = MarketInfo(Symbol(),MODE_MAXLOT);
   Comment("Start ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
   AC = StringConcatenate(" ", AccountCurrency());
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
color Color(bool P,color a,color b)
{
   if (P) return(a);
   else return(b);
}
//------------------------------------------------------------------
bool RectLabelCreate(const long             chart_ID=0,               // ID графика
                     const string           name="RectLabel",         // имя метки
                     const int              sub_window=0,             // номер подокна
                     const long              x=0,                     // координата по оси X
                     const long              y=0,                     // координата по оси y
                     const int              width=50,                 // ширина
                     const int              height=18,                // высота
                     const color            back_clr=clrWhite,        // цвет фона
                     const color            clr=clrBlack,             // цвет плоской границы (Flat)
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // стиль плоской границы
                     const int              line_width=1,             // толщина плоской границы
                     const bool             back=false,               // на заднем плане
                     const bool             selection=false,          // выделить для перемещений
                     const bool             hidden=true,              // скрыт в списке объектов
                     const long             z_order=0)                // приоритет на нажатие мышью
  {
   ResetLastError();
   if (ObjectFind(chart_ID,name)==-1)
   {
      ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0);
      ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,BORDER_FLAT);
      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER_RIGHT_UPPER);
      ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
      ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
   }
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
   return(true);
}
//--------------------------------------------------------------------
avatar

  16  ssg Сообщений: 817

  • 12 июня 2020, 21:58
+
0
Надо менять логику входов.
например так для покупок:
if (/*RSI0>=level_buy &&*/ RSI1<=level_buy)


и для продаж:
if (/*RSI0<=level_sell &&*/ RSI1>=level_sell)
avatar

  16  ssg Сообщений: 817

  • 12 июня 2020, 22:03
+
0
Работает! Спасибо большое! В других подобных сделки в сетки с множителем открывались ровно по заданому, а не по индикатору.А это то что надо. Респект!
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 13 июня 2020, 00:51
+
0
if (b!=0 && RSI0>=level_buy && RSI1<=level_buy) а если так то должен получится не плохой помошник. ставлю на крипто.
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 13 июня 2020, 06:32
+
0
В тестере прогоняли?
avatar

  16  ssg Сообщений: 817

  • 13 июня 2020, 07:47
+
0
да, погонял немного.работает как надо, но помоему некоторые условия для входа пропускает, не уверен.Cегодня займусь капитально
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 13 июня 2020, 08:19
+
0
1.Может редко совпадают условия.У машины глаз нет.Только — «ток есть тока нет». Визуально вроде есть сигнал, а для машины пару пипсов не хватило.
2.Индикатор перерисовывается в истории.Его линия усредненная от цены.Разные бары — разные цены.
Сделок много? Какой тайфрейм?
Редактирован: 13 июня 2020, 09:01
avatar

  16  ssg Сообщений: 817

  • 13 июня 2020, 09:00
+
0
вот такая картина выресовывается за 10 месяцев. т.ф. 5м.депозит. 500. шаг.30=1.3. лот 0.01=1.3. т.п 500. слил 6 марта. это тольконачало. я думаю при таком депозите нормально продержалось.
Редактирован: 13 июня 2020, 13:05
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 13 июня 2020, 11:00
+
0
Выбирайте вариант не самый лучший по балансу, а вариант с небольшой просадкой и приемлемой доходностью.
И еще смотрите на матожидание.
avatar

  16  ssg Сообщений: 817

  • 13 июня 2020, 20:44
+
0
Самый лучший тестер реал. Ещё раз спасибо.
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 14 июня 2020, 03:22
+
0
;) 
avatar

  16  ssg Сообщений: 817

  • 14 июня 2020, 05:50
+
0
дайте ссылку на самый близкий вариант и я его подправлю
avatar

  35  AM2 Сообщений: 16443 - Андрей

  • 9 июня 2020, 17:55
+
0
с други сайтов можно?
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 9 июня 2020, 18:02
+
0
вот этот можно? www.mql5.com/ru/code/20612 добавить множитель шага сетки
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 11 июня 2020, 17:33
+
0
я переписывать его буду, посмотрю только как торгует. дело за поручителем теперь
avatar

  35  AM2 Сообщений: 16443 - Андрей

  • 11 июня 2020, 20:10
+
0
Андрей не надо, мне сделали, спасибо.
avatar

  4  vedenmak Автор Сообщений: 23 - максим

  • 13 июня 2020, 01:15

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий