// Ten kod Pine Script™ podlega warunkom licencji Mozilla Public License 2.0 dostępnej pod adresem https://mozilla.org/MPL/2.0/

// © jeromehorus przewiduje, że wszystko co ma charakter cykliczny, można odnieść do wiatru itp.

//@wersja=6

indicator("bot de range marketing" ,overlay=true)

zakres = input.int(33,"wierzchołki")

clos = ta.sma(zamknij,13)

float dm =0

float dd =0

dla i = 0 do platyny

m= clos-clos[1]>0?prawda:fałsz

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

dm := m? dm+różnica:dm

dd := m==fałsz? dd+diff:dd

bas = ta.najniższy(bliski,13)

wysoki = ta.najwyższy(blisko,13)

rsip = input.int(27,"zakres rsi")

rsivb = input.int(35,"wartość wyprzedania")

rsivh = input.int(70,"wartość nadkupienia")

rsiv = ta.rsi(close,rsip)

eml = input.int(83,"długość 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)

haute = 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, "Minimalne odbicie w $ aby zatwierdzić sygnał wysoki")//10 dla btc szczyty są bardziej gwałtowne w zmienności

ofb= input.float(0.01, "Minimalne odbicie w $ aby zatwierdzić sygnał dołu")// szczyty są bardziej gwałtowne w zmienności

// Pamięć ostatniego dołu lub wierzchołka wykrytego

// Pamięć

var float basDetecte = na

var bool attenteRebond = false

var bool signalAffiche = false

// Wykrywanie dołu

if (close == bas and dd > dm and rsiv < rsivb and not attenteRebond)

basDetecte := close

attenteRebond := true

signalAffiche := false

// Jeśli w oczekiwaniu i odbicie 200$

if (attenteRebond and not signalAffiche and close >= basDetecte + of)

//label.new(bar_index, low, "KUPNO potwierdzone", style=label.style_label_up, color=color.green, textcolor=color.white)

signalAffiche := true

attenteRebond := false

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

if (close==bas and dd>dm and rsiv< rsivb and close+ofb< close[1])// naprawdę na dole, poniżej 1 minuty poprzedniej i 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("Cena jest niska, możliwość zakupu ? ", alert.freq_once)

alert("SYGNAŁ NISKI",freq=alert.freq_once_per_bar_close)

// pozwala usunąć kilka fałszywych sygnałów

// nie wszyscy, ponieważ jeśli to uderza wiele razy lub trenduje w górę, nie sprzedajemy ( wymaga algorytmu)

// if (close[1]==haut[1] and dm[1]>dd[1] and rsiv[1] > rsivh[1] and close[1]-of > close)// and m2)

if (close==haut and dm>dd and rsiv > rsivh and close-of > close[1])// na szczycie, wyższy o 1 min przed, i 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("Cena jest wysoka, możliwość sprzedaży ? ", alert.freq_once)

alert("SYGNAŁ WYSOKI",freq=alert.freq_once_per_bar_close)

// ochrona przed rugPull

// zdefiniować zakres cen

// można by powiedzieć między ostatnimi szczytami

// dół i góra w przeciwieństwie do ostatnich szczytów

// 2) ale także ostatnie szczyty wysokość- wartośćRugPull

dernierSommets= ta.highest(close,333)

// pójdziemy po to miin, aby uniknąć

// rugPullDoux

valeurRugPull = input.float(3,"Ochrona przed RugPull , maksymalna wartość straty w dolarach przy 333 minutach")

bool AntiRugPull = close < dernierSommets-valeurRugPull?false:true

// jeśli aktywa spadają o 3 dolary w porównaniu do swojego szczytu w 333 minutach, przestajemy

// za dużo fałszywych sygnałów

valsma = input.int(100,"SMA ZAMKNIĘCIA")

sma100 = ta.sma(close,valsma)

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

valEloign = input.float(0.1 , "oddalenie od sma w celu filtrowania fałszywych sygnałów")

// jeśli cena jest poniżej sma

// kupujemy w przeciwnym razie,

// nie kupuj ( cena zbyt wysoka lub blisko sma )

prixAchat = sma100-valEloign

///////////////// sygnały zamknięcia

valclotu= input.int(13,"rsi zamknięcia")//7,17

rsivd = ta.rsi(close,valclotu)

cloture = input.bool(false,"Handel rozpoczęty alerty zamknięcia")

// ustawienie sygnału stop loss na 7% dźwignia 100 i 17% dźwignia 200

// ostateczna broń przeciw Rugpull

// zdefiniować zakres

Session = input.float(0,"MINIMALNY dla sesji bez strat (sprawdź 15 lub 45 min, jeśli jesteśmy na dole)")

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)// and m2==false)

// dla bota

//if (cloture==true and close==bas and dd>dm and rsivd< rsivb )// and 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("zamknij krótki ?",freq=alert.freq_once_per_bar_close)

if (close> sma100+valEloign and cloture and close[1]==haut[1] and dm[1]>dd[1] and rsivd[1] > rsivh[1] and close[1]-of > close and AntiRugPull)// and m2)

//f (cloture and close==haut and dm>dd and rsivd > rsivh )// and 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("zamknij długą",freq=alert.freq_once_per_bar_close)

float tp=0

if (bar_index > 0)

for i=0 to 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 to 33

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

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

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

peti= 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,"wsparcia opory")

//r i= 0 do supportRes co 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 )

// warunek na 1 kupno po strefie kupna, aby pozostać powyżej zielonego

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

// sma 13, jeśli go przekroczymy, wchodzimy w 1 kupno

// obliczanie następnych poziomów inwestycji

// ogólnie : ryzyko krachu,

// jeśli przychodzimy z szczytu i to spada

// więcej niż 2000 : spirala.

prixAchatd = close//input.int(100000,"cena zakupu")

pallier = input.int(1000,"poziomy DCA")

g = input.float(1.1,"geometry")

// możemy rozłożyć

// zakupy ( 1 za każdym razem)

// wokół poziomów

// z wsparcia

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)

// stop podążający

stop = input.float(200,"spadek uruchamiający stop")

somm = input.int(13,"precyzja szczytu stopu")

stopSuiveur = ta.highest(close,somm)

// inwestycja

invest = input.float(100,"3 zlecenia zakupu poziomów")

facteurlissage= input.float(1.1," przesunięcie")

plot( close-invest*facteurlissage, color=color.red)

plot( close-invest*2*facteurlissage, color=color.red)

plot( close-invest*3*facteurlissage, color= color.red)

takeProfit = input.float(0.02, "% zysku")

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

levier = input.int(58,"dźwignia")

// obliczanie średniej ceny

// wiemy, gdzie jesteśmy ( ile poziomów przekroczonych)

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

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

// obliczanie średniej ceny