Как кодировать? - страница 225

 

новичок...

прежде всего поздравляю всех с новым годом!

затем спасибо за все знания, которыми вы делитесь на этом форуме.

Я подхожу к mql4, я не кодер.

Буду признателен за небольшую поддержку в написании очень простой стратегии:

длинные входы:

(ask-bid) <= Z_pips /* проверка спреда */

и

(bollinger_up-bollinger_down) <= K_pips /* проверка волатильности */

и

ask < (bollinger_down + X_pips) /* проверка цены */

и

ma_Qperiods >= ma_Wperiods /* проверка тренда */

выходы:

Трейлинг SL = 15 пипсов

Есть ли у кого-нибудь время, чтобы дать мне шанс?

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

neeverr

 

нужна помощь с моим индикатором nr7

здравствуйте

Я разрабатываю индикатор для nr7.

алгоритм следующий

-вычисляем диапазон и сохраняем его в массиве

- если текущий диапазон <= 7 последних диапазонов, то текущий бар - nr7.

но индикатор, похоже, отмечает каждый бар как nr7. не знаю, где я допустил ошибку.

скриншот здесь

2010-01-18_0531

Файлы:
nr7.mq4  3 kb
 

советник по продвинутому сару

Привет друзья,

Мне нужна ваша помощь, если кто-то из вас может помочь мне модифицировать советник, который я получил из другой темы, но, к сожалению, у меня нет его mql файла.

Из оригинальной логики этого советника, я хочу сделать небольшую модификацию, как показано ниже:

- Этот советник работает только на 4 знаках, помогите улучшить его, чтобы он мог работать и на 5 знаках.

- Этот советник работает по общей системе мартингейла, мне нужно добавить еще 2X режим работы,

1. Если советник открывает ордер на последней сделке, и они попадают в TP, то советник начнет новый цикл и откроет сделку в том же порядке, что и последний ордер. Пример: если последняя сделка - ордер на покупку, и они достигли TP, то советник будет продолжать открывать сделку на покупку, пока не достигнет SL, и советник изменит ордер на противоположный ордер на продажу. То же самое с ордером на продажу, пока они получают прибыль по ордеру на продажу, то они продолжают открывать ордер на продажу с новым циклом, пока не достигнут SL и направление не изменится на ордер на покупку.

2. Работа во втором режиме. Советник работает по логике последовательности buy-sell-buy-sell-buy, этот режим предназначен для рынка, находящегося в диапазоне без тренда.

буду благодарен за любую помощь.

спасибо

йоха

Файлы:
 

есть идеи, почему этот советник не размещает ордера?

Привет, ребята, прошло много времени с тех пор, как я вернулся в эту игру .... в любом случае, просто начинаю освежать информацию о mql....lot изменилось здесь.

В основном я хочу выставлять отложенные ордера на покупку и продажу на расстоянии 10 пунктов от открытия бара с обеих сторон. Тейкпрофит находится на расстоянии 15 пунктов от отложенных ордеров.

Проблема в том, что ордера никогда не выставляются...

int counted_bars = IndicatorCounted();

int pos = Bars - counted_bars + 1;

if (counted_bars == 0) pos = Bars - 10;

if (counted_bars>0) counted_bars--;

double currentPrice = iClose("EURUSD",PERIOD_M1,0);

while(pos>0)

{

//Putting Pending LongOrder

Print("Long...");

OrderSend("EURUSD",OP_BUYLIMIT,1,Open+10*Point,3,0,Open+25*Point,"Pending Long Order", 888, 0, Green);

Print("Short...");

//Putting Pending ShortOrder

OrderSend("EURUSD",OP_SELLSTOP,1,Open-10*Point,3,0,Open-25*Point,"Pending Short Order", 999, 0, Red);

pos--;

}
 

Я не совсем понимаю, какое отношение подсчитанные бары имеют к советнику? Разве он не предназначен для использования в индикаторах?

Я думаю, если вы уберете эту часть, то все будет в порядке.

 

переменная времени

Здравствуйте,

Я хочу записать фактические данные и время.

extern int starthour = 8;

extern int startminute = 0;

[/CODE]

in my variable

[CODE]

datetime starttime= 0;

Как я могу написать это?

Как я могу написать это:

starttime = Дата дня + starthour + startminute;

 

Не совсем понимаю, о чем вы спрашиваете, но предположу, что вы пытаетесь увеличить дату на количество часов и минут. Если вы посмотрите файл справки для функции TimeCurrent(), то увидите, что она возвращает время в секундах. Логически можно сделать вывод, что для добавления минут нужно умножить на 60, а для часов - на 3600 (60*60).

Таким образом, у вас получится что-то вроде...

TimeCurrent()+(starthour*3600)+(startmin*60);

Просто замените TimeCurrent() на то время, которое вы обозначили как 'startdate'.

Lux

 
sunshineh:
Привет,

Я хочу написать фактические данные и время.

extern int starthour = 8;

extern int startminute = 0;

[/CODE]

in my variable

[CODE]

datetime starttime= 0;

Как я могу написать это?

Как я могу это написать:

starttime = Дата дня + starthour + startminute;

Используйте функцию StrToTime. Если вы не будете передавать этой функции день, а только час и минуту, она будет использовать текущий день. Например:

datetime startTime = StrToTime( StartHour+": "+ StartMinute);

Где StartHour и StartMinute являются строками:

string StartHour = 8;

string StartMinute = 0;

 

Большое спасибо!!!

У меня есть еще один вопрос.

Как я могу закодировать его, если я хочу, чтобы мой советник покупал или продавал только по цене закрытия свечи?

Я думал, что могу написать

if(!Close[0]) return;

но это не работает.

 
sunshineh:
Большое спасибо!!!

У меня есть еще один вопрос.

Как я могу закодировать его, если я хочу, чтобы мой советник покупал или продавал только по цене закрытия свечи?

Я думал, что могу написать

if(!Close[0]) return;
но это не работает.

Вам нужно определить переменную, допустим, это будет:

int barsNumber = 0;

в глобальной секции (например, прямо перед функцией init)

и затем в функции start, где у вас есть ваша часть с функцией sendOrder, вам нужно проверить это условие

if(Bars>barsNumber)

и если оно истинно, то установить нашу переменную barsNumber в Bars

barsNumber = Bars;

Таким образом, все будет выглядеть следующим образом:

#некоторые свойства

int barsNumber = 0;

int init()

{

}

int deinint()

{

}

int start()

{

if(Bars>barsNumber)

{

SendOrder(...);

barsNumber = Bars;

}

}

Причина обращения: