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

Collapse
X
 
  • زمان
  • نمایش
Clear All
new posts
  • omdbrz
    ستاره دار (1)
    • Oct 2020
    • 37

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

    [QUOTE=sooroosh1315;828830]سلام


    Code:
    // بسم‌الله‌الرحمن‌الرحیم
    // 
    // __________________________________________________________
    //آموزش ساخت سیفیلد جهت استفاده از فرمول
    //1- قالب نمایش را انتخاب کنید
    //2- روی ساخت قالب کلیک کنید
    //3-تعداد ستون ها جلوش ی کادر داره بنویسید 21 (اگر 21 ستون را می خواهید!)
    //4-اون ستون هایی که نوشته حجم و پایانی و.... که هیچ پایین ترش جای خالی هست 3 تا نام مناسب انتخاب کنید
    //(مثلا ستون اول ستون دوم ستون سوم)
    //5-جلویش یک باکس کشویی هست ، بازش کنید (برای ستون اول cfield0 برای ستون دوم cfield1 برای ستون سوم cfield2)
    //6-ذخیره قالب شخصی را انتخاب کنید
    //7-قالب نمایش را مجددا کلیک نماید
    //8- شخصی را کلیک نمایید
    //9- تبریک می گم صاحب 3 تا سیفیلد شدین
    //___________________________________________________________
    //___________________________________________________________
    
    
    
    
    var chand_rooze=59
    var reng0=100
    
    
    
    
    
    
    
    
    
    
    //__________________________________________________________________________________________________________________________________________________________________
    var i
    var min=9999999999999
    var max=-1
    
    
    
    
    for(i=0;i<chand_rooze;i++){
    if(typeof [ih][i]!="undefined" && typeof [ih][i+1]!="undefined" ){
    if([ih][i].PriceMin!=0 && [ih][i].PriceMin<min) min= [ih][i].PriceMin
    if([ih][i].PriceMax!=0 && [ih][i].PriceMax>max) max= [ih][i].PriceMax
    }
    }
    
    
    reng=-999999
    if(min!=9999999999999 && max!=-1){
        reng=Math.round(((max-min)/min)*100)
    }
    (cfield0)=reng
    reng>0 && reng<=reng0
    [/QUOTE

    سلام استاد لطف می کنید منطق این فیلتر رو توضیح بدید/ممنون میشم

    نظر

    • sooroosh1315
      ستاره‌دار (۲)
      • Oct 2019
      • 5358

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

      [QUOTE=omdbrz;865693]
      در اصل توسط sooroosh1315 پست شده است View Post
      سلام


      Code:
      // بسم‌الله‌الرحمن‌الرحیم
      // 
      // __________________________________________________________
      //آموزش ساخت سیفیلد جهت استفاده از فرمول
      //1- قالب نمایش را انتخاب کنید
      //2- روی ساخت قالب کلیک کنید
      //3-تعداد ستون ها جلوش ی کادر داره بنویسید 21 (اگر 21 ستون را می خواهید!)
      //4-اون ستون هایی که نوشته حجم و پایانی و.... که هیچ پایین ترش جای خالی هست 3 تا نام مناسب انتخاب کنید
      //(مثلا ستون اول ستون دوم ستون سوم)
      //5-جلویش یک باکس کشویی هست ، بازش کنید (برای ستون اول cfield0 برای ستون دوم cfield1 برای ستون سوم cfield2)
      //6-ذخیره قالب شخصی را انتخاب کنید
      //7-قالب نمایش را مجددا کلیک نماید
      //8- شخصی را کلیک نمایید
      //9- تبریک می گم صاحب 3 تا سیفیلد شدین
      //___________________________________________________________
      //___________________________________________________________
      
      
      
      
      var chand_rooze=59
      var reng0=100
      
      
      
      
      
      
      
      
      
      
      //__________________________________________________________________________________________________________________________________________________________________
      var i
      var min=9999999999999
      var max=-1
      
      
      
      
      for(i=0;i<chand_rooze;i++){
      if(typeof [ih][i]!="undefined" && typeof [ih][i+1]!="undefined" ){
      if([ih][i].PriceMin!=0 && [ih][i].PriceMin<min) min= [ih][i].PriceMin
      if([ih][i].PriceMax!=0 && [ih][i].PriceMax>max) max= [ih][i].PriceMax
      }
      }
      
      
      reng=-999999
      if(min!=9999999999999 && max!=-1){
          reng=Math.round(((max-min)/min)*100)
      }
      (cfield0)=reng
      reng>0 && reng<=reng0
      [/QUOTE

      سلام استاد لطف می کنید منطق این فیلتر رو توضیح بدید/ممنون میشم
      سلام و عرض ادب

      فیلتر نویسی خیلی ساده اس ، کافیه بدونیم کدوم مشخصات سهم را داریم (دیتاهای خامی که در اختیارمون میذاره سایت + بدونیم این دیتاها را چطور می خوایم با هم ترکیب کنیم ( مثلا بدونیم تعریف (یا فرمول ) rsi چی هست ، بعد اون فرمول را کد نویسی کنیم (کد ها همه شبیه هم هستن ))
      http://forums.boursy.com/showthread....l=1#post831940


      Code:
      //
      بعد از این 2 تا خط می تونیم برای خودمان یادداشت در فایل بنویسیم

      Code:
      var chand_rooze=59
      var reng0=100
      
      
      //چنتا متغییر تعریف  می کنیم 
      
      
      
      
      
      
      
      //__________________________________________________________________________________________________________________________________________________________________
      var i
      var min=9999999999999
      var max=-1
      
      
      
      
      for(i=0;i<chand_rooze;i++){
      // ساخت حلقه برای ساده سازی کار 
      // این حلقه می گوید در ابتدا  به جای آی بگذار 0  و مراحل زیر را انجام بده  
      // مراحل زیر یعنی مراحلی که  داخلی آکولادش هست 
      // مراحل را که انجام دادی ،اگر آی کوچکتر از چند روزه بود ، آی را به علاوه یک کن 
      // i++
      // یکبار می گذارد 0 مراحل  زیر را انجام می دهد بعد می گذارد 1 دوباره از اول  بعد می شود 3
      // تا جایی که آی  دیگر کوچکتر از چند روزه نیست
      
      
      
      if(typeof [ih][i]!="undefined" && typeof [ih][i+1]!="undefined" ){
      
      //با ایف هم که دستور شرطی می نویسیم 
      // وقتی می خواهیم از اطلاعات مورد به روزهای گذشته استفاده کنیم  این خط را می نویسیم 
      //typeof [ih][i]!="undefined"
      // دیتاها گاهی اوقات خراب می شوند بخاطر مشکلات اینترنت یا .... این دستور می گوید که دیتاها مخالف حالت  خراب باشند 
      // !=
      // یعنی مخالف
      // ==
      //یعنی برابر
      
      
      
      
      
      if([ih][i].PriceMin!=0 && [ih][i].PriceMin<min) min= [ih][i].PriceMin
      // [ih][i].PriceMin
      // کف قیمت در روز آی
      // &&
      // به معنای "و"   یعنی هم شرط اول اتفاق بیوفته هم شرط دوم اتفاق بیوفته
      //  ||
      // به معنای "یا" یعنی اگر یکی از شرط ها هم اتفاق افتاد درست در نظر بگیر
      // در ابتدا می گویم قیمت مخالف صفر باشد ، قیمت که هیچوقت صفر نمی شود در بورس می شود ؟
      // وقتی دیتاها می شوند ممکن است صفر شوند برای همین با این دستور از ورود دیتاهایی که خراب هستن جلوگیری می کنیم
      // قبلتر یک متغییر خودمان ساختیم به اسم مین ، و به ان بزرگترین عددی را که بلد بودیم 99999999999 دادیم 
      //حالا می گویم اگر کمترین قیمت روز آی کمتر از مین بود ان را بگذار در مین
      // همین
      //شرط دستور ایف را در پرانتز می گذاریم ، و عملی که صورت اتفاق افتادن شرط ها باید انجام دهد  بیرون از پرانتز
      
      
      
      
      if([ih][i].PriceMax!=0 && [ih][i].PriceMax>max) max= [ih][i].PriceMax
      // این هم همانند بالا فقط اینبار ماکس است  و به متغییر ماکس که خودمان ساخته بودیم هم عدد منفی یک داده بودیم 
      // منفی یک  راحت ترین عدد صحیحی ست که از اعداد طبیعی کوچکتر است
      }
      }
      
      
      reng=-999999
      // دوباره یک عدد منفی کوچک در نظر گرفتیم که اعداد نتیجه حتما ازش بزرگتر باشند (چون می خوایم حتما تغییر کند)
      
      
      if(min!=9999999999999 && max!=-1){
      // می گویم که ماکس مین حتما با ان چیز که در ابتدا تعریف کرده بودیم برابر نباشد (مخالف باشد)
      // البته این مدل برنامه نویسی از ضعف (برنامه نویس نبودن ) من است برنامه نویسان زیباتر و ساده تر و بهتر می نویسند
      // البته کار راه بیانداز است در زمان حال 
      
          reng=Math.round(((max-min)/min)*100)
      // اگر شرط ایف بالا برقرار بود متغییر رنج که قرار است خروجی و حاصل و نتیجه کار باشد را قرار بده 
      //Math.round(
      // هر عددی داخلش باشد رند میشه و دیگه اعشار را نشان نمی دهد 
      // ((max-min)/min)*100
      // فرمول محاسبه درصد هست ، البه به شکل زیر زیباتر هست
      //((max-min)*100/min)
      
      
      
      
      
      
      
      }
      (cfield0)=reng
      //سیفیلد هم که اصل کار هست
      // سه تا سیفید کلا داریم 0-1-2
      // خروجی ها را باید به سیفید ها نسبت بدهیم تا قابل رویت باشند 
      // خروجی را در سیفیلد صفر جا می دهیم تا مقدارش را مشاهده کنیم
      
      
      reng>0 && reng<=reng0
      // در انتها هم برای اینکه تعداد نماد های کمتری را مشاهده کنیم می توانیم شرط بنویسیم
      // این شرط ها همیشه باید در اخر فیلتر وارد شوند
      // گفتیم فقط نمادهایی را به من نمایش بده که متغییر رنج بزرگتر از صفر باشد
      // و
      // رنج کوچکتر از رنج0 باشد یعنی کوچکتر از 100 باشد در واقع
      // 
      
      //منطق کار هم این بوده که کمترین قیمت 60 روز معاملاتی گذشته پیدا شود
      //بیشترین قیمت 60 روز معاملاتی گذشته پیدا شود
      // درصد فاصله بیشترین قیمت به کمترین قیمت محاسبه شود و در خروجی نمایش داده شود
      // پ.ن:هر فیلتری مناسب زمان خود است مثلا ان زمان در 60 روز حداکثر اختلاف میان سقف تا کف ایجاد شده بود
      // هم اکنون فکر می کنم بیشتر از 60 روز از سقف قیمت ها گذشته است
      از دی که گذشت هیچ ازو یاد مَکن،فردا که نیامده ست فریاد مَکن،بر نامده و گذشته بنیاد مکن،حالی خوش باش و عمر بر باد مَکن،

      نظر

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

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

        [QUOTE=sooroosh1315;865703]
        در اصل توسط omdbrz پست شده است View Post

        سلام و عرض ادب

        فیلتر نویسی خیلی ساده اس ، کافیه بدونیم کدوم مشخصات سهم را داریم (دیتاهای خامی که در اختیارمون میذاره سایت + بدونیم این دیتاها را چطور می خوایم با هم ترکیب کنیم ( مثلا بدونیم تعریف (یا فرمول ) rsi چی هست ، بعد اون فرمول را کد نویسی کنیم (کد ها همه شبیه هم هستن ))
        http://forums.boursy.com/showthread....l=1#post831940


        Code:
        //
        بعد از این 2 تا خط می تونیم برای خودمان یادداشت در فایل بنویسیم

        Code:
        var chand_rooze=59
        var reng0=100
        
        
        //چنتا متغییر تعریف  می کنیم 
        
        
        
        
        
        
        
        //__________________________________________________________________________________________________________________________________________________________________
        var i
        var min=9999999999999
        var max=-1
        
        
        
        
        for(i=0;i<chand_rooze;i++){
        // ساخت حلقه برای ساده سازی کار 
        // این حلقه می گوید در ابتدا  به جای آی بگذار 0  و مراحل زیر را انجام بده  
        // مراحل زیر یعنی مراحلی که  داخلی آکولادش هست 
        // مراحل را که انجام دادی ،اگر آی کوچکتر از چند روزه بود ، آی را به علاوه یک کن 
        // i++
        // یکبار می گذارد 0 مراحل  زیر را انجام می دهد بعد می گذارد 1 دوباره از اول  بعد می شود 3
        // تا جایی که آی  دیگر کوچکتر از چند روزه نیست
        
        
        
        if(typeof [ih][i]!="undefined" && typeof [ih][i+1]!="undefined" ){
        
        //با ایف هم که دستور شرطی می نویسیم 
        // وقتی می خواهیم از اطلاعات مورد به روزهای گذشته استفاده کنیم  این خط را می نویسیم 
        //typeof [ih][i]!="undefined"
        // دیتاها گاهی اوقات خراب می شوند بخاطر مشکلات اینترنت یا .... این دستور می گوید که دیتاها مخالف حالت  خراب باشند 
        // !=
        // یعنی مخالف
        // ==
        //یعنی برابر
        
        
        
        
        
        if([ih][i].PriceMin!=0 && [ih][i].PriceMin<min) min= [ih][i].PriceMin
        // [ih][i].PriceMin
        // کف قیمت در روز آی
        // &&
        // به معنای "و"   یعنی هم شرط اول اتفاق بیوفته هم شرط دوم اتفاق بیوفته
        //  ||
        // به معنای "یا" یعنی اگر یکی از شرط ها هم اتفاق افتاد درست در نظر بگیر
        // در ابتدا می گویم قیمت مخالف صفر باشد ، قیمت که هیچوقت صفر نمی شود در بورس می شود ؟
        // وقتی دیتاها می شوند ممکن است صفر شوند برای همین با این دستور از ورود دیتاهایی که خراب هستن جلوگیری می کنیم
        // قبلتر یک متغییر خودمان ساختیم به اسم مین ، و به ان بزرگترین عددی را که بلد بودیم 99999999999 دادیم 
        //حالا می گویم اگر کمترین قیمت روز آی کمتر از مین بود ان را بگذار در مین
        // همین
        //شرط دستور ایف را در پرانتز می گذاریم ، و عملی که صورت اتفاق افتادن شرط ها باید انجام دهد  بیرون از پرانتز
        
        
        
        
        if([ih][i].PriceMax!=0 && [ih][i].PriceMax>max) max= [ih][i].PriceMax
        // این هم همانند بالا فقط اینبار ماکس است  و به متغییر ماکس که خودمان ساخته بودیم هم عدد منفی یک داده بودیم 
        // منفی یک  راحت ترین عدد صحیحی ست که از اعداد طبیعی کوچکتر است
        }
        }
        
        
        reng=-999999
        // دوباره یک عدد منفی کوچک در نظر گرفتیم که اعداد نتیجه حتما ازش بزرگتر باشند (چون می خوایم حتما تغییر کند)
        
        
        if(min!=9999999999999 && max!=-1){
        // می گویم که ماکس مین حتما با ان چیز که در ابتدا تعریف کرده بودیم برابر نباشد (مخالف باشد)
        // البته این مدل برنامه نویسی از ضعف (برنامه نویس نبودن ) من است برنامه نویسان زیباتر و ساده تر و بهتر می نویسند
        // البته کار راه بیانداز است در زمان حال 
        
            reng=Math.round(((max-min)/min)*100)
        // اگر شرط ایف بالا برقرار بود متغییر رنج که قرار است خروجی و حاصل و نتیجه کار باشد را قرار بده 
        //Math.round(
        // هر عددی داخلش باشد رند میشه و دیگه اعشار را نشان نمی دهد 
        // ((max-min)/min)*100
        // فرمول محاسبه درصد هست ، البه به شکل زیر زیباتر هست
        //((max-min)*100/min)
        
        
        
        
        
        
        
        }
        (cfield0)=reng
        //سیفیلد هم که اصل کار هست
        // سه تا سیفید کلا داریم 0-1-2
        // خروجی ها را باید به سیفید ها نسبت بدهیم تا قابل رویت باشند 
        // خروجی را در سیفیلد صفر جا می دهیم تا مقدارش را مشاهده کنیم
        
        
        reng>0 && reng<=reng0
        // در انتها هم برای اینکه تعداد نماد های کمتری را مشاهده کنیم می توانیم شرط بنویسیم
        // این شرط ها همیشه باید در اخر فیلتر وارد شوند
        // گفتیم فقط نمادهایی را به من نمایش بده که متغییر رنج بزرگتر از صفر باشد
        // و
        // رنج کوچکتر از رنج0 باشد یعنی کوچکتر از 100 باشد در واقع
        // 
        
        //منطق کار هم این بوده که کمترین قیمت 60 روز معاملاتی گذشته پیدا شود
        //بیشترین قیمت 60 روز معاملاتی گذشته پیدا شود
        // درصد فاصله بیشترین قیمت به کمترین قیمت محاسبه شود و در خروجی نمایش داده شود
        // پ.ن:هر فیلتری مناسب زمان خود است مثلا ان زمان در 60 روز حداکثر اختلاف میان سقف تا کف ایجاد شده بود
        // هم اکنون فکر می کنم بیشتر از 60 روز از سقف قیمت ها گذشته است
        ممنون از توضیحتون زحمت کشیدید // فقط توی درک -1 و 99999999 و-999999 مشکل داشتم// مشکلی با کد نویسی ندارم//منطق ریاضی این اعداد رو متوجه نشده بودم که لطف کردید

        فیلتر های جامع وبدرد بخوری توسط گروه کد نویسی ما نوشته شده انشاله اینجا در اختیار دوستان قرار خواهم داد به مرور زمان
        /باز هم تشکر

        نظر

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

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

          //استراتژی قدرتمند مکدی آر اس آی نسبت و قدرت//
          true==function()


          {
          //SMA
          //SMA
          var CalculateSMA =function(period){

          var len = period;
          var sum = 0;
          for (var j = 10;j < len+10 ;j++) {
          sum= [ih][j].PDrCotVal + sum;

          }
          var average = sum / period;
          return average ;
          }

          //pre9MA
          //pre9MA

          var pre9CalculateEMA =function(period){

          var pre9EMA =( ([ih][9].PDrCotVal - CalculateSMA (period))*(2 / (period + 1))) + CalculateSMA (period);

          return pre9EMA ;
          }
          //preEMA
          //preEMA

          var pre8CalculateEMA =function(period){

          var pre8EMA =( ([ih][1].PDrCotVal - pre9CalculateEMA (period))*(2 / (period + 1))) + pre9CalculateEMA (period);

          return pre8EMA ;
          }
          //preEMA
          //preEMA

          var pre7CalculateEMA =function(period){

          var pre7EMA =( ([ih][1].PDrCotVal - pre8CalculateEMA (period))*(2 / (period + 1))) + pre8CalculateEMA (period);

          return pre7EMA ;
          }
          //preEMA
          //preEMA

          var pre6CalculateEMA =function(period){

          var pre6EMA =( ([ih][1].PDrCotVal - pre7CalculateEMA (period))*(2 / (period + 1))) + pre7CalculateEMA (period);

          return pre6EMA ;
          }
          //preEMA
          //preEMA

          var pre5CalculateEMA =function(period){

          var pre5EMA =( ([ih][1].PDrCotVal - pre6CalculateEMA (period))*(2 / (period + 1))) + pre6CalculateEMA (period);

          return pre5EMA ;
          }
          //preEMA
          //preEMA

          var pre4CalculateEMA =function(period){

          var pre4EMA =( ([ih][1].PDrCotVal - pre5CalculateEMA (period))*(2 / (period + 1))) + pre5CalculateEMA (period);

          return pre4EMA ;
          }
          //preEMA
          //preEMA

          var pre3CalculateEMA =function(period){

          var pre3EMA =( ([ih][1].PDrCotVal - pre4CalculateEMA (period))*(2 / (period + 1))) + pre4CalculateEMA (period);

          return pre3EMA ;
          }
          //preEMA
          //preEMA

          var pre2CalculateEMA =function(period){

          var pre2EMA =( ([ih][1].PDrCotVal - pre3CalculateEMA (period))*(2 / (period + 1))) + pre3CalculateEMA (period);

          return pre2EMA ;
          }
          //preEMA
          //preEMA

          var pre1CalculateEMA =function(period){

          var pre1EMA =( ([ih][1].PDrCotVal - pre2CalculateEMA (period))*(2 / (period + 1))) + pre2CalculateEMA (period);

          return pre1EMA ;
          }




          //EMA
          //EMA

          var CalculateEMA =function(period){

          var EMA =( ([ih][0].PDrCotVal - pre1CalculateEMA (period))*(2 / (period + 1))) + pre1CalculateEMA (period);

          return EMA ;
          }


          var Macd=0


          Macd= CalculateEMA (12) - CalculateEMA (26);

          (cfield0) =CalculateEMA (12) - CalculateEMA (26)

          ////////////////////////////////RSI
          var CalculateRSI =function(period){

          var len=20;

          for (var i = 0; i < len ; i++) {
          var rec=[ih][len-1-i];

          var change=rec.PClosing-rec.PriceYesterday;

          if (change> 0) {
          rec.gain=change;
          rec.loss=0;
          }
          else
          {
          rec.gain=0;
          rec.loss=-change;
          }
          }

          // Calculate first "average gain" and "average loss"
          var gainSum=0;
          var lossSum=0;

          for (var i = 0; i < period; i++) {
          var rec=[ih][len-1-i];
          gainSum += rec.gain;
          lossSum += rec.loss;
          }

          var averageGain=gainSum /period;
          var averageLoss=lossSum / period;

          // Calculate subsequent "average gain" and "average loss" values
          for (var i = period + 1; i < len; i++) {
          var rec=[ih][len-1-i];

          averageGain=(averageGain* (period - 1) + rec.gain) / period;
          averageLoss=(averageLoss* (period - 1) + rec. loss)/ period;

          rec.averageGain=averageGain;
          rec.averageLoss=averageLoss;
          }

          // Calculate RSI
          var RS = 0; // Relative strength
          var RSIndex = 0; // Relative strength index

          for (var i = period + 1; i < len; i++) {
          var rec=[ih][len-1-i];

          RS = rec.averageGain/ rec.averageLoss;
          RSIndex = 100 - 100 / (1 + RS);
          rec.rsi=RSIndex;
          }
          };

          if(typeof [ih][0].rsi=="undefined")
          CalculateRSI(14);

          (cfield1)= [ih][0].rsi;
          var Rsi=0;
          Rsi= [ih][0].rsi;
          ////////////////////////////VOL


          (cfield2) =((ct).Buy_I_Volume / (ct).Buy_CountI)/((ct).Sell_I_Volume / (ct).Sell_CountI);
          var O=0;
          O =((ct).Buy_I_Volume / (ct).Buy_CountI)/((ct).Sell_I_Volume / (ct).Sell_CountI);
          var a=0;
          a=Math.round((((pc)*(ct).Buy_I_Volume)/(ct).Buy_CountI)/10000000)


          if(Macd>0&&Rsi>60&&O>3&&a>20){

          return true;
          }


          }()

          نظر

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

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

            //-------------------------------- رضا فولادپنجه | فیلتر رایگان می باشد
            //-------------------------------- fuladpanjeh.ir | Takbaran.Com@Gmail.Com
            //-------------------------------- T.me/RF_Analysis | T.me/RF_Filter | T.me/Fuladpanjeh






            true == function()
            {


            var sum=0;
            var avg=0;
            var kharid = Math.round ( ((ct).Buy_I_Volume * (pc) * 10) / 1000000000 ) / 10;
            var forosh = Math.round ( ((ct).Sell_I_Volume * (pc) * 10) / 1000000000 ) / 10;
            var ghodrat = Math.round((((ct).Buy_I_Volume/(ct).Buy_CountI)/((ct).Sell_I_Volume/(ct).Sell_CountI)) * 100 ) / 100;
            var pol = Math.round ( (kharid - forosh) * 10)/100;
            for (var i=0;i<22;i++)
            {
            sum=sum+ [ih][i].QTotTran5J
            }
            avg= Math.round(((sum/20)) * 100 ) / 100;
            nes= Math.round((((tvol)/avg)) * 100 ) / 100;
            saat=Math.round ((plp)*100-(pcp)*100)/100


            hug=Math.round( (ct).Sell_N_Volume/(tvol)*100);
            hag=Math.round( (ct).Buy_I_Volume/(tvol)*100);
            var kharidar = Math.round(((((ct).Buy_I_Volume/(ct).Buy_CountI) * (pc)) / 10000000)*10)/10;
            var foroshande = Math.round(((((ct).Sell_I_Volume/(ct).Sell_CountI) * (pc))/ 10000000)*10)/10;
            var darsadk=Math.round ((ct).Buy_N_Volume / (tvol)*100)
            var darsadf=Math.round ((ct).Sell_N_Volume / (tvol)*100)
            var nesbathug=darsadk - darsadf;


            (cfield0)=ghodrat
            (cfield2)=pol
            //-------------------------------- محاسبه میانگین متحرک 20 روزه
            var MAv20=function(){
            var ma20 = ([ih][0].PClosing) ;
            var D20=20 ;
            var o ;
            for(o=1;o<=D20;o++)
            ma20=( [ih][o].PClosing ) +ma20 ;
            if(o=D20)
            {
            ma20 = ma20/21 ;
            }
            return ma20 ;
            };


            {
            marab='-'
            }
            {
            boxkh='-'
            }
            {
            hushmand=' '
            }


            {
            ichim='-'
            }






            //-------------------------------- محاسبه ستون های اضافی
            true==function()
            {
            if((pmin)<(pl)&&(pl)==(pf)&&(pl)/(pf)<1.005&&(pf)>(pc)&&(pl)>(pc))
            {
            marab='سنجاقک'
            }




            if ((pl)>(pf) && ((pl)-(pf))/((tmax)-(tmin))>0.7 && ((pmax)-(pmin))/((tmax)-(tmin))>0.6)
            {
            marab='مارابوزو'
            }


            if ((((pmax)-(pmin))>3*((pf)-(pl)))&&(((pmax)-(pl))/(0.001+(pmax)-(pmin))>0.6)&& (((pmax)-(pf))/(0.001+(pmax)-(pmin))>0.6))
            {
            marab='چکش م'
            }


            if ((pl) > (pc) && (pmax) > (pmin) && (pl) > (py) && (pmax) > (py) && (pf) >= (py) && (pl) > (pmin) && (pl) > (pf) && (pl)/(pf)<1.015 && (pl)/(pf)> 1.005 && (pmax) == (pl) && (tno) > 1)
            {
            marab='چکش'
            }


            {
            var t= 0;
            var s = t + 1;
            var f = s + 1;
            var TO = [ih][t].PriceFirst;
            var TC= [ih][t].PDrCotVal;
            var SO = [ih][s].PriceFirst;
            var SC = [ih][s].PDrCotVal;
            var FO = [ih][f].PriceFirst;
            var FC = [ih][f].PDrCotVal;
            var FH = (Math.abs(FC - FO) / FO ) * 100;
            var SH = (Math.abs(SO - SC) / SO ) * 100;
            var TH = (Math.abs(TO - TC) / TO ) * 100;
            if (FO> FC && FH > 3)
            {
            if (FC > Math.max(SO,SC) && SH <1)
            {
            if (TC> TO && TH > 1 && TO > Math.max(SO,SC))
            {
            marab='ستاره'
            }
            }
            }
            }


            if ((pl) > (pf) && (pmax)>(pl) && (pmin)<(pl) && (py) > (pc) && (pl)/(pf)<1.004 && (py) > (pf))
            {
            marab='صلیب'
            }


            if ([ih][1].PDrCotVal<[ih][1].PriceFirst&&[ih][0].PriceFirst<[ih][1].PDrCotVal&&([ih][1].PDrCotVal/[ih][1].PriceFirst)<=0.99&&
            ([ih][0].PDrCotVal/[ih][0].PriceFirst)>=1.02&&[ih][0].PriceMax>[ih][1].PriceFirst&&[ih][0].PDrCotVal>[ih][1].PriceFirst&&
            [ih][0].PriceMin<[ih][1].PriceMin)
            {
            marab='انگلفینگ'
            }


            if ((qd1)*(pd1)+(qd2)*(pd2)+(qd3)*(pd3)>=2*((qo1)*(po 1)+(qo2)*(po2)+(qo3)*(po3)) && (pl)>=(py) && (pl)!=(tmax) && (tno)>30 && (ct).Buy_CountI >= ((ct).Sell_CountI))
            {
            boxkh='▇'
            }


            if ((tvol)>1.5*(([ih][0].QTotTran5J+[ih][1].QTotTran5J+[ih][2].QTotTran5J+[ih][3].QTotTran5J+[ih][4].QTotTran5J+[ih][5].QTotTran5J+[ih][6].QTotTran5J+[ih][7].QTotTran5J+[ih][8].QTotTran5J+[ih][9].QTotTran5J+[ih][10].QTotTran5J+[ih][11].QTotTran5J+[ih][12].QTotTran5J+[ih][13].QTotTran5J+[ih][14].QTotTran5J+[ih][15].QTotTran5J+[ih][16].QTotTran5J+[ih][17].QTotTran5J+[ih][18].QTotTran5J+[ih][19].QTotTran5J+[ih][20].QTotTran5J+[ih][21].QTotTran5J+[ih][22].QTotTran5J+[ih][23].QTotTran5J+[ih][24].QTotTran5J+[ih][25].QTotTran5J+[ih][26].QTotTran5J+[ih][27].QTotTran5J+[ih][28].QTotTran5J+[ih][29].QTotTran5J)/30)&&((ct).Buy_I_Volume/(ct).Buy_CountI)>=((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)>=(pc)&&(plp)>0&&(ct).Buy_I _Volume>0.5*(tvol)&&(ct).Sell_N_Volume>0.5*(tvol))
            {
            hushmand='✔️'
            }




            if ((tvol)>1.5*(([ih][0].QTotTran5J+[ih][1].QTotTran5J+[ih][2].QTotTran5J+[ih][3].QTotTran5J+[ih][4].QTotTran5J+[ih][5].QTotTran5J+[ih][6].QTotTran5J+[ih][7].QTotTran5J+[ih][8].QTotTran5J+[ih][9].QTotTran5J+[ih][10].QTotTran5J+[ih][11].QTotTran5J+[ih][12].QTotTran5J+[ih][13].QTotTran5J+[ih][14].QTotTran5J+[ih][15].QTotTran5J+[ih][16].QTotTran5J+[ih][17].QTotTran5J+[ih][18].QTotTran5J+[ih][19].QTotTran5J+[ih][20].QTotTran5J+[ih][21].QTotTran5J+[ih][22].QTotTran5J+[ih][23].QTotTran5J+[ih][24].QTotTran5J+[ih][25].QTotTran5J+[ih][26].QTotTran5J+[ih][27].QTotTran5J+[ih][28].QTotTran5J+[ih][29].QTotTran5J)/30)&&((ct).Buy_I_Volume/(ct).Buy_CountI)>=((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)>=(pc)&&(plp)>0&&(ct).Buy_I _Volume>0.5*(tvol)&&(ct).Sell_N_Volume>0.5*(tvol) &&(tvol)>1.5*[is6]&&((ct).Buy_I_Volume/(ct).Buy_CountI)>=((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)>=(pc)&&(plp)>0)
            {
            hushmand='✔️✔️'
            }




            if ((tvol)>(([ih][0].QTotTran5J+[ih][1].QTotTran5J+[ih][2].QTotTran5J+[ih][3].QTotTran5J+[ih][4].QTotTran5J+[ih][5].QTotTran5J+[ih][6].QTotTran5J+[ih][7].QTotTran5J+[ih][8].QTotTran5J+[ih][9].QTotTran5J+[ih][10].QTotTran5J+[ih][11].QTotTran5J+[ih][12].QTotTran5J+[ih][13].QTotTran5J+[ih][14].QTotTran5J+[ih][15].QTotTran5J+[ih][16].QTotTran5J+[ih][17].QTotTran5J+[ih][18].QTotTran5J+[ih][19].QTotTran5J+[ih][20].QTotTran5J+[ih][21].QTotTran5J+[ih][22].QTotTran5J+[ih][23].QTotTran5J+[ih][24].QTotTran5J+[ih][25].QTotTran5J+[ih][26].QTotTran5J+[ih][27].QTotTran5J+[ih][28].QTotTran5J+[ih][29].QTotTran5J)/30)&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0)
            {
            hushmand='❌'
            }


            if ((tvol)>1.25*[is5]&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0)
            {
            hushmand='❌'
            }


            if ((tvol)>1.5*[is6]&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0)
            {
            hushmand='❌'
            }


            if ((tvol)>(([ih][0].QTotTran5J+[ih][1].QTotTran5J+[ih][2].QTotTran5J+[ih][3].QTotTran5J+[ih][4].QTotTran5J+[ih][5].QTotTran5J+[ih][6].QTotTran5J+[ih][7].QTotTran5J+[ih][8].QTotTran5J+[ih][9].QTotTran5J+[ih][10].QTotTran5J+[ih][11].QTotTran5J+[ih][12].QTotTran5J+[ih][13].QTotTran5J+[ih][14].QTotTran5J+[ih][15].QTotTran5J+[ih][16].QTotTran5J+[ih][17].QTotTran5J+[ih][18].QTotTran5J+[ih][19].QTotTran5J+[ih][20].QTotTran5J+[ih][21].QTotTran5J+[ih][22].QTotTran5J+[ih][23].QTotTran5J+[ih][24].QTotTran5J+[ih][25].QTotTran5J+[ih][26].QTotTran5J+[ih][27].QTotTran5J+[ih][28].QTotTran5J+[ih][29].QTotTran5J)/30)&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0&&(ct).Buy_N _Volume>0.5*(tvol)&&(ct).Sell_I_Volume>0.5*(tvol))
            {
            hushmand='❌'
            }


            if ((tvol)>1.25*[is5]&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0&&(ct).Buy_N _Volume>0.5*(tvol)&&(ct).Sell_I_Volume>0.5*(tvol))
            {
            hushmand='❌'
            }


            if ((tvol)>1.5*[is6]&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0&&(ct).Buy_N _Volume>0.5*(tvol)&&(ct).Sell_I_Volume>0.5*(tvol))
            {
            hushmand='❌'
            }


            if ((tvol)>(([ih][0].QTotTran5J+[ih][1].QTotTran5J+[ih][2].QTotTran5J+[ih][3].QTotTran5J+[ih][4].QTotTran5J+[ih][5].QTotTran5J+[ih][6].QTotTran5J+[ih][7].QTotTran5J+[ih][8].QTotTran5J+[ih][9].QTotTran5J+[ih][10].QTotTran5J+[ih][11].QTotTran5J+[ih][12].QTotTran5J+[ih][13].QTotTran5J+[ih][14].QTotTran5J+[ih][15].QTotTran5J+[ih][16].QTotTran5J+[ih][17].QTotTran5J+[ih][18].QTotTran5J+[ih][19].QTotTran5J+[ih][20].QTotTran5J+[ih][21].QTotTran5J+[ih][22].QTotTran5J+[ih][23].QTotTran5J+[ih][24].QTotTran5J+[ih][25].QTotTran5J+[ih][26].QTotTran5J+[ih][27].QTotTran5J+[ih][28].QTotTran5J+[ih][29].QTotTran5J)/30)&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0 && (tvol)>1.25*[is5]&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0 && (tvol)>1.5*[is6]&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0 && (tvol)>(([ih][0].QTotTran5J+[ih][1].QTotTran5J+[ih][2].QTotTran5J+[ih][3].QTotTran5J+[ih][4].QTotTran5J+[ih][5].QTotTran5J+[ih][6].QTotTran5J+[ih][7].QTotTran5J+[ih][8].QTotTran5J+[ih][9].QTotTran5J+[ih][10].QTotTran5J+[ih][11].QTotTran5J+[ih][12].QTotTran5J+[ih][13].QTotTran5J+[ih][14].QTotTran5J+[ih][15].QTotTran5J+[ih][16].QTotTran5J+[ih][17].QTotTran5J+[ih][18].QTotTran5J+[ih][19].QTotTran5J+[ih][20].QTotTran5J+[ih][21].QTotTran5J+[ih][22].QTotTran5J+[ih][23].QTotTran5J+[ih][24].QTotTran5J+[ih][25].QTotTran5J+[ih][26].QTotTran5J+[ih][27].QTotTran5J+[ih][28].QTotTran5J+[ih][29].QTotTran5J)/30)&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0&&(ct).Buy_N _Volume>0.5*(tvol)&&(ct).Sell_I_Volume>0.5*(tvol) && (tvol)>1.25*[is5]&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0&&(ct).Buy_N _Volume>0.5*(tvol)&&(ct).Sell_I_Volume>0.5*(tvol) && (tvol)>1.5*[is6]&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0&&(ct).Buy_N _Volume>0.5*(tvol)&&(ct).Sell_I_Volume>0.5*(tvol))
            {
            hushmand='❌❌'
            }




            if ((tvol)>(([ih][0].QTotTran5J+[ih][1].QTotTran5J+[ih][2].QTotTran5J+[ih][3].QTotTran5J+[ih][4].QTotTran5J+[ih][5].QTotTran5J+[ih][6].QTotTran5J+[ih][7].QTotTran5J+[ih][8].QTotTran5J+[ih][9].QTotTran5J+[ih][10].QTotTran5J+[ih][11].QTotTran5J+[ih][12].QTotTran5J+[ih][13].QTotTran5J+[ih][14].QTotTran5J+[ih][15].QTotTran5J+[ih][16].QTotTran5J+[ih][17].QTotTran5J+[ih][18].QTotTran5J+[ih][19].QTotTran5J+[ih][20].QTotTran5J+[ih][21].QTotTran5J+[ih][22].QTotTran5J+[ih][23].QTotTran5J+[ih][24].QTotTran5J+[ih][25].QTotTran5J+[ih][26].QTotTran5J+[ih][27].QTotTran5J+[ih][28].QTotTran5J+[ih][29].QTotTran5J)/30)&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0&&(ct).Buy_N _Volume>0.5*(tvol)&&(ct).Sell_I_Volume>0.5*(tvol) && (tvol)>1.25*[is5]&&((ct).Buy_I_Volume/(ct).Buy_CountI)<((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)<=(pc)&&(plp)<0&&(ct).Buy_N _Volume>0.5*(tvol)&&(ct).Sell_I_Volume>0.5*(tvol))
            {
            hushmand='❌❌'
            }




            if (saat>=2)
            {
            colorsa='green';
            }


            if (saat<=-2)
            {
            colorsa='red';
            }


            if (saat<=1.997 && saat>-2.01)
            {
            colorsa='black';
            }


            if (nesbathug>0)
            {
            neshug='green';
            }


            if (nesbathug<0)
            {
            neshug='red';
            }




            if ((pl)>=(pf))
            {
            candlec='green';
            }


            if ((pl)<(pf))
            {
            candlec='red';
            }




            return true;
            }()


            //---------------------------------------------------------- ایچیموکو


            true==function(){
            var dt=9
            var dk=26
            var dlen=60
            var xb=0
            var yb=0
            var dle=0
            for(xb=0;xb<dlen;xb++)
            {
            if([ih][xb].QTotTran5J>0)
            {
            yb++
            }else{}
            }
            dle=yb
            var prx=[];prx.lenght=dle
            var prn=[];prn.lenght=dle
            var tx
            var tn
            var kx
            var kn
            var tkn=[];tkn.lenght=dle
            var kij=[];kij.lenght=dle
            var i=0;var j=0
            j=dle+1
            for(i=0;i<dlen;i++){
            if([ih][i].QTotTran5J>0)
            {
            j--;
            prx[j]=[ih][i].PriceMax
            prn[j]=[ih][i].PriceMin
            }else{}
            }
            for(i=dt;i<=dle;i++){
            tx=0
            tn=1000000
            for(j=(i-dt+1);j<=i;j++){
            if(prx[j]>tx){tx=prx[j]}else{}
            if(prn[j]<tn){tn=prn[j]}else{}
            }
            tkn[i]=(tx+tn)/2
            }
            for(i=dk;i<=dle;i++){
            kx=0
            kn=10000000
            for(j=(i-dk+1);j<=i;j++){
            if(prx[j]>kx){kx=prx[j]}else{}
            if(prn[j]<kn){kn=prn[j]}else{}
            }
            kij[i]=(kx+kn)/2
            }
            if(tkn[dle]>=kij[dle]&&tkn[dle-1]<kij[dle-1])
            {
            ichim='کراس'


            return true


            }


            }();




            //---------------------------------------------------------- بولینگر باند


            true==function() {
            var period = 20;
            var multi = 2;
            var addToday = true;

            var candle = function(a) {
            return {c: a.PDrCotVal, h: a.PriceMax, l: a.PriceMin, o: a.PriceFirst};
            }

            var getCandles = function() {
            var cs = [];
            for(var i = 0; i < [ih].length; i++)
            ([ih][i].ZTotTran > 0) && cs.push(candle([ih][i]));
            if(addToday && (tno) > 0) {
            var t = {c: (pl), h: (pmax), l: (pmin), o: (pf)};
            if(t.c != cs[0].c || t.h != cs[0].h || t.l != cs[0].l || t.o != cs[0].o)
            cs.unshift(t);
            }
            return (cs.length > 30) ? cs : false;
            }

            var BB = function(a) {
            var dvma, i, j;
            for(i = a.length-period; i >= 0; i--) {
            var sum = 0;
            for(j = 0; j < period; j++)
            sum += a[i+j].c;
            a[i].BBM = sum/period;
            var sumdv = 0;
            for(j = 0; j < period; j++)
            sumdv += Math.pow(a[i+j].c - a[i].BBM, 2);
            dvma = Math.sqrt(sumdv/period);
            a[i].BBH = a[i].BBM + 2*dvma;
            a[i].BBL = a[i].BBM - 2*dvma;
            }
            }
            var c = getCandles();
            if(c) {
            BB(c);
            if(c[0].l <= c[0].BBL)
            {
            bollin= 'کف';
            return true;
            }
            else
            {
            bollin= '-';
            }


            }
            }()


            //---------------------------------------------------------- روند رنج


            true == function()
            {


            min14=Math.min ( (pmin),[ih][0].PriceMin,[ih][1].PriceMin,[ih][2].PriceMin,[ih][3].PriceMin,[ih][4].PriceMin,[ih][5].PriceMin,[ih][6].PriceMin,[ih][7].PriceMin,[ih][8].PriceMin,[ih][9].PriceMin,[ih][10].PriceMin,[ih][11].PriceMin,[ih][12].PriceMin,[ih][13].PriceMin,[ih][14].PriceMin)
            max14=Math.max( (pmax),[ih][0].PriceMax,[ih][1].PriceMax,[ih][2].PriceMax,[ih][3].PriceMax,[ih][4].PriceMax,[ih][5].PriceMax,[ih][6].PriceMax,[ih][7].PriceMax,[ih][8].PriceMax,[ih][9].PriceMax,[ih][10].PriceMax,[ih][11].PriceMax,[ih][12].PriceMax,[ih][13].PriceMax,[ih][14].PriceMax)
            darsad=(((max14-min14)/min14) *100)
            pltomax=Math.round (((max14-(pl))/(pl)) *100)
            maxta=max14-(max14*0.05)
            if ( darsad>22 && (pl)<max14)
            {
            pltomax1='-'
            }


            if ( darsad<22 && (pl)<max14)
            {
            pltomax1=Math.round (((max14-(pl))/(pl)) *100)
            }




            return true;
            }()


            //---------------------------------------------------------- برگشت پذیری


            true == function()
            {
            if((pmin)== (tmin) && (plp)>=-3 && (pcp)>=-2)
            {
            barghac='Bold'
            }


            else
            {
            barghac='normal'
            }
            return true;
            }()




            //---------------------------------------------------------- شروط میانگین متحرک 20 روزه


            //----------------------------------------------------------- زیر میانگین متحرک 20 روزه"


            if( [ih][1].PDrCotVal < MAv20() && [ih][2].PDrCotVal < MAv20())
            {
            zir20='↓▼↓'
            color='red';
            }


            //----------------------------------------------------------- بالای میانگین متحرک 20 روزه"


            if( [ih][1].PDrCotVal >= MAv20() && [ih][2].PDrCotVal >= MAv20())
            {
            zir20='↑▲↑'
            color='green';
            }


            //---------------------------------------------------------- عبور از متحرک 20 روزه
            if( [ih][1].PDrCotVal >= MAv20() && [ih][2].PDrCotVal <= MAv20())
            {
            zir20='↔'
            color='black';
            }
            // Calculate L in 14 days --------------------------------------------------- محاسبه کمترین قیمت 14 روزه
            var L14=function(){
            var l14=[ih][0].PriceMin;
            var i;
            for(i=0;i<=14;i++)
            if(l14>[ih][i].PriceMin&&[ih][i].PriceMin!="undefined"&&[ih][i].PriceMin!=0)
            l14=[ih][i].PriceMin;
            return l14;
            };


            // Calculate H in 14 days ------------------------------------------------- محاسبه بیشترین قیمت 14 روزه
            var H14=function(){
            var h14=[ih][0].PriceMax;
            var j;
            for(j=0;j<=14;j++)
            if(h14<[ih][j].PriceMax&&[ih][j].PriceMax!="undefined"&&[ih][j].PriceMax!=0)
            h14=[ih][j].PriceMax;
            return h14;
            };




            //-------------------------------- محاسبه استوکاستیک


            st20=Math.round((100*((pl)-L14())/(H14()-L14())));


            if (st20<=20)
            {
            colorst='green';
            }




            if (st20>=70)
            {
            colorst='red';
            }


            if (st20>=20.02 && st20<=69.99)
            {
            colorst='black';
            }




            //---------------------------------------------------------- خروجی ستون ها
            {






            var sarane='<span style="border-top: 1px solid #C0C0C0;border-left: 1px solid #000000;width:45px;display:inline-block;background:#FFFFCC;text-align: center;font-weight:'+barghac+';">'+pltomax1+'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;border-left: 1px solid #000000;width:45px;display:inline-block;background:#FFFFFF;text-align: center;">'+bollin+'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;border-left: 1px solid #000000;color:'+neshug+';width:65px;display:inline-block;background:#FFFFCC;text-align: center;">'+nesbathug+" %"+'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;border-left: 1px solid #000000;width:60px;display:inline-block;background:#FFFFFF;text-align: center; font-weight:bold;">'+hushmand+'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;border-left: 1px solid #000000;width:60px;display:inline-block;background:#FFFFCC;text-align: center;">'+boxkh+'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;border-left: 1px solid #000000;color:'+candlec+';width:55px;display:inlin e-block;background:#FFFFFF;text-align: center;">'+marab+'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;border-left: 1px solid #000000;color:'+color+';width:70px;display:inline-block;background:#FFFFCC;text-align: center;">'+zir20+'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;border-left: 1px solid #000000;width:47px;display:inline-block;background:#FFFFFF;text-align: center;">'+ichim+'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;color:'+colorst+';border-left: 1px solid #000000;width:52px;display:inline-block;background:#FFFFCC;text-align: center;">'+st20+'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;color:'+colorsa+';border-left: 1px solid #000000;width:65px;display:inline-block;background:#FFFFFF;text-align: center;">'+saat+'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;border-left: 2px solid #000000;width:77px;display:inline-block;background:#FFCCCC;text-align: center;">'+hug+" %"+'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;border-left: 1px solid #000000;width:77px;display:inline-block;background:#CCFFCC;text-align: center;">'+hag+" %"+'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;border-left: 2px solid #000000;width:70px;display:inline-block;background:#FFFFCC;text-align: center;font-weight:bold;">'+nes+'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;border-left: 2px solid #000000;width:70px;display:inline-block;background:#FFCCCC;text-align: center;">'+foroshande +'</span>';
            sarane+='<span style="border-top: 1px solid #C0C0C0;border-left: 1px solid #000000;width:70px;display:inline-block;background:#CCFFCC;text-align: center;">'+kharidar +'</span>';
            (cfield1)=sarane;
            return true;
            }










            return true;
            }()


            //-------------------------------- ▼▼▼ Copyright ▼▼▼
            //-------------------------------- رضا فولادپنجه | فیلتر رایگان می باشد
            //-------------------------------- fuladpanjeh.ir | Takbaran.Com@Gmail.Com
            //-------------------------------- T.me/RF_Analysis | T.me/RF_Filter | T.me/Fuladpanjeh


            //-------------------------------- برای نمایش صحیح حتماً باید تنظیمات و قالب شخصی اعمال شود
            //-------------------------------- تنظیمات و قالب در کانال شخصی موجود است


            //-------------------------------- ▼▼▼ تنظیمات فیلتر ▼▼▼


            //-------------------------------- قدرت خریدار | (cfield0)>0 &&






            //-------------------------------- ورود و خروج پول | (cfield2)>0 &&






            //-------------------------------- (نسبت حجم (حجم معاملات نسبت به میانگین حجم ماهانه | nes>3 &&






            //-------------------------------- درصد خرید حقیقی | hag>50 &&






            //-------------------------------- درصد فروش حقوقی | hug>50 &&






            //-------------------------------- (آخرین - پایانی (الگوی ساعت و الگوی ساعت معکوس | saat>2 &&






            //-------------------------------- ▲▲▲ تنظیمات فیلتر ▲▲▲


            (tvol)>0

            نظر

            • sooroosh1315
              ستاره‌دار (۲)
              • Oct 2019
              • 5358

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

              سلام و عرض ادب و تشکر مجدد از کد های خوبی که قرار دادین

              لطفا از [CODE.] در نوشته خود استفاده کنید


              Code:
              محل درج کد
              از دی که گذشت هیچ ازو یاد مَکن،فردا که نیامده ست فریاد مَکن،بر نامده و گذشته بنیاد مکن،حالی خوش باش و عمر بر باد مَکن،

              نظر

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

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

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

                لطفا از [CODE.] در نوشته خود استفاده کنید


                Code:
                محل درج کد
                کدوم قسمت هست برای بنده فعال نیست

                نظر

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

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

                  //جمع شدن صف فروش-حجم مشکوک-ورود پول هوشمند قابلیت ارسال به تلگرام//

                  true==function()
                  {


                  //***********************//
                  // telegram_bot function //
                  //***********************//
                  var telegram_bot = function(post)
                  {
                  const Http = new XMLHttpRequest();
                  var Token="تو کن ربات خود را جای این متن بگذارید";
                  var ID= "آیدی خود را جای این متن بگذارید";
                  var url='https://api.telegram.org/bot'+Token+'/sendMessage?text='+post+'&chat_id='+ID;
                  Http.open("GET", url);
                  Http.send();
                  }
                  ///////////////

                  let date = new Date();
                  let nowDay = date.getDay();
                  let nowHours = date.getHours();
                  let nowMinute = date.getMinutes();
                  var ntime=(new Date()).toLocaleString('fa-IR');
                  ///////////////


                  //***************************//
                  // emoji code from w3schools //
                  //***************************//
                  var code = {
                  nemad : "9989",
                  sanjag: "128204",
                  darsad1: "128200",
                  darsad2 : "128201",
                  hajm : "128202",
                  fiborad : "9889",
                  pool : "128181",
                  kharid : "128176",
                  darsad : "128175",


                  }


                  //***************************//
                  // emoji in javascript //
                  //***************************//
                  function emoji(ecode)
                  {
                  return String.fromCodePoint(ecode);
                  }




                  var min_perc =(((pmin) - [ih][0].PClosing) / [ih][0].PClosing)*100;
                  var now_change = (((pl) - (pmin)) / [ih][0].PClosing) * 100;

                  if ((tvol)>(bvol) && (pmin)== (tmin) && ((pl)-(pc))/(pl)*100>1.5 && (ct).Sell_CountI >= (ct).Buy_CountI && (tno)>5 && (tno)>20)
                  if((tvol)> [is5] && (tvol)>2*[is6])
                  if((tvol)>1.5*[is6]&&((ct).Buy_I_Volume/(ct).Buy_CountI)>=((ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)>=
                  (pc)&&(plp)>0
                  )




                  {


                  var CalculateVol = function(period){

                  var len = period;
                  var sum = 0;

                  for(var i = 0; i < len; i++)
                  {
                  sum = sum + [ih][i].QTotTran5J;
                  }
                  var avrage_sum = sum / period;
                  return avrage_sum;
                  }

                  s=localStorage.getItem("names")
                  if (s!=null) {
                  s=s.split(",")
                  } else {
                  s=[]
                  }



                  var volume_trend = Math.round((CalculateVol(3) / CalculateVol(16)) * 100 ) / 100;
                  var buy_power
                  =Math.round((((ct).Buy_I_Volume/(ct).Buy_CountI)/((ct).Sell_I_Volume/(ct).Sell_CountI)) *100)/100 ;

                  (cfield2) =Math.round(min_perc * 100 ) / 100;
                  (cfield0) =Math.round(now_change * 100 )/ 100;


                  var fibolevel=function()
                  {

                  var i ;
                  var min =(pc) ;
                  var max = (pc) ;
                  var day = 60 ;
                  var fibo0;
                  var fibo23;
                  var fibo38;
                  var fibo50;
                  var fibo61;
                  var fibo78;
                  var fibo100;

                  for(i = 0;i<day;i++)
                  {
                  if(typeof [ih][i]!="undefined")
                  {
                  if(min > [ih][i].PriceMin && [ih][i].PriceMin !=0 )
                  min = [ih][i].PriceMin ;

                  }
                  }

                  for(i = 0;i<day;i++)
                  {
                  if(typeof [ih][i]!="undefined")
                  {

                  if(max< [ih][i].PriceMax)
                  max = [ih][i].PriceMax ;
                  }
                  }

                  fibo0 = max;

                  fibo23 = max - (0.238 * (max-min));

                  fibo38 = max - (0.38 * (max-min));

                  fibo50 = max - (0.50 * (max-min));

                  fibo61 = max - (0.618 * (max-min));

                  fibo78 = max - (0.78 * (max-min));

                  fibo100 = min;

                  if ( fibo38 < (pc) && (pc) < fibo23 )
                  {
                  var fibo = "بين سطوح 23 تا 38 درصد";
                  return fibo ;

                  }
                  else if ( fibo50 < (pc) && (pc) < fibo38)
                  {
                  var fibo = "بين سطوح 38 تا 50 درصد";
                  return fibo ;
                  }

                  else if ( fibo61 < (pc) && (pc) < fibo50)
                  {
                  var fibo = "بين سطوح 50 تا 61 درصد";
                  return fibo ;
                  }
                  else if ( fibo78 < (pc) && (pc) < fibo61)
                  {
                  var fibo = "بين سطوح 61 تا 78درصد";
                  return fibo;
                  }

                  else
                  {
                  var fibo = "بين سطوح معتبري نيست";
                  return fibo;

                  }

                  }



                  var TR = function(n)
                  {
                  return Math.max(([ih][n].PriceMax - [ih][n].PriceMin),Math.abs([ih][n].PriceMax -
                  [ih][n+1].PDrCotVal),Math.abs([ih][n].PriceMin - [ih][n+1].PDrCotVal))

                  }



                  var ATR = function(n,d)
                  {
                  var sum = 0;
                  if(typeof [ih][n]!="undefined"){
                  for(var i = 0 + d; i < n + d; i ++)
                  {
                  sum = sum + TR(i)
                  }
                  return (sum / n)
                  }
                  }


                  var Row_Pow = function(){

                  if ((zd1) > 0 && (zo1) > 0){
                  var pow_buy = ((zd1)*(qd1) + (zd2)*(qd2) + (zd3)*(qd3))/((qd1) + (qd2) + (qd3));
                  var pow_sell = ((zo1)*(qo1) + (zo2)*(qo2) + (zo3)*(qo3))/((qo1) + (qo2) + (qo3));
                  return pow_buy / pow_sell;
                  }else if ((zd1) == 0 && (zo1) > 0)
                  {
                  return "صف فروش";
                  }else if ((z01) == 0 && (zd1) > 0)
                  {
                  return "صف خريد";
                  }else
                  {
                  return "خالي";
                  }
                  }

                  var CalculateRSI =function(period){

                  var len=20;

                  for (var i = 0; i < len ; i++) {
                  var rec=[ih][len-1-i];

                  var change=rec.PClosing-rec.PriceYesterday;

                  if (change> 0) {
                  rec.gain=change;
                  rec.loss=0;
                  }
                  else
                  {
                  rec.gain=0;
                  rec.loss=-change;
                  }
                  }

                  // Calculate first "average gain" and "average loss"
                  var gainSum=0;
                  var lossSum=0;

                  for (var i = 0; i < period; i++) {
                  var rec=[ih][len-1-i];
                  gainSum += rec.gain;
                  lossSum += rec.loss;
                  }

                  var averageGain=gainSum /period;
                  var averageLoss=lossSum / period;

                  // Calculate subsequent "average gain" and "average loss" values
                  for (var i = period + 1; i < len; i++) {
                  var rec=[ih][len-1-i];

                  averageGain=(averageGain* (period - 1) + rec.gain) / period;

                  averageLoss=(averageLoss* (period - 1)
                  + rec. loss)/ period;

                  rec.averageGain=averageGain;
                  rec.averageLoss=averageLoss;
                  }

                  // Calculate RSI
                  var RS = 0; // Relative strength
                  var RSIndex = 0; // Relative strength index

                  for (var i = period + 1; i < len; i++) {
                  var rec=[ih][len-1-i];

                  RS = rec.averageGain/ rec.averageLoss;
                  RSIndex = 100 - 100 / (1 + RS);
                  rec.rsi=RSIndex;
                  }
                  };

                  if(typeof [ih][0].rsi=="undefined")
                  CalculateRSI(14);

                  var RSI_CUR= Math.round([ih][0].rsi);

                  var pe = (pe);

                  (cfield1) = "P/E =" + (pe) + "****" +" قدرت خريد به فروش = " + buy_power + " **** " + "حجم 3 /16 = " + volume_trend +
                  "****" + " RSI = " + RSI_CUR + "****" + fibolevel() + "****" + " نوسانات = " + Math.round ((ATR(14,0)
                  /ATR(14,1)) * 100 ) / 100 + "****" + " قدرت صف= " + Math.round((Row_Pow() * 100))/100 ;












                  //.................................//
                  var IOMoney = "" ;
                  var a = Math.round( ((ct).Buy_I_Volume-(ct).Sell_I_Volume)*(pl) /10000000 ) ;
                  if ( a > 0 )
                  {
                  if ( a > 1000 )
                  IOMoney = "ورود پول " + Math.round(a/1000) + " ميليارد" ;
                  else
                  IOMoney = "ورود پول " + (a) + " ميليون" ;

                  (cfield2) = (cfield2) + String.fromCodePoint("128154") ;
                  }
                  if (a < 0 )
                  {
                  if ( a < -1000 )
                  IOMoney = "خروج پول " + Math.round(a/(-1000)) + " ميليارد" ;
                  else
                  IOMoney = "خروج پول " + a*(-1) + " ميليون" ;

                  (cfield2) = (cfield2) + String.fromCodePoint("10060") ;
                  }
                  //.................................................. ....///

                  var MAv20=function(){
                  var ma20 = ([ih][0].PClosing) ;
                  var D20=20 ;
                  var o ;
                  for(o=1;o<=D20;o++)
                  ma20=( [ih][o].PClosing ) +ma20 ;
                  if(o=D20)
                  {
                  ma20 = ma20/21 ;
                  }
                  return ma20 ;
                  };

                  {
                  marab='-'
                  }
                  {
                  boxkh='-'
                  }
                  {
                  hushmand=' '
                  }

                  {
                  ichim='-'
                  }


                  /////////////////////////////////

                  //---------------------------------------------------------- شروط میانگین متحرک 20 روزه

                  //----------------------------------------------------------- زیر میانگین متحرک 20 روزه"

                  if( [ih][1].PDrCotVal < MAv20() && [ih][2].PDrCotVal < MAv20())
                  {
                  zir20='زیر م.متحرک ↓▼↓'
                  color='red';
                  }

                  //----------------------------------------------------------- بالای میانگین متحرک 20 روزه"

                  if( [ih][1].PDrCotVal >= MAv20() && [ih][2].PDrCotVal >= MAv20())
                  {
                  zir20='بالای م.متحرک ↑▲↑'
                  color='green';
                  }

                  //---------------------------------------------------------- عبور از متحرک 20 روزه
                  if( [ih][1].PDrCotVal >= MAv20() && [ih][2].PDrCotVal <= MAv20())
                  {
                  zir20='عبور از م.متحرک ↔'
                  color='black';
                  }
                  // Calculate L in 14 days --------------------------------------------------- محاسبه کمترین قیمت 14 روزه
                  var L14=function(){
                  var l14=[ih][0].PriceMin;
                  var i;
                  for(i=0;i<=14;i++)
                  if(l14>[ih][i].PriceMin&&[ih][i].PriceMin!="undefined"&&[ih][i].PriceMin!=0)
                  l14=[ih][i].PriceMin;
                  return l14;
                  };
                  ////////////////////////////////////////



                  // ---------------------------------------------------------------------------- تابع تشخيص پولبک ---------------------------
                  var Pulbek = "";
                  var MAX = function(start,end)
                  {
                  var i = 0;
                  var price = [ih][start].PriceMax;

                  for(i=start+1 ; i <= end ; i++)
                  {
                  if(price < [ih][i].PriceMax)
                  price = [ih][i].PriceMax;
                  }
                  return price;
                  }

                  var max10 = MAX(0,9);
                  var max60 = MAX(10,59);
                  {
                  if(max10>max60 && (pmin)<max10*0.9 && (pmin) >max60)

                  Pulbek = "پولبک زده";


                  else
                  Pulbek = "پولبک نزده";




                  }





                  // --------------------------------------------------------------------------- تابع تشخيص چکش سفيد روزانه ---------------------------
                  var marab = "";
                  if((pmin)<(pl)&&(pl)==(pf)&&(pl)/(pf)<1.005&&(pf)>(pc)&&(pl)>(pc))
                  {
                  marab='سنجاقک'
                  }

                  else if ((pl)>(pf) && ([ih][0].PDrCotVal)<([ih][0].PriceFirst)&&(pl)>[ih][0].PriceFirst && (pf)<[ih][0].PDrCotVal )
                  {
                  marab='پوشا'
                  }
                  else if ((pl)>(pf) && ((pl)-(pf))/((tmax)-(tmin))>0.7 && ((pmax)-(pmin))/((tmax)-(tmin))>0.6)
                  {
                  marab='مارابوزو'
                  }

                  else if ((((pmax)-(pmin))>3*((pf)-(pl)))&&(((pmax)-(pl))/(0.001+(pmax)-(pmin))>0.6)&& (((pmax)-(pf))/(0.001+(pmax)-(pmin))>0.6))
                  {
                  marab='چکش معکوس'
                  }

                  else if ((pl) > (pc) && (pmax) > (pmin) && (pl) > (py) && (pmax) > (py) && (pf) >= (py) && (pl) > (pmin) && (pl) > (pf) && (pl)/(pf)<1.015 && (pl)/(pf)> 1.005 && (pmax) == (pl) && (tno) > 1)
                  {
                  marab='چکش'
                  }



                  else if ((pl) > (pf) && (pmax)>(pl) && (pmin)<(pl) && (py) > (pc) && (pl)/(pf)<1.004 && (py) > (pf))
                  {
                  marab='صلیب'
                  }

                  else if ([ih][0].PDrCotVal<[ih][0].PriceFirst&&[ih][0].PriceFirst<(pl)&&(pf)>(pl)&&(pf)<[ih][0].PDrCotVal)
                  {
                  marab='انگالفینگ صعودی'
                  }

                  else if ([ih][0].PDrCotVal>[ih][0].PriceFirst&&[ih][0].PriceFirst>(pl)&&(pf)<(pl)&&(pf)>[ih][0].PDrCotVal)
                  {
                  marab='انگالفینگ نزولی'
                  }
                  else
                  {
                  marab='معتبر نیست!';
                  }


                  // ----------------------


                  // ----------------------------------------------------------------------------- تشخيص نوسان روزانه ---------------------------
                  var Frequency = "";
                  var F = 100*((pmax)-(pmin))/(pmin);

                  if ( F >= 6 )
                  Frequency = "نوسان " + " %" + Math.round(F) ;


                  // ----------------------------------------------------------------------------- CCI انديکاتور ---------------------------

                  var i,j,tp,smtp,nd,smnd,c,CCI ;
                  var period = 22 ;
                  var stp=0 ;
                  var snd=0 ;

                  for(i=0;i<period;i++)
                  {
                  j = period-1-i ;
                  tp =([ih][j].PriceMax + [ih][j].PClosing + [ih][j].PriceMin) / 3 ;
                  stp = stp + tp ;
                  smtp = stp/(i+1) ;
                  nd = Math.abs(smtp-tp) ;
                  snd = snd + nd ;
                  smnd = snd / (i+1) ;
                  }
                  c = Math.round(((tp-smtp)/smnd)/0.015)

                  if (c>0)
                  {
                  CCI = "? صعودي " + c ;
                  (cfield2) = (cfield2) + String.fromCodePoint("128314") ;
                  }
                  else
                  {
                  CCI = "? نزولي " + c ;
                  (cfield2) = (cfield2) + String.fromCodePoint("128315") ;
                  }



                  //..............................rsi................. ........//



                  true==function()

                  {

                  var sumgain=function()

                  {

                  var gain=0;
                  var n;

                  for(n=0; n < 14; n++)
                  {
                  if ( [ih] [n].PClosing > [ih] [n].PriceYesterday )
                  {
                  gain += ( [ih] [n].PClosing - [ih] [n].PriceYesterday );
                  }
                  }
                  return gain/14;

                  };

                  var sumloss=function()

                  {

                  var loss=0;
                  var n;

                  for(n=0; n < 14; n++)
                  {
                  m=n+11
                  if ( [ih] [n].PClosing < [ih] [n].PriceYesterday )
                  {
                  loss += - ( [ih] [n].PClosing - [ih] [n].PriceYesterday );
                  }
                  }
                  return loss/14;

                  };

                  (cfield0)=sumgain();
                  (cfield1)=sumloss();
                  (cfield2)=Math.round(100-(100/(1+(cfield0)/(cfield1))));

                  return true;

                  }()

                  var VD

                  if ( (cfield2) < 30 && (tvol)>10000 ) {
                  VD="خريد"
                  }
                  else
                  {

                  if ( (cfield2) > 70 && (tvol)>10000 ) {
                  VD="فروش"
                  }
                  else
                  {
                  VD="(احتياط)محدوده خط 30 يا 70"
                  }

                  }

                  (cfield1)=VD




                  //************************************************** *************MACD************************
                  if( macd=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)
                  {
                  macd[dle]
                  macsig[dle]
                  machis[dle]
                  return true
                  }else{
                  return false
                  }
                  }())

                  {
                  MACD="? صعودي"

                  }
                  else{
                  MACD=' ↔ خنثي'

                  }


                  //************************************************** ***************BOLINGER**************************

                  if(true==function()
                  {
                  var CalculateBollingerBands =function(period,factor){


                  var total_average = 0;


                  for (var i = 0; i < [ih].length; i++)
                  {
                  // اطلاعات از تاريخ جديد به قديم در آرايه موجود است پس اولين روز در آرايه 59 موجود است
                  var day=[ih].length-i-1;


                  total_average += [ih][day].PClosing;


                  if (i >= period - 1)
                  {
                  var total_bollinger = 0;
                  var average = total_average / period;


                  for (var x = i; x > (i - period); x--)
                  {
                  var xday=[ih].length-x-1;
                  total_bollinger += Math.pow([ih][xday].PClosing - average, 2);
                  }


                  var stdev = Math.pow(total_bollinger / period,0.5);


                  [ih][day].BollingerAverage= average;
                  [ih][day].BollingerTop= average + factor * stdev;
                  [ih][day].BollingerBottom= average - factor * stdev;


                  total_average -= [ih][60-1 - (i - period + 1)].PClosing;
                  }
                  }
                  };


                  CalculateBollingerBands(20,2);


                  console.log([ih][0].BollingerTop + ' - ' + (pl));


                  if([ih][0].BollingerTop<(pl) || [ih][0].BollingerBottm>(pl))
                  {
                  return true;
                  }
                  else
                  {
                  return false;
                  }
                  }())
                  {
                  BOLINGER='? صعودي'

                  }
                  else{
                  BOLINGER='↔ خنثي'
                  }






                  //............................//

                  //---------------------------------------------------------- ايچيموکو

                  true==function(){
                  var dt=9
                  var dk=26
                  var dlen=60
                  var xb=0
                  var yb=0
                  var dle=0
                  for(xb=0;xb<dlen;xb++)
                  {
                  if([ih][xb].QTotTran5J>0)
                  {
                  yb++
                  }else{}
                  }
                  dle=yb
                  var prx=[];prx.lenght=dle
                  var prn=[];prn.lenght=dle
                  var tx
                  var tn
                  var kx
                  var kn
                  var tkn=[];tkn.lenght=dle
                  var kij=[];kij.lenght=dle
                  var i=0;var j=0
                  j=dle+1
                  for(i=0;i<dlen;i++){
                  if([ih][i].QTotTran5J>0)
                  {
                  j--;
                  prx[j]=[ih][i].PriceMax
                  prn[j]=[ih][i].PriceMin
                  }else{}
                  }
                  for(i=dt;i<=dle;i++){
                  tx=0
                  tn=1000000
                  for(j=(i-dt+1);j<=i;j++){
                  if(prx[j]>tx){tx=prx[j]}else{}
                  if(prn[j]<tn){tn=prn[j]}else{}
                  }
                  tkn[i]=(tx+tn)/2
                  }
                  for(i=dk;i<=dle;i++){
                  kx=0
                  kn=10000000
                  for(j=(i-dk+1);j<=i;j++){
                  if(prx[j]>kx){kx=prx[j]}else{}
                  if(prn[j]<kn){kn=prn[j]}else{}
                  }
                  kij[i]=(kx+kn)/2
                  }{
                  if(tkn[dle]>=kij[dle]&&tkn[dle-1]<kij[dle-1])

                  ichim='کراس'

                  else
                  ichim=' کراس انجام نشده'

                  return true

                  }

                  }();

                  //..............................سرانه فروش......................//



                  true==function(){

                  skh=((( (ct).Buy_I_Volume / (tvol)) * ((tval) / (ct).Buy_CountI))/10000000).toFixed(2)

                  sfo=((( (ct).Sell_I_Volume / (tvol)) * ((tval) / (ct).Sell_CountI))/10000000).toFixed(2)

                  skhtosfo = (skh / sfo).toFixed(2)
                  //.................................................. ........................................
                  a= "نسبت سرانه خريد به فروش = "+skhtosfo
                  b="سرانه خريد = "+skh
                  c="سرانه فروش = "+sfo;

                  if ((tvol)!=0) return (1)
                  }()

                  true==function(){
                  var vol3=0
                  var avgvol3
                  var vol15=0
                  var avgvol15
                  var ipos

                  for(ipos=0;ipos<3;ipos++) {
                  vol3 = [ih][ipos].QTotTran5J + vol3 }
                  for(ipos=0;ipos<15;ipos++) {
                  vol15 = [ih][ipos].QTotTran5J + vol15 }
                  avgvol3 = vol3 / 3
                  avgvol15 = vol15 / 15
                  kvs = avgvol3 /avgvol15
                  //.................................................. ........................................
                  (cfield1)= ((Math.round(kvs*10))/10)
                  ;return(1)
                  }()

                  true==function(){
                  var vol10=0
                  var avgvol10
                  var vol40=0
                  var avgvol40
                  var ipos

                  for(ipos=0;ipos<10;ipos++) {
                  vol10 = [ih][ipos].QTotTran5J + vol10 }
                  for(ipos=0;ipos<40;ipos++) {
                  vol40 = [ih][ipos].QTotTran5J + vol40 }
                  avgvol10 = vol10 / 10
                  avgvol40= vol40 / 40
                  kvl = avgvol10 /avgvol40
                  //.................................................. ........................................
                  (cfield2)= ((Math.round(kvl*10))/10)
                  ;return(1)
                  }()
                  (cfield1)>1.4 && (cfield2)>1.2 && skh >=20 && sfo<=10
                  //.................................................. ...............//



                  function emoji(ecode)
                  {
                  return String.fromCodePoint(ecode);
                  }







                  var post_n = "| جمع شدن صف فروش-حجم مشکوک-ورود پول هوشمند |"+ "\n" +"\n" +
                  emoji(code.nemad) + " نماد : " +(l18) +" "+"\n" +
                  emoji(code.kharid) + " قيمت خريد : " + (pl) +" "+ "ريال" + " " + (plp) + " " + "%" + "\n" +
                  emoji(code.kharid) + " قيمت پاياني: " + (pc) +" "+ "ريال" + " " + (pcp) + " " + "%" +"\n" +
                  "➖➖➖➖➖➖➖➖"+"\n" +
                  "تابلو"+"\n" +
                  emoji(code.fiborad) +" " + a + "\n" +
                  emoji(code.fiborad) +" " + b + "\n" +
                  emoji(code.fiborad) +" " + c + "\n" +
                  emoji(code.pool) +" " +IOMoney + "\n" +
                  "?" + " قدرت خريد به فروش: " + buy_power + "\n" +
                  "♻️" + " حجم سه به شانزده روز : " + volume_trend + "\n" +
                  "?" + " قدرت صف : " + Math.round((Row_Pow() * 100))/100+ "\n" +
                  "➖➖➖➖➖➖➖➖"+"\n" +
                  "تکنیکال"+"\n" +
                  emoji(code.darsad1) + " RSI : " + RSI_CUR + VD + "\n" +
                  emoji(code.darsad2) + " ATR : " + Math.round ((ATR(14,0)
                  /ATR(14,1)) * 100 ) / 100 + "\n" +
                  emoji(code.darsad1) + " P/E : " + (pe) + "\n" +
                  emoji(code.darsad2) + " CCI :" + CCI + "\n" +
                  emoji(code.darsad1) + "MACD : " + MACD+ "\n" +
                  emoji(code.darsad2) + " BOLINGER : " + BOLINGER + "\n" +
                  emoji(code.darsad1) +"Ichimoku :" + ichim+ "\n" +
                  emoji(code.darsad2) + " فيبوناچي : " + fibolevel() + "\n" +
                  emoji(code.darsad1) + Pulbek + "\n" +
                  emoji(code.darsad2) + "م.متحرک 20D:" + zir20 + "\n" +
                  emoji(code.darsad2) + " کندل: " + marab+ "\n" +"\n" +
                  emoji(code.darsad) + " نوسان روزانه: " + Frequency + "\n" +
                  "?"+ ntime;










                  var post = encodeURI(post_n);

                  if (s.includes((l18))!=1) {
                  s.push((l18));
                  localStorage.setItem("names", s);

                  telegram_bot(post);
                  }
                  return true;
                  }






                  }()

                  نظر

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

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

                    برای من فعال نیست منو هایی که اشاره کردید

                    نظر

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

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

                      //جمع شدن صف فروش-حجم مشکوک-ورود پول هوشمند قابلیت ارسال به تلگرام//

                      true==function()
                      {


                      //***********************//
                      // telegram_bot function //
                      //***********************//
                      var telegram_bot = function(post)
                      {
                      const Http = new XMLHttpRequest();
                      var Token="تو کن ربات خود را جای این متن بگذارید";
                      var ID= "آیدی خود را جای این متن بگذارید";
                      var url='https://api.telegram.org/bot'+Token+'/sendMessage?text='+post+'&chat_id='+ID;
                      Http.open("GET", url);
                      Http.send();
                      }
                      ///////////////

                      let date = new Date();
                      let nowDay = date.getDay();
                      let nowHours = date.getHours();
                      let nowMinute = date.getMinutes();
                      var ntime=(new Date()).toLocaleString('fa-IR');
                      ///////////////


                      //***************************//
                      // emoji code from w3schools //
                      //***************************//
                      var code = {
                      nemad : "9989",
                      sanjag: "128204",
                      darsad1: "128200",
                      darsad2 : "128201",
                      hajm : "128202",
                      fiborad : "9889",
                      pool : "128181",
                      kharid : "128176",
                      darsad : "128175",


                      }


                      //***************************//
                      // emoji in javascript //
                      //***************************//
                      function emoji(ecode)
                      {
                      return String.fromCodePoint(ecode);
                      }




                      var min_perc
                      =((
                      (pmin) - [ih][0].PClosing) / [ih][0].PClosing)*100;
                      var now_change = (((pl) - (pmin)) / [ih][0].PClosing) * 100;

                      if ((tvol)>(bvol) && (pmin)== (tmin) && ((pl)-(pc))/(pl)*100>1.5 && (ct).Sell_CountI >= (ct).Buy_CountI && (tno)>5 && (tno)>20)
                      if((tvol)> [is5] && (tvol)>2*[is6])
                      if((tvol)>1.5*[is6]&&((ct).Buy_I_Volume/(ct).Buy_CountI)>
                      =((
                      ct).Sell_I_Volume/(ct).Sell_CountI)&&(pl)>=
                      (pc)&&(plp)>0
                      )




                      {


                      var CalculateVol = function(period){

                      var len = period;
                      var sum = 0;

                      for(var i = 0; i < len; i++)
                      {
                      sum = sum + [ih][i].QTotTran5J;
                      }
                      var avrage_sum = sum / period;
                      return avrage_sum;
                      }

                      s=localStorage.getItem("names")
                      if (s!=null) {
                      s=s.split(",")
                      } else {
                      s=[]
                      }



                      var volume_trend = Math.round((CalculateVol(3) / CalculateVol(16)) * 100 ) / 100;
                      var buy_power
                      =Math.round((((ct).Buy_I_Volume/(ct).Buy_CountI)/((ct).Sell_I_Volume/(ct).Sell_CountI)) *100)/100 ;

                      (cfield2) =Math.round(min_perc * 100 ) / 100;
                      (cfield0) =Math.round(now_change * 100 )/ 100;


                      var fibolevel=function()
                      {

                      var i ;
                      var min =(pc) ;
                      var max = (pc) ;
                      var day = 60 ;
                      var fibo0;
                      var fibo23;
                      var fibo38;
                      var fibo50;
                      var fibo61;
                      var fibo78;
                      var fibo100;

                      for(i = 0;i<day;i++)
                      {
                      if(typeof [ih][i]!="undefined")
                      {
                      if(min > [ih][i].PriceMin && [ih][i].PriceMin !=0 )
                      min = [ih][i].PriceMin ;

                      }
                      }

                      for(i = 0;i<day;i++)
                      {
                      if(typeof [ih][i]!="undefined")
                      {

                      if(max< [ih][i].PriceMax)
                      max = [ih][i].PriceMax ;
                      }
                      }

                      fibo0 = max;

                      fibo23 = max - (0.238 * (max-min));

                      fibo38 = max - (0.38 * (max-min));

                      fibo50 = max - (0.50 * (max-min));

                      fibo61 = max - (0.618 * (max-min));

                      fibo78 = max - (0.78 * (max-min));

                      fibo100 = min;

                      if ( fibo38 < (pc) && (pc) < fibo23 )
                      {
                      var fibo = "بين سطوح 23 تا 38 درصد";
                      return fibo ;

                      }
                      else if ( fibo50 < (pc) && (pc) < fibo38)
                      {
                      var fibo = "بين سطوح 38 تا 50 درصد";
                      return fibo ;
                      }

                      else if ( fibo61 < (pc) && (pc) < fibo50)
                      {
                      var fibo = "بين سطوح 50 تا 61 درصد";
                      return fibo ;
                      }
                      else if ( fibo78 < (pc) && (pc) < fibo61)
                      {
                      var fibo = "بين سطوح 61 تا 78درصد";
                      return fibo;
                      }

                      else
                      {
                      var fibo = "بين سطوح معتبري نيست";
                      return fibo;

                      }

                      }



                      var TR = function(n)
                      {
                      return Math.max(([ih][n].PriceMax - [ih][n].PriceMin),Math.abs([ih][n].PriceMax -
                      [ih][n+1].PDrCotVal),Math.abs([ih][n].PriceMin - [ih][n+1].PDrCotVal))

                      }



                      var ATR = function(n,d)
                      {
                      var sum = 0;
                      if(typeof [ih][n]!="undefined"){
                      for(var i = 0 + d; i < n + d; i ++)
                      {
                      sum = sum + TR(i)
                      }
                      return (sum / n)
                      }
                      }


                      var Row_Pow = function(){

                      if ((zd1) > 0 && (zo1) > 0){
                      var pow_buy = ((zd1)*(qd1) + (zd2)*(qd2) + (zd3)*(qd3))/((qd1) + (qd2) + (qd3));
                      var pow_sell = ((zo1)*(qo1) + (zo2)*(qo2) + (zo3)*(qo3))/((qo1) + (qo2) + (qo3));
                      return pow_buy / pow_sell;
                      }else if ((zd1) == 0 && (zo1) > 0)
                      {
                      return "صف فروش";
                      }else if ((z01) == 0 && (zd1) > 0)
                      {
                      return "صف خريد";
                      }else
                      {
                      return "خالي";
                      }
                      }

                      var CalculateRSI =function(period){

                      var len=20;

                      for (var i = 0; i < len ; i++) {
                      var rec=[ih][len-1-i];

                      var change=rec.PClosing-rec.PriceYesterday;

                      if (change> 0) {
                      rec.gain=change;
                      rec.loss=0;
                      }
                      else
                      {
                      rec.gain=0;
                      rec.loss=-change;
                      }
                      }

                      // Calculate first "average gain" and "average loss"
                      var gainSum=0;
                      var lossSum=0;

                      for (var i = 0; i < period; i++) {
                      var rec=[ih][len-1-i];
                      gainSum += rec.gain;
                      lossSum += rec.loss;
                      }

                      var averageGain=gainSum /period;
                      var averageLoss=lossSum / period;

                      // Calculate subsequent "average gain" and "average loss" values
                      for (var i = period + 1; i < len; i++) {
                      var rec=[ih][len-1-i];

                      averageGain=(averageGain* (period - 1) + rec.gain) / period;

                      averageLoss=(averageLoss* (period - 1)
                      + rec. loss)/ period;

                      rec.averageGain=averageGain;
                      rec.averageLoss=averageLoss;
                      }

                      // Calculate RSI
                      var RS = 0; // Relative strength
                      var RSIndex = 0; // Relative strength index

                      for (var i = period + 1; i < len; i++) {
                      var rec=[ih][len-1-i];

                      RS = rec.averageGain/ rec.averageLoss;
                      RSIndex = 100 - 100 / (1 + RS);
                      rec.rsi=RSIndex;
                      }
                      };

                      if(typeof [ih][0].rsi=="undefined")
                      CalculateRSI(14);

                      var RSI_CUR= Math.round([ih][0].rsi);

                      var pe = (pe);

                      (cfield1) = "P/E =" + (pe) + "****" +" قدرت خريد به فروش = " + buy_power + " **** " + "حجم 3 /16 = " + volume_trend +
                      "****" + " RSI = " + RSI_CUR + "****" + fibolevel() + "****" + " نوسانات = " + Math.round ((ATR(14,0)
                      /ATR(14,1)) * 100 ) / 100 + "****" + " قدرت صف= " + Math.round((Row_Pow() * 100))/100 ;












                      //.................................//
                      var IOMoney = "" ;
                      var a = Math.round( ((ct).Buy_I_Volume-(ct).Sell_I_Volume)*(pl) /10000000 ) ;
                      if ( a > 0 )
                      {
                      if ( a > 1000 )
                      IOMoney = "ورود پول " + Math.round(a/1000) + " ميليارد" ;
                      else
                      IOMoney = "ورود پول " + (a) + " ميليون" ;

                      (cfield2) = (cfield2) + String.fromCodePoint("128154") ;
                      }
                      if (a < 0 )
                      {
                      if ( a < -1000 )
                      IOMoney = "خروج پول " + Math.round(a/(-1000)) + " ميليارد" ;
                      else
                      IOMoney = "خروج پول " + a*(-1) + " ميليون" ;

                      (cfield2) = (cfield2) + String.fromCodePoint("10060") ;
                      }
                      //.................................................. ....///

                      var MAv20=function(){
                      var ma20 = ([ih][0].PClosing) ;
                      var D20=20 ;
                      var o ;
                      for(o=1;o<=D20;o++)
                      ma20=( [ih][o].PClosing ) +ma20 ;
                      if(o=D20)
                      {
                      ma20 = ma20/21 ;
                      }
                      return ma20 ;
                      };

                      {
                      marab='-'
                      }
                      {
                      boxkh='-'
                      }
                      {
                      hushmand=' '
                      }

                      {
                      ichim='-'
                      }


                      /////////////////////////////////

                      //---------------------------------------------------------- شروط میانگین متحرک 20 روزه

                      //----------------------------------------------------------- زیر میانگین متحرک 20 روزه"

                      if( [ih][1].PDrCotVal < MAv20() && [ih][2].PDrCotVal < MAv20())
                      {
                      zir20='زیر م.متحرک ↓▼↓'
                      color='red';
                      }

                      //----------------------------------------------------------- بالای میانگین متحرک 20 روزه"

                      if( [ih][1].PDrCotVal >= MAv20() && [ih][2].PDrCotVal >= MAv20())
                      {
                      zir20='بالای م.متحرک ↑▲↑'
                      color='green';
                      }

                      //---------------------------------------------------------- عبور از متحرک 20 روزه
                      if( [ih][1].PDrCotVal >= MAv20() && [ih][2].PDrCotVal <= MAv20())
                      {
                      zir20='عبور از م.متحرک ↔'
                      color='black';
                      }
                      // Calculate L in 14 days --------------------------------------------------- محاسبه کمترین قیمت 14 روزه
                      var L14=function(){
                      var l14=[ih][0].PriceMin;
                      var i;
                      for(i=0;i<=14;i++)
                      if(l14>[ih][i].PriceMin&&[ih][i].PriceMin!="undefined"&&[ih][i].PriceMin!=0)
                      l14=[ih][i].PriceMin;
                      return l14;
                      };
                      ////////////////////////////////////////



                      // ---------------------------------------------------------------------------- تابع تشخيص پولبک ---------------------------
                      var Pulbek = "";
                      var MAX = function(start,end)
                      {
                      var i = 0;
                      var price = [ih][start].PriceMax;

                      for(i=start+1 ; i <= end ; i++)
                      {
                      if(price < [ih][i].PriceMax)
                      price = [ih][i].PriceMax;
                      }
                      return price;
                      }

                      var max10 = MAX(0,9);
                      var max60 = MAX(10,59);
                      {
                      if(max10>max60 && (pmin)<max10*0.9 && (pmin) >max60)

                      Pulbek = "پولبک زده";


                      else
                      Pulbek = "پولبک نزده";




                      }





                      // --------------------------------------------------------------------------- تابع تشخيص چکش سفيد روزانه ---------------------------
                      var marab = "";
                      if((pmin)<(pl)&&(pl)==(pf)&&(pl)/(pf)<1.005&&(pf)>(pc)&&(pl)>(pc))
                      {
                      marab='سنجاقک'
                      }

                      else if ((pl)>(pf) && ([ih][0].PDrCotVal)<([ih][0].PriceFirst)&&(pl)>[ih][0].PriceFirst && (pf)<[ih][0].PDrCotVal )
                      {
                      marab='پوشا'
                      }
                      else if ((pl)>(pf) && ((pl)-(pf))/((tmax)-(tmin))>0.7 && ((pmax)-(pmin))/((tmax)-(tmin))>0.6)
                      {
                      marab='مارابوزو'
                      }

                      else if ((((pmax)-(pmin))>3*((pf)-(pl)))&&(((pmax)-(pl))/(0.001+(pmax)-(pmin))>0.6)&& (((pmax)-(pf))/(0.001+(pmax)-(pmin))>0.6))
                      {
                      marab='چکش معکوس'
                      }

                      else if ((pl) > (pc) && (pmax) > (pmin) && (pl) > (py) && (pmax) > (py) && (pf) >= (py) && (pl) > (pmin) && (pl) > (pf) && (pl)/(pf)<1.015 && (pl)/(pf)> 1.005 && (pmax) == (pl) && (tno) > 1)
                      {
                      marab='چکش'
                      }



                      else if ((pl) > (pf) && (pmax)>(pl) && (pmin)<(pl) && (py) > (pc) && (pl)/(pf)<1.004 && (py) > (pf))
                      {
                      marab='صلیب'
                      }

                      else if ([ih][0].PDrCotVal<[ih][0].PriceFirst&&[ih][0].PriceFirst<(pl)&&(pf)>(pl)&&(pf)<[ih][0].PDrCotVal)
                      {
                      marab='انگالفینگ صعودی'
                      }

                      else if ([ih][0].PDrCotVal>[ih][0].PriceFirst&&[ih][0].PriceFirst>(pl)&&(pf)<(pl)&&(pf)>[ih][0].PDrCotVal)
                      {
                      marab='انگالفینگ نزولی'
                      }
                      else
                      {
                      marab='معتبر نیست!';
                      }


                      // ----------------------


                      // ----------------------------------------------------------------------------- تشخيص نوسان روزانه ---------------------------
                      var Frequency = "";
                      var F = 100*((pmax)-(pmin))/(pmin);

                      if ( F >= 6 )
                      Frequency = "نوسان " + " %" + Math.round(F) ;


                      // ----------------------------------------------------------------------------- CCI انديکاتور ---------------------------

                      var i,j,tp,smtp,nd,smnd,c,CCI ;
                      var period = 22 ;
                      var stp=0 ;
                      var snd=0 ;

                      for(i=0;i<period;i++)
                      {
                      j = period-1-i ;
                      tp =([ih][j].PriceMax + [ih][j].PClosing + [ih][j].PriceMin) / 3 ;
                      stp = stp + tp ;
                      smtp = stp/(i+1) ;
                      nd = Math.abs(smtp-tp) ;
                      snd = snd + nd ;
                      smnd = snd / (i+1) ;
                      }
                      c = Math.round(((tp-smtp)/smnd)/0.015)

                      if (c>0)
                      {
                      CCI = "? صعودي " + c ;
                      (cfield2) = (cfield2) + String.fromCodePoint("128314") ;
                      }
                      else
                      {
                      CCI = "? نزولي " + c ;
                      (cfield2) = (cfield2) + String.fromCodePoint("128315") ;
                      }



                      //..............................rsi................. ........//



                      true==function()

                      {

                      var sumgain=function()

                      {

                      var gain=0;
                      var n;

                      for(n=0; n < 14; n++)
                      {
                      if ( [ih] [n].PClosing > [ih] [n].PriceYesterday )
                      {
                      gain += ( [ih] [n].PClosing - [ih] [n].PriceYesterday );
                      }
                      }
                      return gain/14;

                      };

                      var sumloss=function()

                      {

                      var loss=0;
                      var n;

                      for(n=0; n < 14; n++)
                      {
                      m=n+11
                      if ( [ih] [n].PClosing < [ih] [n].PriceYesterday )
                      {
                      loss += - ( [ih] [n].PClosing - [ih] [n].PriceYesterday );
                      }
                      }
                      return loss/14;

                      };

                      (cfield0)=sumgain();
                      (cfield1)=sumloss();
                      (cfield2)=Math.round(100-(100/(1+(cfield0)/(cfield1))));

                      return true;

                      }()

                      var VD

                      if ( (cfield2) < 30 && (tvol)>10000 ) {
                      VD="خريد"
                      }
                      else
                      {

                      if ( (cfield2) > 70 && (tvol)>10000 ) {
                      VD="فروش"
                      }
                      else
                      {
                      VD="(احتياط)محدوده خط 30 يا 70"
                      }

                      }

                      (cfield1)=VD




                      //************************************************** *************MACD************************
                      if( macd=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)
                      {
                      macd[dle]
                      macsig[dle]
                      machis[dle]
                      return true
                      }else{
                      return false
                      }
                      }())

                      {
                      MACD="? صعودي"

                      }
                      else{
                      MACD=' ↔ خنثي'

                      }


                      //************************************************** ***************BOLINGER**************************

                      if(true==function()
                      {
                      var CalculateBollingerBands =function(period,factor){


                      var total_average = 0;


                      for (var i = 0; i < [ih].length; i++)
                      {
                      // اطلاعات از تاريخ جديد به قديم در آرايه موجود است پس اولين روز در آرايه 59 موجود است
                      var day=[ih].length-i-1;


                      total_average += [ih][day].PClosing;


                      if (i >= period - 1)
                      {
                      var total_bollinger = 0;
                      var average = total_average / period;


                      for (var x = i; x > (i - period); x--)
                      {
                      var xday=[ih].length-x-1;
                      total_bollinger += Math.pow([ih][xday].PClosing - average, 2);
                      }


                      var stdev = Math.pow(total_bollinger / period,0.5);


                      [ih][day].BollingerAverage= average;
                      [ih][day].BollingerTop= average + factor * stdev;
                      [ih][day].BollingerBottom= average - factor * stdev;


                      total_average -= [ih][60-1 - (i - period + 1)].PClosing;
                      }
                      }
                      };


                      CalculateBollingerBands(20,2);


                      console.log([ih][0].BollingerTop + ' - ' + (pl));


                      if([ih][0].BollingerTop<(pl) || [ih][0].BollingerBottm>(pl))
                      {
                      return true;
                      }
                      else
                      {
                      return false;
                      }
                      }())
                      {
                      BOLINGER='? صعودي'

                      }
                      else{
                      BOLINGER='↔ خنثي'
                      }






                      //............................//

                      //---------------------------------------------------------- ايچيموکو

                      true==function(){
                      var dt=9
                      var dk=26
                      var dlen=60
                      var xb=0
                      var yb=0
                      var dle=0
                      for(xb=0;xb<dlen;xb++)
                      {
                      if([ih][xb].QTotTran5J>0)
                      {
                      yb++
                      }else{}
                      }
                      dle=yb
                      var prx=[];prx.lenght=dle
                      var prn=[];prn.lenght=dle
                      var tx
                      var tn
                      var kx
                      var kn
                      var tkn=[];tkn.lenght=dle
                      var kij=[];kij.lenght=dle
                      var i=0;var j=0
                      j=dle+1
                      for(i=0;i<dlen;i++){
                      if([ih][i].QTotTran5J>0)
                      {
                      j--;
                      prx[j]=[ih][i].PriceMax
                      prn[j]=[ih][i].PriceMin
                      }else{}
                      }
                      for(i=dt;i<=dle;i++){
                      tx=0
                      tn=1000000
                      for(j=(i-dt+1);j<=i;j++){
                      if(prx[j]>tx){tx=prx[j]}else{}
                      if(prn[j]<tn){tn=prn[j]}else{}
                      }
                      tkn[i]=(tx+tn)/2
                      }
                      for(i=dk;i<=dle;i++){
                      kx=0
                      kn=10000000
                      for(j=(i-dk+1);j<=i;j++){
                      if(prx[j]>kx){kx=prx[j]}else{}
                      if(prn[j]<kn){kn=prn[j]}else{}
                      }
                      kij[i]=(kx+kn)/2
                      }{
                      if(tkn[dle]>=kij[dle]&&tkn[dle-1]<kij[dle-1])

                      ichim='کراس'

                      else
                      ichim=' کراس انجام نشده'

                      return true

                      }

                      }();

                      //..............................سرانه فروش......................//



                      true==function(){

                      skh
                      =((
                      ( (ct).Buy_I_Volume / (tvol)) * ((tval) / (ct).Buy_CountI))/10000000).toFixed(2)

                      sfo
                      =((
                      ( (ct).Sell_I_Volume / (tvol)) * ((tval) / (ct).Sell_CountI))/10000000).toFixed(2)

                      skhtosfo = (skh / sfo).toFixed(2)
                      //.................................................. ........................................
                      a= "نسبت سرانه خريد به فروش = "+skhtosfo
                      b="سرانه خريد = "+skh
                      c="سرانه فروش = "+sfo;

                      if ((tvol)!=0) return (1)
                      }()

                      true==function(){
                      var vol3=0
                      var avgvol3
                      var vol15=0
                      var avgvol15
                      var ipos

                      for(ipos=0;ipos<3;ipos++) {
                      vol3 = [ih][ipos].QTotTran5J + vol3 }
                      for(ipos=0;ipos<15;ipos++) {
                      vol15 = [ih][ipos].QTotTran5J + vol15 }
                      avgvol3 = vol3 / 3
                      avgvol15 = vol15 / 15
                      kvs = avgvol3 /avgvol15
                      //.................................................. ........................................
                      (cfield1)= ((Math.round(kvs*10))/10)
                      ;return(1)
                      }()

                      true==function(){
                      var vol10=0
                      var avgvol10
                      var vol40=0
                      var avgvol40
                      var ipos

                      for(ipos=0;ipos<10;ipos++) {
                      vol10 = [ih][ipos].QTotTran5J + vol10 }
                      for(ipos=0;ipos<40;ipos++) {
                      vol40 = [ih][ipos].QTotTran5J + vol40 }
                      avgvol10 = vol10 / 10
                      avgvol40= vol40 / 40
                      kvl = avgvol10 /avgvol40
                      //.................................................. ........................................
                      (cfield2)= ((Math.round(kvl*10))/10)
                      ;return(1)
                      }()
                      (cfield1)>1.4 && (cfield2)>1.2 && skh >=20 && sfo<=10
                      //.................................................. ...............//



                      function emoji(ecode)
                      {
                      return String.fromCodePoint(ecode);
                      }







                      var post_n = "| جمع شدن صف فروش-حجم مشکوک-ورود پول هوشمند |"+ "\n" +"\n" +
                      emoji(code.nemad) + " نماد : " +(l18) +" "+"\n" +
                      emoji(code.kharid) + " قيمت خريد : " + (pl) +" "+ "ريال" + " " + (plp) + " " + "%" + "\n" +
                      emoji(code.kharid) + " قيمت پاياني: " + (pc) +" "+ "ريال" + " " + (pcp) + " " + "%" +"\n" +
                      "➖➖➖➖➖➖➖➖"+"\n" +
                      "تابلو"+"\n" +
                      emoji(code.fiborad) +" " + a + "\n" +
                      emoji(code.fiborad) +" " + b + "\n" +
                      emoji(code.fiborad) +" " + c + "\n" +
                      emoji(code.pool) +" " +IOMoney + "\n" +
                      "?" + " قدرت خريد به فروش: " + buy_power + "\n" +
                      "♻️" + " حجم سه به شانزده روز : " + volume_trend + "\n" +
                      "?" + " قدرت صف : " + Math.round((Row_Pow() * 100))/100+ "\n" +
                      "➖➖➖➖➖➖➖➖"+"\n" +
                      "تکنیکال"+"\n" +
                      emoji(code.darsad1) + " RSI : " + RSI_CUR + VD + "\n" +
                      emoji(code.darsad2) + " ATR : " + Math.round ((ATR(14,0)
                      /ATR(14,1)) * 100 ) / 100 + "\n" +
                      emoji(code.darsad1) + " P/E : " + (pe) + "\n" +
                      emoji(code.darsad2) + " CCI :" + CCI + "\n" +
                      emoji(code.darsad1) + "MACD : " + MACD+ "\n" +
                      emoji(code.darsad2) + " BOLINGER : " + BOLINGER + "\n" +
                      emoji(code.darsad1) +"Ichimoku :" + ichim+ "\n" +
                      emoji(code.darsad2) + " فيبوناچي : " + fibolevel() + "\n" +
                      emoji(code.darsad1) + Pulbek + "\n" +
                      emoji(code.darsad2) + "م.متحرک 20D:" + zir20 + "\n" +
                      emoji(code.darsad2) + " کندل: " + marab+ "\n" +"\n" +
                      emoji(code.darsad) + " نوسان روزانه: " + Frequency + "\n" +
                      "?"+ ntime;










                      var post = encodeURI(post_n);

                      if (s.includes((l18))!=1) {
                      s.push((l18));
                      localStorage.setItem("names", s);

                      telegram_bot(post);
                      }
                      return true;
                      }






                      }()

                      نظر

                      • sooroosh1315
                        ستاره‌دار (۲)
                        • Oct 2019
                        • 5358

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

                        در اصل توسط omdbrz پست شده است View Post
                        کدوم قسمت هست برای بنده فعال نیست
                        کافیه در ابتدا بنویسید:

                        [CODE]
                        از دی که گذشت هیچ ازو یاد مَکن،فردا که نیامده ست فریاد مَکن،بر نامده و گذشته بنیاد مکن،حالی خوش باش و عمر بر باد مَکن،

                        نظر

                        • sooroosh1315
                          ستاره‌دار (۲)
                          • Oct 2019
                          • 5358

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

                          در اصل توسط omdbrz پست شده است View Post
                          کدوم قسمت هست برای بنده فعال نیست
                          و در انتهایش بنویسید

                          [/CODE]



                          یا در پایین پنجره ارسال از دکمه ی تنظیمات اضافی استفاده کنید
                          از دی که گذشت هیچ ازو یاد مَکن،فردا که نیامده ست فریاد مَکن،بر نامده و گذشته بنیاد مکن،حالی خوش باش و عمر بر باد مَکن،

                          نظر

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

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

                            Code:
                            //فیلتر هوشمند حجمی//
                            true==function(){
                            
                            
                            skh=((( (ct).Buy_I_Volume / (tvol)) * ((tval) / (ct).Buy_CountI))/10000000).toFixed(2)
                            
                            
                            sfo=((( (ct).Sell_I_Volume / (tvol)) * ((tval) / (ct).Sell_CountI))/10000000).toFixed(2)
                            
                            
                            skhtosfo = (skh / sfo).toFixed(2)
                            //..........................................................................................
                            (cfield0)= "نسبت سرانه ها="+skhtosfo+ "****"+"سرانه خرید="+skh+ "****"+"سرانه فروش="+sfo;
                            
                            
                            if ((tvol)!=0) return (1)
                            }()
                            
                            
                            true==function(){
                                var vol3=0
                                    var avgvol3
                                    var vol15=0	
                                    var avgvol15
                                    var ipos     
                            
                            
                                for(ipos=0;ipos<3;ipos++) {
                                    vol3 = [ih][ipos].QTotTran5J + vol3	 }
                            	 for(ipos=0;ipos<15;ipos++) {
                                    vol15 = [ih][ipos].QTotTran5J + vol15	 }
                            	avgvol3 = vol3 / 3
                            	avgvol15 = vol15 / 15	     
                            kvs = avgvol3 /avgvol15
                            //..........................................................................................
                            (cfield1)= ((Math.round(kvs*10))/10)
                              ;return(1)
                            }()
                            
                            
                            true==function(){
                                var vol10=0
                                    var avgvol10
                                    var vol40=0	
                                    var avgvol40
                                    var ipos     
                            
                            
                                for(ipos=0;ipos<10;ipos++) {
                                    vol10 = [ih][ipos].QTotTran5J + vol10	 }
                            	 for(ipos=0;ipos<40;ipos++) {
                                    vol40 = [ih][ipos].QTotTran5J + vol40  }
                            	avgvol10 = vol10 / 10
                            	avgvol40= vol40 / 40	     
                            kvl = avgvol10 /avgvol40
                            //..........................................................................................
                            (cfield2)= ((Math.round(kvl*10))/10)
                              ;return(1)
                            }()
                             (cfield1)>1.4 && (cfield2)>1.2 && skh >=20 && sfo<=10

                            نظر

                            • شیرماهی وال استریت
                              Banned
                              • Nov 2020
                              • 18

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

                              در اصل توسط omdbrz پست شده است View Post
                              //فیلتر هوشمند مکدی +آر اس آی +قدرت+نسبت//
                              true==function()

                              {
                              //SMA
                              //SMA
                              var CalculateSMA =function(period){

                              var len = period;
                              var sum = 0;
                              for (var j = 10;j < len+10 ;j++) {
                              sum= [ih][j].PDrCotVal + sum;

                              }
                              var average = sum / period;
                              return average ;
                              }

                              //pre9MA
                              //pre9MA

                              var pre9CalculateEMA =function(period){

                              var pre9EMA =( ([ih][9].PDrCotVal - CalculateSMA (period))*(2 / (period + 1))) + CalculateSMA (period);

                              return pre9EMA ;
                              }
                              //preEMA
                              //preEMA

                              var pre8CalculateEMA =function(period){

                              var pre8EMA =( ([ih][1].PDrCotVal - pre9CalculateEMA (period))*(2 / (period + 1))) + pre9CalculateEMA (period);

                              return pre8EMA ;
                              }
                              //preEMA
                              //preEMA

                              var pre7CalculateEMA =function(period){

                              var pre7EMA =( ([ih][1].PDrCotVal - pre8CalculateEMA (period))*(2 / (period + 1))) + pre8CalculateEMA (period);

                              return pre7EMA ;
                              }
                              //preEMA
                              //preEMA

                              var pre6CalculateEMA =function(period){

                              var pre6EMA =( ([ih][1].PDrCotVal - pre7CalculateEMA (period))*(2 / (period + 1))) + pre7CalculateEMA (period);

                              return pre6EMA ;
                              }
                              //preEMA
                              //preEMA

                              var pre5CalculateEMA =function(period){

                              var pre5EMA =( ([ih][1].PDrCotVal - pre6CalculateEMA (period))*(2 / (period + 1))) + pre6CalculateEMA (period);

                              return pre5EMA ;
                              }
                              //preEMA
                              //preEMA

                              var pre4CalculateEMA =function(period){

                              var pre4EMA =( ([ih][1].PDrCotVal - pre5CalculateEMA (period))*(2 / (period + 1))) + pre5CalculateEMA (period);

                              return pre4EMA ;
                              }
                              //preEMA
                              //preEMA

                              var pre3CalculateEMA =function(period){

                              var pre3EMA =( ([ih][1].PDrCotVal - pre4CalculateEMA (period))*(2 / (period + 1))) + pre4CalculateEMA (period);

                              return pre3EMA ;
                              }
                              //preEMA
                              //preEMA

                              var pre2CalculateEMA =function(period){

                              var pre2EMA =( ([ih][1].PDrCotVal - pre3CalculateEMA (period))*(2 / (period + 1))) + pre3CalculateEMA (period);

                              return pre2EMA ;
                              }
                              //preEMA
                              //preEMA

                              var pre1CalculateEMA =function(period){

                              var pre1EMA =( ([ih][1].PDrCotVal - pre2CalculateEMA (period))*(2 / (period + 1))) + pre2CalculateEMA (period);

                              return pre1EMA ;
                              }




                              //EMA
                              //EMA

                              var CalculateEMA =function(period){

                              var EMA =( ([ih][0].PDrCotVal - pre1CalculateEMA (period))*(2 / (period + 1))) + pre1CalculateEMA (period);

                              return EMA ;
                              }


                              var Macd=0


                              Macd= CalculateEMA (12) - CalculateEMA (26);

                              (cfield0) =CalculateEMA (12) - CalculateEMA (26)

                              ////////////////////////////////RSI
                              var CalculateRSI =function(period){

                              var len=20;

                              for (var i = 0; i < len ; i++) {
                              var rec=[ih][len-1-i];

                              var change=rec.PClosing-rec.PriceYesterday;

                              if (change> 0) {
                              rec.gain=change;
                              rec.loss=0;
                              }
                              else
                              {
                              rec.gain=0;
                              rec.loss=-change;
                              }
                              }

                              // Calculate first "average gain" and "average loss"
                              var gainSum=0;
                              var lossSum=0;

                              for (var i = 0; i < period; i++) {
                              var rec=[ih][len-1-i];
                              gainSum += rec.gain;
                              lossSum += rec.loss;
                              }

                              var averageGain=gainSum /period;
                              var averageLoss=lossSum / period;

                              // Calculate subsequent "average gain" and "average loss" values
                              for (var i = period + 1; i < len; i++) {
                              var rec=[ih][len-1-i];

                              averageGain=(averageGain* (period - 1) + rec.gain) / period;
                              averageLoss=(averageLoss* (period - 1) + rec. loss)/ period;

                              rec.averageGain=averageGain;
                              rec.averageLoss=averageLoss;
                              }

                              // Calculate RSI
                              var RS = 0; // Relative strength
                              var RSIndex = 0; // Relative strength index

                              for (var i = period + 1; i < len; i++) {
                              var rec=[ih][len-1-i];

                              RS = rec.averageGain/ rec.averageLoss;
                              RSIndex = 100 - 100 / (1 + RS);
                              rec.rsi=RSIndex;
                              }
                              };

                              if(typeof [ih][0].rsi=="undefined")
                              CalculateRSI(14);

                              (cfield1)= [ih][0].rsi;
                              var Rsi=0;
                              Rsi= [ih][0].rsi;
                              ////////////////////////////VOL


                              (cfield2) =((ct).Buy_I_Volume / (ct).Buy_CountI)/((ct).Sell_I_Volume / (ct).Sell_CountI);
                              var O=0;
                              O =((ct).Buy_I_Volume / (ct).Buy_CountI)/((ct).Sell_I_Volume / (ct).Sell_CountI);
                              var a=0;
                              a=Math.round((((pc)*(ct).Buy_I_Volume)/(ct).Buy_CountI)/10000000)


                              if(Macd>0&&Rsi>60&&O>3&&a>20){

                              return true;
                              }


                              }()
                              جناب کار نمی کند
                              یه جاش مشکل داره
                              بررسی لطفن

                              نظر

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

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

                                در اصل توسط شیرماهی وال استریت پست شده است View Post
                                جناب کار نمی کند
                                یه جاش مشکل داره
                                بررسی لطفن
                                چه خطایی داره؟

                                نظر

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