فیلتر نویسی در tsetmc

Collapse
X
 
  • زمان
  • نمایش
Clear All
new posts
  • شیرماهی وال استریت
    Banned
    • Nov 2020
    • 18

    #346
    پاسخ : فیلتر نویسی در tsetmc

    در اصل توسط omdbrz پست شده است View Post
    چه خطایی داره؟
    ممنون
    خدمتتان عرض شد
    کار نمیکند
    وقتی اجرا میکنم همه فیلترای دیگه اجرا میشه
    اما این اجرا نمیشه
    هیچ سهمی رو نشون نمیده و صفحش سفیده
    ممنون بررسی کنید
    خودتون اجرا کنید یه شات بزارید.مرسی

    نظر

    • M.noori
      عضو جدید
      • Sep 2020
      • 2

      #347
      پاسخ : فیلتر نویسی در tsetmc

      سلام و عرض ادب خدمت دوستان عزیز
      اولا که تشکر کنم چراکه من خیلی از صحبتها و فیلترهای شما عزیزان استفاده میکنم و واقعا قدردانم،امیدوارم تمام افراد پاک و صادق و دستگیر همیشه خوش و سلامت باشن،
      میخوام بدونم دوستان آیا فیلتری هست که سهامی که کمترین رشد مثلا در سال ۹۹داشتن،یا کمترین رشد ۶ماهه داشتنو برای ما گلچین کنه و نمایش بده؟
      ممنونم

      نظر

      • omdbrz
        ستاره دار (1)
        • Oct 2020
        • 37

        #348
        پاسخ : فیلتر نویسی در tsetmc

        Code:
        
        
        Code:
        true==function(){
        //فیلتر نمایش چارت سی روزه نماد در tse.ارتفاع سطرها را 35 قرار دهید جهت دیدن بهتر چارت//
        //نوشته شده توسط محمد امین غفوری//
        var base_url="http://www.tsetmc.com/tsev2/chart/img/Inst.aspx?i="
        var final_url=base_url+row.inscode
        (cfield0)="<img src="+final_url+" alt="+(l18)+">"
        
        
        return true;
        	
        	
        	
        	
        }()
        [RIGHT][COLOR=#333333][/COLOR][/RIGHT]

        نظر

        • omdbrz
          ستاره دار (1)
          • Oct 2020
          • 37

          #349
          پاسخ : فیلتر نویسی در tsetmc

          Code:
          //کراس آپ مکدی//
          true==function(){
          var speriod=12
          var lperiod=26
          var sgperiod=9
          //--------------------------------------------------
          var dlen = 60
          var xb=0
          var yb=0
          var dle=0
          var sma=0
          var sum=0
          var zr1=0
          var zr2=0
          var zr3=0
          var zper=sgperiod+lperiod
          //-----------------------------------------------------
          for(xb=0;xb<dlen;xb++)
          {
          if([ih][xb].QTotTran5J>0)
          {
          yb++
          }else{}
          }
          dle=yb
          var ema1=[];ema1.length=dle
          var ema2=[];ema2.length=dle
          var macd=[];macd.length=dle
          var macsig=[];macsig.length=dle
          var machis=[];machis.length=dle
          var closdbs=[];closdbs.length=dle
          //-----------------------------------------------------
          yb=dle+1
          for(xb=0;xb<dlen;xb++)
          {
          if([ih][xb].QTotTran5J>0)
          {
          yb--
          closdbs[yb]=[ih][xb].PDrCotVal
          }else{}
          }
          zr1=2/(speriod+1)
          zr2=2/(lperiod+1)
          zr3=2/(sgperiod+1)
          sum=0
          for(xb=1;xb<=speriod;xb++)
          {
          sum+=closdbs[xb]
          }
          //sma1[speriod]=sum/speriod
          sma=sum/speriod
          //ema1[speriod]=sma1[speriod]
          ema1[speriod]=sma
          for(xb=speriod+1;xb<=dle;xb++)
          {
          ema1[xb]=zr1*(closdbs[xb]-ema1[xb-1])+ema1[xb-1]
          }
          sum=0
          for(xb=1;xb<=lperiod;xb++)
          {
          sum+=closdbs[xb]
          }
          //sma2[lperiod]=sum/lperiod
          //ema2[lperiod]=sma2[lperiod]
          sma=sum/lperiod
          ema2[lperiod]=sma
          for(xb=lperiod+1;xb<=dle;xb++)
          {
          ema2[xb]=zr2*(closdbs[xb]-ema2[xb-1])+ema2[xb-1]
          }
          for(xb=lperiod;xb<=dle;xb++)
          {
          macd[xb]=ema1[xb]-ema2[xb]
          }
          for(xb=lperiod;xb<=zper-1;xb++)
          sum=0
          {
          sum+=macd[xb]
          }
          sma=sum/sgperiod
          macsig[zper-1]=sma
          for(xb=zper;xb<=dle;xb++)
          {
          macsig[xb]=zr3*(macd[xb]-macsig[xb-1])+macsig[xb-1]
          machis[xb]=macd[xb]-macsig[xb]
          }
          if(dle>=zper&&machis[dle-1]<0&&machis[dle]>=0)
          {
          (cfield0)=macd[dle]
          (cfield1)=macsig[dle]
          (cfield2)=machis[dle]
          return true
          }else{
          return false
          }
          }();

          نظر

          • mokhlas
            عضو فعال
            • Mar 2012
            • 301

            #350
            پاسخ : فیلتر نویسی در tsetmc

            سلام و عرض ادب خدمت دوستان به خصوص به دوستان عزيرmhjboursy و sooroosh1315
            ميخواستم سه ستون سي فيلد ها را از1- نسبت قدرت خريدبه فروش امروز 2-نسبت قدرت خريدبه فروش ديروز 3-نسبت حجم به میانگین حجم10 روزه با فرض ریختن صف فروش

            در واقع بند3 : (حجمی که سهم می خورد نسبت به میانگین 10 روزه اخیر خود (متناسب با زمان سپری شده از بازار) چند برابر است؛ در واقع فرمول آن به این شکل است که مجموع حجمی که تا به الان نماد خورده است + حجم صف فروش با هم جمع شده و فرض گرفته می شود که اگر یکباره صف فروش خریداری شود مجموعا حجمی که نماد خورده است متناسب با زمانی که از بازار گذشته چند برابر میانگین حجم 10 روز اخیرش است.)

            مورد 1 (cfield0) را مشكلي ندارم..
            باتشكر واحترام مجدد
            هيچ ثروتي چون عقل، و هيچ فقري چون ناداني نيست. هيچ ارثي چون ادب، و هيچ پشتيباني چون مشورت نيست. حضرت علی(ع)

            نظر

            • omdbrz
              ستاره دار (1)
              • Oct 2020
              • 37

              #351
              پاسخ : فیلتر نویسی در tsetmc

              در اصل توسط mokhlas پست شده است View Post
              سلام و عرض ادب خدمت دوستان به خصوص به دوستان عزيرmhjboursy و sooroosh1315
              ميخواستم سه ستون سي فيلد ها را از1- نسبت قدرت خريدبه فروش امروز 2-نسبت قدرت خريدبه فروش ديروز 3-نسبت حجم به میانگین حجم10 روزه با فرض ریختن صف فروش

              در واقع بند3 : (حجمی که سهم می خورد نسبت به میانگین 10 روزه اخیر خود (متناسب با زمان سپری شده از بازار) چند برابر است؛ در واقع فرمول آن به این شکل است که مجموع حجمی که تا به الان نماد خورده است + حجم صف فروش با هم جمع شده و فرض گرفته می شود که اگر یکباره صف فروش خریداری شود مجموعا حجمی که نماد خورده است متناسب با زمانی که از بازار گذشته چند برابر میانگین حجم 10 روز اخیرش است.)

              مورد 1 (cfield0) را مشكلي ندارم..
              باتشكر واحترام مجدد
              برای مورد 2 در tse امکان پذیر نیست اما در سایت تابلو خوانی با استفاده از gfield ها میشه نوشت، مورد 3 هم که من متوجه منظورتون نشدم

              نظر

              • "Midas"
                عضو فعال
                • Oct 2013
                • 2483

                #352
                پاسخ : فیلتر نویسی در tsetmc

                سلام،

                نمی دانم کاربر Caveman تالار، در این فروم حضور دارند یا خیر،


                فیلتری می خواستم با این خروجی، لطفا دوستان راهنمایی کنند:


                - آخرین معامله ی روز قبل پایین تر از اولین قیمت همان روز (کندل منفی)

                - اولین قیمت امروز بالاتر از ماکزیمم قیمت دیروز
                بانک ها گروه پیشرو در حرکت بعدی بورس خواهند بود. (1400/7/19)
                ecosia.org جستجو = کاشت درخت!

                نظر

                • omdbrz
                  ستاره دار (1)
                  • Oct 2020
                  • 37

                  #353
                  پاسخ : فیلتر نویسی در tsetmc

                  برای مورد 3 هم ابتدا شرط صف فروش رو بنویسید سپس حجم سه سطر اول فروش و با هم جمع کنید و با tvol جمع بزنید و اون رو با میانگین حجم ده روزه مقایسه کنید به سادگی

                  نظر

                  • mhjboursy
                    ستاره‌دار (۱۳)
                    • Jul 2013
                    • 18270

                    #354
                    پاسخ : فیلتر نویسی در tsetmc

                    سلام و عرض ادب. ?
                    نمی‌شود.
                    در حالت عادی نمی‌شود. بورس این داده (یعنی آمار حقیقی حقوقی روز گذشته) را به ما نمی‌دهد.

                    در حالت غیر عادی:
                    ۱- باید برنامه‌نویسی پیشرفته‌تر بلد باشید و آمار حقیقی حقوقی را به صورت تاریخی به صورت دانه به دانه برای هر نماد هر روز بگیرید که کار سختی است.
                    ۲- باید برنامه‌نویسی پیشرفته‌تر بلد باشید و خودتان دستی هر روز داده‌های حقیقی حقوقی را بگیرید و روی رایانه خودتان ذخیره کنید و بعد آمار امروز و دیروز را مقایسه کنید.
                    ۳- بگردید از داده‌هایی که سازمان بورس در پرونده‌ی راهنمای فیلترنویسی‌اش داده ببینید متغیری جایگزین می‌توانید پیدا کنید که به جای این استفاده کنید!!!؟؟؟!!!
                    «محمد حسین» هستم.
                    امیرالمومنین(ع):برای دنیایت چنان کار کن که گویا همیشه زندگی خواهی کرد و برای آخرتت چنان که گویا فردا خواهی مرد.

                    نظر

                    • omdbrz
                      ستاره دار (1)
                      • Oct 2020
                      • 37

                      #355
                      پاسخ : فیلتر نویسی در tsetmc

                      در اصل توسط mhjboursy پست شده است View Post
                      سلام
                      در این خصوص به یکی از عزیزان توضیحی عرض کردم که عینا اینجا نقل قول می‌کنم:

                      یا علی.


                      ویرایش: جستار تست جناب سروش را نگاه کردم. این دو جا به آن اشاره شده نگاه کنید:


                      البته خودتان هم باید یک نگاه بیاندازید دیگر... مثلا در مورد درصد ریزش صف فروش... یک نماد ممکن است صف فروشش خیلی سبک بوده باشد! مثلا ۱۰۰ هزار تومان بوده. حالا که شده ۵۰ هزار تومان اینجا ۵۰ درصد درصد ریزش می‌خورد! این متفاوت است با صفی که ۴۰۰ میلیارد تومان بوده و الان شده ۲۰۰ میلیارد تومان.
                      و این که... سرعت ریزش هم مهم است. (تند بریزد بهتر است.)
                      و این که... سرانه خریدار و سرانه فروشنده و سرانه کسانی که در صف هستند هم بد نیست یک نگاهی بیاندازیم.
                      و این که... (ای خدا... یک چیز دیگر هم بود یادم رفت... یادم آمد اینجا را ویرایش می‌کنم.)
                      با استفاده از sessionstorage میشه کد نویسی کرد انشاله در اختیار دوستان قرار خواهد گرفت به زودی

                      نظر

                      • Bikhabar
                        ستاره‌دار(22)
                        • Sep 2020
                        • 1189

                        #356
                        پاسخ : فیلتر نویسی در tsetmc

                        در اصل توسط "Midas" پست شده است View Post
                        سلام،

                        نمی دانم کاربر Caveman تالار، در این فروم حضور دارند یا خیر،


                        فیلتری می خواستم با این خروجی، لطفا دوستان راهنمایی کنند:


                        - آخرین معامله ی روز قبل پایین تر از اولین قیمت همان روز (کندل منفی)

                        - اولین قیمت امروز بالاتر از ماکزیمم قیمت دیروز
                        من یه مدت کوتاه فیلترنویسی کردم که انقدر tse اذیت کرد گذاشتم کنار الان با پایتون کار میکنم ولی چیزی که شما میخوای (اگه منظورتون اینه که هر دو شرط همزمان وجود داشته باشه) فکر کنم این باشه:

                        فایل های ضمیمه شده

                        نظر

                        • omdbrz
                          ستاره دار (1)
                          • Oct 2020
                          • 37

                          #357
                          پاسخ : فیلتر نویسی در tsetmc

                          در اصل توسط mhjboursy پست شده است View Post
                          سلام
                          در این خصوص به یکی از عزیزان توضیحی عرض کردم که عینا اینجا نقل قول می‌کنم:

                          یا علی.


                          ویرایش: جستار تست جناب سروش را نگاه کردم. این دو جا به آن اشاره شده نگاه کنید:


                          البته خودتان هم باید یک نگاه بیاندازید دیگر... مثلا در مورد درصد ریزش صف فروش... یک نماد ممکن است صف فروشش خیلی سبک بوده باشد! مثلا ۱۰۰ هزار تومان بوده. حالا که شده ۵۰ هزار تومان اینجا ۵۰ درصد درصد ریزش می‌خورد! این متفاوت است با صفی که ۴۰۰ میلیارد تومان بوده و الان شده ۲۰۰ میلیارد تومان.
                          و این که... سرعت ریزش هم مهم است. (تند بریزد بهتر است.)
                          و این که... سرانه خریدار و سرانه فروشنده و سرانه کسانی که در صف هستند هم بد نیست یک نگاهی بیاندازیم.
                          و این که... (ای خدا... یک چیز دیگر هم بود یادم رفت... یادم آمد اینجا را ویرایش می‌کنم.)

                          Code:
                                                                      /* |--------------------------------------------------------| */
                                                                      /* |                  فیلتر تشخیص جمع شدن صف فروش              | */
                                                                      /* |                  نوشته شده توسط کاوه رجبی                | */
                                                                      /* |--------------------------------------------------------| */
                          // تعریف ثوابت
                          const delaySecs = 10;                                                        // تعداد ثانیه های ابتدایی هر دقیقه که ذخیره دیتا انجام می شود
                          const queCof =20;                                                            // درصد کم شدن صف فروش 
                          
                          
                          // تابع جدا ساز 
                          function numSeperatorFun(x) 
                          {
                              
                              if( typeof x == 'object')                                     // ورودی بصورت آرایه باشد
                              {
                                  for( let i = 0; i < x.length; i++ )
                                  {
                                      if( typeof x[i] == 'number' )
                                          x[i] = x[i].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
                          
                          
                                      else if( typeof x[i] == 'string' )
                                          x[i] = x[i].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
                                  }
                                  return x;
                              }
                          
                          
                              else if( typeof x == 'number' )                                 // ورودی تنها یک متغییر عددی باشد
                                  return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
                          
                          
                              else if ( typeof x == 'string' )                            // ورودی فقط یک متغییر رشته ای باشد
                                  return x.replace(/\B(?=(\d{3})+(?!\d))/g, ",");    
                          
                          
                              else
                                  return 'undefined'
                          }
                          
                          
                          // تابعی برای انجام محاسبات
                          function calculateFun()
                          {
                              // دیتای فراخوانی شده از حافظه
                              let pastSellQue = parseInt( sessionStorage.getItem( 'فیلتر صف فروش: ' + (l18) ).split(',')[0] );        // حجم صف فروش اولیه
                              let pastVol = parseInt( sessionStorage.getItem( 'فیلتر صف فروش: ' + (l18) ).split(',')[1] );            // حجم کل معاملات پیشی
                              
                              // دیتای جدید
                              let currentSellQue = (qo1);                                                                                // حجم صف فروش کنونی
                              let currentVol = (tvol);                                                                                // حجم کل معاملات کنونی
                              
                              let newTradeVol = currentVol - pastVol;                                                                 // حجم معاملات در لحظه
                              let sellQuePercent = ( 100 * ( pastSellQue - currentSellQue ) / pastSellQue ).toFixed(1);                // درصد کم شدن حجم صف فروش
                                  
                              // اعمال شروط مورد نظر
                              if( currentSellQue < ( 1 - queCof/100 ) * pastSellQue )                 
                              {
                                  // اعداد مورد نیاز برای ساخت خروجی فیلتر
                                  let outPut = [ pastSellQue, sellQuePercent, newTradeVol ];
                                          
                                  if( ( pastSellQue - currentSellQue ) > newTradeVol )                        // کم شدن حجم صف فروش مشکوک
                                  {
                                      // افزودن کلمه مشکوک به آرایه خروجی جهت استفاده بعدی
                                      outPut.push( 'مشکوک' );
                                  
                                      // جهت جلوگیری از ارسال تکراری می بایست حجم صف فروش کنونی با قبلی در حافظه جایگزین شود
                                      sessionStorage.setItem( 'فیلتر صف فروش: ' + (l18), [(qo1),(tvol)] );
                                  }
                                  
                                  else if( ( pastSellQue - currentSellQue ) == newTradeVol )                    // کم شدن واقعی صف فروش
                                  {
                                      // افزودن کلمه واقعی به آرایه خروجی جهت استفاده بعدی
                                      outPut.push( 'واقعی' );
                                      
                                      // جهت جلوگیری از ارسال تکراری می بایست حجم صف فروش کنونی با قبلی در حافظه جایگزین شود
                                      sessionStorage.setItem( 'فیلتر صف فروش: ' + (l18), [(qo1),(tvol)] );
                                  }
                                  
                                  else
                                  {
                                      // جهت جلوگیری از ارسال تکراری می بایست حجم صف فروش کنونی با قبلی در حافظه جایگزین شود
                                      sessionStorage.setItem( 'فیلتر صف فروش: ' + (l18), [(qo1),(tvol)] );
                                  }
                                  
                                  // باز گرداندان خروجی
                                  return outPut;
                              }
                              
                          }
                          
                          
                          // تابع ارسال به ربات تلگرام
                          let tseBotSender = function( txtMessage )
                          {
                              const Http = new XMLHttpRequest();
                              let botToken = '*********************************';             //your bot token here between ""!
                              let ChatID =  ***********;                                     // چت آی دی را اینجا وارد کنید
                              let url = 'https://api.telegram.org/bot' + botToken + '/sendMessage?text=' + txtMessage + '&chat_id=' + ChatID + '&parse_mode=markdown';
                              Http.open( "GET", url );
                              Http.send();
                          }
                          
                          
                          // بدنه اصلی فیلتر
                          true == function()
                          {
                              //مکانیزم وقفه 
                              const second = ( new Date() ).getSeconds();    
                              
                              if( second < delaySecs )                                                
                              {
                                  // ذخیره حجم صف فروش در سشن استورج برای تمامی نمادها بصورت تک به تک
                                  sessionStorage.setItem( 'فیلتر صف فروش: ' + (l18), [(qo1), (tvol)] );
                                  
                          // *****************************************************************************************************************************    
                          // این بخش از کد رو جهت اینکه ببینیم نتایج به تلگرام ارسال میشن اضافه کردم
                          // باید نمادی که صف فروش هست رو اینجا وارد کنید و ببینید توی خروجی فیلتر میاد یا نه
                          // برای مثال من سهم افرا رو که صف فروش بوده گذاشتم و توی خروجی فیلتر ظاهر شد
                          // در واقع به این روش دی باگ کردم کد رو
                          // برای انجام این کار تکه کد بعدی که داخل ایف هست را از حالت کامنت در بیارید
                          /*
                          if( (l18) == 'وحافظ' )
                          {
                              sessionStorage.setItem( 'فیلتر صف فروش: ' + (l18), [(qo1)/( 1 - queCof/100 ) + 10000, (tvol)-200] );
                          
                          
                          }
                          */
                          //*******************************************************************************************************************************
                              }
                              
                              else
                              {
                                  
                                  if( sessionStorage.getItem( 'فیلتر صف فروش: ' + (l18) ) == null )      // اگر فیلتر برای بار اول اجرا شود و در سشن استورج دیتا نباشد ادامه ندهد
                                  {
                                      return false;
                                  }
                                  
                                  else                                                                 // وقتی در سشن استورج دیتا ذخیره شده باشد
                                  {
                                      if( (qd1) == 0 && (qo1) > 0.1 * (bvol) && (pl) == (tmin) )
                                      {
                                      
                                          // فراخوانی تابع محاسبات 
                                          let results = calculateFun();
                                          if( typeof results == 'object' )
                                          {
                                              let resultsStr = numSeperatorFun( [...results] );        // تهیه کپی مستقل از نتایج محاسبات جهت استفاده کاما در نمایش اعداد
                                      
                                              // نمایش خروجی در دیدبان بازار
                                              (cfield0) = 'حجم صف فروش پیشین: ' + resultsStr[0];
                                              
                                              if( results[ results.length - 1 ] == 'مشکوک' )
                                              {
                                                  (cfield1) = 'درصد کم شدن صف فروش: ' + resultsStr[1] + ' (حجم معامله اخیر < کاهش صف فروش) ';
                                              }
                                              
                                              else
                                              {
                                                  (cfield1) = 'درصد کم شدن صف فروش: ' + resultsStr[1] + ' (حجم معامله اخیر = کاهش صف فروش) ';
                                              }
                                          
                                              // ارسال خروجی فیلتر به تلگرام
                                              let telgeramStr = 'نماد: ' + '%23' + '*'+(l18)+'*'
                                                                  + '%0A' + 'آخرین قیمت معامله: ' + numSeperatorFun( (pl)/10 ) + ' تومان'
                                                                                                          +  '%0A' + ' درصد آخرین  معامله: ' + (plp)
                                                                  + '%0A' + (cfield0)
                                                                                                          
                                                                  + '%0A' + 'حجم صف فروش کنونی: ' + numSeperatorFun( (qo1) )
                                                                  + '%0A' + (cfield1)
                                                                  + '%0A' + 'نسبت حجم معاملات لحظه ای به معاملات کل پیش از آن (به درصد): ' 
                                                                          + ( 100 * ( results[2] / ( (tvol) - results[2] ) ) ).toFixed(2)
                                                              
                                              tseBotSender( telgeramStr );
                                              
                                              return true
                                          }
                                      }
                                  }
                              }
                          }()

                          نظر

                          • mokhlas
                            عضو فعال
                            • Mar 2012
                            • 301

                            #358
                            پاسخ : فیلتر نویسی در tsetmc

                            در اصل توسط omdbrz پست شده است View Post
                            Code:
                                                                        /* |--------------------------------------------------------| */
                                                                        /* |                  فیلتر تشخیص جمع شدن صف فروش              | */
                                                                        /* |                  نوشته شده توسط کاوه رجبی                | */
                                                                        /* |--------------------------------------------------------| */
                            // تعریف ثوابت
                            const delaySecs = 10;                                                        // تعداد ثانیه های ابتدایی هر دقیقه که ذخیره دیتا انجام می شود
                            const queCof =20;                                                            // درصد کم شدن صف فروش 
                            
                            
                            // تابع جدا ساز 
                            function numSeperatorFun(x) 
                            {
                                
                                if( typeof x == 'object')                                     // ورودی بصورت آرایه باشد
                                {
                                    for( let i = 0; i < x.length; i++ )
                                    {
                                        if( typeof x[i] == 'number' )
                                            x[i] = x[i].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
                            
                            
                                        else if( typeof x[i] == 'string' )
                                            x[i] = x[i].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
                                    }
                                    return x;
                                }
                            
                            
                                else if( typeof x == 'number' )                                 // ورودی تنها یک متغییر عددی باشد
                                    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
                            
                            
                                else if ( typeof x == 'string' )                            // ورودی فقط یک متغییر رشته ای باشد
                                    return x.replace(/\B(?=(\d{3})+(?!\d))/g, ",");    
                            
                            
                                else
                                    return 'undefined'
                            }
                            
                            
                            // تابعی برای انجام محاسبات
                            function calculateFun()
                            {
                                // دیتای فراخوانی شده از حافظه
                                let pastSellQue = parseInt( sessionStorage.getItem( 'فیلتر صف فروش: ' + (l18) ).split(',')[0] );        // حجم صف فروش اولیه
                                let pastVol = parseInt( sessionStorage.getItem( 'فیلتر صف فروش: ' + (l18) ).split(',')[1] );            // حجم کل معاملات پیشی
                                
                                // دیتای جدید
                                let currentSellQue = (qo1);                                                                                // حجم صف فروش کنونی
                                let currentVol = (tvol);                                                                                // حجم کل معاملات کنونی
                                
                                let newTradeVol = currentVol - pastVol;                                                                 // حجم معاملات در لحظه
                                let sellQuePercent = ( 100 * ( pastSellQue - currentSellQue ) / pastSellQue ).toFixed(1);                // درصد کم شدن حجم صف فروش
                                    
                                // اعمال شروط مورد نظر
                                if( currentSellQue < ( 1 - queCof/100 ) * pastSellQue )                 
                                {
                                    // اعداد مورد نیاز برای ساخت خروجی فیلتر
                                    let outPut = [ pastSellQue, sellQuePercent, newTradeVol ];
                                            
                                    if( ( pastSellQue - currentSellQue ) > newTradeVol )                        // کم شدن حجم صف فروش مشکوک
                                    {
                                        // افزودن کلمه مشکوک به آرایه خروجی جهت استفاده بعدی
                                        outPut.push( 'مشکوک' );
                                    
                                        // جهت جلوگیری از ارسال تکراری می بایست حجم صف فروش کنونی با قبلی در حافظه جایگزین شود
                                        sessionStorage.setItem( 'فیلتر صف فروش: ' + (l18), [(qo1),(tvol)] );
                                    }
                                    
                                    else if( ( pastSellQue - currentSellQue ) == newTradeVol )                    // کم شدن واقعی صف فروش
                                    {
                                        // افزودن کلمه واقعی به آرایه خروجی جهت استفاده بعدی
                                        outPut.push( 'واقعی' );
                                        
                                        // جهت جلوگیری از ارسال تکراری می بایست حجم صف فروش کنونی با قبلی در حافظه جایگزین شود
                                        sessionStorage.setItem( 'فیلتر صف فروش: ' + (l18), [(qo1),(tvol)] );
                                    }
                                    
                                    else
                                    {
                                        // جهت جلوگیری از ارسال تکراری می بایست حجم صف فروش کنونی با قبلی در حافظه جایگزین شود
                                        sessionStorage.setItem( 'فیلتر صف فروش: ' + (l18), [(qo1),(tvol)] );
                                    }
                                    
                                    // باز گرداندان خروجی
                                    return outPut;
                                }
                                
                            }
                            
                            
                            // تابع ارسال به ربات تلگرام
                            let tseBotSender = function( txtMessage )
                            {
                                const Http = new XMLHttpRequest();
                                let botToken = '*********************************';             //your bot token here between ""!
                                let ChatID =  ***********;                                     // چت آی دی را اینجا وارد کنید
                                let url = 'https://api.telegram.org/bot' + botToken + '/sendMessage?text=' + txtMessage + '&chat_id=' + ChatID + '&parse_mode=markdown';
                                Http.open( "GET", url );
                                Http.send();
                            }
                            
                            
                            // بدنه اصلی فیلتر
                            true == function()
                            {
                                //مکانیزم وقفه 
                                const second = ( new Date() ).getSeconds();    
                                
                                if( second < delaySecs )                                                
                                {
                                    // ذخیره حجم صف فروش در سشن استورج برای تمامی نمادها بصورت تک به تک
                                    sessionStorage.setItem( 'فیلتر صف فروش: ' + (l18), [(qo1), (tvol)] );
                                    
                            // *****************************************************************************************************************************    
                            // این بخش از کد رو جهت اینکه ببینیم نتایج به تلگرام ارسال میشن اضافه کردم
                            // باید نمادی که صف فروش هست رو اینجا وارد کنید و ببینید توی خروجی فیلتر میاد یا نه
                            // برای مثال من سهم افرا رو که صف فروش بوده گذاشتم و توی خروجی فیلتر ظاهر شد
                            // در واقع به این روش دی باگ کردم کد رو
                            // برای انجام این کار تکه کد بعدی که داخل ایف هست را از حالت کامنت در بیارید
                            /*
                            if( (l18) == 'وحافظ' )
                            {
                                sessionStorage.setItem( 'فیلتر صف فروش: ' + (l18), [(qo1)/( 1 - queCof/100 ) + 10000, (tvol)-200] );
                            
                            
                            }
                            */
                            //*******************************************************************************************************************************
                                }
                                
                                else
                                {
                                    
                                    if( sessionStorage.getItem( 'فیلتر صف فروش: ' + (l18) ) == null )      // اگر فیلتر برای بار اول اجرا شود و در سشن استورج دیتا نباشد ادامه ندهد
                                    {
                                        return false;
                                    }
                                    
                                    else                                                                 // وقتی در سشن استورج دیتا ذخیره شده باشد
                                    {
                                        if( (qd1) == 0 && (qo1) > 0.1 * (bvol) && (pl) == (tmin) )
                                        {
                                        
                                            // فراخوانی تابع محاسبات 
                                            let results = calculateFun();
                                            if( typeof results == 'object' )
                                            {
                                                let resultsStr = numSeperatorFun( [...results] );        // تهیه کپی مستقل از نتایج محاسبات جهت استفاده کاما در نمایش اعداد
                                        
                                                // نمایش خروجی در دیدبان بازار
                                                (cfield0) = 'حجم صف فروش پیشین: ' + resultsStr[0];
                                                
                                                if( results[ results.length - 1 ] == 'مشکوک' )
                                                {
                                                    (cfield1) = 'درصد کم شدن صف فروش: ' + resultsStr[1] + ' (حجم معامله اخیر < کاهش صف فروش) ';
                                                }
                                                
                                                else
                                                {
                                                    (cfield1) = 'درصد کم شدن صف فروش: ' + resultsStr[1] + ' (حجم معامله اخیر = کاهش صف فروش) ';
                                                }
                                            
                                                // ارسال خروجی فیلتر به تلگرام
                                                let telgeramStr = 'نماد: ' + '%23' + '*'+(l18)+'*'
                                                                    + '%0A' + 'آخرین قیمت معامله: ' + numSeperatorFun( (pl)/10 ) + ' تومان'
                                                                                                            +  '%0A' + ' درصد آخرین  معامله: ' + (plp)
                                                                    + '%0A' + (cfield0)
                                                                                                            
                                                                    + '%0A' + 'حجم صف فروش کنونی: ' + numSeperatorFun( (qo1) )
                                                                    + '%0A' + (cfield1)
                                                                    + '%0A' + 'نسبت حجم معاملات لحظه ای به معاملات کل پیش از آن (به درصد): ' 
                                                                            + ( 100 * ( results[2] / ( (tvol) - results[2] ) ) ).toFixed(2)
                                                                
                                                tseBotSender( telgeramStr );
                                                
                                                return true
                                            }
                                        }
                                    }
                                }
                            }()
                            باسلام وعرض ادب
                            براي استفاده از فيلتر فوق كدوم قسمتش را بايد تو ديده بان گذاشت؟
                            باتشكر از زحمات مخصوصا راهنمايي تابلوخواني
                            هيچ ثروتي چون عقل، و هيچ فقري چون ناداني نيست. هيچ ارثي چون ادب، و هيچ پشتيباني چون مشورت نيست. حضرت علی(ع)

                            نظر

                            • omdbrz
                              ستاره دار (1)
                              • Oct 2020
                              • 37

                              #359
                              پاسخ : فیلتر نویسی در tsetmc

                              در اصل توسط mokhlas پست شده است View Post
                              باسلام وعرض ادب
                              براي استفاده از فيلتر فوق كدوم قسمتش را بايد تو ديده بان گذاشت؟
                              باتشكر از زحمات مخصوصا راهنمايي تابلوخواني
                              کل فیلتر رو کپی کنید بدون دستکاری/ تنها توکن و آیدی چت ربات تلگرامی رو به فیلتر اضافه کنید//طریقه بدست آوردن ایدی چت و توکن ربات رو از جناب گوگل بپرسید

                              نظر

                              • mokhlas
                                عضو فعال
                                • Mar 2012
                                • 301

                                #360
                                پاسخ : فیلتر نویسی در tsetmc

                                باسلام وعرض ادب احترام مجدد
                                مي خواستم بپرسم قسمتي وجود داره كه سرانه هاي خريد لحظه اي روي نمودارگروه يا چند نماد را همزمان باهم ببينيم.؟
                                مثلا چند نماد را يا سهم هاي يك گروه را بشود با هم مقايسه كرد.يعني در اصل ميخواستم ببينيم خريد لحظه اي هر حقيقي با يك نگاه در كدوم سهم بيشتر هست
                                توي سايت تابلو خواني همچين قسمتي ظاهرا نيست.براي يك نماد وجود داره

                                باتشكر
                                هيچ ثروتي چون عقل، و هيچ فقري چون ناداني نيست. هيچ ارثي چون ادب، و هيچ پشتيباني چون مشورت نيست. حضرت علی(ع)

                                نظر

                                در حال کار...
                                X