Как сделать так чтобы эксперт не закрывал текущую сделку при запуске эксперта (или при перекомпиляции)

 

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

Я написал эксперта (советника). Его протестировал в тестере, сейчас уже третью неделю тестирую на демо-счете. В результате чего появился вопрос, который пока не могу решить (возможно в силу не большого опыта в программировании).

И так, эксперт в отдельной функции анализирует значения индикаторов и по окончанию анализа присваивает значение переменное, которая проверяется функцией для открытия сделки.

На выходные я компьютер выключал (соответственно, не эксперт, не МТ4 - не работали), и при включении компьютера (и программ), эксперт проведя анализ, закрывает текущую сделку и сразу же открывал следующую в том-же направлении (покупка/продажа) что и закрытая сделка. Точно такой же эффект получается когда в работающий эксперт (выполняемый в МТ4) вносил изменения и перекомпилировал эксперта.


Вопрос. Как сделать так чтобы эксперт не закрывал текущую сделку при запуске эксперта (или при перекомпиляции)?

 

к сожалению не все программисты ясновидящие. и без кода вам не помогут....

 
sergeev >>:

к сожалению не все программисты ясновидящие. и без кода вам не помогут....

К сожалению с этим есть не большая проблемка, которая заключается в том, что и по результатам тестера и по результатам теснирования на демо-счете, эксперт профитный :)

Да и в первом посте есть частичное описание работы эксперта.

 
rensbit >>:

К сожалению с этим есть не большая проблемка, которая заключается в том, что и по результатам тестера и по результатам теснирования на демо-счете, эксперт профитный :)

Да и в первом посте есть частичное описание работы эксперта.

теоритически у Вас - зачем то эксперт закрывает сделку и тут же открывает

Вы сначала проверьте есть ли сделка и если есть

пусть ваша сигнальная система ! не дает сигнал на закрытие

если у нее в задумке есть потом сигнал на открытие в том же направлении

--

а вообще трудно программистам вам помочь... т к неясен мотив вашего экаперта

почему он у вас закрывает и тут же отрывает в том же направлении

ну вставьте логику которая не будет закрывать ! в таких случаях и все

 
Для этого нужно использовать глобальные переменные. Если эксперт открывает позицию, ставим ее в 1. При перекомпиляции эксперт считывает значение, и если оно равно 1, то он не открывает новую сделку и на закрывает старую.
 
favoritefx >>:
Для этого нужно использовать глобальные переменные. Если эксперт открывает позицию, ставим ее в 1. При перекомпиляции эксперт считывает значение, и если оно равно 1, то он не открывает новую сделку и на закрывает старую.

можно без глобальных обойтись

 
Нормальный эксперт всегда подхватывает свои сделки. И если нет условий для закрытия - закрывать не будет. Видимо что-то внутри советника не то.
 
YuraZ >>:

теоритически у Вас - зачем то эксперт закрывает сделку и тут же открывает

Вы сначала проверьте есть ли сделка и если есть

пусть ваша сигнальная система ! не дает сигнал на закрытие

если у нее в задумке есть потом сигнал на открытие в том же направлении

--

а вообще трудно программистам вам помочь... т к неясен мотив вашего экаперта

почему он у вас закрывает и тут же отрывает в том же направлении

ну вставьте логику которая не будет закрывать ! в таких случаях и все


Закрывает и сражу же открывает - это потому что я исхожу из того что трэнды существуют только двух видов (ап и даун), а боковой трэнд - это часть текущего трэда. При продолжительной работе эксперта, всё нормально, т.к. эксперт "видит" примерно начало и конец трэнда. Но при первом запуске, эксперт вычисляет какоей сейчас трэнд и открывает сделку, но открытие новой сделки происходит только тогда, когда эксперт принимает решение о смене трэнда, соответственно, если трэнд изменился то эксперт закрывает текущую сделку.

 
rensbit писал(а) >>

Закрывает и сражу же открывает - это потому что я исхожу из того что трэнды существуют только двух видов (ап и даун), а боковой трэнд - это часть текущего трэда. При продолжительной работе эксперта, всё нормально, т.к. эксперт "видит" примерно начало и конец трэнда. Но при первом запуске, эксперт вычисляет какоей сейчас трэнд и открывает сделку, но открытие новой сделки происходит только тогда, когда эксперт принимает решение о смене трэнда, соответственно, если трэнд изменился то эксперт закрывает текущую сделку.

Похоже сделано принудительное закрытие всех позиций (без учета реалий рынка), а потом уже идет анализ и открытие. Заложена ошибочноя логика в советник. Он ее и исполняет. Надо бы советник поправить с учетом новых реалий (оказывается тренд может и продолжаться, сперва анализ, а потом закрытие и открытие). В смысле закрытие, если напрвление не совпадает (переворот).

 
Vinin >>:

Похоже сделано принудительное закрытие всех позиций (без учета реалий рынка), а потом уже идет анализ и открытие. Заложена ошибочноя логика в советник. Он ее и исполняет. Надо бы советник поправить с учетом новых реалий (оказывается тренд может и продолжаться, сперва анализ, а потом закрытие и открытие). В смысле закрытие, если напрвление не совпадает (переворот).

Я так и сделал "сперва анализ, а потом закрытие и открытие". Пролема в том, что при запуске эксперта выполняется именно эта последвательность действий сперва анализ, а потом закрытие и открытие, но ведь есть уже открывая сделка


Или сделать проверку на наличие открытых ордеров, потом проверить тип ордера и если тип ордера и текущий трэнд равны, тогда выйти

 
rensbit писал(а) >>

Я так и сделал "сперва анализ, а потом закрытие и открытие". Пролема в том, что при запуске эксперта выполняется именно эта последвательность действий сперва анализ, а потом закрытие и открытие, но ведь есть уже открывая сделка

А кто должен контролировать что есть. Можно по по простому вначале "все закрыть", а потом "открыть нужное". А можно поступить сразу же проще "закрыть не нужное", "открыть нужное, если его нет". Логика разная. ПОхоже в советнике реализован первый вариант. ЧТо не есть "хорошо"

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