Помощь в кодировании - страница 777

 
Algo_W:

Я не уверен, как реализовать IMaOnArray для этого. Я думаю, что это и есть решение? Может ли кто-нибудь помочь мне получить скользящее среднее ADX для гистограммы?

Спасибо

#property indicator_type1 DRAW_LINE

#property indicator_type1 DRAW_LINE
for(int i = limit-1; i >= 0; i--)
   Buffer1[i] = iADX(NULL, PERIOD_CURRENT, 14, PRICE_CLOSE, MODE_MAIN, i);
   
for(i = limit-1; i >= 0; i--)   
   Buffer2[i] = iMAOnArray(Buffer1, 0, 5, 0, MODE_SMA, i);
 
Naguisa Unada:

Привет, Нагуиса!

Я верю, что у тебя все хорошо?

Я хочу оценить и сказать спасибо за настройку индкатора mtf BB. Я могу сказать, что он работает как шарм.


Нагуиса! Если можно, я хотел бы поинтересоваться, можно ли настроить этот индикатор так, чтобы можно было видеть различные пользовательские таймфреймы, например, числа Фибоначчи или любые четные и нечетные таймфреймы, а не обязательно те, которые предназначены только для MT4. Это возможно, пожалуйста?

 

помогите пожалуйста.

как можно закодировать

прямым лучом к конечной точке ma?

 
guner:

помогите пожалуйста.

как можно закодировать

добавить правый луч к конечной точке МА?

Нарисуйте трендовый объект со значениями PRICE1 и PRICE2, равными значению выбранной вами MA на баре 0 и TIME1, равным времени бара 0, в то время как TIME2 находится где-то в будущем. Накаждом тике пересчитывайте MA и устанавливайте PRICE1 и PRICE2 соответственно, а на каждом новом баре устанавливайте новое TIME1.

 

Привет всем,


Я изучаю книгу Марка Уистлера "Volatility illuminated" и мне интересно углубиться в построенные им индикаторы, особенно в WAVE-PM.
Уистлер опубликовал код mq4 в книге, и есть копия также здесь http://fxcodebase.com/code/viewtopic.php?f=38&t=64011.

Однако мое намерение состоит в том, чтобы перенести индикатор на tradingview, так как это моя основная платформа для построения графиков. Я знаю некоторые основы pinescript, но мне очень трудно вчитываться в код оригинального скрипта на C.
Может ли кто-нибудь взглянуть на код и сказать мне примерно логику того, что он делает?

В книге Whistler не так много говорится об индикаторе, только то, что "визуально определяет "сжатие" краткосрочного распределения внутри более крупного распределения."



Насколько я понял, осциллятор представляет собой разницу между верхней и нижней полосами полосы Боллинджера, затем значение нормализуется в диапазоне 0-1 и строится по времени.

В коде я вижу, что создаются два осциллятора (ShortBandsPeriod и LongBandsPeriod), но затем я теряюсь в циклах for... Я вижу только, что есть какие-то математические вычисления (квадрат,мощностьэкспонентыи тангенс?), но, к сожалению, не могу понять, почему и как они дела ются.

.
.
.
for (i=limit; i>=0; i--){
   
             
                avg= iMA(NULL,0,ShortBandsPeriod,0,MODE_SMA,PRICE_CLOSE,i+ShortBandsShift);
                
                sum=0;
                
                for (j=ShortBandsPeriod-1; j>=0; j--){
                 temp = Close[i+j] - avg;
                 sum = sum + temp * temp;
                }
         
                ShortDev[i]= ShortBandsDeviations * MathSqrt(sum / ShortBandsPeriod);
        ShortDev1[i] = MathPow((ShortDev[i] / Point), 2);
                
                
                    //if  ( i < limit - Chars)
                        //{
         
                        
                          temp=0;
                                for (j=Chars-1; j>=0; j--){                             
                                 temp = temp + ShortDev1[i+j];
                                }
                        
            temp = MathSqrt(temp / Chars) * Point;
            if (temp != 0)
                        {
                temp = ShortDev[i] / temp;
            }

                                
         
                        ShortOscillator[i] = MathTanh(temp);
                                
                   //}
   }
.
.
.


Любая помощь, предложение или подсказка будут приняты с благодарностью, спасибо!

Файлы:
WAVE-PM.mq4  5 kb
 

Привет, ребята, не могли бы некоторые кодеры помочь модифицировать этот индикатор fisher.

Да, это очень старый индикатор и перерисован, однако он содержит ценную информацию. Я хочу анализировать состояние индикатора при закрытии каждой свечи. буду признателен.

Мы не меняем функцию перерисовки, просто добавляем автообновление. Индикатор обновляется и записывает состояние при закрытии каждой свечи, но не обновляется во время начала следующей свечи.

Извините за мой плохой английский. Спасибо заранее.

Файлы:
fisher1.mq4  3 kb
 

Привет, ребята!

Надеюсь, у вас все хорошо?

Я нашел эти индикаторы на форуме динамических зон, но они не работают как таковые, и если какой-нибудь щедрый кодер сможет их исправить, я буду очень признателен.

Я прикрепляю их здесь,

Заранее искренне благодарен.

 
Mkurugenzi:

Привет, ребята!

Надеюсь, у вас все хорошо?

Я нашел эти индикаторы на форуме динамических зон, но они не работают как таковые, и если какой-нибудь щедрый кодер сможет их исправить, я буду очень признателен.

Я прикрепляю их здесь,

Заранее искренне благодарю.

@Naguisa Unada


Я верю, что у вас все хорошо?


Пожалуйста, не могли бы вы просмотреть мое последнее сообщение выше и посмотреть, в состоянии ли вы хотя бы отретушировать некоторые, если не все индикаторы, чтобы они работали?


Ваши усилия, время и ресурсы будут оценены заранее.

 

Привет кодеры! Может ли кто-нибудь помочь мне модифицировать этот советник?

Это простой советник buy low sell high, выбрасывающий лимитные ордера каждые x минут, которые длятся x минут/часов.


Я думаю, что его можно улучшить, если добавить к нему фильтр. Скажем, стохастик или RSI...

Так что когда стохастик ниже 40 = запуск лимитов на покупку.

А когда стохастик выше 60 = запуск лимитов на продажу.

И в промежутке он ничего не запускает



Возможно ли это? Заранее спасибо.

Я прилагаю советник


Я использовал советник "вручную", решая, запускать его в лонг или шорт с хорошими результатами.

Файлы:
WIDE_HARD.mq4  8 kb
EA-FXblue.png  68 kb
 
Здравствуйте. Сразу прошу прощения за мой плохой английский. Если не сложно, помогите пожалуйста с кодом советника. А именно поправить условия открытия и закрытия позиций. Немного о роботе, робот открывает и закрывает позиции на развороте индикатора зиг-заг.
Предполагается, что эта система будет работать независимо от того, есть ли в МТ4 индикатор зиг-заг или нет.
//+------------------------------------------------------------------+
//|                                       Test advisor on ZigZag.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                         https:/goga342@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2010, MQL для тебя."
#property link "http://mql4you.ru"
#property strict
extern double lots = 0.01; //
extern int  TakeProfit=60; //
extern int  StopLoss=100; //
extern int Magic=111111111;
extern int Slippage=3;
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;

datetime Today=0;
double SL,TP;
int ticket;
//±-----------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit *=10;
      StopLoss   *=10;
      Slippage   *=10;
     }
   return(INIT_SUCCEEDED);
  }
//±-----------------------------------------------------------------+
int deinit() {return(0);}
//±-----------------------------------------------------------------+
int start()
  {

   if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
   if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
                                    //:проверим открытие новой свечи
   if(Time[0]==Today) return(0);
   Today=Time[0];
//:получим значение ZigZag на предыдущей свече
   double lZZ=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,1);
   double lZZ_=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,0);
// открытие продаж

   if(CountSell()==0 && lZZ==Low[0] && lZZ_==Low[0])
     {
      SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
      TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);
        {

         ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,SL,TP,"macd sample",Magic,0,Red);
         if(ticket>0)
           {
            // закрытие продаж
    //        if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
                        if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на покупку !");
                    }
                 }
              }
           }
        }
     }
// открытие покупок

 //  if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     {
      TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
      SL = NormalizeDouble(Ask-StopLoss*Point, Digits);
        {
         ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,Slippage,SL,TP,"macd sample",Magic,0,Green);
         if(ticket>0)
           {
            // закрытие покупок    
       //     if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
                        if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на продажу!");
                    }
                 }
              }
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
int CountSell()//проверкна открытие ордеров на продажу
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
            if(OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int CountBuy()// проверкна открытие ордеров на покупку
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
            if(OrderType()==OP_BUY)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+

открытие продаж

if(CountSell()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])

закрытие продаж

      if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              

открывающая покупка

if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     

закрытие покупки

 if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])