FiboRSI8 SingleShot MT4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «fiborsi8_singleshot_mt4_v124.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
FiboRSI8 SingleShot MT4 — торговый советник для MetaTrader 4, использующий индикатор RSI для определения направления рынка и уровни Фибоначчи для формирования торговых сигналов. Советник анализирует ценовые данные на заданных таймфреймах и строит карту уровней на основе свечных данных.
При достижении ценой определённых зон советник открывает позиции в направлении, определённом RSI. Для продаж используются уровни R1, R1Zone и R2, для покупок — зона Blue Zone. Вход в рынок возможен только при выполнении условий по спреду и наличии подтверждения.
Советник включает управление позициями: фиксированный тейк-профит, безубыток и трейлинг-стоп на базе ATR. Размер позиции рассчитывается на основе процента риска от капитала или фиксированного лота с ограничением максимального размера.
Встроенная информационная панель отображает текущее состояние советника, значения RSI и статус торговых сигналов. Все параметры настраиваются пользователем через диалог настроек MetaTrader 4.
Настройки программы
| Настройка | Описание |
|---|---|
| RSI_Period | Период индикатора RSI, используемый для определения режима рынка. |
| RSI_Timeframe | Таймфрейм индикатора RSI для определения режима рынка. |
| Fibo_Timeframe | Таймфрейм для построения карты уровней Фибоначчи и анализа свечных данных. |
| Use_H4_Filter | Переключатель дополнительного фильтра RSI на старшем таймфрейме для подтверждения направления рынка. |
| Filter_Timeframe | Таймфрейм дополнительного фильтра RSI, используемого при включённом фильтре H4. |
| Sideways_Low | Нижняя граница зоны боковика RSI. Значения RSI в этом диапазоне считаются нейтральными. |
| Sideways_High | Верхняя граница зоны боковика RSI. Значения RSI в этом диапазоне считаются нейтральными. |
| Lookback_Fibo_Bars | Количество баров назад для поиска свечи, на основе которой строится карта Фибоначчи. |
| Min_Body_Points | Минимальный размер тела свечи в пунктах для отбора свечи при построении карты. |
| Min_Body_ATR | Минимальный размер тела свечи в единицах ATR для отбора свечи при построении карты. |
| Single_Shot | Переключатель однократного входа: после открытия позиции на построенной карте советник ожидает новую карту. |
| One_Position_Per_Symbol | Переключатель, запрещающий открытие более одной позиции на один торговый символ одновременно. |
| Touch_Tolerance_Points | Допуск касания ценового уровня в пунктах для определения реакции цены на уровень. |
| Entry_Tolerance_ATR | Допуск входа в позицию в единицах ATR, определяющий близость цены к зоне для подтверждения сигнала. |
| Blue_Zone_Padding_ATR | Отступ зоны Blue Zone в единицах ATR, задающий допустимый диапазон ценового касания для сигнала на покупку. |
| Use_R1 | Переключатель использования уровня R1 для генерации сигнала на продажу. |
| Use_R1_Zone | Переключатель использования зоны R1Zone для генерации сигнала на продажу. |
| Use_R2 | Переключатель использования уровня R2 для генерации сигнала на продажу. |
| Use_Candle_Confirmation | Переключатель подтверждения сигнала свечой: вход только при совпадении направления свечи с направлением сделки. |
| Buy_PR_Ratio | Коэффициент уровня PR для построения карты Фибоначчи при покупке. |
| Buy_FDR_Ratio | Коэффициент уровня FDR для построения карты Фибоначчи при покупке. |
| Buy_PO_Ratio | Коэффициент уровня PO для построения карты Фибоначчи при покупке. |
| Buy_CL_Ratio | Коэффициент уровня CL для построения карты Фибоначчи при покупке. |
| Buy_R1_Ratio | Коэффициент уровня R1 для построения карты Фибоначчи при покупке. |
| Buy_R1Zone_Ratio | Коэффициент уровня R1Zone для построения карты Фибоначчи при покупке. |
| Buy_R2_Ratio | Коэффициент уровня R2 для построения карты Фибоначчи при покупке. |
| Sell_PR_Ratio | Коэффициент уровня PR для построения карты Фибоначчи при продаже. |
| Sell_FDR_Ratio | Коэффициент уровня FDR для построения карты Фибоначчи при продаже. |
| Sell_PO_Ratio | Коэффициент уровня PO для построения карты Фибоначчи при продаже. |
| Sell_CL_Ratio | Коэффициент уровня CL для построения карты Фибоначчи при продаже. |
| Sell_R1_Ratio | Коэффициент уровня R1 для построения карты Фибоначчи при продаже. |
| Sell_R1Zone_Ratio | Коэффициент уровня R1Zone для построения карты Фибоначчи при продаже. |
| Sell_R2_Ratio | Коэффициент уровня R2 для построения карты Фибоначчи при продаже. |
| Use_Risk_Percent | Переключатель расчёта размера позиции на основе процента риска от эквивалента счёта вместо фиксированного лота. |
| Risk_Percent | Процент риска от эквивалента счёта, используемый для расчёта размера позиции. |
| Fixed_Lot | Фиксированный размер лота для открытия позиции при отключённом расчёте по проценту риска. |
| Max_Lot | Максимально допустимый размер лота. Значение 0 означает использование максимального лота у брокера. |
| Min_SL_Distance_Points | Минимальное расстояние стоп-лосса в пунктах. 0 — отключено. |
| Min_SL_Spread_Multiple | Множитель, задающий минимальное расстояние стоп-лосса как кратное текущему спреду. |
| SL_Buffer_ATR | Буфер стоп-лосса в единицах ATR, добавляемый к расчётному уровню для защиты позиции. |
| TakeProfit_RR | Соотношение прибыли к риску для установки фиксированного тейк-профита. |
| Max_Spread_Points | Максимально допустимый спред в пунктах. При превышении вход в позицию блокируется. 0 — без ограничения. |
| Slippage_Points | Допустимое проскальзывание при исполнении ордеров в пунктах. |
| Magic_Number | Магический номер для идентификации ордеров, открытых данным советником. |
| Use_BreakEven | Переключатель функции безубытка: перевод стоп-лосса в безубытковую зону при достижении заданного соотношения. |
| BreakEven_RR | Соотношение прибыли к риску, при достижении которого активируется безубыток. |
| BreakEven_Plus_Points | Смещение безубытка в пунктах при активации функции безубытка. |
| Use_Trailing | Переключатель трейлинг-стопа: перемещение стоп-лосса в прибыльную зону при достижении заданного соотношения. |
| Trail_Start_RR | Соотношение прибыли к риску, при достижении которого активируется трейлинг-стоп. |
| Trail_ATR_Multiplier | Множитель ATR для расчёта уровня трейлинг-стопа. |
| Trail_Step_ATR | Шаг трейлинг-стопа в единицах ATR. |
| Show_Panel | Переключатель отображения информационной панели с текущим состоянием советника в чате. |
Поиск по коду файла
#property strict
#property version "1.24"
#property description "FiboRSI8 MT4 v1.24: BLUE=BUY, R1/R2=SELL, TP + ATR trailing"
input int RSI_Period=8;
input ENUM_TIMEFRAMES RSI_Timeframe=PERIOD_M15;
input ENUM_TIMEFRAMES Fibo_Timeframe=PERIOD_H1;
input bool Use_H4_Filter=false;
input ENUM_TIMEFRAMES Filter_Timeframe=PERIOD_H4;
input double Sideways_Low=45.0;
input double Sideways_High=55.0;
input int Lookback_Fibo_Bars=80;
input int Min_Body_Points=10;
input double Min_Body_ATR=0.15;
input bool Single_Shot=true;
input bool One_Position_Per_Symbol=true;
input int Touch_Tolerance_Points=100;
input double Entry_Tolerance_ATR=0.20;
input double Blue_Zone_Padding_ATR=0.10;
input bool Use_R1=true;
input bool Use_R1_Zone=true;
input bool Use_R2=true;
input bool Use_Candle_Confirmation=false;
input double Buy_PR_Ratio=0.382;
input double Buy_FDR_Ratio=1.120;
input double Buy_PO_Ratio=1.382;
input double Buy_CL_Ratio=1.618;
input double Buy_R1_Ratio=-0.250;
input double Buy_R1Zone_Ratio=-0.441;
input double Buy_R2_Ratio=-0.850;
input double Sell_PR_Ratio=0.618;
input double Sell_FDR_Ratio=-0.120;
input double Sell_PO_Ratio=-0.382;
input double Sell_CL_Ratio=-0.618;
input double Sell_R1_Ratio=-0.250;
input double Sell_R1Zone_Ratio=-0.441;
input double Sell_R2_Ratio=-0.850;
input bool Use_Risk_Percent=true;
input double Risk_Percent=1.0;
input double Fixed_Lot=0.01;
input double Max_Lot=0.10; // hard cap; 0 = broker maximum
input double Min_SL_Distance_Points=300.0; // 300 points = 3.00 on 2-digit XAUUSD; 0 = disabled
input double Min_SL_Spread_Multiple=3.0; // SL distance >= spread x factor
input double SL_Buffer_ATR=0.20;
input double TakeProfit_RR=2.0; // fixed TP at 2R by default
input int Max_Spread_Points=0;
input int Slippage_Points=50;
input int Magic_Number=8050808;
input bool Use_BreakEven=true;
input double BreakEven_RR=1.0;
input int BreakEven_Plus_Points=2;
input bool Use_Trailing=true;
input double Trail_Start_RR=0.8;
input double Trail_ATR_Multiplier=1.20;
input double Trail_Step_ATR=0.15;
input bool Show_Panel=true;
#define MAP_NONE 0
#define MAP_BUY 1
#define MAP_SELL -1
struct FiboMap { bool valid; int direction; datetime candleTime; double low,high,range,LH0,LH1,PR,FDR,PO,CL,R1,R1Zone,R2; };
FiboMap g_map;
datetime g_lastFiboBar=0;
int g_lastRegime=0;
bool g_shotTaken=false;
string g_reason="Initializing";
string g_state="OFF";
int TF(ENUM_TIMEFRAMES tf){ if(tf==PERIOD_CURRENT) return Period(); return (int)tf; }
double NP(double p){ return NormalizeDouble(p,Digits); }
double ATR(int shift=1){ return iATR(Symbol(),TF(Fibo_Timeframe),14,shift); }
double Tol(){ double a=ATR(1); return MathMax(Touch_Tolerance_Points*Point,(a>0?a*Entry_Tolerance_ATR:0)); }
bool SpreadOK(){ return (Max_Spread_Points<=0 || (Ask-Bid)/Point<=Max_Spread_Points); }
bool HasPosition(){ for(int i=OrdersTotal()-1;i>=0;i--){ if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue; if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic_Number&&(OrderType()==OP_BUY||OrderType()==OP_SELL))return true;} return false; }
int Regime(double &rsi,double &h4){ rsi=iRSI(Symbol(),TF(RSI_Timeframe),RSI_Period,PRICE_CLOSE,1); h4=iRSI(Symbol(),TF(Filter_Timeframe),RSI_Period,PRICE_CLOSE,1); if(rsi>=Sideways_Low&&rsi<=Sideways_High)return MAP_NONE; if(rsi<Sideways_Low){if(Use_H4_Filter&&h4<Sideways_Low)return MAP_NONE;return MAP_BUY;} if(rsi>Sideways_High){if(Use_H4_Filter&&h4>Sideways_High)return MAP_NONE;return MAP_SELL;} return MAP_NONE; }
double Ratio(double low,double range,double r){return NP(low+range*r);}
bool BuildMap(int dir,FiboMap &m){ int lim=MathMax(20,Lookback_Fibo_Bars); for(int i=1;i<=lim;i++){ double o=iOpen(Symbol(),TF(Fibo_Timeframe),i),c=iClose(Symbol(),TF(Fibo_Timeframe),i),h=iHigh(Symbol(),TF(Fibo_Timeframe),i),l=iLow(Symbol(),TF(Fibo_Timeframe),i); double body=MathAbs(c-o),atr=ATR(1); if(h<=l||body<Min_Body_Points*Point||(atr>0&&body<atr*Min_Body_ATR))continue; if(dir==MAP_BUY&&c<=o)continue; if(dir==MAP_SELL&&c>=o)continue; m.valid=true;m.direction=dir;m.candleTime=iTime(Symbol(),TF(Fibo_Timeframe),i);m.low=l;m.high=h;m.range=h-l;m.LH0=NP(l);m.LH1=NP(h); if(dir==MAP_BUY){m.PR=Ratio(l,m.range,Buy_PR_Ratio);m.FDR=Ratio(l,m.range,Buy_FDR_Ratio);m.PO=Ratio(l,m.range,Buy_PO_Ratio);m.CL=Ratio(l,m.range,Buy_CL_Ratio);m.R1=Ratio(l,m.range,Buy_R1_Ratio);m.R1Zone=Ratio(l,m.range,Buy_R1Zone_Ratio);m.R2=Ratio(l,m.range,Buy_R2_Ratio);}else{m.PR=Ratio(l,m.range,Sell_PR_Ratio);m.FDR=Ratio(l,m.range,Sell_FDR_Ratio);m.PO=Ratio(l,m.range,Sell_PO_Ratio);m.CL=Ratio(l,m.range,Sell_CL_Ratio);m.R1=Ratio(l,m.range,Sell_R1_Ratio);m.R1Zone=Ratio(l,m.range,Sell_R1Zone_Ratio);m.R2=Ratio(l,m.range,Sell_R2_Ratio);} return true;} return false; }
bool RecentTouch(double level){ if(level<=0)return false; double tol=Tol(); double mid=(Ask+Bid)/2; if(MathAbs(mid-level)>tol*1.5)return false; for(int i=1;i<=2;i++)if(iLow(Symbol(),TF(RSI_Timeframe),i)<=level+tol&&iHigh(Symbol(),TF(RSI_Timeframe),i)>=level-tol)return true; return false; }
bool Touch(double p,double level){return level>0&&MathAbs(p-level)<=Tol();}
bool BlueZone(){ if(!g_map.valid)return false; double lo=MathMin(g_map.PR,MathMin(g_map.FDR,g_map.PO));double hi=MathMax(g_map.PR,MathMax(g_map.FDR,g_map.PO));double a=ATR(1);double pad=(a>0?a*Blue_Zone_Padding_ATR:Tol());double p=(Ask+Bid)/2;return p>=lo-pad&&p<=hi+pad; }
bool CandleOK(int dir){if(!Use_Candle_Confirmation)return true;double o=iOpen(Symbol(),TF(RSI_Timeframe),1),c=iClose(Symbol(),TF(RSI_Timeframe),1);return dir==MAP_BUY?c>o:c<o;}
double Lots(double entry,double sl){ double lots=Fixed_Lot;if(Use_Risk_Percent&&Risk_Percent>0){double risk=AccountEquity()*Risk_Percent/100.0;double tv=MarketInfo(Symbol(),MODE_TICKVALUE),ts=MarketInfo(Symbol(),MODE_TICKSIZE);double loss=(MathAbs(entry-sl)/MathMax(ts,Point))*tv;if(loss>0)lots=risk/loss;} double minLot=MarketInfo(Symbol(),MODE_MINLOT),maxLot=MarketInfo(Symbol(),MODE_MAXLOT),step=MarketInfo(Symbol(),MODE_LOTSTEP);if(Max_Lot>0)maxLot=MathMin(maxLot,Max_Lot);if(maxLot<minLot)return 0;lots=MathMax(minLot,MathMin(maxLot,lots));lots=MathFloor(lots/step+1e-8)*step;if(lots>maxLot)lots=MathFloor(maxLot/step+1e-8)*step;return NormalizeDouble(lots,2); }
void DrawLine(string name,double price,color clr,int style=STYLE_DASH){ if(ObjectFind(0,name)<0)ObjectCreate(0,name,OBJ_HLINE,0,0,price);ObjectSetDouble(0,name,OBJPROP_PRICE1,price);Показано первые 50% кода (символов: 12129)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.