Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 100

 
trader781:

чт - то я не понял куда мне его пихать, и почему не (-1)

есть входной параметр bool

void OnTick

{анализ открытие ордеров, трелингстоп}

void Трейлингстоп

{cоответствует ли текукщая цена условиям закрытия

если да кроем все что есть

Да вообще return; Это же void

А что там у вас в логике - мне неизвестно. Как вы мне предлагаете угадать что там у вас?
 
trader781:

по трем точкам

 

1 точка extern где задается нужно ли нам открыть второй и более ордер

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

3) точка закрытия ордера 

 

могу и сам код кинуть но он у всех одинаков 

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

За вашими сообщениями потом не найдёшь полезных, среди тысячи бесполезных страниц 

P.S. Или у вас задача постов набить по максимуму?
 
trader781:
Затем что я прошу схему переключателя по этим трем точкам. Потом свои посты удалю Если считаете мусором.

Что это за точка?

1 точка extern где задается нужно ли нам открыть второй и более ордер

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

3) точка закрытия ордера 

Вы сами то хоть понимаете что хотите?

По пункту №2 - ордер нельзя открыть, его можно только установить, так-же нельзя закрыть, а можно только удалить. Вообще, у вас всегда как-то всё логически несвязуемо и размыто, вам нужно быть депутатом.

 

Есть такая часть кода:

if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_TEXT,0,0,0);
    ObjectSetString(0,nm,OBJPROP_PRICE, TIME(0)+Period()*60*3); // сдвиг вправо на 3 свечи
}

Вопрос: в пятёрке Period() возвращает до М30 вменяемое значение, от Н1 набор цифр, и сместить метку таким способом уже не получается.

Как сделать смещение на N - свечей независимо от периода? Не писать-же отдельную функцию?

 
Vitaly Muzichenko:

Есть такая часть кода:

if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_TEXT,0,0,0);
    ObjectSetString(0,nm,OBJPROP_PRICE, TIME(0)+Period()*60*3); // сдвиг вправо на 3 свечи
}

Вопрос: в пятёрке Period() возвращает до М30 вменяемое значение, от Н1 набор цифр, и сместить метку таким способом уже не получается.

Как сделать смещение на N - свечей независимо от периода? Не писать-же отдельную функцию?

PeriodSeconds(PERIOD_CURRENT)*3
 
Artyom Trishkin:
PeriodSeconds(PERIOD_CURRENT)*3

Спасибо!

Вопрос следующий: насколько корректна эта запись, она стоит в начале программы, а по всей программе используется много Time[0] и Time[1], и чтоб не вызывать каждый раз, прописано в переменную. Ошибок выхода за пределы массива вроде нет, но всё поверхностно определено:

datetime TM[], TIME0, TIME1;

//------------
void OnTimer()

ArraySetAsSeries(TM, true);
  if(CopyTime(_Symbol, PERIOD_CURRENT, 0, 2, TM)==-1) return;
   TIME0 = TM[0];
   TIME1 = TM[1];

Спасибо!

 
Vitaly Muzichenko:

Что это за точка?

1 точка extern где задается нужно ли нам открыть второй и более ордер

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

3) точка закрытия ордера 

Вы сами то хоть понимаете что хотите?

По пункту №2 - ордер нельзя открыть, его можно только установить, так-же нельзя закрыть, а можно только удалить. Вообще, у вас всегда как-то всё логически несвязуемо и размыто, вам нужно быть депутатом.

пожалуйста. Вот параметр extern bool OpenOrders=false;//+---Открыть ордер

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

в текущий момент он самовыпиливается (работает но для элемента панели неприемлемо) 

Файлы:
 
trader781:

пожалуйста. Вот параметр extern bool OpenOrders=false;//+---Открыть ордер

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

в текущий момент он самовыпиливается (работает но для элемента панели неприемлемо) 

Я бы сделал так. Добавил в коде "Disabled"

P.S. Замените в строке 72 на "if(!Disabled) return;". Думаю логика флага понятна.
Файлы:
 
Vitaly Muzichenko:

Я бы сделал так. Добавил в коде "Disabled"

P.S. Замените в строке 72 на "if(!Disabled) return;". Думаю логика флага понятна.

Нет, непонятна. Возвращаемся к тому чему пришли.

 1) Disabled=true

инициализируем в ините на true

пропускаем в онтик if(!Disabled) return;

открываем закрываем

 Disabled=false; выход. Все отлично.

2) Disabled=false

инициализируем в ините на true 

пропускаем в онтик if(!Disabled) return;

открываем закрываем

 Disabled=false; выход. И где я буду открывать следующий ордер? Какой-то из вариантов должен это позволять.

 

теперь понятно почему я просил описать логику? 

Вариант в 2 советника и у меня есть. 

 
trader781:

Нет, непонятна. Возвращаемся к тому чему пришли.

 1) Disabled=true

инициализируем в ините на true

пропускаем в онтик if(!Disabled) return;

открываем закрываем

 Disabled=false; выход. Все отлично.

2) Disabled=false

инициализируем в ините на true 

пропускаем в онтик if(!Disabled) return;

открываем закрываем

 Disabled=false; выход. И где я буду открывать следующий ордер? Какой-то из вариантов должен это позволять.

 

теперь понятно почему я просил описать логику? 

Вариант в 2 советника и у меня есть. 

Не понятно. Если нужно останавливать советник, то предложенный вариант с этим справляется, если не нужно останавливать, тогда пусть торгует и ничем его не ограничивать. Если нужно торговать по требованию после остановки, то достаточно переключить тайм, Disabled станет true и программа продолжит работу
Причина обращения: