Комбинации с Magic или перебор случайных чисел. ВОПРОС! - страница 2

 
slayer писал (а) >>
но в работе советника не вижу разницы...как буд-то он не видит их!!!! (((

Magic никак не влияет на работу советника. Вообще никак.

 
slayer писал (а) >>

Ну допустим я хочу что бы он менялся каждый час в 00 минут!!!

Вы уж либо напишите, что необходимо сделать, либо поймите уже, что после открытия ордера меджик у него не меняется. Никак и никем. Так заложено разработчиками. И даже брокер это поле не видит. Меджик дан только вам как программисту, чтобы программно отличать сделки одного советника от другого или внутри одного советника (если есть такая необходимость). Какие еще есть у него "штучки" и как могут быть использованы, напишите, прям заинтересовали чес слово. :)

 

ну хорошо!!! Разложу все по порядку!!!!Есть созданная мною АТС..работает на H1 вместо функции OrdersTotal другая функция. Эта функция работает по Magic! Хочу сделать так, что бы Magic менялся каждый час...т.е.

1. открылся ордер по Magic 123456;

2. Функция зная Magic открывает только один ордер, т.е. возвращает false

3. Пришел новый час и Magic сменился

4. Функция открывает Ордер по новому Magic, но только один раз как в п.2

P.S. Загвоздка в том что пока ордер открыт, больше ордеров не открывается....но условия приходят разные каждый час!!! смена Magic Каждый час позволит мне открывать ордер каждый час не зависимо от того открыт ли ордер на данный момент. Его как бы не существует!!!

 
Я правильно понял проблему, что просто вы не смогли реализовать программную задержку выполнения ордеров и у вас советник либо на каждом тике по ордеру открывает либо открывает один и все, и при этом пропускаются нужные входы?
 
Gans-deGlucker писал (а) >>
Я правильно понял проблему, что просто вы не смогли реализовать программную задержку выполнения ордеров и у вас советник либо на каждом тике по ордеру открывает либо открывает один и все, и при этом пропускаются нужные входы?

не совсем....

1. сигнал существует каждый час

2. советник открывает один ордер (за счет if (Volume[0]>1) return(0);) на каждом баре

а теперь проблема:

1. пока открыт ордер, другой не открывается, потому как открытый ордер имеет фиксированный Magic

2. Если Magic будет меняться каждый час, тогда открытый ордер с "устаревшим" Magic'ом не будет мешать функции открыть новый ордер на открытии нового бара при сигнале на покупку

 

Вот вам подсчет количества ордеров открытых на последнем баре.

   int BuyCount=0;
   int SellCount=0;

      for(int i=0;i<OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
            if(OrderSymbol()==Symbol()){
               if(OrderMagicNumber()==Magic){
                  if(OrderOpenTime()>=iTime(NULL,TimeFrame,0)){
                     switch (OrderType()){
                        case OP_BUY:
                           BuyCount++;
                           break;
                        case OP_SELL:
                           SellCount++;
                           break;   
                     }
                  }
               }
            }
         }
         else{
            return(-1);
         }
      }
 
slayer писал (а) >>

а теперь проблема:

1. пока открыт ордер, другой не открывается, потому как открытый ордер имеет фиксированный Magic

2. Если Magic будет меняться каждый час, тогда открытый ордер с "устаревшим" Magic'ом не будет мешать функции открыть новый ордер на открытии нового бара при сигнале на покупку

Проблема в том, что ты пока не понимаешь как правильно работать с Magic'ом. Он не создаёт, а решает именно такие вот "проблемы". Где-то там была статья про учёт ордеров в советнике, плюс учебник (я сам не читал, но рекомендую).

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