Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 53

 
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Blue
//--------------------------------------------------------------------
double Buffer[]; 
//--------------------------------------------------------------------
int init()
{
   SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY,2); 
   SetIndexBuffer(0,Buffer); 
   return(0); 
}
// -------------------------------------------------------------------
int deinit()
{
    return(0);
}
//--------------------------------------------------------------------
int start()
{       
    int StartBar = Bars - IndicatorCounted() - 1;
    for(int i = StartBar; i >= 0; i--)   
     Buffer[i] =(iClose("EURGBP",0,i)-iOpen("EURGBP",0,i))/MarketInfo("EURGBP",MODE_POINT)+
                (iClose("EURAUD",0,i)-iOpen("EURAUD",0,i))/MarketInfo("EURAUD",MODE_POINT);
   return(0);
}

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

Простите не знаю как текст оформить кодом .

Это простой индикатор счётчик ( сумма тел инструментов в пунктах на текущем ТФ-ме ) инструментов любые . Каждый столбик гистограмки начинается с "О"  и заканчивается на закрытии ТФ-ма . Например текущий ТФ это Н1 , в 12.00 показывает  "0"  а  в 13.00  "+20"  и столбик гистограмки чётко =+20 . но в течении этого часа показания были и -50 и +60 , но индикатор их не показывает , нужно добавить один буфер для минимума Buffer[i] и один для максимума Buffer[i] .  Использовать High и Low нельзя , потому что для каждого инструмента прописанного в индикаторе эти значения наступают в разное время . Поэтому надо чтобы второй  буфер фиксировал максимальное значение Buffer[i] меньшего графика (М5) на текущем графике (Н1) , и третий буфер фиксировал минимальное значение Buffer[i] меньшего графика (М5) на текущем графике (Н1) .  Уважаемые ,кто что может посоветовать ?

 
vitek2010:

Простите не знаю как текст оформить кодом.

 Использовать High и Low нельзя , потому что для каждого инструмента прописанного в индикаторе эти значения наступают в разное время . 

А Close для каждого инструмента одновременно, чтоли, наступает, во время жизни свечи??? Так это ошибочное мнение, тики все в разное время приходят )))

 
trader781:
дело в том что в цепочке ВСЕГДА будут находится убыточные ордера с каким  - то лотом который тоже придется тралить за счет остальных. Триггер срабатывания - время закрытия. Если хоть один закрыть кроется вся цепочка. Поэтому вопрос, как тралить именно среднюю цену по всем выбранным.

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

Для того чтобы не считать среднюю на каждом тике её можно считать только при добавлении очередного ордера.

 
Alexey Viktorov:

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

Для того чтобы не считать среднюю на каждом тике её можно считать только при добавлении очередного ордера.

Если не сложно просто объясни как мне посчитать среднюю цену при неравномерном распределении сетки ордеров(где OrderType()<2). И все.
 
Vitalie Postolache:

А Close для каждого инструмента одновременно, чтоли, наступает, во время жизни свечи??? Так это ошибочное мнение, тики все в разное время приходят )))

Я не говорил о тиках я говорил о том что нужно фиксировать минимум и максимум показаний буфера индикатора , просчитываемого на меньшем ТФ-ме , в промежутке большего ТФма  Попробую показать на скрине  В данном случае будет взят больший ТФ-м викли , а меньший Н1( но это окна разных ТФмов ):

 [img]https://charts.mql5.com/13/642/eurgbp-w1-instaforex-group.png[/img]

К рассмотрению возьму недельку 05.12( красное перекрестье )  эта гистограмма по индикатору приведённому выше  чётко видно что суммарное движение пар на закрытии недельки было в низ на 95 пунктов , но на ней не видно на сколько в течении недельки было повышение и понижение .

А вот на этом скрине видна динамика движения этого индикатора на графике Н1 в течении этой недельки :

[img]https://charts.mql5.com/13/642/eurgbp-h1-instaforex-group.png[/img]

 Видно что индикатор имел минимальное значение 400  потом  подьём до значения 700 и закрылся на 160 ( несоответствие чисел закрытия на двух скринах не важны) 

  Надо чтобы в одном индикаторе это всё было  в одном столбике гистограмки и минимум и максимум и закрытие  ( в этом случае на викли ) . а в идеале то на текущем ТФ-ме  с указываемого в настройках ТФма 

 почему то скрины не отобразились 9 делал на МТ4 инсты через копирование  Сайта МКЛ5 

 
trader781:
Если не сложно просто объясни как мне посчитать среднюю цену при неравномерном распределении сетки ордеров(где OrderType()<2). И все.

Надеюсь разберётесь

for(int i=0; i<OrdersTotal(); i++) {
  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
   if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic) {
    if(OrderType()==OP_BUY) {
      _BuyProfit+=OrderProfit()+OrderSwap()+OrderCommission(); // совокупный профит  по всем Sell
      _BuyLot+=OrderLots(); //совокупный лот по всем Sell
    }
    if(OrderType()==OP_SELL) {
      _SellProfit+=OrderProfit()+OrderSwap()+OrderCommission(); // совокупный профит  по всем Sell
      _SellLot+=OrderLots(); //совокупный лот по всем Sell
    }
}}}

double TickValue= MarketInfo(_Symbol,MODE_TICKVALUE);

if(_BuyLot  > 0) { BuyAwerage = NormalizeDouble(Bid-(_BuyProfit/(TickValue*_BuyLot))*_Point,_Digits); } else { BuyAwerage=0; }// безубыток buy
if(_SellLot > 0) { SellAwerage= NormalizeDouble(Ask+(_SellProfit/(TickValue*_SellLot))*_Point,_Digits); } else { SellAwerage=0; } // безубыток sell
if(_BuyLot-_SellLot! = 0) { AllAwerage= NormalizeDouble(((_BuyLot>_SellLot)?Bid:Ask)-((_BuyProfit+_SellProfit)/(TickValue*(_BuyLot-_SellLot))*_Point),_Digits); } else { AllAwerage=0; } // общий безубыток
 
Vitaly Muzichenko:

Надеюсь разберётесь



double TickValue= MarketInfo(_Symbol,MODE_TICKVALUE);


Вот об этом можно чуток? Не понимаю его смысла в этом коде.
 
trader781:
Вот об этом можно чуток?

Размер минимального изменения цены инструмента в валюте депозита

Стоимость пункта разная у каждого инструмента, и не равняет "1", как к примеру по евро/долл. 

 
Vitaly Muzichenko:

Размер минимального изменения цены инструмента в валюте депозита

Стоимость пункта разная у каждого инструмента, и не равняет "1", как к примеру по евро/долл. 

ага, теперь понял

но это получается что можно также задать плавающий стоп к примеру (еквити=баланс*1.1) или (еквити = баланс*0.9) 

есть там такие инструменты? 

 
trader781:

ага, теперь понял

но это получается что можно также задать плавающий стоп к примеру (еквити=баланс*1.1) или (еквити = баланс*0.9) 

есть там такие инструменты? 

У вас уже есть конкретная цена, от которой только осталось тралить по аналогу простого трала, только простой трал опирается от цены открытия позиции = OrderOpenPrice() , а здесь на усреднённую высчитанную цену, и модифицирует все позиции на один уровень