Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 997

 
fxseminar:
-- извините, индикатор Custom Moving Average НЕ МОЖЕТ усреднять по тикам. Как бы он тогда работал (выглядел) на суточном, например, таймфрейме - представляете?

Ничего страшного, пересчитывается только нулевой (незавершённый) бар. А усредняются именно бары, цены баров. Если поставлено appled_price -- PRICE_CLOSE  то считать будет цены закрытия баров, но никак не все тики.

В общем так: На незавершённом баре цена закрытия равна цене Bid и при изменении этой цены индикатор суммирует 13 значений цен и делит на 13. Совсем не долго...

double  iMA(
   string       symbol,           // имя символа
   int          timeframe,        // таймфрейм
   int          ma_period,        // период
   int          ma_shift,         // сдвиг средней
   int          ma_method,        // метод усреднения
   int          applied_price,    // тип цены
   int          shift             // сдвиг

   );



 

Привет всем) решил запилить робота ) - оказалось не все так просто) ) 

короче говоря проблема от не знания - как проверить количество ордеров по текущему графику (Пример алгоритма - ЕСЛЕ ПО --((((ТИКУЩЕМУ))))--  ГРАФИКУ ОТКРЫТЫХ ОРДЕРОВ <=2 то покупаем, продаем и тд

- а у меня считает все ордера ,и из за большого количества ордеров не покупает по той валютной паре по которой надо 

Ответьте кто шарит пжл )

Буду премного Благодарен)

 
Tema97:

Привет всем) решил запилить робота ) - оказалось не все так просто) ) 

короче говоря проблема от не знания - как проверить количество ордеров по текущему графику (Пример алгоритма - ЕСЛЕ ПО --((((ТИКУЩЕМУ))))--  ГРАФИКУ ОТКРЫТЫХ ОРДЕРОВ <=2 то покупаем, продаем и тд

- а у меня считает все ордера ,и из за большого количества ордеров не покупает по той валютной паре по которой надо 

Ответьте кто шарит пжл )

Буду премного Благодарен)

int count=0; // счетчик открытых ордеров

//--- алгоритм подсчета открытых ордеров

if(OrdersTotal()>0)
  {
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()!=Symbol()) continue; // Если не символ текущего графика
                                               // перейдём к проверке следующего ордера

         if(OrderType()==OP_BUY ||     // если это открытый ордер на покупку или
            OrderType()==OP_SELL)      // если это открытый ордер на продажу
            count++;                   // увеличение счетчика на 1
        }
     }
  }

//--- покупаем, продаем и т.д.
if(count<=2)
  {
   // ...
  }
 
if(OrdersTotal()>0)
А это зачем?????????

	          
 
eevviill:

это типо - если ордеров >0 то продолжаем алгоритм ( мол есть купленные или вообще 0 - если  по нулям то зачем делать алгоритм)

 
paladin80:

Спасибо большое ) а то мучаюсь со вчерашнего дня ) 
 
Tema97:

это типо - если ордеров >0 то продолжаем алгоритм ( мол есть купленные или вообще 0 - если  по нулям то зачем делать алгоритм)

 

for(int i=OrdersTotal()-1; i>=0; i--)
тут даже не будет 1 итерации если ордеров 0
это просто лишний код(if(OrdersTotal()>0))
 
Чуваки кто на этот раз поможет? - воообщим - как код написать - я написал - у меня дич какая та получилось - нужно чтоб цена например с верху в низ доходила до  скользящей средней  и покупалась ( как на отскок )  кто знает правильный  код отпишите  плиЗ)))  
 
eevviill:

Если будете использовать в своих программах этот алгоритм уберите

if(OrdersTotal()>0)

и посмотрите, что получиться.

 
Tema97:
Чуваки кто на этот раз поможет? - воообщим - как код написать - я написал - у меня дич какая та получилось - нужно чтоб цена например с верху в низ доходила до  скользящей средней  и покупалась ( как на отскок )  кто знает правильный  код отпишите  плиЗ)))  
В CodeBase есть куча советников и думаю найдётся как с вашим алгоритмом, который можете переделать под себя.
Причина обращения: