alexey1979621: Спасибо, разобрал Ваш код. Ошибка на открытие действительно есть (глаз уже замылился). Поставил переделанный советник на демку, где уже открыты позиции по нашему Мейджику с суммарным положительным профитом. Однако, позиция не закрылась.
Я смотрю в новом коде (который ниже в посте) поменялся параметр по умолчанию, передаваемый в функцию:
int NumberOfPositions(string sy="", int op=-1, int mn=1114)
В первоначальном варианте был другой Магик. Я исправил в своём коде обращение к этой функции. Посмотрите под каким Магиком открыты сейчас ордера и поставьте в советнике этот номер Магика.
P.S. И использовать при наименовании переменных разные кодировки не есть признак хорощего тона... Я про:
Я смотрю в новом коде (который ниже в посте) поменялся параметр по умолчанию, передаваемый в функцию:
В первоначальном варианте был другой Магик. Я исправил в своём коде обращение к этой функции. Посмотрите под каким Магиком открыты сейчас ордера и поставьте в советнике этот номер Магика.
Нет по мейджику все правильно, тот который для EURAUD_AUDUSD - 1111, а тот который EURUSD_GBPUSD - 1114 (помогал исправлять другой человек). Оба варианта сделки не закрывают. Сижу наблюдаю суммарный профит по EURUSD_GBPUSD, а закрыть его советником не могу. Переделал Ваш вариант для EURAUD_AUDUSD - 1111 под EURUSD_GBPUSD - 1114 тоже не закрывает сделки. Особенность совы в том, что нельзя ее проверить в тестере (т.к. две пары принимают участие в торгах) - только на демке.
Нет по мейджику все правильно, тот который для EURAUD_AUDUSD - 1111, а тот который EURUSD_GBPUSD - 1114 (помогал исправлять другой человек). Оба варианта сделки не закрывают. Сижу наблюдаю суммарный профит по EURUSD_GBPUSD, а закрыть его советником не могу. Переделал Ваш вариант для EURAUD_AUDUSD - 1111 под EURUSD_GBPUSD - 1114 тоже не закрывает сделки. Особенность совы в том, что нельзя ее проверить в тестере (т.к. две пары принимают участие в торгах) - только на демке.
Нет по мейджику все правильно, тот который для EURAUD_AUDUSD - 1111, а тот который EURUSD_GBPUSD - 1114 (помогал исправлять другой человек). Оба варианта сделки не закрывают. Сижу наблюдаю суммарный профит по EURUSD_GBPUSD, а закрыть его советником не могу. Переделал Ваш вариант для EURAUD_AUDUSD - 1111 под EURUSD_GBPUSD - 1114 тоже не закрывает сделки. Особенность совы в том, что нельзя ее проверить в тестере (т.к. две пары принимают участие в торгах) - только на демке.
Во-первых, Вы не правильно обращаетесь к индикатору. У этого индикатора куча внешних параметров:
externstring Symbol1.Name = "EURUSD";// Название инструмента 1externbool Symbol1.Reverse = false; // Является ли инструмент 1 реверсивным (с обратной корреляцией) // по отношению к остальным инструментамexternstring Symbol2.Name = "USDCHF";// Название инструмента 2externbool Symbol2.Reverse = false; // Является ли инструмент 2 реверсивным (с обратной корреляцией) // по отношению к остальным инструментамexternstring ___MISC___ = " == Прочие настройки ==========";
externbool UseVolatility = True ; //отрисовка с учетом волатильностиexternbool Triangle = True ; // Рисовать треугольник?externcolor Triangle.Color = DarkSalmon; // Цвет треугольникаexterndoubleAlert.ChannelMore = EMPTY; // Если ширина канала больше указанной, включается сигнал// -1 - контроль выключен.externdoubleAlert.ChannelLess = EMPTY; // Если ширина канала меньше указанной, включается сигнал// -1 - контроль выключен.externstring __VOL___ = " == Расчет объемов ====";
externint VOL.Mode = 3; // Режим расчета объемов для торговли// 1 - по ценам открытия// 2 - по волатильности, а если невозможно - по ценам открытия// 3 - по волатильности (если возможно) и ценам открытияexternint VOL.PeriodATR = 144; // Период усреднения ATR externstring ___MA___ = " == Параметры МА ценовых линий ====";
externint MA.Slow = 21; // Период медленной МАexternint MA.Fast = 8; // Период быстрой МАexternint MA.Method = 2; // Метод аппроксимации// - MODE_SMA=0 Простое скользящее среднее // - MODE_EMA=1 Экспоненциальное скользящее среднее // - MODE_SMMA=2 Сглаженное скользящее среднее // - MODE_LWMA=3 Линейно-взвешенное скользящее среднее externint MA.Price = 6; // Расчетная цена:// - PRICE_CLOSE=0 Цена закрытия // - PRICE_OPEN=1 Цена открытия // - PRICE_HIGH=2 Максимальная цена // - PRICE_LOW=3 Минимальная цена // - PRICE_MEDIAN=4 Средняя цена, (high+low)/2 // - PRICE_TYPICAL=5 Типичная цена, (high+low+close)/3 // - PRICE_WEIGHTED=6 Взвешенная цена закрытия, (high+low+close+close)/4
и их нужно перечислять при вызове индикатора. Если их упускать, то параметры будут браться по умолчанию, а так как Вы хотите использовать для разных валютных пар, то этот вариант не подходит. А всё остальное можно сделать с учётом изменения параметров при запуске советника:
запустите советник, поставьте профит равный нулю и посмотрите, что получилось и что в логах.
Получилось страшное. С Вашими изменениями и профитом равным 0 Советник закрыл вообще все позиции по Мейджикам 1111, 1112, 1113, 1114, 1115. Потом через секунд 5 открылись новые ордера по этим Мейджикам, через 10 секунд они все закрылись и все повторилось сначала. При это позиции открывались не парно, а хаотично.
Получилось страшное. С Вашими изменениями и профитом равным 0 Советник закрыл вообще все позиции по Мейджикам 1111, 1112, 1113, 1114, 1115. Потом через секунд 5 открылись новые ордера по этим Мейджикам, через 10 секунд они все закрылись и все повторилось сначала. При это позиции открывались не парно, а хаотично.
Наводящий вопрос - сколько советников у Вас стоит на этом счете?
И у Вас ведь было условие - по профиту закрыть все ордера.
PS Вы увидели какой подводный камень у Вас есть в этом советнике - он будет продолжать открывать ордера после закрытия, что в конце концов приведет к сливу. Поэтому надо ставить флаг, запрещающий выставлять новые одера, до тех пор пока условия не пройдут и возникнут вновь.
Во-первых, Вы не правильно обращаетесь к индикатору. У этого индикатора куча внешних параметров:
и их нужно перечислять при вызове индикатора. Если их упускать, то параметры будут браться по умолчанию, а так как Вы хотите использовать для разных валютных пар, то этот вариант не подходит. А всё остальное можно сделать с учётом изменения параметров при запуске советника:
Спасибо. Про вызов индикатора я знаю. Но настраиваемые параметры индикатора надо перечислять, когда мы их будем применять при тестировании или в работе, а поскольку этот советник протестировать в тестере невозможно (т.к. две пары принимают участие в торгах) - то подобрать эти параметры на истории просто невозможно. Последний Ваш вариант уже засунул в демку, сделки открылись - буду смотреть как закроются. Еще маленький вопрос у нас по двум инструментам сделки открываются или в селл или в бай, а если нам нужно одну открыть в селл по одному инструменту, а по другому в бай, тогда как? Я потыкал, не получилось ..... Еще раз большое спасибо за труд.
Наводящий вопрос - сколько советников у Вас стоит на этом счете?
И у Вас ведь было условие - по профиту закрыть все ордера.
PS Вы увидели какой подводный камень у Вас есть в этом советнике - он будет продолжать открывать ордера после закрытия, что в конце концов приведет к сливу. Поэтому надо ставить флаг, запрещающий выставлять новые одера, до тех пор пока условия не пройдут и возникнут вновь.
Советников работало 5 (братья близнецы - под разные пары), естественно с разными Мейджиками.
Да условие по профиту закрывать ордера было, но ордера относящиеся к конкретному советнику, скажем, с мейджиком 1114. Я писал об этом с самого начала, полагая, что сова при закрытии просто не видит свои ордера, а оказывается он видит все и очень хочет их закрыть, а нужно не все, а конкретные.
Подводный камень увидел, но не такой уж он подводный, если брать период Н4, то при расположении линий индикатора выше 0.1 и ниже -0.1 условие выполняется и сделки открываются, т.е. можно брать несколько профитов при одном сигнале (хотя есть и вариант закрывать сделку, когда линии индикатора сойдутся).
Спасибо, разобрал Ваш код. Ошибка на открытие действительно есть (глаз уже замылился). Поставил переделанный советник на демку, где уже открыты позиции по нашему Мейджику с суммарным положительным профитом. Однако, позиция не закрылась.
Я смотрю в новом коде (который ниже в посте) поменялся параметр по умолчанию, передаваемый в функцию:
В первоначальном варианте был другой Магик. Я исправил в своём коде обращение к этой функции. Посмотрите под каким Магиком открыты сейчас ордера и поставьте в советнике этот номер Магика.
P.S. И использовать при наименовании переменных разные кодировки не есть признак хорощего тона... Я про:
Глянь на эту строку
else if (order_type = OP_SELL()
И эту
Я смотрю в новом коде (который ниже в посте) поменялся параметр по умолчанию, передаваемый в функцию:
В первоначальном варианте был другой Магик. Я исправил в своём коде обращение к этой функции. Посмотрите под каким Магиком открыты сейчас ордера и поставьте в советнике этот номер Магика.
Нет по мейджику все правильно, тот который для EURAUD_AUDUSD - 1111, а тот который EURUSD_GBPUSD - 1114 (помогал исправлять другой человек). Оба варианта сделки не закрывают. Сижу наблюдаю суммарный профит по EURUSD_GBPUSD, а закрыть его советником не могу. Переделал Ваш вариант для EURAUD_AUDUSD - 1111 под EURUSD_GBPUSD - 1114 тоже не закрывает сделки. Особенность совы в том, что нельзя ее проверить в тестере (т.к. две пары принимают участие в торгах) - только на демке.
Нет по мейджику все правильно, тот который для EURAUD_AUDUSD - 1111, а тот который EURUSD_GBPUSD - 1114 (помогал исправлять другой человек). Оба варианта сделки не закрывают. Сижу наблюдаю суммарный профит по EURUSD_GBPUSD, а закрыть его советником не могу. Переделал Ваш вариант для EURAUD_AUDUSD - 1111 под EURUSD_GBPUSD - 1114 тоже не закрывает сделки. Особенность совы в том, что нельзя ее проверить в тестере (т.к. две пары принимают участие в торгах) - только на демке.
Давай проведем некоторые изменения. Вместо
поставьте
запустите советник, поставьте профит равный нулю и посмотрите, что получилось и что в логах.Глянь на эту строку
else if (order_type = OP_SELL()
спасибо!)
Нет по мейджику все правильно, тот который для EURAUD_AUDUSD - 1111, а тот который EURUSD_GBPUSD - 1114 (помогал исправлять другой человек). Оба варианта сделки не закрывают. Сижу наблюдаю суммарный профит по EURUSD_GBPUSD, а закрыть его советником не могу. Переделал Ваш вариант для EURAUD_AUDUSD - 1111 под EURUSD_GBPUSD - 1114 тоже не закрывает сделки. Особенность совы в том, что нельзя ее проверить в тестере (т.к. две пары принимают участие в торгах) - только на демке.
Во-первых, Вы не правильно обращаетесь к индикатору. У этого индикатора куча внешних параметров:
и их нужно перечислять при вызове индикатора. Если их упускать, то параметры будут браться по умолчанию, а так как Вы хотите использовать для разных валютных пар, то этот вариант не подходит. А всё остальное можно сделать с учётом изменения параметров при запуске советника:
А о вызове индикатора почитайте здесь.
Давай проведем некоторые изменения. Вместо
поставьте
запустите советник, поставьте профит равный нулю и посмотрите, что получилось и что в логах.Получилось страшное. С Вашими изменениями и профитом равным 0 Советник закрыл вообще все позиции по Мейджикам 1111, 1112, 1113, 1114, 1115. Потом через секунд 5 открылись новые ордера по этим Мейджикам, через 10 секунд они все закрылись и все повторилось сначала. При это позиции открывались не парно, а хаотично.
Получилось страшное. С Вашими изменениями и профитом равным 0 Советник закрыл вообще все позиции по Мейджикам 1111, 1112, 1113, 1114, 1115. Потом через секунд 5 открылись новые ордера по этим Мейджикам, через 10 секунд они все закрылись и все повторилось сначала. При это позиции открывались не парно, а хаотично.
Наводящий вопрос - сколько советников у Вас стоит на этом счете?
И у Вас ведь было условие - по профиту закрыть все ордера.
PS Вы увидели какой подводный камень у Вас есть в этом советнике - он будет продолжать открывать ордера после закрытия, что в конце концов приведет к сливу. Поэтому надо ставить флаг, запрещающий выставлять новые одера, до тех пор пока условия не пройдут и возникнут вновь.
Во-первых, Вы не правильно обращаетесь к индикатору. У этого индикатора куча внешних параметров:
и их нужно перечислять при вызове индикатора. Если их упускать, то параметры будут браться по умолчанию, а так как Вы хотите использовать для разных валютных пар, то этот вариант не подходит. А всё остальное можно сделать с учётом изменения параметров при запуске советника:
А о вызове индикатора почитайте здесь.
Наводящий вопрос - сколько советников у Вас стоит на этом счете?
И у Вас ведь было условие - по профиту закрыть все ордера.
PS Вы увидели какой подводный камень у Вас есть в этом советнике - он будет продолжать открывать ордера после закрытия, что в конце концов приведет к сливу. Поэтому надо ставить флаг, запрещающий выставлять новые одера, до тех пор пока условия не пройдут и возникнут вновь.
Советников работало 5 (братья близнецы - под разные пары), естественно с разными Мейджиками.
Да условие по профиту закрывать ордера было, но ордера относящиеся к конкретному советнику, скажем, с мейджиком 1114. Я писал об этом с самого начала, полагая, что сова при закрытии просто не видит свои ордера, а оказывается он видит все и очень хочет их закрыть, а нужно не все, а конкретные.
Подводный камень увидел, но не такой уж он подводный, если брать период Н4, то при расположении линий индикатора выше 0.1 и ниже -0.1 условие выполняется и сделки открываются, т.е. можно брать несколько профитов при одном сигнале (хотя есть и вариант закрывать сделку, когда линии индикатора сойдутся).