[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 92

 
Shniperson >>:
Господа. а как сделать чтобы при торговле на Н4 учитывались значения баров на Н1 ? например if(......&& Close[0](бар Н1)>High[1](бар Н1) ???????????

Пользуйтесь iClose() и iHigh() - в этих функциях можно задавать произвольный таймфрейм

 
Чего-то понять не могу, почему присваивание одного буфера к другому не коректно (результат Buffer1 не выводится в окно индикатора). и второй вопрос, зачем индикатору просчитывать нулевой бар и предыдущий (limit=2), когда можно ограничится только текущим нулевым?

#property indicator_separate_window
#property indicator_buffers 1

extern int FastMA=3;
extern int SlowMA=25;

double Buffer1[];


double Buffer2[];

int init()
{
  SetIndexBuffer(0,Buffer1);
  SetIndexBuffer(1,Buffer2);
  return(0);
}

int start()
{
  int limit,counted_bars;
  counted_bars=IndicatorCounted();   //counted_bars=Bars-1
  if(counted_bars>0) counted_bars--; //??? counted_bars=Bars-1-1
  limit=Bars-counted_bars;     //лимит теперь равен двум
  for(int i=0; i<limit; i++){
     Buffer2[i]=MathAbs(Close[i]-Open[i]);
  }
  for(i=0; i<limit; i++){
    Buffer1[i]=Buffer2[i]*(-1);
  }
}

 
Уважаемые программисты помогите вставить звук в индикатор, который бы звучал при пересечении индикатором нуля. Спасибо!
Файлы:
 
C-4 >>:
Чего-то понять не могу, почему присваивание одного буфера к другому не коректно (результат Buffer1 не выводится в окно индикатора)..

Для рисующего буфера не хватает SetIndexStyle(0,DRAW_LINE);, а для расчетного IndicatorBuffers(2);



 
Бинго! Ну конечно IndicatorBuffers(2), я думал достаточно указать SetIndexBuffer. Кстати у меня рисует и без SetIndexStyle(0,DRAW_LINE), получается тонкая черная линия - настройки по умолчанию  задействованы.
 

Здравствуйте, знатоки.

Я составил советник который только закрывает открытые ордера! (полуавтоматическая торговля).

Правила закрытия: Основное закрытие идет по ценовому каналу, если пробивается на 1 пункт вверх закрытие SHELL,

если на 1 пункт вниз закрытие BAY. помимо этого устанавливается страховка безубыток несколько пунктов на определенном растоянии.

У меня вопрос все ли я правильно сделал, корректен ли код!!??

extern bool check=false; 
extern int PeriodP=12; 
extern double TrailingStop = 35;// расстояние после которого будем устанавливать безубыток
extern double X=5;//установка в + 5 пунктов! 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double P_up0, P_down0, P_up1, P_down1;
   int cnt, total;

  P_up0=iCustom(Symbol(),Period(),"Ценовой канал",PeriodP,0,0);
  P_down0=iCustom(Symbol(),Period(),"Ценовой канал",PeriodP,1,0);
  P_up1=iCustom(Symbol(),Period(),"Ценовой канал",PeriodP,0,1);
  P_down1=iCustom(Symbol(),Period(),"Ценовой канал",PeriodP,1,1);

    
   for(cnt=OrdersTotal()-1;cnt>=0;cnt--) {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&    OrderSymbol()==Symbol())   {
         if(OrderType()==OP_BUY) 
            {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
                 return(0); 
                }
            if(TrailingStop>0)  
              {                  
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop && OrderStopLoss()!=OrderOpenPrice()+X*Point)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+X*Point,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else  
         {
            
            if(P_up1<P_up0) 
            {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
               return(0); 
              }
            if(TrailingStop>0)  
              {               
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if(NormalizeDouble(OrderStopLoss(),Digits) != NormalizeDouble(OrderOpenPrice()-X*Point,Digits))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-X*Point,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
            
           }
        }
     
   if (check) Order_Open();
   return(0);
  }
//+------------------------------------------------------------------+

void Order_Open(){
   if (OrdersTotal()<=1) {
      OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"",20080421,0);
      OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",20080421,0);
   }
}
 
Нет условия закрытия длинной позиции, сейчас Бай-ордер закроется в любом случае.
Если у тебя есть перебор ордеров, обязательно ставь до или после OrderSelect - RefreshRates().
 
Roger >>:
Нет условия закрытия длинной позиции, сейчас Бай-ордер закроется в любом случае.

Нашел ошибку. действительно упустил закрытие BUY.

окончательный вариант. покрайней мере компиляция прошла без ошибок.

extern bool check=false; 
extern int PeriodP=12; 
extern double TrailingStop = 35;// расстояние после которого будем устанавливать безубыток
extern double X=5;//установка в + 5 пунктов! 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double P_up0, P_down0, P_up1, P_down1;
   int cnt, total;

  P_up0=iCustom(Symbol(),Period(),"Ценовой канал",PeriodP,0,0);
  P_down0=iCustom(Symbol(),Period(),"Ценовой канал",PeriodP,1,0);
  P_up1=iCustom(Symbol(),Period(),"Ценовой канал",PeriodP,0,1);
  P_down1=iCustom(Symbol(),Period(),"Ценовой канал",PeriodP,1,1);

    
   for(cnt=OrdersTotal()-1;cnt>=0;cnt--) {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&    OrderSymbol()==Symbol())   {
         if(OrderType()==OP_BUY) {  
            
            if(P_down1>P_down0) {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
                 return(0); 
                }
            if(TrailingStop>0)  
              {                  
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop && OrderStopLoss()!=OrderOpenPrice()+X*Point)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+X*Point,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
            else  
            {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
               return(0); 
              }
            if(TrailingStop>0)  
              {               
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if(NormalizeDouble(OrderStopLoss(),Digits) != NormalizeDouble(OrderOpenPrice()-X*Point,Digits))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-X*Point,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
            
           }
        
     }
   if (check) Order_Open();
   return(0);
  }
//+------------------------------------------------------------------+

void Order_Open(){
   if (OrdersTotal()<=1) {
      OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"",20080421,0);
      OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",20080421,0);
   }
}
 

очень "простой" вопрос: как посчитать цену 1 (одного) открытого индексного лота в валюте депозита?

пример: вчера окрыл 1 лот nikkei цена на момент октрытия 9400 пунктов. вопрос: как узнать сколько денех стоило 9400 (НЕ залог! а именно цена лота) в валюте депозита на момент открытия?

 
jobber писал(а) >>

очень "простой" вопрос: как посчитать цену 1 (одного) открытого индексного лота в валюте депозита?

пример: вчера окрыл 1 лот nikkei цена на момент октрытия 9400 пунктов. вопрос: как узнать сколько денех стоило 9400 (НЕ залог! а именно цена лота) в валюте депозита на момент открытия?

А МаркетИнфо() не поможет с соотвествующим параметром