Я делал ведение по маджику по такому алгоритму
задаю константу маджика допустим 10200
задем по разным сигналам дабы понимать какой ордер по какому открыт, присваиваю открываемому ордеру маджик 10200+Идентификатор сигнала
а затем пишешь простенькую фи-ю определения что ордер принадлежит нашему советнику
bool checkMagic(int magic) { return (magic > D_MAGIC || magic < D_MAGIC+99); }
ну и соответсвено чтобы определить какой идентификатор просто отнимаешь константу маджика от маждика у ордера и получаешь идентификатор сигнала
Спасибо, 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() на предмет времени закрытия, профита, лося и тп. Но каким образом я могу идентифицировать сигнал, т. е. сказать "такой сигнал уже имел такую-то позицию - больше открывать нельзя" или наоборот - мне не понятно. Подскажите пожалуйста.
Я делал ведение по маджику по такому алгоритму
задаю константу маджика допустим 10200
задем по разным сигналам дабы понимать какой ордер по какому открыт, присваиваю открываемому ордеру маджик 10200+Идентификатор сигнала
а затем пишешь простенькую фи-ю определения что ордер принадлежит нашему советнику
bool checkMagic(int magic) { return (magic > D_MAGIC || magic < D_MAGIC+99); }
ну и соответсвено чтобы определить какой идентификатор просто отнимаешь константу маджика от маждика у ордера и получаешь идентификатор сигнала
Супер, отлично...только вопрос как раз в том КАК идентифицировать сигнал :) как Вы это делаете ?
Может кто-нибудь помочь ?
1. Придумай для сигнала уникальное обозначение
2. Пиши сигналы в файл, чтобы не потерять при перезагрузке терминала
3. При появлении сигнала читай файл, ищи там сигнал
Например, так
1. Придумай для сигнала уникальное обозначение
2. Пиши сигналы в файл, чтобы не потерять при перезагрузке терминала
3. При появлении сигнала читай файл, ищи там сигнал
спасибо! попробую..с записью в файл и его чтением просто слабо был знаком посредством MQL, но должно сработать :)
Например, так
1. Придумай для сигнала уникальное обозначение
2. Пиши сигналы в файл, чтобы не потерять при перезагрузке терминала
3. При появлении сигнала читай файл, ищи там сигнал
спасибо! попробую..с записью в файл и его чтением просто слабо был знаком посредством MQL, но должно сработать :)
'Библиотека функций для работы с INI-файлами.'
Супер, отлично...только вопрос как раз в том КАК идентифицировать сигнал :) как Вы это делаете ?
Я не запоминаю сигнал. Советник работает по одному сигналу и я не открою еще одну позу пока есть открытая. в этот момент открытая позиция ведется советником и не анализируется больше сигнал на открытие. если ордер выбивает по стопу или тейку, то робот возможно откроет сразу еще одну позу, если есть условия по алгоритму открытия.
В моем случает нет надобновсти запоминать сигнал. к тому я немного не пойму по каким критериям его можно запомнить?что бы потом с точностью определить что он уже был.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Форекс сигналы.
У меня возник вот какой вопрос: каким образом кто отслеживает позиции в советниках? Допустим есть сигнал, по нему открылась поза - как присвоить ей именно такой магик (или как вообще реализовать это), чтобы он был уникален и чтобы соответствовал только этому сигналу. Цель - научить советника вести свои позы независимо от количества сигналов и открытости поз. Т.е. скажем чтоб если пришел один сигнал - он открылся, потом второй - а первая позиция еще открыта - он открывает вторую и ведет их паралельно. Если закрывается вторая а сигнал сохранился - переоткрываться по нему он уже не должен, поскольку время сигнала было именно тогда. Другой вопрос что если интернет пропал и поза вовремя не открылась а сигнал сохранился - советник также должен открыть позицию и вести ее.
Заранее благодарен.