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

 
Stells:

Добрый день.

Вопрос как тестировать или чьи результаты достовернее ?

В советнике везде явно прописан период Н1.

Тестирую на м1 по опен - явный слив.

тестирую на Н1 все тики - вверх.

чему верить ? заковырка в том, что стопы маленькие несколько пунктов. Профиты большие.

Если в советнике есть явный контроль открытия нового бара и он работает только при открытии нового бара, то можно тестировать по открытию нового бара. Иначе - только тики. Тем более, что стопы маленькие и их явно будет сносить при открытии нового бара, т.к. на М1 за минуту бар может зацепить ваш стоп в несколько пунктов. Протестируйте на М1 все тики.
 
artmedia70:
Если в советнике есть явный контроль открытия нового бара и он работает только при открытии нового бара, то можно тестировать по открытию нового бара. Иначе - только тики. Тем более, что стопы маленькие и их явно будет сносить при открытии нового бара, т.к. на М1 за минуту бар может зацепить ваш стоп в несколько пунктов. Протестируйте на М1 все тики.

чем будет (в теории) отличаться от Н1 все тики ?
 

Здравствуйте! Просьба помочь разобраться в коде, что делаю не так. Сразу скажу я в программирование новичок. Прочитал учебник mql4 и просмотрел множество кодов экспертов, но так и не смог найти ответы на свои вопросы. Терминал у меня с 5 знаками, торговый счёт ECN, изменяющийся спред + комиссия. Советник самый простой, открывает сделки на продажу при пересечении быстрой МА медленную МА сверху вниз и наоборот на покупку - пересечение быстрой МА медленную МА снизу вверх. На самом деле ТС намного сложнее, просто пока не работают нормально все основные функции и не могу ему нормально тестировать, а уж тем более оптимизировать, решил не усложнять код лишними расчётами. Вот сам код советника.

#define MAGICMA  20050610
extern string text1              ="===========================MoneyManagment===========================";
extern double Lots               = 0.1;
extern string text2              ="======================Simple_Close_settings=========================";
extern double TakeProfit         = 100;
extern double StopLoss           = 100;
extern double Bezubitok          = 30; //Расстояние, через которое пройдёт цена от открытия сделки в "+", чтобы перенести СтопЛос в безубыток
extern string text3              = "===================TrailingStopLoss_settings=======================";
extern double Trailing           = 100; //Расстояние, через которое будет подтягиватся СтопЛос к текущей цене
extern double Slippage           = 3; // Допуск проскальзования цены при открытии и закрытии сделок
extern string text4              = "===================Indicator_Trade_System_settings=================";
extern int    Fast_EMA_Period    = 8;
extern int    Slow_EMA_Period    = 21;




//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
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++;
        }
     }
//---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
int CheckForOpen()
  {
   double X1,X2,X3,X4;
   int ticket;

   
   X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
   X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----
if(Volume[0]>1) return;
  {   
      //ENTRY Ask(buy, long) 
      if (X3<=X4 && X1>X2)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,",",MAGICMA,0,White);
        }
      //ENTRY Bid (sell, short)
      if (X3>=X4 && X1<X2)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,",",MAGICMA,0,Red);
        }
  }
//----
  }
//+------------------------------------------------------------------+
//| Check for TrailingStop                                           |
//+------------------------------------------------------------------+
void CheckForTrailing()
 {

     if (Trailing>0) for(int i=0; i<=OrdersTotal();i++) 
     {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if (OrderMagicNumber()==MAGICMA && OrderSymbol()==Symbol()) 
           {
            if (OrderType()==OP_BUY && Bid-OrderOpenPrice()>Trailing*Point && Bid-OrderStopLoss()>Trailing*Point)
            OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
            if (OrderType()==OP_SELL && OrderOpenPrice()-Ask>Trailing*Point && OrderStopLoss()-Ask>Trailing*Point)
            OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
           }
        }
}
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double X1,X2,X3,X4;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
   X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //---- check order type 
     
      if(OrderType()==OP_BUY)
        {
         if(Bid>=(OrderOpenPrice()+TakeProfit*Point)||Bid<=(OrderOpenPrice()-StopLoss*Point))OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
        
      if(OrderType()==OP_SELL)
        {
         if(Ask<=(OrderOpenPrice()-TakeProfit*Point)||Ask>=(OrderOpenPrice()+StopLoss*Point)) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         break;
        }
     }
//----
  }



//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
   if(Bars<25 || IsTradeAllowed()==false) 
     return (0);
   if (AccountFreeMargin()<(100*Point*Lots))
     {
      Print("Стоп! Недостаточно средств для продолжения торговли. Свободная маржа = ", AccountFreeMargin());
      return(0);  
     }
      
   if(Trailing>0) CheckForTrailing();  
     
      
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
   
 
   

   return(0);
  }
//+------------------------------------------------------------------+

Может кто сможет ответить на мои вопросы:

1. При открытии ордеров, в OrderSend где у должны стоять параметры Стоплос и Тейкпрофит у меня стоят нули, при попытки поставить туда другие цифры, эксперт не открывает сделки, я проверил, при ручном открытии сделки есть возможность сразу выставлять СЛ и ТП, в чём может быть дело?

2. Не могу понять, ТП, СЛ и ТС у меня стоят - 100 пунктов, хотя сделки почему-то закрываются не кратно этим пунктам даже с учётом спреда, почему так происходит? Может у меня не работает функция закрытии ордеров? Как в таком случае ограничить убыток изначально установленным СЛ и чтобы он следовал за ценой только в + направление?

3. У моего ДЦ Стоплевел=100 пп., как сделать виртуальные ТП и СЛ, чтобы можно было выставлять уровни меньше Стоплевела, как при ручном закрытии позиций? (Пипсовка на Ecn счетах не возбраняется).

4. Возможно ли сделать следующее и как если можно: сделать реверсивное закрытие и одновременно закрытие по СЛ и ТП с переводом в безубыток (в зависимости от того, какое событие произойдет первым)? Пробовал сделать, но в тестере он открывает одну позицию и не закрывает её до конца теста, а только собирает свопы.) Либо работает что-то одно.

Заранее благодарен всем кто откликнется!

Файлы:
 

Доброго дня ...

Всего один вопрос

Вот скажем берем фрактал на Дейли...Как найти цену при появлении которой заканчивается образование этого фрактала скажем на Н1 ….Желательно чтобы на цене появлялась стрелка ...

 
Cmu4:
Господа, а как подключиться через советник к определенному серверу и порту? Возможно ли это вообще?
Ну так что, нет экспертов в этом вопросе здесь?
 
Cmu4:
Господа, а как подключиться через советник к определенному серверу и порту? Возможно ли это вообще?

что значит подключится? сокет в смысле? или инфу по http считать?
 
Здравствуйте.У меня простой и наверно глупый вопрос.Тестер стратегий может ошибаться?..Какие у вас есть методы тестирования своих стратегий?..Спасибо.
 

Всего один вопрос

Вот скажем берем фрактал на Дейли...Как найти цену при появлении которой заканчивается образование этого фрактала скажем на Н1 ….Желательно чтобы на цене появлялась стрелка ...

 

Добрый день!

Вопрос по специальным функциям: init(), start(), deinit().

Как известно, в том числе из учебника, чтобы эту специальную функцию прервать (выйти) - необходимо ДОПОЛНИТЕЛЬНО прописать оператор

Return (например в условном операторе IF-ELSE).

Что тогда обозначают возвращаемые значения? Например: Return(0) и возможно какое-то другое целое число (Return(1));

 

Всем добрый день!

Помогите пож-та немного подредактировать индикатор "FX5_Divergence_V2.1".

Я работаю с 3 экранами. Индикатор в окне отображается со своим именем и еще с какими-то значениями, а они очень мешают видеть индикатор. Часто из-за этих цифр не видно вершин индикатора и сложно сравнивать вершины одну с другой (на скрине обвела желтым).

Помогите пож-та подправить индикатор так, чтобы высвечивалось только название индикатора, без всяких прочих цифирек)

Индикатор и скрин в приложении.


Заранее спасибо тому, кто сможет помочь)


Файлы:
Причина обращения: