Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1098
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ребят, уже голову сломал. Как сделать чтоб советник выставлял отложки по максимумам и минимумам, например за 8 свечей, с тейком в 1/4 .
делаю примерно так:
double Vhod1=iHighest(Symbol(),0,MODE_HIGH,8,0);
double Vhod2=iLowest(Symbol(),0,MODE_LOW,8,0);
double TP=((Vhod1-Vhod2)/4)+Vhod1;
пробовал менять параметры, но пишет то стопы не верны, то выставит по цене 7.00000 непонятно откуда берет
iHighest, iLowest выдадут адрес свечи а не цену, справку и учебник читайте.
Так точно. Надо
double Vhod1=iHigh(Symbol(), 0, iHighest(Symbol(),0,MODE_HIGH,8,0));
double Vhod2=iLow(Symbol(), 0, iLowest(Symbol(),0,MODE_LOW,8,0));
Вставил неправильно, но он всё равно не сработал бы как надо, потому что... Потому что.)) Короче, надо вот так:
1) в ините создаем переменную AllowNewOrders (если ее нет)
2) создаем новый ордер, пока он не закроется OnTick этого символа простаивает, но будет работать OnTick другого символа
3) пункт 2 для других символов выполняем, пока не достигнем предела MaxOpenOrders
4) при завершении ордера, если он убыточный или нулевой, запрещаем через AllowNewOrders открытие новых ордеров для всех копий
[отсюда сразу проблема- когда убыточная серия завершается, AllowNewOrders=1, а если MaxOpenOrders>1 и этих сессий несколько?]
5) если пункт 4 не выполняется, значит можно открывать новые ордера.
Программа ДОЛЖНА УЖЕ работать при MaxOpenOrders=1. Возможно еще возникнет проблема, когда вслед за убыточным ордером запрещаем новые ордера AllowNewOrders=0, а следующий OrderSend по каким-то причинам ордер не откроет. Ниже напишу, как я страхуюсь на этот случай...
Ниже напишу, как я страхуюсь на этот случай...
Если грамотно решение ошибок предусмотреть, то процент успешности открытия ордера возрастает.
Как может изменится код внизу при таких условиях?
for(cnt=OrdersTotal()-1;cnt>=0;cnt--){
if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;
if(OrderSymbol()!=Symbol()) continue; if(OrderMagicNumber() < startMagicNumber || OrderMagicNumber() >= startMagicNumber + MaxTrades) continue;
Код генерации магика поставил при открытии первых ордеров серий, но вот проблема при открытии новых ордеров в этих же сериях.
Сам код генерации магика из поста://+------------------------------------------------------------------+
// keekkenen: получаем следующий магик в серии
int getNextMagicNumber(){
int magic = EMPTY;
if (OrdersTotal() == 0) {
return(startMagicNumber);
}
for (int i = startMagicNumber; i < startMagicNumber + MaxTrades; i++){
magic = checkMarketByMagic(i);
if (magic != EMPTY) break;
}
if (magic == EMPTY){
magic = startMagicNumber; // первый в серии
} else {
magic++; //следующий в серии
}
return(magic);
}
//+------------------------------------------------------------------+
// keekkenen: проверяем наличие ордера в рынке с заданным магиком
int checkMarketByMagic(int magic){
for(int i = 0; i < OrdersTotal(); i++){
if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if(OrderSymbol() != Symbol()) continue;
if(OrderMagicNumber() == magic) return(magic);
}
return(EMPTY);
}
//+------------------------------------------------------------------+
извиняюсь если спутал ветки, но куда приткнуть правильно ТЕМУ не нашел, так что не пинайте.
Некоторое время назад просматривая в интернете существующие новинки советников от пользователей, повстречался мне один на который я не обратил внимание, так как по описанию был стандартным, коих привеликое множество, на свою беду не обратил внимание и на название тоже.
Может кто пользуется, кто видел или читал, подскажите хотя бы название, а гугл свое дело сделает или если имеется приму в дар. Может есть схожий советник выполняющий аналогичные действия.
Опишу смысл советника (замудреного нет ничего, чем сейчас мне и необходим).
Если грубо говоря то тех задание выглядело бы так:
1. Открыли позицию в ручную, например buy.
2. Советник выставил ему стоплосс и тейкпрофит по настройкам.
3. Ордер закрылся по тейкпрофиту - советник сразу открывается еще один buy и выставляет ему те же стоплосс и тейкпрофит, до тех пор пока не поймает первый стоплосс либо если есть конечный тейкпрофит.
4. Если позиция закрылась по стоплоссу то робот больше ничего не предпринимает. Советник ждет открытия следующего ордера в ручную.
Все.
Буду примного благодарен.
Вставил неправильно, но он всё равно не сработал бы как надо, потому что... Потому что.)) Короче, надо вот так:
1) в ините создаем переменную AllowNewOrders (если ее нет)
2) создаем новый ордер, пока он не закроется OnTick этого символа простаивает, но будет работать OnTick другого символа
3) пункт 2 для других символов выполняем, пока не достигнем предела MaxOpenOrders
4) при завершении ордера, если он убыточный или нулевой, запрещаем через AllowNewOrders открытие новых ордеров для всех копий
[отсюда сразу проблема- когда убыточная серия завершается, AllowNewOrders=1, а если MaxOpenOrders>1 и этих сессий несколько?]
5) если пункт 4 не выполняется, значит можно открывать новые ордера.
Программа ДОЛЖНА УЖЕ работать при MaxOpenOrders=1. Возможно еще возникнет проблема, когда вслед за убыточным ордером запрещаем новые ордера AllowNewOrders=0, а следующий OrderSend по каким-то причинам ордер не откроет. Ниже напишу, как я страхуюсь на этот случай...
Спасибо Александр, завтра проверю. [отсюда сразу проблема- когда убыточная серия завершается, AllowNewOrders=1, а если MaxOpenOrders>1 и этих сессий несколько?] Если MaxOpenOrders>1 на какое то значение, то по идее AllowNewOrders=1 тоже должен быть больше на это же значение. Но с этим можно пока не заморачиваться и MaxOpenOrders убрать вообще, так как в этом варианте программы все равно не планируется больше одной серии.
Привет всем !
Вот есть такой графический объект на графике.
В его параметрах время, значение , код. Значение соответствует цене, на уровне которой находится объект.
Можно как-то получить его время и значение ( через функцию или еще как) ?
\\\\\
Шире вопрос можно поставить так : есть ли объекты ( кроме трендовых линий, линий фибонначи, ганна ), у которых можно получить сразу время и цену ?
Мне нужно ставить на график какие-то метки и получать из них информацию. Рисовать тренд. линии , фибо и др.. - ужасно громоздко и медленно...
Спасибо за ответы !
PS Только начал изучение...
Привет всем !
Вот есть такой графический объект на графике.
В его параметрах время, значение , код. Значение соответствует цене, на уровне которой находится объект.
Можно как-то получить его время и значение ( через функцию или еще как) ?
\\\\\
Шире вопрос можно поставить так : есть ли объекты ( кроме трендовых линий, линий фибонначи, ганна ), у которых можно получить сразу время и цену ?
Мне нужно ставить на график какие-то метки и получать из них информацию. Рисовать тренд. линии , фибо и др.. - ужасно громоздко и медленно...
Спасибо за ответы !
PS Только начал изучение...
https://docs.mql4.com/ru/objects/objectgetinteger