Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 31

 

Подскажите пожалуйста, сделал индикатор, основывающийся на движении нескольких валютных пар, но он бывает, пересчитывается. Ничего космического - он обращается к параметрам свечей. Возможно, он лажает из-за того, что

свечи начинают открываться только с моментом поступления первого тика по данной свече и если по одному инструменту уже идет новая свеча, то по второму она еще не сформировалась. Думаю здесь собака порылась.

Подскажите, может есть способ заставить его делать просчет только когда все новые свечи сформировались? может iTime(symbol1,,1)==iTime(symbol2,,1)?

 

Добрый день коллеги!

Подскажите пожалуйста, правильна ли логика в коде.

Суть кода в формуле: 

TRIN = (Растущие пары/Снижающиеся пары)/ (Объем растущих пар/Объем снижающихся пар)

 

double Index[];
double instr_up, instr_dn, vol_dn, vol_up;
//+------------------------------------------------------------------+
int init()
{
   SetIndexBuffer(0,Index);
   SetIndexStyle(0,DRAW_LINE);   
   string Tf;
   if(Period()==1) Tf="M1";
   if(Period()==5) Tf="M5";
   if(Period()==15) Tf="M15";
   if(Period()==30) Tf="M30";
   if(Period()==60) Tf="H1";
   if(Period()==240) Tf="H4";
   if(Period()==1440) Tf="D1";
   if(Period()==10080) Tf="W1";
   if(Period()==43200) Tf="MN";         
        string short_name="TRIN("+Depth+","+Tf+")";
        IndicatorShortName(short_name);
   IndicatorDigits(0);
   return(0);
}

//---- функция проверки цены закрытия на максимум Доллара США за период Depth
int newh(string symbol,int i)
      {
         datetime time_bar = Time[i];
         int bar_no = iBarShift(symbol, Period(), time_bar, false);
                
         if(symbol=="EURUSD" || symbol=="GBPUSD" || symbol=="AUDUSD" || symbol=="NZDUSD")
            {

               int j=iLowest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     int nh=1;                                                 
                  }
               else                                                                 
                  {
                     nh=0;                                              
                  }       
            }
         else
            {
               j=iHighest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     nh=1;                                                 
                  }
               else                                                                 
                  {
                     nh=0;                                              
                  }             
            }
         return(nh);      
      }

//---- функция проверки цены закрытия на минимум Доллара США за период Depth
int newl(string symbol,int i)
      {
         datetime time_bar = Time[i];
         int bar_no = iBarShift(symbol, Period(), time_bar, false);      
      
         if(symbol=="EURUSD" || symbol=="GBPUSD" || symbol=="AUDUSD" || symbol=="NZDUSD")
            {
               int j=iHighest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     int nl=1;                                                 
                  }
               else                                                                 
                  {
                     nl=0;                                              
                  }       
            }
         else
            {
               j=iLowest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     nl=1;                                                 
                  }
               else                                                                 
                  {
                     nl=0;                                              
                  }             
            }
         return(nl);      
      }
//+------------------------------------------------------------------+
int start()
{
   int limit=Bars-IndicatorCounted();
   for(int i=1; i<limit; i++)
          {       
            if (newh("EURUSD",i) > 0                              //-- Если пара росла, то
             {instr_up=instr_up+1;vol_up+=iVolume("EURUSD",0,i);}   //-- instr_up - увеличиваем на 1 и vol_up - увеличиваем на Volume по этой паре   
           else //if (newl("EURUSD",i) > 0)                         //-- иначе
              {instr_dn=instr_dn+1;vol_dn+=iVolume("EURUSD",0,i);}  //-- instr_dn - увеличиваем на 1 и vol_dn - увеличиваем на Volume по этой паре
              
            if (newh("GBPUSD",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("GBPUSD",0,i);}
           else //if (newl("GBPUSD",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("GBPUSD",0,i);}
            
            if (newh("USDCHF",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("USDCHF",0,i);}
           else //if (newl("USDCHF",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("USDCHF",0,i);}
            
            if (newh("USDJPY",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("USDJPY",0,i);}
           else if (newl("USDJPY",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("USDJPY",0,i);}
            
            if (newh("AUDUSD",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("AUDUSD",0,i);}
           else //if (newl("AUDUSD",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("AUDUSD",0,i);}
            
            if (newh("USDCAD",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("USDCAD",0,i);}
           else //if (newl("USDCAD",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("USDCAD",0,i);}
            
            if (newh("NZDUSD",i) > 0)
             {instr_up=instr_up+1;vol_up+=iVolume("NZDUSD",0,i);}
           else //if (newl("NZDUSD",i) > 0)
              {instr_dn=instr_dn+1;vol_dn+=iVolume("NZDUSD",0,i);}   
     
     if (instr_dn == 0)instr_dn=EMPTY;  // -- Если 
     if (vol_dn == 0)vol_dn=EMPTY;      // -- значения
     if (instr_up == 0)instr_up=EMPTY;  // -- нулевые
     if (vol_up == 0)vol_up=EMPTY;
     
     Index[i]=(instr_up/instr_dn)/(vol_up/vol_dn);  // -- TRIN
     
     instr_up=0;instr_dn=0;vol_up=0;vol_dn=0;  // -- Обнуление
     }
     
        return(0);
}

 Вот что получилось:

 TRIN

 

 Спасибо!

 

подскажите пожалуйста 

1 может ли эксперт пополнить баланс

2 если у трейдера есть % на свободные средства - как это реализовать в тестере или это и так работает? 

 

1. Если для целей тестирования, то проще задавать хорошую начальную сумму, а ММ строить исходя из нужной.

2. Для целей тестирования это абсолютно не нужно. Спред важнее.

 
splxgf:

1. Если для целей тестирования, то проще задавать хорошую начальную сумму, а ММ строить исходя из нужной.

2. Для целей тестирования это абсолютно не нужно. Спред важнее.


и 1 и 2 вы знаете как и что я тестирую и зачем мне это нужно? вы видите моего эксперта? вы будете мне говорить что мне лучше?

и ещё на закуску мне спред не важен а вот своп критичен )))) эксперты бывают разные

 
sdm:


и 1 и 2 вы знаете как и что я тестирую и зачем мне это нужно? вы видите моего эксперта? вы будете мне говорить что мне лучше?

и ещё на закуску мне спред не важен а вот своп критичен )))) эксперты бывают разные


Или Вам сюда. Или Вы не научились ставить вопросы
 
sdm:


и 1 и 2 вы знаете как и что я тестирую и зачем мне это нужно? вы видите моего эксперта? вы будете мне говорить что мне лучше?

и ещё на закуску мне спред не важен а вот своп критичен )))) эксперты бывают разные


Ну а что тут знать, если начисляются проценты, то лучше воздержусь от комментариев... Что касается свопов у меня ордера висят по году, свопы вообще не парят.

За это время процентные ставки успевают поменяться или у вас это все расписано с прогнозами в будущем?

 
Vinin:

Или Вам сюда. Или Вы не научились ставить вопросы
Эти вопросы риторические и не предназначаются для всех а только в рамках комента и ваша ссылка не уместна
 
sdm:
Эти вопросы риторические и не предназначаются для всех а только в рамках комента и ваша ссылка не уместна

Еще одна выходка и в баню. За некорректное отношение к другим участникам форума заключающее в задании пространных вопросов
 
splxgf:


Ну а что тут знать, если начисляются проценты, то лучше воздержусь от комментариев... Что касается свопов у меня ордера висят по году, свопы вообще не парят.

За это время процентные ставки успевают поменяться или у вас это все расписано с прогнозами в будущем?

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