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

 
TarasBY:

Как-то так:

Экстремумы ЗигЗага от текущего времени до Time_Control собраны в массив.


void fGet_ExtremumsZZPrice (string fs_Symbol,           // инструмент
                            int fi_TF,                  // таймфрейм
                            datetime fdt_TimeControl,   // время, до которого ищем экстремумы
                            int fi_ExtDepth = 12,       // ExtDepth         
                            int fi_ExtDeviation = 5,    // ExtDeviation
                            int fi_ExtBackstep = 3)     // ExtBackstep
{
    double ld_Value, lda_Extremum[];
    int    li_size = iBarShift (fs_Symbol, fi_TF, fdt_TimeControl), li_IND = 0;
//---- 
    for (int li_Bar = 1; li_Bar < li_size; li_Bar++)
    {
        ld_Value = iCustom (fs_Symbol, fi_TF, "ZigZag", fi_ExtDepth, fi_ExtDeviation, fi_ExtBackstep, 0, li_Bar);
        if (ld_Value != 0.)
        {
            ArrayResize (lda_Extremum, li_IND + 1);
            lda_Extremum[li_IND] = ld_Value;
            li_IND++;
        }
    }
//---- 
}

А подскажите такой момент, как посчитать все зигзаги, сколько их?

 

Здраствуйте,

зарание прошу пращения за граматику :/. Вапрос таков, как переписать историю катировок (через код)? Хотелосбы использоват МТ4 для анализа даных из другово брокера.
 
berezhnuy:

А подскажите такой момент, как посчитать все зигзаги, сколько их?




Записано в переменной   li_IND,   или так  
count=ArraySize(lda_Extremum);
 
berezhnuy:

А подскажите такой момент, как посчитать все зигзаги, сколько их?

Если сделать так:

int fGet_ExtremumsZZPrice (string fs_Symbol,           // инструмент
                           int fi_TF,                  // таймфрейм
                           datetime fdt_TimeControl,   // время, до которого ищем экстремумы
                           int fi_ExtDepth = 12,       // ExtDepth         
                           int fi_ExtDeviation = 5,    // ExtDeviation
                           int fi_ExtBackstep = 3)     // ExtBackstep
{
    double ld_Value, lda_Extremum[];
    int    li_size = iBarShift (fs_Symbol, fi_TF, fdt_TimeControl), li_IND = 0;
//---- 
    for (int li_Bar = 1; li_Bar < li_size; li_Bar++)
    {
        ld_Value = iCustom (fs_Symbol, fi_TF, "ZigZag", fi_ExtDepth, fi_ExtDeviation, fi_ExtBackstep, 0, li_Bar);
        if (ld_Value != 0.)
        {
            ArrayResize (lda_Extremum, li_IND + 1);
            lda_Extremum[li_IND] = ld_Value;
            li_IND++;
        }
    }
//----
    return (li_IND);
}
- функция будет возвращать количество найденных экстремумов с момента fdt_TimeControl.
 

Благодарю

 

Здраствуйте,

Возможно ли в експерт написат,что график с фиксираный мащаб 1:1 -в настроек можно.

Если возможно,скажите как.

Заранее спосибо.

 

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

Добрый день.

Я написал код для открытия двух отложенных ордеров (BuyStop и SellStop) по условиям a=true и b=true и через некоторое время советник закрывает оба ордера, до появления повторного сигнала, но порой советник открывает 2 отложенных ордера в одном направлении. Почему это происходит и как избежать этого "бага"?



if (a=true && b=true)
   {        
    int OrderCount = OrdersTotal();
    if (OrderCount>1) return(0);
    ticket1=OrderSend(Symbol(), OP_BUYSTOP, getLot(), PriceOpen_Buy, slippage, PriceOpen_Sell,0,0,Green);
    Sleep(1000); 

    ticket2=OrderSend(Symbol(), OP_SELLSTOP, getLot(), PriceOpen_Sell, slippage, PriceOpen_Buy,0,0,Green);

    Sleep(1000*59*TimeFrame);

         for (int i=OrdersTotal()-1; i>=0; i--)
         {
            if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
            if (OrderType()==OP_BUYSTOP  ) OrderDelete(OrderTicket());
            if (OrderType()==OP_SELLSTOP ) OrderDelete(OrderTicket());
            if (OrderType()==OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask,slippage);
            if (OrderType()==OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,slippage);
         }

return(0);  

}


Подскажите, пожалуйста.

Заранее благодарен

 
r772ra:



Значения этих переменных хранятся в массивах-тайсериях.

то есть, у вас все так .

Условия,

 

Спасибо попробую так)
 
Shixan:

Добрый день.

Я написал код для открытия двух отложенных ордеров (BuyStop и SellStop) по условиям a=true и b=true и через некоторое время советник закрывает оба ордера, до появления повторного сигнала, но порой советник открывает 2 отложенных ордера в одном направлении. Почему это происходит и как избежать этого "бага"?

Подскажите, пожалуйста.

Заранее благодарен

Может здесь:

if (OrderCount>0) return(0);

Вообще-то столько не "спят" - Sleep(1000*59*TimeFrame);  - пришёл новый тик, запустился в работу Ваш код, открылись два ордера, затем пауза на "2 часа" (условно), а потом Вы пытаетесь закрыть, если вдруг один из ордеров стал рыночным по ценам, которые получили 2 часа назад - ОРИГИНАЛЬНО!!! КТО ВАС УЧИЛ???

Можете фиксировать в глобальной переменной время открытия ордеров и контролировать разницу м\у TimeCurrent() и зафиксированным временем.

Причина обращения: