icwr2.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «icwr2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы MetaTrader 4, работающий на основе анализа индикатора RSI и построения уровней Фибоначчи на ценовом графике. Он определяет активные максимумы и минимумы за выбранный период, строит объекты Фибоначчи и рассчитывает ключевые уровни поддержки и сопротивления. На основе соотношения текущего RSI и расположения цены относительно рассчитанных уровней советник открывает позиции в виде стоп-ордеров на покупку или продажу.
Для управления рисками советник использует параметр риска в процентах от свободного маржи счета и автоматически уменьшает размер лота при серии убыточных сделок. Размер лота нормализуется и имеет минимальный порог. Все сделки идентифицируются магическим номером, что позволяет советнику отслеживать свои позиции и управлять ими — закрывать при достижении подтверждённых уровней.
На графике отображается информационная панель с текущими значениями: последний тик, направление свопа, значение RSI, активные уровни высока и низа, рассчитанные уровни подтверждения и ретрейса, а также номера открытых ордеров. При удалении советника все построенные объекты Фибоначчи удаляются с графика.
Настройки программы
| Настройка | Описание |
|---|---|
| %account balance to risk per position (MaximumRisk) | Максимальный риск — Процент от свободного маржи счета, рискуемый на одну позицию |
| lot size divisor(reducer) during loss streak (DecreaseFactor) | Фактор уменьшения — Делитель, уменьшающий размер лота при серии убыточных сделок |
| Magic | Магический номер — Идентификатор ордеров советника для фильтрации и управления позициями |
| comment | Комментарий — Текст, добавляемый к описанию ордера |
Поиск по коду файла
extern double MaximumRisk =0.02; //%account balance to risk per position
extern double DecreaseFactor =3; //lot size divisor(reducer) during loss streak
extern double Lot.Margin =50; //Margin for 1 lot
extern int Magic =69;
extern string comment ="m icwr";
double spread; spread =Ask-Bid;
int slip; slip =spread/Point;
double rsi,temp.high,active.high,temp.low,active.low,r,x,SL,awp1,awp2,high.c,high.r,low.r,low.c;
int a.high.shift,a.low.shift,shift,b,s,cnt,b.ticket,s.ticket;
datetime a.high.time,a.low.time,awt1,awt2;
string FiboName;
int init(){
// код доступен только после оплаты
}
int deinit(){ ObjectsDeleteAll(0,OBJ_FIBO); return(0); }
int start(){
// код доступен только после оплаты
}
PosCounter();
rsi=iRSI(Symbol(),1440,14,PRICE_CLOSE,0);
if(Period()==5) {x=(40*Point); SL=(50*Point); }
if(Period()==240) {x=(150*Point); SL=(100*Point);}
if(a.high.time>0) {a.high.shift=iBarShift(Symbol(),Period(),a.high.time);}
if(a.low.time>0) {a.low.shift=iBarShift(Symbol(),Period(),a.low.time);}
for(int c=1;r<x;c++) {
temp.high=High[Highest(Symbol(),Period(),MODE_HIGH,c,0)];
if(temp.high>active.high) { active.high=temp.high;
a.high.time=iTime(Symbol(),Period(),Highest(Symbol(),Period(),MODE_HIGH,c,0));
a.high.shift=iBarShift(Symbol(),Period(),a.high.time);}
temp.low=Low[Lowest(Symbol(),Period(),MODE_LOW,c,0)];
if(temp.low<active.low ||
active.low<=0) { active.low=temp.low;
a.low.time=iTime(Symbol(),Period(),Lowest(Symbol(),Period(),MODE_LOW,c,0));
a.low.shift=iBarShift(Symbol(),Period(),a.low.time);}
r=(active.high-active.low); }
if(a.high.shift<=1 && Low[a.low.shift+1]<Low[a.low.shift]) {
ObjectDelete(TimeToStr(a.high.time,TIME_DATE|TIME_MINUTES));
active.low=Low[a.low.shift+1];
a.low.time=iTime(Symbol(),Period(),Lowest(Symbol(),Period(),MODE_LOW,a.low.shift+1,0));
a.low.shift=iBarShift(Symbol(),Period(),a.low.time);}
if(a.low.shift<=1 && High[a.high.shift+1]>High[a.high.shift]) {
ObjectDelete(TimeToStr(a.low.time,TIME_DATE|TIME_MINUTES));
active.high=High[a.high.shift+1];
a.high.time=iTime(Symbol(),Period(),Lowest(Symbol(),Period(),MODE_LOW,a.high.shift+1,0));
a.high.shift=iBarShift(Symbol(),Period(),a.high.time);}
if(a.high.shift<=1 && High[0]>High[1]) {
ObjectDelete(TimeToStr(a.high.time,TIME_DATE|TIME_MINUTES));
active.high=High[Highest(Symbol(),Period(),MODE_HIGH,a.low.shift,0)];
a.high.time=iTime(Symbol(),Period(),Highest(Symbol(),5,MODE_HIGH,a.low.shift,0));
a.high.shift=iBarShift(Symbol(),Period(),a.high.time);}
if(a.low.shift<=1 && Low[0]<Low[1]) {
ObjectDelete(TimeToStr(a.low.time,TIME_DATE|TIME_MINUTES));
active.low=Low[Lowest(Symbol(),Period(),MODE_LOW,a.high.shift,0)];
a.low.time=iTime(Symbol(),Period(),Lowest(Symbol(),Period(),MODE_LOW,a.high.shift,0));
a.low.shift=iBarShift(Symbol(),Period(),a.low.time);}
if(a.high.shift<a.low.shift) shift=a.high.shift;
else shift=a.low.shift;
if(shift>0 &&
High[Highest(Symbol(),Period(),MODE_HIGH,shift,0)]-Low[Lowest(Symbol(),Period(),MODE_LOW,shift,0)]>=x) {
active.high=0;a.high.time=0;a.high.shift=0;
active.low=0;a.low.time=0;a.low.shift=0;
temp.high=High[Highest(Symbol(),Period(),MODE_HIGH,shift,0)];
if(temp.high>active.high) { active.high=temp.high;
a.high.time=iTime(Symbol(),Period(),Highest(Symbol(),Period(),MODE_HIGH,shift,0));
a.high.shift=iBarShift(Symbol(),Period(),a.high.time);}
temp.low=Low[Lowest(Symbol(),Period(),MODE_LOW,shift,0)];
if(temp.low<active.low ||
active.low<=0) { active.low=temp.low;
a.low.time=iTime(Symbol(),Period(),Lowest(Symbol(),Period(),MODE_LOW,shift,0));
a.low.shift=iBarShift(Symbol(),Period(),a.low.time);} }
if(a.high.shift<=a.low.shift) {
FiboName=TimeToStr(a.high.time,TIME_DATE|TIME_MINUTES);
ObjectCreate(FiboName,OBJ_FIBO,0,a.low.time,active.low,a.high.time,active.high);
ObjectSet(FiboName, OBJPROP_STYLE, STYLE_DASH);
ObjectSet(FiboName, OBJPROP_COLOR, Green);
ObjectSet(FiboName, OBJPROP_WIDTH, 1);
ObjectSet(FiboName, OBJPROP_FIBOLEVELS, 6);
ObjectSet(FiboName, OBJPROP_FIRSTLEVEL+0, 0);
ObjectSet(FiboName, OBJPROP_FIRSTLEVEL+1, 0.25);
ObjectSet(FiboName, OBJPROP_FIRSTLEVEL+2, 0.382);
ObjectSet(FiboName, OBJPROP_FIRSTLEVEL+3, 0.618);
ObjectSet(FiboName, OBJPROP_FIRSTLEVEL+4, 0.75);
ObjectSet(FiboName, OBJPROP_FIRSTLEVEL+5, 1); }
if(a.loПоказано первые 50% кода (символов: 7205)
Что вы получите после оплаты
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? Адрес передаётся вместе с заказом в магазин и сохраняется для связи заказа с оплатой. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.