Подскажите пожалуйста команду для робота что бы на 1 свечу он не открывал больше 1-го ордера.
Даже если он забрал свой тэйк на этой свече - не открывать следующий ордер на этой же свече.
Сейчас так выходит что если условия индикаторов выполнены - открыть сделку.
После того как сделка по тэйку закрыта он на этой же свече сразу же открывает новую сделку и вот она уже не нужна мне и создает проблемы.
Ну или может подскажите где про это прочитать что бы самому разобраться.
Нужно строго так 1 свеча - 1 сделка.
Заранее благодарен!
Ещё можно использовать флаг.
Объявить static bool переменную или переменную глобального уровня, пусть будет flag. Ордер открыли - flag = true, открылась новая свеча - flag = false и этот flag добавить к условию открытия ордера.
Объявить static bool переменную или переменную глобального уровня, пусть будет flag. Ордер открыли - flag = true, открылась новая свеча - flag = false и этот flag добавить к условию открытия ордера.
Флаг нужно сохранять в глобальных терминала и восстанааливать при его перезапуске.
Artyom Trishkin: Флаг нужно сохранять в глобальных терминала и восстанааливать при его перезапуске.
Это смотря на каком периоде торговля и возможность перезапуска терминала в течении одного бара открыть ордер и перезапустить терминал.
Не люблю я GV и стараюсь обходиться без них. При запуске советника, всё-равно надо собрать всю информацию по открытым ордерам, так почему-бы не восстановить значение флага при запуске? Это один вариант. Второй вариант начальное значение флага запрещает открытие ордеров и открывается разрешение только на следующем баре. Так получится, что даже если на текущем баре было открытие и перезапуск советника, то флаг по любому будет запрещать открытие ордеров до следующего бара.
Просто если давать совет с такими тонкостями, то самому думать ни о чём не надо будет. Соответственно не исключено возрастание количества вопросов... Зачем самому что-то решать... спроси на форуме и тебе дадут рабочий вариант. И останется только разместить продукт в маркете...
Это смотря на каком периоде торговля и возможность перезапуска терминала в течении одного бара открыть ордер и перезапустить терминал.
Не люблю я GV и стараюсь обходиться без них. При запуске советника, всё-равно надо собрать всю информацию по открытым ордерам, так почему-бы не восстановить значение флага при запуске? Это один вариант. Второй вариант начальное значение флага запрещает открытие ордеров и открывается разрешение только на следующем баре. Так получится, что даже если на текущем баре было открытие и перезапуск советника, то флаг по любому будет запрещать открытие ордеров до следующего бара.
Просто если давать совет с такими тонкостями, то самому думать ни о чём не надо будет. Соответственно не исключено возрастание количества вопросов... Зачем самому что-то решать... спроси на форуме и тебе дадут рабочий вариант. И останется только разместить продукт в маркете...
:)
Привычка у меня - сразу глядеть в будущее.
По мне, именно из-за того, что всё равно флаги восстанавливать, уж лучше глянуть бар открытия позиции, и от него плясать, и не заморачиваться с флагами и их хранением.
По мне, именно из-за того, что всё равно флаги восстанавливать, уж лучше глянуть бар открытия позиции, и от него плясать, и не заморачиваться с флагами и их хранением.
Именно по этой-же причине и женщины нам нравятся разные.
А какая разница, флаг или время открытия позиции??? Хоть как ни крути, а всё-равно что-то надо проверять...
Подскажите пожалуйста команду для робота что бы на 1 свечу он не открывал больше 1-го ордера.
Даже если он забрал свой тэйк на этой свече - не открывать следующий ордер на этой же свече.
Сейчас так выходит что если условия индикаторов выполнены - открыть сделку.
После того как сделка по тэйку закрыта он на этой же свече сразу же открывает новую сделку и вот она уже не нужна мне и создает проблемы.
Ну или может подскажите где про это прочитать что бы самому разобраться.
Нужно строго так 1 свеча - 1 сделка.
Заранее благодарен!
Функция NumberOfBarCloseLastPos().
Эта функция возвращает номер бара закрытия последней позиции или -1. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - NULLозначает текущий рыночный инструмент.
tf - Таймфрейм. Значение по умолчанию - 0 означает текущий таймфрейм.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает номер бара закрытия последней позиции или -1. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий таймфрейм) |//| op - операция ( -1 - любая позиция) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+int NumberOfBarCloseLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
datetime t=0;
int i, k=OrdersHistoryTotal();
if (sy=="" || sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) t=OrderCloseTime();
}
}
}
}
}
}
return(iBarShift(sy, tf, t, True));
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает номер бара открытия последней позиции или -1. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий таймфрейм) |//| op - операция ( -1 - любая позиция) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
datetime t=0;
int i, k=OrdersTotal();
if (sy=="" || sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) t=OrderOpenTime();
}
}
}
}
}
}
return(iBarShift(sy, tf, t, True));
}
Функция NumberOfBarOpenLastPos().
Эта функция возвращает номер бара открытия последней позиции или -1. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - NULLозначает текущий рыночный инструмент.
tf - Таймфрейм. Значение по умолчанию - 0 означает текущий таймфрейм.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
После открытия сделки, через 40 секунд если прибыль больше 15 пунктов, то сделка закрывается моментально, если меньше, то тейкпрофит перемещается на уровень прибыли 15 пунктов.
Эта функция возвращает номер бара закрытия последней позиции или -1. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - NULLозначает текущий рыночный инструмент.
tf - Таймфрейм. Значение по умолчанию - 0 означает текущий таймфрейм.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
Функция NumberOfBarOpenLastPos().
Эта функция возвращает номер бара открытия последней позиции или -1. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - NULLозначает текущий рыночный инструмент.
tf - Таймфрейм. Значение по умолчанию - 0 означает текущий таймфрейм.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
Всем доброго дня!
Подскажите пожалуйста команду для робота что бы на 1 свечу он не открывал больше 1-го ордера.
Даже если он забрал свой тэйк на этой свече - не открывать следующий ордер на этой же свече.
Сейчас так выходит что если условия индикаторов выполнены - открыть сделку.
После того как сделка по тэйку закрыта он на этой же свече сразу же открывает новую сделку и вот она уже не нужна мне и создает проблемы.
Ну или может подскажите где про это прочитать что бы самому разобраться.
Нужно строго так 1 свеча - 1 сделка.
Заранее благодарен!
Всем доброго дня!
Подскажите пожалуйста команду для робота что бы на 1 свечу он не открывал больше 1-го ордера.
Даже если он забрал свой тэйк на этой свече - не открывать следующий ордер на этой же свече.
Сейчас так выходит что если условия индикаторов выполнены - открыть сделку.
После того как сделка по тэйку закрыта он на этой же свече сразу же открывает новую сделку и вот она уже не нужна мне и создает проблемы.
Ну или может подскажите где про это прочитать что бы самому разобраться.
Нужно строго так 1 свеча - 1 сделка.
Заранее благодарен!
Ещё можно использовать флаг.
Объявить static bool переменную или переменную глобального уровня, пусть будет flag. Ордер открыли - flag = true, открылась новая свеча - flag = false и этот flag добавить к условию открытия ордера.
Ещё можно использовать флаг.
Объявить static bool переменную или переменную глобального уровня, пусть будет flag. Ордер открыли - flag = true, открылась новая свеча - flag = false и этот flag добавить к условию открытия ордера.
Флаг нужно сохранять в глобальных терминала и восстанааливать при его перезапуске.
Это смотря на каком периоде торговля и возможность перезапуска терминала в течении одного бара открыть ордер и перезапустить терминал.
Не люблю я GV и стараюсь обходиться без них. При запуске советника, всё-равно надо собрать всю информацию по открытым ордерам, так почему-бы не восстановить значение флага при запуске? Это один вариант. Второй вариант начальное значение флага запрещает открытие ордеров и открывается разрешение только на следующем баре. Так получится, что даже если на текущем баре было открытие и перезапуск советника, то флаг по любому будет запрещать открытие ордеров до следующего бара.
Просто если давать совет с такими тонкостями, то самому думать ни о чём не надо будет. Соответственно не исключено возрастание количества вопросов... Зачем самому что-то решать... спроси на форуме и тебе дадут рабочий вариант. И останется только разместить продукт в маркете...
Это смотря на каком периоде торговля и возможность перезапуска терминала в течении одного бара открыть ордер и перезапустить терминал.
Не люблю я GV и стараюсь обходиться без них. При запуске советника, всё-равно надо собрать всю информацию по открытым ордерам, так почему-бы не восстановить значение флага при запуске? Это один вариант. Второй вариант начальное значение флага запрещает открытие ордеров и открывается разрешение только на следующем баре. Так получится, что даже если на текущем баре было открытие и перезапуск советника, то флаг по любому будет запрещать открытие ордеров до следующего бара.
Просто если давать совет с такими тонкостями, то самому думать ни о чём не надо будет. Соответственно не исключено возрастание количества вопросов... Зачем самому что-то решать... спроси на форуме и тебе дадут рабочий вариант. И останется только разместить продукт в маркете...
:)
Именно по этой-же причине и женщины нам нравятся разные.
А какая разница, флаг или время открытия позиции??? Хоть как ни крути, а всё-равно что-то надо проверять...Здравствуйте! Подскажите как возвращать количество последних убыточных ордеров, после профитных?
Вот моя часть кода что не правильно?
int GetProfitLoss()// Убыток по закрытым ордерам (количество последних убыточных ордеров)
{
int Loss = 0;
datetime lastCloseTime = 0;
int cnt = OrdersHistoryTotal();
for(int i=0; i < cnt; i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId && lastCloseTime < OrderCloseTime())
{
lastCloseTime = OrderCloseTime();
}
if (OrderProfit()<0)
{
Loss ++;
}
if(OrderProfit()>0)
{
break; // Выход из цикла на первом встретившемся прибыльном }
}
}
}
}
return(Loss);
}
Всем доброго дня!
Подскажите пожалуйста команду для робота что бы на 1 свечу он не открывал больше 1-го ордера.
Даже если он забрал свой тэйк на этой свече - не открывать следующий ордер на этой же свече.
Сейчас так выходит что если условия индикаторов выполнены - открыть сделку.
После того как сделка по тэйку закрыта он на этой же свече сразу же открывает новую сделку и вот она уже не нужна мне и создает проблемы.
Ну или может подскажите где про это прочитать что бы самому разобраться.
Нужно строго так 1 свеча - 1 сделка.
Заранее благодарен!
Функция NumberOfBarCloseLastPos().
Эта функция возвращает номер бара закрытия последней позиции или -1. Отбор учитываемых позиций задаётся внешними параметрами:
Функция NumberOfBarOpenLastPos().
Эта функция возвращает номер бара открытия последней позиции или -1. Отбор учитываемых позиций задаётся внешними параметрами:
Дальше используя эти функции проверяйте нужное вам условие.
Пожалуйста помогите.
Нужно прикрутить к роботу следующую функцию:
После открытия сделки, через 40 секунд если прибыль больше 15 пунктов, то сделка закрывается моментально, если меньше, то тейкпрофит перемещается на уровень прибыли 15 пунктов.
Заранее благодарю.
Функция NumberOfBarCloseLastPos().
Эта функция возвращает номер бара закрытия последней позиции или -1. Отбор учитываемых позиций задаётся внешними параметрами:
Функция NumberOfBarOpenLastPos().
Эта функция возвращает номер бара открытия последней позиции или -1. Отбор учитываемых позиций задаётся внешними параметрами:
Дальше используя эти функции проверяйте нужное вам условие.
Большое вам человеческое Аригато!
Буду вникать!!