Открытие i+20 - страница 4

 
kstar1:
Спасибо Вам огромное evillive!
Не вижу где тут благодарности ставят. В мобильной версии, походу, не предусмотренно. Приду с работы наставлю ))).
Про флажки читал поверхностно и не понял, как ими пользоваться. 
Где про них можно почитать по-подробнее и простыми словами? "Есть сигнал - нет сигнала" - очень интересная мысль, логику ожидания сигнала можно написать вокруг одной переменной.

 Только на одной переменной врядли. Да и от вида сигнала многое зависит, сигнал может поступать в виде ценовых данных, или кода направления торговли (например 0 - покупка, 1 - продажа, EMPTY_VALUE - ждать), или ещё и параллельно с нескольких источников.

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

Нет универсальных решений, на все случаи. Нужно сначала обдумать систему, а код - это вторично. 

 
evillive:

 Только на одной переменной врядли. Да и от вида сигнала многое зависит, сигнал может поступать в виде ценовых данных, или кода направления торговли (например 0 - покупка, 1 - продажа, EMPTY_VALUE - ждать), или ещё и параллельно с нескольких источников.

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

Нет универсальных решений, на все случаи. Нужно сначала обдумать систему, а код - это вторично. 

На словах все просто было, а как начал пробовать, появились трудности. Точнее одна. Как на следующем тике пропустить проверку уже полученного сигнала? Чую, что тот самый флаг надо использовать, а как не пойму. Хотя бы простейший пример куска кода.

if (Signal_1 == buy)
 {
  if (TimeSeconds(TimeCurrent()) >= TimeWaiting)
   {
    if (Signal_2 == buy)
     {
     OpenBuy();
     }
   }
 }

 В такой, например, конструкции, как использовать флаг? Или сама конструкция не верна?

 
kstar1:

На словах все просто было, а как начал пробовать, появились трудности. Точнее одна. Как на следующем тике пропустить проверку уже полученного сигнала? Чую, что тот самый флаг надо использовать, а как не пойму. Хотя бы простейший пример куска кода.

 В такой, например, конструкции, как использовать флаг? Или сама конструкция не верна?

Зачем усложнять?

Вот вы обработали первый сигнал? И что с ним дальше?

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

А что мешает открыть позицию и пока цена ближе какого-то количества пунктов  от неё - не вызывать торговую функцию? Или просто пока есть открытая позиция по символу, не торговать, это как ваша ТС задумана уже. 

А сигналы пусть их приходят, как пришли, так и уйдут. 

 
evillive:

Зачем усложнять?

Вот вы обработали первый сигнал? И что с ним дальше?

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

А что мешает открыть позицию и пока цена ближе какого-то количества пунктов  от неё - не вызывать торговую функцию? Или просто пока есть открытая позиция по символу, не торговать, это как ваша ТС задумана уже. 

А сигналы пусть их приходят, как пришли, так и уйдут. 

В том-то и дело, что ТС расчитана на открытие позиции после подтверждающего второго сигнала, полученного только в течении трех баров. Если за три свечи второй сигнал не случился, то заново ждем первый.
Я сей час на работе накатал в блокноте от руки примерный код, только с телефона долго его набирать, но попробую.

 
int TimeSig=0;
bool Flag=false;

void InTick {
if (Flag==false)
  {
   if (Signal_1==buy)
     {
      Flag = true;
      TimeSig = ВремяСервера;
     }
     return;
  }
else
  {
   if (ВремяСервера >= ВремяОжидания)
     {
      if (Signal_2==buy)
        {
         OpenBuy();
         Flag = false;
        }
        return;
      }
     Flag = false;
     return;
  }
return;
}

Вроде все фигурные проставил. И временными функциями мог напутать.
Только проверка второго сигнала получается на следующем тике.
Если можно проще, с удовольствием выслушу.
 
kstar1:


Вроде все фигрные проставил. 
Только проверка второго сигнала получается на следующем тике.
Если можно проще, с удовольствием выслушу.

Зачем две переменные под сигналы? Одной недостаточно? Ретурн в онтик - слишком радикально, как по-моему, особенно если ещё их больше одного, а уж в конце функции его вообще не надо ставить, тип войд этого не требует.

Ведь в этой функции ещё много чего обрабатывать можно в промежутках между торговыми опперациями.

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

А так вроде принцип использования флага усвоен. 

 
evillive:

Зачем две переменные под сигналы? Одной недостаточно? Ретурн в онтик - слишком радикально, как по-моему, особенно если ещё и больше одного. Ведь в этой функции ещё много чего обрабатывать можно в промежутках между торговыми опперациями.

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

А так вроде принцип использования флага усвоен. 

 

 

Два индикатора - два сигнала. В Онтик-это для примера, торговля у меня в отдельной функции, хотя возвратов, может действительно много))). А если после первого сигнала его убрать, то второй проверится в том же тике?
Про обработку между тиками слышал, но у меня еще не настолько, нагружен советник)))
За похвалу спасибо! Думал флаги - это темный лес.
Я теперь не пойму куда в этой конструкции провеку сигнала на sell воткнуть. Заместо какого-нибудь ретурна просится, а какого запутался)))

 
Заместо первого ретурна?
Если нет buy, ищем sell.
 
kstar1:
Два индикатора - два сигнала. В Онтик-это для примера, торговля у меня в отдельной функции, хотя возвратов, может действительно много))). А если после первого сигнала его убрать, то второй проверится в том же тике?
Про обработку между тиками слышал, но у меня еще не настолько, нагружен советник)))
За похвалу спасибо! Думал флаги - это темный лес.
Я теперь не пойму куда в этой конструкции провеку сигнала на sell воткнуть. Заместо какого-нибудь ретурна просится, а какого запутался)))

А такой вариант не проще будет, когда проверяются оба индикатора сразу, сначала второй, а если есть от него сигнал - то и первый, но рассчитанный на Х баров в прошлом. На выходе - один сигнал, флагов не надо.

Логически это равнозначно получению сигнала от первого индикатора и ожиданию Х баров сигнала от второго индикатора в реальном времени, при условии что индикаторы не перерисовывают.

А дальше уже обрабатывать сигнал по типу - покупка или продажа. 

Подумайте ещё над тем, что состояние флагов очень легко потерять, при первом же глюке советника или перезагрузке терминала. Можно, конечно, каждые 5 секунд писать в файл всю критичную информацию, но стоит ли оно того...

Я лично предпочитаю пользоваться тем, что труднее всего потерять и что всегда доступно - текущими ценами, историей котировок, списком открытых позиций и списком истории торгов. Этого вполне достаточно. 

 
evillive:

А такой вариант не проще будет, когда проверяются оба индикатора сразу, сначала второй, а если есть от него сигнал - то и первый, но рассчитанный на Х баров в прошлом. На выходе - один сигнал, флагов не надо.

Логически это равнозначно получению сигнала от первого индикатора и ожиданию Х баров сигнала от второго индикатора в реальном времени, при условии что индикаторы не перерисовывают.

А дальше уже обрабатывать сигнал по типу - покупка или продажа. 

Я так сначала и делал. При подключении советник хватает прошлый сигнал, который может быть уже не актуаленым, а для моего скальпинга это не допустимо. И первым сигналом могут быть оба индикатора, но подтверждающим только один из них. Над этой логикой мне то же еще голову поломать, ввиду последних изменений.
Причина обращения: