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

 

Ребята, подскажите... Привожу участки кода, где происходит расчет условий входа в рынок. ПОЧЕМУ при данных значениях таймфреймов, полученных в ходе оптимизации

extern int s_signal_period=7;
extern int t_trend_period =7; // 1-M1, 2-M5, 3-M15, 4-M30, 5-H1, 6-H4, 7-D1, 8-W.

т.е. ТФ = дневки, происходит вход в рынок на открытии 4-х часовых свечек, в тестере стратегий, при тестировании на периоде Н4??? Ведь должен же быть вход ТОЛЬКО на открытии дневок - привожу участки кода и отчета тестирования на Н4 и D1, советник с контролем открытия нового бара.

xtern string A4 = "Таймфрейм и параметры технических индикаторов";
extern int s_signal_period=7;
extern int t_trend_period =7;
...
static datetime prevtime = 0;       // по ценам открытия

...
int start()
{
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся
   
   ...                     
//---------------------------------------------В ЛОНГ-------------------------------------------------------------------------      

      if(((type_op()==OP_BUY) || (Buy_signal==true && Sell_signal==false)) && (orderCount==0 || orderCount < 10) && Period_MA_Fast<Period_MA_Slow && delta_fma()>0 && delta_sma()>0 &&   
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,1) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) && //идентификация впадины 
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3) && //с последующим
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,4) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3))   //ростом
            
           WmOrderSend(Symbol(), OP_BUY, Lots_New, Ask,Bid-StopLoss*Point, Bid + TakeProfit*Point, "2MA+Momentum", magic);


//---------------------------------------------В ШОРТ--------------------------------------------------------------------------     
     
      if(((type_op()==OP_SELL) || (Buy_signal==false && Sell_signal==true)) && (orderCount==0 || orderCount < 10) && Period_MA_Fast<Period_MA_Slow  && delta_fma()<0 && delta_sma()<0 &&
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,1) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) && //вершина 
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3) && //с последующим 
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,4) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3))   //падением
      
          
           WmOrderSend(Symbol(), OP_SELL, Lots_New, Bid, Ask+StopLoss*Point, Ask - TakeProfit*Point, "2MA+Momentum", magic); 
      
         
 ...          
}//------------------------------------------Конец Старт-----------------------------------------------------

double delta_fma()
  {
    int signal_period= GetPeriod(s_signal_period);
    return(iMA(Symbol(),signal_period,Period_MA_Fast,0,MODE_EMA,PRICE_CLOSE,1)-
           iMA(Symbol(),signal_period,Period_MA_Fast,0,MODE_EMA,PRICE_CLOSE,3));
  }

double delta_sma()
  {
    int trend_period = GetPeriod(t_trend_period); 
    return(iMA(Symbol(),trend_period,Period_MA_Slow,0,MODE_EMA,PRICE_CLOSE,1)-
           iMA(Symbol(),trend_period,Period_MA_Slow,0,MODE_EMA,PRICE_CLOSE,3));
  }

//для оптимизации по всем периодам по всем периодам
int GetPeriod(int period)
{int periodres;
 switch(period)
  {
   case 1: periodres=1;break;     //M1
   case 2: periodres=5;break;     //M5
   case 3: periodres=15;break;    //M15
   case 4: periodres=30;break;    //M30
   case 5: periodres=60;break;    //H1
   case 6: periodres=240;break;   //H4
   case 7: periodres=1440;break;  //D1
   case 8: periodres=10080;break; //W
   default: periodres=1;break;
  }
return(periodres);
} 

Отчеты. При тестировании на Н4 - вход в рынок каждые 4-ре часа, при выполнении торговых условий, хотя extern int s_signal_period=7;
extern int t_trend_period =7;

D1 - тестирование на D1 - вход в рынок на открытии D1, при тех же extern int s_signal_period=7;
extern int t_trend_period =7;

По идее так и должно быть... Почему же в тестере стратегий происходит вход в рынок на открытии Н4 при тестировании на Н4, но не на открытии дневных свечек???,ведь s_signal_period=7;
extern int t_trend_period =7;

Благодарю за подсказку по этому вопросу.

 
Roman.:

Ребята, подскажите... Привожу участки кода, где происходит расчет условий входа в рынок. ПОЧЕМУ при данных значениях таймфреймов, полученных в ходе оптимизации

т.е. ТФ = дневки, происходит вход в рынок на открытии 4-х часовых свечек, в тестере стратегий, при тестировании на периоде Н4??? Ведь должен же быть вход ТОЛЬКО на открытии дневок - привожу участки кода и отчета тестирования на Н4 и D1, советник с контролем открытия нового бара.

Отчеты. При тестировании на Н4 - вход в рынок каждые 4-ре часа, при выполнении торговых условий, хотя extern int s_signal_period=7;
extern int t_trend_period =7;

D1 - тестирование на D1 - вход в рынок на открытии D1, при тех же extern int s_signal_period=7;
extern int t_trend_period =7;

По идее так и должно быть... Почему же в тестере стратегий происходит вход в рынок на открытии Н4 при тестировании на Н4, но не на открытии дневных свечек???,ведь s_signal_period=7;
extern int t_trend_period =7;

Благодарю за подсказку по этому вопросу.


Приведенного кода недостаточно для ответа
 
Vinin:

Приведенного кода недостаточно для ответа

Сколько кода надо? Сигнальная часть же есть...
 
Vinin:

Приведенного кода недостаточно для ответа

Сейчас тестировал на Н1 - открывает сделки каждый час при s_signal_period=7;
extern int t_trend_period =7;
 
Roman.:

Сейчас тестировал на Н1 - открывает сделки каждый час при s_signal_period=7;
extern int t_trend_period =7;


Есть смысл сделать переменную signal_period глобальной и присваивать ей значение в init()

И изменить контроль нового бара

   if(iTime(Symbol(),signal_period,0) == prevtime)   return(0);  //ждем нового бара
   prevtime = iTime(Symbol(),signal_period,0);                   //если появился новый бар , включаемся
 
Vinin:


Есть смысл сделать переменную signal_period глобальной и присваивать ей значение в init()

И изменить контроль нового бара


Понятно, Виктор, благодарю Вас - сегодня вечером после работы попробую. По результатам напишу в эту ветку.
 
подскажите, как программно узнать, поймал ордер лося или нет?
 
CLAIN:
подскажите, как программно узнать, поймал ордер лося или нет?

Думайте правильно.

Поиск: определение убыточной сделки site :mql4.com, поиск убыточной сделки site :mql4.com

 
CLAIN:
подскажите, как программно узнать, поймал ордер лося или нет?

Если OrderClosePrice()==OrderStopLoss() - то стопудово ордер закрыт по лосс-приказу. Весь фокус в том, в зоне какого профита он был закрыт. Скажем так, трейдер открыл позу, поставил стоп-лосс, а потом, когда поза уехала в профит, подвинул стоп-лосс в зону положителього профита - ну так, чтоб если стоп сработает, чтоб ордер закрылся с прибылью. Цена отыграла назад и снесла ордер по стопу. То есть, у него OrderClosePrice() реально равен OrderStopLoss(). ОРДЕР ПОЙМАЛ ЛОСЯ, только поймал не с убытком, а с профитом. Что делать будете в такой ситуации?
 

Здравствуйте!

Подскажите, как подсчитать размер лота, в зависимости от цены входа, StopLoss и процента от депозита? Допустим вход на 1.4500, StopLoss - 1.4400. Риск имеем 100 пипов. При стоимости пипа 0,1 и риске 2% от баланса (10000 допустим) размер лота будет равен 0,2. Возможно ли вывести эту ыормулу посредством MQL? Я перерыл практитески весь форум и не смог найти ничего подобного. Везде предлагаются абсолютно другие методы расчета лотов.

Спасибо.

Причина обращения: