// 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