Спрашивайте! - страница 136

 

приостановить действие приказа

Здравствуйте, друзья,

в программировании на MQL4 я настоящий новичок, но учусь каждый день. В настоящее время я пытаюсь сделать следующее:

в главном цикле моего советника при выполнении определенных условий открывается ордер. Этот ордер с заданным входом, стоплоссом и тейкпрофитом открывается с помощью функции OrderSend.

Допускается только один ордер за раз:

total = OrdersTotal();

if(total < 1)

{ и т.д. и т.п.

Я бы хотел сделать так, чтобы при достижении ордером стоплосса или тейкпрофита советник ждал с приемом новых ордеров до тех пор, пока не закончится текущий часовой бар (бар, на котором достигнут стоплосс или тейкпрофит).

Проблема на данный момент в том, что как только стоплосс или тейкпрофит сбивается, сразу же в основном цикле берется другой ордер.

Не могли бы вы мне помочь?

FXX

 

Комбинированный советник нужна помощь

Привет всем,

Кто-нибудь знает, как объединить 2 разных советника в 1 советник? Пожалуйста, покажите мне шаг за шагом, как это сделать?

Заранее спасибо за помощь!

 

Зависит от логики советника

У каждого советника своя логика, поэтому метод объединения двух советников зависит от их логики.

Итак, где находится советник, который вы хотите объединить?

Bill FX:
Привет всем,

Кто-нибудь знает, как объединить 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

Мне очень нравится этот инди-стох, но мне нужна помощь, чтобы изменить его, потому что мне нужно оповещение, когда стох касается области покупки и продажи. И когда он оповещает, он может показать, какая валюта тоже.

Заранее спасибо.

Файлы:
 
luxinterior:
Используйте массив и посмотрите на функцию ArraySort().

Удачи

Lux

Я пробовал это, но все еще в замешательстве,

нужен кто-то, кто мог бы научить или показать мне, как это сделать...

Возможно, вы могли бы помочь?

Заранее спасибо

 
primajaya:
У каждого советника своя логика, поэтому метод объединения двух советников зависит от их логики... Итак, где находится советник, который вы хотите объединить?

Здравствуйте, Примаджая,

Спасибо за ваш отзыв. Я имею в виду, что 1-й советник открывает сделки, а 2-й советник закрывает сделки, если 1-й советник открывает сделки и имеет некоторую прибыль, и я хочу, чтобы 2-й советник закрыл сделку с XXX прибылью, так как я должен сделать? Они работают, если я подключаюсь к 2 чатам, но я хочу объединить 2 в 1, мне нужно открыть только 1 советника.

Спасибо за помощь!

 
Bill FX:
Привет, 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.

Я прав?

Или каким другим способом я могу определить первую открытую сделку, чтобы закрыть ее позже?

Если вы можете направить меня или сделать изменения, лучше, потому что я не программист, я только учусь.

Это изменение было бы началом Голли Грааля!!!

Файлы:
10p3v0.03_1.mq4  12 kb
Причина обращения: