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

 
Окей ребят, большое спасибо, очень помогли, извенити за "гущу" ))
 
Parn25:

Народ подсобите не много!!

Пытаюсь написать советник по стратегии утренний канал. Суть такова в 6:01по паре EURGBP определяем канал движения цены с 0 часов до 6 утра. Выставляем два отложенника и если сработанный отложенник закрылся стопом, то открываем в обратном направление. Не получается именно вторая часть стратегии. Т.е. если сработал стоп то не получается открыть ордер в обратном направление.

Так вам на стопе сразу нужно отложенник стоповый выставлять! Он автоматом то и сработает.

Вот на мусорке нашел, может что пригодится.

void OrderCloseAll(){
   for (int i=0;i<OrdersTotal();i++)
     if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if(OrderType()==OP_BUY)
       OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, CLR_NONE);
      else
      if(OrderType() == OP_SELL)
       OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, CLR_NONE);
}

void OrderDeleteAll(int lots){
     for (int i=0;i<OrdersTotal();i++)
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         if (OrderType()>1&&OrderType()<6)
         if(OrderLots()==lots){
          OrderDelete(OrderTicket());
          i=0;
         }
}
 //----------------------------------------------------
// покупка
void OpenBuyLIMIT(double lot, double price){
   double   SL = NormalizeDouble(price,Digits) - Loss*Point;
   double TP = NormalizeDouble(price,Digits) + Target*Point-MarketInfo(Symbol(),MODE_SPREAD)*Point;
    OrderSend(Symbol(), OP_BUYLIMIT, lot,  NormalizeDouble(price,Digits), Slippage, SL, TP, NULL, STUPID, 0, Blue);
}
 //----------------------------------------------------
// продажа
void OpenSellLIMIT(double lot, double price){
   double   SL = NormalizeDouble(price,Digits) + Loss*Point;
   double TP = NormalizeDouble(price,Digits) - Target*Point+MarketInfo(Symbol(),MODE_SPREAD)*Point;
   OrderSend(Symbol(), OP_SELLLIMIT, lot,  NormalizeDouble(price,Digits), Slippage,  SL, TP, NULL, STUPID, 0, Red);
}
 //----------------------------------------------------
// покупка
void OpenBuySTOP(double lot, double price){
   double   SL = NormalizeDouble(price,Digits) - Loss*Point;
   double TP = NormalizeDouble(price,Digits) + Target*Point-MarketInfo(Symbol(),MODE_SPREAD)*Point;
   OrderSend(Symbol(), OP_BUYSTOP, lot,  NormalizeDouble(price,Digits), Slippage, SL, TP, NULL, STUPID, 0, Blue);
}
 //----------------------------------------------------
// продажа
void OpenSellSTOP(double lot, double price){
  double   SL = NormalizeDouble(price,Digits) + Loss*Point;
  double TP = NormalizeDouble(price,Digits) - Target*Point+MarketInfo(Symbol(),MODE_SPREAD)*Point;
   OrderSend(Symbol(), OP_SELLSTOP, lot,  NormalizeDouble(price,Digits), Slippage,  SL, TP, NULL, STUPID, 0, Red);
}
Файлы:
 
Parn25:

Народ подсобите не много!!

Пытаюсь написать советник по стратегии утренний канал. Суть такова в 6:01по паре EURGBP определяем канал движения цены с 0 часов до 6 утра. Выставляем два отложенника и если сработанный отложенник закрылся стопом, то открываем в обратном направление. Не получается именно вторая часть стратегии. Т.е. если сработал стоп то не получается открыть ордер в обратном направление.
Пример с отложенником примерно так.
Файлы:
 
costy_:
Пример с отложенником примерно так.
ОК спасибо попробую!!
 

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

Сегодня выходные, значит работает только визуальный тестер :) Запускаю в тестере скриптом выгрузку значений индикатора в файл, а он выгружает с текущей реальной даты (с 28 октября 23:55).

Вообщем как передать в скрипт значение (время) последнего бара визуального тестера?

int start =iBarShift(NULL,0,Time[2200+EndB-1]);
int end   =iBarShift(NULL,0,Time[EndB]);

Как передать и расчитать в скрипте EndB - значение последнего бара в тестере?

П.С. на крайний случай запихну весь код скрипта в эксперт ну и т.д.

 

Доброго дня!

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

Разбираюсь с индикатором скорости ROC (код в приложеном файле).

Если я правильно поняла, то логика индикатора в следующем:

на текущем графике берётся опорная МА, от неё строится линия изменения скорости V,

далее рассчитывается, но не отображается МА следующего (большего ТФ), уже от неё рассчитывается следующая линия V.

Аналогично для следующего ТФ .

Вопрос: на поняла данной записи

extern int Bars_V =13; // Колич.баров для расчёта скорост
Из пояснений к коду индикатора сказано, что скорость расчитывается как разница значений 2-х баров.

И ещё.....

Загрузила код данного индикатора в МТ4, на Н4 показания индикатора заканчиваются не на текущем баре, а за примерно 9-10 дней назад по истории.

На других ТФ всё нормально. Почему так?

Заранее благодарна за помощь, с уваженим Ольга

Файлы:
my_roc.mq4  8 kb
 

День добрый!

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

Вопрос. Есть ли еще есть варианты решения, кроме как через OrderOpenTime()?

 
Zar:

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

Сегодня выходные, значит работает только визуальный тестер :) Запускаю в тестере скриптом выгрузку значений индикатора в файл, а он выгружает с текущей реальной даты (с 28 октября 23:55).

Вообщем как передать в скрипт значение (время) последнего бара визуального тестера?

Как передать и расчитать в скрипте EndB - значение последнего бара в тестере?

П.С. на крайний случай запихну весь код скрипта в эксперт ну и т.д.

Скрипт так просто не найдет время тестера (но индикатор найдет), можно в старт тест.советника прикрепить

int start()
{
GlobalVariableSet( "Time_test", Time[0]) ;
.....................

а в скрипт

datetime time_start=GlobalVariableGet( "Time_test");

быстро и надежно ...

 
Operr:

День добрый!

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

Вопрос. Есть ли еще есть варианты решения, кроме как через OrderOpenTime()?

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

А вообщем перефразируйте ... "Необходимо закрывать все открытые позиции через указанный промежуток времени" для каждой отдельной позиции (я так понял вопрос).

 
LOA:

Доброго дня!

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

Разбираюсь с индикатором скорости ROC (код в приложеном файле).

Если я правильно поняла, то логика индикатора в следующем:

на текущем графике берётся опорная МА, от неё строится линия изменения скорости V,

далее рассчитывается, но не отображается МА следующего (большего ТФ), уже от неё рассчитывается следующая линия V.

Аналогично для следующего ТФ .

Вопрос: на поняла данной записи

extern int Bars_V =13; // Колич.баров для расчёта скорост
Из пояснений к коду индикатора сказано, что скорость расчитывается как разница значений 2-х баров.

И ещё.....

Загрузила код данного индикатора в МТ4, на Н4 показания индикатора заканчиваются не на текущем баре, а за примерно 9-10 дней назад по истории.

На других ТФ всё нормально. Почему так?

Заранее благодарна за помощь, с уваженим Ольга

"большего ТФ" - нет, та же МА но данные берутся со смещением Sh_1 ре Sh_1=Bars_V; // Период измерен скорости (баров)

"Аналогично для следующего ТФ ." - нет, в начале стоит переключатель (для каждого ТФ коэффициенты разные K2, K3)

    switch(Period())                 // Расчёт коэффициентов для..
     {                             // .. различных ТФ
      case     1: K2=5;K3=15; break;// Таймфрейм М1
      case     5: K2=3;K3= 6; break;// Таймфрейм М5
      case    15: K2=2;K3= 4; break;// Таймфрейм М15
      case    30: K2=2;K3= 8; break;// Таймфрейм М30
....
Period_MA_2 =K2*Period_MA_1;   // Расчётн.период МА для ближ. ТФ
Period_MA_3 =K3*Period_MA_1;   // Расчётн.период МА для след. ТФ

Определение "Расчётн.период МА для ближ. ТФ" не является истиной, ошибки всегда присутствуют в учебниках (особенно "историях" очень нравятся)

"Вопрос: на поняла данной записи

extern int Bars_V =13; // Колич.баров для расчёта скорост" ищем далее по коду Bars_V ...

   Sh_1=Bars_V;                   // Период измерен скорости (баров)

далее что такое Sh_1, это значение является смещением МА 1 линии скорости и.т.д

// Предназначен для использования в качестве примера в учебнике MQL4.
не совсем удачно подобран пример, почитайте что нить по проще из стандартных индикаторов...