Форекс сигналы

 

Форекс сигналы.

У меня возник вот какой вопрос: каким образом кто отслеживает позиции в советниках? Допустим есть сигнал, по нему открылась поза - как присвоить ей именно такой магик (или как вообще реализовать это), чтобы он был уникален и чтобы соответствовал только этому сигналу. Цель - научить советника вести свои позы независимо от количества сигналов и открытости поз. Т.е. скажем чтоб если пришел один сигнал - он открылся, потом второй - а первая позиция еще открыта - он открывает вторую и ведет их паралельно. Если закрывается вторая а сигнал сохранился - переоткрываться по нему он уже не должен, поскольку время сигнала было именно тогда. Другой вопрос что если интернет пропал и поза вовремя не открылась а сигнал сохранился - советник также должен открыть позицию и вести ее.
Заранее благодарен.

 
На нашем сайте в разделе Статьи есть много полезного, в том числе:
 

Я делал ведение по маджику по такому алгоритму

задаю константу маджика допустим 10200

задем по разным сигналам дабы понимать какой ордер по какому открыт, присваиваю открываемому ордеру маджик 10200+Идентификатор сигнала

а затем пишешь простенькую фи-ю определения что ордер принадлежит нашему советнику

bool checkMagic(int magic)
{
  return (magic > D_MAGIC || magic < D_MAGIC+99);
}

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

 
Rosh:
На нашем сайте в разделе Статьи есть много полезного, в том числе:


Спасибо, Rosh, вторая статья очень познавательна, но на мой вопрос ответить не смогла. Также не смог найти отета и в других статьях. Я знаю что такое MagicNumber и естественно его использую. Меня инересовало не само ведение позиций, а каким образом я могу идентифицировать торговый сигнал, присвоить этому сигналу некий уникальный номер или как-то его (сигнал!) идентифицировать, а затем открывать по нему только одну позицию и уже ее вести.

Вот пример простого кода, в котором я бы хотел это реализовать :

void start() {
double MA1, MA2, MA3, MA4;
MA1=iMA(Symbol(),240,55,0,0,0,0);
MA2=iMA(Symbol(),240,89,0,0,0,0);
MA3=iMA(Symbol(),240,55,0,0,0,1);
MA4=iMA(Symbol(),240,89,0,0,0,1);
 
if (MA1>MA2 && MA3<MA4) OpenPositionBuy();
if (MA1<MA2 && MA3>MA4) OpenPositionSell();
 
return(0);
}
Я понимаю что можно передавать в функции OpenPositionBuy() и OpenPositionSell() магический номер и в условия открытия вставить функцию проверки по данному номеру. Этот номер может быть как уникальным на советник, так и в формате datetime по текушему часу, дню, неделе и тп. Я также понимаю что можно после закрытия позиции сделать например дополнительную функцию проверки по HistoryTotal() на предмет времени закрытия, профита, лося и тп. Но каким образом я могу идентифицировать сигнал, т. е. сказать "такой сигнал уже имел такую-то позицию - больше открывать нельзя" или наоборот - мне не понятно. Подскажите пожалуйста.
 
scorpionk:

Я делал ведение по маджику по такому алгоритму

задаю константу маджика допустим 10200

задем по разным сигналам дабы понимать какой ордер по какому открыт, присваиваю открываемому ордеру маджик 10200+Идентификатор сигнала

а затем пишешь простенькую фи-ю определения что ордер принадлежит нашему советнику

bool checkMagic(int magic)
{
  return (magic > D_MAGIC || magic < D_MAGIC+99);
}

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


Супер, отлично...только вопрос как раз в том КАК идентифицировать сигнал :) как Вы это делаете ?
 

Может кто-нибудь помочь ?

 
Например, так

1. Придумай для сигнала уникальное обозначение
2. Пиши сигналы в файл, чтобы не потерять при перезагрузке терминала
3. При появлении сигнала читай файл, ищи там сигнал
 
rmax:
Например, так

1. Придумай для сигнала уникальное обозначение
2. Пиши сигналы в файл, чтобы не потерять при перезагрузке терминала
3. При появлении сигнала читай файл, ищи там сигнал



спасибо! попробую..с записью в файл и его чтением просто слабо был знаком посредством MQL, но должно сработать :)
 
Loknar:
rmax:
Например, так

1. Придумай для сигнала уникальное обозначение
2. Пиши сигналы в файл, чтобы не потерять при перезагрузке терминала
3. При появлении сигнала читай файл, ищи там сигнал



спасибо! попробую..с записью в файл и его чтением просто слабо был знаком посредством MQL, но должно сработать :)
Вот, кстати, тут библиотечка для удобства записи в файл
'Библиотека функций для работы с INI-файлами.'
 
Loknar:
Супер, отлично...только вопрос как раз в том КАК идентифицировать сигнал :) как Вы это делаете ?

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

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

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