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

 
Vinin >>:

Она отображается, просто вне пределов экрана. Сделай в отдельном окне.

"в отдельном окне" - это как?

 
splxgf >>:

Это форум по программированию, а не эллиотчисковкий... может стоит прогуляться на http://elliottwave.ru/

На этом форуме обсуждаются торговые стратегии,а торговля по волнам Эллиотта

является тоже стратегией,не правда ли ?

 
dmmikl86 писал(а) >>

"в отдельном окне" - это как?

#property indicator_separate_window
 
dmmikl86 >>:

"в отдельном окне" - это как?

В одну телегу впрячь неможно

Коня и трепетную лань. (с)

Ваш индикатор неизбежно распадается на составляющие, даже если вывести его в отдельном окне. Очень неудобно на одном графике выводить для GPPUSD значение 1.5, а для GBPJPY значение 145.0 без применения специальных ухищрений.

 

Добрый вечер! Пробую создать свой советник.. делал по аналогии с другим советником на пересечение МА и обратного пересечения..

Но сделав со своими параметрами... у меня открывает позиции только в одном направлении и не закрывает их даже..

Как мне добавить сюда функцию, чтоб закрывала при обратном пересечении линии..

В общем, маэстра помогите!:-(

....

При пересечении синей линии вверх покупали, а при пересечении вниз закрытие.

При пересечении красной линии вверх продаём, а при пересечении вниз закрытие.

Как видно на картинке, такая система не работает..

Помогите с кодом немного..пожалуйста!


extern double Lots               = 0.1;
double Points;
int init ()
  {
   Points = MarketInfo (Symbol(), MODE_POINT);
   return(0);
  }
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
   if(buys>0) return(buys);
   else       return(-sells);
  }
double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal();  
   int    losses=0;                 
   lot=NormalizeDouble(AccountFreeMargin()*0.02/1000.0,1);
   if(3>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         //----
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1) lot=NormalizeDouble(lot-lot*losses/3,1);
     }
   if(lot<0.1) lot=0.1;
   return(lot);
  }
void CheckForOpen()
  {
double apglav1;
double apglav2;
double apsig1;
double apsig2;
int    res;
   if(Volume[0]>1) return;
   apglav1 =iCustom(NULL,0,"Caska",0,1); // первая линия на 1м баре
   apsig1 =iCustom(NULL,0,"Caska",1,1); // вторая линия на 1м баре   
   apglav2 =iCustom(NULL,0,"Caska",0,2); // первая линия на 2м баре
   apsig2 =iCustom(NULL,0,"Caska",1,2); // вторая линия на 2м баре
     if (apglav2<apsig2 && apglav1>apsig1)
     {
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,"",MAGICMA,0,Blue);
      return;
     }
     if (apglav2>apsig2 && apglav1<apsig1)
     {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,"",MAGICMA,0,Red);
      return;
     }
  }
  void CheckForClose()
  {
double apglav1;
double apglav2;
double apsig1;
double apsig2;
   if(Volume[0]>1) return;
   apglav1 =iCustom(NULL,0,"Caska",0,1); // первая линия на 1м баре
   apsig1 =iCustom(NULL,0,"Caska",1,1); // вторая линия на 1м баре   
   apglav2 =iCustom(NULL,0,"Caska",0,2); // первая линия на 2м баре
   apsig2 =iCustom(NULL,0,"Caska",1,2); // вторая линия на 2м бар
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      if(OrderType()==OP_BUY)
        {
        if(apglav2>apsig2 && apglav1<apsig1) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
        break;
        }
   if(OrderType()==OP_SELL)
        {
        if(apglav2<apsig2 && apglav1>apsig1) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
        break;
        }
}
}
void start()
  {
   if(Bars<100 || IsTradeAllowed()==false) return;
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
  }
 

Эллиотчики всегда есть на форумах где говорится о торговле. Создайте тему и задайте вопрос. И можно вопрос здесь. Может и отвечу или еще кто ответит.

 
DDFedor >>:

поздно... таймер запущен... 'Волновой анализ'

Ща саблюк к бану сведёт и эту ветку.

 
Ibiss >>:

При пересечении синей линии вверх покупали, а при пересечении вниз закрытие.

При пересечении красной линии вверх продаём, а при пересечении вниз закрытие.

Как видно на картинке, такая система не работает..

Помогите с кодом немного..пожалуйста!


Да вроде все правилно. (мельком посмотрел)

Только. Вот это выражение 

if(Volume[0]>1) return;

лучше убрать вовсе. "Это" корректно работает только в тестере. А в онлайне работать почти не будет!

Лучше  сделать норм. работу по Ценам открытия. 

 

ув. форумчане!

вот написал индикатор - и проблема, не рисуеться средняя скользящая (Buf_2), вот код:

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red

extern int average=14;
//---- buffers
double Buf_1[], Buf_2[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, Buf_1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1, Buf_2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    i, 
          Counted_bars=IndicatorCounted();


//----
//====================================================================
// график тела с объемом
double sum_b=0.0;
i=Bars-Counted_bars-1;           // Индекс первого непосчитанного
   while(i>=0) 
      {  
       //----
       if (Close[i]>Open[i]) {
         sum_b = sum_b + (Close[i]-Open[i])*Volume[i];
         Buf_1[i]=sum_b;
         }
         
       if (Close[i]<Open[i]) {
         sum_b = sum_b - (Open[i]-Close[i])*Volume[i];
         Buf_1[i]=sum_b;
         }
         
       if (NormalizeDouble(Close[i],Digits)==NormalizeDouble(Open[i],Digits)) {
         Buf_1[i] = Buf_1[i-1];
         }
         
       i--;
       //----
      }
//====================================================================
// average
int n=0;
   while(i>=0) 
      {  
       //----
       while(n<=average){
         Buf_2[i]=Buf_1[i-n];
         n++;
         }
       
       i--;
       //----
      }

//----
   return(0);
  }
//+------------------------------------------------------------------+
помогите понять в чем проблема?
 

Urain писал(а) >>

Ща саблюк к бану сведёт и эту ветку.

Да, прикольно.

2 Oper. Если вкратце, то чтобы торговать чисто по волнам, то надо иметь МОЗГ с быстродействием компьютера. Именно мозг и и менно с таким быстродействием. Или торговать на месячном графике(со всеми вытекающими ну хотя бы на Д1 ). Т.к. только за месяц можно новичку вычислить все ВАРИАНТЫ развития событий, Учитывая ВСЮ историю которую тоже надо иметь, причем ОЧЕНЬ желательно с начала торговли инструмента. Или, как вариант, и заодно ответ на вопрос - как узнать как выглядит вторая волна(вы задали). ЛЮБОЙ разворот начинается с ПЕРВОЙ волны. Коррекция к первой есть вторая. Берите М15, на нем вы детально увидите начало движения, коррекцию к нему( первая и вторая волны - ПАТТЕРН)если вы проделаете это сто раз(рассмотрите разворот), то ответ на Ваш вопрос готов. Только надо учесть, что рынок часто рисует фигуру без продолжения, т.е. если Вы увидели такой ПАТТЕРН, в реальности, а не на истории, то его можно считать истинным, только по развитии тенденции в том же направлении, частенько паттерн ломается. Вобщем надо иметь кучу условий чтобы торговать по волнам.

Лично я не обладаю частью этих возможностей.

1. Недюжиный ум.

2. Много времени на освоение очень сложной темы.

3. Котировки с начала торговли инструментом.

3. Абстрактное мышление.

4.Надо постоянно держать ВСЮ волновую картину хотябы за год в голове(вот где мозг то нужен) и не просто держать, а с вариантами. Вариантов очень много как и типов коррекции. Короче это как оптимизация параметров - добавил параметр, два значения - вариантов в два раза больше, а если пять параметров, а если 1000 значений?

Вобщем мозга не хватает. И времени. и котировок.

И еще много чего. Намного проще класический ТА. Работает не хуже ВА, хотя лично я постоянно использую Волновой Анализ, коли уж столько времени потратил на него. Но МНОЖЕСТВО трейдеров прекрасно обходятся без ВА.