[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 113
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Перебирайте позиции циклом
Перебирайте позиции циклом
Попробывал,не вышло. Так-то да получается его найти. Но проблема в том, что получается след. ситуация:
Например,01.01 я открыл сделку, но условие сработало только 02.01. Т.е. от цены открытия ордера в отрицательную сторону цена прошла 50п на второй день. Раз условие выполняется,действие будет выполнено. А действие заключается в уменьшении сделки на 1/3.Т.е. уменьшить объем сделки в три раза. Но действие будет работать пока не закроет лот полностью. Мы можем поставить какой-нибудь флаг. если b=0, то действие есть. А в конце действия b=1. Если в конце дня мы не обнулим флаг, то при тестировании по истории сделка пройзойдет один раз и все. Если мы будем обнулять, то как только обнулится флаг, действие опять начнет уменьшать ордера,пока не закроет его полностью. Я думал можно было бы сравнивать объем изначально открывшейся сделки и затем измененный объем,но при сравнении они всегда будут одинаковы. Т.к. если мы уменьшим объем лота,уменьшится и объем средств на счете,следовательно и изначанльный объем снова пересчитается. Т.е. тоже не то,думаю уже 3-ий день. Никак не могу подобрать ключить.Подскажите пожалуйста, может у Вас есть какие-нибудь еще идеи?
Добрый день!
Уважаемые профи, подскажите ,пожалуйста.
У меня по системе открывается ордер. Если цена превышает на 50п цену открытия этого ордера,то ордер надо модифицировать.
OrderSelect(0, SELECT_BY_POS,MODE_TRADES);
double OPEN = OrderOpenPrice ();
double maximus = OPEN + 0.00500;
Alert ("maximus = ",maximus);
double minimus = OPEN - 0.00500;
RefreshRates(); //Обновляем данные.
timecur = TimeToStr(TimeCurrent(),TIME_SECONDS); //Вычисляем текущее время в формате HH:MM.
if ((timecur > "00:00:00") && (timecur < "22:58:00") && (Deal_s == 1) && (Deal_bb == 0)&& (Bid > maximus))
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES);
Lootup = OrderLots () * 0.34;
Lootdown = OrderLots () * 0.34;
OrderClose(OrderTicket(), Lootdown, Ask, 10, CLR_NONE);
Alert (GetLastError());
Deal_bb = 1;
}
Если это происходит в течение дня,то у меня получается это делать. А если это переносится на след.день,то все слетает.Т.к. в новый день может открыться еще один ордер,и он уже отслеживает по нему,а про старый забывает. Подскажите,пожалуйста, как прописать так,чтобы условие контролировало цену открытия+50 п именно по каждому из лотов,пока лот не закроется в течение нескольких дней?.
Вы время загоняете в строку, а затем меряетесь строками - оригинально!!!
Не нужно ничего придумывать: сначала проверяете разрешение по времени, а затем просто трейлингуете ордера. Проверенные решения и того и другого найдёте здесь и здесь.
Попробывал,не вышло. Так-то да получается его найти. Но проблема в том, что получается след. ситуация:
Например,01.01 я открыл сделку, но условие сработало только 02.01. Т.е. от цены открытия ордера в отрицательную сторону цена прошла 50п на второй день. Раз условие выполняется,действие будет выполнено. А действие заключается в уменьшении сделки на 1/3.Т.е. уменьшить объем сделки в три раза. Но действие будет работать пока не закроет лот полностью. Мы можем поставить какой-нибудь флаг. если b=0, то действие есть. А в конце действия b=1. Если в конце дня мы не обнулим флаг, то при тестировании по истории сделка пройзойдет один раз и все. Если мы будем обнулять, то как только обнулится флаг, действие опять начнет уменьшать ордера,пока не закроет его полностью. Я думал можно было бы сравнивать объем изначально открывшейся сделки и затем измененный объем,но при сравнении они всегда будут одинаковы. Т.к. если мы уменьшим объем лота,уменьшится и объем средств на счете,следовательно и изначанльный объем снова пересчитается. Т.е. тоже не то,думаю уже 3-ий день. Никак не могу подобрать ключить.Подскажите пожалуйста, может у Вас есть какие-нибудь еще идеи?
При чём тут дни вообще??? Вы вот напишите что хотите, а вам алгоритм подскажут. Сдаётся мне, что вам нужно не дни проверять, а профит/убыток ордера и от него плясать, раз для вас важны 50 (иль сколько там) пунктов...
Вы время загоняете в строку, а затем меряетесь строками - оригинально!!!
Не нужно ничего придумывать: сначала проверяете разрешение по времени, а затем просто трейлингуете ордера. Проверенные решения и того и другого найдёте здесь и здесь.
Огромное Вам спасибо за ответ, дали ссылку как раз на то,что нужно. Сейчас буду пробывать, но думаю все получится.
Насчет косяков,простите, новичок,еще в программировании не особо грамотный.
При чём тут дни вообще??? Вы вот напишите что хотите, а вам алгоритм подскажут. Сдаётся мне, что вам нужно не дни проверять, а профит/убыток ордера и от него плясать, раз для вас важны 50 (иль сколько там) пунктов...
Да, Вы правы. Именно от состояния профита/убытка отталкивался. TarasBY указал как раз на то,что нужно. Буду с этим сейчас разбираться.
Спасибо за уделённое внимание!
Подскажите пожалуйста, вот есть функция кима по поиску фракталов
Ка написать такую же функцию, которая сосчитает количество факталов за определенный период?Подскажите пожалуйста, вот есть функция кима по поиску фракталов
Ка написать такую же функцию, которая сосчитает количество факталов за определенный период?Как-то так:
Экстремумы ЗигЗага от текущего времени до Time_Control собраны в массив.
А подскажите пожалуйста функцию, чтоб проверить новый фрактал или старый?
Вот, зашёл в тему "Полезные функции" и принёс Вам "на блюдечке с голубой каёмочкой:
Живи и пользуйся на здоровье! Их там каких только нет! Ни спрашивать не надо, ни ждать, а берёшь и пользуешься!