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

 

помогите пожалуйста с двумя простейшими скриптами которые открывают

отложенные ордера на buy и sell с установлеными стоплос и тейкпрофит на заданном

растоянии от текущей цены. Как то чудом написал один работающий

но случайно удалил и теперь не могу вспомнить что я сделал что бы он работал.

на вас одна надежда...

sell:


int start()
{
OrderSend(Symbol(),OP_SELLSTOP,0.01,Bid-20*Point,3,Bid+50*Point,Bid-50*Point);

return(0);
}


и buy


int start()

{
OrderSend(Symbol(),OP_BUYSTOP,0.01,Ask+20*Point,3,Bid+50*Point,Bid-50*Point);

return(0);
}

помогите пожалуйста...

 
NickXXX:

Всем привет!

Сегодня упражняюсь со временем.) Например, нужно заставить индикатор что-нибудь делать в определенное время.

Код будет следующий:

Теперь, допустим, хочется, чтобы наш условие отрабатывало не только 21.30, но и в 22.00, 22.30, 23.00, ну и так далее...

Можно конечно сделать следующим образом:

Но мне кажется это как-то нерационально, особенно если будет много контрольных точек. Думаю можно и попроще.

Вопрос, как это сделать проще(правильнее) ?)

Здесь все завит от того поддаются ли временные условия какому-нибудь закону, есть ли закономерность. Например для Вашего случая, каждые полчаса: if (TimeCurrent()%1800==0) {тра-та}. Если логики в этих временных точках нет - Ваш вариант. Только мне он не нравится, это строгое равенство, Емли в эту минуту минуту не будет тика - советник условие пропустит...
 
Figar0:
Здесь все завит от того поддаются ли временные условия какому-нибудь закону, есть ли закономерность. Например для Вашего случая, каждые полчаса: if (TimeCurrent()%1800==0) {тра-та}. Если логики в этих временных точках нет - Ваш вариант. Только мне он не нравится, это строгое равенство, Емли в эту минуту минуту не будет тика - советник условие пропустит...

Т.е. проверять на остаток от деления получается. Но мне кажется, что в таком случае всегда будет остаток...

Со строгим равенством полностью согласен, ещё не додумал. В принципе, можно наверно сделать что-нибудь наподобие интервала, например 16.00 - 16.03.

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

 
NickXXX:

Т.е. проверять на остаток от деления получается. Но мне кажется, что в таком случае всегда будет остаток...


Ну да, Вы правы, лучше так: if (TimeCurrent()%1800<60) {тра-та}.
 
Figar0:

Ну да, Вы правы, лучше так: if (TimeCurrent()%1800<60) {тра-та}.

< 0.6, или что-нибудь еще в этом роде. Остаток от деления всегда меньше единицы :)
 

А если всё-таки через большое количество переменных наподобие:

double Time_Mes_1=21.30;
double Time_Mes_2=22.00;
double Time_Mes_3=22.30;
...

Сильно это плохо? или покатит?

И ещё маленький вопрос, если допустим я задам интервал (например 16.00-16.03) для выполнения условия. Как сделать так, чтобы он его выполнял только один раз, несмотря на приход новых тиков???

 

1. Есть такой тип данных: datetime. Если хочется экзотики, то можно для времени применять int, но double - это уже экстрим.

2. Отмотайте страниц 5-10 назад: там написано, как сделать то, чего Вам хочется.

 

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

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

Обе приведённые ниже строчки глючат.

Заранее благодарю.

if((OrderMagicNumber()==MAGIC || OrderMagicNumber()==777))

if((OrderMagicNumber()==(MAGIC || 777))

Сама прога:

int OrdTicket_b()
 {
  string SMB=Symbol();
  int OrdTicket;
  int MAGIC;
  int i;
  for (i=0; i<OrdersHistoryTotal(); i++)
   {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
     {
      if(OrderSymbol()==SMB)
       {
        if(OrderMagicNumber()==MAGIC || OrderMagicNumber()==777)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            OrdTicket=OrderTicket();
           }  
         }  
       }          
     }
   }
  return(OrdTicket);
 }
 
tara:
Пожалуйста, не несите ересь в люди. Идите занудствуйте куда-нить в другое место, благо хватает...
 
tara:

1. Есть такой тип данных: datetime. Если хочется экзотики, то можно для времени применять int, но double - это уже экстрим.

2. Отмотайте страниц 5-10 назад: там написано, как сделать то, чего Вам хочется.

1. Ну здесь double был применен только для сложения минут и часов. чтобы можно было обозначать контрольные точки в виде HH.MM (например 16.23).

2. Посмотрел последние страницы, там конечно есть про datetime, но не совсем то. Там просто делают вывод в формате HH.MM время последнего ордера.