Название советника: TZ_Sky_and_Ground_V_01 Краткое описание Советник по 6 МА, которые можно настраивать. Из МА строится канал, пробитие верхней части сигнализирует о покупке, а нижней о продаже. Важно: скользящие средние можно легко заменить на пользовательский индикатор! Условия на закрытие ордера четырех видов, и их можно использовать как вместе, так и по отдельности (исключение). Возможно использование трала на выбор: стандартный при открытии бара, по параболику, по ATR. Советник должен уметь работать на реальном счете с разным количество знаков цены инструмента после запятой и с лотом от 0,01. P.S. Писать необходимо так, что б легко можно было модифицировать/добавить/убрать любую часть кода в последствии, так как планируется дальнейшее развитие идеи. Требуется ответственный программист, готовый продолжать работать и получать дополнительное вознаграждение за доработку советника. Настройки: extern string text1 = "1. Настройка координат и стратегии"; extern int pipsH=1800; // Отступ от maH extern int pipsL=1800; //Отступ от maL extern int pipsB=1800; // Отступ от maB extern int pipsS=1800; //Отступ от maS Sinhron=1;//0 - отдельный расчет; 1 -- cинхронизация maB=maH, maS=maL. extern string text2 = "1.1 Настройка средней скользящей и отступа для верхнего конверта"; //maH – среднее скользящее: extern int TFH=0;//тайм фрейм H extern int pMAH=128;//период H средней extern int priceMAH=0;//цена H средней extern int typeMAH=0;//метод H средней extern int shiftMAH=0;//сдвиг H средней extern string text3 = "1.2 Настройка средней скользящей и отступа для нижнего конверта"; //maL – среднее скользящее: extern int TFL=0;//тайм фрейм L extern int pMAL=128;//период L средней extern int priceMAL=0;//цена L средней extern int typeMAL=0;//метод L средней extern int shiftMAL=0;//сдвиг L средней extern string text2 = "1.3 Настройка средней скользящей и отступа для закрытия ордеров на покупку"; //maB – среднее скользящее: extern int TFB=0;//тайм фрейм B extern int pMAB=128;//период B средней extern int priceMAB=0;//цена B средней extern int typeMAB=0;//метод B средней extern int shiftMAB=0;//сдвиг B средней extern string text3 = "1.4 Настройка средней скользящей и отступа для закрытия ордеров на продажу"; //maS – среднее скользящее: extern int TFS=0;//тайм фрейм S extern int pMAS=128;//период S средней extern int priceMAS=0;//цена S средней extern int typeMAS=0;//метод S средней extern int shiftMAS=0;//сдвиг S средней extern string text3 = "1.5 Настройка средней скользящей для фильтрации сигналов"; //maF – среднее скользящее: extern int TFFS=60;//тайм фрейм F extern int pMAF=128;//период F средней extern int priceMAF=0;//цена F средней extern int typeMAF=0;//метод F средней extern int shiftMAF=0;//сдвиг F средней extern string text02 = "2.0 Условия для фильтрации сигналов на открытие ордеров"; Use_maF=1;// 0 - не использовать ма в качестве фильтра, >1 - использовать ма в качестве фильтра согласно ТЗ extern string text03 = "3.0 Условия для закрытия открытых ордеров"; Close_Open_A=1;// 0 - не закрывать ордера; >1 закрывать по указанному в ТЗ варианту Close_Open_B=1;// 0 - не закрывать ордера; >1 закрывать по указанному в ТЗ варианту Close_Open_C=1;// 0 - не закрывать ордера; >1 закрывать по указанному в ТЗ варианту Close_Open_D=1;// 0 - не закрывать ордера; >1 закрывать по указанному в ТЗ варианту Close_Open_E=1;// 0 - не закрывать ордера; >1 закрывать по указанному в ТЗ варианту extern string text04 = "4.0 Условия для закрытия открытых ордеров по тралу"; Trall=1;// 0 - не использовать трал; 1 - трал в пунктах от максимальной/минимальной цены, 2 - трал по параболику, 3 - трал по ATR extern string text05 = "4.1 Условия для закрытия открытых ордеров по тралу по пунктам"; Trall_A_Point=300; // если Trall=1, то используем этот показатель для расчета растояния на которое перемещеается стоп лосс extern string text06 = "4.2 Условия для закрытия открытых ордеров по тралу Parabolic; Trall_Sar_TF=0;//выбор тайм фрейма индикатора iSar Trall_Sar_Step=0,02;//шаг увеличения скорости - ускорение iSar Trall_Sar_Maximum=0,2;//максимальный коэффициент следования за ценой iSar Trall_Sar_Shift=0;//сдвиг iSar extern string text07 = "4.3 Условия для закрытия открытых ордеров по тралу ATR"; Trall_ATR_K=1,5;// коэфициент, на который будет умножено значение ATR Trall_ATR_TF=0;//выбор тайм фрейма индикатора iATR Trall_ATR_Period=12;// выбор периода для расчета iATR Trall_ATR_Shift=0;// сдвиг iATR extern string text08 = "5.0 Настройка советника для торговли в реальном времени"; Buy_Open=1;// 1 - открывать ордера на покупку, 0 - не открывать ордера на покупку Sell_Open=1;// 1 - открывать ордера на продажу; 0 - не открывать ордера на продажу extern double Lot=0,1; // Размер лота может быть 0,01 extern int magicA=1; //magicA – идентификационное ("магическое") число для метода открытия ордеров extern int NumberOfTry=10;//кол-во попыток совершения торговой операции extern int Slippage=3;//проскальзывание extern bool UseSound=true;//использовать звуковые сигналы extern string NameFileSound="ok.wav";//файл звукового сигнала extern int PauseAfterError=3;//пауза после ошибки Расчет координат maH, maL, maB, maS maF - это iMa, которые могут быть легко заменены на другой аналогичный индикатор Buy_Point=maH+PipsXH Sell_Point=maL-PipsXL Close_Point_Buy=maB+PipsXB Close_Point_Sell=maS-PipsXS Если Use_maF=0, то Open_Buy_F=1 и Open_Sell_F=1 Если Use_maF=1, то, если Open[0]>maF, то Open_Buy_F=1 и Open_Sell_F=0, иначе Open_Buy_F=0 и Open_Sell_F=1 Если Use_maF=2, то, если Open[0]>maF, то Open_Buy_F=0 и Open_Sell_F=1, иначе Open_Buy_F=1 и Open_Sell_F=0 Если Sinhron=1, то Close_Point_Buy=maH, Close_Point_Sell=maL Если Trall=2, то Trall_Sar=iSar(0,Trall_Sar_TF,Trall_Sar_Step,Trall_Sar_Maximum,Trall_Sar_Shift) Если Trall=3, то Trall_ATR=iATR(0,Trall_ATR_TF,Trall_ATR_Period,Trall_ATR_Shift)*Trall_ATR_K Важно: Расчет координат происходит в любом случае, даже если в настройках советника отключена возможность открывать ордера на покупку/продажу Открытие позиции: На покупку: Если Buy_Point[0]>Open[0] && Buy_Point[1]Low[1] && Open_Low_F=1 Если позиция открыта и не известна максимальная цена бара на котором открылась позиция, то запоминаем максимальную цену бара на котором открылась позиция Sell_Max_Price=High[1] Запоминаем PriceOpenSell - цена открытия ордера на продажу (запоминаем при открытии, а если только включили терминал, то запрашиваем у ДЦ об открытии) Важно: Ордер не открывается, если уже открыт аналогичный - на покупку или продажу - максимум два открытых ордера может быть одновременно. Закрытие позиции: На покупку: Если Close_Open_A=1 Если Low[1]Close_Point_Sell[1]//закрытие при пересечении на прошлом баре скользящей средней Если Close_Open_B=1 Если Buy_Point[0]>Open[0] // встречное закрытие-открытие Если Close_Open_C=1 Если Close[1]>Sell_Max_Price//закрытие, если цены открылись выше цены бара, который пересек ма для открытия Если Close_Open_D=1 Если Low[0]==Sell_Point[0] && Low[1]>Sell_Point[1] // закрытие, если цена находясь за ма для открытия коснулась её Внимание: Если расчетный стоп лосс выставить нельзя Если Close_Open_E=1, то закрываем ордер, иначе оставляем старый стоп лосс. Трал: На покупку: Если Trall=1, то SL_Buy=PriceOpenBuy+High[1]-Trall_A_Point*Point Если Trall=2, то SL_Buy=Trall_Sar Если Trall=3, то SL_Buy=High[1]-Trall_ATR Значение стоп лосса на SL_Buy меняется только, если оно уменьшает расстояние до максимальной цены по сравнению с установленным стоп лоссом На продажу: Если Trall=1, то SL_Sell=PriceOpenSell-Low[1]+Trall_A_Point*Point Если Trall=2, то SL_Sell=Trall_Sar Если Trall=3, то SL_Sell=Low[1]+Trall_ATR Значение стоп лосса на SL_Sell меняется только, если оно уменьшает расстояние до минимальной цены по сравнению с установленным стоп лоссом.