0
Как вариант индикатор новостей ru.fxssi.com/forex-news-indicator-mt4
avatar

Slava78

  • 10 августа 2021, 20:00
0
Ну, канал дончиан. В чем интерес?
avatar

Slava78

  • 10 августа 2021, 19:55
0
О чем разговор, если курс начал расти в сентябре 2014
806*34= 27404 максимум 2013 год
avatar

Slava78

  • 10 августа 2021, 16:33
0
Получилось сделать
//------------------------------------------------------------------
#property copyright "mladen"
#property link      "mladenfx@gmail.com"
//------------------------------------------------------------------
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1  clrLimeGreen
#property indicator_color2  clrMaroon
#property indicator_width1  2
#property indicator_width2  2

extern int                period       = 10;
extern ENUM_APPLIED_PRICE appliedPrice = PRICE_CLOSE;
extern double             multiplier   = 4.0;
extern ENUM_TIMEFRAMES    TimeFrame    = 0; //default chart TF :: Use 5, 15, 30, 60, etc...
input string s1 = "EURUSD";
//
//
//
//
//

double Trend[];
double TrendDoA[];
double TrendDoB[];
double Direction[];
double Up[];
double Dn[];

//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//

int OnInit()
{
   for (int i=0; i<indicator_buffers; i++) SetIndexStyle(i,DRAW_LINE);
   IndicatorBuffers(6);
      SetIndexBuffer(0, Trend); 
      SetIndexBuffer(1, TrendDoA); 
      SetIndexBuffer(2, TrendDoB);  
      SetIndexBuffer(3, Direction);
      SetIndexBuffer(4, Up);
      SetIndexBuffer(5, Dn);
      IndicatorDigits(Digits);   
   IndicatorShortName("SuperTrend multi");
   return(0);
}
void OnDeinit(const int reason) { }

//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//

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 counted_bars = prev_calculated;
      if(counted_bars < 0) return(-1);
      if(counted_bars > 0) counted_bars--;
           int limit=MathMin(rates_total-counted_bars,rates_total-1);

   //
   //
   //
   //
   //
   if (Direction[limit] <= 0) CleanPoint(limit,TrendDoA,TrendDoB);   
   for(int i = limit; i >= 0; i--)
   {
      int y = iBarShift(s1,TimeFrame,Time[i]);
         double atr    = iATR(s1,TimeFrame,period,y);
         double cprice = iClose(s1,TimeFrame,y);
         double mprice = (iHigh(s1,TimeFrame,y)+iLow(s1,TimeFrame,y))/2;
                Up[i]  = mprice+multiplier*atr;
                Dn[i]  = mprice-multiplier*atr;
         
         //
         //
         //
         //
         //
         
         Direction[i] = (i<rates_total-1) ? (cprice > Up[i+1]) ? 1 : (cprice < Dn[i+1]) ? -1 : Direction[i+1] : 0;
         TrendDoA[i]  = EMPTY_VALUE;
         TrendDoB[i]  = EMPTY_VALUE;
            if (Direction[i] ==  1) { Dn[i] = MathMax(Dn[i],Dn[i+1]); Trend[i] = Dn[i]; }
            if (Direction[i] == -1) { Up[i] = MathMin(Up[i],Up[i+1]); Trend[i] = Up[i]; PlotPoint(i,TrendDoA,TrendDoB,Trend); }
   }
   return(rates_total);
}


//------------------------------------------------------------------
//
//-------------------------------------------------------------------
//
//
//
//
//

void CleanPoint(int i,double& first[],double& second[])
{
   if (i>Bars-2) return;
   if ((second[i]  != EMPTY_VALUE) && (second[i+1] != EMPTY_VALUE))
        second[i+1] = EMPTY_VALUE;
   else
      if ((first[i] != EMPTY_VALUE) && (first[i+1] != EMPTY_VALUE) && (first[i+2] == EMPTY_VALUE))
          first[i+1] = EMPTY_VALUE;
}

void PlotPoint(int i,double& first[],double& second[],double& from[])
{
   if (i>Bars-3) return;
   if (first[i+1] == EMPTY_VALUE)
         if (first[i+2] == EMPTY_VALUE) 
               { first[i]  = from[i]; first[i+1]  = from[i+1]; second[i] = EMPTY_VALUE; }
         else  { second[i] = from[i]; second[i+1] = from[i+1]; first[i]  = EMPTY_VALUE; }
   else        { first[i]  = from[i];                          second[i] = EMPTY_VALUE; }
}

avatar

Slava78

  • 31 июля 2021, 14:55
0
Большое спасибо!
avatar

Slava78

  • 31 июля 2021, 14:20
0
Вариант обычный: при установке на график EURUSD, должен отображать USDCHF
В лучшем варианте: отображаются две валютные пары
double atr    = iATR(NULL,0,period,i);
      double cprice =  close[i];
      double mprice = (high[i]+low[i])/2;
         Up[i]  = mprice+multiplier*atr;
         Dn[i]  = mprice-multiplier*atr;

avatar

Slava78

  • 31 июля 2021, 11:59
0
Поставь магик 0
Остальные настройки можно просто спрятать
Но если тебе нужна привязка к валютам, то это уже будет мультивалютный советник
avatar

Slava78

  • 30 июля 2021, 10:38
0
Советник либо будет закрывать все ордера(магик 0), либо те которые открыты этим же советником принадлежащие магику
avatar

Slava78

  • 30 июля 2021, 10:20
0
В чем проблема сова? Тестер не справляется?
avatar

Slava78

  • 11 июля 2021, 06:36
0
Ну в общем там есть буфера 3 и 4. Если Андрей захочет, то привяжет к ним.
Если нет, то можно привязать к уровням на выбор. Я Владу индикатор уже давал с таким уровнем(на выбор)
avatar

Slava78

  • 19 июня 2021, 21:22
0
Можно взять не уровень 100, а 99(или 95, к примеру — он не прыгает)
Цена выше или ниже уровня
avatar

Slava78

  • 19 июня 2021, 16:41
0
Попробуйте Hill no repaint+Arrows1. forex-station.com/app.php/attach/file/3340565
avatar

Slava78

  • 12 июня 2021, 07:46
0
Там буфера есть 2 и 3. Да и вам нужен поручитель(до 3 уровня)
avatar

Slava78

  • 7 июня 2021, 14:58
0
Для начала пишем: Ищу поручителя
Затем ТЗ: описываем условия изменения цвета
Есть такой
www.mql5.com/ru/code/7976
avatar

Slava78

  • 2 июня 2021, 15:36
0
Выдели не нужное в MetaEditor, удали и компилируй
avatar

Slava78

  • 30 мая 2021, 19:05
0
Спасибо. Немного доработал. Как сделать, чтобы он по очереди открывал ордера:
бай, селл, бай, селл и т.д.?

<code>if(red>0 && AllProfit(0)>1 && 1>0) CloseAll(0);
   if(blu>0 && AllProfit(1)>1 && 1>0) CloseAll(1);
   
   if(t!=Time[0])
    { 
     if(CountOrders(0)<1)
      {
       if(blu>0)
        {
         PutOrder(0,Ask); PutOrder(5,zz2); DelOrder(4);
        }
      }
     if(CountOrders(1)<1)
      {
       if(red>0)
        {
         PutOrder(1,Bid); PutOrder(4,zz2); DelOrder(5);
        }
      }
      t=Time[0];
    }</code>
avatar

Slava78

  • 30 мая 2021, 15:23