спасибо! эта проблема ушла. остался маленький штрих. через раз закрываются все ордера(надо чтобы все и всегда!), но иногда если наоткрываю 3-4 ордера, то может закрыться только 2 или 1. Вот так происходит войд по закрытию. вроде специальная i-тая проверка стоит, может подскажешь.
Всем здравствуйте. Может кто-нибудь помочь подредактировать советника. Нужно убрать функцию открытия ордеров, чтобы советник сам не открывал ордера, а работал только с открытыми вручную ордерами. Заранее спасибо.
Берем зиг-заг и в OnCalculace проверяем его буфер на значения обычно больше 0 (значит, что в буфере записано значение экстремума, low или high). Перебираем буфер с помощью цикла
intOnCalculate( constint rates_total, // размер входных таймсерий constint prev_calculated, // обработано баров на предыдущем вызове constdatetime& time[], // Time constdouble& open[], // Open constdouble& high[], // High constdouble& low[], // Low constdouble& close[], // Close constlong& tick_volume[], // Tick Volume constlong& volume[], // Real Volume constint& spread[] // Spread
) {
// код зиг-зага
...
if (prev_calculated > 0) // дальнейший код сработает только один разreturn (rates_total);
// обработка значений зиг-загаfor (int i = rates_total - 1; i >= 0; i--) {
if (zigZag[i] > 0) { // найден экстремум// сохраняем time[i] в любую удобную форму для дальнейшей работы
}
}
return (rates_total);
}
цикл приведённый выше (справа налево) предназначен для MQL5
для MQL4 цикл будет слева направо
for (int i = 0; i < rates_total; i++)
Приведённые примеры дают сначала новые по времени значения. Чтобы получить сначала старшие по времени значения используем ArraySetAsSeries или меняем направление перебора цикла на противоположное.
Из скрипта данные можно получить с помощью iCustom, CopyTime либо iTime, а также iBars (вместо rates_total).
voidOnTick()
{
// Получим значение индикатора
dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если нет открытых ордеров, то входим в условиеif(CountOrders()==0)
{
// Если появился сигнал на покупку, то откроем ордер на покупкуif(bSignalBuy() == true)
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif(bSignalSell() == true)
vOrderOpenSell();
}
DrawLABEL("nextlot",1,5,0,Color1(),StringConcatenate("CURRENT LOT: ",DoubleToStr(LOT(),2)));
DrawLABEL("currentlot",1,5,0,Color2(),StringConcatenate("NEXT LOT: ",DoubleToStr(LOT(),2)));
TrailingOrders();
}
то происходит мгновенное перемещение стопа и тейка бесконечное число раз
если никуда TrailingOrders(); не подставлять то вообще ничего не смещается.
я себе ставил задачу не трейлиг сделать а одно/двукратное перемещение стопа и тейка.
целый день сегодня "изобретаю" ничего пока не выходит толкового.
то происходит мгновенное перемещение стопа и тейка бесконечное число раз
если никуда TrailingOrders(); не подставлять то вообще ничего не смещается.
я себе ставил задачу не трейлиг сделать а одно/двукратное перемещение стопа и тейка.
целый день сегодня "изобретаю" ничего пока не выходит толкового.
Трал должен срабатывать если цена пошла в направлении ТП и ничего не делать если цена откатилась назад. Уровень СЛ при этом должен идти только в направлении ТП и не откатываться назад.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
понятно. спасибо.
спасибо! эта проблема ушла. остался маленький штрих. через раз закрываются все ордера(надо чтобы все и всегда!), но иногда если наоткрываю 3-4 ордера, то может закрыться только 2 или 1. Вот так происходит войд по закрытию. вроде специальная i-тая проверка стоит, может подскажешь.
Не стоит пренебрегать скобками, попробуй так
Как получить экстремумы ZZ в формате D' 2021.01.05
Скрипта нет?
Скрипта нет?
Берем зиг-заг и в OnCalculace проверяем его буфер на значения обычно больше 0 (значит, что в буфере записано значение экстремума, low или high). Перебираем буфер с помощью цикла
цикл приведённый выше (справа налево) предназначен для MQL5
для MQL4 цикл будет слева направо
Приведённые примеры дают сначала новые по времени значения. Чтобы получить сначала старшие по времени значения используем ArraySetAsSeries или меняем направление перебора цикла на противоположное.
Из скрипта данные можно получить с помощью iCustom, CopyTime либо iTime, а также iBars (вместо rates_total).
я наверное что то не правильно понимаю
если включаю функцию в
то происходит мгновенное перемещение стопа и тейка бесконечное число раз
если никуда TrailingOrders(); не подставлять то вообще ничего не смещается.
я себе ставил задачу не трейлиг сделать а одно/двукратное перемещение стопа и тейка.
целый день сегодня "изобретаю" ничего пока не выходит толкового.
я наверное что то не правильно понимаю
если включаю функцию в
то происходит мгновенное перемещение стопа и тейка бесконечное число раз
если никуда TrailingOrders(); не подставлять то вообще ничего не смещается.
я себе ставил задачу не трейлиг сделать а одно/двукратное перемещение стопа и тейка.
целый день сегодня "изобретаю" ничего пока не выходит толкового.
Трал должен срабатывать если цена пошла в направлении ТП и ничего не делать если цена откатилась назад. Уровень СЛ при этом должен идти только в направлении ТП и не откатываться назад.