[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 258

 
palesandr:

Смысл найте среднее значение open-close за n свечей

рисует просто направленную вниз линию

что не так ?

1) внутренний цикл поправьте

k не от 1 а от i

2) на самых первых шагах выходите за историю

 
granit77:
Я бы тоже не отказался увидеть пример, как это грамотно сделать.

А что здесь может быть сложного?

#property copyright "Bicus"
#property link      "Bicus"


double aPrices [5];

void PutStack (double p_Price)
{
  int nCounter;
  
  for (nCounter = 4; nCounter > 0; nCounter--)
    aPrices [nCounter] = aPrices [nCounter - 1];
    
  aPrices [0] = p_Price;
}

int start()
{
  int nCounter;
  
  PutStack (Bid);
  
  for (nCounter = 0; nCounter < 5; nCounter++)
    Print (nCounter, "-й тик: ", DoubleToStr (aPrices [nCounter], Digits));
}

0-й элемент массива будет иметь значение цены последнего тика, 1-й элемент значение цены 1 тик назад, 2-й элемент значение цены 2 тика назад и т. д.

Или я что-то не так понял и имелось в виду совсем другое?

 
palesandr:

Смысл найте среднее значение open-close за n свечей

рисует просто направленную вниз линию

что не так ?


#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red 

extern double n = 50;
double Buf_0[];

int init()
  {
 SetIndexBuffer(0,Buf_0);
 SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);    
    
   return(0);
  }

int start()
  {
   int    Counted_bars=IndicatorCounted();
      
   double v;
  int i=Bars-Counted_bars-1;
 
  while(i>=0)  
  {  v=0; 
          for(int k=i;k<i+n;k++)
        {
      
        v=v+MathAbs(Open[k]-Close[k]);
       
        
      }
       Buf_0[i] = v/n;
       
       i--;
       }
 return;
 }
 
Bicus:

А что здесь может быть сложного?

0-й элемент массива будет иметь значение цены последнего тика, 1-й элемент значение цены 1 тик назад, 2-й элемент значение цены 2 тика назад и т. д.

Или я что-то не так понял и имелось в виду совсем другое?

Спасибо, именно то, что нужно. Сложного вроде ничего, но у людей, которые не знают основ программирования, на простые вещи иногда уходит много времени. Им приходится придумывать все с нуля.
Вот для Вас, например, "пузырьковая сортировка" - элемент азбуки, а я о ней только слышал, и не имея перед глазами примера, писал бы ее заново :))
 
Есть у кого готовая функция "Пропустить следующий бар"? :)
 
Всем привет и профита. Хотел спросить есть ли у кого индикатор на подобие RSI, но который бы никогда не дивергировал. Спасибо.
 
ikatsko:
Есть у кого готовая функция "Пропустить следующий бар"? :)

if(iTime(Symbol(),период_бара,количество_баров_для_ пропуска)>OrderOpenTime()

Пропустит количество_баров_для_пропуска

0 - пропустит текущий, 1 - текущий и следующий и т.д.

 

yosuf:
На этом форуме недавно вычитал мысль о том, что если одновременно открыть 2 разнонаправленных ордера с одинаковым СЛ, то после закрытия одного из них можно попытаться выйти на профит. Кто нибудь проверял эту мысль или нет? Может быть есть похожий советник?
160777:

Expert Grid v.2.

"Copyright©2008 EAfactory.com and Expert-4x.com - «Revision: 264»"

Открывает позиции в обе стороны и закрывает обе, если разница в плюсе.

Просветите, как можно оказаться в плюсе, если ордера будут равны по размеру лота? Суммарная позиция будет всегда равна минус двойному спрэду.

Другое дело, если ордера имеют разный лот: тогда не одинаковый стоп-лосс, а стоп-лосс меньшего равен тейку большего. Тогда их одновременное закрытие приводит, если знать, как рассчитать, к профиту.

 

Всем привет! Как с помощью MQL сохранить отчет Statement.htm? Кто-нибудь знает?

 

не могу разобраться, как сделать отоброжения линий, вот по этому скрипту или оталкивая от этого скрипта или может я не прав:

   //---------------------------------
  
        double PriceBid = Bid;
        double PriceAsk = Ask;
        double be = GetWeightedBELevel();

        if(be != -1)
        {
                double BuyLots = GetBuyLotsSum();
                double SellLots = GetSellLotsSum();
                
                double Swap = GetSwap();
                //string str = be + " ";
                if(Swap < 0)
                {
                        double diff = BuyLots - SellLots;
                        //str = str + MarketInfo(Symbol(), MODE_TICKVALUE) * diff + " " + (-Swap / (MarketInfo(Symbol(), MODE_TICKVALUE) * diff) * Point) + " ";
                        be += ND(-Swap / (MarketInfo(Symbol(), MODE_TICKVALUE) * diff) * Point + diff / MathAbs(diff) * 1 * Point);
                }
                //str = str + Swap + " " + be;
                //Comment(str);
                        
                if((BuyLots > SellLots && ND(PrevPriceBid) < ND(be + TakeProfitBuy * Point) && ND(PriceBid) >= ND(be + TakeProfitBuy * Point)) ||
                        (BuyLots < SellLots && ND(PrevPriceAsk) > ND(be - TakeProfitSell * Point) && ND(PriceAsk) <= ND(be - TakeProfitSell * Point)))
                {
                        CloseAllBuy();
                        CloseAllSell();
                }               
                
        }
        //---------------------

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

направьте меня на истинный путь
Причина обращения: