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

 
TarasBY:

Кто-нибудь подскажет в чём засада???


пока не будет самого индикатора - никто не подскажет
 
Vinin:


Возможно. Если конечно ДЦ это поддерживает.

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


А этот ряд грнаничений распрострооняется на торговю в онлайне? Если нет, то все грустно. Код ничего не открывает:

int magic = 428;//магический номер эксперта
extern double volume = 0.1;//объем выставляемого ордера
extern int slippage = 3;//проскальзывание
int OPB;//метка выставляемого ордера на покупку
int OPS;//метка выставляемого ордера на продажу
int Profit=1;//уровень профита открытых ордеров
string comB = "Выставили ордер Buy";//комментарий ордера
string comS = "Выставили ордер Sell";//комментарий ордера
double StochasticCAD;//положение основной линии Стохастики на текущем баре по USDCAD
double StochasticAUD;//положение основной линии Стохастики на текущем баре по AUDUSD

double SARCAD;//текущее положение индикатора по USDCAD
double SARСCAD;//положение индикатора бар назад по USDCAD
double SARAUD;//текущее положение индикатора по AUDUSD
double SARСAUD;//положение индикатора бар назад по AUDUSD


int start()
  {
  
//______________________________определение значений переменных_______________________ 


      StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0); 
      StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);
      
      SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
      SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
      SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
      SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);
      
      double bidCAD=MarketInfo("USDCAD",MODE_BID);
      double askCAD=MarketInfo("USDCAD",MODE_ASK);
      double bidAUD=MarketInfo("AUDUSD",MODE_BID);
      double askAUD=MarketInfo("AUDUSD",MODE_ASK);


........................


//______________выставление ордеров______________________________________________________________________
    
  
    if (SARCAD>askCAD && SARСCAD<bidCAD && SARAUD<bidAUD && SARСAUD>askAUD && OPB<1)//определим условия
     
     {  //_______Buy_______ 

          if(!IsTradeAllowed())
               {
                  Alert("занят торговый поток, повторим попытку бай...");
                  return(-1);
               }
          OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //выставим ордер
            
            if(OPB == -1)
              {
                 Alert("GBPUSD"," ошибка: бай", GetLastError());
                 return(-1);
              }
         
            if(OPB > 1)
            Alert ("GBPUSD","Выставили ордер на покупку!");

     }
      else
     {//_______Sell_______
  
         if (SARСCAD>askCAD && SARCAD<bidCAD && SARСAUD<bidAUD && SARAUD>askAUD && OPS<1)//определим условия
     
         {
          
           if(!IsTradeAllowed())
                {
                   Alert("занят торговый поток, повторим попытку селл...");
                   return(-1);
                }
        
           OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //выставим ордер


             if(OPS == -1)
               {
                  Alert("GBPUSD"," ошибка: селл", GetLastError());
                  return(-1);
               }
         
             if(OPS > 1)
             Alert ("GBPUSD","Выставили ордер на продажу!");

         }
     }    
   return(0);//выход
  }
 
mInvIn:

Всем привет.

Подскажите пожалуйста: можно ли после проведения тестирования на истории каким-либо способом выудить коментарий или magic номер каждой совершенной сделки, или любым другим способом идентифицировать сделки? Попробую объяснить смысл. Допустим запрограмировал несколько паттернов, прогнал советника на истории, результат, как это часто бывает - слив. Было бы интересно посмотреть, какая из фигур и в каких рыночных условиях сливает больше и чаще, а какая (если такая есть) приносит хоть какой-то профит.

Зарание спасибо за ответы.

Сделайте проще. Задавайте номер паттерна как extern параметр. Советник должен открывать позы только по этому паттерну. А, если, например, указать ноль, то он открывается по любым паттернам. Прогоняете оптимизацию по всем паттернам. Получаете суммарную картину и разбивку по паттернам.
 
Нужна функция "Новый ордер" наподобие "Нового бара". Функция должна иметь значение TRUE только на один тик, следующий за моментом, когда ордер открылся. Т.е. в момент изменения количества открытых ордеров в бОльшую сторону. Прошу помочь
 
Techno:
перебор исторических ордеров есть?
Нет, только рыночных и отложенных.
 
IgorM:


есть такая проблема - у меня тож такое было, если советник много сделок в год совершает - возможно много данных сохраняется для вывода итогового результата или может быть индикаторные буфера память съедают

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

Спасибо, Игорь ! Интуитивно я так и делаю. Думал, что вдруг можно как-то и для большего периода не терять скорость ?
 

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

Суть проблемы:

Пишу индикатор, ловит точки в буфера, всего должно быть 4, 2 собрал нормально, значения как положено по барам, либо нулевые либо, цена, тут все Ок, но нужны еще 2 буфера в которые нужно помещать значения таким образом: если найдено ненулевое значение для буфера 0, то проверка есть ли предыдущее ненулевое значение в буфере 0, и если оно меньше, то текущее значение записывается в буфер 2. и соответственно для буфера 3 и 1 только там проверка на большее предыдущее значение, хочется изящного решения чтоб это "на лету" вычислялось, а не тупо переборами и здоровенными циклами, просто это мой первый индикатор, советники и скрипты писал уже, а вот с индикатором и его буферами запутался...

...................

Counted_bars=IndicatorCounted(); // Количество просчитанных баров

i=Bars-Counted_bars-1; // Индекс первого непосчитанного

while(i>1) // Цикл по непосчитанным барам

{

if (..............) // тут все работает

{

Buf_0[i]=High[i];

{вот тут хочется вычислить Buf_2[i] }

}

if (..............) //тут тоже все работает

{

Buf_1[i]=Low[i];

{а тут хочется вычислить Buf_3[i] }

}

i--;

// Расчёт индекса следующего бара

}

//--------------------------------------------------------------------

return; // Выход из спец. ф-ии start()

}

//--------------------------------------------------------------------

 
Что чаще происходит - бай или селл? Имеется в виду глобально.
 
ChachaGames:

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

Суть проблемы:

Пишу индикатор, ловит точки в буфера, всего должно быть 4, 2 собрал нормально, значения как положено по барам, либо нулевые либо, цена, тут все Ок, но нужны еще 2 буфера в которые нужно помещать значения таким образом: если найдено ненулевое значение для буфера 0, то проверка есть ли предыдущее ненулевое значение в буфере 0, и если оно меньше, то текущее значение записывается в буфер 2. и соответственно для буфера 3 и 1 только там проверка на большее предыдущее значение, хочется изящного решения чтоб это "на лету" вычислялось, а не тупо переборами и здоровенными циклами, просто это мой первый индикатор, советники и скрипты писал уже, а вот с индикатором и его буферами запутался...

...................

Counted_bars=IndicatorCounted(); // Количество просчитанных баров

i=Bars-Counted_bars-1; // Индекс первого непосчитанного

while(i>1) // Цикл по непосчитанным барам

{

if (..............) // тут все работает

{

Buf_0[i]=High[i];

{вот тут хочется вычислить Buf_2[i] }

}

if (..............) //тут тоже все работает

{

Buf_1[i]=Low[i];

{а тут хочется вычислить Buf_3[i] }

}

i--;

// Расчёт индекса следующего бара

}

//--------------------------------------------------------------------

return; // Выход из спец. ф-ии start()

}

//--------------------------------------------------------------------

Грубо говоря как красиво узнать индекс предыдущего ненулевого значения в буфере?
 
_SS_:
Что чаще происходит - бай или селл? Имеется в виду глобально.
Ровно пополам на каждую продажу есть свой покупатель :)