Вопрос к знатокам - страница 11

 
Urain >>:

Acronis True Imidge програмуля для создания и восстановления Back Up . Бекапите диск С.

Поднимаетесь с Back Up и система как была на момент создания.

Время подъёма 4 мин.

Спасибо и вам.

 
rid >>:

Спасибо и вам.

уважаемый rid, а вы не моглиб мне помочь вот тут с вопросом) https://forum.mql4.com/ru/15972/page145

 
MQLBankir >>:
Доброго времени суток!
пишу советники только первый месяц.
С простыми разобрался: есть сигнал - открывай позицию. А если мне необходимо несколько сигналов?
Например.
1 й сигнал от к-л индикатора
2-й сигнал наступает позже, но 1-е условие уже ЛОЖЬ. Я понимаю, что программа исполняется каждый тик, а мне необходимо запомнить, что первое условие(сигнал) еще действительно и не отменено.
Я думал, может записывать в файл. Но еще не очень разбираюсь с этим.
Возможно есть другой выход, через функцию или еще как-нибудь?
подскажите, плиззз

Я, правда, не крутой спец в этом деле.

Но есть предположение, что если после выполнения 1-го сигнала вы "повесите" флаг, то пусть он висит.

Даже если 1-й сигнал уже исчерпает себя!

Тогда второй сигнал без проблем даст сигнал на открытие.

Если я правильно п0нял вопрос...

 
Infinity >>:

уважаемый rid, а вы не моглиб мне помочь вот тут с вопросом) https://forum.mql4.com/ru/15972/page145

Вы там спрашиваете про закрытие? Посмотрите сюда

'Закрытие позиций. По сигналу индикатора.'

//------------------------

Я, там в свое время, вникал в эту тему.

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

Вот вам примерный  блок закрытия:

//********* Закрытие позиций ****************************************
if (AutoClose) { //если выключатель закрытия включен 
//----переменные для закрытия позиций ----
double Stochast_0 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,0);
double Stochast_1 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,1);
//----------------------------------------------------------------------
  for (int v=0; v<OrdersTotal(); v++)                             {       
      if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES))               {           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNum)   { 
//-----------------------------------------------------                  
if (OrderType() == OP_BUY) { 
      if(Stochast_1>75 && Stochast_0<75)     {
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию
                 //return(0); // выходим
                }       
     }  
 //--------------------------------------------------------
if (OrderType() == OP_SELL) { 
      if(Stochast_1<25 && Stochast_0>25)    {
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
     }  
 //-------------------------------------------------------                       
    }  // Symbol()  
  } // select
 } //total
} //Close_
 
rid >>:

Я, правда, не крутой спец в этом деле.

Но есть предположение, что если после выполнения 1-го сигнала вы "повесите" флаг, то пусть он висит.

Даже если 1-й сигнал уже исчерпает себя!

Тогда второй сигнал без проблем даст сигнал на открытие.

Если я правильно пнял вопрос...



ну это если учитывать наступление второго сигнала после первого,..... и только так, но... может по проверке 2го сигнала на открытие 1й сигнал уже обратиться из false в true тогда нужно будет завершать расчет 2го сигнала, и приступать к проходу первого сигнала !

 
rid >>:

Вы там спрашиваете про закрытие? Посмотрите сюда

'Закрытие позиций. По сигналу индикатора.'

//------------------------

Я, там в свое время, вникал в эту тему.

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

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

 

Посмотрите выше. Я там добавил пример.

Только вместо MagicNum вы вставьте свой mn

Во внешние параметры добавьте

extern bool  AutoClose = true;

 
rid >>:

Только вместо MagicNum вы вставьте свой mn

Во внешние параметры добавьте

extern  bool AutoClose = true;

да да спасибо я разобрался)) 

 
Infinity >>:

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

Попробуйте выбирать ордер по позицие: функция отдаёт тикет t- позиции ордера в списке торговых ордеров.

int Select_POS(int t)
{//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if(OrderSelect(t, SELECT_BY_POS, MODE_TRADES))TIC[t]=OrderTicket();
else TIC[t]=-1;
return(TIC[t]);
}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
t = OrdersTotal() и уменьшать с каждым обработанным ордером.
 
Urain >>:

Попробуйте выбирать ордер по позицие: функция отдаёт тикет t- позиции ордера в списке торговых ордеров.

t = OrdersTotal() и уменьшать с каждым обработанным ордером.


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

Код закрытия rid подошел,... все работает теперь, проблемма была действительно с определением открытого ордера. Списибо всем еще раз! 

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