Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 560

 
Artyom Trishkin:

Вопросы странные ответы сложно по потоку мысли выбулькнулось что-то невозможно что удержать в каше потока мыслей пожалуйста...

А это на каком языке вы общаетесь?

 
Alexey Viktorov:

А это на каком языке вы общаетесь?

Думаю, на понятном вопрошающему :)
 

Добрый день! Подскажите пжл. где взять бесплатный СКРИПТ для торговли ложного пробоя от уровня.

 
barmaley1:

Добрый день! Подскажите пжл. где взять бесплатный СКРИПТ для торговли ложного пробоя от уровня.

Скрипт тут не поможет.

 

Здравствуйте! Ребят, подскажите пожалуйста.

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

Сохранять это всё я думаю нужно в структуре:

- цена входа

- был ли перенесён SL в безубыток

- пиковая цена для расчёта разворота


В каждом тике необходимо выполнять расчёты для каждого из открытых ордеров

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

 
Decromor:

Здравствуйте! Ребят, подскажите пожалуйста.

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

Сохранять это всё я думаю нужно в структуре:

- цена входа

- был ли перенесён SL в безубыток

- пиковая цена для расчёта разворота


В каждом тике необходимо выполнять расчёты для каждого из открытых ордеров

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

В принципе, Вы все сами и описали))

В коде это будет выглядеть так:

   for (int i = OrdersTotal() - 1; i >= 0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS))          
         continue;
         
      if (OrderSymbol() != Symbol())
         continue;  
      
      if (m_nMagicNumber != OrderMagicNumber()) 
         continue;

      if (OrderType() == OP_BUY)
         if (!SaveOrderInfo(m_stBuySeries))
            return false;

      if (OrderType() == OP_SELL)
         if (!SaveOrderInfo(m_stSellSeries))
            return false;
   }

m_nMagicNumber - ID ордеров эксперта,

m_stBuySeries и m_stSellSeries - структуры, хранящие данные по всем найденным ордерам заданного типа. Например, можно описать их так:

struct SeriesInfo
{
   int            nLastOrderTicket;                                                                // Тикет последнего открытого ордера
   int            nOrdersCnt;

   double         fSeriesTotalProfit;
   double         fVolumeSumm;
   double         fMinOrdersPrice;
   double         fMaxOrdersPrice;
   datetime       dtLastOrderTime;                                                                 // Время открытия последнего ордера
   OrderInfo      starrOrderInfo[];   
   
   bool           Init()
   {  
      nOrdersCnt = 0;
      nLastOrderTicket = 0;
      fSeriesTotalProfit = 0.0;
      fVolumeSumm = 0.0;
      fMinOrdersPrice = DBL_MAX;
      fMaxOrdersPrice = 0.0;
      dtLastOrderTime = 0;
      return ArrayResize(starrOrderInfo, 0, 100) == 0;
   }
};

Функция SaveOrderInfo для таких структур будет такой:

bool SaveOrderInfo(SeriesInfo &stSeriesInfo)
{
   // Проверка возможности добавления ордера в серию
   int nTotal = ArraySize(stSeriesInfo.starrOrderInfo);
   if (ArrayResize(stSeriesInfo.starrOrderInfo, nTotal + 1, 100) < 0)
   {
      Alert(MQLInfoString(MQL_PROGRAM_NAME), (TerminalInfoString(TERMINAL_LANGUAGE) == "Russian")? ": нехватка памяти для записи данных об очередном ордере. Эксперт отключен." : 
                                                                                                   ": unable to allocate the memory for next order. Expert is turned off.");
      return false;
   }
   
   // Запись ордера
   stSeriesInfo.starrOrderInfo[nTotal].nType = OrderType();
   stSeriesInfo.starrOrderInfo[nTotal].nTicket = OrderTicket();
   stSeriesInfo.starrOrderInfo[nTotal].fVolume = OrderLots();
   stSeriesInfo.starrOrderInfo[nTotal].fTP = OrderTakeProfit();
   stSeriesInfo.starrOrderInfo[nTotal].fSL = OrderStopLoss();
   stSeriesInfo.starrOrderInfo[nTotal].fOpenPrice = OrderOpenPrice();
   stSeriesInfo.starrOrderInfo[nTotal].fProfit = OrderProfit() + OrderSwap() + OrderCommission();
   stSeriesInfo.starrOrderInfo[nTotal].dtOpenTime = OrderOpenTime();
   
   stSeriesInfo.fSeriesTotalProfit += stSeriesInfo.starrOrderInfo[nTotal].fProfit;
   stSeriesInfo.fVolumeSumm += stSeriesInfo.starrOrderInfo[nTotal].fVolume;
   stSeriesInfo.fMinOrdersPrice = MathMin(stSeriesInfo.fMinOrdersPrice, OrderOpenPrice());
   stSeriesInfo.fMaxOrdersPrice = MathMax(stSeriesInfo.fMaxOrdersPrice, OrderOpenPrice());
   
   if (OrderOpenTime() > stSeriesInfo.dtLastOrderTime)
   {
      stSeriesInfo.dtLastOrderTime = OrderOpenTime();
      stSeriesInfo.nLastOrderTicket = OrderTicket();
   }
   
   return true;
}
 

чуть не в тему.

https://www.finam.ru/profile/tovary/aluminum/export/?market=24

получил файл.

пытаюсь его запихнуть в символ.

результат удручает

спсб

 
Ihor Herasko:

В принципе, Вы все сами и описали))

В коде это будет выглядеть так:

m_nMagicNumber - ID ордеров эксперта,

m_stBuySeries и m_stSellSeries - структуры, хранящие данные по всем найденным ордерам заданного типа. Например, можно описать их так:

Функция SaveOrderInfo для таких структур будет такой:

Большое Вам спасибо за такую подробную помощь!

 

Добрый день!

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

Большое Вам спасибо.

 
Aleksandr Lishchenko:

Добрый день!

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

Большое Вам спасибо.

Просто:

if (AccountInfoInteger(ACCOUNT_LOGIN) != <номер счета>)
   return;
Причина обращения: