Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Shell kabuk programlama ile ilgili yardım
#41
döngü her başa döndüğünde yeni bi exchange değeri olsun ama arkaplanda çalışsın diyosan şunu öneririm.

Kod:
#!/bin/bash

# Kullanım
#
# ./script.sh exchange1 exchange2 ...

for exchange_value in ${@}; do
    # trend_ema kısmı
    # stddev kısmı
    # vs. vs.
    # ayıklama vs. burda yazdığımız kısımlar
done &

./script.sh 100 200 300
yazar kullanırsın mesela. yani ben seni böyle anladım
Ara
Cevapla
#42
@excel hocam sizin verdiğiniz örnek başka fikir daha getirdi aklıma onu sonra deniyeceğim Big Grin

Hocam benim yapmak şuydu, şimdi bu kod başta exchange istiyor, sonra sırasıyla aşağı kadar stratejileri deniyor (#trend_ema kısmı #stddev kısmı) geliyor, aşağıyada dosyanın silinmesi için bir kod koymak istiyordum. Sonuç değerlendirildikten sonra mb olarakta değerlendirilsin istiyordum. bunuda şöyle bişey yaparak hallettim. umarım aşağıdaki "sleep komutu doğru yerdedir Smile

>> bide hocam bu shell scriptlerinde sıralı olarak yapmak istediğim birşey olsa nasıl yaparım. yani mesela "1. görevin :#bu kodu yap# 2.görevin# bu kodu yap# 3.görevin#bu kodu yap#...vs." gibi, şöyle birşey mi var acaba satırda önce hangisi gelirse omu önce yapılır yoksa satırın sonundaki kod 1. etkiliyorsa hiç işlem yapmaz mı? (mesela 1. satırda aa.txt içinden bir kelime bul komutu var ama 50. satırda "rm aa.txt" komutu var şimdi nasıl olur bu işlem, kelimeyi bulup sonra dosyayı siler demi?)

Kod:
#!/bin/bash
read -p 'Exchange? '

#########    trend_ema    ##########

while true; do
{
for var1 in 30s 1m 5m 10m 15m 30m 1h 4h
do
        for var2 in 1 5 10 15 20 30 52 60 100
        do
                for var3 in 0 auto
                do
                      ./zenbot.sh sim $REPLY --strategy=trend_ema --period=$var1 --min_periods=$var2 --trend_ema=$var2 --neutral_rate=$var3 --oversold_rsi_periods=$var2 --oversold_rsi=$var2
                done
        done
done    
}
done &

##########      stddev     #########

while true; do
{
for var1 in 100ms 500ms 1s 10s 30s 1m 15m
do
        for var2 in 0.5 1 5 10 15 50
        do
                for var3 in 1 5 10 25 52 75 100
                do
                         for var4 in 50 100 200 500 1250 1500 2000
                         do
                                ./zenbot.sh sim $REPLY --poll_trades 100ms --order_poll_time 1000ms --strategy=stddev --period=$var1 --trendtrades_1=$var2 --trendtrades_2=$var3 --min_periods=$var4
                        done
                done
        done
done
}
done &

#########      trust_distrust     ##########

while true; do
{
for var1 in 10s 30s 1m 2m 5m 10m 15m 30m 1h  
do
        for var2 in 1 5 15 25 52 60 100
        do
                for var3 in 1 2 5 10 20 25 50
                do
                         for var4 in 0 1 2 5 10 20 50
                         do
                                ./zenbot.sh sim $REPLY --strategy=trust_distrust --period=$var1 --min_periods=$var2 --sell_threshold=$var3 --sell_threshold_max=$var4 --sell_min=$var3 --buy_threshold=$var3 --buy_threshold_max=$var4 --greed=$var4
                        done
                done
        done
done
}
done &

#######     trendline    #########

while true; do
{
for var1 in 5s 10s 30s 1m 5m 10m 15m 30m 1h  
do
        for var2 in 5 10 50 100 200 500 1000
        do
                for var3 in 1 3 6 9 12 20 50
                do
                         for var4 in 5 10 25 53 75 100
                         do
                                for var5 in 50 100 250 500 1250 2500 5000
                                do
                                        ./zenbot.sh sim $REPLY --strategy=trendline --period=$var1 --min_periods=$var5 --trendtrades_1=$var2 --lastpoints=$var3 --avgpoints=$var4
                                done
                        done
                done
        done
done
}
done &

#########     macd      #######

while true; do
{
for var1 in 1m 5m 15m 30m 1h 4h
do
        for var2 in 1 5 15 25 52 60 100
         do
                for var3 in 2 4 8 12 26 30 40 80 100
                 do
                        for var4 in 3 6 9 12 15 20
                         do
                                for var5 in 0 5 10 15
                                 do
                                        ./zenbot.sh sim $REPLY --strategy=macd --period=$var1 --min_periods=$var2 --ema_short_period=$var3 --ema_long_period=$var3 --signal_period=$var4 --up_trend_threshold=$var5 --down_trend_threshold=$var5 --overbought_rsi_periods=$var2 --overbought_rsi=$var2
                                done
                        done
                done
        done
done
}
done &

#########     bneural ###########

while true; do
{
for var1 in  500ms 1s 5s 10s 30s 1m 10m 30m
do
        for var2 in sigmoid tanh relu
        do
                for var3 in 1 5 10 20 50 80 100
                do
                         for var4 in 1 3 6 9 12 15 20
                         do
                                for var5 in 100 200 500 1000
                                do
                                        for var6 in 0 1 2 3 4 5
                                        do
                                                for var7 in 100 200 500
                                                do
                                                        ./zenbot.sh sim $REPLY --strategy=neural  --period=$var1 --activation_1_type=$var2 --neurons_1=$var3 --depth=$var4 --selector=$REPLY --min_periods=$var5 --min_predict=$var3 --momentum=$var6 --decay=$var6 --learns=$var7
                                                done
                                        done
                                done
                        done
                done
        done
done
}
done &

##########       srsi_macd  ##########

while true; do
{
for per1 in 10s 30s 2m 5m 15m 30m 1h 4h
do
        for var2 in 10 20 50 80 100 200 500 600 1000
        do
                for var3 in 1 3 5 10 15
                do
                         for var4 in 1 3 5 7 9 10 20
                         do
                                for var5 in 0 5 10 15 24 25 50
                                do
                                        ./zenbot.sh sim $REPLY --strategy=srsi_macd --period=$per1 --min_periods=$var2 --rsi_periods=$var3 --srsi_periods=$var3 --srsi_k=$var4 --srsi_d=$var4 --oversold_rsi=$var2 --overbought_rsi=$var2 --ema_short_period=$var5 --ema_long_period=$var2 --signal_period=$var4 --up_trend_threshold=$var5 --down_trend_threshold=$var5
                                done
                        done
                done
        done
done
}
done &

########       ta_macd     ########

while true; do
{
for var1 in 30s 1m 5m 10m 15m 30m 1h 4h
do
        for var2 in 1 5 12 20 26 30 52 60 100
        do
                for var3 in 0.001 0.005 0.009 0.01 0.05 0.09 0.1 0.5 1
                do
                         for var4 in 1 2 5 9 10 15 20 30
                         do
                                for var5 in 0 1 5 10
                                do
                                        for var6 in 5 10 25 50 70 80 100
                                        do
                                                ./zenbot.sh sim $REPLY --strategy=ta_macd --period=$var1 --min_periods=$var2 --ema_short_period=$var2 --ema_long_period=$var2 --signal_period=$var4 --up_trend_threshold=$var5 --down_trend_threshold=$var5 --overbought_rsi_periods=$var6 --overbought_rsi=$var6
                                        done
                                done
                        done
                done
        done
done
}
done &

#########     ta_ema    ########

while true; do
{
for var1 in 30s 1m 5m 10m 15m 30m 1h 4h
do
        for var2 in 1 5 10 15 20 30 52 60 100
        do
                for var3 in 0 auto
                do
                ./zenbot.sh sim $REPLY --strategy=ta_ema --period=$var1 --min_periods=$var2 --trend_ema=$var2 --neutral_rate=$var3 --oversold_rsi_periods=$var2 --oversold_rsi=$var2
                done
        done
done
}
done &

#########      trend_ema #########

while true; do
{
for var1 in 30s 1m 5m 10m 15m 30m 1h 4h
do
        for var2 in 1 5 10 15 20 30 52 60 100
        do
                for var3 in 0 auto
                do
                ./zenbot.sh sim $REPLY --strategy=trend_ema --period=$var1 --min_periods=$var2 --trend_ema=$var2 --neutral_rate=$var3 --oversold_rsi_periods=$var2 --oversold_rsi=$var2
                done
        done
done
}
done &

###########       sar        ########

while true; do
{
for var1 in 5s 10s 30ss 1m 2m 5m 10m 30m 1h
do
        for var2 in 5 10 25 52 75 100
        do
                for var3 in 0.009 0.010 0.015 0.050 0.1 1 2
                do
                         for var4 in 0.009 0.05 0.1 0.3 0.5 0.9 1 5 10
                         do
                                ./zenbot.sh sim $REPLY --strategy=sar --period=$var1 --min_periods=$var2 --sar_af=$var3 --sar_max_af=$var4
                        done
                done
        done
done
}
done &

########    speed   ########

while true; do
{
for var1 in 30s 1m 5m 10m 15m 30m 1h  
do
        for var2 in 1 5 15 25 52 60 100
        do
                for var3 in 100 200 400 800 1200 2600 3000 4000 8000 10000
                do
                         for var4 in 0.5 1 1.6 2 3.2 5
                         do
                                ./zenbot.sh sim $REPLY --strategy=speed --period=$var1 --min_periods=$var2 --baseline_periods=$var3 --trigger_factor=$var4
                        done
                done
        done
done
}
done &

############## degerlendirme    ########

{
for sim in `egrep -l 'end balance: [0-9\.]+ \((-[^%]+|0.00)%\)' ./simulations/*.html`; do
        rm $sim
done
}


{
for i in ./simulations/*.html
do

        echo "<article>"
        echo "<header>"
        echo "<b><h1>$i</b></h1> "
        echo "<p> $(grep -i '"days":' $i) </p>"
        echo "<p> $(grep -i '"mode":' $i) </p>"
        echo "<p> $(grep -i '"period":' $i) </p>"
        echo "<p> $(grep -i '"selector":' $i) </p>"
        echo "<b> $(grep -i 'end balance:' $i) </b>"
        echo "<p> $(grep -i 'buy hold' $i) </p>"
        echo "<p> $(grep -i 'vs. buy hold' $i) </p>"
        echo "<p> $(grep -i 'trades over' $i) </p>"
        echo "<p> $(grep -i 'win/loss:' $i) </p>"
        echo "<p> $(grep -i 'error rate:' $i) </p>"
        link2=$(curl --upload-file $i https://transfer.sh/$i & > upload.txt|  grep  -i '$i' upload.txt)
        echo "<a href='http://$(ifconfig eth0 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://')/$i'>Link1</a>;"
        echo "<a href='"$link2"'>Link2</a>;"
        echo "<p>$(date +%d/%m/%Y%t%H:%M:%S) Link2 14 gun kullanilir</p>"
        echo "</header>"
        echo "</article>"


    if [ "$(stat -c %s "$i")" -gt 5120 ];
        then $(rm $i)

        else $(mv $i /var/www/html/)
    fi

sleep 2h

done

} >> /var/www/html/index.html
Ara
Cevapla
#43
@excel şimdi hocam ben bu her strategy (trend_ema...vs) başına "while true; do #kod# done &" koydumya, bunu arka planda mı yapıyor acaba? çünkü her komutu çalıştırdığımda "./zenbot.sh: line 2: 12707 Killed env node zenbot.js $@" hatası veriyor. vps serverın kuş kadar canı var o kadar stratejiyi arka planda çalıştırırsa 512mb ram ile hayatta başaramaz Big Grin, benim anlatmaya çalıştığım yukarıda dedğim gibi sıralı görevler vermek Sad
Ara
Cevapla
#44
tamam benim yazdığım şekilde yapınca hepsini sıra sıra yapıyo arkaplanda senin yaptığın hepsini aynı anda yapıyo
Ara
Cevapla
#45
(28-11-2017, Saat: 15:51)excel Nickli Kullanıcıdan Alıntı:  döngü her başa döndüğünde yeni bi exchange değeri olsun ama arkaplanda çalışsın diyosan şunu öneririm.

Kod:
#!/bin/bash

# Kullanım
#
# ./script.sh exchange1 exchange2 ...

for exchange_value in ${@}; do
    # trend_ema kısmı
    # stddev kısmı
    # vs. vs.
    # ayıklama vs. burda yazdığımız kısımlar
done &

./script.sh 100 200 300
yazar kullanırsın mesela. yani ben seni böyle anladım

@excel Bundan bahsediyorsun demi hocam. Peki bunu kullanınca başlarına "while true;do #trend_ema# done &" şeklinde mi yoksa kodların başına birşey yazmadan direk "for var1 in..... " şeklinde mi başlayayım hocam.
Ara
Cevapla
#46
Alıntı:> bide hocam bu shell scriptlerinde sıralı olarak yapmak istediğim birşey olsa nasıl yaparım. yani mesela "1. görevin :#bu kodu yap# 2.görevin# bu kodu yap# 3.görevin#bu kodu yap#...vs." gibi, şöyle birşey mi var acaba satırda önce hangisi gelirse omu önce yapılır yoksa satırın sonundaki kod 1. etkiliyorsa hiç işlem yapmaz mı? (mesela 1. satırda aa.txt içinden bir kelime bul komutu var ama 50. satırda "rm aa.txt" komutu var şimdi nasıl olur bu işlem, kelimeyi bulup sonra dosyayı siler demi?)

önce hangisi yazılmışsa o yapılır. ama bash hata aldığında prosesi kesmez; mesela 3. satır fatal olmayan bi hata verdiyse onu geçer 4. satırdan çalışmaya devam eder. scriptin başına set -e yazman yeterli.
Kod:
deneme
echo meraba
bunun çıktısı "bash: line 1: deneme: command not found
meraba" olurken,
Kod:
set -e
deneme
echo meraba
bunun çıktısı sadece "bash: line 1: deneme: command not found" olur.

bash konusunda şu iki kitabı sırasıyla okumanı şiddetle tavsiye ediyorum:
http://www.tldp.org/LDP/Bash-Beginners-G...-Guide.pdf
http://www.tldp.org/LDP/abs/abs-guide.pdf

evet ondan bahsediyorum. while vesaire yok for'un içerisine sadece o işlemleri yazman yeterli. sonra mesela aklında 5 tane exchange değeri var, ./script.sh değer1 değer2 değer3 değer4 değer5 yazar çalıştırırsın. o arkaplanda hepsini halleder. bitip bitmediğine de ps -A yazıp bakabilirsin, bitmediyse script.sh yada zenbot hala listededir
Ara
Cevapla
#47
@excel Hocam o zamanda değerlendirme kısmı altta olduğu için vps hafızası dolar ona sıra gelene kadar. Ben o zaman değerlendirme kısmının başına "while true; do #değerlendirme# done&" ekleyim.

Şimdi bide aklıma şey geldi her kar yapan (end balance +%... olan) komutu bulmak için şöyle bir şey yapsam olur mu?
Kod:
{
for var1 in 30s 1m 5m 10m 15m 30m 1h  
do
        for var2 in 1 5 15 25 52 60 100
        do
                for var3 in 100 200 400 800 1200 2600 3000 4000 8000 10000
                do
                         for var4 in 0.5 1 1.6 2 3.2 5
                         do
                                ./zenbot.sh sim $REPLY --strategy=speed --period=$var1 --min_periods=$var2 --baseline_periods=$var3 --trigger_factor=$var4 | profit_speed=$(`egrep -l 'end balance: [0-9\.]+ \((-[^%]+|0.00)%\)' ./simulations/*.html`)
                        done
                done
        done
done
}

yani yapmak istediğim: sen kombinasyonlardan oluşan kodlardan birini çalıştırdıktan sonra eğer kar yapmışsan değerlendirmeye senide alayım.
En sonda değerlendirmede "echo profit_speed" yazıp hangi kod ile bu sonucu aldığını öğrenmek.

tamam şimdi anladım, şu şekilde olur heralde demi?
Kod:
# Kullanım
#
# ./script.sh exchange1 exchange2 ...

for exchange_value in ${@}; do
    # trend_ema kısmı
    # stddev kısmı
    # vs. vs.
done &
while true; do
   # ayıklama vs. burda yazdığımız kısımlar#
done &

exchange_value için her satırda şöyle kullanıcam o zaman

"./zenbot.sh sim $exchange_value ......"

yoksa

"./zenbot.sh sim $REPLY ........"
Ara
Cevapla
#48
söylediklerine paralel olarak kodun şu halini öneriyorum.
Kod:
for arg in $@; do
   # trend_ema
   for var1 in 30s 1m 5m 10m 15m 30m 1h 4h; do
       for var2 in 1 5 10 15 20 30 52 60 100; do
           for var3 in 0 auto; do
               ./zenbot.sh sim $arg --strategy=trend_ema --period=$var1 --min_periods=$var2 --trend_ema=$var2 --neutral_rate=$var3 --oversold_rsi_periods=$var2 --oversold_rsi=$var2
           done
       done
   done
   # stddev
   # vs. vs..
done &
until sleep 1m && [ `jobs -r | wc -l` -eq 0 ]; do
   # ayıklama vs.
done

çalıştırırken de ./script.sh 100 150 200 & yaparsan tadından yenmez. çünkü ayıklama prosesi sürekli tekrar edilirse bu işlemciyi çok yorar, 1 dakika aralıklarla tekrar etmesi daha sağlıklı. Ayrıca hem ayıklama hem analiz aynı anda başlattık tamam ama analiz bittiğinde ayıklama hala devam ediyo olucak, &&'den sonrası da onu tespit etmek için yani.

yazılan komutu da kaydetmek istediğini yazmışsın ama onu nasıl yaparız bilmiyorum yani zenbot filan kullanmıyorum çünki ben de deneme imkanım yok yani

kodu da baya hatalı yazmışım ama düzenlenmiyor. sen bana başka bi yerden ulaş istersen böyle uğraşılmıyor yav
teşekkürler gecemor
Ara
Cevapla
#49
Yorum düzenleme sadece normal üye grubuna kapalıydı, şimdi açtım. Yorumunuzu düzenleyebilirsiniz.
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#50
@excel Bir fikir geldi aklıma onu yapacam da

" [ `jobs -r | wc -l` -eq 0 ]; do "

Tam olarak görevi nedir?
Ara
Cevapla

{lang: 'en'}


Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi
Change Theme