← К каталогу
Исходный код · ID 4557

FiboRSI8 SingleShot MT4

fiborsi8_singleshot_mt4_v124.mq4

Похожие материалы по тегам

indicator candle pressure flip engine for tradingview.pineTradingView · 1 общих теговares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

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 и перейдите к оплате.

Стоимость полного кода
1 212,90₽ ≈ $15.05