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

 
PapaYozh:

Я бы сказал "около 80"

Точно скажу, их ровно 80. И у sss2019 все правильно с параметрами. Но что это за дикий индикатор с таким количеством параметров???
 
Попробовал у себя поставить, он ещё и тормознутый. Так и не у видел от него ничего, только Метатрейдер повесил.
 
Sepulca:

Точно скажу, их ровно 80. И у sss2019 все правильно с параметрами. Но что это за дикий индикатор с таким количеством параметров???

Так в том то и дело что все правильно, но все равно ошибка
 

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

if (UseTrailing)
{ 
  for (int trall=0; trall<OrdersTotal(); trall++) 
  {
    if (!(OrderSelect(trall, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol()!=Symb)continue;        
 
    if (Tip==0 && top!=1) 
       {
        RefreshRates();
        SLM=OrderOpenPrice();
        if (Bid-OrderOpenPrice() > WithoutLoss*Point   ) 
           {
           if (OrderStopLoss() < Bid-WithoutLoss*Point) 
              {
              OrderModify(Ticket_B, OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0, Blue);
              top=1;
               }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
         continue;                              // Повторная попытка
         return;                                // Выход из start()

            }
        }
 
    if (Tip==1 && top!=2) 
       {
        RefreshRates();
        SLM=OrderOpenPrice();
       if ( OrderOpenPrice()-Ask > WithoutLoss*Point) 
          {
          if (OrderStopLoss() > Ask+WithoutLoss*Point) 
             {
              OrderModify(Ticket_S, OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0, Blue);
              top=2;
              }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
         continue;                              // Повторная попытка
         return;                                // Выход из start()

           }
         }
 
Egori4:

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

Вы работаете в цикле по всем ордерам, но при этом есть некая переменная Tip, которая не меняется и неизвестно чему равна. Плюс вы анализируете один ордер, а модифицируете совершенно другой с тикетом, хранящимся в переменной Ticket_B или Ticket_S соответственно
 
ilunga:
Вы работаете в цикле по всем ордерам, но при этом есть некая переменная Tip, которая не меняется и неизвестно чему равна. Плюс вы анализируете один ордер, а модифицируете совершенно другой с тикетом, хранящимся в переменной Ticket_B или Ticket_S соответственно
тогда мне нужно еще Тип ордера проверить? (если Tip=0, то это бай, если Tip=1 - селл. а Ticket_B - открытый бай, Ticket_S - открытый селл)
 
Sepulca:


Так при открытие отложенного ордера задайте время истечения отложенного ордера, скажем 23:59, он сам и закроется.

nt OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

пардоньте...что-то никак не получается задать время (формат не могу понять). попробовал задать время истечения через 24 часа (OrderOpenTime()+86400), но если ордер открылся на час-два позже, то и закроется позже...
 

Доброго времени суток.Люди, кто-нибудь, помогите разобраться с функцией WindowScreenShot. 3-й день никто не отвечает((. Написал скрипт следующего содержания (см. приложенный файл).

В 2 словах о скрипте. Скрипт предназначен для создания скриншотов текущего графика окна клиентского терминала.Во внешней переменной extern datetime Время_бара задается время бара, начиная с которого и вплоть до нулевого бара будет создан скриншот (с учетом правого отступа на графике). В строке

int bar_number=iBarShift(NULL,0,Время_бара,true)

ищется порядковый номер бара, заданного во внешней переменной строкой extern datetime Время_бара. И уже непосредственно в самой функции, в строке

bool f=WindowScreenShot(name+".gif",1024,768,bar_number,Масштаб,Вид_графика)

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

int bar_number=iBarShift(NULL,0,Время_бара,true)

оставить без изменений, то получим такой скриншот


То есть ни одного бара на скриншоте нет (хотя в строке

int bar_number=iBarShift(NULL,0,Время_бара,true)

должен был быть вычислен номер бара по времени)

Если же данную строку представить следующим образом

int bar_number=iBarShift(NULL,0,Время_бара,true)+2

то получим тот скриншот, к-й и хотели:

Вопрос: почему в случае, если эта строка строка имеет вид

int bar_number=iBarShift(NULL,0,Время_бара,true)

скриншот делается со сдвигом на 2 бара вправо от заданного в вышеуказанной строке?

P.S. Чтобы не захламлять форум, заранее благодарю за ответ
Файлы:
 
Egori4:
пардоньте...что-то никак не получается задать время (формат не могу понять). попробовал задать время истечения через 24 часа (OrderOpenTime()+86400), но если ордер открылся на час-два позже, то и закроется позже...


Я бы попробовал так:

exp=iTime(Symbol(),PERIOD_D1,0)+86340;
Где iTime(Symbol(),PERIOD_D1,0) время открытя дневного бара, а 86340 это 23часа 59 минут в секундах.
 
Egori4:
тогда мне нужно еще Тип ордера проверить? (если Tip=0, то это бай, если Tip=1 - селл. а Ticket_B - открытый бай, Ticket_S - открытый селл)

Если у вас тикеты хранятся в Ticket_B и Ticket_S, то зачем вам вообще цикл?

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

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