[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 719

 
Infinity:


но почемуто в итоге получаю ошибку EURUSD,: zero divide - эта ошибка видимо говорит что гдето в переменной 0, наверное при операции типа деления. Я вообще правильно пытаюсь реализовать ?


В тестере или на демо?

В тестере point по другим инструментам будет равен 0

 
Добрый день, скажите пожалуйста предусмотрена ли в MQL4 возможность выбирать все тикеты аккаунта (открытые, закрытые, пендинги) за определенный период времени?
 

Уважаемые, помогите решить такой вопрос, если это возможно решить при таких условиях!

Есть к примеру такой советник (его ШАБЛОН, точнее) так как сам принцип интересен.

Так, вот:

extern double Lot = 0.1;

extern int TP = 100;

extern int SL = 100;

extern int ХХХ = 100; //типа разные переменные

extern int ХХХ = 100; //типа разные переменные

extern int ХХХ = 100; //типа разные переменные

// какие ордера разрешены ? :

extern int LET = 3; // 1 - только сэлл, 2 - только бай, 3 - оба вида ордеров

int start()

// расчет индикаторов :

int KUDA;

ВСТАВЛЕН ИНДИКАТОР И УСЛОВИЯ ЕГО РАБОТЫ

// проверка условий для определения направленности ордеров согласно данных индикатора:

if ( ХХХХХХХХХХХХХХХХХХХХХХХХХ ) // условие по индикатору для сэлл

KUDA = 1; // значит будем сэллить

if ( ХХХХХХХХХХХХХХХХХХХХХХХХХХ ) // условие по индикатору для бай

KUDA = 2; // значит будем баить

// выставление ордеров :

if(OrdersTotal()>0) return (0); // разрешает работу советника только с одним выставленным ордером

КАКОЙ КОД СЮДА ВСТАВИТЬ, ЧТО БЫ ПОСЛЕ ЗАКРЫТИЯ ЛОСЕМ СЕЛЛА РАЗРЕШАЛОСЬ ВЫСТАВЛЯТЬ ТОЛЬКО БАЙ,

а ПРИ ЗАКРЫТИИ ЛОСЕМ БАЯ РАЗРЕШАЛОСЬ ВЫСТАВЛЕНИЕ ТОЛЬКО СЕЛЛА?

И ТАК ДАЛЕЕ ПО КРУГУ!!!

{

if (LET == 1 || LET == 3) // согласно переменной работает только при селл (бай игнорирует) или оба вида ордеров

if (KUDA == 1 && ticketsell < 1) // выставим сэлл

{

ЗДЕСЬ КОД НА ВЫСТАВЛЕНИЕ ОРДЕРОВ СЕЛЛ

}

if (LET == 2 || LET == 3) // согласно переменной работает только при бай (селл игнорирует) или оба вида ордеров

if (KUDA == 2 && ticketbuy < 1) // выставим бай

{

ЗДЕСЬ КОД НА ВЫСТАВЛЕНИЕ ОРДЕРОВ БАЙ

}

}

return(0);

}

Спасибо!

 
ToLik_SRGV:

Итак, по порядку.

Если нужны только последние данные, зачем тогда сохранять предыдущие? ("до запись" происходит при комбинации режимов FILE_READ|FILE_WRITE).
Поэтому логичнее использовать режим FILE_CSV|FILE_WRITE в нем предыдущие записи удаляются перед записью новых данных.

Начинаем запись 4-х переменных в файл.

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

Начинаем считывать данные в переменные из файла.

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

Что и хотел услышать.Понял и применил - очень доволен.СПАСИБО БОЛЬШОЕ!
 

Помогите решить программно вот такую проблему:

1. сначала находим первый фрактал вверх - это просто и понятно;

2. а далее нужно найти фрактал, который бы был выше первого найденного - вот с этим уже проблема :(

Хорошо, если таковым окажется предыдущий фактрал. А если - пред предыдущий? Или три-четыре фрактала назад?

Как оформить поиск таких фракталов в виде функции?

На всякий случай прикладываю картинку...

 
не прикрепилась :(
пробую еще раз
 
Shuba:

Помогите решить программно вот такую проблему:

1. сначала находим первый фрактал вверх - это просто и понятно;

2. а далее нужно найти фрактал, который бы был выше первого найденного - вот с этим уже проблема :(

Хорошо, если таковым окажется предыдущий фактрал. А если - пред предыдущий? Или три-четыре фрактала назад?

Как оформить поиск таких фракталов в виде функции?

На всякий случай прикладываю картинку...



А если такого фрактала вообще нету
 
Vinin:

А если такого фрактала вообще нету
ну, значит, если, к примеру, на 300 баров назад такового не нашлось - ждем появления свежего фрактала и только после этого возобновляем поиск
 
Shuba:

Помогите решить программно вот такую проблему:

1. сначала находим первый фрактал вверх - это просто и понятно;

2. а далее нужно найти фрактал, который бы был выше первого найденного - вот с этим уже проблема :(

Хорошо, если таковым окажется предыдущий фактрал. А если - пред предыдущий? Или три-четыре фрактала назад?

Как оформить поиск таких фракталов в виде функции?

На всякий случай прикладываю картинку...

Запомните значение первого фрактала, далее в цикле ищите фрактал, который будет иметь значение больше/меньше запомненного. Если внутри цикла найден такой фрактал, то запоминайте его в переменной. Теперь у вас есть два фрактала - первый, изначально запомненный и второй - найденный в цикле. Не обязательно он будет предыдущим или пред-предыдущим, но он будет соответствовать критерию поиска.
Если же в цикле его не удалось найти - то необходимо ждать появления нового фрактала (вместо первого запомненного). Как только образуется новый нужный фрактал - опять в цикле ищем нужный второй фрактал (и скорее всего это будет ваш первый, запомненный в самом начале). Таким образом найдём два нужных фрактала и избежим ситуации, о которой справедливо намекнул Виктор постом выше. Хотя теоретически возможна ситуация, при которой второй фрактал так никогда и не образуется... Апокалипсис например... :)
 
Shuba:
ну, значит, если, к примеру, на 300 баров назад такового не нашлось - ждем появления свежего фрактала и только после этого возобновляем поиск
Я смотрю - вы и сами уже подходите к решению
Причина обращения: