пару вопросов появилось=) 1.) есть ли литература про виды трендов?
допустим по длине. 2.)есть ли литература или закономерность,
изменения поведения определенной вал. пары? Или период изменения
3,5,12 месяцев. 3.) Котировки при переносе позиции на другой день
или на понедельник сильно скачут? 4.) Как можно сделать, чтобы
в зависимосте от баланса изменялся лот, то есть 2*баланса(от
начального депо) лот=2 и т.д. 5.) Как работает тайлинг стоп. 5.) Какие
есть способы спасти убыточную позицию. С уважением Сергей
Sergey_n>>:
Здравствуйте.
Подскажите, как сделать так чтобы советник ждал, когда на индикаторе
zig-zag образуется излом, то есть, допустим, максимум или минимум
достигнуты и график пошел в другом направление, но излом не
появился, как сделать чтобы после образования той висячей линии
сигнализирующей что излом произошел, сразу например, сделать
торговую операцию.
С уважение Сергей.
if (iCustom(NULL, 0, "ZUP_v49mod", minPercent, minSize, minBars, 0, 0)>0)
показывает, что если >0 то что? То есть, какое значение дает iCustom(NULL, 0, "ZUP_v49mod", minPercent, minSize, minBars, 0, 0) и что этим характеризует? Я как понял это проверка последнего бара, то есть если >0 то получен максимум? и какое он значение принимает, может быть в пунктах от максимума?
И за одно расскажите что делает этот код.
switch (filter)
{
case 1: ray_length=NormalizeDouble((peak2*minPercent/100), 4); break;
case 2: ray_length=minSize*Point; break;
}
С уважением Сергей
1. Индюк "ZUP_v49mod" возвращяет параметр нулевого буффера на нулевом барре. В зависимости от этого выполняется (если >0) или не выполняется (<0) условие if (iCustom(NULL, 0, "ZUP_v49mod", minPercent, minSize, minBars, 0, 0)>0)
2. Надо побольше кода. Откуда функция вызывается? Смахивает на размер лотта
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Посмотрел. Увы - не смогу ответить!
Поставьте Ваш вопрос - прямо там, - в ветке. И автор советника оперативно даст ответ!
А что такое Bar, это один пункт или тот бар который формируется на графике (bar=1 свечка)?
Здравствуйте.
Подскажите, как сделать так чтобы советник ждал, когда на индикаторе zig-zag образуется излом, то есть, допустим, максимум или минимум достигнуты и график пошел в другом направление, но излом не появился, как сделать чтобы после образования той висячей линии сигнализирующей что излом произошел, сразу например, сделать торговую операцию.
С уважение Сергей.
Может этот пример поможет
//+------------------------------------------------------------------+
//| Schreibikus_ZizZag_1_4_0001.mq4 |
//| Copyright © 2008 Роман Щуклин |
//| https://forextd.webasyst.net/shop/ |
//| ere@bk.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008 Роман Щуклин"
#property link "ere@bk.ru"
//#define MAGIC1 140408
//#define MAGIC2 240408
#include <stdlib.mqh> // библиотека отображения ошибок
// Если в рынке есть ордер BUY то противоположный ордер SEL не открывается
// а стоп ордера BUY ставится на уровень отложки SEL +- 2 пункта
// безубыток по играющему ордеру выставляется 1 пункт + спред
//---- input parameters
extern int ExtDepth=12; //Значения ZigZag
extern int ExtDeviation=5; //Значения ZigZag
extern int ExtBackstep=3; //Значения ZigZag
extern int ExtDlina = 70; //Значения ZigZag
extern int ExtTP = 50; //Значения ТэйкПрофита
extern double ExtTS = 15; //Значения Трала
extern double ExtLots=0.05; //Первоначальный объем Лота
extern int MAGIC1=111111; //Магическе числоо для BUY
extern int MAGIC2=222222; //Магическе числоо для SELL
int i,TP,TS,ticket; //Целые числа
double zp,zc,zcn,zpn,PriceB1,PriceS1,UD,SL; //Дробные числа
//double SL=zc;
int start()
{
bool f;
for(f=true,i=1;i<Bars;i++) //Проверка наличия свечей
{
zp=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i); //Расчет индикатора ZigZag
if(zp>0) { if(f) { f=false; zc=zp; } else break; }
}
if((zp-zc)>=(ExtDlina/10000)) //Расчет растояния между точками последнего колена zp - верхняя точка zc - нижняя точка
//Comment("Выполнили расчет длины колена "," zp-zc= ",zp-zc," >= "," Длина= ",ExtDlina);
{
if(zp>zc)
{
double w=zc+MathAbs((zp-zc)/4);
PriceB1=NormalizeDouble(w,Digits); //расчет 1/4 длины BUY для определеления цены ордера
//Comment("Расчитанная цена от длины колена PriceB1= ",PriceB1," w= ",w);
if(PriceB1 > Ask) //Выставление отложенного ордера BUY
{
if(OrdersTotal()==0)
{
double TPNorm = NormalizeDouble(PriceB1+ExtTP*Point,Digits); // Нормализованный TakeProfit
//Comment("Пробую выставить отложку по цене= ",PriceB1);
ticket=OrderSend(Symbol(),OP_BUYSTOP,ExtLots,NormalizeDouble(PriceB1,Digits),9,zc,TPNorm,NULL,MAGIC1,0,Green); //Условие выставления ордера
if(ticket<0) // ticket Уникальный порядковый номер ордера
{Print("Oшибка: ",ErrorDescription(GetLastError()));
Print("Текущ. цена= ",DoubleToStr((Bid),Digits));
Print("Цена установки BUY-ST= ", DoubleToStr(PriceB1,Digits));
Print("SL for BUY-ST= ", DoubleToStr(zc,Digits));
Print("TP for BUY-ST= ", DoubleToStr(TPNorm,Digits));
}
}
if(Bid <= zc) //Bid текущая цена изменения рынка zc нижняя расчетная точка
{
if (OrderSelect(ticket,SELECT_BY_TICKET)==true) // Выбор ордера для работы
{ //если есть ордер и цена текущая опустилась ниже стопа
OrderDelete(OrderTicket()); //Удаление ордера
//Comment("Удаляю ордер при Bid<=zc ",Bid," <= ",zc);
}
else Print("Oшибка удаления ордера ",ErrorDescription(GetLastError()));
}
}else // иначе Ask (текущая цена) больше, чем PriceB1 (цена отложенного ордера)
{
if( (PriceB1 + Point * ExtTS) <= (Ask - Point * ExtTS) ) // условия модификации ордера
{
if (OrderSelect(ticket,SELECT_BY_TICKET)==true) // Выбор ордера для работы
{
Comment("OrderOpenPrice = ",OrderOpenPrice(),"OrderStopLoss = ",OrderStopLoss());
if(Bid - OrderOpenPrice()>Point*ExtTS) //Следующее условие для модификации
{
if(OrderStopLoss()<Bid-Point*ExtTS) //Следующее условие для модификации
{
double SLNorm = NormalizeDouble(Bid-ExtTS*Point,Digits);
if(OrderModify(ticket,PriceB1,SLNorm,OrderTakeProfit(),0,Blue)==false) //Модификация ордера
{
Print("Не могу модифицировать ордер: ", ErrorDescription(GetLastError()));
Print("Номер ордера= ",ticket);
Print("Цена открытия ордера= ", DoubleToStr(PriceB1,Digits));
Print("SL= ", DoubleToStr(SLNorm,Digits));
Print("TP= ", DoubleToStr(TPNorm,Digits));
}
}
}
}
/*
double SLNorm = NormalizeDouble(Ask-ExtTS*Point,4);
if(OrderModify(ticket,PriceB1,SLNorm,TPNorm,0,Blue)==false)
{
Print("Не могу модифицировать ордер: ", ErrorDescription(GetLastError()));
Print("Номер ордера= ",ticket);
Print("Цена открытия ордера= ", DoubleToStr(PriceB1,Digits));
Print("SL= ", DoubleToStr(SLNorm,Digits));
Print("TP= ", DoubleToStr(TPNorm,Digits));
}
*/
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+
Подскажите вот эта строчка
if (iCustom(NULL, 0, "ZUP_v49mod", minPercent, minSize, minBars, 0, 0)>0)
показывает, что если >0 то что? То есть, какое значение дает iCustom(NULL, 0, "ZUP_v49mod", minPercent, minSize, minBars, 0, 0) и что этим характеризует? Я как понял это проверка последнего бара, то есть если >0 то получен максимум? и какое он значение принимает, может быть в пунктах от максимума?
И за одно расскажите что делает этот код.
switch (filter)
{
case 1: ray_length=NormalizeDouble((peak2*minPercent/100), 4); break;
case 2: ray_length=minSize*Point; break;
}
С уважением Сергей
1. Индюк "ZUP_v49mod" возвращяет параметр нулевого буффера на нулевом барре. В зависимости от этого выполняется (если >0) или не выполняется (<0) условие if (iCustom(NULL, 0, "ZUP_v49mod", minPercent, minSize, minBars, 0, 0)>0)
2. Надо побольше кода. Откуда функция вызывается? Смахивает на размер лотта