Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
приостановить действие приказа
Здравствуйте, друзья,
в программировании на MQL4 я настоящий новичок, но учусь каждый день. В настоящее время я пытаюсь сделать следующее:
в главном цикле моего советника при выполнении определенных условий открывается ордер. Этот ордер с заданным входом, стоплоссом и тейкпрофитом открывается с помощью функции OrderSend.
Допускается только один ордер за раз:
total = OrdersTotal();
if(total < 1)
{ и т.д. и т.п.
Я бы хотел сделать так, чтобы при достижении ордером стоплосса или тейкпрофита советник ждал с приемом новых ордеров до тех пор, пока не закончится текущий часовой бар (бар, на котором достигнут стоплосс или тейкпрофит).
Проблема на данный момент в том, что как только стоплосс или тейкпрофит сбивается, сразу же в основном цикле берется другой ордер.
Не могли бы вы мне помочь?
FXX
Комбинированный советник нужна помощь
Привет всем,
Кто-нибудь знает, как объединить 2 разных советника в 1 советник? Пожалуйста, покажите мне шаг за шагом, как это сделать?
Заранее спасибо за помощь!
Зависит от логики советника
У каждого советника своя логика, поэтому метод объединения двух советников зависит от их логики.
Итак, где находится советник, который вы хотите объединить?
Привет всем,
Кто-нибудь знает, как объединить 2 разных советника в 1 советник? Пожалуйста, покажите мне шаг за шагом, как это сделать?
Заранее спасибо за вашу помощь!Как ранжировать ценности? Нужна помощь
Кто-нибудь может помочь мне, как создать функцию ранжирования.
Например, у меня есть некоторые двойные значения, такие как эти:
a=3.0; b=4.0; c=5.0; d=2.0; e=1.0; f=6.0; g=0.0;
от большего значения к меньшему (6.0, 5.0, 4.0, 3.0, 2.0, 1.0, 0.0)
или значение (f,c,b,a,d,e,g).
Таким образом, ранг должен выглядеть следующим образом
номер ранга: (th)
f=1 ; c=2; b=3; a=4; d=5; e=6; g=7;
Мне нужна функция, которая вернет ранг, если я введу значение
int rank (double value)
{
обработать все значения;
return (ранг значения из всех значений)
}
Я знаю, что это легко, если мы просто сделаем функцию, подобную этой
например, значение "a"
int rank (double value)
{
if(a>b && a>c && a>d && a>e && a>f && a>g)
возвращаем (1);
.
.
.
if(a<b && a<c && a<d && a<e && a<f && a<g)
return (7);
}
Проблема в том, что когда вариаций значения 2, то комбинаций всего несколько, но когда вариации увеличиваются, например 5,7 или 10 и т.д., то комбинаций для составления ранга будет очень много.
Надеюсь, кто-нибудь сможет помочь мне с этой проблемой.
Спасибо, извините за мой плохой английский, но я учусь.
Pj...
Используйте массив и посмотрите на функцию ArraySort().
Удачи
Люкс
Stoch OBOS
Мне очень нравится этот инди-стох, но мне нужна помощь, чтобы изменить его, потому что мне нужно оповещение, когда стох касается области покупки и продажи. И когда он оповещает, он может показать, какая валюта тоже.
Заранее спасибо.
Используйте массив и посмотрите на функцию ArraySort().
Удачи
LuxЯ пробовал это, но все еще в замешательстве,
нужен кто-то, кто мог бы научить или показать мне, как это сделать...
Возможно, вы могли бы помочь?
Заранее спасибо
У каждого советника своя логика, поэтому метод объединения двух советников зависит от их логики... Итак, где находится советник, который вы хотите объединить?
Здравствуйте, Примаджая,
Спасибо за ваш отзыв. Я имею в виду, что 1-й советник открывает сделки, а 2-й советник закрывает сделки, если 1-й советник открывает сделки и имеет некоторую прибыль, и я хочу, чтобы 2-й советник закрыл сделку с XXX прибылью, так как я должен сделать? Они работают, если я подключаюсь к 2 чатам, но я хочу объединить 2 в 1, мне нужно открыть только 1 советника.
Спасибо за помощь!
Привет, primajaya,
Спасибо за ваш отзыв. Я имею в виду, что 1-й советник открывает сделки, а 2-й советник закрывает сделки, если 1-й советник открывает сделки и имеет некоторую прибыль, и я хочу, чтобы 2-й советник закрыл сделку с XXX прибылью, так как я должен сделать? Они работают, если я подключаюсь к двум чатам, но я хочу объединить два в один, поэтому мне нужно открыть только один советник.
Спасибо за помощь!Я все еще не знаю о логике 1-го и 2-го советника для открытия сделок...
Но, возможно, это может помочь вам...
Попробуйте объединить два советника в один...
Таким образом, советник должен иметь два сигнала для открытия сделок:
1-й сигнал от первого советника и 2-й сигнал от второго советника.
Вы можете использовать OrderMagicNumber() как идентификатор для каждой открытой сделки, сделанной двумя сигналами...
например:
если открыты сделки по 1-му сигналу, то -- магическое число 1111
если открыта сделка по 2-му сигналу, то -- магическое число 2222.
Таким образом, если мы хотим закрыть сделку по второму сигналу, мы можем использовать OrderMagicNumber() как идентификатор для закрытия:
Надеюсь, это поможет...
Pj
10points3
ПЛИАААСИ, ПРОГРАММИСТЫ!
Нужно в советнике 10points3, чтобы при открытии третьей сделки, первая закрывалась, я пытаюсь, но он все равно закрывает все позиции.
на самом деле у нас есть:
if (PreviousOpenOrders>OpenOrders)
{
for(cnt=OrdersTotal();cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
mode=OrderType();
if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
{
if (mode==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue); }
if (mode==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Red); }
return(0);
}
}
}
Я думал сделать следующее:
1. при открытии второй сделки изменить магическое число для первой сделки, например magicnumber+1
2. когда открывается третья сделка, закрываем первую, с присвоенным magicnumber+1.
Я прав?
Или каким другим способом я могу определить первую открытую сделку, чтобы закрыть ее позже?
Если вы можете направить меня или сделать изменения, лучше, потому что я не программист, я только учусь.
Это изменение было бы началом Голли Грааля!!!