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

 
Valerius:


Попробуйте обновить котировки.  Сервис - Архив котировок - выберите вашу валютную пару - загрузить.

Если не поможет, то переустановите метатрейдер.


Я пробывал переустановить несколько раз и даже открыть ноавый счет.... Не помогло. С чем это может бы связоно? 

Спосибо.

 
sidovi:


Я пробывал переустановить несколько раз и даже открыть ноавый счет.... Не помогло. С чем это может бы связоно? 

Спосибо.


А в папке, куда устанавливается метатрейдер вы удаляли все файлы перед установкой?

И с архивом котировок вы пробовали?

 
a196012a:

Все ордера большего объема открываются только объемом 0.3 лота. Все ордера меньшего объема, в ответ на закрытие которых по СЛ открываются ордера объемом 0,3 лота, открываются объемом 0.1 лот. Только 0,1 и 0.3. Других объемов нет.

Во время закрытия по СЛ ордера объемом 0,3 запомнить час открытия ордера в ответ на закрытие которого он был открыт( то есть ордера объемом 0.1 лот).

Спасибо за помощь.

Не подскажете заодно а где настраивается опция которая отправляет сообщения на .адрес моей электронной почты, когда на мой пост пришел ответ.

Еще раз спасибо огромное.


А вам собственно что нужно, алгоритм или саму написанную функцию?
 
a196012a:

Спасибо за отклик.

Мне или алгоритм , или функцию.

Главное что бы код запоминал значение часа после закрытия по СЛ  ордера объемом 0.3

Я не знаю как закодировать именно это действие.

Если ордер объемом 0.3 закрылся по СЛ

    {
     A2= значение часа открытия  ордера меньшего объема в ответ на закрытие которого он открылся
    }

===================================================================================================

Если несколько ордеров объемом 0.1  закрылись по СЛ на ОДНОМ ТИКЕ

{

открыть по цене закрытия КАЖДОГО закрытого ордера отдельный  ордер объемом 0.3

}

===================================================================================================

Если несколько ордеров объемом 0.3  закрылись по СЛ на ОДНОМ ТИКЕ

{

запомнить значение часа открытия КАЖДОГО соответствующего  ордера объемом 0.1

}

Я написал работающий код для открытия и закрытия ордеров( см. первый пост)

Но не знаю каким кодом его дополнить , что бы сохранять значение часа открытия ордера объемом 0.1.

И не знаю как закодировать открытие ордеров и запоминание значения часа открытия в случае если на одном тике закрылось по СЛ несколько ордеров.

Если в связи с реализацией моей идеи нужно поменять код который я написал - я не возражаю, если Вы его поменяете.

КОНЕЧНАЯ ЦЕЛЬ ВСЕЙ МОЕЙ ПРОГРАММЫ - ЗАПОМНИТЬ ЗНАЧЕНИЕ ЧАСА ОТКРЫТИЯ . А все остальные операции( в т.ч и открытие ордеров) подчинены этой цели и носят вспомогательный характер.

Если бы я знал как обойтись без них , я бы не включал их в код.

Спасибо еще раз.


Вот накидал примерно программку. Посмотрите, разберитесь. Там комментарии есть.

extern int MagicNumber=123;

datetime time;
//=================================================================
void start()
{
int er,se;

if(prov_open_orders()) //Проверяем, есть ли открытые ордера
 {
  se=sear();//Ищем последний ордер, который закрылся по стопу. Если последний ордер закрылся по профиту
            //то просто возвращается нулевое значение
            //Если Последний ордер закрылся по по стопу, то ищем ордер с лотом 0.1 и возвращаем
           //его время открытия. В переменной time будет время открытия ордера с лотом 0.1
  if(se==1)
   {
    if(OrderType()==OP_BUY && OrderProfit()<0)
     {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er=OrderSend(Symbol(),OP_SELL,0.3,Bid ,3,Bid+400*Point,Bid-200*Point,"jfh",MagicNumber);
      time=SearTim(se);//Теперь находим время ордера с лотом 0.1
     }
   }
  if(se==2)
   {
    if(OrderType()==OP_SELL && OrderProfit()<0)
     {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
      er=OrderSend(Symbol(),OP_BUY,0.3,Ask ,3,Ask-400*Point,Ask+200*Point,"jfh",MagicNumber);
      time=SearTim(se);//Теперь находим время ордера с лотом 0.1
     }
   }
 }

return;
}

//========================
bool prov_open_orders()
{
for(int is=OrdersTotal()-1; is >= 0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_TRADES))
      {
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         {
          if(OrderType()==OP_BUY || OrderType()==OP_SELL)
           {
            return(false); // есть открытые ордера (любые)
           }
         }
      }
   }
return(true);
}

//=================================================================
datetime SearTim(int s)
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
      {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType()==OP_SELL && OrderProfit()<0 && OrderLots()==0.1)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(OrderOpenTime());
           }
          if(OrderType()==OP_BUY && OrderProfit()<0 && OrderLots()==0.1)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(OrderOpenTime());
           }
         }
      }
   }
return(NULL);
}

//=================================================================
int sear()
{
for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))
      {
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderProfit()>0)
           {//Если  закрылся по профиту то просто ухоим из цикла.
              return(0);
           }
          if(OrderType()==OP_SELL && OrderProfit()<0)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(2);
           }
          if(OrderType()==OP_BUY && OrderProfit()<0)
           {//Если закрылся по стопу, то открываем противоположный ордер с увеличенным лотом
            return(1);
           }
         }
      }
   }
return(0);
}
 
Valerius:


А в папке, куда устанавливается метатрейдер вы удаляли все файлы перед установкой?

И с архивом котировок вы пробовали?


Да, 0 результат :((
 
sidovi:

Да, 0 результат :((


Тогда только к своему ДЦ обращаться в службу поддержки...

В первый раз такое вижу.

 
Valerius:


Тогда только к своему ДЦ обращаться в службу поддержки...

В первый раз такое вижу.


Как вы думайте, есть ли в windows 10 служба котороя влияет на это?
 
sidovi:

Как вы думайте, есть ли в windows 10 служба котороя влияет на это?

Нет. Нету такой
 
Victor Nikolaev:

Нет. Нету такой

Спасибо
 
a196012a:

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

Я только осваиваю азы программирования по учебнику Ковалева и по функциям, которые изложены в нем.

В Вашем коде я встретил функции , которые я не встречал ни в учебнике, ни в Сode Base

Вот функции которые мне не знакомы

sear();

SearTim(se);

 prov_open_orders()

Буду очень признателен, если подскажете где можно о них почитать.

Прямо в том самом коде.
Причина обращения: