// Этот код Pine Script™ подчиняется условиям Лицензии Mozilla Public License 2.0 на https://mozilla.org/MPL/2.0/

// © jeromehorus предсказывает все циклические явления, может быть применимо к ветру и т.д.

//@version=6

indicator("бот диапазона маркетинга" ,overlay=true)

plage= input.int(33,"вершины")

clos = ta.sma(close,13)

float dm =0

float dd =0

for i = 0 до plage

m= clos-clos[1]>0?true:false

diff= math.abs(clos-clos[1])

dm := m? dm+diff:dm

dd := m==false? dd+diff:dd

bas = ta.lowest(close,13)

высокая = ta.highest(close,13)

rsip = input.int(27,"диапазон rsi")

rsivb = input.int(35,"значение перепроданности")

rsivh = input.int(70,"значение перекупленности")

rsiv = ta.rsi(close,rsip)

eml = input.int(83,"длина ema")

ema200 = ta.ema(close,eml)

ema666 = ta.ema(close,666)

m6 = ema666 - ema666[1] >0? true:false

plot( ema200, color= m6? color.green:color.red)

m2 = ema200 - ema200[1] >0? true:false

base = ta.lowest(close,33)

высокая = ta.highest( close,33)

plot( close, color= close> haute[13] ? color.green: close< base[13]? color.red: color.yellow,linewidth=5)

of= input.float(10.0, "Минимальный отскок в $ для подтверждения сигнала вершины")//10 для btc вершины более взрывные в волатильности

ofb= input.float(0.01, "Минимальный отскок в $ для подтверждения сигнала дна")// вершины более взрывные в волатильности

// Память о последнем дне или вершине

// Память

var float basDetecte = na

var bool ожиданиеРебонда = false

var bool сигналОтображен = false

// Обнаружение дна

if (close == bas and dd > dm and rsiv < rsivb and not ожиданиеРебонда)

basDetecte := close

ожиданиеРебонда := true

сигналОтображен := false

// Если в ожидании и отскок на 200$

if (ожиданиеРебонда and not сигналОтображен and close >= basDetecte + of)

//label.new(bar_index, low, "ПОКУПКА подтверждена", style=label.style_label_up, color=color.green, textcolor=color.white)

сигналОтображен := true

ожиданиеРебонда := false

// if (close[1]==bas[1] and dd[1]>dm[1] and rsiv[1]< rsivb[1] and close[1]+ofb< close)// и m2==false)

if (close==bas and dd>dm and rsiv< rsivb and close+ofb< close[1])// действительно на дне, менее 1 мин предыдущей и m2==false)

label.new(bar_index, low, "b", style=label.style_label_up, color=close>haute[13]?color.green:color.rgb(0,122,0), textcolor=color.white)

//alert("Цена низкая, возможность покупки ? ", alert.freq_once)

alert("СИГНАЛ ДНО",freq=alert.freq_once_per_bar_close)

// позволяет устранить некоторые ложные сигналы

// не все, потому что если это срабатывает несколько раз или тренд вверх, мы не продаем (необходим алгоритм для продвинутых, я это сделаю на c)

// if (close[1]==высокая[1] and dm[1]>dd[1] and rsiv[1] > rsivh[1] and close[1]-of > close)// и m2)

if (close==высокая and dm>dd and rsiv > rsivh and close-of > close[1])// на вершине, больше чем 1 мин предыдущей, и m2)

label.new(bar_index, high, "h", style=label.style_label_down, color=close<base[13]?color.red:color.rgb(255,55,55), textcolor=color.white)

//alert("Цена высокая, возможность продажи ? ", alert.freq_once)

alert("СИГНАЛ ВЕРШИНА",freq=alert.freq_once_per_bar_close)

// защита против rugPull

// определить диапазон цен

// мы могли бы сказать между последними вершинами

// дно и вершина по сравнению с последними вершинами

// 2) но также последние вершины высокие - значение RugPull

последниеВершины= ta.highest(close,333)

// мы ищем его менее, чтобы избежать

// мягкие RugPull

значениеRugPull = input.float(3,"Защита против RugPull, максимальная стоимость потерь в долларах за 333 минуты")

bool AntiRugPull = close < последниеВершины-значениеRugPull?false:true

// если актив падает слишком сильно на 3 доллара по сравнению со своей вершиной за 333 минуты, мы останавливаемся

// слишком много ложных сигналов

valsma = input.int(100,"SMA ЗАКРЫТИЯ")

sma100 = ta.sma(close,valsma)

plot(sma100,color=color.yellow,linewidth=3)

valEloign = input.float(0.1 , "удаление от sma для фильтрации ложных сигналов")

// если цена ниже sma

// мы покупаем иначе, мы

// не покупаем (цена слишком высокая или близка к sma)

prixAchat = sma100-valEloign

///////////////// сигналы закрытия

valclotu= input.int(13,"rsi закрытия")//7,17

rsivd = ta.rsi(close,valclotu)

закрытие = input.bool(false,"Торговля начата, уведомления о закрытии")

// установить сигнал стоп-лосс на 7% левередж 100 и 17% левередж 200

// ультимативное оружие против Rugpull

// определить диапазон

Session = input.float(0,"МИНИМАЛЬНЫЙ для сессии без потерь (смотрите 15 или 45 мин, если мы на дне)")

if (close< prixAchat and close> Session and cloture==true and close[1]==bas[1] and dd[1]>dm[1] and rsivd[1]< rsivb[1] and close[1]+ofb< close and AntiRugPull)// и m2==false)

// для бота

//if (закрытие==true and close==bas and dd>dm and rsivd< rsivb )// и m2==false)

label.new(bar_index, low, "☠", style=label.style_label_down, color=close>haute[13]?color.green:color.rgb(0,122,0), textcolor=color.white)

alert("закрыть короткую позицию ?",freq=alert.freq_once_per_bar_close)

if (close> sma100+valEloign and закрытие and close[1]==высокая[1] and dm[1]>dd[1] and rsivd[1] > rsivh[1] and close[1]-of > close and AntiRugPull)// и m2)

//f (закрытие and close==высокая and dm>dd and rsivd > rsivh )// и m2)

label.new(bar_index, high, "💀", style=label.style_label_up, color=close<base[13]?color.red:color.rgb(255,55,55), textcolor=color.white)

alert("закрыть длинную позицию",freq=alert.freq_once_per_bar_close)

float tp=0

if (bar_index > 0)

for i=0 до 83

mp = close[i]-close[i+1]>=0?true:false

dp = math.abs(close[i]-close[i+1])

tp := mp ? tp+dp: tp-dp

grandt = tp<=0?false: true

tp :=0

if (bar_index > 0)

for i=0 до 33

mp = close[i]-close[i+1]>=0?true:false

dp = math.abs(close[i]-close[i+1])

tp := mp ? tp+dp: tp-dp

пети= tp<=0?false: true

tp :=0

plot ( ema666, color= grandt ? peti ? color.green:color.blue: peti==false? color.red:color.yellow)

supportRes = input.int(83,"поддержка и сопротивление")

// r i= 0 до supportRes с шагом 33

hhaut = ta.highest(high,supportRes)

bbas = ta.lowest(low,supportRes)

box.new( bar_index-1233, hhaut, bar_index+253,hhaut,border_color = color.rgb(2,55,225,43),border_width=4,bgcolor=color.rgb(255,255,255,255))

box.new( bar_index-1233, bbas, bar_index+253,bbas,border_color = color.rgb(2,55,225,43),border_width=4,bgcolor=color.rgb(255,255,255,255))

plot (hhaut,color=color.green,offset=-1)

plot (bbas, color= color.green,offset=1)

plot(bbas+((hhaut-bbas)/3), color= color.red)

plot( hhaut- ((hhaut-bbas)/3) , color=color.yellow )

// условие для 1 buy после зоны buy, чтобы оставаться выше зеленого

plot ( ta.sma(close,13), color=color.black)

// sma 13, если мы ее пробиваем, мы входим в 1 buy

// расчет следующих уровней инвестиций

// в общем: риск краха,

// если мы пришли с вершины и она падает

// более 2000 : спираль.

prixAchatd = close//input.int(100000,"Цена покупки")

pallier = input.int(1000,"уровни DCA")

g = input.float(1.1,"геометрический")

// мы можем разложить

// покупки (по 1 разу)

// по уровням

// от поддержки

plot ( prixAchatd, color= color.black)

plot( prixAchatd-pallier, color=color.black)

plot( prixAchatd-pallier*2*g, color=color.black)

plot( prixAchatd-pallier*3*g, color=color.black)

plot( prixAchatd-pallier*4*g, color=color.black)

plot( prixAchatd-pallier*5*g, color=color.black)

plot( prixAchatd-pallier*6*g, color=color.black)

plot( prixAchatd-pallier*7*g, color=color.black)

// следящий стоп

стоп = input.float(200,"падение актива для срабатывания стопа")

somm = input.int(13,"точность вершины стопа")

stopSuiveur = ta.highest(close,somm)

// инвестиции

инвестиция = input.float(100,"3 ордера покупки уровней")

факторСглаживания= input.float(1.1," смещение")

plot( close-invest*факторСглаживания, color=color.red)

plot( close-invest*2*факторСглаживания, color=color.red)

plot( close-invest*3*факторСглаживания, color= color.red)

takeProfit = input.float(0.02, "% take profit")

plot( close+( close*takeProfit), color=color.purple)

левередж = input.int(58,"левередж")

// расчет средней цены

// мы знаем, где находимся (сколько уровней пройдено)

//( close > stopSuiveur-stop and close < stopSuiveur )

// label.new(bar_index, high, "стоп", style=label.style_label_down, color=close<base[13]?color.red:color.rgb(255,55,55), textcolor=color.white)

// расчет средней цены