var tribe_dropdowns = window.tribe_dropdowns || {}; ( function( $, obj, _ ) { 'use strict'; obj.selector = { dropdown: '.tribe-dropdown', created: '.tribe-dropdown-created', searchField: '.select2-search__field', }; // Setup a Dependent $.fn.tribe_dropdowns = function() { obj.dropdown( this, {} ); return this; }; obj.freefrom_create_search_choice = function( params ) { if ( 'string' !== typeof params.term ) { return null; } var term = params.term.trim(); if ( '' === term ) { return null; } var args = this.options.options; var $select = args.$select; if ( term.match( args.regexToken ) && ( ! $select.is( '[data-int]' ) || ( $select.is( '[data-int]' ) && term.match( /\d+/ ) ) ) ) { var choice = { id: term, text: term, new: true }; if ( $select.is( '[data-create-choice-template]' ) ) { choice.text = _.template( $select.data( 'createChoiceTemplate' ) )( { term: term } ); } return choice; } return null; }; /** * Better Search ID for Select2, compatible with WordPress ID from WP_Query * * @param {object|string} e Searched object or the actual ID * @return {string} ID of the object */ obj.search_id = function( e ) { var id = undefined; if ( 'undefined' !== typeof e.id ) { id = e.id; } else if ( 'undefined' !== typeof e.ID ) { id = e.ID; } else if ( 'undefined' !== typeof e.value ) { id = e.value; } return undefined === e ? undefined : id; }; /** * Better way of matching results * * @param {string} term Which term we are searching for * @param {string} text Search here * @return {boolean} */ obj.matcher = function( params, data ) { // If there are no search terms, return all of the data if ( 'string' !== typeof params.term || params.term.trim() === '') { return data; } // Do not display the item if there is no 'text' property if ( typeof data.text === 'undefined' ) { return null; } var term = params.term.trim(); var text = data.text; var $select = $( data.element ).closest( 'select' ); var args = $select.data( 'dropdown' ); var result = text.toUpperCase().indexOf( term.toUpperCase() ) !== -1; if ( ! result && 'undefined' !== typeof args.tags ){ var possible = _.where( args.tags, { text: text } ); if ( args.tags.length > 0 && _.isObject( possible ) ){ var test_value = obj.search_id( possible[0] ); result = test_value.toUpperCase().indexOf( term.toUpperCase() ) !== -1; } } return result; }; /** * If the element used as the basis of a dropdown specifies one or more numeric/text * identifiers in its val attribute, then use those to preselect the appropriate options. * * @param {object} $select * @param {function} make_selection */ obj.init_selection = function( $select, make_selection ) { var isMultiple = $select.is( '[multiple]' ); var options = $select.data( 'dropdown' ); var currentValues = $select.val().split( options.regexSplit ); var selectedItems = []; $( currentValues ).each( function( index, value ) { // eslint-disable-line no-unused-vars var searchFor = { id: this, text: this }; var data = options.ajax ? $select.data( 'options' ) : options.data; var locatedItem = find_item( searchFor, data ); if ( locatedItem && locatedItem.selected ) { selectedItems.push( locatedItem ); } } ); if ( selectedItems.length && isMultiple ) { make_selection( selectedItems ); } else if ( selectedItems.length ) { make_selection( selectedItems[ 0 ] ); } else { make_selection( false ); return; } }; /** * Searches array 'haystack' for objects that match 'description'. * * The 'description' object should take the form { id: number, text: string }. The first * object within the haystack that matches one of those two properties will be returned. * * If objects contain an array named 'children', then that array will also be searched. * * @param {Object} description * @param {Array} haystack * * @return {Object|boolean} */ function find_item( description, haystack ) { if ( ! _.isArray( haystack ) ) { return false; } for ( var index in haystack ) { var possible_match = haystack[ index ]; if ( possible_match.hasOwnProperty( 'id' ) && possible_match.id == description.id ) { // eslint-disable-line no-prototype-builtins,eqeqeq,max-len return possible_match; } if ( possible_match.hasOwnProperty( 'text' ) && possible_match.text == description.text ) { // eslint-disable-line no-prototype-builtins,eqeqeq,max-len return possible_match; } if ( possible_match.hasOwnProperty( 'children' ) && _.isArray( possible_match.children ) ) { // eslint-disable-line no-prototype-builtins,max-len var subsearch = find_item( description, possible_match.children ); if ( subsearch ) { return subsearch; } } } return false; } obj.getSelectClasses = function( $select ) { var classesToRemove = [ 'select2-hidden-accessible', 'hide-before-select2-init', ]; var originalClasses = $select.attr( 'class' ).split( /\s+/ ); return _.difference( originalClasses, classesToRemove ); }; obj.element = function( field, args ) { var $select = $( field ); var args = $.extend( {}, args ); // eslint-disable-line no-redeclare var carryOverData = [ // eslint-disable-line no-unused-vars 'depends', 'condition', 'conditionNot', 'condition-not', 'conditionNotEmpty', 'condition-not-empty', 'conditionEmpty', 'condition-empty', 'conditionIsNumeric', 'condition-is-numeric', 'conditionIsNotNumeric', 'condition-is-not-numeric', 'conditionChecked', 'condition-is-checked', ]; var $container; // Add a class for dropdown created $select.addClass( obj.selector.created.className() ); // args.debug = true; // For Reference we save the jQuery element as an Arg. args.$select = $select; // Auto define the Width of the Select2. args.dropdownAutoWidth = true; args.width = 'resolve'; // CSS for the container args.containerCss = {}; // Only apply visibility when it's a Visible Select2. if ( $select.is( ':visible' ) ) { args.containerCss.display = 'inline-block'; args.containerCss.position = 'relative'; } // CSS for the dropdown args.dropdownCss = {}; args.dropdownCss.width = 'auto'; // When we have this we replace the default with what's in the param. if ( $select.is( '[data-dropdown-css-width]' ) ) { args.dropdownCss.width = $select.data( 'dropdown-css-width' ); if ( ! args.dropdownCss.width || 'false' === args.dropdownCss.width ) { delete args.dropdownCss.width; delete args.containerCss; } } // By default we allow The field to be cleared args.allowClear = true; if ( $select.is( '[data-prevent-clear]' ) ) { args.allowClear = false; } // Pass the "Searching..." placeholder if specified if ( $select.is( '[data-searching-placeholder]' ) ) { args.formatSearching = $select.data( 'searching-placeholder' ); } // If we are dealing with a Input Hidden we need to set the Data for it to work if ( ! $select.is( '[data-placeholder]' ) && $select.is( '[placeholder]' ) ) { args.placeholder = $select.attr( 'placeholder' ); } // If we are dealing with a Input Hidden we need to set the Data for it to work. if ( $select.is( '[data-options]' ) ) { args.data = $select.data( 'options' ); } // With less then 10 args we wouldn't show the search. args.minimumResultsForSearch = 10; // Prevents the Search box to show if ( $select.is( '[data-hide-search]' ) ) { args.minimumResultsForSearch = Infinity; } // Makes sure search shows up. if ( $select.is( '[data-force-search]' ) ) { delete args.minimumResultsForSearch; } // Allows freeform entry if ( $select.is( '[data-freeform]' ) ) { args.createTag = obj.freefrom_create_search_choice; args.tags = true; $select.data( 'tags', true ); } if ( $select.is( '[multiple]' ) ) { args.multiple = true; // Set the max select items, if defined if ( $select.is( '[data-maximum-selection-size]' ) ) { args.maximumSelectionSize = $select.data( 'maximum-selection-size' ); } // If you don't have separator, add one (comma) if ( ! $select.is( 'data-separator' ) ) { $select.data( 'separator', ',' ); } if ( ! _.isArray( $select.data( 'separator' ) ) ) { args.tokenSeparators = [ $select.data( 'separator' ) ]; } else { args.tokenSeparators = $select.data( 'separator' ); } args.separator = $select.data( 'separator' ); // Define the regular Exp based on args.regexSeparatorElements = [ '^(' ]; args.regexSplitElements = [ '(?:' ]; $.each( args.tokenSeparators, function ( i, token ) { args.regexSeparatorElements.push( '[^' + token + ']+' ); args.regexSplitElements.push( '[' + token + ']' ); } ); args.regexSeparatorElements.push( ')$' ); args.regexSplitElements.push( ')' ); args.regexSeparatorString = args.regexSeparatorElements.join( '' ); args.regexSplitString = args.regexSplitElements.join( '' ); args.regexToken = new RegExp( args.regexSeparatorString, 'ig' ); args.regexSplit = new RegExp( args.regexSplitString, 'ig' ); } // Select also allows Tags, so we go with that too if ( $select.is( '[data-tags]' ) ) { args.tags = $select.data( 'tags' ); args.createSearchChoice = function( term, data ) { // eslint-disable-line no-unused-vars if ( term.match( args.regexToken ) ) { return { id: term, text: term }; } }; if ( 0 === args.tags.length ) { args.formatNoMatches = function() { return $select.attr( 'placeholder' ); }; } } // When we have a source, we do an AJAX call if ( $select.is( '[data-source]' ) ) { var source = $select.data( 'source' ); // For AJAX we reset the data args.data = { results: [] }; // Format for Parents breadcrumbs args.formatResult = function ( item, container, query ) { // eslint-disable-line no-unused-vars,max-len if ( 'undefined' !== typeof item.breadcrumbs ) { return $.merge( item.breadcrumbs, [ item.text ] ).join( ' » ' ); } return item.text; }; // instead of writing the function to execute the request we use Select2's convenient helper. args.ajax = { dataType: 'json', type: 'POST', url: obj.ajaxurl(), // parse the results into the format expected by Select2. processResults: function ( response, page, query ) { // eslint-disable-line no-unused-vars if ( ! $.isPlainObject( response ) || 'undefined' === typeof response.success ) { console.error( 'We received a malformed Object, could not complete the Select2 Search.' ); // eslint-disable-line max-len return { results: [] }; } if ( ! $.isPlainObject( response.data ) || 'undefined' === typeof response.data.results ) { console.error( 'We received a malformed results array, could not complete the Select2 Search.' ); // eslint-disable-line max-len return { results: [] }; } if ( ! response.success ) { if ( 'string' === $.type( response.data.message ) ) { console.error( response.data.message ); } else { console.error( 'The Select2 search failed in some way... Verify the source.' ); } return { results: [] }; } return response.data; }, }; // By default only send the source args.ajax.data = function( search, page ) { return { action: 'tribe_dropdown', source: source, search: search, page: page, args: $select.data( 'source-args' ), }; }; } // Attach dropdown to container in DOM. if ( $select.is( '[data-attach-container]' ) ) { // If multiple, attach container without search. if ( $select.is( '[multiple]' ) ) { $.fn.select2.amd.define( 'AttachedDropdownAdapter', [ 'select2/utils', 'select2/dropdown', 'select2/dropdown/attachContainer', ], function( utils, dropdown, attachContainer ) { return utils.Decorate( dropdown, attachContainer ); } ); args.dropdownAdapter = $.fn.select2.amd.require( 'AttachedDropdownAdapter' ); // If not multiple, attach container with search. } else { $.fn.select2.amd.define( 'AttachedWithSearchDropdownAdapter', [ 'select2/utils', 'select2/dropdown', 'select2/dropdown/search', 'select2/dropdown/minimumResultsForSearch', 'select2/dropdown/attachContainer', ], function( utils, dropdown, search, minimumResultsForSearch, attachContainer ) { var adapter = utils.Decorate( dropdown, attachContainer ); adapter = utils.Decorate( adapter, search ); adapter = utils.Decorate( adapter, minimumResultsForSearch ); return adapter; } ); args.dropdownAdapter = $.fn.select2.amd.require( 'AttachedWithSearchDropdownAdapter' ); } } // Save data on Dropdown $select.data( 'dropdown', args ); $container = $select.select2TEC( args ); // Propagating original input classes to the select2 container. $container.data( 'select2' ).$container.addClass( obj.getSelectClasses( $select ).join( ' ' ) ); // Propagating original input classes to the select2 container. $container.data( 'select2' ).$container.removeClass( 'hide-before-select2-init' ); $container.on( 'select2:open', obj.action_select2_open ); /** * @todo @bordoni Investigate how and if we should be doing this. * if ( carryOverData.length > 0 ) { carryOverData.map( function( dataKey ) { var attr = 'data-' + dataKey; var val = $select.attr( attr ); if ( ! val ) { return; } this.attr( attr, val ); }, $container ); } */ }; obj.ajaxurl = function() { if ( 'undefined' !== typeof window.ajaxurl ) { return window.ajaxurl; } if ( 'undefined' !== typeof TEC && 'undefined' !== typeof TEC.ajaxurl ) { return TEC.ajaxurl; } console.error( 'Dropdowns framework cannot properly do an AJAX request without the WordPress `ajaxurl` variable setup.' ); // eslint-disable-line max-len }; obj.action_select2_open = function( event ) { // eslint-disable-line no-unused-vars var $select = $( this ); var select2Data = $select.data( 'select2' ); var $search = select2Data.$dropdown.find( obj.selector.searchField ); // eslint-disable-line es5/no-es6-methods,max-len select2Data.$dropdown.addClass( obj.selector.dropdown.className() ); // If we have a placeholder for search, apply it! if ( $select.is( '[data-search-placeholder]' ) ) { $search.attr( 'placeholder', $select.data( 'searchPlaceholder' ) ); } }; /** * Configure the Drop Down Fields * * @param {jQuery} $fields All the fields from the page * @param {array} args Allow extending the arguments * * @return {jQuery} Affected fields */ obj.dropdown = function( $fields, args ) { var $elements = $fields.not( '.select2-offscreen, .select2-container, ' + obj.selector.created.className() ); // eslint-disable-line max-len if ( 0 === $elements.length ) { return $elements; } // Default args to avoid Undefined if ( ! args ) { args = {}; } $elements .each( function( index, element ) { // Apply element to all given items and pass args obj.element( element, args ); } ); // return to be able to chain jQuery calls return $elements; }; $( function() { $( obj.selector.dropdown ).tribe_dropdowns(); } ); // Addresses some problems with Select2 inputs not being initialized when using a browser's "Back" button. $( window ).on( 'unload', function() { $( obj.selector.dropdown ).tribe_dropdowns(); }); } )( jQuery, tribe_dropdowns, window.underscore || window._ ); /*! elementor-pro - v3.5.1 - 10-11-2021 */ .elementor-cta,.elementor-widget-call-to-action .elementor-widget-container{overflow:hidden}.elementor-cta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-cta--skin-classic .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--skin-classic .elementor-cta__bg-wrapper{position:relative;min-height:200px;width:100%}.elementor-cta--skin-classic .elementor-cta__content{-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%;background-color:#f7f7f7}.elementor-cta--skin-classic .elementor-cta__content-item,.elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon{color:#55595c;border-color:#55595c;fill:#55595c}.elementor-cta--skin-classic .elementor-cta__button.elementor-button{color:#55595c;border-color:#55595c}.elementor-cta--skin-cover .elementor-cta{display:block}.elementor-cta--skin-cover .elementor-cta__bg-wrapper{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%}.elementor-cta--skin-cover .elementor-cta__content{min-height:280px}.elementor-cta--skin-cover .elementor-cta__button.elementor-button,.elementor-cta--skin-cover .elementor-cta__content-item,.elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon{color:#fff;border-color:#fff}.elementor-cta--layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--layout-image-left .elementor-cta,.elementor-cta--layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--layout-image-left .elementor-cta__content,.elementor-cta--layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta__bg,.elementor-cta__bg-overlay{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.elementor-cta__bg-wrapper{z-index:1;overflow:hidden}.elementor-cta__bg{-webkit-background-size:cover;background-size:cover;background-position:50%;z-index:1}.elementor-cta__bg-overlay{z-index:2}.elementor-cta__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-cta__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-cta__title{font-size:23px}.elementor-cta__content{z-index:1;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;padding:35px;width:100%}.elementor-cta__content,.elementor-cta__content-item{position:relative;-webkit-transition:.5s;-o-transition:.5s;transition:.5s;color:#fff}.elementor-cta__content-item{width:100%;margin:0}.elementor-cta__content-item:not(:last-child){margin-bottom:15px}.elementor-cta__content-item .elementor-icon{color:#fff}.elementor-cta--valign-top .elementor-cta__content{-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-cta--valign-middle .elementor-cta__content{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-cta--valign-bottom .elementor-cta__content{-ms-flex-line-pack:end;align-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor-cta:hover .elementor-cta__bg-overlay{background-color:rgba(0,0,0,.3)}@media (max-device-width:1024px){.elementor-cta{cursor:pointer}}@media (min-width:-1px){.elementor-cta--widescreen-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--widescreen-layout-image-left .elementor-cta,.elementor-cta--widescreen-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--widescreen-layout-image-left .elementor-cta__content,.elementor-cta--widescreen-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--widescreen-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--widescreen-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--laptop-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--laptop-layout-image-left .elementor-cta,.elementor-cta--laptop-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--laptop-layout-image-left .elementor-cta__content,.elementor-cta--laptop-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--laptop-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--laptop-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--tablet_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta,.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__content,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:1024px){.elementor-cta--tablet-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet-layout-image-left .elementor-cta,.elementor-cta--tablet-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet-layout-image-left .elementor-cta__content,.elementor-cta--tablet-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--mobile_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta,.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__content,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:767px){.elementor-cta--mobile-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile-layout-image-left .elementor-cta,.elementor-cta--mobile-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile-layout-image-left .elementor-cta__content,.elementor-cta--mobile-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.elementor-ribbon{position:absolute;z-index:1;top:0;left:0;right:auto;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);width:150px;overflow:hidden;height:150px}.elementor-ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000;color:#fff}.elementor-ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}
Warning: Cannot modify header information - headers already sent by (output started at /home1/brighdbt/public_html/premills.com/wp-content/plugins/svg-support/functions/thumbnail-display.php:1) in /home1/brighdbt/public_html/premills.com/wp-includes/feed-rss2.php on line 8
Финтех Archives - premier mills https://www.premills.com/category/finteh-2/ Wed, 21 May 2025 10:58:23 +0000 en-US hourly 1 https://wordpress.org/?v=6.8.1 https://www.premills.com/wp-content/uploads/2021/08/PM_No.1_Favicon-01.png Финтех Archives - premier mills https://www.premills.com/category/finteh-2/ 32 32 Индексы Криптовалют: Виды, Особенности Использования https://www.premills.com/indeksy-kriptovaljut-vidy-osobennosti/ https://www.premills.com/indeksy-kriptovaljut-vidy-osobennosti/#respond Wed, 21 May 2025 05:28:48 +0000 https://www.premills.com/?p=3736 Правила и процедура вывода определены для воздушного спуска и предстоящего запуска токена в сентябре на бирже Super X Trade. Пополните свой счет и выберите криптовалютный индекс, которым вы хотите торговать. Выбор платформ, которые предоставляют прозрачную отчетность о показателях индекса, составляющих активах и деятельности по ребалансировке, может помочь инвесторам принимать обоснованные решения. Изменения в правилах могут […]

The post Индексы Криптовалют: Виды, Особенности Использования appeared first on premier mills.

]]>
Правила и процедура вывода определены для воздушного спуска и предстоящего запуска токена в сентябре на бирже Super X Trade. Пополните свой счет и выберите криптовалютный индекс, которым вы хотите торговать. Выбор платформ, которые предоставляют прозрачную отчетность о показателях индекса, составляющих активах и деятельности по ребалансировке, может помочь инвесторам принимать обоснованные решения. Изменения в правилах могут повлиять на производительность и доступность определенных криптовалют в индексе.

Криптовалютные индексы снижают барьер входа для новых инвесторов, предоставляя простой способ получить доступ к рынку криптовалют. Это особенно полезно для тех, кто новичок в криптопространстве и может столкнуться с проблемой выбора и управления отдельными активами. Обратите внимание, что некоторые платформы, такие как Binance, предлагают различные версии платформы для различных географических регионов.

Можно образно представить подобный механизм в виде посредника, перемещающегося между устройствами и анализирующего базы данных, создавая при этом новые связи и доставляя сообщения различным адресатам. Минимальные инвестиции составляют $250 тыс., максимальная сумма ограничена $1 млн. Такие инструменты сбалансированы по капитализации и пересматриваются раз в день, неделю, месяц или квартал. Принципы работы индикаторов на цифровом и традиционном рынках одинаковы. Вся информация, представленная на сайте носит информационный характер и не является прямыми указаниями к торговле, вся ответственность за принятие решения остается за трейдером. Рост Complete three обычно подразумевает, что трейдеры ищут новые варианты вне двух крупнейших монет.

Какие Данные Собирают Индексы?

  • Подобную информацию предоставляют все, но у каждой платформы есть свои особенности — в зависимости от целевой аудитории.
  • Криптовалютный ценовой индекс — это сайт или платформа, где приводятся данные о ценах и капитализации различных криптовалют.
  • В видео дается пошаговая инструкция о том, как присоединиться к эйрдропу Lava, увеличить награды и выполнить задания для дополнительных баллов.
  • Они предоставляют доступ к устоявшимся компаниям и отраслям, что может быть привлекательно для инвесторов, стремящихся к более надежному варианту инвестирования.

Они также имеют некоторые ограничения, такие как дефицит компонентов и возможные отклонения от стоимостей индекса. Во избежание ошибок важно проводить собственный анализ и оценку при использовании таких помощников в инвестиционных стратегиях. Отслеживает и измеряет производительность, а также движение цены Bitcoin. BPI предоставляет средний курс Биткоина на основе данных с нескольких бирж и торговых платформ.

Примеры криптовалютных индексов

Независимо от того, идет ли речь о долгосрочном росте, краткосрочной прибыли или хеджировании от инфляции, важно выбрать правильный индекс, который соответствует этим целям. Исследуйте меры безопасности провайдера, такие как использование холодного хранения и многоуровневых кошельков, и любые прошлые инциденты в области безопасности. Самые популярные крипты, например, биткоин (BTC) и Ethereum (ETH), торгуются на большинстве бирж. Менее распространенные, такие как IOTA, можно встретить лишь на нескольких площадках.

Примеры криптовалютных индексов

В американский S&P 500 входят 500 самых дорогих американских компаний, а FTSE a hundred состоит из one hundred крупнейших компаний, зарегистрированных на Лондонской фондовой бирже (также по рыночной капитализации). MACD (Схождение/Различие скользящих средних) – это мощный технический индикатор, который помогает трейдерам анализировать изменения в моментуме цены и искать сигналы для покупки или продажи активов. Криптовалютные индексы были созданы для обеспечения прозрачности и стандартизации на развивающемся рынке криптовалют. Они предоставляют инвесторам надежный способ отслеживать эффективность диверсифицированного портфеля цифровых активов. Coinbase — ведущая криптовалютная биржа, известная своим соответствием нормативным требованиям и надежными мерами безопасности. Он предлагает различные https://www.xcritical.com/ индексные продукты, такие как Coinbase Index Fund, который обеспечивает диверсифицированный доступ к рынку криптовалют.

Фонд Crypto Fund использует его для отслеживания котировок цифровых валют. Управляемые и децентрализованные торговые платформы — индекс криптовалют основной источник информации для индексных сайтов. Теперь, когда вы знакомы с концепцией и преимуществами криптовалютных индексных фондов, давайте рассмотрим, как вы можете в них инвестировать.

Примеры криптовалютных индексов

Комментария К “индексы Капитализации Криптовалют: Тотал 1, Тотал 2, Тотал 3”

Однако важно отметить, что этот потенциал для получения более высоких доходов сопряжен с увеличенным риском. Крипторынок все еще относительно молод и может быть подвержен различным факторам, включая изменения в законодательстве и рыночное настроение. Эти фонды могут включать криптовалюты, использующие энергоэффективные механизмы консенсуса или участвующие в проектах по возобновляемой энергии.

Проблемы С Ликвидностью

Обратите внимание на то, что все индексы перебалансируются или корректируют свой состав периодически. Например, если индекс перебалансируется ежемесячно, активы могут добавляться или удаляться на основе определенных ежемесячных критериев. В партнерстве с MarketVector Indexes, подразделением известного управляющего активами VanEck, Bitpanda обеспечивает первоклассные индексационные услуги. Ежемесячное перебалансирование гарантирует, что ваш портфель остается актуальным с учетом изменений на криптовалютном рынке. Вместо инвестирования в отдельные акции или активы вы инвестируете в «корзину», представляющую более широкий сектор, рынок или отрасль.

Ребалансировка обычно проводится на регулярной основе (например, ежемесячно или ежеквартально) и дневник трейдера может включать в себя добавление или удаление активов, а также корректировку их весов. Частота и методология ребалансировки зависят от конкретного индекса и его целей. Шаги включают создание кошелька, запрос тестовых токенов, шифрование активов, отправку активов и дешифровку.

Это включает в себя понимание того, как происходит ребалансировка индекса и критерии включения активов. Ликвидность может быть серьезной проблемой, особенно для индексов, которые включают менее популярные или недавно запущенные криптовалюты. Ограниченная ликвидность может затруднить инвесторам вход или выход из позиций, не влияя на рыночную цену.

Надежный провайдер будет прозрачным относительно комиссий, состава индекса и методов перебалансировки. Проверьте, насколько быстро реагирует служба поддержки, и проверьте, предлагает ли провайдер образовательные ресурсы, поскольку это может свидетельствовать о вложении в успех пользователя. Остерегайтесь красных флагов, таких как обещания нереалистичных доходов или агрессивные тактики продаж, и всегда отдавайте предпочтение провайдерам с четкой и прозрачной информацией.

The post Индексы Криптовалют: Виды, Особенности Использования appeared first on premier mills.

]]>
https://www.premills.com/indeksy-kriptovaljut-vidy-osobennosti/feed/ 0
Tradingview: Топ Индикаторов Для Крипто Трейдинга https://www.premills.com/tradingview-top-indikatorov-dlja-kripto-trejdinga/ https://www.premills.com/tradingview-top-indikatorov-dlja-kripto-trejdinga/#respond Mon, 19 May 2025 11:39:07 +0000 https://www.premills.com/?p=3661 Трейдинг криптовалютой представляет собой сложный и динамичный процесс, требующий постоянного анализа рынка и принятия обоснованных решений. Для успешной торговли трейдерам необходимо использовать различные инструменты анализа, включая индикаторы. Использование этих индикаторов может значительно улучшить вашу торговую стратегию в 2024 году. Стохастический осциллятор сравнивает текущую цену закрытия актива с диапазоном его цен за определенный период. Он колеблется […]

The post Tradingview: Топ Индикаторов Для Крипто Трейдинга appeared first on premier mills.

]]>
Трейдинг криптовалютой представляет собой сложный и динамичный процесс, требующий постоянного анализа рынка и принятия обоснованных решений. Для успешной торговли трейдерам необходимо использовать различные инструменты анализа, включая индикаторы. Использование этих индикаторов может значительно улучшить вашу торговую стратегию в 2024 году. Стохастический осциллятор сравнивает текущую цену закрытия актива с диапазоном его цен за определенный период. Он колеблется между 0 и one hundred, при значениях выше eighty указывая на перекупленность и при значениях ниже 20 указывая на перепроданность.

  • Как правило, готовые криптоботы для индикаторов заранее настроены, то есть заданы все настройки и таймфреймы.
  • Если RSI опускается ниже 30, это говорит о перепроданности, и цена, вероятно, начнет расти.
  • Цель – прочувствовать рынок и отточить технические навыки (выставление ордеров, чтение графиков) в условиях реальной, пусть и небольшой, ставки.

Индикатор «уровни Фибоначчи»

индикаторы в трейдинге криптовалют

Хоть они не дадут вам 100% stp брокер гарантии, но неплохо увеличат шансы на стабильный профит и уберегут от просадок. Так что обсудим самые лучшие основные индикаторы в трейдинге, которые подходят для разных стратегий – долгосрок или краткосрок. В этой статье мы покажем самые ходовые индикаторы, которые чаще всего используют опытные криптаны.

индикаторы в трейдинге криптовалют

Например, если на растущем тренде открытый интерес увеличивается, это указывает на продолжение роста, так как в рынок входят новые участники. Напротив, снижение OI может говорить о том, что текущий тренд ослабевает, и возможен разворот. Индикатор интереса TradingView позволяет оценить, какие уровни или активы вызывают наибольший интерес со стороны участников рынка. Обычно такой индикатор анализирует изменения объема торгов или ценового движения для выявления точек, где спрос и предложение значительно возрастает. Эти индикаторы дают трейдерам представление о том, где возможно изменение ценовой динамики, и позволяют настроить свои стратегии таким образом, чтобы максимизировать шансы на успех.

индикаторы в трейдинге криптовалют

Индикатор Страха И Жадности Криптовалюты

На волатильном рынке, пока монеты «скачут», хорошо работают полосы Боллинджера и стандартное отклонение. С ними вам проще найти границы движения сервис для торговли на бирже цены и увидеть возможные места разворота тренда. Каждый рынок сам по себе уникален, поэтому и настройки индикаторов часто варьируются. Для высоковолатильных активов по типу крипты лучше выставлять короткие периоды на скользящих средних и осцилляторах.

Здесь на помощь приходит стратегия для трейдинга – четкий свод правил, когда и как совершать сделки. Определите свой стиль торговли, учитывая, какие индикаторы лучше всего помогают вам анализировать рынок. • Отлично дополняет другие технические индикаторы, такие как MACD и индекс относительной силы. Индикатор объёмов показывает количество активов, проданных или купленных за определённый период, что важно для анализа изменений цен. four.⁠ ⁠Индикатор объёмов (Volume Indicator) помогает трейдерам в анализе рыночной волатильности.

В примере ниже открываемся на promote на следующей свече с переводом сделки в безубыток у уровня 50 с целью по прибыли вблизи линии sixty one,8. MACD — это простой и эффективный метод определения трендов и потенциальных сигналов на покупку или продажу криптовалют. Он позволяет точно настроить временные рамки и параметры чувствительности в соответствии со стилем торговли конкретного трейдера. Торговля криптовалютами очень волатильна и непредсказуема, поэтому для принятия взвешенных решений трудно полагаться только на интуицию. Индикаторы помогают объективно анализировать тренды рынка и опираться на данные и статистику. Арбитраж – особая стратегия, основанная на разнице цен одного и того же актива на разных площадках либо в разных формах.

Расхождения значений между A/D и ценой свидетельствуют о скором изменении цен. Идея индикатора заключается в том, чтобы связывать изменения объема с движением цен. То есть OBV наглядно показывает, вкладывают участники рынка свои средства в финансовый инструмент, или выводят их из него. В целом, индикатор Профиль объёма может предоставить трейдерам ценную информацию о рыночной активности и помочь им принимать более обоснованные торговые решения. Awesome Oscillator — это индикатор импульса, разработанный Биллом Вильямсом, который дает сигналы разворота тренда. Индикатор Арун (Aroon) — это полезный инструмент для дейтрейдеров, позволяющий оценить силу тренда и предвидеть потенциальный разворот.

Эта информация помогает принять решение о том, когда открывать или закрывать позицию. Уровни Фибоначчи помогают легко и эффективно определить потенциальные уровни уровни поддержки и сопротивления. Однако для понимания и эффективного использования RSI необходима практика, поэтому разобраться в нем может быть непросто. Чтобы повысить эффективность RSI, рекомендуется сочетать его с другими индикаторами и инструментами анализа, чтобы принимать взвешенные решения в рамках торговых стратегий. RSI — популярный индикатор для измерения силы, с которой движется цена криптовалюты.

Чем меньше рассматриваемый интервал (цена актива), тем точнее выполняется отображение реальных изменений на ценовом графике. Если вы дей трейдер, то экспоненциальная скользящая средняя может стать идеальным инструментом для анализа рынка. Расчет лучшей ЕМА для включает в себя суммирование как последних, так и исторических данных, точно так же, как и SMMA. Разница здесь в том, что приоритет отдается последним данным в рамках рассматриваемого временного интервала. Поэтому линия EMA полезна, когда необходимо принимать быстрые торговые решения. Индикатор OBV в криптовалютной торговле может подтверждать тренды и выявлять потенциальные расхождения между индикатором и ценой актива.

Для достижения наилучших результатов важно комбинировать различные типы индикаторов и использовать их в контексте общей рыночной картины. Лучшие индикаторы на TradingView помогают трейдерам в определении точек входа и выхода на рынок криптовалюты. Помните, что трейдеры часто проверяют свои торговые решения, комбинируя индикатор MACD с другими инструментами технического анализа. Кроме того, не стоит недооценивать важность управления рисками и установки подходящих стоп-лосс ордеров. Если значение индикатора превышает 70, актив считается перекупленным, что может предвещать коррекцию или разворот.

Если хотите быстрых и больших заработков, важно научиться принимать и работать с риском. Если цена актива быстро и значительно падает, то это может быть признаком дампа – продажи актива после пампа. После 2-х растущих свечей на растущем объеме открываемся на покупку на 3-й день и получаем профит fifty two лучшие индикаторы для торговли криптовалютой,28% за 2 дня без кредитного плеча. В последнюю неделю алгоритм показывает умеренный страх на криптовалютном рынке. Трейдер может использовать данную информацию для поиска и открытия сделок на продажу, т.к. Данная стратегия подразумевает короткие stop loss и отсутствие сильных движений, поэтому идеально подходит для торговли в период флэта.

Например, если на бирже A биткоин стоит $30 000, а на бирже B – $30 200, то покупаем 1 BTC на A и сразу продаем на B, зарабатывая ~$200 минус комиссии. О других популярных торговых стратегиях для торговли криптовалютой мы расскажем чуть позже. Криптотрейдинг – это спекулятивная торговля криптовалютой с целью заработка на разнице курсов. В отличие от традиционных рынков, торговля цифровыми монетами идет 24/7, а волатильность (амплитуда колебаний цен) очень высокая.

The post Tradingview: Топ Индикаторов Для Крипто Трейдинга appeared first on premier mills.

]]>
https://www.premills.com/tradingview-top-indikatorov-dlja-kripto-trejdinga/feed/ 0