diff --git a/.eslintrc.js b/.eslintrc.js index 0c3c994d6f07..954b6299b3c4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,5 +1,8 @@ module.exports = { extends: ['@deriv/eslint-config-deriv'], + rules: { + 'global-require': 'off', + }, overrides: [ { files: ['*.ts', '*.tsx'], diff --git a/package-lock.json b/package-lock.json index 4fe120a88507..ed3a3131d945 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "@datadog/browser-rum": "^4.37.0", "@deriv/api-types": "^1.0.118", "@deriv/deriv-api": "^1.0.13", - "@deriv/deriv-charts": "1.3.6", + "@deriv/deriv-charts": "1.4.0", "@deriv/js-interpreter": "^3.0.0", "@deriv/ui": "^0.6.0", "@livechat/customer-sdk": "^2.0.4", @@ -2903,9 +2903,9 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@deriv/deriv-charts": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@deriv/deriv-charts/-/deriv-charts-1.3.6.tgz", - "integrity": "sha512-hxEgCIPPx87OO2NVn8cxbmUc4kVUPhjTzM8MGyviJkCWpl+mdBKizGKq+LQr9oNQwKfxw2dszFDBaVsoAFTXYQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@deriv/deriv-charts/-/deriv-charts-1.4.0.tgz", + "integrity": "sha512-JWhDkE/c+CouMQ6FNsiKwg9EWFq3jgUu7dxK2Z4wNeDSDrcNe37VK13UagL40dmqJe/W3LJ2wUolFGYqAe3DIw==", "dependencies": { "@welldone-software/why-did-you-render": "^3.3.8", "classnames": "^2.3.1", @@ -2915,9 +2915,9 @@ "mobx-react-lite": "^3.4.0", "moment": "^2.24.0", "prop-types": "^15.7.2", - "react": "^16.13.1", - "react-dom": "^16.13.1", - "react-tabs": "^3.0.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-tabs": "^4.3.0", "react-transition-group": "^4.4.1", "robust-websocket": "^1.0.0", "sinon-chai": "^3.7.0", @@ -2928,33 +2928,6 @@ "npm": ">=9.0.0" } }, - "node_modules/@deriv/deriv-charts/node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@deriv/deriv-charts/node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" - } - }, "node_modules/@deriv/eslint-config-deriv": { "version": "1.0.0-beta.3", "resolved": "https://registry.npmjs.org/@deriv/eslint-config-deriv/-/eslint-config-deriv-1.0.0-beta.3.tgz", @@ -41368,15 +41341,15 @@ } }, "node_modules/react-tabs": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-3.2.3.tgz", - "integrity": "sha512-jx325RhRVnS9DdFbeF511z0T0WEqEoMl1uCE3LoZ6VaZZm7ytatxbum0B8bCTmaiV0KsU+4TtLGTGevCic7SWg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-4.3.0.tgz", + "integrity": "sha512-2GfoG+f41kiBIIyd3gF+/GRCCYtamC8/2zlAcD8cqQmqI9Q+YVz7fJLHMmU9pXDVYYHpJeCgUSBJju85vu5q8Q==", "dependencies": { "clsx": "^1.1.0", "prop-types": "^15.5.0" }, "peerDependencies": { - "react": "^16.3.0 || ^17.0.0-0" + "react": "^16.8.0 || ^17.0.0-0 || ^18.0.0" } }, "node_modules/react-tiny-popover": { @@ -51648,9 +51621,9 @@ } }, "@deriv/deriv-charts": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@deriv/deriv-charts/-/deriv-charts-1.3.6.tgz", - "integrity": "sha512-hxEgCIPPx87OO2NVn8cxbmUc4kVUPhjTzM8MGyviJkCWpl+mdBKizGKq+LQr9oNQwKfxw2dszFDBaVsoAFTXYQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@deriv/deriv-charts/-/deriv-charts-1.4.0.tgz", + "integrity": "sha512-JWhDkE/c+CouMQ6FNsiKwg9EWFq3jgUu7dxK2Z4wNeDSDrcNe37VK13UagL40dmqJe/W3LJ2wUolFGYqAe3DIw==", "requires": { "@welldone-software/why-did-you-render": "^3.3.8", "classnames": "^2.3.1", @@ -51660,36 +51633,13 @@ "mobx-react-lite": "^3.4.0", "moment": "^2.24.0", "prop-types": "^15.7.2", - "react": "^16.13.1", - "react-dom": "^16.13.1", - "react-tabs": "^3.0.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-tabs": "^4.3.0", "react-transition-group": "^4.4.1", "robust-websocket": "^1.0.0", "sinon-chai": "^3.7.0", "url-search-params-polyfill": "^7.0.0" - }, - "dependencies": { - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - } } }, "@deriv/eslint-config-deriv": { @@ -79198,9 +79148,9 @@ } }, "react-tabs": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-3.2.3.tgz", - "integrity": "sha512-jx325RhRVnS9DdFbeF511z0T0WEqEoMl1uCE3LoZ6VaZZm7ytatxbum0B8bCTmaiV0KsU+4TtLGTGevCic7SWg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-4.3.0.tgz", + "integrity": "sha512-2GfoG+f41kiBIIyd3gF+/GRCCYtamC8/2zlAcD8cqQmqI9Q+YVz7fJLHMmU9pXDVYYHpJeCgUSBJju85vu5q8Q==", "requires": { "clsx": "^1.1.0", "prop-types": "^15.5.0" diff --git a/packages/account/package.json b/packages/account/package.json index 62711f003835..afb67c220197 100644 --- a/packages/account/package.json +++ b/packages/account/package.json @@ -28,6 +28,7 @@ }, "dependencies": { "@binary-com/binary-document-uploader": "^2.4.8", + "@deriv/api": "^1.0.0", "@deriv/api-types": "^1.0.118", "@deriv/components": "^1.0.0", "@deriv/hooks": "^1.0.0", diff --git a/packages/account/src/App.tsx b/packages/account/src/App.tsx index 9c71d674d019..58d34d3b6f71 100644 --- a/packages/account/src/App.tsx +++ b/packages/account/src/App.tsx @@ -1,7 +1,7 @@ import React from 'react'; import Routes from './Containers/routes'; import ResetTradingPassword from './Containers/reset-trading-password'; -import { setWebsocket } from '@deriv/shared'; +import { APIProvider } from '@deriv/api'; import { StoreProvider } from '@deriv/stores'; import type { TCoreStores } from '@deriv/stores/types'; @@ -14,17 +14,18 @@ type TAppProps = { }; const App = ({ passthrough }: TAppProps) => { - const { root_store, WS } = passthrough; - setWebsocket(WS); + const { root_store } = passthrough; const { notification_messages_ui: Notifications } = root_store.ui; return ( - - {Notifications && } - - - + + + {Notifications && } + + + + ); }; diff --git a/packages/account/src/Assets/ic-poi-dob-example.svg b/packages/account/src/Assets/ic-poi-dob-example.svg new file mode 100644 index 000000000000..7ad66a00fa5b --- /dev/null +++ b/packages/account/src/Assets/ic-poi-dob-example.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/account/src/Assets/ic-poi-name-example.svg b/packages/account/src/Assets/ic-poi-name-example.svg new file mode 100644 index 000000000000..eaaa9453759c --- /dev/null +++ b/packages/account/src/Assets/ic-poi-name-example.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/account/src/Components/address-details/__tests__/address-details.spec.tsx b/packages/account/src/Components/address-details/__tests__/address-details.spec.tsx index f6e1d294eb05..abdf3767e41a 100644 --- a/packages/account/src/Components/address-details/__tests__/address-details.spec.tsx +++ b/packages/account/src/Components/address-details/__tests__/address-details.spec.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import { FormikProps, FormikValues } from 'formik'; - -import { isDesktop, isMobile, PlatformContext } from '@deriv/shared'; +import { FormikProps } from 'formik'; import { fireEvent, render, screen, waitFor } from '@testing-library/react'; - -import AddressDetails from '../address-details'; +import { useStatesList } from '@deriv/hooks'; +import { isDesktop, isMobile } from '@deriv/shared'; +import { StoreProvider, mockStore } from '@deriv/stores'; +import AddressDetails, { TAddressDetailFormProps } from '../address-details'; +import { TStores } from '@deriv/stores/types'; jest.mock('@deriv/shared', () => ({ ...jest.requireActual('@deriv/shared'), @@ -21,6 +22,11 @@ jest.mock('../../real-account-signup/helpers/utils.ts', () => ({ })), })); +jest.mock('@deriv/hooks', () => ({ + ...jest.requireActual('@deriv/hooks'), + useStatesList: jest.fn(() => ({ data: [], isFetched: true })), +})); + jest.mock('@deriv/components', () => { const original_module = jest.requireActual('@deriv/components'); @@ -47,19 +53,16 @@ describe('', () => { let modal_root_el: HTMLDivElement; const mock_props: React.ComponentProps = { - fetchStatesList: jest.fn(() => Promise.resolve([])), getCurrentStep: jest.fn(), goToNextStep: jest.fn(), goToPreviousStep: jest.fn(), - has_real_account: false, is_gb_residence: '', - is_svg: true, onCancel: jest.fn(), onSave: jest.fn(), onSubmit: jest.fn(), - onSubmitEnabledChange: jest.fn(), - selected_step_ref: { current: { isSubmitting: false } } as React.RefObject>, - states_list: [], + selected_step_ref: { current: { isSubmitting: false } } as React.RefObject< + FormikProps + >, value: { address_city: '', address_line_1: '', @@ -69,10 +72,12 @@ describe('', () => { }, validate: jest.fn(), disabled_items: [], + has_real_account: false, }; + const store = mockStore({}); + const svgCommonRenderCheck = () => { - expect(mock_props.onSubmitEnabledChange).toHaveBeenCalledTimes(1); expect(screen.getByLabelText(address_line_1_marked)).toBeInTheDocument(); expect(screen.getByLabelText(address_line_2)).toBeInTheDocument(); expect(screen.getByLabelText(address_postcode)).toBeInTheDocument(); @@ -86,6 +91,14 @@ describe('', () => { expect(screen.queryByLabelText(address_town)).not.toBeInTheDocument(); }; + const renderComponent = ({ props = mock_props, store_config = store }) => { + return render( + + + + ); + }; + beforeEach(() => { (isDesktop as jest.Mock).mockReturnValue(true); (isMobile as jest.Mock).mockReturnValue(false); @@ -103,10 +116,15 @@ describe('', () => { }); it('should render AddressDetails component for mobile', async () => { - (isDesktop as jest.Mock).mockReturnValue(false); - (isMobile as jest.Mock).mockReturnValue(true); + const new_store_config: TStores = { + ...store, + ui: { + ...store.ui, + is_mobile: true, + }, + }; - render(); + renderComponent({ store_config: new_store_config }); await waitFor(() => { svgCommonRenderCheck(); @@ -119,33 +137,18 @@ describe('', () => { expect(required_fields).toHaveLength(2); }); - it('should call fetchResidenceList if states list is empty', async () => { - render(); - expect(mock_props.fetchStatesList).toHaveBeenCalled(); - }); - - it('should not call fetchResidenceList if states list is empty', async () => { - render( - - ); - - expect(mock_props.fetchStatesList).not.toHaveBeenCalled(); - expect(screen.queryByText('mockedLoading')).not.toBeInTheDocument(); - }); - it('should show a loader when states list is not fully fetched', async () => { - render(); + (useStatesList as jest.Mock).mockReturnValue({ + data: [], + isFetched: false, + }); + + renderComponent({}); expect(screen.getByText('mockedLoading')).toBeInTheDocument(); }); it('should render AddressDetails component and trigger buttons', async () => { - render(); + renderComponent({}); await waitFor(() => { svgCommonRenderCheck(); @@ -204,80 +207,26 @@ describe('', () => { }); }); - it('should render AddressDetails component not svg', async () => { - mock_props.is_svg = false; - - render(); - - expect(mock_props.onSubmitEnabledChange).toHaveBeenCalledTimes(1); - - const inputs: HTMLTextAreaElement[] = screen.getAllByRole('textbox'); - expect(inputs).toHaveLength(5); - const required_fields = inputs.filter(input => input.required === true); - expect(required_fields).toHaveLength(0); - - await waitFor(() => { - expect(screen.getByLabelText(address_line_1)).toBeInTheDocument(); - expect(screen.getByLabelText(address_line_2)).toBeInTheDocument(); - expect(screen.getByLabelText(address_postcode)).toBeInTheDocument(); - expect(screen.getByLabelText(address_state)).toBeInTheDocument(); - expect(screen.getByLabelText(address_town)).toBeInTheDocument(); - expect(screen.getByText(use_address_info)).toBeInTheDocument(); - }); - - expect(screen.queryByText(address_line_1_marked)).not.toBeInTheDocument(); - expect(screen.queryByText(address_line_2_marked)).not.toBeInTheDocument(); - expect(screen.queryByText(address_postcode_marked)).not.toBeInTheDocument(); - expect(screen.queryByText(address_town_marked)).not.toBeInTheDocument(); - expect(screen.queryByText(verification_info)).not.toBeInTheDocument(); - }); - - it('should render AddressDetails component for appstore', async () => { - render( - - - - ); - - expect(mock_props.onSubmitEnabledChange).toHaveBeenCalledTimes(1); - await waitFor(() => { - expect(screen.getByText(verification_info)).toBeInTheDocument(); - }); - expect(screen.queryByText(use_address_info)).not.toBeInTheDocument(); - - const inputs: HTMLTextAreaElement[] = screen.getAllByRole('textbox'); - expect(inputs).toHaveLength(5); - - const required_fields = inputs.filter(input => input.required === true); - expect(required_fields).toHaveLength(4); - - expect(screen.getByLabelText(address_line_1_marked)).toBeInTheDocument(); - expect(screen.getByLabelText(address_line_2_marked)).toBeInTheDocument(); - expect(screen.getByLabelText(address_postcode_marked)).toBeInTheDocument(); - expect(screen.getByLabelText(address_state)).toBeInTheDocument(); - expect(screen.getByLabelText(address_town_marked)).toBeInTheDocument(); - expect(screen.getByText(verification_info)).toBeInTheDocument(); - - expect(screen.queryByText(address_line_1)).not.toBeInTheDocument(); - expect(screen.queryByText(address_line_2)).not.toBeInTheDocument(); - expect(screen.queryByText(address_postcode)).not.toBeInTheDocument(); - expect(screen.queryByText(address_town)).not.toBeInTheDocument(); - expect(screen.queryByText(use_address_info)).not.toBeInTheDocument(); - }); - it('should render AddressDetails component with states_list for mobile', async () => { (isDesktop as jest.Mock).mockReturnValue(false); (isMobile as jest.Mock).mockReturnValue(true); - - mock_props.states_list = [ - { text: 'State 1', value: 'State 1' }, - { text: 'State 2', value: 'State 2' }, - ]; - - render(); + (useStatesList as jest.Mock).mockReturnValue({ + data: [ + { text: 'State 1', value: 'State 1' }, + { text: 'State 2', value: 'State 2' }, + ], + isFetched: true, + }); + const new_store_config: TStores = { + ...store, + ui: { + ...store.ui, + is_mobile: true, + }, + }; + renderComponent({ store_config: new_store_config }); expect(screen.getByText('Default test state')).toBeInTheDocument(); - const address_state_input: HTMLInputElement = screen.getByRole('combobox'); expect(address_state_input.value).toBe(''); fireEvent.change(address_state_input, { target: { value: 'State 2' } }); @@ -287,12 +236,14 @@ describe('', () => { }); it('should render AddressDetails component with states_list for desktop', async () => { - mock_props.states_list = [ - { text: 'State 1', value: 'State 1' }, - { text: 'State 2', value: 'State 2' }, - ]; - - render(); + (useStatesList as jest.Mock).mockReturnValue({ + data: [ + { text: 'State 1', value: 'State 1' }, + { text: 'State 2', value: 'State 2' }, + ], + isFetched: true, + }); + renderComponent({}); const address_state_input: HTMLTextAreaElement = screen.getByRole('textbox', { name: 'State/Province' }); expect(address_state_input).toHaveValue('Default test state'); @@ -302,18 +253,21 @@ describe('', () => { }); }); - it('should disable the field if it is immuatble from BE', async () => { - mock_props.disabled_items = ['address_line_1', 'address_line_2']; - mock_props.value.address_state = ''; + it('should disable the field if it is immutable from BE', async () => { + const new_props: React.ComponentProps = { + ...mock_props, + disabled_items: ['address_line_1', 'address_line_2'], + value: { ...mock_props.value, address_state: '' }, + }; - render(); + renderComponent({ props: new_props }); - expect(screen.getByLabelText(address_line_1)).toBeDisabled(); + expect(screen.getByLabelText(address_line_1_marked)).toBeDisabled(); expect(screen.getByLabelText(address_line_2)).toBeDisabled(); await waitFor(() => { expect(screen.getByRole('textbox', { name: 'State/Province' })).toBeEnabled(); }); - expect(screen.getByLabelText(address_town)).toBeEnabled(); + expect(screen.getByLabelText(address_town_marked)).toBeEnabled(); expect(screen.getByLabelText(address_postcode)).toBeEnabled(); }); }); diff --git a/packages/account/src/Components/address-details/address-details.tsx b/packages/account/src/Components/address-details/address-details.tsx index b5a91f4f2f9e..07a71265283a 100644 --- a/packages/account/src/Components/address-details/address-details.tsx +++ b/packages/account/src/Components/address-details/address-details.tsx @@ -1,7 +1,15 @@ import React from 'react'; import classNames from 'classnames'; -import { Field, Formik, FormikProps, FormikValues } from 'formik'; - +import { + Formik, + Field, + FormikProps, + FormikValues, + FormikErrors, + FormikHelpers, + FormikHandlers, + FormikState, +} from 'formik'; import { StatesList } from '@deriv/api-types'; import { Autocomplete, @@ -9,7 +17,6 @@ import { DesktopWrapper, Div100vhContainer, FormSubmitButton, - Input, Loading, MobileWrapper, Modal, @@ -17,44 +24,40 @@ import { Text, ThemedScrollbars, } from '@deriv/components'; -import { getLocation, isDesktop, isMobile, makeCancellablePromise, PlatformContext } from '@deriv/shared'; -import { Localize, localize } from '@deriv/translations'; - +import { useStatesList } from '@deriv/hooks'; +import { getLocation } from '@deriv/shared'; +import { observer, useStore } from '@deriv/stores'; +import { localize, Localize } from '@deriv/translations'; +import { FormInputField } from '../forms/form-fields'; import { splitValidationResultTypes } from '../real-account-signup/helpers/utils'; +export type TAddressDetailFormProps = { + address_line_1: string; + address_line_2?: string; + address_city: string; + address_state?: string; + address_postcode?: string; +}; + type TAddressDetails = { disabled_items: string[]; states_list: StatesList; getCurrentStep?: () => number; - onSave: (current_step: number, values: FormikValues) => void; + onSave: (current_step: number, values: TAddressDetailFormProps) => void; onCancel: (current_step: number, goToPreviousStep: () => void) => void; goToNextStep: () => void; goToPreviousStep: () => void; - validate: (values: FormikValues) => FormikValues; + validate: (values: TAddressDetailFormProps) => TAddressDetailFormProps; onSubmit: ( current_step: number | null, - values: FormikValues, + values: TAddressDetailFormProps, action: (isSubmitting: boolean) => void, next_step: () => void ) => void; - is_svg: boolean; - is_mf?: boolean; is_gb_residence: boolean | string; + selected_step_ref?: React.RefObject>; + value: TAddressDetailFormProps; has_real_account: boolean; - onSubmitEnabledChange: (is_submit_disabled: boolean) => void; - selected_step_ref?: React.RefObject>; - fetchStatesList: () => Promise; - value: FormikValues; -}; - -type TInputField = { - name: string; - required?: boolean | string; - label: string; - maxLength?: number | string; - placeholder: string; - onChange?: (e: any) => void; - disabled?: string; }; type TAutoComplete = { @@ -62,122 +65,104 @@ type TAutoComplete = { text: string; }; -const InputField = (props: TInputField) => { - return ( - - {({ field, form: { errors, touched } }: FormikValues) => ( - - - - )} - - ); -}; +/** + * Component to display address details form + * @name AddressDetails + * @param getCurrentStep - function to get current step + * @param states_list - array of states for the selected residence country + * @param onSave - function to save form values + * @param onCancel - function to cancel form values + * @param goToNextStep - function to go to next step + * @param goToPreviousStep - function to go to previous step + * @param validate - function to validate form values + * @param onSubmit - function to submit form values + * @param is_gb_residence - is residence Great Britan + * @param selected_step_ref - reference to selected step + * @param value - form values + * @param disabled_items - array of disabled fields + * @param has_real_account - has real account + * @returns react node + */ +const AddressDetails = observer( + ({ + getCurrentStep, + onSave, + onCancel, + goToNextStep, + goToPreviousStep, + validate, + onSubmit, + is_gb_residence, + selected_step_ref, + disabled_items, + has_real_account, + ...props + }: TAddressDetails) => { + const [address_state_to_display, setAddressStateToDisplay] = React.useState(''); -const AddressDetails = ({ - states_list, - getCurrentStep, - onSave, - onCancel, - goToNextStep, - goToPreviousStep, - validate, - onSubmit, - is_svg, - is_mf, - is_gb_residence, - onSubmitEnabledChange, - selected_step_ref, - disabled_items, - has_real_account, - ...props -}: TAddressDetails) => { - const { is_appstore } = React.useContext(PlatformContext); - const [has_fetched_states_list, setHasFetchedStatesList] = React.useState(false); - const [address_state_to_display, setAddressStateToDisplay] = React.useState(''); + const { + ui, + client: { residence }, + } = useStore(); - React.useEffect(() => { - let cancelFn: (() => void) | undefined; - if (states_list.length) { - setHasFetchedStatesList(true); - } else { - const { cancel, promise } = makeCancellablePromise(props.fetchStatesList()); - cancelFn = cancel; - promise.then(() => { - setHasFetchedStatesList(true); - if (props.value?.address_state) { - setAddressStateToDisplay(getLocation(states_list, props.value?.address_state, 'text')); - } - }); - } - return () => { - setHasFetchedStatesList(false); - if (cancelFn) { - cancelFn(); - } - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - const is_submit_disabled_ref = React.useRef(true); - - const isSubmitDisabled = (errors?: { [key: string]: string } | FormikValues) => { - return selected_step_ref?.current?.isSubmitting || (errors && Object.keys(errors).length > 0); - }; + const { is_desktop, is_mobile } = ui; + const { data: states_list, isFetched } = useStatesList(residence); - const checkSubmitStatus = (errors?: { [key: string]: string } | FormikValues) => { - const is_submit_disabled = isSubmitDisabled(errors); + const isSubmitDisabled = (errors: FormikErrors = {}): boolean => { + const is_submitting = selected_step_ref?.current?.isSubmitting ?? false; + return is_submitting || Object.keys(errors).length > 0; + }; - if (is_submit_disabled_ref.current !== is_submit_disabled) { - is_submit_disabled_ref.current = is_submit_disabled; - onSubmitEnabledChange?.(!is_submit_disabled); - } - }; + const handleCancel = (values: TAddressDetailFormProps) => { + const current_step = (getCurrentStep?.() || 1) - 1; + onSave(current_step, values); + onCancel(current_step, goToPreviousStep); + }; - const handleCancel = (values: FormikValues) => { - const current_step = (getCurrentStep?.() || 1) - 1; - onSave(current_step, values); - onCancel(current_step, goToPreviousStep); - }; + const handleValidate = (values: TAddressDetailFormProps) => { + const { errors } = splitValidationResultTypes(validate(values)); + return errors; + }; - const handleValidate = (values: FormikValues) => { - const { errors } = splitValidationResultTypes(validate(values)); - checkSubmitStatus(errors); - return errors; - }; + const handleSubmitData = (values: TAddressDetailFormProps, actions: FormikHelpers) => { + if (values.address_state && states_list.length) { + values.address_state = address_state_to_display + ? getLocation(states_list, address_state_to_display, 'value') + : getLocation(states_list, values.address_state, 'value'); + } + onSubmit((getCurrentStep?.() || 1) - 1, values, actions.setSubmitting, goToNextStep); + }; - return ( - { - if (values.address_state && states_list.length) { - values.address_state = address_state_to_display - ? getLocation(states_list, address_state_to_display, 'value') - : getLocation(states_list, values.address_state, 'value'); - } - onSubmit((getCurrentStep?.() || 1) - 1, values, actions.setSubmitting, goToNextStep); - }} - > - {({ handleSubmit, errors, values, setFieldValue, handleChange, setFieldTouched }: FormikValues) => ( - - {({ setRef, height }: { setRef: (instance: HTMLFormElement) => void; height: number | string }) => ( -
- - {!is_appstore && ( + return ( + + {({ + handleSubmit, + errors, + values, + setFieldValue, + handleChange, + setFieldTouched, + }: FormikHandlers & FormikHelpers & FormikState) => ( + + {({ + setRef, + height, + }: { + setRef: (instance: HTMLFormElement) => void; + height: number | string; + }) => ( + + - )} - - {is_appstore && ( -
- - {localize( - 'We need this for verification. If the information you provide is fake or inaccurate, you won’t be able to deposit and withdraw.' - )} - -
- )} -
- - - - {!has_fetched_states_list && ( -
- -
- )} - {states_list?.length > 0 ? ( - - {({ field }: FormikValues) => ( - <> - - { - setFieldValue( - 'address_state', - value ? text : '', - true - ); - setAddressStateToDisplay(''); - }} - list_portal_id={is_appstore ? '' : 'modal_root'} - disabled={ - disabled_items.includes('address_state') || - (props.value?.address_state && has_real_account) - } - /> - - - { - setFieldValue( - 'address_state', - e.target.value, - true - ); - setAddressStateToDisplay(''); - }} - disabled={ - disabled_items.includes('address_state') || - (props.value?.address_state && has_real_account) - } - /> - - - )} - - ) : ( - // Fallback to input field when states list is empty / unavailable for country - +
+ - )} - { - setFieldTouched('address_postcode', true); - handleChange(e); - }} - disabled={ - disabled_items.includes('address_postcode') || - (props.value?.address_postcode && has_real_account) - } - /> -
- - - - handleCancel(values)} - /> - - - )} - - )} - - ); -}; + + + {!isFetched && ( +
+ +
+ )} + {states_list?.length > 0 ? ( + + {({ field }: FormikValues) => ( + + + { + setFieldValue( + 'address_state', + value ? text : '', + true + ); + setAddressStateToDisplay(''); + }} + list_portal_id='modal_root' + disabled={ + disabled_items.includes('address_state') || + (props.value?.address_state && has_real_account) + } + /> + + + { + setFieldValue( + 'address_state', + e.target.value, + true + ); + setAddressStateToDisplay(''); + }} + disabled={ + disabled_items.includes('address_state') || + (props.value?.address_state && has_real_account) + } + /> + + + )} + + ) : ( + // Fallback to input field when states list is empty / unavailable for country + + )} + { + setFieldTouched('address_postcode', true); + handleChange(e); + }} + disabled={ + disabled_items.includes('address_postcode') || + (props.value?.address_postcode && has_real_account) + } + /> +
+
+
+ + handleCancel(values)} + /> + + + )} +
+ )} +
+ ); + } +); export default AddressDetails; diff --git a/packages/account/src/Components/currency-selector/__tests__/currency-selector.spec.tsx b/packages/account/src/Components/currency-selector/__tests__/currency-selector.spec.tsx index f5342532bb5f..06153456282c 100644 --- a/packages/account/src/Components/currency-selector/__tests__/currency-selector.spec.tsx +++ b/packages/account/src/Components/currency-selector/__tests__/currency-selector.spec.tsx @@ -1,13 +1,8 @@ import React from 'react'; import { fireEvent, screen, render, waitFor } from '@testing-library/react'; -import { isDesktop, isMobile, PlatformContext } from '@deriv/shared'; -import CurrencySelector, { TCurrencySelector } from '../currency-selector'; - -jest.mock('@deriv/shared', () => ({ - ...jest.requireActual('@deriv/shared'), - isDesktop: jest.fn().mockReturnValue(false), - isMobile: jest.fn().mockReturnValue(false), -})); +import { StoreProvider, mockStore } from '@deriv/stores'; +import CurrencySelector from '../currency-selector'; +import { TStores } from '@deriv/stores/types'; jest.mock('../../real-account-signup/helpers/utils.ts', () => ({ splitValidationResultTypes: jest.fn(() => ({ @@ -17,197 +12,22 @@ jest.mock('../../real-account-signup/helpers/utils.ts', () => ({ })); describe('', () => { - const props: TCurrencySelector = { - accounts: { - VRTC90000010: { - account_type: 'trading', - currency: 'USD', - is_disabled: 0, - is_virtual: 1, - landing_company_shortcode: 'virtual', - trading: {}, - token: '', - email: '', - session_start: 1651059038, - excluded_until: '', - landing_company_name: 'virtual', - residence: 'es', - balance: 10000, - accepted_bch: 0, - }, - }, - legal_allowed_currencies: [ - { - value: 'EUR', - fractional_digits: 2, - is_deposit_suspended: 0, - is_suspended: 0, - is_withdrawal_suspended: 0, - name: 'Euro', - stake_default: 10, - transfer_between_accounts: { - fees: { - AUD: 0, - }, - limits: { - max: 4717.96, - min: 0.94, - }, - limits_dxtrade: { - max: 2358.45, - min: 0.01, - }, - limits_mt5: { - max: 14150.68, - min: 0.01, - }, - }, - type: 'fiat', - }, - { - value: 'USD', - fractional_digits: 2, - is_deposit_suspended: 0, - is_suspended: 0, - is_withdrawal_suspended: 0, - name: 'US Dollar', - stake_default: 10, - transfer_between_accounts: { - fees: { - AUD: 0, - }, - limits: { - max: 5000, - min: 1, - }, - limits_dxtrade: { - max: 2500, - min: 0.01, - }, - limits_mt5: { - max: 15000, - min: 0.01, - }, - }, - type: 'fiat', - }, - { - value: 'USDC', - fractional_digits: 2, - is_deposit_suspended: 0, - is_suspended: 0, - is_withdrawal_suspended: 0, - name: 'USD Coin', - stake_default: 10, - transfer_between_accounts: { - fees: { - AUD: 2, - }, - limits: { - max: 5001.52, - min: 1, - }, - limits_dxtrade: { - max: 2500.76, - min: 0.01, - }, - limits_mt5: { - max: 15004.55, - min: 0.01, - }, - }, - type: 'crypto', - }, - { - value: 'eUSDT', - fractional_digits: 2, - is_deposit_suspended: 0, - is_suspended: 0, - is_withdrawal_suspended: 0, - name: 'Tether ERC20', - stake_default: 10, - transfer_between_accounts: { - fees: { - AUD: 2, - }, - limits: { - max: 5001.78, - min: 1, - }, - limits_dxtrade: { - max: 2500.89, - min: 0.01, - }, - limits_mt5: { - max: 15005.33, - min: 0.01, - }, - }, - type: 'crypto', - }, - ], - has_fiat: true, + const mock_props: React.ComponentProps = { value: { currency: '', }, validate: jest.fn(), is_virtual: true, - available_crypto_currencies: [ - { - value: 'eUSDT', - fractional_digits: 2, - is_deposit_suspended: 0, - is_suspended: 0, - is_withdrawal_suspended: 0, - name: 'Tether ERC20', - stake_default: 10, - transfer_between_accounts: { - fees: { - AUD: 2, - }, - limits: { - max: 5001.78, - min: 1, - }, - limits_dxtrade: { - max: 2500.89, - min: 0.01, - }, - limits_mt5: { - max: 15005.33, - min: 0.01, - }, - }, - type: 'crypto', - }, - ], getCurrentStep: jest.fn(() => 1), onSave: jest.fn(), onCancel: jest.fn(), - real_account_signup: { - active_modal_index: -1, - previous_currency: '', - current_currency: '', - success_message: '', - error_message: '', - error_code: 2, - }, goToNextStep: jest.fn(), goToStep: jest.fn(), - resetRealAccountSignupParams: jest.fn(), onSubmit: jest.fn(), goToPreviousStep: jest.fn(), has_cancel: false, - has_currency: false, - has_real_account: false, has_wallet_account: false, - is_appstore: false, - is_dxtrade_allowed: false, - is_eu: false, - is_mt5_allowed: false, set_currency: false, - onSubmitEnabledChange: jest.fn(), - real_account_signup_target: '', }; const fiat_msg = @@ -221,7 +41,7 @@ describe('', () => { const mt5_non_eu = 'You are limited to one fiat account. You won’t be able to change your account currency if you have already made your first deposit or created a real Deriv MT5 account.'; - const runCommonTests = msg => { + const runCommonTests = (msg: string) => { expect(screen.getByRole('heading', { name: /fiat currencies/i })).toBeInTheDocument(); expect(screen.getByRole('radio', { name: /us dollar \(usd\)/i })).toBeInTheDocument(); expect(screen.getByRole('radio', { name: /euro \(eur\)/i })).toBeInTheDocument(); @@ -241,78 +61,302 @@ describe('', () => { expect(screen.getByText(msg)).toBeInTheDocument(); expect(screen.getByRole('button', { name: /next/i })).toBeEnabled(); }; + const store = mockStore({ + client: { + accounts: { + VRTC90000010: { + account_type: 'trading', + currency: 'USD', + is_disabled: 0, + is_virtual: 1, + landing_company_shortcode: 'virtual', + trading: {}, + token: '', + email: '', + session_start: 1651059038, + landing_company_name: 'virtual', + residence: 'es', + balance: 10000, + accepted_bch: 0, + }, + }, + upgradeable_currencies: [ + { + value: 'EUR', + fractional_digits: 2, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'Euro', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 0, + }, + limits: { + max: 4717.96, + min: 0.94, + }, + limits_dxtrade: { + max: 2358.45, + min: 0.01, + }, + limits_mt5: { + max: 14150.68, + min: 0.01, + }, + }, + type: 'fiat', + }, + { + value: 'USD', + fractional_digits: 2, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'US Dollar', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 0, + }, + limits: { + max: 5000, + min: 1, + }, + limits_dxtrade: { + max: 2500, + min: 0.01, + }, + limits_mt5: { + max: 15000, + min: 0.01, + }, + }, + type: 'fiat', + }, + { + value: 'USDC', + fractional_digits: 2, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'USD Coin', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + }, + limits: { + max: 5001.52, + min: 1, + }, + limits_dxtrade: { + max: 2500.76, + min: 0.01, + }, + limits_mt5: { + max: 15004.55, + min: 0.01, + }, + }, + type: 'crypto', + }, + { + value: 'eUSDT', + fractional_digits: 2, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'Tether ERC20', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + }, + limits: { + max: 5001.78, + min: 1, + }, + limits_dxtrade: { + max: 2500.89, + min: 0.01, + }, + limits_mt5: { + max: 15005.33, + min: 0.01, + }, + }, + type: 'crypto', + }, + ], + available_crypto_currencies: [ + { + value: 'eUSDT', + fractional_digits: 2, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'Tether ERC20', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + }, + limits: { + max: 5001.78, + min: 1, + }, + limits_dxtrade: { + max: 2500.89, + min: 0.01, + }, + limits_mt5: { + max: 15005.33, + min: 0.01, + }, + }, + type: 'crypto', + }, + ], + }, + ui: { + real_account_signup: { + active_modal_index: -1, + previous_currency: '', + current_currency: '', + success_message: '', + error_message: '', + error_code: '2', + }, + }, + }); + + const renderComponent = ({ props = mock_props, store_config = store }) => { + return render( + + + + ); + }; + + it('should render Currency selector', () => { + renderComponent({}); - it('should render currencyselector', () => { - render(); expect(screen.getByTestId('currency_selector_form')).toBeInTheDocument(); }); it('should render Fiat currencies and submit the form', async () => { - render(); + renderComponent({}); + runCommonTests(fiat_msg); fireEvent.click(screen.getByRole('button', { name: /next/i })); await waitFor(() => { - expect(props.onSubmit).toHaveBeenCalled(); - expect(props.onSubmit).toHaveBeenCalledWith( + expect(mock_props.onSubmit).toHaveBeenCalled(); + expect(mock_props.onSubmit).toHaveBeenCalledWith( 0, { currency: 'USD' }, expect.any(Function), - props.goToNextStep + mock_props.goToNextStep ); }); }); it('should disable fiat if user already have a fiat ', () => { - const new_props = { - ...props, - accounts: { - VRTC90000010: { - account_type: 'trading', - currency: 'USD', - is_disabled: 0, - is_virtual: 1, - landing_company_shortcode: 'svg', - trading: {}, - token: '', - email: '', - session_start: 1651059038, - excluded_until: '', - landing_company_name: 'svg', - residence: 'es', - balance: 10000, - accepted_bch: 0, + const new_store: TStores = { + ...store, + client: { + ...store.client, + accounts: { + VRTC90000010: { + account_type: 'trading', + currency: 'USD', + is_disabled: 0, + is_virtual: 1, + landing_company_shortcode: 'svg', + trading: {}, + token: '', + email: '', + session_start: 1651059038, + excluded_until: '', + landing_company_name: 'svg', + residence: 'es', + balance: 10000, + accepted_bch: 0, + }, }, + has_active_real_account: true, + has_fiat: true, + }, + ui: { + ...store.ui, + real_account_signup_target: 'svg', }, - has_real_account: true, - real_account_signup_target: 'svg', }; - render(); + renderComponent({ store_config: new_store }); expect(screen.getByRole('radio', { name: /us dollar \(usd\)/i })).toBeDisabled(); expect(screen.getByRole('radio', { name: /euro \(eur\)/i })).toBeDisabled(); }); + it('should render Fiat currencies when is_dxtrade_allowed and is_mt5_allowed are true', () => { - render(); + const new_store = { + ...store, + client: { + ...store.client, + is_dxtrade_allowed: true, + is_mt5_allowed: true, + }, + }; + renderComponent({ store_config: new_store }); runCommonTests(dxtrade_non_eu_msg); }); it('should render Fiat currencies when is_dxtrade_allowed,is_eu and is_mt5_allowed are true', () => { - render(); + const new_store: TStores = { + ...store, + client: { + ...store.client, + is_dxtrade_allowed: true, + is_mt5_allowed: true, + is_eu: true, + }, + }; + renderComponent({ store_config: new_store }); runCommonTests(dxtrade_eu_msg); }); it('should render Fiat currencies when is_mt5_allowed and is_eu are true', () => { - render(); + const new_store: TStores = { + ...store, + client: { + ...store.client, + is_mt5_allowed: true, + is_eu: true, + }, + }; + renderComponent({ store_config: new_store }); runCommonTests(mt5_eu); }); it('should render Fiat currencies when is_mt5_allowed is true', () => { - render(); + const new_store: TStores = { + ...store, + client: { + ...store.client, + is_mt5_allowed: true, + }, + }; + renderComponent({ store_config: new_store }); runCommonTests(mt5_non_eu); }); it('should render Cryptocurrencies and submit the form ', async () => { - render(); + const new_props: React.ComponentProps = { + ...mock_props, + set_currency: true, + }; + renderComponent({ props: new_props }); expect(screen.getByRole('heading', { name: /cryptocurrencies/i })).toBeInTheDocument(); expect(screen.getByRole('radio', { name: /tether erc20 \(eusdt\)/i })).toBeInTheDocument(); expect(screen.getByRole('radio', { name: /usd coin \(usdc\)/i })).toBeInTheDocument(); @@ -332,57 +376,54 @@ describe('', () => { fireEvent.click(set_currency_btn); await waitFor(() => { - expect(props.onSubmit).toHaveBeenCalledWith( + expect(mock_props.onSubmit).toHaveBeenCalledWith( 0, { currency: 'eUSDT' }, expect.any(Function), - props.goToNextStep + mock_props.goToNextStep ); }); }); it('should submit the form when getCurrentStep is not passed ', async () => { - const new_props: TCurrencySelector = { ...props }; - render(); + renderComponent({}); runCommonTests(fiat_msg); fireEvent.click(screen.getByRole('button', { name: /next/i })); await waitFor(() => { - expect(props.onSubmit).toHaveBeenCalled(); - }); - }); - - it('should render the selector__container with proper div height when appstore is true', () => { - (isMobile as jest.Mock).mockReturnValue(true); - (isDesktop as jest.Mock).mockReturnValue(false); - Object.defineProperty(window, 'innerHeight', { - writable: true, - configurable: true, - value: 150, + expect(mock_props.onSubmit).toHaveBeenCalled(); }); - render( - - - - ); - - expect(screen.getByTestId('currency_selector_form').childNodes[0]).toHaveStyle('height: calc(150px - 222px);'); }); it('should render the selector__container with proper div height', () => { - (isMobile as jest.Mock).mockReturnValue(true); - (isDesktop as jest.Mock).mockReturnValue(false); Object.defineProperty(window, 'innerHeight', { writable: true, configurable: true, value: 150, }); - render(); + const new_store = { + ...store, + client: { + ...store.client, + has_active_real_account: true, + }, + ui: { + ...store.ui, + is_desktop: false, + is_mobile: true, + }, + }; + renderComponent({ store_config: new_store }); expect(screen.getByTestId('currency_selector_form').childNodes[0]).toHaveStyle('height: calc(150px - 89px);'); }); it('should call handleCancel when previous button is called', () => { - render(); + const new_props: React.ComponentProps = { + ...mock_props, + has_wallet_account: true, + has_cancel: true, + }; + renderComponent({ props: new_props }); const usdc: HTMLInputElement = screen.getByRole('radio', { name: /usd coin \(usdc\)/i }); expect(usdc.checked).toEqual(false); @@ -393,28 +434,39 @@ describe('', () => { const prev_btn = screen.getByRole('button', { name: /previous/i }); expect(prev_btn).toBeInTheDocument(); fireEvent.click(prev_btn); - expect(props.onSave).toHaveBeenCalledWith(0, { currency: 'USDC' }); + expect(mock_props.onSave).toHaveBeenCalledWith(0, { currency: 'USDC' }); }); it('should bypass to next step in case of personal details form error', () => { - const real_account_signup = { - ...props.real_account_signup, - error_details: { first_name: 'numbers not allowed' }, + const new_store: TStores = { + ...store, + ui: { + ...store.ui, + real_account_signup: { + ...store.ui.real_account_signup, + error_details: { first_name: 'numbers not allowed' }, + }, + }, }; + renderComponent({ store_config: new_store }); - render(); - expect(props.goToNextStep).toHaveBeenCalled(); - expect(props.resetRealAccountSignupParams).toHaveBeenCalled(); + expect(mock_props.goToNextStep).toHaveBeenCalled(); + expect(store.ui.resetRealAccountSignupParams).toHaveBeenCalled(); }); it('should bypass to address step in case of address details form error', () => { - const real_account_signup = { - ...props.real_account_signup, - error_details: { address_line_1: 'po box is not allowed' }, + const new_store: TStores = { + ...store, + ui: { + ...store.ui, + real_account_signup: { + ...store.ui.real_account_signup, + error_details: { address_line_1: 'po box is not allowed' }, + }, + }, }; - - render(); - expect(props.goToStep).toHaveBeenCalledWith(3); - expect(props.resetRealAccountSignupParams).toHaveBeenCalled(); + renderComponent({ store_config: new_store }); + expect(mock_props.goToStep).toHaveBeenCalledWith(3); + expect(store.ui.resetRealAccountSignupParams).toHaveBeenCalled(); }); }); diff --git a/packages/account/src/Components/currency-selector/__tests__/ust-popover.spec.tsx b/packages/account/src/Components/currency-selector/__tests__/ust-popover.spec.tsx new file mode 100644 index 000000000000..c19deee7262d --- /dev/null +++ b/packages/account/src/Components/currency-selector/__tests__/ust-popover.spec.tsx @@ -0,0 +1,28 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import USTPopover from '../ust-popover'; + +jest.mock('@deriv/components', () => ({ + ...jest.requireActual('@deriv/components'), + Popover: jest.fn(props => {props.message}), +})); + +describe('', () => { + it('should render USTPopover with UST info', () => { + render(); + + expect(screen.getByText(/Tether as an Omni token \(USDT\)/i)).toBeInTheDocument(); + }); + + it('should render USTPopover with tUSDT info', () => { + render(); + + expect(screen.getByText(/Tether as a TRC20 token \(tUSDT\)/i)).toBeInTheDocument(); + }); + + it('should render USTPopover with default info', () => { + render(); + + expect(screen.getByText(/Tether as an ERC20 token \(eUSDT\)/i)).toBeInTheDocument(); + }); +}); diff --git a/packages/account/src/Components/currency-selector/currency-selector.tsx b/packages/account/src/Components/currency-selector/currency-selector.tsx index 37d9b0b89264..c24a372da174 100644 --- a/packages/account/src/Components/currency-selector/currency-selector.tsx +++ b/packages/account/src/Components/currency-selector/currency-selector.tsx @@ -1,294 +1,313 @@ +import React from 'react'; import classNames from 'classnames'; -import React, { HTMLAttributes, RefObject } from 'react'; -import { Field, Formik, FormikHandlers, FormikProps, FormikState, FormikValues } from 'formik'; +import { Field, Formik, FormikHandlers, FormikProps, FormikState } from 'formik'; +import { WebsiteStatus } from '@deriv/api-types'; import { AutoHeightWrapper, FormSubmitButton, Div100vhContainer, Modal, ThemedScrollbars } from '@deriv/components'; -import { - getPlatformSettings, - isMobile, - isDesktop, - reorderCurrencies, - PlatformContext, - getAddressDetailsFields, -} from '@deriv/shared'; +import { getPlatformSettings, reorderCurrencies, getAddressDetailsFields } from '@deriv/shared'; +import { observer, useStore } from '@deriv/stores'; import { localize, Localize } from '@deriv/translations'; -import RadioButtonGroup from './radio-button-group'; import RadioButton from './radio-button'; +import RadioButtonGroup from './radio-button-group'; import { splitValidationResultTypes } from '../real-account-signup/helpers/utils'; -import { TAuthAccountInfo, TCurrencyConfig, TRealAccount, TFormValidation } from 'Types'; export const Hr = () =>
; +const CURRENCY_TYPE: Record = { + CRYPTO: 'crypto', + FIAT: 'fiat', +}; + +export type TCurrencySelectorFormProps = { + currency: string; +}; + type TCurrencySelectorExtend = { - accounts: { [key: string]: TAuthAccountInfo }; - available_crypto_currencies: TCurrencyConfig[]; getCurrentStep: () => number; goToNextStep: () => void; goToStep: (step: number) => void; goToPreviousStep: () => void; has_cancel: boolean; - has_currency: boolean; - has_fiat: boolean; - has_real_account: boolean; has_wallet_account: boolean; - is_appstore: boolean; - is_dxtrade_allowed: boolean; - is_eu: boolean; is_virtual: boolean; - is_mt5_allowed: boolean; - legal_allowed_currencies: TCurrencyConfig[]; onCancel: (current_step: number, goToPreviousStep: () => void) => void; - onSave: (current_step: number, values: FormikValues) => void; + onSave: (current_step: number, values: TCurrencySelectorFormProps) => void; onSubmit: ( current_step: number | null, - values: FormikValues, + values: TCurrencySelectorFormProps, action: (isSubmitting: boolean) => void, next_step: () => void ) => void; - onSubmitEnabledChange: (is_submit_disabled: boolean) => void; - real_account_signup: TRealAccount; - real_account_signup_target: string; - resetRealAccountSignupParams: () => void; - selected_step_ref?: RefObject>; + selected_step_ref?: React.RefObject>; set_currency: boolean; - validate: (values: FormikValues) => FormikValues; - value: FormikValues; + validate: (values: TCurrencySelectorFormProps) => TCurrencySelectorFormProps; + value: TCurrencySelectorFormProps; }; -type TCurrencySelector = HTMLAttributes & TCurrencySelectorExtend; +type TCurrencySelector = React.HTMLAttributes & TCurrencySelectorExtend; -const CurrencySelector = ({ - getCurrentStep, - goToNextStep, - goToStep, - has_currency, - has_real_account, - legal_allowed_currencies, - onSubmit, - onSave, - onCancel, - goToPreviousStep, - real_account_signup, - real_account_signup_target, - resetRealAccountSignupParams, - set_currency, - validate, - has_cancel = false, - selected_step_ref, - onSubmitEnabledChange, - has_wallet_account, - is_dxtrade_allowed, - is_mt5_allowed, - available_crypto_currencies, - has_fiat, - accounts, - is_eu, - ...props -}: TCurrencySelector) => { - const { is_appstore } = React.useContext(PlatformContext); - const crypto = legal_allowed_currencies.filter((currency: TCurrencyConfig) => currency.type === 'crypto'); - const fiat = legal_allowed_currencies.filter((currency: TCurrencyConfig) => currency.type === 'fiat'); - const [is_bypass_step, setIsBypassStep] = React.useState(false); - const is_submit_disabled_ref = React.useRef(true); +/** + * Currency selector component to select the Account currency + * @name CurrencySelector + * @param getCurrentStep - Get the current step + * @param goToNextStep - Go to the next step + * @param goToStep - Go to a specific step + * @param goToPreviousStep - Go to the previous step + * @param has_cancel - Has cancel button + * @param has_wallet_account - Has wallet account + * @param is_virtual - Is virtual account + * @param onCancel - To handle click on cancel button + * @param onSave - To handle click on save button + * @param onSubmit - To handle click on submit button + * @param selected_step_ref - Ref of the selected step + * @param set_currency - Is current set + * @param alidate - To validate the form + * @param alue - Value of the form + * @returns React node + */ +const CurrencySelector = observer( + ({ + getCurrentStep, + goToNextStep, + goToStep, + onSubmit, + onSave, + onCancel, + goToPreviousStep, + set_currency, + validate, + has_cancel = false, + selected_step_ref, + has_wallet_account, + value, + }: TCurrencySelector) => { + const { client, ui } = useStore(); + + const { + currency, + has_active_real_account: has_real_account, + upgradeable_currencies: legal_allowed_currencies, + available_crypto_currencies, + is_dxtrade_allowed, + is_mt5_allowed, + has_fiat, + accounts, + is_eu, + } = client; + + const has_currency = Boolean(currency); + + const { real_account_signup, real_account_signup_target, resetRealAccountSignupParams, is_desktop, is_mobile } = + ui; + + // Wrapped with String() to avoid type mismatch + const crypto = legal_allowed_currencies.filter( + selected_currency => String(selected_currency.type) === CURRENCY_TYPE.CRYPTO + ); - const should_disable_fiat = !!Object.values(accounts).filter( - item => item.landing_company_shortcode === real_account_signup_target - ).length; + // Wrapped with String() to avoid type mismatch + const fiat = legal_allowed_currencies.filter( + selected_currency => String(selected_currency.type) === CURRENCY_TYPE.FIAT + ); + const [is_bypass_step, setIsBypassStep] = React.useState(false); - const isSubmitDisabled = (values: FormikValues) => { - return selected_step_ref?.current?.isSubmitting || !values.currency; - }; + const should_disable_fiat = !!Object.values(accounts).filter( + item => item.landing_company_shortcode === real_account_signup_target + ).length; - const checkSubmitStatus = (values: FormikValues) => { - const is_submit_disabled = isSubmitDisabled(values); + const isSubmitDisabled = (values: TCurrencySelectorFormProps) => { + return selected_step_ref?.current?.isSubmitting || !values.currency; + }; - if (is_submit_disabled_ref.current !== is_submit_disabled) { - is_submit_disabled_ref.current = is_submit_disabled; - onSubmitEnabledChange?.(!is_submit_disabled); - } - }; + const handleCancel = (values: TCurrencySelectorFormProps) => { + const current_step = getCurrentStep() - 1; + onSave(current_step, values); + onCancel(current_step, goToPreviousStep); + }; - const handleCancel = (values: FormikValues) => { - const current_step = getCurrentStep() - 1; - onSave(current_step, values); - onCancel(current_step, goToPreviousStep); - }; + const handleValidate = (values: TCurrencySelectorFormProps) => { + const { errors } = splitValidationResultTypes(validate(values)); + return errors; + }; - const handleValidate = (values: FormikValues) => { - checkSubmitStatus(values); - const { errors }: Partial = splitValidationResultTypes(validate(values)); - return errors; - }; + // In case of form error bypass to update personal data + React.useEffect(() => { + if (real_account_signup?.error_code) { + setIsBypassStep(true); + } + }, [real_account_signup?.error_code]); - // In case of form error bypass to update personal data - React.useEffect(() => { - if (real_account_signup?.error_code) { - setIsBypassStep(true); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + React.useEffect(() => { + if (is_bypass_step && real_account_signup?.error_details) { + const keys = Object.keys(real_account_signup?.error_details); + const route_to_address_details = Object.keys(getAddressDetailsFields()).filter(item => + keys.includes(item) + ); + if (route_to_address_details?.length > 0) { + goToStep(3); + } else { + goToNextStep(); + } + resetRealAccountSignupParams(); + setIsBypassStep(false); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [is_bypass_step]); - React.useEffect(() => { - if (is_bypass_step && real_account_signup?.error_details) { - const keys = Object.keys(real_account_signup?.error_details); - const route_to_address_details = Object.keys(getAddressDetailsFields()).filter(item => keys.includes(item)); - if (route_to_address_details?.length > 0) goToStep(3); - else { - goToNextStep(); + const getHeightOffset = () => { + if (!has_currency && has_real_account) { + return '89px'; } - resetRealAccountSignupParams(); - setIsBypassStep(false); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [is_bypass_step]); + return '159px'; + }; - const getHeightOffset = () => { - if (is_appstore) { - return '222px'; - } else if (!has_currency && has_real_account) { - return '89px'; - } - return '159px'; - }; + const getSubmitLabel = () => { + if (set_currency) { + return localize('Set currency'); + } else if (has_wallet_account) { + return localize('Finish'); + } + return localize('Next'); + }; - const getSubmitLabel = () => { - if (set_currency) { - return localize('Set currency'); - } else if (has_wallet_account) { - return localize('Finish'); - } - return localize('Next'); - }; + const description = React.useMemo(() => { + const dmt5_label = is_eu ? localize('CFDs') : localize('Deriv MT5'); + const platform_name_dxtrade = getPlatformSettings('dxtrade').name; - const description = React.useMemo(() => { - const dmt5_label = is_eu ? localize('CFDs') : localize('Deriv MT5'); - const platform_name_dxtrade = getPlatformSettings('dxtrade').name; + if (is_dxtrade_allowed && is_mt5_allowed) { + return ( + + ); + } else if (!is_dxtrade_allowed && is_mt5_allowed) { + return ( + + ); + } - if (is_dxtrade_allowed && is_mt5_allowed) { return ( - + ); - } else if (!is_dxtrade_allowed && is_mt5_allowed) { - return ( - - ); - } + }, [is_eu, is_dxtrade_allowed, is_mt5_allowed]); return ( - - ); - }, [is_eu, is_dxtrade_allowed, is_mt5_allowed]); - - return ( - { - onSubmit(getCurrentStep ? getCurrentStep() - 1 : null, values, actions.setSubmitting, goToNextStep); - }} - validate={handleValidate} - > - {({ handleSubmit, values }: FormikState & FormikHandlers) => ( - - {({ setRef, height }: { setRef: (instance: HTMLFormElement | null) => void; height: number }) => ( -
- { + onSubmit(getCurrentStep ? getCurrentStep() - 1 : null, values, actions.setSubmitting, goToNextStep); + }} + validate={handleValidate} + > + {({ handleSubmit, values }: FormikState & FormikHandlers) => ( + + {({ + setRef, + height, + }: { + setRef: (instance: HTMLFormElement | null) => void; + height: number; + }) => ( + - - {!!reorderCurrencies(fiat)?.length && ( - - - {reorderCurrencies(fiat).map((currency: FormikValues) => ( - - ))} - - {!!reorderCurrencies(crypto, 'crypto')?.length &&
} -
- )} - {!!reorderCurrencies(crypto, 'crypto')?.length && ( - - - {reorderCurrencies(crypto, 'crypto').map((currency: FormikValues) => ( - value === currency.value - )?.length === 0 - } - name='currency' - id={currency.value} - label={currency.name} - /> - ))} - - - )} -
-
- - handleCancel(values), - } - : {})} - /> - -
- )} -
- )} -
- ); -}; -export type { TCurrencySelector }; + + + {!!fiat?.length && ( + + + {reorderCurrencies(fiat).map( + (avbl_currency: WebsiteStatus['currencies_config']) => ( + + ) + )} + + {!!reorderCurrencies(crypto, 'crypto')?.length &&
} +
+ )} + {!!reorderCurrencies(crypto, 'crypto')?.length && ( + + + {reorderCurrencies(crypto, 'crypto').map(avbl_currency => ( + + crypto_data.value === avbl_currency.value + )?.length === 0 + } + name='currency' + id={avbl_currency.value} + label={avbl_currency.name} + /> + ))} + + + )} +
+
+ + handleCancel(values), + } + : {})} + /> + + + )} + + )} + + ); + } +); export default CurrencySelector; diff --git a/packages/account/src/Components/currency-selector/index.js b/packages/account/src/Components/currency-selector/index.ts similarity index 100% rename from packages/account/src/Components/currency-selector/index.js rename to packages/account/src/Components/currency-selector/index.ts diff --git a/packages/account/src/Components/currency-selector/radio-button-group.tsx b/packages/account/src/Components/currency-selector/radio-button-group.tsx index 31ae2ab10ead..239c7b4000ad 100644 --- a/packages/account/src/Components/currency-selector/radio-button-group.tsx +++ b/packages/account/src/Components/currency-selector/radio-button-group.tsx @@ -13,10 +13,22 @@ export type TRadioButtonGroup = { has_fiat?: boolean; }; +/** + * Wrapper component for RadioButton + * @name RadioButtonGroup + * @param {string} className - class name for styling + * @param {boolean} is_fiat - is fiat currency + * @param {boolean} is_title_enabled - is title enabled + * @param {number} item_count - number of items + * @param {string} label - label for the radio button + * @param {React.ReactNode} description - description for the radio button + * @param {boolean} has_fiat - has fiat currency + * @returns {React.ReactNode} - returns a React node + */ const RadioButtonGroup = ({ + children, label, className, - children, is_title_enabled = true, is_fiat, item_count, diff --git a/packages/account/src/Components/currency-selector/radio-button.tsx b/packages/account/src/Components/currency-selector/radio-button.tsx index 903646d0dfe4..ccc2fd2110a0 100644 --- a/packages/account/src/Components/currency-selector/radio-button.tsx +++ b/packages/account/src/Components/currency-selector/radio-button.tsx @@ -1,60 +1,32 @@ -import React, { InputHTMLAttributes, AllHTMLAttributes, ReactElement } from 'react'; +import React, { AllHTMLAttributes } from 'react'; import classNames from 'classnames'; -import { Localize } from '@deriv/translations'; -import { Popover, Icon } from '@deriv/components'; +import { Icon } from '@deriv/components'; import { getCurrencyDisplayCode } from '@deriv/shared'; - -export type TUSTPopover = { - id: string; -}; +import USTPopover from './ust-popover'; type TRadioButtonExtend = { - field: InputHTMLAttributes; + field: React.InputHTMLAttributes; icon?: string; second_line_label?: string; + id: string; + label: string; + onClick?: (e: React.MouseEvent) => void; }; export type TRadioButton = AllHTMLAttributes & TRadioButtonExtend; -const USTPopover = ({ id }: TUSTPopover) => { - let popover_message: ReactElement | undefined; - if (/^UST$/i.test(id)) { - popover_message = ( - ]} - /> - ); - } else if (/^tUSDT$/i.test(id)) { - popover_message = ( - - ); - } else { - popover_message = ( - - ); - } - - return ( - - ); -}; +/** + * RadioButton component to select currency + * @name RadioButton + * @param {React.InputHTMLAttributes} field - field props given by Formik + * @param {string} icon - icon name + * @param {string} id - currency id + * @param {string} label - currency name + * @param {string} second_line_label - currency code + * @param {Function} onClick - function to be called on click + * @param {AllHTMLAttributes} props - other props to be passed + * @returns {React.ReactNode} - returns a React node + */ const RadioButton = ({ field: { name, value, onChange, onBlur }, diff --git a/packages/account/src/Components/currency-selector/ust-popover.tsx b/packages/account/src/Components/currency-selector/ust-popover.tsx new file mode 100644 index 000000000000..0a7f2443b676 --- /dev/null +++ b/packages/account/src/Components/currency-selector/ust-popover.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import { Popover } from '@deriv/components'; +import { Localize } from '@deriv/translations'; + +export type TUSTPopover = { + id: string; +}; + +const USTPopover = ({ id }: TUSTPopover) => { + let popover_message: React.ReactElement; + if (/^UST$/i.test(id)) { + popover_message = ( + ]} + /> + ); + } else if (/^tUSDT$/i.test(id)) { + popover_message = ( + + ); + } else { + popover_message = ( + + ); + } + + return ( + + ); +}; + +export default USTPopover; diff --git a/packages/account/src/Components/financial-details/__tests__/financial-details.spec.tsx b/packages/account/src/Components/financial-details/__tests__/financial-details.spec.tsx index 0096dd892061..b7683eef5b7f 100644 --- a/packages/account/src/Components/financial-details/__tests__/financial-details.spec.tsx +++ b/packages/account/src/Components/financial-details/__tests__/financial-details.spec.tsx @@ -1,8 +1,9 @@ +import { FormikValues } from 'formik'; import React from 'react'; -import { fireEvent, render, screen, waitFor } from '@testing-library/react'; import { isDesktop, isMobile } from '@deriv/shared'; -import FinancialDetails, { TFinancialInformationAndTradingExperience, TFinancialDetails } from '../financial-details'; -import { FormikValues } from 'formik'; +import { fireEvent, render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import FinancialDetails from '../financial-details'; jest.mock('@deriv/shared', () => ({ ...jest.requireActual('@deriv/shared'), @@ -14,48 +15,8 @@ const modal_root_el = document.createElement('div'); modal_root_el.setAttribute('id', 'modal_root'); document.body.appendChild(modal_root_el); -const fields_enums: TFinancialInformationAndTradingExperience = { - account_turnover_enum: [ - { value: 'account turnover 1', text: 'account turnover 1' }, - { value: 'account turnover 2', text: 'account turnover 2' }, - ], - education_level_enum: [ - { value: 'education level 1', text: 'education level 1' }, - { value: 'education level 2', text: 'education level 2' }, - ], - employment_industry_enum: [ - { value: 'employment industry 1', text: 'employment industry 1' }, - { value: 'employment industry 2', text: 'employment industry 2' }, - ], - estimated_worth_enum: [ - { value: 'estimated worth 1', text: 'estimated worth 1' }, - { value: 'estimated worth 2', text: 'estimated worth 2' }, - ], - income_source_enum: [ - { value: 'income source 1', text: 'income source 1' }, - { value: 'income source 2', text: 'income source 2' }, - ], - net_income_enum: [ - { value: 'net income 1', text: 'net income 1' }, - { value: 'net income 2', text: 'net income 2' }, - ], - occupation_enum: [ - { value: 'occupation 1', text: 'occupation 1' }, - { value: 'occupation 2', text: 'occupation 2' }, - ], - - source_of_wealth_enum: [ - { value: 'source of wealth 1', text: 'source of wealth 1' }, - { value: 'source of wealth 2', text: 'source of wealth 2' }, - ], - employment_status_enum: [ - { value: 'employment status 1', text: 'employment status 1' }, - { value: 'employment status 2', text: 'employment status 2' }, - ], -}; - describe('', () => { - let mock_props: TFinancialDetails & TFinancialInformationAndTradingExperience = { + const mock_props: React.ComponentProps = { getCurrentStep: jest.fn(), goToNextStep: jest.fn(), onCancel: jest.fn(), @@ -64,32 +25,8 @@ describe('', () => { validate: jest.fn(() => ({ errors: {} })), goToPreviousStep: jest.fn(() => ({ errors: {} })), value: {}, - income_source_enum: [{}], - employment_status_enum: [{}], - employment_industry_enum: [{}], - occupation_enum: [{}], - source_of_wealth_enum: [{}], - education_level_enum: [{}], - net_income_enum: [{}], - estimated_worth_enum: [{}], - account_turnover_enum: [{}], - forex_trading_experience_enum: [{}], - forex_trading_frequency_enum: [{}], - binary_options_trading_experience_enum: [{}], - binary_options_trading_frequency_enum: [{}], - cfd_trading_experience_enum: [{}], - cfd_trading_frequency_enum: [{}], - other_instruments_trading_experience_enum: [{}], - other_instruments_trading_frequency_enum: [{}], }; - beforeEach(() => { - mock_props = { - ...mock_props, - ...fields_enums, - }; - }); - const fieldsRenderCheck = () => { expect(screen.getByText('Anticipated annual turnover')).toBeInTheDocument(); expect(screen.getByText('Estimated net worth')).toBeInTheDocument(); @@ -107,7 +44,7 @@ describe('', () => { fieldsRenderCheck(); const inputs = screen.getAllByTestId('dti_dropdown_display'); - expect(inputs.length).toBe(8); + expect(inputs).toHaveLength(8); expect(screen.getByText('Next')).toBeInTheDocument(); expect(screen.getByText('Previous')).toBeInTheDocument(); @@ -122,7 +59,7 @@ describe('', () => { fieldsRenderCheck(); const inputs = screen.getAllByRole('combobox'); - expect(inputs.length).toBe(8); + expect(inputs).toHaveLength(8); expect(screen.getByText('Next')).toBeInTheDocument(); expect(screen.getByText('Previous')).toBeInTheDocument(); @@ -185,4 +122,19 @@ describe('', () => { expect(mock_props.onSubmit).toHaveBeenCalledTimes(1); }); }); + + it('should change the selected value when user changes the value in the dropdown', () => { + (isDesktop as jest.Mock).mockReturnValue(false); + (isMobile as jest.Mock).mockReturnValue(true); + + render(); + + const select_inputs = screen.getAllByRole('combobox'); + + const income_source_select = select_inputs.find((option: FormikValues) => option.name === 'income_source'); + + userEvent.selectOptions(income_source_select as HTMLElement, 'Salaried Employee'); + + expect(screen.getByRole('option', { name: 'Salaried Employee' }).selected).toBe(true); + }); }); diff --git a/packages/account/src/Components/financial-details/financial-details-partials.tsx b/packages/account/src/Components/financial-details/financial-details-partials.tsx index 37bfc4a8e149..1887f19849d0 100644 --- a/packages/account/src/Components/financial-details/financial-details-partials.tsx +++ b/packages/account/src/Components/financial-details/financial-details-partials.tsx @@ -1,966 +1,135 @@ -import { Field, FormikProps, FormikValues } from 'formik'; +import { Field, FormikValues, useFormikContext } from 'formik'; import React from 'react'; import { DesktopWrapper, MobileWrapper, Dropdown, SelectNative } from '@deriv/components'; import { localize } from '@deriv/translations'; - -type TEmploymentStatus = { - employment_status_enum: object[]; -}; - -export const EmploymentStatus = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - employment_status_enum, -}: Partial> & TEmploymentStatus) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('employment_status', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TIncomeSource = { - income_source_enum: object[]; -}; - -export const IncomeSource = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - income_source_enum, -}: Partial> & TIncomeSource) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('income_source', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TEmploymentIndustry = { - employment_industry_enum: object[]; -}; - -export const EmploymentIndustry = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - employment_industry_enum, -}: Partial> & TEmploymentIndustry) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('employment_industry', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TOccupation = { - occupation_enum: object[]; -}; - -export const Occupation = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - occupation_enum, -}: Partial> & TOccupation) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('occupation', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TSourceOfWealth = { - source_of_wealth_enum: object[]; -}; - -export const SourceOfWealth = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - source_of_wealth_enum, -}: Partial> & TSourceOfWealth) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('source_of_wealth', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TEducationLevel = { - education_level_enum: object[]; -}; - -export const EducationLevel = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - education_level_enum, -}: Partial> & TEducationLevel) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('education_level', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TNetIncome = { - net_income_enum: object[]; -}; - -export const NetIncome = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - net_income_enum, -}: Partial> & TNetIncome) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('net_income', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TEstimatedWorth = { - estimated_worth_enum: object[]; -}; - -export const EstimatedWorth = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - estimated_worth_enum, -}: Partial> & TEstimatedWorth) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('estimated_worth', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TAccountTurnover = { - account_turnover_enum: object[]; -}; - -export const AccountTurnover = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - account_turnover_enum, -}: Partial> & TAccountTurnover) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('account_turnover', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TForexTradingExperience = { - forex_trading_experience_enum?: object[]; -}; - -export const ForexTradingExperience = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - forex_trading_experience_enum, -}: Partial> & TForexTradingExperience) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('forex_trading_experience', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TForexTradingFrequency = { - forex_trading_frequency_enum?: object[]; -}; - -export const ForexTradingFrequency = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - forex_trading_frequency_enum, -}: Partial> & TForexTradingFrequency) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('forex_trading_frequency', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TBinaryOptionsTradingExperience = { - binary_options_trading_experience_enum?: object[]; -}; - -export const BinaryOptionsTradingExperience = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - binary_options_trading_experience_enum, -}: Partial> & TBinaryOptionsTradingExperience) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('binary_options_trading_experience', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TBinaryOptionsTradingFrequency = { - binary_options_trading_frequency_enum?: object[]; -}; - -export const BinaryOptionsTradingFrequency = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - binary_options_trading_frequency_enum, -}: Partial> & TBinaryOptionsTradingFrequency) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('binary_options_trading_frequency', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TCFDTradingExperience = { - cfd_trading_experience_enum?: object[]; -}; - -export const CFDTradingExperience = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - cfd_trading_experience_enum, -}: Partial> & TCFDTradingExperience) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('cfd_trading_experience', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TCFDTradingFrequency = { - cfd_trading_frequency_enum?: object[]; -}; - -export const CFDTradingFrequency = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - cfd_trading_frequency_enum, -}: Partial> & TCFDTradingFrequency) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('cfd_trading_frequency', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TOtherInstrumentsTradingExperience = { - other_instruments_trading_experience_enum?: object[]; -}; - -export const OtherInstrumentsTradingExperience = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - other_instruments_trading_experience_enum, -}: Partial> & TOtherInstrumentsTradingExperience) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('other_instruments_trading_experience', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); - -type TOtherInstrumentsTradingFrequency = { - other_instruments_trading_frequency_enum?: object[]; -}; - -export const OtherInstrumentsTradingFrequency = ({ - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - other_instruments_trading_frequency_enum, -}: Partial> & TOtherInstrumentsTradingFrequency) => ( - - {({ field }: FormikValues) => ( - - - - - - ) => { - if (typeof handleChange === 'function') { - handleChange(e); - } - if (typeof setFieldValue === 'function') { - setFieldValue('other_instruments_trading_frequency', e.target.value, true); - } - }} - {...field} - required - /> - - - )} - -); +import { + getAccountTurnoverList, + getEducationLevelList, + getEmploymentIndustryList, + getEstimatedWorthList, + getIncomeSourceList, + getNetIncomeList, + getOccupationList, + getSourceOfWealthList, +} from 'Configs/financial-details-config'; + +type TFinancialDetailsDropdownFieldProps = { + dropdown_list: Array; + field_key: string; + placeholder?: string; + label: string; +}; + +/** + * Dropdown field for financial details form. + * @name FinancialDetailsDropdownField + * @param {Array} dropdown_list - list of dropdown items + * @param {string} field_key - field reference of the field + * @param {string} placeholder - placeholder of the field + * @param {string} label - label of the field + * @returns {JSX.Element} + */ +const FinancialDetailsDropdownField = ({ + dropdown_list, + field_key, + placeholder = localize('Please select'), + label, +}: TFinancialDetailsDropdownFieldProps) => { + const { values, handleChange, handleBlur, touched, errors, setFieldValue } = useFormikContext<{ + [key: string]: string; + }>(); + + return ( + + {({ field }: FormikValues) => ( + + + + + + ) => { + handleChange(e); + setFieldValue('field_key', e.target.value, true); + }} + {...field} + required + /> + + + )} + + ); +}; + +/** + * Wrapper for financial details form fields. + * @name FinancialInformation + * @returns {JSX.Element} + */ +const FinancialInformation = () => { + return ( + + + + + + + + + + + ); +}; + +export default FinancialInformation; diff --git a/packages/account/src/Components/financial-details/financial-details.tsx b/packages/account/src/Components/financial-details/financial-details.tsx index 9eed2b5c395f..54a25059229a 100644 --- a/packages/account/src/Components/financial-details/financial-details.tsx +++ b/packages/account/src/Components/financial-details/financial-details.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import { Formik, FormikValues } from 'formik'; +import { Formik } from 'formik'; import React from 'react'; import { AutoHeightWrapper, @@ -11,88 +11,50 @@ import { } from '@deriv/components'; import { isDesktop, isMobile } from '@deriv/shared'; import { Localize, localize } from '@deriv/translations'; -import { - AccountTurnover, - IncomeSource, - EducationLevel, - EmploymentIndustry, - EstimatedWorth, - NetIncome, - Occupation, - SourceOfWealth, -} from './financial-details-partials'; +import FinancialInformation from './financial-details-partials'; import { splitValidationResultTypes } from '../real-account-signup/helpers/utils'; -export type TFinancialDetails = { +type TFinancialDetailsFormValues = { + income_source: string; + employment_industry: string; + occupation: string; + source_of_wealth: string; + education_level: string; + net_income: string; + estimated_worth: string; + account_turnover: string; +}; + +type TFinancialDetails = { goToPreviousStep: () => void; goToNextStep: () => void; getCurrentStep: () => number; - onSave: (current_step: number, values: FormikValues) => void; + onSave: (current_step: number, values: TFinancialDetailsFormValues) => void; onSubmit: ( current_step: number, - values: FormikValues, + values: TFinancialDetailsFormValues, actions: (isSubmitting: boolean) => void, props: () => void ) => void; onCancel: (current_step: number, props: () => void) => void; - validate: (values: FormikValues) => object; - value: object; -}; - -export type TFinancialInformationAndTradingExperience = { - shared_props?: object; - income_source_enum: object[]; - employment_status_enum: object[]; - employment_industry_enum: object[]; - occupation_enum: object[]; - source_of_wealth_enum: object[]; - education_level_enum: object[]; - net_income_enum: object[]; - estimated_worth_enum: object[]; - account_turnover_enum: object[]; - forex_trading_experience_enum?: object[]; - forex_trading_frequency_enum?: object[]; - binary_options_trading_experience_enum?: object[]; - binary_options_trading_frequency_enum?: object[]; - cfd_trading_experience_enum?: object[]; - cfd_trading_frequency_enum?: object[]; - other_instruments_trading_experience_enum?: object[]; - other_instruments_trading_frequency_enum?: object[]; + validate: (values: TFinancialDetailsFormValues) => object; + value: TFinancialDetailsFormValues; }; -const FinancialInformation = ({ - shared_props, - income_source_enum, - employment_industry_enum, - occupation_enum, - source_of_wealth_enum, - education_level_enum, - net_income_enum, - estimated_worth_enum, - account_turnover_enum, -}: TFinancialInformationAndTradingExperience) => { - return ( - - - - - - - - - - - ); -}; - -const FinancialDetails = (props: TFinancialDetails & TFinancialInformationAndTradingExperience) => { - const handleCancel = (values: FormikValues) => { +/** + * A wrapper for the financial details form. + * @name FinancialDetails + * @param {TFinancialDetails} props - props of the component + * @returns {React.ReactNode} React component that renders FinancialDetails form. + */ +const FinancialDetails = (props: TFinancialDetails) => { + const handleCancel = (values: TFinancialDetailsFormValues) => { const current_step = props.getCurrentStep() - 1; props.onSave(current_step, values); props.onCancel(current_step, props.goToPreviousStep); }; - const handleValidate = (values: FormikValues) => { + const handleValidate = (values: TFinancialDetailsFormValues) => { const { errors } = splitValidationResultTypes(props.validate(values)); return errors; }; @@ -106,16 +68,7 @@ const FinancialDetails = (props: TFinancialDetails & TFinancialInformationAndTra }} validateOnMount > - {({ handleSubmit, isSubmitting, errors, values, setFieldValue, handleChange, handleBlur, touched }) => { - const shared_props = { - values, - handleChange, - handleBlur, - touched, - errors, - setFieldValue, - }; - + {({ handleSubmit, isSubmitting, errors, values }) => { return ( {({ @@ -141,43 +94,13 @@ const FinancialDetails = (props: TFinancialDetails & TFinancialInformationAndTra 'financial-assessment__form' )} > - + 0 - } + is_disabled={isSubmitting || Object.keys(errors).length > 0} is_absolute={isMobile()} label={localize('Next')} has_cancel diff --git a/packages/account/src/Components/financial-details/index.js b/packages/account/src/Components/financial-details/index.ts similarity index 100% rename from packages/account/src/Components/financial-details/index.js rename to packages/account/src/Components/financial-details/index.ts diff --git a/packages/account/src/Components/form-body/form-body.tsx b/packages/account/src/Components/form-body/form-body.tsx index 6806f15b33d8..1bff72577005 100644 --- a/packages/account/src/Components/form-body/form-body.tsx +++ b/packages/account/src/Components/form-body/form-body.tsx @@ -1,21 +1,26 @@ import React from 'react'; import { ScrollbarsContainer } from '../scrollbars-container/scrollbars-container'; import { Div100vhContainer, DesktopWrapper, MobileWrapper } from '@deriv/components'; +import classNames from 'classnames'; type TFormBody = { scroll_offset?: string; + className?: string; }; -export const FormBody = ({ children, scroll_offset }: React.PropsWithChildren) => ( +export const FormBody = ({ children, scroll_offset, className }: React.PropsWithChildren) => ( - + {children} {children} diff --git a/packages/account/src/Components/forms/__tests__/idv-form.spec.tsx b/packages/account/src/Components/forms/__tests__/idv-form.spec.tsx new file mode 100644 index 000000000000..82ba1e082c7d --- /dev/null +++ b/packages/account/src/Components/forms/__tests__/idv-form.spec.tsx @@ -0,0 +1,120 @@ +import React from 'react'; +import { render, screen, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import IDVForm from '../idv-form'; +import { Formik } from 'formik'; + +jest.mock('Helpers/utils', () => ({ + ...jest.requireActual('Helpers/utils'), + getDocumentData: jest.fn((country_code, key) => { + const data = { + tc: { + document_1: { + new_display_name: '', + example_format: '5436454364243', + sample_image: '', + }, + document_2: { + new_display_name: '', + example_format: 'A-52431', + sample_image: '', + }, + }, + }; + return data[country_code][key]; + }), +})); + +jest.mock('formik', () => ({ + ...jest.requireActual('formik'), + useFormikContext: jest.fn(() => ({ + values: { + document_type: {}, + document_number: '', + }, + errors: {}, + touched: {}, + setFieldValue: jest.fn(), + setFieldTouched: jest.fn(), + validateForm: jest.fn(), + validateField: jest.fn(), + handleBlur: jest.fn(), + handleChange: jest.fn(), + })), +})); + +jest.mock('@deriv/shared', () => ({ + ...jest.requireActual('@deriv/shared'), + isDesktop: jest.fn(() => true), + isMobile: jest.fn(() => false), +})); + +describe('', () => { + const mock_props = { + selected_country: { + value: 'tc', + identity: { + services: { + idv: { + documents_supported: { + document_1: { + display_name: 'Test document 1 name', + format: '5436454364243', + }, + document_2: { + display_name: 'Test document 2 name', + format: 'A54321', + }, + }, + has_visual_sample: 1, + }, + }, + }, + }, + }; + + const mock_values = { + document_type: { + display_name: 'Test document 1 name', + format: '5436454364243', + id: '1', + value: 'document_1', + }, + document_number: '5436454364243', + }; + + it('should render IDVForm component', () => { + render(, { + wrapper: ({ children }) => ( + + {() => children} + + ), + }); + + const document_type_input = screen.getByLabelText('Choose the document type'); + const document_number_input = screen.getByLabelText('Enter your document number'); + + expect(document_type_input).toBeInTheDocument(); + expect(document_number_input).toBeInTheDocument(); + }); + + it('Should change the document type value when document type is changed', async () => { + render(, { + wrapper: ({ children }) => ( + + {() => children} + + ), + }); + + const document_type_input = screen.getByLabelText('Choose the document type'); + + userEvent.click(document_type_input); + expect(await screen.findByText('Test document 1 name')).toBeInTheDocument(); + userEvent.tab(); + await waitFor(() => { + expect(screen.queryByText('Test document 1 name')).not.toBeInTheDocument(); + }); + }); +}); diff --git a/packages/account/src/Components/forms/form-fields.jsx b/packages/account/src/Components/forms/form-fields.jsx deleted file mode 100644 index d7b7fe337747..000000000000 --- a/packages/account/src/Components/forms/form-fields.jsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react'; -import { Field } from 'formik'; -import { DateOfBirthPicker, Input } from '@deriv/components'; -import { toMoment } from '@deriv/shared'; - -export const DateOfBirthField = ({ name, portal_id, ...rest }) => ( - - {({ field: { value }, form: { setFieldValue, errors, touched, setFieldTouched } }) => ( - setFieldTouched(name)} - onChange={({ target }) => - setFieldValue(name, target?.value ? toMoment(target.value).format('YYYY-MM-DD') : '', true) - } - value={value} - portal_id={portal_id} - {...rest} - /> - )} - -); - -export const FormInputField = ({ name, warn, ...rest }) => ( - - {({ field, form: { errors, touched } }) => ( - - )} - -); diff --git a/packages/account/src/Components/forms/form-fields/__tests__/date-of-birth-field.spec.tsx b/packages/account/src/Components/forms/form-fields/__tests__/date-of-birth-field.spec.tsx new file mode 100644 index 000000000000..849b83620276 --- /dev/null +++ b/packages/account/src/Components/forms/form-fields/__tests__/date-of-birth-field.spec.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { Formik } from 'formik'; +import { render, screen } from '@testing-library/react'; +import DateOfBirthField from '../date-of-birth-field'; + +describe('Tesing component', () => { + it('should render properties', () => { + const props: Partial> = { + name: 'test-name', + portal_id: 'test-portal-id', + }; + render( + + + + ); + + expect(screen.getByRole('textbox')).toBeInTheDocument(); + }); +}); diff --git a/packages/account/src/Components/forms/form-fields/__tests__/form-input-field.spec.tsx b/packages/account/src/Components/forms/form-fields/__tests__/form-input-field.spec.tsx new file mode 100644 index 000000000000..8d961e72fe20 --- /dev/null +++ b/packages/account/src/Components/forms/form-fields/__tests__/form-input-field.spec.tsx @@ -0,0 +1,34 @@ +import React from 'react'; +import { Formik } from 'formik'; +import { render, screen } from '@testing-library/react'; +import FormInputField from '../form-input-field'; + +describe('Tesing component', () => { + it('should render properties', () => { + const props: React.ComponentProps = { + name: 'test-name', + required: true, + }; + render( + + + + ); + + expect(screen.getByRole('textbox')).toBeInTheDocument(); + }); + + it('should render Input field with optional status', () => { + const props = { + name: 'test-name', + }; + render( + + + + ); + + expect(screen.getByRole('textbox')).toBeInTheDocument(); + expect(screen.getByRole('textbox')).not.toBeRequired(); + }); +}); diff --git a/packages/account/src/Components/forms/form-fields/date-of-birth-field.tsx b/packages/account/src/Components/forms/form-fields/date-of-birth-field.tsx new file mode 100644 index 000000000000..b05db31da632 --- /dev/null +++ b/packages/account/src/Components/forms/form-fields/date-of-birth-field.tsx @@ -0,0 +1,36 @@ +import React from 'react'; +import { Field, FieldProps } from 'formik'; +import { DateOfBirthPicker } from '@deriv/components'; +import { toMoment } from '@deriv/shared'; + +type TDateOfBirthFieldProps = { + name: string; + portal_id: string; +} & Omit, 'onBlur' | 'onChange' | 'error'>; + +/** + * DateOfBirthField is a wrapper around DateOfBirthPicker that can be used with Formik. + * @name DateOfBirthField + * @param name - Name of the field + * @param portal_id - Portal ID + * @param [props] - Other props to pass to DateOfBirthPicker + * @returns {React.ReactNode} + */ +const DateOfBirthField = ({ name, portal_id, ...rest }: TDateOfBirthFieldProps) => ( + + {({ field, form: { setFieldValue }, meta: { error, touched } }: FieldProps) => ( + + setFieldValue(name, target?.value ? toMoment(target.value).format('YYYY-MM-DD') : '', true) + } + portal_id={portal_id} + /> + )} + +); + +export default DateOfBirthField; diff --git a/packages/account/src/Components/forms/form-fields/form-input-field.tsx b/packages/account/src/Components/forms/form-fields/form-input-field.tsx new file mode 100644 index 000000000000..a6bd0fb498ad --- /dev/null +++ b/packages/account/src/Components/forms/form-fields/form-input-field.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { FieldInputProps, FormikHelpers, FormikState, Field } from 'formik'; +import { Input } from '@deriv/components'; + +type FormInputFieldProps = { + name: string; + optional?: boolean; + warn?: string; +} & React.ComponentProps; + +type TFormInputFieldHelpers = { + field: FieldInputProps; + form: FormikHelpers & FormikState; +}; + +/** + * FormInputField is a wrapper around Input that can be used with Formik. + * @name FormInputField + * @param name - Name of the field + * @param [optional] - Whether the field is optional + * @param [warn] - Display a warning message + * @param [props] - Other props to pass to Input + * @returns ReactNode + */ +const FormInputField = ({ name, warn, ...rest }: FormInputFieldProps) => ( + + {({ field, form: { errors, touched } }: TFormInputFieldHelpers>) => ( + + )} + +); + +export default FormInputField; diff --git a/packages/account/src/Components/forms/form-fields/index.ts b/packages/account/src/Components/forms/form-fields/index.ts new file mode 100644 index 000000000000..8ecb3a2bce22 --- /dev/null +++ b/packages/account/src/Components/forms/form-fields/index.ts @@ -0,0 +1,4 @@ +import FormInputField from './form-input-field'; +import DateOfBirthField from './date-of-birth-field'; + +export { FormInputField, DateOfBirthField }; diff --git a/packages/account/src/Components/forms/idv-form.tsx b/packages/account/src/Components/forms/idv-form.tsx index f81b083fb5a0..6c9566928cb6 100644 --- a/packages/account/src/Components/forms/idv-form.tsx +++ b/packages/account/src/Components/forms/idv-form.tsx @@ -1,35 +1,39 @@ import React from 'react'; import classNames from 'classnames'; -import { Field, FieldProps } from 'formik'; -import { localize } from '@deriv/translations'; -import { formatInput, getIDVNotApplicableOption } from '@deriv/shared'; +import { Field, FormikProps, FieldProps, useFormikContext } from 'formik'; +import { ResidenceList } from '@deriv/api-types'; import { Autocomplete, DesktopWrapper, Input, MobileWrapper, SelectNative, Text } from '@deriv/components'; +import { formatInput, getIDVNotApplicableOption } from '@deriv/shared'; +import { localize } from '@deriv/translations'; import { getDocumentData, preventEmptyClipboardPaste, generatePlaceholderText, getExampleFormat, } from '../../Helpers/utils'; -import { TDocument, TIDVForm } from 'Types'; +import { TDocument, TIDVFormValues } from '../../Types'; + +type TIDVFormProps = { + selected_country: ResidenceList[0]; + hide_hint?: boolean; + class_name?: string; + can_skip_document_verification?: boolean; +}; const IDVForm = ({ - errors, - touched, - values, - handleBlur, - handleChange, - setFieldValue, class_name, selected_country, hide_hint, can_skip_document_verification = false, -}: TIDVForm) => { - const [document_list, setDocumentList] = React.useState([]); +}: TIDVFormProps) => { + const [document_list, setDocumentList] = React.useState>([]); const [document_image, setDocumentImage] = React.useState(null); const [selected_doc, setSelectedDoc] = React.useState(''); const { documents_supported: document_data, has_visual_sample } = selected_country?.identity?.services?.idv ?? {}; + const { errors, touched, values, handleBlur, handleChange, setFieldValue }: FormikProps = + useFormikContext(); const default_document = { id: '', text: '', @@ -93,10 +97,12 @@ const IDVForm = ({ }; const onKeyUp = (e: { target: HTMLInputElement }, document_name: string) => { - const { example_format } = - document_name === 'document_number' ? values.document_type : values.document_type.additional; + const example_format = + document_name === 'document_number' + ? values?.document_type?.example_format + : values?.document_type?.additional?.example_format; let current_input: string | null = null; - current_input = example_format.includes('-') + current_input = example_format?.includes('-') ? formatInput(example_format, current_input ?? e.target.value, '-') : e.target.value; setFieldValue(document_name, current_input, true); @@ -135,38 +141,32 @@ const IDVForm = ({ {({ field }: FieldProps) => ( -
- { - handleBlur(e); - if (!getDocument(e.target.value)) { - resetDocumentItemSelected(); - } - }} - onChange={handleChange} - onItemSelection={(item: TDocument) => { - if ( - item.text === 'No results found' || - !item.text - ) { - setSelectedDoc(''); - resetDocumentItemSelected(); - } else { - bindDocumentData(item); - } - }} - required - /> -
+ { + handleBlur(e); + if (!getDocument(e.target.value)) { + resetDocumentItemSelected(); + } + }} + onChange={handleChange} + onItemSelection={(item: TDocument) => { + if (item.text === 'No results found' || !item.text) { + setSelectedDoc(''); + resetDocumentItemSelected(); + } else { + bindDocumentData(item); + } + }} + required + />
- {values.document_type.id !== IDV_NOT_APPLICABLE_OPTION.id && ( + {values?.document_type?.id !== IDV_NOT_APPLICABLE_OPTION.id && (
{ const { + inline_note_text, is_virtual, is_mf, is_svg, - is_qualified_for_idv, + is_rendered_for_idv, should_hide_helper_image, editable_fields = [], has_real_account, @@ -47,10 +46,10 @@ const PersonalDetailsForm = props => { setShouldCloseTooltip, class_name, states_list, + side_note, no_confirmation_needed, } = props; const autocomplete_value = 'none'; - const PoiNameDobExampleIcon = PoiNameDobExample; const [is_tax_residence_popover_open, setIsTaxResidencePopoverOpen] = React.useState(false); const [is_tin_popover_open, setIsTinPopoverOpen] = React.useState(false); @@ -72,7 +71,7 @@ const PersonalDetailsForm = props => { }, [no_confirmation_needed, setStatus, status]); const getNameAndDobLabels = () => { - const is_asterisk_needed = is_svg || is_mf || is_rendered_for_onfido || is_qualified_for_idv; + const is_asterisk_needed = is_svg || is_mf || is_rendered_for_onfido || is_rendered_for_idv; const first_name_label = is_asterisk_needed ? localize('First name*') : localize('First name'); const last_name_label = is_asterisk_needed ? localize('Last name*') : localize('Last name'); const dob_label = is_asterisk_needed ? localize('Date of birth*') : localize('Date of birth'); @@ -84,8 +83,10 @@ const PersonalDetailsForm = props => { }; }; + const is_rendered_for_idv_or_onfido = is_rendered_for_idv || is_rendered_for_onfido; + const getFieldHint = field_name => - is_qualified_for_idv || is_rendered_for_onfido ? ( + is_rendered_for_idv_or_onfido ? ( { } }; - const name_dob_clarification_message = ( - ]} - /> - ); - const poa_clarification_message = ( ); @@ -135,14 +129,11 @@ const PersonalDetailsForm = props => {
- {(is_qualified_for_idv || is_rendered_for_onfido) && !should_hide_helper_image && ( - + {is_rendered_for_idv_or_onfido && !should_hide_helper_image && ( + )} {is_qualified_for_poa && ( { /> )} } + has_side_note={is_rendered_for_idv_or_onfido && !should_hide_helper_image} + side_note={side_note} side_note_position='right' type='image' > @@ -181,7 +172,7 @@ const PersonalDetailsForm = props => {
)} - {!is_qualified_for_idv && !is_rendered_for_onfido && !is_qualified_for_poa && ( + {!is_rendered_for_idv_or_onfido && !is_qualified_for_poa && ( @@ -239,7 +230,7 @@ const PersonalDetailsForm = props => { data-testid='last_name' /> )} - {!is_qualified_for_idv && !is_rendered_for_onfido && !is_qualified_for_poa && ( + {!is_rendered_for_idv_or_onfido && !is_qualified_for_poa && ( )} {'date_of_birth' in values && ( @@ -546,7 +537,7 @@ const PersonalDetailsForm = props => { )}
- {!no_confirmation_needed && is_qualified_for_idv && ( + {!no_confirmation_needed && is_rendered_for_idv && ( jest.fn(() => 'PoiNameDobExampleImage')); @@ -28,6 +29,13 @@ jest.mock('../../real-account-signup/helpers/utils.ts', () => ({ })), })); +jest.mock('Helpers/utils', () => ({ + ...jest.requireActual('Helpers/utils'), + isDocumentTypeValid: jest.fn(), + shouldShowIdentityInformation: jest.fn(() => false), + isAdditionalDocumentValid: jest.fn(), +})); + const mock_warnings = {}; const mock_errors = { account_opening_reason: 'Account opening reason is required.', @@ -106,6 +114,43 @@ const runCommonFormfieldsTests = is_svg => { }; describe('', () => { + const idv_document_data = { + document_type: { + value: 'national_id', + text: 'National ID', + }, + document_number: '1234567890123', + }; + + const default_IDV_config = { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }; + + const default_residence_details = [ + { + value: 'tc', + identity: { + services: { + idv: { + documents_supported: { + document_1: { + display_name: 'Test document 1 name', + format: '5436454364243', + }, + document_2: { + display_name: 'Test document 2 name', + format: 'A54321', + }, + }, + has_visual_sample: true, + }, + }, + }, + }, + ]; + const props = { is_svg: true, is_high_risk: false, @@ -139,11 +184,7 @@ describe('', () => { { identity: { services: { - idv: { - documents_supported: {}, - has_visual_sample: 0, - is_country_supported: 0, - }, + idv: default_IDV_config, onfido: { documents_supported: { passport: { @@ -161,11 +202,7 @@ describe('', () => { { identity: { services: { - idv: { - documents_supported: {}, - has_visual_sample: 0, - is_country_supported: 0, - }, + idv: default_IDV_config, onfido: { documents_supported: {}, is_country_supported: 0, @@ -236,6 +273,10 @@ describe('', () => { afterAll(() => ReactDOM.createPortal.mockClear()); + afterEach(() => { + jest.clearAllMocks(); + }); + const renderwithRouter = component => { const mock_store = mockStore({}); render( @@ -245,6 +286,135 @@ describe('', () => { ); }; + it('should have validation errors on form fields', async () => { + isMobile.mockReturnValue(false); + isDesktop.mockReturnValue(true); + + renderwithRouter(); + + const first_name = screen.getByTestId('first_name'); + const last_name = screen.getByTestId('last_name'); + const date_of_birth = await screen.getByTestId('date_of_birth'); + const place_of_birth = screen.getByTestId('place_of_birth'); + const citizenship = screen.getByTestId('citizenship'); + const phone = screen.getByTestId('phone'); + const tax_residence = screen.getByTestId('tax_residence'); + const tax_identification_number = screen.getByTestId('tax_identification_number'); + + fireEvent.blur(first_name); + fireEvent.blur(last_name); + fireEvent.blur(date_of_birth); + fireEvent.blur(place_of_birth); + fireEvent.blur(citizenship); + fireEvent.blur(phone); + fireEvent.blur(tax_residence); + fireEvent.blur(tax_identification_number); + + expect(await screen.findByText(/first name is required\./i)).toBeInTheDocument(); + expect(await screen.findByText(/last name is required\./i)).toBeInTheDocument(); + expect(await screen.findByText(/date of birth is required\./i)).toBeInTheDocument(); + expect(await screen.findByText(/place of birth is required\./i)).toBeInTheDocument(); + expect(await screen.findByText(/citizenship is required/i)).toBeInTheDocument(); + expect(await screen.findByText(/phone is required\./i)).toBeInTheDocument(); + expect(await screen.findByText(/tax residence is required\./i)).toBeInTheDocument(); + expect(await screen.findByText(/tax identification number is required\./i)).toBeInTheDocument(); + splitValidationResultTypes.mockReturnValue({ + ...mock_warnings, + errors: { + ...mock_errors.errors, + first_name: 'letters, spaces, periods, hyphens, apostrophes only', + last_name: 'last name should be between 2 and 50 characters.', + date_of_birth: 'You must be 18 years old and above.', + tax_identification_number: "Tax Identification Number can't be longer than 25 characters.", + }, + }); + fireEvent.change(first_name, { target: { value: '123' } }); + fireEvent.change(last_name, { target: { value: 'a' } }); + fireEvent.change(date_of_birth, { target: { value: '2021-04-13' } }); + fireEvent.change(tax_identification_number, { target: { value: '123456789012345678901234567890' } }); + + expect(await screen.findByText(/letters, spaces, periods, hyphens, apostrophes only/i)).toBeInTheDocument(); + expect(await screen.findByText(/last name should be between 2 and 50 characters/i)).toBeInTheDocument(); + expect(await screen.findByText(/you must be 18 years old and above\./i)).toBeInTheDocument(); + expect( + await screen.findByText(/tax Identification Number can't be longer than 25 characters\./i) + ).toBeInTheDocument(); + }); + + it('submit button should be enabled if TIN or tax_residence is optional in case of CR accounts', () => { + const new_props = { + ...props, + is_mf: false, + is_svg: true, + value: { + first_name: '', + last_name: '', + date_of_birth: '', + place_of_birth: '', + phone: '+34', + tax_residence: '', + tax_identification_number: '', + document_type: 'none', + }, + }; + renderwithRouter(); + + const first_name = screen.getByTestId('first_name'); + const last_name = screen.getByTestId('last_name'); + const date_of_birth = screen.getByTestId('date_of_birth'); + const phone = screen.getByTestId('phone'); + + userEvent.type(first_name, 'test firstname'); + userEvent.type(last_name, 'test lastname'); + userEvent.type(date_of_birth, '2000-12-12'); + userEvent.type(phone, '+49123456789012'); + expect(screen.getByRole('button', { name: /next/i })).toBeEnabled(); + }); + + it('should not display confirmation checkbox if opt-out of IDV', async () => { + splitValidationResultTypes.mockReturnValue({ warnings: {}, errors: {} }); + const new_props = { + ...props, + value: { + first_name: '', + last_name: '', + date_of_birth: '', + phone: '+93', + account_opening_reason: '', + place_of_birth: '', + document_type: 'none', + }, + }; + + renderwithRouter(); + + const first_name = screen.getByTestId('first_name'); + const last_name = screen.getByTestId('last_name'); + const date_of_birth = screen.getByTestId('date_of_birth'); + const phone = screen.getByTestId('phone'); + + userEvent.type(first_name, 'test firstname'); + userEvent.type(last_name, 'test lastname'); + userEvent.type(date_of_birth, '2000-12-12'); + userEvent.type(phone, '+49123456789012'); + + const previous_btn = screen.getByRole('button', { name: /previous/i }); + const next_btn = screen.getByRole('button', { name: /next/i }); + + const confirmation_checkbox = screen.queryByLabelText( + /i confirm that the name and date of birth above match my chosen identity document/i + ); + expect(confirmation_checkbox).not.toBeInTheDocument(); + + expect(previous_btn).toBeEnabled(); + expect(next_btn).toBeEnabled(); + userEvent.click(next_btn); + + await waitFor(() => { + expect(new_props.onSubmit).toBeCalled(); + }); + }); + it('should autopopulate tax_residence for MF clients', () => { const new_props = { ...props, @@ -437,61 +607,6 @@ describe('', () => { expect(getByText('Afghanistan')).toBeInTheDocument(); }); - it('should have validation errors on form fields', async () => { - isMobile.mockReturnValue(false); - isDesktop.mockReturnValue(true); - - renderwithRouter(); - - const first_name = screen.getByTestId('first_name'); - const last_name = screen.getByTestId('last_name'); - const date_of_birth = await screen.getByTestId('date_of_birth'); - const place_of_birth = screen.getByTestId('place_of_birth'); - const citizenship = screen.getByTestId('citizenship'); - const phone = screen.getByTestId('phone'); - const tax_residence = screen.getByTestId('tax_residence'); - const tax_identification_number = screen.getByTestId('tax_identification_number'); - - fireEvent.blur(first_name); - fireEvent.blur(last_name); - fireEvent.blur(date_of_birth); - fireEvent.blur(place_of_birth); - fireEvent.blur(citizenship); - fireEvent.blur(phone); - fireEvent.blur(tax_residence); - fireEvent.blur(tax_identification_number); - - expect(await screen.findByText(/first name is required\./i)).toBeInTheDocument(); - expect(await screen.findByText(/last name is required\./i)).toBeInTheDocument(); - expect(await screen.findByText(/date of birth is required\./i)).toBeInTheDocument(); - expect(await screen.findByText(/place of birth is required\./i)).toBeInTheDocument(); - expect(await screen.findByText(/citizenship is required/i)).toBeInTheDocument(); - expect(await screen.findByText(/phone is required\./i)).toBeInTheDocument(); - expect(await screen.findByText(/tax residence is required\./i)).toBeInTheDocument(); - expect(await screen.findByText(/tax identification number is required\./i)).toBeInTheDocument(); - splitValidationResultTypes.mockReturnValue({ - ...mock_warnings, - errors: { - ...mock_errors.errors, - first_name: 'letters, spaces, periods, hyphens, apostrophes only', - last_name: 'last name should be between 2 and 50 characters.', - date_of_birth: 'You must be 18 years old and above.', - tax_identification_number: "Tax Identification Number can't be longer than 25 characters.", - }, - }); - fireEvent.change(first_name, { target: { value: '123' } }); - fireEvent.change(last_name, { target: { value: 'a' } }); - fireEvent.change(date_of_birth, { target: { value: '2021-04-13' } }); - fireEvent.change(tax_identification_number, { target: { value: '123456789012345678901234567890' } }); - - expect(await screen.findByText(/letters, spaces, periods, hyphens, apostrophes only/i)).toBeInTheDocument(); - expect(await screen.findByText(/last name should be between 2 and 50 characters/i)).toBeInTheDocument(); - expect(await screen.findByText(/you must be 18 years old and above\./i)).toBeInTheDocument(); - expect( - await screen.findByText(/tax Identification Number can't be longer than 25 characters\./i) - ).toBeInTheDocument(); - }); - it('should show error for invalid TIN', async () => { const newvalidate = { errors: { @@ -541,6 +656,8 @@ describe('', () => { ); expect(checkbox).not.toBeInTheDocument(); + screen.debug(); + expect(previous_btn).toBeEnabled(); expect(next_btn).toBeEnabled(); fireEvent.click(next_btn); @@ -704,92 +821,63 @@ describe('', () => { expect(screen.queryByRole('link', { name: 'here' })).not.toBeInTheDocument(); }); - it('should disable tax_residence field if it is immutable from BE', () => { - isMobile.mockReturnValue(false); - isDesktop.mockReturnValue(true); + it('should validate idv values when a document type is selected', async () => { + shouldShowIdentityInformation.mockReturnValue(true); const new_props = { ...props, - is_mf: true, + is_mf: false, value: { ...props.value, - tax_residence: 'France', + ...idv_document_data, }, - disabled_items: ['salutation', 'first_name', 'last_name', 'date_of_birth', 'tax_residence'], + residence_list: default_residence_details, }; renderwithRouter(); - expect(screen.getByTestId('tax_residence')).toBeDisabled(); + + await waitFor(() => { + expect(isDocumentTypeValid).toHaveBeenCalled(); + expect(isAdditionalDocumentValid).not.toHaveBeenCalled(); + }); }); - it('submit button should be enabled if TIN or tax_residence is optional in case of CR accounts', () => { + it('should validate idv values along with additional document number when a document type is selected', async () => { + shouldShowIdentityInformation.mockReturnValue(true); + + const new_document_data = { + ...idv_document_data, + document_type: { ...idv_document_data.document_type, additional: '12345' }, + }; + const new_props = { ...props, is_mf: false, - is_svg: true, value: { - first_name: '', - last_name: '', - date_of_birth: '', - place_of_birth: '', - phone: '+34', - tax_residence: '', - tax_identification_number: '', + ...props.value, + ...new_document_data, }, + residence_list: default_residence_details, }; renderwithRouter(); - const first_name = screen.getByTestId('first_name'); - const last_name = screen.getByTestId('last_name'); - const date_of_birth = screen.getByTestId('date_of_birth'); - const phone = screen.getByTestId('phone'); - - userEvent.type(first_name, 'test firstname'); - userEvent.type(last_name, 'test lastname'); - userEvent.type(date_of_birth, '2000-12-12'); - userEvent.type(phone, '+49123456789012'); - expect(screen.getByRole('button', { name: /next/i })).toBeEnabled(); + await waitFor(() => { + expect(isAdditionalDocumentValid).toHaveBeenCalled(); + }); }); - it('should not display confirmation checkbox if opt-out of IDV', async () => { - splitValidationResultTypes.mockReturnValue({ warnings: {}, errors: {} }); + it('should disable tax_residence field if it is immutable from BE', () => { + isMobile.mockReturnValue(false); + isDesktop.mockReturnValue(true); const new_props = { ...props, + is_mf: true, value: { - first_name: '', - last_name: '', - date_of_birth: '', - phone: '+93', - account_opening_reason: '', - place_of_birth: '', - document_type: 'none', + ...props.value, + tax_residence: 'France', + document_type: idv_document_data, }, + disabled_items: ['salutation', 'first_name', 'last_name', 'date_of_birth', 'tax_residence'], }; - renderwithRouter(); - - const first_name = screen.getByTestId('first_name'); - const last_name = screen.getByTestId('last_name'); - const date_of_birth = screen.getByTestId('date_of_birth'); - const phone = screen.getByTestId('phone'); - - userEvent.type(first_name, 'test firstname'); - userEvent.type(last_name, 'test lastname'); - userEvent.type(date_of_birth, '2000-12-12'); - userEvent.type(phone, '+49123456789012'); - - const previous_btn = screen.getByRole('button', { name: /previous/i }); - const next_btn = screen.getByRole('button', { name: /next/i }); - - const confirmation_checkbox = screen.queryByLabelText( - /i confirm that the name and date of birth above match my chosen identity document/i - ); - expect(confirmation_checkbox).not.toBeInTheDocument(); - - expect(previous_btn).toBeEnabled(); - expect(next_btn).toBeEnabled(); - userEvent.click(next_btn); - - await waitFor(() => { - expect(new_props.onSubmit).toBeCalled(); - }); + expect(screen.getByTestId('tax_residence')).toBeDisabled(); }); }); diff --git a/packages/account/src/Components/personal-details/personal-details.jsx b/packages/account/src/Components/personal-details/personal-details.jsx index f78c111a7fcb..791b7440ae21 100644 --- a/packages/account/src/Components/personal-details/personal-details.jsx +++ b/packages/account/src/Components/personal-details/personal-details.jsx @@ -20,6 +20,7 @@ import { shouldHideHelperImage, shouldShowIdentityInformation, } from 'Helpers/utils'; +import PoiNameDobExample from '../../Assets/ic-poi-name-dob-example.svg'; import FormSubHeader from '../form-sub-header'; import IDVForm from '../forms/idv-form'; @@ -42,7 +43,6 @@ const PersonalDetails = ({ is_virtual, is_fully_authenticated, account_opening_reason_list, - onSubmitEnabledChange, selected_step_ref, closeRealAccountSignup, has_real_account, @@ -50,28 +50,21 @@ const PersonalDetails = ({ }) => { const { account_status, account_settings, residence, real_account_signup_target } = props; const [should_close_tooltip, setShouldCloseTooltip] = React.useState(false); - const is_submit_disabled_ref = React.useRef(true); + + const PoiNameDobExampleIcon = PoiNameDobExample; const isSubmitDisabled = errors => { return selected_step_ref?.current?.isSubmitting || Object.keys(errors).length > 0; }; - const checkSubmitStatus = errors => { - const is_submit_disabled = isSubmitDisabled(errors); - - if (is_submit_disabled_ref.current !== is_submit_disabled) { - is_submit_disabled_ref.current = is_submit_disabled; - onSubmitEnabledChange?.(!is_submit_disabled); - } - }; - const handleCancel = values => { const current_step = getCurrentStep() - 1; onSave(current_step, values); onCancel(current_step, goToPreviousStep); }; - const is_qualified_for_idv = shouldShowIdentityInformation({ + //is_rendered_for_idv is used for configuring the components when they are used in idv page + const is_rendered_for_idv = shouldShowIdentityInformation({ account_status, account_settings, residence, @@ -99,12 +92,11 @@ const PersonalDetails = ({ const handleValidate = values => { let idv_error = {}; - if (is_qualified_for_idv) { + if (is_rendered_for_idv) { idv_error = validateIDV(values); } const { errors } = splitValidationResultTypes(validate(values)); const error_data = { ...idv_error, ...errors }; - checkSubmitStatus(error_data); return error_data; }; @@ -124,7 +116,7 @@ const PersonalDetails = ({ if (IDV_NOT_APPLICABLE_OPTION.id === selected_document_type_id) return editable_fields; - if (is_confirmed && is_qualified_for_idv) { + if (is_confirmed && is_rendered_for_idv) { return editable_fields.filter(field => !['first_name', 'last_name', 'date_of_birth'].includes(field)); } @@ -138,12 +130,12 @@ const PersonalDetails = ({ validate={handleValidate} validateOnMount enableReinitialize - initialStatus={{ is_confirmed: !is_qualified_for_idv }} + initialStatus={{ is_confirmed: !is_rendered_for_idv }} onSubmit={(values, actions) => { onSubmit(getCurrentStep() - 1, values, actions.setSubmitting, goToNextStep); }} > - {({ handleSubmit, errors, setFieldValue, touched, values, handleChange, handleBlur, status }) => ( + {({ handleSubmit, errors, values, status }) => ( {({ setRef, height }) => (
- {!is_qualified_for_idv && ( + {!is_rendered_for_idv && ( - {is_qualified_for_idv && ( + {is_rendered_for_idv && ( @@ -192,13 +178,14 @@ const PersonalDetails = ({ } + is_rendered_for_idv={is_rendered_for_idv} editable_fields={getEditableFields( status?.is_confirmed, values?.document_type?.id @@ -212,6 +199,12 @@ const PersonalDetails = ({ should_close_tooltip={should_close_tooltip} setShouldCloseTooltip={setShouldCloseTooltip} should_hide_helper_image={shouldHideHelperImage(values?.document_type?.id)} + inline_note_text={ + ]} + /> + } no_confirmation_needed={ values?.document_type?.id === IDV_NOT_APPLICABLE_OPTION.id } diff --git a/packages/account/src/Components/poa/continue-trading-button/continue-trading-button.tsx b/packages/account/src/Components/poa/continue-trading-button/continue-trading-button.tsx index 3d7f70a4c12a..60e2c1ef75cb 100644 --- a/packages/account/src/Components/poa/continue-trading-button/continue-trading-button.tsx +++ b/packages/account/src/Components/poa/continue-trading-button/continue-trading-button.tsx @@ -1,11 +1,20 @@ -import { ButtonLink, Text } from '@deriv/components'; -import { localize } from '@deriv/translations'; import React from 'react'; +import classNames from 'classnames'; +import { ButtonLink, Text } from '@deriv/components'; +import { Localize } from '@deriv/translations'; + +type TContinueTradingButtonProps = { className?: string }; -export const ContinueTradingButton = () => ( - +/** + * Renders a button that redirects to the trading platform + * @name ContinueTradingButton + * @param className - Styles to be applied to the button + * @returns React Element + */ +export const ContinueTradingButton = ({ className }: TContinueTradingButtonProps) => ( + - {localize('Continue trading')} + ); diff --git a/packages/account/src/Components/poa/poa-button/poa-button.tsx b/packages/account/src/Components/poa/poa-button/poa-button.tsx index 0a3780dc0f46..49d89e35f935 100644 --- a/packages/account/src/Components/poa/poa-button/poa-button.tsx +++ b/packages/account/src/Components/poa/poa-button/poa-button.tsx @@ -1,14 +1,18 @@ import React from 'react'; import { ButtonLink, Text } from '@deriv/components'; import { routes } from '@deriv/shared'; -import { localize } from '@deriv/translations'; +import { Localize } from '@deriv/translations'; +import classNames from 'classnames'; type TPoaButton = { - custom_text?: string; + custom_text?: JSX.Element; + class_name?: string; }; -const PoaButton = ({ custom_text = localize('Submit proof of address') }: TPoaButton) => ( - +const DEFAULT_BTN_TEXT = ; + +const PoaButton = ({ custom_text = DEFAULT_BTN_TEXT, class_name }: TPoaButton) => ( + {custom_text} diff --git a/packages/account/src/Components/poi/idv-document-submit/__tests__/idv-document-submit.spec.tsx b/packages/account/src/Components/poi/idv-document-submit/__tests__/idv-document-submit.spec.tsx index 4d09c1b44de3..207c0b95ae0b 100644 --- a/packages/account/src/Components/poi/idv-document-submit/__tests__/idv-document-submit.spec.tsx +++ b/packages/account/src/Components/poi/idv-document-submit/__tests__/idv-document-submit.spec.tsx @@ -1,9 +1,9 @@ import React from 'react'; - -import { isDesktop, isMobile } from '@deriv/shared'; -import { mockStore, StoreProvider } from '@deriv/stores'; import { fireEvent, render, screen, waitFor } from '@testing-library/react'; - +import userEvent from '@testing-library/user-event'; +import { isDesktop, isMobile } from '@deriv/shared'; +import { StoreProvider, mockStore } from '@deriv/stores'; +import { isDocumentNumberValid } from 'Helpers/utils'; import IdvDocumentSubmit from '../idv-document-submit'; const mock_store = mockStore({ @@ -12,7 +12,6 @@ const mock_store = mockStore({ }, }); -jest.mock('react-router'); jest.mock('Assets/ic-document-submit-icon.svg', () => jest.fn(() => 'DocumentSubmitLogo')); jest.mock('Helpers/utils', () => ({ ...jest.requireActual('Helpers/utils'), @@ -31,9 +30,11 @@ jest.mock('Helpers/utils', () => ({ }, }, }; - return data[country_code][key]; + + const document = data[country_code as keyof typeof data]; + return document[key as keyof typeof document]; }), - getRegex: jest.fn(() => /5436454364243/i), + isDocumentNumberValid: jest.fn(), })); jest.mock('@deriv/shared', () => ({ @@ -58,7 +59,7 @@ jest.mock('@deriv/shared', () => ({ })); describe('', () => { - const mock_props = { + const mock_props: React.ComponentProps = { handleBack: jest.fn(), handleViewComplete: jest.fn(), selected_country: { @@ -67,14 +68,21 @@ describe('', () => { services: { idv: { documents_supported: { - document_1: { display_name: 'Test document 1 name', format: '5436454364243' }, - document_2: { display_name: 'Test document 2 name', format: 'A54321' }, + document_1: { + display_name: 'Test document 1 name', + format: '5436454364243', + }, + document_2: { + display_name: 'Test document 2 name', + format: 'A54321', + }, }, has_visual_sample: 1, }, }, }, }, + getChangeableFields: jest.fn(() => []), is_from_external: false, }; @@ -104,7 +112,7 @@ describe('', () => { ); const backBtn = screen.getByRole('button', { name: /go back/i }); - fireEvent.click(backBtn); + userEvent.click(backBtn); expect(mock_props.handleBack).toHaveBeenCalledTimes(1); const document_type_input = screen.getByLabelText('Choose the document type'); @@ -113,12 +121,12 @@ describe('', () => { expect(screen.queryByText('Test document 1 name')).not.toBeInTheDocument(); expect(screen.queryByText('Test document 2 name')).not.toBeInTheDocument(); - fireEvent.click(document_type_input); + userEvent.click(document_type_input); expect(await screen.findByText('Test document 1 name')).toBeInTheDocument(); expect(await screen.findByText('Test document 2 name')).toBeInTheDocument(); expect(screen.queryByText('Please select a document type.')).not.toBeInTheDocument(); - fireEvent.blur(document_type_input); + userEvent.tab(); expect(await screen.findByText('Please select a document type.')).toBeInTheDocument(); await waitFor(() => { expect(screen.queryByText('Test document 1 name')).not.toBeInTheDocument(); @@ -147,18 +155,20 @@ describe('', () => { expect(document_number_input.name).toBe('document_number'); expect(document_number_input).toBeDisabled(); - fireEvent.change(document_type_input, { target: { value: 'Test document 2 name' } }); - expect(document_number_input).toBeEnabled(); + userEvent.selectOptions(document_type_input, 'Test document 2 name'); + await waitFor(() => { + expect(document_number_input).toBeEnabled(); + }); expect(screen.queryByText(/please enter the correct format/i)).not.toBeInTheDocument(); - + (isDocumentNumberValid as jest.Mock).mockReturnValueOnce('please enter your document number'); fireEvent.blur(document_number_input); expect(await screen.findByText(/please enter your document number/i)).toBeInTheDocument(); - fireEvent.keyUp(document_number_input); + (isDocumentNumberValid as jest.Mock).mockReturnValueOnce('please enter the correct format'); fireEvent.change(document_number_input, { target: { value: 'A-32523' } }); expect(await screen.findByText(/please enter the correct format/i)).toBeInTheDocument(); - fireEvent.change(document_number_input, { target: { value: 'A54321' } }); + userEvent.type(document_number_input, '5436454364234'); await waitFor(() => { expect(screen.queryByText(/please enter the correct format/i)).not.toBeInTheDocument(); expect(screen.queryByText(/please enter a valid ID number/i)).not.toBeInTheDocument(); @@ -167,7 +177,7 @@ describe('', () => { fireEvent.click(confirmation_checkbox); expect(verifyBtn).toBeEnabled(); - fireEvent.click(verifyBtn); + userEvent.click(verifyBtn); await waitFor(() => { expect(mock_props.handleViewComplete).toHaveBeenCalledTimes(1); }); diff --git a/packages/account/src/Components/poi/idv-document-submit/idv-document-submit.tsx b/packages/account/src/Components/poi/idv-document-submit/idv-document-submit.tsx index 742af59bd0cb..584237b42360 100644 --- a/packages/account/src/Components/poi/idv-document-submit/idv-document-submit.tsx +++ b/packages/account/src/Components/poi/idv-document-submit/idv-document-submit.tsx @@ -1,50 +1,59 @@ import React from 'react'; import classNames from 'classnames'; -import { Formik } from 'formik'; - -import { IdentityVerificationAddDocumentResponse, ResidenceList } from '@deriv/api-types'; -import { Button } from '@deriv/components'; +import { Form, Formik, FormikErrors, FormikHelpers } from 'formik'; +import { ResidenceList, IdentityVerificationAddDocumentResponse } from '@deriv/api-types'; +import { Button, HintBox, Text } from '@deriv/components'; +import { Localize, localize } from '@deriv/translations'; import { + WS, + toMoment, filterObjProperties, - formatIDVFormValues, - getIDVNotApplicableOption, isDesktop, removeEmptyPropertiesFromObject, - toMoment, - WS, + formatIDVFormValues, + isMobile, } from '@deriv/shared'; import { observer, useStore } from '@deriv/stores'; -import { localize } from '@deriv/translations'; - import BackButtonIcon from 'Assets/ic-poi-back-btn.svg'; +import PoiNameDobExample from 'Assets/ic-poi-name-dob-example.svg'; +import FormBody from 'Components/form-body'; import FormFooter from 'Components/form-footer'; -import FormSubHeader from 'Components/form-sub-header'; import IDVForm from 'Components/forms/idv-form'; import PersonalDetailsForm from 'Components/forms/personal-details-form'; +import FormSubHeader from 'Components/form-sub-header'; import { - documentAdditionalError, - getExampleFormat, - isDocumentNumberValid, - makeSettingsRequest, validate, + makeSettingsRequest, validateName, + shouldHideHelperImage, + isDocumentTypeValid, + isAdditionalDocumentValid, + isDocumentNumberValid, } from 'Helpers/utils'; -import { TDocument, TIDVFormValues, TInputFieldValues } from 'Types'; +import { DUPLICATE_ACCOUNT_ERROR_MESSAGE, GENERIC_ERROR_MESSAGE } from 'Configs/poi-error-config'; +import { TIDVFormValues, TPersonalDetailsForm } from 'Types'; type TIDVDocumentSubmitProps = { handleBack: React.MouseEventHandler; handleViewComplete: () => void; is_from_external: boolean; selected_country: ResidenceList[0]; + getChangeableFields: () => Array; }; +type TIdvDocumentSubmitForm = TIDVFormValues & TPersonalDetailsForm; + const IdvDocumentSubmit = observer(({ handleBack, handleViewComplete, selected_country }: TIDVDocumentSubmitProps) => { const { client: { account_settings, getChangeableFields }, } = useStore(); const visible_settings = ['first_name', 'last_name', 'date_of_birth']; - const form_initial_values = filterObjProperties(account_settings, visible_settings) || {}; + const side_note_image = ; + + const form_initial_values = filterObjProperties(account_settings, visible_settings) as { + [Property in keyof TPersonalDetailsForm]: string; + }; if (form_initial_values.date_of_birth) { form_initial_values.date_of_birth = toMoment(form_initial_values.date_of_birth).format('YYYY-MM-DD'); @@ -52,7 +61,7 @@ const IdvDocumentSubmit = observer(({ handleBack, handleViewComplete, selected_c const changeable_fields = getChangeableFields(); - const initial_values = { + const initial_values: TIdvDocumentSubmitForm = { document_type: { id: '', text: '', @@ -64,27 +73,8 @@ const IdvDocumentSubmit = observer(({ handleBack, handleViewComplete, selected_c ...form_initial_values, }; - const IDV_NOT_APPLICABLE_OPTION = React.useMemo(() => getIDVNotApplicableOption(), []); - - const shouldHideHelperImage = (document_id: string) => document_id === IDV_NOT_APPLICABLE_OPTION.id; - - const isDocumentTypeValid = (document_type: TDocument) => { - if (!document_type?.text) { - return localize('Please select a document type.'); - } - return undefined; - }; - - const isAdditionalDocumentValid = (document_type: TDocument, document_additional: string) => { - const error_message = documentAdditionalError(document_additional, document_type.additional?.format); - if (error_message) { - return localize(error_message) + getExampleFormat(document_type.additional?.example_format); - } - return undefined; - }; - - const validateFields = (values: TIDVFormValues) => { - const errors: Partial = {}; + const validateFields = (values: TIdvDocumentSubmitForm) => { + const errors: FormikErrors> = {}; const { document_type, document_number, document_additional } = values; const needs_additional_document = !!document_type.additional; @@ -109,21 +99,26 @@ const IdvDocumentSubmit = observer(({ handleBack, handleViewComplete, selected_c return removeEmptyPropertiesFromObject(errors); }; - const submitHandler = async (values, { setSubmitting, setErrors }) => { + const submitHandler = async ( + values: TIdvDocumentSubmitForm, + { setSubmitting, setStatus }: FormikHelpers + ) => { setSubmitting(true); const request = makeSettingsRequest(values, changeable_fields); const data = await WS.setSettings(request); - if (data.error) { - setErrors({ error_message: data.error.message }); + if (data?.error) { + const response_error = + data.error?.code === 'DuplicateAccount' ? DUPLICATE_ACCOUNT_ERROR_MESSAGE : GENERIC_ERROR_MESSAGE; + setStatus({ error_message: response_error }); setSubmitting(false); return; } - const get_settings = WS.authorized.storage.getSettings(); - if (get_settings.error) { - setErrors({ error_message: data.error.message }); + const get_settings = await WS.authorized.storage.getSettings(); + if (get_settings?.error) { + setStatus({ error_message: get_settings?.error?.message ?? GENERIC_ERROR_MESSAGE }); setSubmitting(false); return; } @@ -137,7 +132,7 @@ const IdvDocumentSubmit = observer(({ handleBack, handleViewComplete, selected_c (response: IdentityVerificationAddDocumentResponse & { error: { message: string } }) => { setSubmitting(false); if (response.error) { - setErrors({ error_message: response.error.message }); + setStatus({ error_message: response?.error?.message ?? GENERIC_ERROR_MESSAGE }); return; } handleViewComplete(); @@ -154,33 +149,25 @@ const IdvDocumentSubmit = observer(({ handleBack, handleViewComplete, selected_c }} onSubmit={submitHandler} > - {({ - dirty, - errors, - handleBlur, - handleChange, - handleSubmit, - isSubmitting, - isValid, - setFieldValue, - touched, - values, - status, - }) => ( -
-
+ {({ dirty, isSubmitting, isValid, values, status }) => ( + + {status?.error_message && ( +
+ + {status.error_message} + + } + is_danger + className='hint-box-layout' + /> +
+ )} + - + ]} + /> + } /> -
+ {isDesktop() && (
+ )} ); diff --git a/packages/account/src/Components/poi/idv-status/idv-expired/__tests__/idv-expired.spec.tsx b/packages/account/src/Components/poi/idv-status/idv-expired/__tests__/idv-expired.spec.tsx deleted file mode 100644 index a0f151090751..000000000000 --- a/packages/account/src/Components/poi/idv-status/idv-expired/__tests__/idv-expired.spec.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react'; -import { screen, render, fireEvent } from '@testing-library/react'; -import { isDesktop, isMobile } from '@deriv/shared'; -import IdvExpired from '../idv-expired'; - -jest.mock('@deriv/components', () => { - const original_module = jest.requireActual('@deriv/components'); - return { - ...original_module, - Icon: jest.fn(() => mockedIcon), - }; -}); - -jest.mock('@deriv/shared', () => ({ - ...jest.requireActual('@deriv/shared'), - isDesktop: jest.fn(), - isMobile: jest.fn(), -})); - -beforeEach(() => { - (isDesktop as jest.Mock).mockReturnValue(true); - (isMobile as jest.Mock).mockReturnValue(false); - jest.clearAllMocks(); -}); - -describe('', () => { - const props = { - handleRequireSubmission: jest.fn(), - }; - - const testComponentRender = () => { - render(); - expect(screen.getByTestId('idv_expired_container')).toBeInTheDocument(); - expect(screen.getByText('mockedIcon')).toBeInTheDocument(); - expect(screen.getByRole('button', { name: /try again/i })).toBeInTheDocument(); - }; - - it('should render IdvExpired component on desktop', () => { - testComponentRender(); - }); - - it('should render IdvExpired component on mobile', () => { - (isDesktop as jest.Mock).mockReturnValue(false); - (isMobile as jest.Mock).mockReturnValue(true); - testComponentRender(); - }); - - it('should call handleRequireSubmission when try_again button is clicked', () => { - render(); - const try_again_btn = screen.getByRole('button', { name: /try again/i }); - fireEvent.click(try_again_btn); - expect(props.handleRequireSubmission).toBeCalledTimes(1); - }); -}); diff --git a/packages/account/src/Components/poi/idv-status/idv-expired/idv-expired.tsx b/packages/account/src/Components/poi/idv-status/idv-expired/idv-expired.tsx deleted file mode 100644 index bac7ec561865..000000000000 --- a/packages/account/src/Components/poi/idv-status/idv-expired/idv-expired.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react'; -import { Button, Icon, Text } from '@deriv/components'; -import { isMobile } from '@deriv/shared'; -import { localize } from '@deriv/translations'; - -type TIdvExpired = { - handleRequireSubmission: () => void; -}; - -const IdvExpired = ({ handleRequireSubmission }: TIdvExpired) => { - return ( -
- - - {isMobile() ? localize('ID verification failed') : localize('Verification of document number failed')} - - - {isMobile() - ? localize('The ID you submitted is expired.') - : localize( - 'It looks like your identity document has expired. Please try again with a valid document.' - )} - -
- ); -}; - -export default IdvExpired; diff --git a/packages/account/src/Components/poi/idv-status/idv-expired/index.js b/packages/account/src/Components/poi/idv-status/idv-expired/index.js deleted file mode 100644 index 6a966351c5b5..000000000000 --- a/packages/account/src/Components/poi/idv-status/idv-expired/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import IdvExpired from './idv-expired'; - -export default IdvExpired; diff --git a/packages/account/src/Components/poi/idv-status/idv-failed/__tests__/idv-failed.spec.tsx b/packages/account/src/Components/poi/idv-status/idv-failed/__tests__/idv-failed.spec.tsx new file mode 100644 index 000000000000..30f58c16ebd3 --- /dev/null +++ b/packages/account/src/Components/poi/idv-status/idv-failed/__tests__/idv-failed.spec.tsx @@ -0,0 +1,94 @@ +import React from 'react'; +import { render, screen, waitFor } from '@testing-library/react'; +import IdvFailed from '../idv-failed'; +import { idv_error_statuses } from '@deriv/shared'; + +jest.mock('@deriv/shared', () => ({ + ...jest.requireActual('@deriv/shared'), + WS: { + wait: jest.fn().mockResolvedValue(true), + }, + filterObjProperties: jest.fn(() => ({ + document_type: { + id: '', + text: '', + value: '', + example_format: '', + sample_image: '', + }, + document_number: '', + first_name: '', + last_name: '', + date_of_birth: '', + })), +})); + +jest.mock('Components/forms/personal-details-form', () => jest.fn(() =>
PersonalDetailsForm
)); +jest.mock('Components/forms/idv-form', () => jest.fn(() =>
IDVForm
)); +jest.mock('Assets/ic-poi-name-example.svg', () => jest.fn(() => 'PoiNameExample')); +jest.mock('Assets/ic-poi-dob-example.svg', () => jest.fn(() => 'PoiDobExample')); +jest.mock('Assets/ic-poi-name-dob-example.svg', () => jest.fn(() => 'PoiNameDobExample')); + +describe('', () => { + const mock_props: React.ComponentProps = { + getChangeableFields: jest.fn(() => []), + is_from_external: false, + residence_list: [], + handleSubmit: jest.fn(), + account_settings: { + citizen: 'gh', + }, + mismatch_status: idv_error_statuses.poi_name_mismatch, + latest_status: {}, + }; + + it('should render IDVfailed component with name mismatch message', async () => { + render(); + + await waitFor(() => { + expect(screen.getByTestId(idv_error_statuses.poi_name_mismatch)).toBeInTheDocument(); + expect(screen.getByText('PersonalDetailsForm')).toBeInTheDocument(); + }); + }); + + it('should render IDVfailed component with dob mismatch message', async () => { + const new_props = { ...mock_props, mismatch_status: idv_error_statuses.poi_dob_mismatch }; + render(); + + await waitFor(() => { + expect(screen.getByTestId(idv_error_statuses.poi_dob_mismatch)).toBeInTheDocument(); + expect(screen.queryByText('IDVForm')).not.toBeInTheDocument(); + }); + }); + + it('should render IDVfailed component with name & DOB mismatch message', async () => { + const new_props = { ...mock_props, mismatch_status: idv_error_statuses.poi_name_dob_mismatch }; + render(); + + await waitFor(() => { + expect(screen.getByTestId(idv_error_statuses.poi_name_dob_mismatch)).toBeInTheDocument(); + expect(screen.getByRole('button', { name: /Update profile/i })).toBeInTheDocument(); + }); + }); + + it('should render IDVfailed component with expired message', async () => { + const new_props = { ...mock_props, mismatch_status: idv_error_statuses.poi_expired }; + render(); + + await waitFor(() => { + expect(screen.getByTestId(idv_error_statuses.poi_expired)).toBeInTheDocument(); + expect(screen.getByText('IDVForm')).toBeInTheDocument(); + expect(screen.getByText('PersonalDetailsForm')).toBeInTheDocument(); + }); + }); + + it('should render IDVfailed component with verification failed message', async () => { + const new_props = { ...mock_props, mismatch_status: idv_error_statuses.poi_failed }; + render(); + + await waitFor(() => { + expect(screen.getByTestId(idv_error_statuses.poi_failed)).toBeInTheDocument(); + expect(screen.getByRole('button', { name: /Verify/i })).toBeInTheDocument(); + }); + }); +}); diff --git a/packages/account/src/Components/poi/idv-status/idv-failed/idv-failed.tsx b/packages/account/src/Components/poi/idv-status/idv-failed/idv-failed.tsx new file mode 100644 index 000000000000..808c9a3546af --- /dev/null +++ b/packages/account/src/Components/poi/idv-status/idv-failed/idv-failed.tsx @@ -0,0 +1,406 @@ +import React from 'react'; +import classNames from 'classnames'; +import { Form, Formik, FormikHelpers, FormikValues } from 'formik'; +import { + GetAccountStatus, + GetSettings, + IdentityVerificationAddDocumentResponse, + ResidenceList, +} from '@deriv/api-types'; +import { Button, DesktopWrapper, HintBox, Loading, Text } from '@deriv/components'; +import { + filterObjProperties, + getIDVNotApplicableOption, + getPropertyValue, + idv_error_statuses, + isEmptyObject, + isMobile, + removeEmptyPropertiesFromObject, + TIDVErrorStatus, + toMoment, + WS, +} from '@deriv/shared'; +import { Localize, localize } from '@deriv/translations'; +import PoiNameExample from '../../../../Assets/ic-poi-name-example.svg'; +import PoiDobExample from '../../../../Assets/ic-poi-dob-example.svg'; +import PoiNameDobExample from '../../../../Assets/ic-poi-name-dob-example.svg'; +import FormBody from '../../../form-body'; +import IDVForm from '../../../forms/idv-form'; +import FormFooter from '../../../form-footer'; +import FormSubHeader from '../../../form-sub-header'; +import PersonalDetailsForm from '../../../forms/personal-details-form.jsx'; +import { + getIDVDocumentType, + isAdditionalDocumentValid, + isDocumentNumberValid, + isDocumentTypeValid, + makeSettingsRequest, + shouldHideHelperImage, + validate, + validateName, +} from '../../../../Helpers/utils'; +import { GENERIC_ERROR_MESSAGE, DUPLICATE_ACCOUNT_ERROR_MESSAGE } from '../../../../Configs/poi-error-config'; +import { API_ERROR_CODES } from '../../../../Constants/api-error-codes'; +import { TIDVFormValues, TPersonalDetailsForm } from '../../../../Types'; +import LoadErrorMessage from '../../../load-error-message'; + +type TRestState = { + api_error: string; + errors?: boolean; + form_initial_values: TIdvFailedForm; + changeable_fields: string[]; +}; + +type TIdvFailed = { + account_settings: GetSettings; + getChangeableFields: () => string[]; + handleSubmit: () => void; + is_from_external: boolean; + mismatch_status: TIDVErrorStatus; + residence_list: ResidenceList; + latest_status: DeepRequired['authentication']['attempts']['latest']; + selected_country?: ResidenceList[0]; +}; + +type TIDVFailureConfig = { + required_fields: string[]; + side_note_image: JSX.Element; + failure_message: React.ReactNode; + inline_note_text: React.ReactNode; +}; + +type TIdvFailedForm = Partial & Partial; + +const IdvFailed = ({ + getChangeableFields, + is_from_external, + residence_list, + account_settings, + handleSubmit, + mismatch_status = idv_error_statuses.poi_failed, + latest_status, + selected_country, +}: TIdvFailed) => { + const [idv_failure, setIdvFailure] = React.useState({ + required_fields: [], + side_note_image: , + failure_message: null, + inline_note_text: null, + }); + const [is_loading, setIsLoading] = React.useState(true); + const [rest_state, setRestState] = React.useState({ + api_error: '', + errors: false, + form_initial_values: {}, + changeable_fields: [], + }); + + const is_document_upload_required = React.useMemo( + () => [idv_error_statuses.poi_expired, idv_error_statuses.poi_failed].includes(mismatch_status), + [mismatch_status] + ); + + /** + * If user needs to resubmit IDV document, the country should be the new selected country + * If user needs to update Personal info, the country should be the country of the latest status + */ + const chosen_country = React.useMemo( + () => + is_document_upload_required + ? selected_country ?? {} + : residence_list.find(residence_data => residence_data.value === latest_status?.country_code) ?? {}, + [selected_country, is_document_upload_required, latest_status?.country_code, residence_list] + ); + + const IDV_NOT_APPLICABLE_OPTION = React.useMemo(() => getIDVNotApplicableOption(), []); + + const generateIDVError = React.useCallback(() => { + const document_name = is_document_upload_required + ? getPropertyValue(chosen_country, ['identity', 'services', 'idv', 'documents_supported']) + : getIDVDocumentType(latest_status, chosen_country); + switch (mismatch_status) { + case idv_error_statuses.poi_name_dob_mismatch: + return { + required_fields: ['first_name', 'last_name', 'date_of_birth'], + side_note_image: , + inline_note_text: ( + ]} + values={{ document_name }} + /> + ), + failure_message: ( + ]} + /> + ), + }; + case idv_error_statuses.poi_name_mismatch: + return { + required_fields: ['first_name', 'last_name'], + side_note_image: , + inline_note_text: ( + ]} + values={{ document_name }} + /> + ), + failure_message: ( + ]} + /> + ), + }; + case idv_error_statuses.poi_dob_mismatch: + return { + required_fields: ['date_of_birth'], + side_note_image: , + inline_note_text: ( + ]} + values={{ document_name }} + /> + ), + failure_message: ( + ]} + /> + ), + }; + default: + return { + required_fields: ['first_name', 'last_name', 'date_of_birth'], + side_note_image: , + inline_note_text: ( + ]} + values={{ document_name }} + /> + ), + failure_message: ( + + ), + }; + } + }, [latest_status, mismatch_status, chosen_country]); + + React.useEffect(() => { + const initializeFormValues = async (required_fields: string[]) => { + await WS.wait('get_settings'); + const form_data = filterObjProperties(account_settings, required_fields); + if (form_data.date_of_birth) { + form_data.date_of_birth = toMoment(form_data.date_of_birth).format('YYYY-MM-DD'); + } + let initial_form_values = form_data; + if (is_document_upload_required) { + initial_form_values = { + document_type: { + id: '', + text: '', + value: '', + example_format: '', + sample_image: '', + }, + document_number: '', + ...initial_form_values, + }; + } + setRestState({ + form_initial_values: { ...initial_form_values }, + changeable_fields: [...getChangeableFields()], + api_error: '', + }); + setIsLoading(false); + }; + + const error_config = generateIDVError(); + setIdvFailure(error_config); + initializeFormValues(error_config?.required_fields ?? []).catch(e => { + setRestState({ + form_initial_values: {}, + changeable_fields: [], + api_error: e?.error?.message, + }); + }); + }, [mismatch_status, account_settings, is_document_upload_required, getChangeableFields, generateIDVError]); + + const onSubmit = async (values: TIdvFailedForm, { setStatus, setSubmitting }: FormikHelpers) => { + setSubmitting(true); + setStatus({ error_msg: null }); + const { document_number, document_type } = values; + const request = makeSettingsRequest( + values, + rest_state?.changeable_fields ? [...rest_state.changeable_fields] : [] + ); + const data = await WS.setSettings(request); + + if (data.error) { + const response_error = + data.error?.code === API_ERROR_CODES.DUPLICATE_ACCOUNT + ? DUPLICATE_ACCOUNT_ERROR_MESSAGE + : GENERIC_ERROR_MESSAGE; + setStatus({ error_msg: response_error }); + setSubmitting(false); + } else { + const response = await WS.authorized.storage.getSettings(); + if (response.error) { + setRestState(prev_state => ({ ...prev_state, api_error: response.error.message })); + setSubmitting(false); + return; + } + const submit_data = { + identity_verification_document_add: 1, + document_number, + document_type: document_type?.id, + issuing_country: chosen_country.value, + }; + + if (!submit_data.document_type || submit_data.document_type === IDV_NOT_APPLICABLE_OPTION.id) { + setSubmitting(false); + handleSubmit(); + return; + } + WS.send(submit_data).then((resp: IdentityVerificationAddDocumentResponse) => { + setSubmitting(false); + if (resp.error) { + return; + } + handleSubmit(); + }); + } + }; + + const validateFields = (values: TIdvFailedForm) => { + const errors: Record = {}; + if (is_document_upload_required) { + const { document_type, document_number, document_additional } = values; + const needs_additional_document = !!document_type?.additional; + errors.document_type = isDocumentTypeValid(document_type as FormikValues); + if (!shouldHideHelperImage(document_type?.id as string)) { + if (needs_additional_document) { + errors.document_additional = isAdditionalDocumentValid(document_type, document_additional); + } + errors.document_number = isDocumentNumberValid(document_number ?? '', document_type as FormikValues); + } + } + + const validateValues = validate(errors, values); + + validateValues(val => val, idv_failure?.required_fields ?? [], localize('This field is required')); + + if (values.first_name) { + errors.first_name = validateName(values.first_name); + } + if (values.last_name) { + errors.last_name = validateName(values.last_name); + } + + setRestState(prev_state => ({ + ...prev_state, + errors: !isEmptyObject(removeEmptyPropertiesFromObject(errors)), + })); + return removeEmptyPropertiesFromObject(errors); + }; + + if (rest_state?.api_error) return ; + + if (is_loading && Object.keys(rest_state?.form_initial_values ?? {}).length === 0) { + return ; + } + + return ( + + {({ isSubmitting, isValid, dirty, status }) => ( +
+ + + + + {(status?.error_msg || idv_failure?.failure_message) && ( + + {status?.error_msg ?? idv_failure?.failure_message} + + } + is_danger + /> + )} + {is_document_upload_required && ( + + + + + + + + + )} + + + {!is_from_external && ( + - ); - - if (identity_status === identity_status_codes.none || has_require_submission || allow_poi_resubmission) { - return ( - + + const verification_status = populateVerificationStatus(account_status); + const { + idv, + allow_poi_resubmission, + identity_last_attempt, + identity_status, + is_age_verified, + is_idv_disallowed, + manual, + needs_poa, + onfido, + } = verification_status; + const should_ignore_idv = is_high_risk && is_withdrawal_lock; + + if (!should_allow_authentication && !is_age_verified) { + return ; + } + + const onClickRedirectButton = () => { + const platform = platforms[from_platform.ref]; + const { is_hard_redirect = false, url = '' } = platform ?? {}; + if (is_hard_redirect) { + window.location.href = url; + window.sessionStorage.removeItem('config.platform'); + } else { + routeBackTo(from_platform.route); + } + }; + + const redirect_button = should_show_redirect_btn && ( + ); - } else if ( - !identity_last_attempt || - // Prioritise verified status from back office. How we know this is if there is mismatch between current statuses (Should be refactored) - (identity_status === identity_status_codes.verified && identity_status !== identity_last_attempt.status) - ) { - switch (identity_status) { - case identity_status_codes.pending: + + const should_show_mismatch_form = + idv.submissions_left > 0 && + [identity_status_codes.rejected, identity_status_codes.suspected, identity_status_codes.expired].includes( + idv.status + ); + + if ( + identity_status === identity_status_codes.none || + has_require_submission || + allow_poi_resubmission || + should_show_mismatch_form + ) { + return ( + + ); + } else if ( + !identity_last_attempt || + // Prioritise verified status from back office. How we know this is if there is mismatch between current statuses (Should be refactored) + (identity_status === identity_status_codes.verified && identity_status !== identity_last_attempt.status) + ) { + switch (identity_status) { + case identity_status_codes.pending: + return ( + + ); + case identity_status_codes.verified: + return ( + + ); + case identity_status_codes.expired: + return ( + + ); + case identity_status_codes.rejected: + case identity_status_codes.suspected: + return ; + default: + break; + } + } + + switch (identity_last_attempt.service) { + case service_code.idv: return ( - ); - case identity_status_codes.verified: + case service_code.onfido: return ( - ); - case identity_status_codes.expired: + case service_code.manual: return ( - ); - case identity_status_codes.rejected: - case identity_status_codes.suspected: - return ; default: - break; + return null; } } - - switch (identity_last_attempt.service) { - case service_code.idv: - return ( - - ); - case service_code.onfido: - return ( - - ); - case service_code.manual: - return ( - - ); - default: - return null; - } -}); +); export default ProofOfIdentityContainer; diff --git a/packages/account/src/Sections/Verification/ProofOfIdentity/proof-of-identity-submission-for-mt5.jsx b/packages/account/src/Sections/Verification/ProofOfIdentity/proof-of-identity-submission-for-mt5.jsx index 371aafc87833..f7993a0b0790 100644 --- a/packages/account/src/Sections/Verification/ProofOfIdentity/proof-of-identity-submission-for-mt5.jsx +++ b/packages/account/src/Sections/Verification/ProofOfIdentity/proof-of-identity-submission-for-mt5.jsx @@ -1,17 +1,28 @@ import React from 'react'; import { AutoHeightWrapper } from '@deriv/components'; -import { WS, isVerificationServiceSupported, formatIDVFormValues } from '@deriv/shared'; +import { WS, isVerificationServiceSupported, formatIDVFormValues, formatIDVError } from '@deriv/shared'; import { useStore, observer } from '@deriv/stores'; import Unsupported from '../../../Components/poi/status/unsupported'; import OnfidoUpload from './onfido-sdk-view-container'; import { identity_status_codes, submission_status_code, service_code } from './proof-of-identity-utils'; +import IdvFailed from '../../../Components/poi/idv-status/idv-failed'; import { IdvDocSubmitOnSignup } from '../../../Components/poi/poi-form-on-signup/idv-doc-submit-on-signup/idv-doc-submit-on-signup'; import { makeSettingsRequest } from '../../../Helpers/utils'; const POISubmissionForMT5 = observer( - ({ idv, is_idv_disallowed, onfido, onStateChange, citizen_data, has_idv_error, residence_list }) => { + ({ + idv, + is_idv_disallowed, + onfido, + onStateChange, + citizen_data, + is_from_external, + residence_list, + identity_last_attempt, + }) => { const [submission_status, setSubmissionStatus] = React.useState(); // submitting const [submission_service, setSubmissionService] = React.useState(); + const [idv_mismatch_status, setIdvMismatchStatus] = React.useState(null); const { client, notifications, traders_hub } = useStore(); const { account_settings, getChangeableFields } = client; @@ -20,12 +31,21 @@ const POISubmissionForMT5 = observer( React.useEffect(() => { if (citizen_data) { - const { submissions_left: idv_submissions_left } = idv; + const { submissions_left: idv_submissions_left, last_rejected, status } = idv; const { submissions_left: onfido_submissions_left } = onfido; const is_idv_supported = isVerificationServiceSupported(residence_list, account_settings, 'idv'); const is_onfido_supported = isVerificationServiceSupported(residence_list, account_settings, 'onfido'); if (is_idv_supported && Number(idv_submissions_left) > 0 && !is_idv_disallowed && !is_eu_user) { setSubmissionService(service_code.idv); + if ( + [ + identity_status_codes.rejected, + identity_status_codes.suspected, + identity_status_codes.expired, + ].includes(status) + ) { + setIdvMismatchStatus(formatIDVError(last_rejected, status)); + } } else if (onfido_submissions_left && is_onfido_supported) { setSubmissionService(service_code.onfido); } else { @@ -78,15 +98,23 @@ const POISubmissionForMT5 = observer( handlePOIComplete(); }); }; - if (submission_status === submission_status_code.submitting) { switch (submission_service) { case service_code.idv: - return ( + return idv_mismatch_status ? ( + + ) : ( diff --git a/packages/account/src/Sections/Verification/ProofOfIdentity/proof-of-identity-submission.jsx b/packages/account/src/Sections/Verification/ProofOfIdentity/proof-of-identity-submission.jsx index aa48eef66f09..687d85ac89ef 100644 --- a/packages/account/src/Sections/Verification/ProofOfIdentity/proof-of-identity-submission.jsx +++ b/packages/account/src/Sections/Verification/ProofOfIdentity/proof-of-identity-submission.jsx @@ -1,16 +1,15 @@ import React from 'react'; - -import { WS } from '@deriv/shared'; +import { formatIDVError, WS, idv_error_statuses } from '@deriv/shared'; import { observer, useStore } from '@deriv/stores'; - +import CountrySelector from 'Components/poi/poi-country-selector'; import IdvDocumentSubmit from 'Components/poi/idv-document-submit'; -import IdvUploadComplete from 'Components/poi/idv-status/idv-submit-complete'; -import PoiCountrySelector from 'Components/poi/poi-country-selector'; +import IdvFailed from 'Components/poi/idv-status/idv-failed'; +import IdvSubmitComplete from 'Components/poi/idv-status/idv-submit-complete'; import Unsupported from 'Components/poi/status/unsupported'; import UploadComplete from 'Components/poi/status/upload-complete'; import OnfidoUpload from './onfido-sdk-view-container'; -import { identity_status_codes, service_code,submission_status_code } from './proof-of-identity-utils'; +import { identity_status_codes, service_code, submission_status_code } from './proof-of-identity-utils'; const POISubmission = observer( ({ @@ -27,15 +26,15 @@ const POISubmission = observer( redirect_button, residence_list, setIsCfdPoiCompleted, + should_show_mismatch_form, }) => { const [submission_status, setSubmissionStatus] = React.useState(); // selecting, submitting, complete const [submission_service, setSubmissionService] = React.useState(); const [selected_country, setSelectedCountry] = React.useState({}); - const { client, common, notifications } = useStore(); + const { client, notifications } = useStore(); const { account_settings, getChangeableFields } = client; - const { current_language } = common; const { refreshNotifications } = notifications; const handleSelectionNext = () => { @@ -75,6 +74,8 @@ const POISubmission = observer( [residence_list] ); + const mismatch_status = formatIDVError(idv.last_rejected, idv.status); + React.useEffect(() => { if (submission_status !== submission_status_code.complete) { if ((has_require_submission || allow_poi_resubmission) && identity_last_attempt) { @@ -106,6 +107,13 @@ const POISubmission = observer( default: break; } + } else if ( + mismatch_status && + ![idv_error_statuses.poi_expired, idv_error_statuses.poi_failed].includes(mismatch_status) && + idv.submissions_left > 0 + ) { + setSubmissionService(service_code.idv); + setSubmissionStatus(submission_status_code.submitting); } else { setSubmissionStatus(submission_status_code.selecting); } @@ -122,20 +130,31 @@ const POISubmission = observer( switch (submission_status) { case submission_status_code.selecting: { return ( - ); } + case submission_status_code.submitting: { switch (submission_service) { case service_code.idv: - return ( + return should_show_mismatch_form ? ( + + ) : ( diff --git a/packages/account/src/Styles/account.scss b/packages/account/src/Styles/account.scss index 09181ba539aa..88b794eb97c2 100644 --- a/packages/account/src/Styles/account.scss +++ b/packages/account/src/Styles/account.scss @@ -200,58 +200,6 @@ $MIN_HEIGHT_FLOATING: calc( overflow: hidden; } - &__scrollbars_container { - height: 100%; - padding-top: 2.4rem; - padding-bottom: 6.4rem; - - &-wrapper { - overflow-x: hidden; - overflow-y: auto; - } - - &--grid-layout { - display: grid; - grid-gap: 4px; - - .dc-input { - margin-bottom: 0; - } - - .dc-dropdown-container { - .dc-dropdown__display-text, - .dc-list__item-text { - text-transform: unset; - } - } - - @include mobile { - padding: 0 1.6rem; - overflow-x: hidden; - overflow-y: auto; - grid-template-rows: auto; - - & .account-form__header { - &:first-child { - padding-top: 2.4rem; - margin-bottom: 3.2rem; - } - } - } - } - - @include desktop { - padding-left: 16px; - padding-right: 16px; - } - - @include mobile { - height: unset; - padding-top: unset; - padding-bottom: unset; - } - } - &-form { overflow: hidden; height: 100%; @@ -416,144 +364,6 @@ $MIN_HEIGHT_FLOATING: calc( margin-left: 0; } - &__footer { - height: 80px; - position: absolute; - bottom: 0; - left: 0; - display: flex; - width: 100%; - padding: 16px 24px; - align-items: center; - justify-content: flex-end; - z-index: 4; - border-radius: 0 $BORDER_RADIUS $BORDER_RADIUS 0; - border-top: 1px solid var(--general-section-1); - background-color: var(--general-main-1); - - &--reset { - padding: 2.4rem 0; - position: relative; - margin-top: 2rem; - } - - .back-btn { - margin-right: 8px; - - .back-btn-icon { - margin-right: 0.8rem; - } - - span { - display: inline-flex; - align-items: center; - } - } - - &-note { - color: var(--text-prominent); - font-size: var(--text-size-xxs); - line-height: 1.5; - text-align: right; - min-width: 27.6rem; - max-width: 36.6rem; - height: 3.6rem; - - @include mobile { - width: auto; - text-align: center; - align-self: center; - - &--dashboard { - margin: 0 1.6rem; - text-align: left; - } - } - } - - &-btn { - height: 4rem; - margin: 0 0 0 1.6rem; - - &-wrapper { - align-items: normal; - display: flex; - flex-direction: row; - - @include mobile { - flex-direction: column; - } - } - - &-dashboard { - .dc-btn__text { - color: var(--text-prominent); - } - } - - &-dashboard:hover { - background-color: unset !important; - } - - @include desktop { - margin-left: 1.6rem; - - &-wrapper--dashboard { - display: flex; - justify-content: space-between; - } - } - - @include mobile { - margin: 0 2.4rem; - - &--has-bottom-margin { - margin-bottom: 1.6rem; - } - } - } - - &--dashboard { - width: 68.5rem; - margin-left: 6rem; - - @include mobile { - width: 100vw; - margin-left: unset; - - & .account-form__footer-btn { - min-width: 35%; - - &-wrapper { - flex-direction: row; - } - } - - & > div { - display: flex; - justify-content: space-around; - } - } - } - - &-poa { - margin-left: unset; - } - - &-all-fields-required { - padding-bottom: 2.4rem; - padding-top: 0.8rem; - } - - @include mobile { - padding: 16px 0; - flex-direction: column; - height: auto; - align-items: initial; - border-top: 2px solid var(--general-section-1); - } - } - &__error-message { padding: 1rem 0; position: unset; @@ -2035,239 +1845,6 @@ $MIN_HEIGHT_FLOATING: calc( /* stylelint-enable */ -/** @define proof-of-identity */ -.proof-of-identity { - width: 100%; - height: 100%; - - &__main-container { - max-width: 68.2rem; - } - - .min-height { - min-height: 50vh; - - @include mobile { - min-height: unset; - } - } - - &__container { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: center; - - @include mobile { - min-height: unset; - overflow-y: scroll; - justify-content: center; - } - - &--reset { - align-items: normal; - @include mobile { - overflow-y: unset; - padding: 1.6rem; - } - .proof-of-identity__submit-button { - @include mobile { - margin: unset; - width: 100%; - } - } - .account-form__footer { - @include mobile { - padding: 1.6rem 2.4rem; - } - } - .form-body { - @include desktop { - z-index: 5; - } - } - } - - .icon { - width: 128px; - height: 128px; - margin-top: 5.2rem; - margin-bottom: 2.6rem; - - @include mobile { - width: 72px; - height: 72px; - margin-top: 2.6rem; - } - } - - .external-dropdown { - .dc-dropdown-list { - z-index: 5; - } - } - } - - &__redirection { - .dc-btn { - margin-top: 3.2rem; - height: 4rem; - - @include mobile { - margin: 1.6rem 0; - padding: 1.6rem; - width: 100%; - } - } - } - - &__country-text { - margin-bottom: 1.6rem; - } - - &__text { - @include mobile { - width: 94%; - text-align: center; - } - } - - &__dropdown-container { - margin-top: 1.6rem; - } - - &__inner-container { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - width: 100%; - - @include mobile { - flex-direction: column; - } - } - - &__header { - margin: 5.4rem 0 1.6rem; - - @include mobile { - margin: 2.4rem 0 0.8rem; - } - } - - &__footer.external-footer { - padding: unset; - position: unset; - top: unset; - bottom: unset; - border: none; - height: fit-content; - z-index: 4; - } - - &__footer { - @include mobile { - display: flex; - flex-direction: row; - align-items: center; - justify-content: flex-end; - position: fixed; - bottom: 0; - } - } - - &__footer-alert { - margin-right: auto; - } - - &__submit-button { - @include mobile { - margin-right: 1.2rem; - } - } - - &__fieldset { - width: 39.5rem; - - @include mobile { - width: 94%; - margin: 0.4rem 0 3.2rem; - } - - .document-dropdown { - margin: 0.4rem 0 3.2rem; - } - - .country-dropdown { - min-height: 35.2rem; - } - } - - &__fieldset-container { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - - @include mobile { - width: 100%; - } - } - - &__fieldset-input { - width: 39.5rem; - - @include mobile { - width: 94%; - margin-top: 0.4rem; - } - } - - &__sample-container { - margin-left: 1.6rem; - - @include mobile { - margin-left: unset; - width: 94%; - } - } - - &__sample-container-external { - margin-top: 2.8rem; - } - - &__image-container { - width: fit-content; - height: fit-content; - padding: 8px; - border-radius: 4px; - background-color: $color-grey-2; - } - - &__image { - max-width: 24.5rem; - border-radius: 4px; - object-fit: contain; - - @include mobile { - max-width: calc(95vw - 16px); - } - } - - &__redirect { - width: auto !important; - } - - .text { - display: block; - } - - .btm-spacer { - margin-bottom: 1.6rem; - } -} - /** @define closing-account; weak */ .closing-account { max-width: 67.2rem; diff --git a/packages/account/src/Types/common.type.ts b/packages/account/src/Types/common.type.ts index c956e71dfff2..dcf351c133a4 100644 --- a/packages/account/src/Types/common.type.ts +++ b/packages/account/src/Types/common.type.ts @@ -1,8 +1,7 @@ /** Add types that are shared between components */ import React from 'react'; -import { FormikHandlers, FormikProps, FormikValues } from 'formik'; -import { Authorize, IdentityVerificationAddDocumentResponse, ResidenceList } from '@deriv/api-types'; import { Redirect } from 'react-router-dom'; +import { Authorize, IdentityVerificationAddDocumentResponse } from '@deriv/api-types'; import { Platforms } from '@deriv/shared'; export type TToken = { @@ -105,15 +104,6 @@ type TIdentity = { }; }; -export type TResidenseList = { - identity: TIdentity; - phone_idd: string; - tin_format: string[]; - disabled: string; - text: string; - value: string; -}; - export type TFile = { path: string; lastModified: number; @@ -132,33 +122,15 @@ export type TPOIStatus = { }; export type TPersonalDetailsForm = { - warning_items?: Record; - is_virtual?: boolean; - is_mf?: boolean; - is_svg?: boolean; - is_qualified_for_idv?: boolean; - should_hide_helper_image: boolean; - is_appstore?: boolean; - editable_fields: Array; - has_real_account?: boolean; - residence_list?: ResidenceList; - is_fully_authenticated?: boolean; - account_opening_reason_list?: Record[]; - closeRealAccountSignup: () => void; - salutation_list?: Record[]; - is_rendered_for_onfido?: boolean; - should_close_tooltip?: boolean; - setShouldCloseTooltip?: (should_close_tooltip: boolean) => void; -} & FormikProps; + first_name: string; + last_name: string; + date_of_birth: string; +}; export type TInputFieldValues = Record; export type TIDVVerificationResponse = IdentityVerificationAddDocumentResponse & { error: { message: string } }; -export type TVerificationStatus = Readonly< - Record<'none' | 'pending' | 'rejected' | 'verified' | 'expired' | 'suspected', string> ->; - export type TDocument = { id: string; text: string; @@ -171,6 +143,10 @@ export type TDocument = { }; }; +export type TVerificationStatus = Readonly< + Record<'none' | 'pending' | 'rejected' | 'verified' | 'expired' | 'suspected', string> +>; + export type TIDVFormValues = { document_type: TDocument; document_number: string; @@ -178,14 +154,6 @@ export type TIDVFormValues = { error_message?: string; }; -export type TIDVForm = { - selected_country: ResidenceList[0]; - hide_hint?: boolean; - class_name?: string; - can_skip_document_verification: boolean; -} & Partial & - FormikProps; - export type TPlatforms = typeof Platforms[keyof typeof Platforms]; export type TServerError = { diff --git a/packages/analytics/src/index.ts b/packages/analytics/src/index.ts index c338fac2bec1..43de7ed9c23e 100644 --- a/packages/analytics/src/index.ts +++ b/packages/analytics/src/index.ts @@ -1 +1,2 @@ export { default as RudderStack } from './rudderstack'; +export type { TEvents } from './rudderstack'; diff --git a/packages/analytics/src/rudderstack.ts b/packages/analytics/src/rudderstack.ts index 153e919b2c3a..489db83520cb 100644 --- a/packages/analytics/src/rudderstack.ts +++ b/packages/analytics/src/rudderstack.ts @@ -133,7 +133,7 @@ type IdentifyAction = { language: string; }; -type TEvents = { +export type TEvents = { ce_chart_types_form: ChartTypesFormAction; ce_indicators_types_form: IndicatorsTypesFormAction; ce_market_types_form: MarketTypesFormAction; diff --git a/packages/api/src/APIProvider.tsx b/packages/api/src/APIProvider.tsx index 906e18837f27..862a58a6fc6e 100644 --- a/packages/api/src/APIProvider.tsx +++ b/packages/api/src/APIProvider.tsx @@ -3,7 +3,7 @@ import React, { PropsWithChildren } from 'react'; import DerivAPIBasic from '@deriv/deriv-api/dist/DerivAPIBasic'; import { getAppId, getSocketURL, useWS } from '@deriv/shared'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; +// import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; import APIContext from './APIContext'; declare global { @@ -60,7 +60,7 @@ const APIProvider = ({ children, standalone = false }: PropsWithChildren {children} - + {/* */} ); diff --git a/packages/api/src/hooks/index.ts b/packages/api/src/hooks/index.ts index 676110c7fc2a..db9c782955b0 100644 --- a/packages/api/src/hooks/index.ts +++ b/packages/api/src/hooks/index.ts @@ -35,3 +35,4 @@ export { default as useTradingPlatformPasswordChange } from './useTradingPlatfor export { default as useTransactions } from './useTransactions'; export { default as useTransferBetweenAccounts } from './useTransferBetweenAccounts'; export { default as useWalletAccountsList } from './useWalletAccountsList'; +export { default as useVerifyEmail } from './useVerifyEmail'; diff --git a/packages/appstore/src/components/cfds-listing/cfds-listing.scss b/packages/appstore/src/components/cfds-listing/cfds-listing.scss index 9e8c6e8b8f16..3f8915174632 100644 --- a/packages/appstore/src/components/cfds-listing/cfds-listing.scss +++ b/packages/appstore/src/components/cfds-listing/cfds-listing.scss @@ -879,6 +879,20 @@ position: relative; width: 100%; + .poi-form-on-signup__fields { + .dc-autocomplete { + margin-bottom: 0; + } + } + + .account-form__poi-confirm-example { + gap: 1.6rem; + + @include mobile { + gap: 0; + } + } + &__body { width: 100%; .poi-form-on-signup { @@ -935,6 +949,18 @@ padding-top: 1.6rem; } } + + .proof-of-identity__mismatch-container { + max-width: 70.2rem; + margin-inline: auto; + + .account__scrollbars_container { + padding-top: 2.4rem; + } + .dc-themed-scrollbars { + padding-inline: 1.6rem; + } + } } &__form { diff --git a/packages/bot-web-ui/package.json b/packages/bot-web-ui/package.json index 286723187417..85012700679b 100644 --- a/packages/bot-web-ui/package.json +++ b/packages/bot-web-ui/package.json @@ -70,7 +70,7 @@ "@datadog/browser-logs": "^4.36.0", "@deriv/bot-skeleton": "^1.0.0", "@deriv/components": "^1.0.0", - "@deriv/deriv-charts": "1.3.6", + "@deriv/deriv-charts": "1.4.0", "@deriv/shared": "^1.0.0", "@deriv/stores": "^1.0.0", "@deriv/translations": "^1.0.0", diff --git a/packages/bot-web-ui/src/components/bot-notification-messages/__tests__/bot-notification-messages.spec.tsx b/packages/bot-web-ui/src/components/bot-notification-messages/__tests__/bot-notification-messages.spec.tsx index 0d78d55be055..0341c0e713a0 100644 --- a/packages/bot-web-ui/src/components/bot-notification-messages/__tests__/bot-notification-messages.spec.tsx +++ b/packages/bot-web-ui/src/components/bot-notification-messages/__tests__/bot-notification-messages.spec.tsx @@ -16,9 +16,6 @@ jest.mock('@deriv/bot-skeleton', () => ({ ...jest.requireActual('@deriv/bot-skeleton'), blocksCoordinate: jest.fn(), })); -jest.mock('@deriv/deriv-charts', () => ({ - setSmartChartsPublicPath: jest.fn(), -})); describe('BotNotificationMessages', () => { let wrapper: ({ children }: { children: JSX.Element }) => JSX.Element, mock_DBot_store: RootStore | undefined; diff --git a/packages/bot-web-ui/src/components/chart/__tests__/toolbar-widgets.spec.tsx b/packages/bot-web-ui/src/components/chart/__tests__/toolbar-widgets.spec.tsx index 0e0effa13c49..07a9b8c8eedc 100644 --- a/packages/bot-web-ui/src/components/chart/__tests__/toolbar-widgets.spec.tsx +++ b/packages/bot-web-ui/src/components/chart/__tests__/toolbar-widgets.spec.tsx @@ -22,6 +22,7 @@ jest.mock('@deriv/bot-skeleton/src/scratch/hooks/block_svg', () => jest.fn()); // // Mocking the imports from @deriv/deriv-charts jest.mock('@deriv/deriv-charts', () => ({ + ...jest.requireActual('@deriv/deriv-charts'), __esModule: true, ChartMode: jest.fn(() =>
Mocked ChartMode
), DrawTools: jest.fn(() =>
Mocked DrawTools
), @@ -29,7 +30,6 @@ jest.mock('@deriv/deriv-charts', () => ({ StudyLegend: jest.fn(() =>
Mocked StudyLegend
), ToolbarWidget: jest.fn(({ children }) =>
{children}
), Views: jest.fn(() =>
Mocked Views
), - setSmartChartsPublicPath: jest.fn(), })); describe('ToolbarWidgets', () => { diff --git a/packages/bot-web-ui/src/components/contract-card-loading/__tests__/contract-card-loading.spec.tsx b/packages/bot-web-ui/src/components/contract-card-loading/__tests__/contract-card-loading.spec.tsx index c947b59ac3d6..fa7935458d2f 100644 --- a/packages/bot-web-ui/src/components/contract-card-loading/__tests__/contract-card-loading.spec.tsx +++ b/packages/bot-web-ui/src/components/contract-card-loading/__tests__/contract-card-loading.spec.tsx @@ -13,10 +13,6 @@ jest.mock('@deriv/bot-skeleton/src/scratch/dbot', () => ({ })); jest.mock('@deriv/bot-skeleton/src/scratch/hooks/block_svg', () => jest.fn()); -jest.mock('@deriv/deriv-charts', () => ({ - setSmartChartsPublicPath: jest.fn(), -})); - describe('ContractCardLoader', () => { let wrapper: ({ children }: { children: JSX.Element }) => JSX.Element; beforeAll(() => { diff --git a/packages/bot-web-ui/src/components/contract-result-overlay/contract-result-overlay.spec.tsx b/packages/bot-web-ui/src/components/contract-result-overlay/contract-result-overlay.spec.tsx index 277e5ea6c0de..155ca9a8418b 100644 --- a/packages/bot-web-ui/src/components/contract-result-overlay/contract-result-overlay.spec.tsx +++ b/packages/bot-web-ui/src/components/contract-result-overlay/contract-result-overlay.spec.tsx @@ -13,9 +13,6 @@ jest.mock('@deriv/bot-skeleton/src/scratch/dbot', () => ({ unHighlightAllBlocks: jest.fn(), })); jest.mock('@deriv/bot-skeleton/src/scratch/hooks/block_svg', () => jest.fn()); -jest.mock('@deriv/deriv-charts', () => ({ - setSmartChartsPublicPath: jest.fn(), -})); describe('ContractResultOverlay', () => { let wrapper: ({ children }: { children: JSX.Element }) => JSX.Element, mock_DBot_store: RootStore | undefined; diff --git a/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/bot-preview.spec.tsx b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/bot-preview.spec.tsx index 5b7797191e07..d46c2fb53eda 100644 --- a/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/bot-preview.spec.tsx +++ b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/bot-preview.spec.tsx @@ -12,9 +12,6 @@ jest.mock('@deriv/bot-skeleton/src/scratch/dbot', () => ({ unHighlightAllBlocks: jest.fn(), })); jest.mock('@deriv/bot-skeleton/src/scratch/hooks/block_svg', () => jest.fn()); -jest.mock('@deriv/deriv-charts', () => ({ - setSmartChartsPublicPath: jest.fn(), -})); describe('BotPreview', () => { it('should render BotPreview component with ref', () => { const mock_store = mockStore({}); diff --git a/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/icon-radio.spec.tsx b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/icon-radio.spec.tsx new file mode 100644 index 000000000000..5851f7dbc242 --- /dev/null +++ b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/icon-radio.spec.tsx @@ -0,0 +1,95 @@ +import React from 'react'; +import { Icon } from '@deriv/components'; +import { mockStore, StoreProvider } from '@deriv/stores'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { render, screen } from '@testing-library/react'; +// eslint-disable-next-line import/no-extraneous-dependencies +import userEvent from '@testing-library/user-event'; +import { mock_ws } from 'Utils/mock'; +import RootStore from 'Stores/root-store'; +import { DBotStoreProvider, mockDBotStore } from 'Stores/useDBotStore'; +import IconRadio from '../icon-radio'; + +jest.mock('@deriv/bot-skeleton/src/scratch/blockly', () => jest.fn()); +jest.mock('@deriv/bot-skeleton/src/scratch/dbot', () => ({ + saveRecentWorkspace: jest.fn(), + unHighlightAllBlocks: jest.fn(), +})); +jest.mock('@deriv/bot-skeleton/src/scratch/hooks/block_svg', () => jest.fn()); + +describe('IconRadio', () => { + let wrapper: ({ children }: { children: JSX.Element }) => JSX.Element, mock_DBot_store: RootStore | undefined; + + beforeAll(() => { + const mock_store = mockStore({}); + mock_DBot_store = mockDBotStore(mock_store, mock_ws); + + wrapper = ({ children }: { children: JSX.Element }) => ( + + + {children} + + + ); + }); + + it('should render the text passed as prop', () => { + const { container } = render( + } + text='test' + google_drive_connected={false} + onDriveConnect={() => { + // empty + }} + />, + { wrapper } + ); + expect(container).toHaveTextContent('test'); + }); + + it('should render Google Drive as disconnected', () => { + const { container } = render( + } + text='Google Drive' + google_drive_connected={false} + onDriveConnect={() => { + // empty + }} + />, + { wrapper } + ); + expect(container).toHaveTextContent('Connect'); + }); + + it('should fire gdrive connect callback', async () => { + const onDriveConnectCB = jest.fn(); + render( + } + text='Google Drive' + google_drive_connected={false} + onDriveConnect={onDriveConnectCB} + />, + { wrapper } + ); + await userEvent.click(screen.getByText('Connect')); + expect(onDriveConnectCB).toHaveBeenCalled(); + }); + + it('should fire gdrive disconnect callback', async () => { + const onDriveConnectCB = jest.fn(); + render( + } + text='Google Drive' + google_drive_connected={true} + onDriveConnect={onDriveConnectCB} + />, + { wrapper } + ); + await userEvent.click(screen.getByText('Disconnect')); + expect(onDriveConnectCB).toHaveBeenCalled(); + }); +}); diff --git a/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/local-footer.spec.tsx b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/local-footer.spec.tsx new file mode 100644 index 000000000000..5f6c2669c77f --- /dev/null +++ b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/local-footer.spec.tsx @@ -0,0 +1,66 @@ +import React from 'react'; +import { isMobile } from '@deriv/shared'; +import { mockStore, StoreProvider } from '@deriv/stores'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { render, screen } from '@testing-library/react'; +// eslint-disable-next-line import/no-extraneous-dependencies +import userEvent from '@testing-library/user-event'; +import { mock_ws } from 'Utils/mock'; +import RootStore from 'Stores/root-store'; +import { DBotStoreProvider, mockDBotStore } from 'Stores/useDBotStore'; +import LocalFooter from '../local-footer'; + +jest.mock('@deriv/shared', () => ({ + ...jest.requireActual('@deriv/shared'), + isMobile: jest.fn(), +})); + +jest.mock('@deriv/bot-skeleton/src/scratch/blockly', () => jest.fn()); +jest.mock('@deriv/bot-skeleton/src/scratch/dbot', () => ({ + saveRecentWorkspace: jest.fn(), + unHighlightAllBlocks: jest.fn(), +})); +jest.mock('@deriv/bot-skeleton/src/scratch/hooks/block_svg', () => jest.fn()); + +describe('LocalFooter', () => { + let wrapper: ({ children }: { children: JSX.Element }) => JSX.Element, mock_DBot_store: RootStore | undefined; + + beforeAll(() => { + const mock_store = mockStore({}); + mock_DBot_store = mockDBotStore(mock_store, mock_ws); + + wrapper = ({ children }: { children: JSX.Element }) => ( + + + {children} + + + ); + }); + + it('should render LocalFooter', () => { + const { container } = render(, { wrapper }); + expect(container).toBeInTheDocument(); + }); + + it('should open modal on click open button', async () => { + render(, { wrapper }); + const open_button = screen.getByText('Open'); + await userEvent.click(open_button); + expect(mock_DBot_store?.load_modal?.is_load_modal_open).toBeTruthy(); + }); + + it('should render cancel button on mobile', () => { + (isMobile as jest.Mock).mockReturnValueOnce(true); + render(, { wrapper }); + expect(screen.getByText('Cancel')).toBeInTheDocument(); + }); + + it('should reset local file on cancel button click', async () => { + (isMobile as jest.Mock).mockReturnValueOnce(true); + render(, { wrapper }); + const cancel_button = screen.getByText('Cancel'); + await userEvent.click(cancel_button); + expect(mock_DBot_store?.load_modal?.loaded_local_file).toBeNull(); + }); +}); diff --git a/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/recent-footer.spec.tsx b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/recent-footer.spec.tsx new file mode 100644 index 000000000000..6c27e3939ef6 --- /dev/null +++ b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/recent-footer.spec.tsx @@ -0,0 +1,48 @@ +import React from 'react'; +import { mockStore, StoreProvider } from '@deriv/stores'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { render, screen } from '@testing-library/react'; +import { mock_ws } from 'Utils/mock'; +import RootStore from 'Stores/root-store'; +import { DBotStoreProvider, mockDBotStore } from 'Stores/useDBotStore'; +import RecentFooter from '../recent-footer'; + +jest.mock('@deriv/shared', () => ({ + ...jest.requireActual('@deriv/shared'), + isMobile: jest.fn(), +})); + +jest.mock('@deriv/bot-skeleton/src/scratch/blockly', () => jest.fn()); +jest.mock('@deriv/bot-skeleton/src/scratch/dbot', () => ({ + saveRecentWorkspace: jest.fn(), + unHighlightAllBlocks: jest.fn(), +})); +jest.mock('@deriv/bot-skeleton/src/scratch/hooks/block_svg', () => jest.fn()); + +describe('RecentFooter', () => { + let wrapper: ({ children }: { children: JSX.Element }) => JSX.Element, mock_DBot_store: RootStore | undefined; + + beforeAll(() => { + const mock_store = mockStore({}); + mock_DBot_store = mockDBotStore(mock_store, mock_ws); + + wrapper = ({ children }: { children: JSX.Element }) => ( + + + {children} + + + ); + }); + + it('should render RecentFooter', () => { + const { container } = render(, { wrapper }); + expect(container).toBeInTheDocument(); + }); + + it('should render open button', async () => { + render(, { wrapper }); + const open_button = screen.getByText('Open'); + expect(open_button).toBeInTheDocument(); + }); +}); diff --git a/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/stop-bot-modal.spec.tsx b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/stop-bot-modal.spec.tsx new file mode 100644 index 000000000000..6b1f1a96f50a --- /dev/null +++ b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/__tests__/stop-bot-modal.spec.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import { mockStore, StoreProvider } from '@deriv/stores'; +import { render, screen } from '@testing-library/react'; +import { mock_ws } from 'Utils/mock'; +import RootStore from 'Stores/index'; +import { DBotStoreProvider, mockDBotStore } from 'Stores/useDBotStore'; +import StopBotModal from '../stop-bot-modal'; + +jest.mock('@deriv/bot-skeleton/src/scratch/blockly', () => jest.fn()); +jest.mock('@deriv/bot-skeleton/src/scratch/dbot', () => ({ + saveRecentWorkspace: jest.fn(), + unHighlightAllBlocks: jest.fn(), +})); +jest.mock('@deriv/bot-skeleton/src/scratch/hooks/block_svg', () => jest.fn()); + +describe('StopBotModal', () => { + let wrapper: ({ children }: { children: JSX.Element }) => JSX.Element, mock_DBot_store: RootStore | undefined; + + beforeAll(() => { + const mock_store = mockStore({}); + mock_DBot_store = mockDBotStore(mock_store, mock_ws); + + wrapper = ({ children }: { children: JSX.Element }) => ( + + + {children} + + + ); + }); + + it('should render the StopBotModal component', () => { + const { container } = render(, { + wrapper, + }); + expect(container).toBeInTheDocument(); + }); + + it('should render dialog with button label stop my bot', () => { + render(, { + wrapper, + }); + mock_DBot_store?.quick_strategy?.toggleStopBotDialog(); + expect(screen.getByText('Stop my bot')).toBeInTheDocument(); + }); +}); diff --git a/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/icon-radio.tsx b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/icon-radio.tsx index 43252ec061d1..0299e3d52670 100644 --- a/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/icon-radio.tsx +++ b/packages/bot-web-ui/src/components/dashboard/dashboard-component/load-bot-preview/icon-radio.tsx @@ -4,10 +4,10 @@ import { Text } from '@deriv/components'; import { localize } from '@deriv/translations'; type TIconRadio = { - google_drive_connected: boolean; - icon: string; + google_drive_connected?: boolean; + icon: React.ReactElement<{ className: string }, string>; text: string; - onDriveConnect: () => void; + onDriveConnect?: () => void; }; const IconRadio = ({ icon, text, google_drive_connected, onDriveConnect }: TIconRadio) => { const is_drive_radio = text === 'Google Drive'; diff --git a/packages/bot-web-ui/src/components/dashboard/tutorial-tab/guide-content.tsx b/packages/bot-web-ui/src/components/dashboard/tutorial-tab/guide-content.tsx index 7ad11f99da2f..d73f1a83bc3c 100644 --- a/packages/bot-web-ui/src/components/dashboard/tutorial-tab/guide-content.tsx +++ b/packages/bot-web-ui/src/components/dashboard/tutorial-tab/guide-content.tsx @@ -1,17 +1,25 @@ import React from 'react'; import classNames from 'classnames'; - import { Dialog, Icon, Text } from '@deriv/components'; import { isMobile } from '@deriv/shared'; import { observer } from '@deriv/stores'; import { localize } from '@deriv/translations'; - import { DBOT_TABS } from 'Constants/bot-contents'; -import { useDBotStore } from 'Stores/useDBotStore'; import { removeKeyValue } from 'Utils/settings'; +import { useDBotStore } from 'Stores/useDBotStore'; + +type TGuideList = { + content?: string; + id: number; + src?: string; + subtype?: string; + type: string; + url?: string; + imageclass?: string; +}; type TGuideContent = { - guide_list: []; + guide_list: TGuideList[]; }; const GuideContent = observer(({ guide_list }: TGuideContent) => { @@ -27,6 +35,7 @@ const GuideContent = observer(({ guide_list }: TGuideContent) => { setActiveTour, setShowMobileTourDialog, } = dashboard; + const is_mobile = isMobile(); const triggerTour = (type: string) => { if (type === 'OnBoard') { @@ -41,7 +50,6 @@ const GuideContent = observer(({ guide_list }: TGuideContent) => { if (is_mobile) setShowMobileTourDialog(true); } }; - const is_mobile = isMobile(); return React.useMemo( () => ( diff --git a/packages/bot-web-ui/src/components/dashboard/tutorial-tab/sidebar.tsx b/packages/bot-web-ui/src/components/dashboard/tutorial-tab/sidebar.tsx index 8e293ef1c166..38b468380cd0 100644 --- a/packages/bot-web-ui/src/components/dashboard/tutorial-tab/sidebar.tsx +++ b/packages/bot-web-ui/src/components/dashboard/tutorial-tab/sidebar.tsx @@ -1,6 +1,5 @@ import React from 'react'; import classNames from 'classnames'; -import debounce from 'lodash.debounce'; import { DesktopWrapper, Icon, MobileWrapper, SelectNative, Tabs } from '@deriv/components'; import { isMobile } from '@deriv/shared'; import { observer } from '@deriv/stores'; @@ -10,50 +9,77 @@ import FAQContent from './faq-content'; import GuideContent from './guide-content'; import { faq_content, guide_content, user_guide_content } from './tutorial-content'; +type TFilteredList = { + content?: string; + id: number; + src?: string; + subtype?: string; + type: string; + url?: string; + imageclass?: string; +}; + +type TSelectedTab = { + label: string; + content: string | React.ReactNode; +}; + +const initialSelectedTab: TSelectedTab = { + label: '', + content: '', +}; + const Sidebar = observer(() => { const { dashboard } = useDBotStore(); const { active_tab_tutorials, active_tab, faq_search_value, setActiveTabTutorial, setFAQSearchValue } = dashboard; const guide_tab_content = [...user_guide_content, ...guide_content]; - const [search_filtered_list, setsearchFilteredList] = React.useState(guide_tab_content); - const [search_faq_list, setsearchFAQList] = React.useState(faq_content); - const search_input = React.useRef(null); + const [search_filtered_list, setsearchFilteredList] = React.useState([...guide_tab_content]); + const [search_faq_list, setsearchFAQList] = React.useState([...faq_content]); + const [selected_tab, setSelectedTab] = React.useState(initialSelectedTab); const menu_items = [ { label: localize('Guide'), - content: , + content: , }, { label: localize('FAQ'), - content: , + content: , }, ]; - const selected_tab = menu_items?.[active_tab_tutorials] || {}; React.useEffect(() => { - if (search_input?.current?.value) { - search_input.current.value = ''; - setsearchFAQList([]); - } - - setsearchFilteredList(guide_tab_content); - setsearchFAQList(faq_content); + setFAQSearchValue(''); + setSelectedTab(menu_items?.[active_tab_tutorials] || {}); + setsearchFilteredList([...guide_tab_content]); + setsearchFAQList([...faq_content]); }, [active_tab_tutorials, active_tab]); + const removeHTMLTagsFromString = (param = '') => { + return param.replace(/<.*?>/g, ''); + }; + React.useEffect(() => { - const content_list = active_tab_tutorials === 0 ? guide_tab_content : faq_content; - const filtered_list = content_list.filter(data => { - return content_list === guide_tab_content - ? data.content.toLowerCase().includes(faq_search_value) - : data.title.toLowerCase().includes(faq_search_value); - }); - return active_tab_tutorials === 0 ? setsearchFilteredList(filtered_list) : setsearchFAQList(filtered_list); - }, [faq_search_value]); + const is_faq = active_tab_tutorials === 1; + const search = faq_search_value?.toLowerCase(); + + if (is_faq) { + const filtered_list = faq_content?.filter(({ title, description = [] }) => { + const match = description?.map(item => (item.type === 'text' ? item.content : '')).join(' '); + const title_has_match = removeHTMLTagsFromString(title)?.toLowerCase()?.includes(search); + const description_has_match = removeHTMLTagsFromString(match)?.toLowerCase()?.includes(search); + return title_has_match || description_has_match; + }); + setsearchFAQList(filtered_list); + } else { + const filtered_list = guide_tab_content?.filter(({ content = '' }) => + content?.toLowerCase()?.includes(search) + ); + setsearchFilteredList(filtered_list); + } + }, [faq_search_value, active_tab_tutorials]); const onSearch = (event: React.ChangeEvent) => { - const value = event.target.value; - debounce(() => { - setFAQSearchValue(value); - }, 700)(); + setFAQSearchValue(event.target.value); }; const onChangeHandle = React.useCallback( @@ -71,11 +97,11 @@ const Sidebar = observer(() => { ; diff --git a/packages/cashier/src/containers/routes/error-component/__tests__/error-component.spec.tsx b/packages/cashier/src/containers/routes/error-component/__tests__/error-component.spec.tsx index 1e26400526ee..8805f7e2a32e 100644 --- a/packages/cashier/src/containers/routes/error-component/__tests__/error-component.spec.tsx +++ b/packages/cashier/src/containers/routes/error-component/__tests__/error-component.spec.tsx @@ -27,7 +27,6 @@ describe('', () => { redirect_label: 'test_label', should_clear_error_on_click: true, should_show_refresh: true, - app_routing_history: [{ pathname: '/cashier' }], redirectOnClick: jest.fn(), setError: jest.fn(), }; diff --git a/packages/cashier/src/containers/routes/error-component/error-component.tsx b/packages/cashier/src/containers/routes/error-component/error-component.tsx index c826db55784d..0b6355258712 100644 --- a/packages/cashier/src/containers/routes/error-component/error-component.tsx +++ b/packages/cashier/src/containers/routes/error-component/error-component.tsx @@ -2,8 +2,12 @@ import React from 'react'; import { useHistory } from 'react-router-dom'; import { PageErrorContainer } from '@deriv/components'; import { routes } from '@deriv/shared'; -import { TRootStore } from '../../../types'; import { localize, Localize } from '@deriv/translations'; +import { TCoreStores } from '@deriv/stores/types'; + +type TErrorComponentProps = TCoreStores['common']['error'] & { + setError?: (has_error: boolean, error: React.ReactNode | null) => void; +}; const ErrorComponent = ({ header, @@ -14,7 +18,7 @@ const ErrorComponent = ({ setError, should_clear_error_on_click, should_show_refresh = true, -}: TRootStore['common']['error']) => { +}: TErrorComponentProps) => { const history = useHistory(); React.useEffect(() => { diff --git a/packages/cfd/src/Components/__tests__/cfd-personal-details-form.spec.js b/packages/cfd/src/Components/__tests__/cfd-personal-details-form.spec.js index b109af2696b4..de64ceecd6c3 100644 --- a/packages/cfd/src/Components/__tests__/cfd-personal-details-form.spec.js +++ b/packages/cfd/src/Components/__tests__/cfd-personal-details-form.spec.js @@ -88,7 +88,7 @@ describe('', () => { value: 'ax', }, ], - value: { + initial_values: { citizen: '', tax_residence: '', tax_identification_number: '', @@ -137,7 +137,7 @@ describe('', () => { }); it('should disable Citizenship and Tax residence fields if they were submitted earlier & immutable from BE', async () => { - const values = { + const initial_values = { citizen: 'Indonesia', tax_residence: 'Indonesia', tax_identification_number: '', @@ -150,7 +150,7 @@ describe('', () => { ); diff --git a/packages/cfd/src/Components/cfd-personal-details-form.tsx b/packages/cfd/src/Components/cfd-personal-details-form.tsx index da1d0300d765..f523f08aa429 100644 --- a/packages/cfd/src/Components/cfd-personal-details-form.tsx +++ b/packages/cfd/src/Components/cfd-personal-details-form.tsx @@ -1,6 +1,6 @@ import { Field, FieldProps, Formik, FormikHelpers as FormikActions, FormikProps } from 'formik'; import React from 'react'; -import { LandingCompany, ResidenceList } from '@deriv/api-types'; +import { ResidenceList } from '@deriv/api-types'; import { Autocomplete, AutoHeightWrapper, @@ -25,17 +25,15 @@ type TCFDPersonalDetailsFormProps = { form_error?: string; index: number; is_loading: boolean; - landing_company: LandingCompany; onSubmit: TOnSubmit; residence_list: ResidenceList; - value: TFormValues; + initial_values: TFormValues; }; type TValidatePersonalDetailsParams = { values: TFormValues; residence_list: ResidenceList; account_opening_reason: TAccountOpeningReasonList; - is_tin_required: boolean; }; type TFindDefaultValuesInResidenceList = (params: { @@ -125,11 +123,8 @@ const validatePersonalDetails = ({ values, residence_list, account_opening_reason, - is_tin_required, }: TValidatePersonalDetailsParams) => { - const [tax_residence_obj] = residence_list.filter(res => res.text === values.tax_residence && res.tin_format); - - const tin_format = tax_residence_obj?.tin_format; + const tin_format = residence_list.find(res => res.text === values.tax_residence)?.tin_format; const tin_regex = tin_format || ['^[A-Za-z0-9./s-]{0,25}$']; // fallback to API's default rule check @@ -137,8 +132,9 @@ const validatePersonalDetails = ({ citizen: [(v: string) => !!v, (v: string) => residence_list.map(i => i.text).includes(v)], tax_residence: [(v: string) => !!v, (v: string) => residence_list.map(i => i.text).includes(v)], tax_identification_number: [ - (v: string) => ((!values.tax_residence && is_tin_required) || tin_format ? !!v : true), + (v: string) => !!v, (v: string) => (tin_regex ? tin_regex?.some(regex => v.match(regex)) : true), + () => !!values.tax_residence, ], account_opening_reason: [ (v: string) => !!v, @@ -157,6 +153,8 @@ const validatePersonalDetails = ({ const field_error_messages = (field_name: string): string[] => [ localize('{{field_name}} is required', { field_name }), localize('{{field_name}} is not properly formatted.', { field_name }), + // this rule is specifically for tax_identification_number when tax_residence is empty + localize('Please fill in Tax residence.'), ]; const errors: { [key: string]: React.ReactNode } = {}; @@ -212,25 +210,24 @@ const submitForm: TSubmitForm = (values, actions, idx, onSubmit, is_dirty, resid const CFDPersonalDetailsForm = ({ changeable_fields, is_loading, - landing_company, residence_list, onSubmit, - value, + initial_values, index, form_error, }: TCFDPersonalDetailsFormProps) => { const account_opening_reason = getAccountOpeningReasonList(); - const is_tin_required = !!(landing_company?.config?.tax_details_required ?? false); const onSubmitForm = (values: TFormValues, actions: FormikActions) => - submitForm(values, actions, index, onSubmit, !isDeepEqual(value, values), residence_list); + submitForm(values, actions, index, onSubmit, !isDeepEqual(initial_values, values), residence_list); + + const isFieldDisabled = (field: string) => !!initial_values[field] && !changeable_fields?.includes(field); - if (residence_list.length === 0) return ; - if (is_loading) return ; + if (is_loading || residence_list.length === 0) return ; return ( @@ -238,7 +235,6 @@ const CFDPersonalDetailsForm = ({ values, residence_list, account_opening_reason, - is_tin_required, }) } onSubmit={onSubmitForm} @@ -258,23 +254,11 @@ const CFDPersonalDetailsForm = ({ const citizenship_error = touched.citizen && errors.citizen; const place_of_birth_error = touched.place_of_birth && errors.place_of_birth; const tax_residence_error = touched.tax_residence && errors.tax_residence; - const account_opening_reason_error = touched.account_opening_reason && errors.account_opening_reason; - const is_citizenship_disabled = !!value.citizen && !changeable_fields?.includes('citizen'); - const is_place_of_birth_disabled = - !!value.place_of_birth && !changeable_fields?.includes('place_of_birth'); - const is_tax_residence_disabled = - !!value.tax_residence && !changeable_fields?.includes('tax_residence'); - const is_account_opening_reason_disabled = - !!value.account_opening_reason && !changeable_fields?.includes('account_opening_reason'); const handleItemSelection = (item: ResidenceList[0], _field: string) => { const item_value = item.value ? item.text : ''; setFieldValue(_field, item_value, true); }; - const tin_field_label = residence_list.find(res => res.text === values.tax_residence && res.tin_format) - ?.tin_format - ? localize('Tax identification number*') - : localize('Tax identification number'); return ( @@ -318,7 +302,7 @@ const CFDPersonalDetailsForm = ({ type='text' label={localize('Citizenship*')} error={citizenship_error} - disabled={is_citizenship_disabled} + disabled={isFieldDisabled('citizen')} list_items={residence_list} onItemSelection={(item: ResidenceList[0]) => handleItemSelection(item, 'citizen') @@ -336,7 +320,7 @@ const CFDPersonalDetailsForm = ({ value={values.citizen} list_items={residence_list} error={citizenship_error} - disabled={is_citizenship_disabled} + disabled={isFieldDisabled('citizen')} use_text={true} onChange={(e: React.ChangeEvent) => setFieldValue('citizen', e.target.value, true) @@ -358,7 +342,7 @@ const CFDPersonalDetailsForm = ({ type='text' label={localize('Place of birth*')} error={place_of_birth_error} - disabled={is_place_of_birth_disabled} + disabled={isFieldDisabled('place_of_birth')} list_items={residence_list} onItemSelection={(item: ResidenceList[0]) => handleItemSelection(item, 'place_of_birth') @@ -376,7 +360,7 @@ const CFDPersonalDetailsForm = ({ value={values.place_of_birth} list_items={residence_list} error={place_of_birth_error} - disabled={is_place_of_birth_disabled} + disabled={isFieldDisabled('place_of_birth')} use_text={true} onChange={(e: React.ChangeEvent) => setFieldValue('place_of_birth', e.target.value, true) @@ -397,7 +381,7 @@ const CFDPersonalDetailsForm = ({ autoComplete='off' label={localize('Tax residence*')} error={tax_residence_error} - disabled={is_tax_residence_disabled} + disabled={isFieldDisabled('tax_residence')} list_items={residence_list} onItemSelection={(item: ResidenceList[0]) => handleItemSelection(item, 'tax_residence') @@ -414,7 +398,7 @@ const CFDPersonalDetailsForm = ({ label={localize('Tax residence*')} value={values.tax_residence} error={tax_residence_error} - disabled={is_tax_residence_disabled} + disabled={isFieldDisabled('tax_residence')} list_items={residence_list} use_text={true} onChange={(e: React.ChangeEvent) => @@ -428,19 +412,19 @@ const CFDPersonalDetailsForm = ({ - {({ field }: FieldProps) => ( + {({ + field, + meta: { error, touched }, + }: FieldProps) => ( @@ -465,8 +449,8 @@ const CFDPersonalDetailsForm = ({ label={localize('Account opening reason*')} list_items={account_opening_reason} value={values.account_opening_reason} - disabled={is_account_opening_reason_disabled} - error={account_opening_reason_error} + disabled={isFieldDisabled('account_opening_reason')} + error={touched && error} onChange={(e: React.ChangeEvent) => { handleChange(e); setFieldValue( diff --git a/packages/cfd/src/Containers/cfd-personal-details-container.tsx b/packages/cfd/src/Containers/cfd-personal-details-container.tsx index 508c70d32f42..d9ff17cb277d 100644 --- a/packages/cfd/src/Containers/cfd-personal-details-container.tsx +++ b/packages/cfd/src/Containers/cfd-personal-details-container.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { DesktopWrapper, Div100vhContainer, MobileWrapper, Text } from '@deriv/components'; +import { Div100vhContainer, Text } from '@deriv/components'; import { localize } from '@deriv/translations'; import { TCFDPersonalDetailsContainerProps } from './props.types'; import CFDPersonalDetailsForm from '../Components/cfd-personal-details-form'; @@ -13,7 +13,7 @@ type TSetSubmitting = (isSubmitting: boolean) => void; const CFDPersonalDetailsContainer = observer(({ onSubmit }: TCFDPersonalDetailsContainerProps) => { const { client } = useStore(); - const { account_settings, getChangeableFields, landing_company, residence_list, setAccountSettings } = client; + const { account_settings, getChangeableFields, residence_list, setAccountSettings } = client; const [form_error, setFormError] = React.useState(''); const [is_loading, setIsLoading] = React.useState(false); @@ -94,7 +94,7 @@ const CFDPersonalDetailsContainer = observer(({ onSubmit }: TCFDPersonalDetailsC onSubmit(index, value); }; - const getPersonalDetailsForm = () => ( + return ( ); - - return ( - - {getPersonalDetailsForm()} - {getPersonalDetailsForm()} - - ); }); export default CFDPersonalDetailsContainer; diff --git a/packages/components/src/components/collapsible/arrow-button.tsx b/packages/components/src/components/collapsible/arrow-button.tsx index 42654e49280d..ad616e8cacf0 100644 --- a/packages/components/src/components/collapsible/arrow-button.tsx +++ b/packages/components/src/components/collapsible/arrow-button.tsx @@ -13,7 +13,7 @@ type TArrowButton = { is_open?: boolean; onClick: () => void; title?: string; - position: 'top' | 'bottom'; + position?: 'top' | 'bottom'; }; const IconArrow = ({ className }: { className?: string }) => ( diff --git a/packages/components/src/components/contract-card/contract-card-items/accumulator-card-body.tsx b/packages/components/src/components/contract-card/contract-card-items/accumulator-card-body.tsx index 7c0153eee830..54aa0019758a 100644 --- a/packages/components/src/components/contract-card/contract-card-items/accumulator-card-body.tsx +++ b/packages/components/src/components/contract-card/contract-card-items/accumulator-card-body.tsx @@ -24,7 +24,7 @@ type TAccumulatorCardBody = { getContractById: React.ComponentProps['getContractById']; indicative?: number; is_sold: boolean; - onMouseLeave: () => void; + onMouseLeave?: () => void; removeToast: (toast_id: string) => void; setCurrentFocus: (value: string) => void; status?: string; diff --git a/packages/components/src/components/contract-card/contract-card-items/contract-card-body.tsx b/packages/components/src/components/contract-card/contract-card-items/contract-card-body.tsx index 2f72de4633be..f9fe7c825133 100644 --- a/packages/components/src/components/contract-card/contract-card-items/contract-card-body.tsx +++ b/packages/components/src/components/contract-card/contract-card-items/contract-card-body.tsx @@ -31,11 +31,11 @@ export type TGeneralContractCardBodyProps = { has_progress_slider: boolean; is_mobile: boolean; is_sold: boolean; - onMouseLeave: () => void; + onMouseLeave?: () => void; removeToast: (toast_id: string) => void; setCurrentFocus: (name: string) => void; status?: string; - toggleCancellationWarning: () => void; + toggleCancellationWarning: (state_change?: boolean) => void; progress_slider?: React.ReactNode; is_positions?: boolean; }; diff --git a/packages/components/src/components/contract-card/contract-card-items/contract-card-footer.tsx b/packages/components/src/components/contract-card/contract-card-items/contract-card-footer.tsx index d599eb7b1081..db1988ca776d 100644 --- a/packages/components/src/components/contract-card/contract-card-items/contract-card-footer.tsx +++ b/packages/components/src/components/contract-card/contract-card-items/contract-card-footer.tsx @@ -11,13 +11,13 @@ export type TCardFooterPropTypes = { contract_info: TContractInfo; getCardLabels: TGetCardLables; is_multiplier?: boolean; - is_positions: boolean; + is_positions?: boolean; is_sell_requested: boolean; onClickCancel: (contract_id?: number) => void; onClickSell: (contract_id?: number) => void; onFooterEntered?: () => void; server_time: moment.Moment; - should_show_transition: boolean; + should_show_transition?: boolean; }; const CardFooter = ({ @@ -32,7 +32,7 @@ const CardFooter = ({ server_time, should_show_transition, }: TCardFooterPropTypes) => { - const { in_prop } = useNewRowTransition(should_show_transition); + const { in_prop } = useNewRowTransition(!!should_show_transition); const is_valid_to_cancel = isValidToCancel(contract_info); diff --git a/packages/components/src/components/contract-card/contract-card-items/contract-card-header.tsx b/packages/components/src/components/contract-card/contract-card-items/contract-card-header.tsx index 4079df1bb026..1ce4c8a311d1 100644 --- a/packages/components/src/components/contract-card/contract-card-items/contract-card-header.tsx +++ b/packages/components/src/components/contract-card/contract-card-items/contract-card-header.tsx @@ -1,17 +1,16 @@ import React from 'react'; import classNames from 'classnames'; import { CSSTransition } from 'react-transition-group'; -import { localize } from '@deriv/translations'; import { isHighLow, getCurrentTick, getGrowthRatePercentage, - getContractSubtype, isAccumulatorContract, isSmartTraderContract, isBot, isMobile, isTurbosContract, + getLocalizedTurbosSubtype, } from '@deriv/shared'; import ContractTypeCell from './contract-type-cell'; import Button from '../../button'; @@ -83,8 +82,7 @@ const ContractCardHeader = ({ }, { is_param_displayed: is_turbos, - displayed_param: - getContractSubtype(contract_type || '') === 'Long' ? localize('Long') : localize('Short'), + displayed_param: getLocalizedTurbosSubtype(contract_type), }, ], [multiplier, growth_rate, is_accumulator, is_turbos, contract_type] diff --git a/packages/components/src/components/contract-card/contract-card-items/contract-type-cell.tsx b/packages/components/src/components/contract-card/contract-card-items/contract-type-cell.tsx index ef5d594ac828..41629909cfd9 100644 --- a/packages/components/src/components/contract-card/contract-card-items/contract-type-cell.tsx +++ b/packages/components/src/components/contract-card/contract-card-items/contract-type-cell.tsx @@ -9,7 +9,7 @@ export type TContractTypeCellProps = { is_high_low: boolean; multiplier?: number; type?: string; - displayed_trade_param?: string; + displayed_trade_param?: React.ReactNode; }; const ContractTypeCell = ({ diff --git a/packages/components/src/components/contract-card/contract-card-items/contract-update-form.tsx b/packages/components/src/components/contract-card/contract-card-items/contract-update-form.tsx index 1e116c67e966..a337de1179df 100644 --- a/packages/components/src/components/contract-card/contract-card-items/contract-update-form.tsx +++ b/packages/components/src/components/contract-card/contract-card-items/contract-update-form.tsx @@ -33,7 +33,7 @@ export type TContractUpdateFormProps = Pick< contract: TContractStore; error_message_alignment?: string; getCardLabels: TGetCardLables; - onMouseLeave: () => void; + onMouseLeave?: () => void; removeToast: (toast_id: string) => void; setCurrentFocus: (name: string | null) => void; status: string; diff --git a/packages/components/src/components/contract-card/contract-card.tsx b/packages/components/src/components/contract-card/contract-card.tsx index 77a54f5f9ecb..94993077b32e 100644 --- a/packages/components/src/components/contract-card/contract-card.tsx +++ b/packages/components/src/components/contract-card/contract-card.tsx @@ -14,15 +14,15 @@ import { TGetCardLables, TGetContractPath } from '../types'; type TContractCardProps = { contract_info: TContractInfo; getCardLabels: TGetCardLables; - getContractPath: TGetContractPath; + getContractPath?: TGetContractPath; is_multiplier: boolean; - is_positions: boolean; - is_unsupported: boolean; - onClickRemove: (contract_id: number) => void; + is_positions?: boolean; + is_unsupported?: boolean; + onClickRemove?: (contract_id?: number) => void; profit_loss: number; - result: string; + result?: string; should_show_result_overlay: boolean; - toggleUnsupportedContractModal: (is_unsupported_contract_modal_visible: boolean) => void; + toggleUnsupportedContractModal?: (is_unsupported_contract_modal_visible: boolean) => void; }; const ContractCard = ({ @@ -53,7 +53,7 @@ const ContractCard = ({ is_multiplier={is_multiplier} is_visible={!!contract_info.is_sold} onClickRemove={onClickRemove} - onClick={() => toggleUnsupportedContractModal(true)} + onClick={() => toggleUnsupportedContractModal?.(true)} result={result || fallback_result} is_positions={is_positions} /> diff --git a/packages/components/src/components/contract-card/result-overlay/result-overlay.tsx b/packages/components/src/components/contract-card/result-overlay/result-overlay.tsx index 25be6f8cf87a..5186ce2b47e9 100644 --- a/packages/components/src/components/contract-card/result-overlay/result-overlay.tsx +++ b/packages/components/src/components/contract-card/result-overlay/result-overlay.tsx @@ -8,13 +8,13 @@ import { TGetCardLables, TGetContractPath } from '../../types'; type TResultOverlayProps = { contract_id?: number; getCardLabels: TGetCardLables; - getContractPath: TGetContractPath; + getContractPath?: TGetContractPath; is_multiplier?: boolean; - is_positions: boolean; - is_unsupported: boolean; + is_positions?: boolean; + is_unsupported?: boolean; is_visible: boolean; onClick: () => void; - onClickRemove: (contract_id: number) => void; + onClickRemove?: (contract_id?: number) => void; result: string; }; @@ -88,7 +88,7 @@ const ResultOverlay = ({ onClickRemove(Number(contract_id))} + onClick={() => onClickRemove?.(contract_id)} /> )} {getContractPath && ( diff --git a/packages/components/src/components/date-picker/date-picker.tsx b/packages/components/src/components/date-picker/date-picker.tsx index f3934fad7ec6..48f18e94678e 100644 --- a/packages/components/src/components/date-picker/date-picker.tsx +++ b/packages/components/src/components/date-picker/date-picker.tsx @@ -7,12 +7,8 @@ import MobileWrapper from '../mobile-wrapper'; import DesktopWrapper from '../desktop-wrapper'; import { useOnClickOutside } from '../../hooks/use-onclickoutside'; import { MomentInput } from 'moment'; +import { TDatePickerOnChangeEvent } from '../types'; -type TDatePickerOnChangeEvent = { - date?: string; - duration?: number | null | string; - target?: { name: string; value: number | string | moment.Moment | null }; -}; type TDatePicker = Omit< React.ComponentProps & React.ComponentProps & React.ComponentProps, 'value' | 'onSelect' | 'is_datepicker_visible' | 'placement' | 'style' | 'calendar_el_ref' | 'parent_ref' diff --git a/packages/components/src/components/div100vh-container/div100vh-container.tsx b/packages/components/src/components/div100vh-container/div100vh-container.tsx index f8027d07daa2..426772e5a777 100644 --- a/packages/components/src/components/div100vh-container/div100vh-container.tsx +++ b/packages/components/src/components/div100vh-container/div100vh-container.tsx @@ -19,8 +19,8 @@ type TDiv100vhContainer = { is_bypassed?: boolean; is_disabled?: boolean; max_height_offset?: string; - max_autoheight_offset?: string; className?: string; + max_autoheight_offset?: string; id?: string; } & React.ComponentProps<'div'>; diff --git a/packages/components/src/components/hint-box/hint-box.scss b/packages/components/src/components/hint-box/hint-box.scss index d3a330bd37be..50d4813001e3 100644 --- a/packages/components/src/components/hint-box/hint-box.scss +++ b/packages/components/src/components/hint-box/hint-box.scss @@ -38,3 +38,9 @@ color: var(--text-prominent); } } + +.hint-box-layout { + display: grid; + grid-template-columns: auto 1fr; + align-items: flex-start; +} diff --git a/packages/components/src/components/icon/icons.js b/packages/components/src/components/icon/icons.js index 725482e5bfc1..b7f83fe29b0c 100644 --- a/packages/components/src/components/icon/icons.js +++ b/packages/components/src/components/icon/icons.js @@ -709,9 +709,11 @@ import './mt5/ic-mt5-password-updated.svg'; import './mt5/ic-mt5-responsive.svg'; import './mt5/ic-mt5-support.svg'; import './mt5/ic-mt5-swap-free-platform.svg'; +import './mt5/ic-mt5-swap-free.svg'; import './mt5/ic-mt5-synthetic-dashboard.svg'; import './mt5/ic-mt5-synthetic-indices.svg'; import './mt5/ic-mt5-synthetic-platform.svg'; +import './mt5/ic-mt5-synthetic.svg'; import './mt5/ic-mt5-trade-types.svg'; import './option/ic-option-accumulators.svg'; import './option/ic-option-call-put-reset.svg'; diff --git a/packages/components/src/components/icon/mt5/ic-mt5-cfds.svg b/packages/components/src/components/icon/mt5/ic-mt5-cfds.svg index 590e2367a256..88174804c30a 100644 --- a/packages/components/src/components/icon/mt5/ic-mt5-cfds.svg +++ b/packages/components/src/components/icon/mt5/ic-mt5-cfds.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/packages/components/src/components/icon/mt5/ic-mt5-financial.svg b/packages/components/src/components/icon/mt5/ic-mt5-financial.svg index 239a40f9ad82..7fd867a129f0 100644 --- a/packages/components/src/components/icon/mt5/ic-mt5-financial.svg +++ b/packages/components/src/components/icon/mt5/ic-mt5-financial.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/packages/components/src/components/icon/mt5/ic-mt5-swap-free.svg b/packages/components/src/components/icon/mt5/ic-mt5-swap-free.svg new file mode 100644 index 000000000000..7b464b0951e6 --- /dev/null +++ b/packages/components/src/components/icon/mt5/ic-mt5-swap-free.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/components/src/components/icon/mt5/ic-mt5-synthetic.svg b/packages/components/src/components/icon/mt5/ic-mt5-synthetic.svg new file mode 100644 index 000000000000..b0abc3df8f0b --- /dev/null +++ b/packages/components/src/components/icon/mt5/ic-mt5-synthetic.svg @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/packages/components/src/components/input-field/input-field.tsx b/packages/components/src/components/input-field/input-field.tsx index 67859d60be00..4a9e5f2f91ea 100644 --- a/packages/components/src/components/input-field/input-field.tsx +++ b/packages/components/src/components/input-field/input-field.tsx @@ -14,7 +14,7 @@ export type TButtonType = 'button' | 'submit' | 'reset'; // supports more than two different types of 'value' as a prop. // Quick Solution - Pass two different props to input field. type TInputField = { - ariaLabel: string; + ariaLabel?: string; checked?: boolean; className?: string; classNameDynamicSuffix?: string; @@ -22,8 +22,8 @@ type TInputField = { classNameInput?: string; classNamePrefix?: string; classNameWrapper?: string; // CSS class for the component wrapper - currency: string; - current_focus?: string | null; + currency?: string; + current_focus: string | null; data_testid?: string; data_tip?: string; data_value?: string; @@ -31,26 +31,26 @@ type TInputField = { error_message_alignment?: string; error_messages?: string[]; format?: (new_value?: string) => string; - fractional_digits: number; + fractional_digits?: number; helper?: string; icon?: React.ElementType; id?: string; increment_button_type?: TButtonType; inline_prefix?: string; inputmode?: TInputMode; - is_autocomplete_disabled: boolean; + is_autocomplete_disabled?: boolean; is_disabled?: boolean; - is_error_tooltip_hidden: boolean; + is_error_tooltip_hidden?: boolean; is_float: boolean; - is_hj_whitelisted: boolean; + is_hj_whitelisted?: boolean; is_incrementable_on_long_press?: boolean; - is_incrementable: boolean; - is_negative_disabled: boolean; + is_incrementable?: boolean; + is_negative_disabled?: boolean; is_read_only?: boolean; is_signed?: boolean; is_unit_at_right?: boolean; label?: string; - max_length: number; + max_length?: number; max_value?: number; min_value?: number; name: string; diff --git a/packages/components/src/components/input-field/input.tsx b/packages/components/src/components/input-field/input.tsx index 3547ddef0aa9..8c5df9dd49e3 100644 --- a/packages/components/src/components/input-field/input.tsx +++ b/packages/components/src/components/input-field/input.tsx @@ -4,7 +4,7 @@ import { getCurrencyDisplayCode } from '@deriv/shared'; import { TInputMode } from './input-field'; type TInputProps = { - ariaLabel: string; + ariaLabel?: string; changeValue: ( e: React.ChangeEvent, callback?: (evt: React.ChangeEvent) => void @@ -13,22 +13,22 @@ type TInputProps = { className?: string; classNameDynamicSuffix?: string; classNameInlinePrefix?: string; - current_focus?: string | null; + current_focus: string | null; data_testid?: string; data_tip?: string; data_value?: number | string; display_value: number | string; - fractional_digits: number; + fractional_digits?: number; has_error?: boolean; id?: string; inline_prefix?: string; inputmode?: TInputMode; - is_autocomplete_disabled: boolean; + is_autocomplete_disabled?: boolean; is_disabled?: boolean; is_hj_whitelisted: boolean; - is_incrementable: boolean; + is_incrementable?: boolean; is_read_only: boolean; - max_length: number; + max_length?: number; name: string; onBlur?: React.FocusEventHandler; onClick?: React.MouseEventHandler; @@ -128,7 +128,7 @@ const Input = ({ data-value={data_value} disabled={!!is_disabled} id={id} - maxLength={fractional_digits ? max_length + fractional_digits + 1 : max_length} + maxLength={fractional_digits && max_length ? max_length + fractional_digits + 1 : max_length} name={name} onBlur={onBlurHandler} onChange={onChange} diff --git a/packages/components/src/components/mobile-drawer/mobile-drawer-submenu.tsx b/packages/components/src/components/mobile-drawer/mobile-drawer-submenu.tsx index fb9ad3e19142..2f92b0f15bbc 100644 --- a/packages/components/src/components/mobile-drawer/mobile-drawer-submenu.tsx +++ b/packages/components/src/components/mobile-drawer/mobile-drawer-submenu.tsx @@ -12,7 +12,7 @@ type TMobileDrawerSubmenu = { submenu_icon?: string; submenu_title?: string | React.ReactElement; submenu_suffix_icon?: string; - route_config_path: string; + route_config_path?: string; }; const SubMenu = ({ @@ -43,7 +43,9 @@ const SubMenu = ({ {submenu_title} diff --git a/packages/components/src/components/money/money.tsx b/packages/components/src/components/money/money.tsx index d9556a181846..954ec009856c 100644 --- a/packages/components/src/components/money/money.tsx +++ b/packages/components/src/components/money/money.tsx @@ -19,8 +19,8 @@ const Money = ({ show_currency = false, }: Partial) => { let sign = ''; - if (+amount && (amount < 0 || has_sign)) { - sign = amount > 0 ? '+' : '-'; + if (Number(amount) && (Number(amount) < 0 || has_sign)) { + sign = Number(amount) > 0 ? '+' : '-'; } // if it's formatted already then don't make any changes unless we should remove extra -/+ signs diff --git a/packages/components/src/components/numpad/numpad.tsx b/packages/components/src/components/numpad/numpad.tsx index 662f840aaa33..e7f6c2e4dfd5 100644 --- a/packages/components/src/components/numpad/numpad.tsx +++ b/packages/components/src/components/numpad/numpad.tsx @@ -12,20 +12,20 @@ type TNumpad = { is_regular?: boolean; is_currency?: boolean; is_submit_disabled?: boolean; - label: string; + label?: string; reset_press_interval: number; reset_value: string; - max: number; - min: number; + max?: number; + min?: number; pip_size: number; onSubmit: (param: number | string) => void; - v: string; + v?: string; render?: (props: { value: string; className: string }) => React.ReactNode; submit_label: string; - value: string; - format: (v: string) => number; + value: string | number; + format?: (v: string) => number | string; onValueChange: (val: number | string) => void; - onValidate: (default_value: number | string) => string | undefined; + onValidate: (default_value: number | string) => boolean | 'error'; }; const concatenate = (number: string | number, default_value: string | number) => @@ -71,7 +71,7 @@ const Numpad = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [default_value, value]); - const updateValue = (val: string) => { + const updateValue = (val: string | number) => { setValue(val); if (onValueChange) onValueChange(val); }; diff --git a/packages/components/src/components/positions-drawer-card/positions-drawer-card.tsx b/packages/components/src/components/positions-drawer-card/positions-drawer-card.tsx index fd9ed4667948..089a3e6123cc 100644 --- a/packages/components/src/components/positions-drawer-card/positions-drawer-card.tsx +++ b/packages/components/src/components/positions-drawer-card/positions-drawer-card.tsx @@ -33,7 +33,7 @@ type TPositionsDrawerCardProps = { profit_loss?: number; onClickCancel: (contract_id?: number) => void; onClickSell: (contract_id?: number) => void; - onClickRemove: (contract_id: number) => void; + onClickRemove: (contract_id?: number) => void; onFooterEntered?: () => void; onMouseEnter?: () => void; onMouseLeave?: () => void; diff --git a/packages/components/src/components/send-email-template/send-email-template.tsx b/packages/components/src/components/send-email-template/send-email-template.tsx index 955916de4707..e3273b37337d 100644 --- a/packages/components/src/components/send-email-template/send-email-template.tsx +++ b/packages/components/src/components/send-email-template/send-email-template.tsx @@ -11,8 +11,8 @@ type TSendEmailTemplate = { live_chat?: React.ReactNode; onClickSendEmail: () => void; resend_timeout?: number; - subtitle?: string; - title: string; + subtitle?: React.ReactNode; + title: React.ReactNode; txt_resend_in: string; txt_resend: string; }; diff --git a/packages/components/src/components/tabs/tab.tsx b/packages/components/src/components/tabs/tab.tsx index eba22fac25bc..5c26046094d6 100644 --- a/packages/components/src/components/tabs/tab.tsx +++ b/packages/components/src/components/tabs/tab.tsx @@ -4,15 +4,15 @@ import Counter from '../counter'; import Icon from '../icon'; type TTabProps = { - active_icon_color: string; + active_icon_color?: string; active_tab_ref?: React.RefObject | null; bottom?: boolean; className?: string; count: number; header_content: React.ReactElement; header_fit_content?: boolean; - icon_color: string; - icon_size: number; + icon_color?: string; + icon_size?: number; icon: string; id?: string; is_active: boolean; @@ -25,17 +25,17 @@ type TTabProps = { }; const Tab = ({ - active_icon_color, + active_icon_color = '', active_tab_ref, - bottom, - className, + bottom = false, + className = '', count, header_content, - header_fit_content, - icon_color, - icon_size, + header_fit_content = false, + icon_color = '', + icon_size = 0, icon, - id, + id = '', is_active, is_label_hidden, is_scrollable, diff --git a/packages/components/src/components/tabs/tabs.tsx b/packages/components/src/components/tabs/tabs.tsx index c7d8f5483e77..99817c188937 100644 --- a/packages/components/src/components/tabs/tabs.tsx +++ b/packages/components/src/components/tabs/tabs.tsx @@ -14,20 +14,20 @@ declare module 'react' { } type TTabsProps = RouteComponentProps & { - active_icon_color: string; + active_icon_color?: string; active_index?: number; - background_color: string; + background_color?: string; bottom?: boolean; - center: boolean; - children: React.ReactElement[]; + center?: boolean; + children: (React.ReactElement | null)[]; className?: string; - fit_content: boolean; + fit_content?: boolean; has_active_line?: boolean; has_bottom_line?: boolean; header_fit_content?: boolean; history: History; - icon_color: string; - icon_size: number; + icon_color?: string; + icon_size?: number; is_100vw?: boolean; is_full_width?: boolean; is_overflow_hidden?: boolean; @@ -39,27 +39,27 @@ type TTabsProps = RouteComponentProps & { }; const Tabs = ({ - active_icon_color, + active_icon_color = '', active_index = 0, - background_color, - bottom, - center, + background_color = '', + bottom = false, + center = false, children, - className, - fit_content, + className = '', + fit_content = false, has_active_line = true, has_bottom_line = true, - header_fit_content, + header_fit_content = false, history, - icon_color, - icon_size, - is_100vw, - is_full_width, - is_overflow_hidden, - is_scrollable, + icon_color = '', + icon_size = 0, + is_100vw = false, + is_full_width = false, + is_overflow_hidden = false, + is_scrollable = false, onTabItemClick, - should_update_hash, - single_tab_has_no_label, + should_update_hash = false, + single_tab_has_no_label = false, top, }: TTabsProps) => { const [active_line_style, updateActiveLineStyle] = React.useState({}); @@ -99,7 +99,7 @@ const Tabs = ({ initial_index_to_show = hash_index; } else { // if no hash is in url but component has passed hash prop, set hash of the tab shown - const child_props = children[initial_index_to_show].props; + const child_props = children[initial_index_to_show]?.props; const current_id = child_props && child_props.hash; if (current_id) { pushHash(current_id); @@ -128,7 +128,7 @@ const Tabs = ({ const onClickTabItem = (index: number) => { if (should_update_hash) { - const hash = children[index].props['data-hash']; + const hash = children[index]?.props['data-hash']; pushHash(hash); } setActiveTabIndex(index); diff --git a/packages/components/src/components/tooltip/tooltip.tsx b/packages/components/src/components/tooltip/tooltip.tsx index 5f5cbac0c599..8d1203ff18a6 100644 --- a/packages/components/src/components/tooltip/tooltip.tsx +++ b/packages/components/src/components/tooltip/tooltip.tsx @@ -21,7 +21,7 @@ const Tooltip = ({ icon, // only question, info and dot accepted message, }: React.PropsWithChildren) => { - const [hover_ref, show_tooltip_balloon_icon_on_hover] = useHover(); + const [hover_ref, show_tooltip_balloon_icon_on_hover] = useHover(); const icon_class = classNames(classNameIcon, icon); diff --git a/packages/components/src/components/types/common.types.ts b/packages/components/src/components/types/common.types.ts index 65048a670689..df3b6a82b70a 100644 --- a/packages/components/src/components/types/common.types.ts +++ b/packages/components/src/components/types/common.types.ts @@ -23,3 +23,9 @@ export type TTableRowItem = export type TRow = { [key: string]: any }; export type TPassThrough = { isTopUp: (item: TRow) => boolean }; + +export type TDatePickerOnChangeEvent = { + date?: string; + duration?: number | null | string; + target?: { name?: string; value?: number | string | moment.Moment | null }; +}; diff --git a/packages/components/src/components/types/index.ts b/packages/components/src/components/types/index.ts index 7911e1a631d9..98187945e4e1 100644 --- a/packages/components/src/components/types/index.ts +++ b/packages/components/src/components/types/index.ts @@ -2,7 +2,7 @@ import { TIconsManifest, TIconProps } from './icons.types'; import { TAccordionProps, TAccordionItem } from './accordion.types'; import { TMultiStepProps, TMultiStepRefProps } from './multi-step.types'; import { TPopoverProps } from './popover.types'; -import { TGetCardLables, TGetContractTypeDisplay } from './common.types'; +import { TGetCardLables, TGetContractTypeDisplay, TDatePickerOnChangeEvent } from './common.types'; import { TErrorMessages, TGetContractPath, TToastConfig } from './contract.types'; export type { @@ -18,4 +18,5 @@ export type { TGetContractPath, TToastConfig, TGetContractTypeDisplay, + TDatePickerOnChangeEvent, }; diff --git a/packages/components/src/hooks/use-hover.ts b/packages/components/src/hooks/use-hover.ts index a9d5518e7f89..9583eacf6d99 100644 --- a/packages/components/src/hooks/use-hover.ts +++ b/packages/components/src/hooks/use-hover.ts @@ -2,7 +2,7 @@ import React, { RefObject } from 'react'; import { isMobileOs } from '@deriv/shared'; -export const useHover = ( +export const useHover = ( refSetter?: RefObject | null, should_prevent_bubbling?: boolean ) => { diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts index 90ae5f82e62b..d531d9c211af 100644 --- a/packages/components/src/index.ts +++ b/packages/components/src/index.ts @@ -122,3 +122,4 @@ export * from './components/wallet-card'; export * from './components/wallet-icon'; export * from './components/app-linked-with-wallet-icon'; export * from './hooks'; +export * from './components/types'; diff --git a/packages/core/package.json b/packages/core/package.json index d68bde3afdc7..c42b72233f8d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -96,7 +96,7 @@ "@deriv/cfd": "^1.0.0", "@deriv/components": "^1.0.0", "@deriv/deriv-api": "^1.0.13", - "@deriv/deriv-charts": "1.3.6", + "@deriv/deriv-charts": "1.4.0", "@deriv/hooks": "^1.0.0", "@deriv/p2p": "^0.7.3", "@deriv/reports": "^1.0.0", @@ -104,6 +104,7 @@ "@deriv/shared": "^1.0.0", "@deriv/trader": "^3.8.0", "@deriv/translations": "^1.0.0", + "@deriv/utils": "^1.0.0", "@livechat/customer-sdk": "^2.0.4", "acorn": "^6.1.1", "babel-polyfill": "^6.26.0", diff --git a/packages/core/src/App/Components/Layout/Header/Components/ToggleMenu/index.ts b/packages/core/src/App/Components/Layout/Header/Components/ToggleMenu/index.ts new file mode 100644 index 000000000000..b08d7e33809c --- /dev/null +++ b/packages/core/src/App/Components/Layout/Header/Components/ToggleMenu/index.ts @@ -0,0 +1,4 @@ +import MenuTitle from './menu-title'; +import MobileLanguageMenu from './mobile-language-menu'; + +export { MenuTitle, MobileLanguageMenu }; diff --git a/packages/core/src/App/Components/Layout/Header/Components/ToggleMenu/menu-title.tsx b/packages/core/src/App/Components/Layout/Header/Components/ToggleMenu/menu-title.tsx new file mode 100644 index 000000000000..268b4b729ef3 --- /dev/null +++ b/packages/core/src/App/Components/Layout/Header/Components/ToggleMenu/menu-title.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { observer, useStore } from '@deriv/stores'; +import { Icon, Text } from '@deriv/components'; +import { localize, Localize } from '@deriv/translations'; + +const MenuTitle = observer(() => { + const { common, ui } = useStore(); + const { current_language } = common; + const { is_mobile_language_menu_open, setMobileLanguageMenuOpen } = ui; + return ( + +
{localize('Menu')}
+
{ + if (!is_mobile_language_menu_open) { + setMobileLanguageMenuOpen(true); + } + }} + > + {!is_mobile_language_menu_open && ( + + + + + + + )} +
+
+ ); +}); + +export default MenuTitle; diff --git a/packages/core/src/App/Components/Layout/Header/Components/ToggleMenu/mobile-language-menu.tsx b/packages/core/src/App/Components/Layout/Header/Components/ToggleMenu/mobile-language-menu.tsx new file mode 100644 index 000000000000..28439060e5cd --- /dev/null +++ b/packages/core/src/App/Components/Layout/Header/Components/ToggleMenu/mobile-language-menu.tsx @@ -0,0 +1,50 @@ +import classNames from 'classnames'; +import React from 'react'; +import { MobileDrawer } from '@deriv/components'; +import { observer, useStore } from '@deriv/stores'; +import { getAllowedLanguages, localize } from '@deriv/translations'; +import { LanguageLink } from 'App/Components/Routes'; + +type TMobileLanguageMenu = { + expandSubMenu: (prop: boolean) => void; + toggleDrawer: () => void; +}; + +const MobileLanguageMenu = observer(({ expandSubMenu, toggleDrawer }: TMobileLanguageMenu) => { + const { common, ui } = useStore(); + const { is_language_changing } = common; + const { is_mobile_language_menu_open, setMobileLanguageMenuOpen } = ui; + return ( + { + expandSubMenu(is_expanded); + setMobileLanguageMenuOpen(false); + }} + submenu_toggle_class='dc-mobile-drawer__submenu-toggle--hidden' + > +
+ {Object.keys(getAllowedLanguages()).map(lang => ( + { + toggleDrawer(); + setMobileLanguageMenuOpen(false); + }} + /> + ))} +
+
+ ); +}); + +export default MobileLanguageMenu; diff --git a/packages/core/src/App/Components/Layout/Header/__tests__/menu-link.spec.tsx b/packages/core/src/App/Components/Layout/Header/__tests__/menu-link.spec.tsx new file mode 100644 index 000000000000..e599857ed7db --- /dev/null +++ b/packages/core/src/App/Components/Layout/Header/__tests__/menu-link.spec.tsx @@ -0,0 +1,156 @@ +import React from 'react'; +import { Router } from 'react-router-dom'; +import { createBrowserHistory } from 'history'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { useIsRealAccountNeededForCashier } from '@deriv/hooks'; +import { getStaticUrl, isMobile, routes } from '@deriv/shared'; +import { mockStore, StoreProvider } from '@deriv/stores'; +import MenuLink from 'App/Components/Layout/Header/menu-link'; + +jest.mock('Stores/connect', () => ({ + __esModule: true, + default: 'mockedDefaultExport', + connect: + () => + (Component: T) => + Component, +})); + +jest.mock('@deriv/components', () => ({ + ...jest.requireActual('@deriv/components'), + Icon: jest.fn(() =>
Mock Link Icon
), +})); + +jest.mock('@deriv/hooks', () => ({ + ...jest.requireActual('@deriv/hooks'), + useIsRealAccountNeededForCashier: jest.fn(() => false), +})); + +jest.mock('@deriv/shared', () => ({ + ...jest.requireActual('@deriv/shared'), + isMobile: jest.fn(() => false), + getStaticUrl: jest.fn(() => 'MockUrl'), +})); + +describe('MenuLink', () => { + const mockRootStore = mockStore({}); + let mock_props: React.ComponentProps; + + beforeEach(() => { + mock_props = { + link_to: '', + data_testid: 'dt_menu_link', + text: 'Mock text', + onClickLink: jest.fn(), + }; + }); + + const renderCheck = () => { + expect(screen.getByText('Mock Link Icon')).toBeInTheDocument(); + expect(screen.getByText('Mock text')).toBeInTheDocument(); + }; + + const renderComponent = () => { + const history = createBrowserHistory(); + render(, { + wrapper: ({ children }) => ( + + {children} + + ), + }); + }; + + it('should render no links with icon and text without passing link_to', () => { + renderComponent(); + + renderCheck(); + const link = screen.getByTestId('dt_menu_link'); + expect(link.onclick).toBeFalsy(); + }); + + it('should render menu link if deriv_static_url', () => { + mock_props.link_to = 'MockLink'; + + renderComponent(); + + renderCheck(); + const link = screen.getByTestId('dt_menu_link'); + userEvent.click(link); + expect(mock_props.onClickLink).toHaveBeenCalled(); + }); + + it('should render with passing link_to', () => { + (getStaticUrl as jest.Mock).mockReturnValue(''); + mock_props.link_to = 'MockLink'; + + renderComponent(); + + renderCheck(); + const link = screen.getByTestId('dt_menu_link'); + userEvent.click(link); + expect(mock_props.onClickLink).toHaveBeenCalled(); + }); + + it('should not render if is_hidden is passed', () => { + mock_props.is_hidden = true; + + renderComponent(); + + expect(screen.queryByText('Mock Link Icon')).not.toBeInTheDocument(); + expect(screen.queryByText('Mock text')).not.toBeInTheDocument(); + const link = screen.queryByTestId('dt_menu_link'); + expect(link).not.toBeInTheDocument(); + }); + + it('should render menu link for mobile and two icons with passed suffix_icon', () => { + (isMobile as jest.Mock).mockReturnValue(true); + mock_props.link_to = '/account/languages'; + mock_props.suffix_icon = 'suffix_icon'; + + renderComponent(); + + const icons = screen.getAllByText('Mock Link Icon'); + expect(icons).toHaveLength(2); + const link = screen.getByTestId('dt_menu_link'); + expect(link).toBeInTheDocument(); + userEvent.click(link); + expect(mockRootStore.ui.setMobileLanguageMenuOpen).toHaveBeenCalled(); + }); + + it('should render menu link for cashier for real account on traders hub', () => { + (useIsRealAccountNeededForCashier as jest.Mock).mockReturnValue(true); + mock_props.link_to = '/cashier/deposit'; + Object.defineProperty(window, 'location', { + configurable: true, + value: { pathname: routes.traders_hub }, + }); + + renderComponent(); + + renderCheck(); + const link = screen.getByTestId('dt_menu_link'); + userEvent.click(link); + expect(mockRootStore.ui.toggleNeedRealAccountForCashierModal).toHaveBeenCalled(); + expect(mock_props.onClickLink).toHaveBeenCalled(); + }); + + it('should render menu link for cashier for virtual account on traders hub', () => { + (useIsRealAccountNeededForCashier as jest.Mock).mockReturnValue(false); + mockRootStore.client.is_virtual = true; + mock_props.link_to = '/cashier/deposit'; + Object.defineProperty(window, 'location', { + configurable: true, + value: { pathname: routes.traders_hub }, + }); + + renderComponent(); + + renderCheck(); + const link = screen.getByTestId('dt_menu_link'); + userEvent.click(link); + expect(mockRootStore.ui.toggleReadyToDepositModal).toHaveBeenCalled(); + expect(mock_props.onClickLink).toHaveBeenCalled(); + }); +}); diff --git a/packages/core/src/App/Components/Layout/Header/menu-link.tsx b/packages/core/src/App/Components/Layout/Header/menu-link.tsx new file mode 100644 index 000000000000..83c37f0c81db --- /dev/null +++ b/packages/core/src/App/Components/Layout/Header/menu-link.tsx @@ -0,0 +1,174 @@ +import React from 'react'; +import classNames from 'classnames'; +import { Icon, Text } from '@deriv/components'; +import { useIsRealAccountNeededForCashier } from '@deriv/hooks'; +import { isMobile, routes, getStaticUrl } from '@deriv/shared'; +import { isExternalLink } from '@deriv/utils'; +import { observer, useStore } from '@deriv/stores'; +import { localize } from '@deriv/translations'; +import { BinaryLink } from 'App/Components/Routes'; + +type TMenuLink = { + data_testid: string; + icon: string; + is_active: boolean; + is_disabled: boolean; + is_hidden: boolean; + link_to: string; + onClickLink: () => void; + suffix_icon: string; + text: string; +}; + +const MenuLink = observer( + ({ + data_testid, + icon = '', + is_active, + is_disabled, + is_hidden, + link_to = '', + onClickLink, + suffix_icon = '', + text, + }: Partial) => { + const { ui, client } = useStore(); + const { has_any_real_account, is_virtual } = client; + const { setMobileLanguageMenuOpen, toggleReadyToDepositModal, toggleNeedRealAccountForCashierModal } = ui; + const real_account_needed_for_cashier = useIsRealAccountNeededForCashier(); + const is_trade_text = text === localize('Trade'); + const deriv_static_url = getStaticUrl(link_to); + const traders_hub_path = window.location.pathname === routes.traders_hub; + const is_languages_link_on_mobile = isMobile() && link_to === routes.languages; + const is_external_link = deriv_static_url && isExternalLink(link_to); + const is_cashier_link = [ + routes.cashier_deposit, + routes.cashier_withdrawal, + routes.cashier_acc_transfer, + ].includes(link_to); + + if (is_hidden) return null; + + if (is_languages_link_on_mobile) { + return ( +
setMobileLanguageMenuOpen(true)} + data-testid={data_testid} + > + + {text} + {suffix_icon && } +
+ ); + } + if (real_account_needed_for_cashier && is_cashier_link && traders_hub_path) { + const handleClickCashier = () => { + onClickLink?.(); + toggleNeedRealAccountForCashierModal(); + }; + return ( +
+ + {text} + {suffix_icon && } +
+ ); + } + + if (is_cashier_link && is_virtual && !has_any_real_account) { + const toggle_modal_routes = window.location.pathname === routes.root || traders_hub_path; + + const handleClickCashier = () => { + if (toggle_modal_routes) { + toggleReadyToDepositModal(); + } + onClickLink?.(); + }; + return ( +
+ + {text} + {suffix_icon && } +
+ ); + } + + if (!link_to) { + return ( +
+ + {text} + {suffix_icon && } +
+ ); + } else if (is_external_link) { + return ( + + + + {text} + + {suffix_icon && } + + ); + } + + return ( + + + + {text} + + {suffix_icon && } + + ); + } +); + +export default MenuLink; diff --git a/packages/core/src/App/Components/Layout/Header/toggle-menu-drawer.jsx b/packages/core/src/App/Components/Layout/Header/toggle-menu-drawer.jsx index 2e205cb01772..81e796d2634f 100644 --- a/packages/core/src/App/Components/Layout/Header/toggle-menu-drawer.jsx +++ b/packages/core/src/App/Components/Layout/Header/toggle-menu-drawer.jsx @@ -1,177 +1,36 @@ import classNames from 'classnames'; import React from 'react'; -import { useHistory, useLocation } from 'react-router-dom'; -import { Div100vhContainer, Icon, MobileDrawer, ToggleSwitch, Text } from '@deriv/components'; +import { useLocation, useHistory } from 'react-router-dom'; +import { Div100vhContainer, Icon, MobileDrawer, ToggleSwitch } from '@deriv/components'; import { useOnrampVisible, useAccountTransferVisible, - useIsRealAccountNeededForCashier, useIsP2PEnabled, usePaymentAgentTransferVisible, } from '@deriv/hooks'; import { routes, PlatformContext, getStaticUrl, whatsapp_url } from '@deriv/shared'; import { observer, useStore } from '@deriv/stores'; -import { localize, getAllowedLanguages, Localize } from '@deriv/translations'; +import { localize } from '@deriv/translations'; import NetworkStatus from 'App/Components/Layout/Footer'; import ServerTime from 'App/Containers/server-time.jsx'; -import { BinaryLink, LanguageLink } from 'App/Components/Routes'; import getRoutesConfig from 'App/Constants/routes-config'; -import { changeLanguage } from 'Utils/Language'; import LiveChat from 'App/Components/Elements/LiveChat'; import useLiveChat from 'App/Components/Elements/LiveChat/use-livechat.ts'; import PlatformSwitcher from './platform-switcher'; - -const MenuLink = observer( - ({ link_to, icon, is_active, is_disabled, is_language, suffix_icon, text, onClickLink, is_hidden }) => { - const { common, ui, client } = useStore(); - const { changeCurrentLanguage } = common; - const deriv_static_url = getStaticUrl(link_to); - const history = useHistory(); - const { has_any_real_account, is_virtual } = client; - const { toggleReadyToDepositModal, toggleNeedRealAccountForCashierModal } = ui; - const real_account_needed_for_cashier = useIsRealAccountNeededForCashier(); - - const cashier_link = - link_to === routes.cashier_deposit || - link_to === routes.cashier_withdrawal || - link_to === routes.cashier_acc_transfer; - - if (is_hidden) return null; - - const traders_hub_path = window.location.pathname === routes.traders_hub; - - if (real_account_needed_for_cashier && cashier_link && traders_hub_path) { - const handleClickCashier = () => { - onClickLink(); - toggleNeedRealAccountForCashierModal(); - }; - return ( -
- - {text} - {suffix_icon && } -
- ); - } - - if (cashier_link && is_virtual && !has_any_real_account) { - const toggle_modal_routes = - window.location.pathname === routes.root || window.location.pathname === routes.traders_hub; - - const toggleModal = () => { - if (toggle_modal_routes && !has_any_real_account) { - toggleReadyToDepositModal(); - } - }; - - const handleClickCashier = () => { - if (is_virtual && has_any_real_account) { - history.push(routes.cashier_deposit); - } else if (!has_any_real_account && is_virtual) { - toggleModal(); - } - onClickLink(); - }; - return ( -
- - {text} - {suffix_icon && } -
- ); - } - - if (is_language) { - return ( - { - onClickLink(); - changeLanguage(link_to, changeCurrentLanguage); - }} - > - - {text} - {suffix_icon && } - - ); - } else if (!link_to) { - return ( -
- - {text} - {suffix_icon && } -
- ); - } else if (deriv_static_url) { - return ( - - - - {text} - - {suffix_icon && } - - ); - } - - return ( - - - - {text} - - {suffix_icon && } - - ); - } -); +import MenuLink from './menu-link'; +import { MobileLanguageMenu, MenuTitle } from './Components/ToggleMenu'; const ToggleMenuDrawer = observer(({ platform_config }) => { const { common, ui, client, traders_hub, modules } = useStore(); - const { app_routing_history, current_language, is_language_changing } = common; - const { disableApp, enableApp, is_dark_mode_on: is_dark_mode, setDarkMode: toggleTheme } = ui; + const { app_routing_history, current_language } = common; + const { + disableApp, + enableApp, + is_mobile_language_menu_open, + is_dark_mode_on: is_dark_mode, + setDarkMode: toggleTheme, + setMobileLanguageMenuOpen, + } = ui; const { account_status, is_logged_in, @@ -199,7 +58,7 @@ const ToggleMenuDrawer = observer(({ platform_config }) => { const [transitionExit, setTransitionExit] = React.useState(false); const [primary_routes_config, setPrimaryRoutesConfig] = React.useState([]); const [is_submenu_expanded, expandSubMenu] = React.useState(false); - const [is_language_change, setIsLanguageChange] = React.useState(false); + const { is_appstore } = React.useContext(PlatformContext); const timeout = React.useRef(); const history = useHistory(); @@ -237,6 +96,7 @@ const ToggleMenuDrawer = observer(({ platform_config }) => { }, [is_appstore, account_status, should_allow_authentication]); const toggleDrawer = React.useCallback(() => { + if (is_mobile_language_menu_open) setMobileLanguageMenuOpen(false); if (!is_open) setIsOpen(!is_open); else { setTransitionExit(true); @@ -353,68 +213,6 @@ const ToggleMenuDrawer = observer(({ platform_config }) => { ); }; - const getLanguageRoutes = () => { - return ( - - {Object.keys(getAllowedLanguages()).map((lang, idx) => ( - - - - ))} - - ); - }; - - const GetLanguageRoutesTraderHub = React.useCallback(() => { - return ( - { - expandSubMenu(is_expanded); - setIsLanguageChange(is_changing => !is_changing); - }} - submenu_toggle_class='dc-mobile-drawer__submenu-toggle--hidden' - > -
- {Object.keys(getAllowedLanguages()).map(lang => ( - { - toggleDrawer(); - setIsLanguageChange(is_changing => !is_changing); - }} - /> - ))} -
-
- ); - }, [is_language_change, toggleDrawer, is_language_changing]); - const HelpCentreRoute = has_border_bottom => { return ( @@ -433,34 +231,6 @@ const ToggleMenuDrawer = observer(({ platform_config }) => { const is_trading_hub_category = route.startsWith(routes.traders_hub) || route.startsWith(routes.cashier) || route.startsWith(routes.account); - const MenuTitle = React.useCallback( - () => ( - -
{localize('Menu')}
-
{ - if (!is_language_change) { - setIsLanguageChange(true); - } - }} - > - - - - -
-
- ), - [current_language, is_language_change] - ); - return ( @@ -540,8 +310,6 @@ const ToggleMenuDrawer = observer(({ platform_config }) => { />
)} - {!is_logged_in && getLanguageRoutes()} - {primary_routes_config.map((route_config, idx) => getRoutesWithSubMenu(route_config, idx) )} @@ -638,7 +406,9 @@ const ToggleMenuDrawer = observer(({ platform_config }) => { - {is_language_change && } + {is_mobile_language_menu_open && ( + + )}
diff --git a/packages/core/src/App/Components/Routes/__tests__/language-link.spec.tsx b/packages/core/src/App/Components/Routes/__tests__/language-link.spec.tsx index 589c867294b6..c747e6724b76 100644 --- a/packages/core/src/App/Components/Routes/__tests__/language-link.spec.tsx +++ b/packages/core/src/App/Components/Routes/__tests__/language-link.spec.tsx @@ -2,7 +2,6 @@ import React from 'react'; import { screen, render, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { mockStore, StoreProvider } from '@deriv/stores'; -import { TRootStore } from '@deriv/stores/types'; import { TLanguageLink } from 'App/Components/Routes/language-link'; import { LanguageLink } from '../index'; diff --git a/packages/core/src/App/Components/Routes/language-link.tsx b/packages/core/src/App/Components/Routes/language-link.tsx index 0c25e29d1b94..104d7a723a74 100644 --- a/packages/core/src/App/Components/Routes/language-link.tsx +++ b/packages/core/src/App/Components/Routes/language-link.tsx @@ -1,9 +1,7 @@ import React from 'react'; -import { useTranslation } from 'react-i18next'; import classNames from 'classnames'; - -import { Icon } from '@deriv/components'; import { observer, useStore } from '@deriv/stores'; +import { Icon } from '@deriv/components'; import { getAllowedLanguages } from '@deriv/translations'; export type TLanguageLink = { @@ -14,7 +12,6 @@ export type TLanguageLink = { }; const LanguageLink = observer(({ icon_classname, is_clickable = false, lang, toggleModal }: TLanguageLink) => { - const { i18n } = useTranslation(); const { common } = useStore(); const { changeSelectedLanguage, current_language } = common; const is_active = current_language === lang; @@ -54,10 +51,9 @@ const LanguageLink = observer(({ icon_classname, is_clickable = false, lang, tog data-testid='dt_settings_language_button' id={`dt_settings_${lang}_button`} key={lang} - onClick={async () => { + onClick={() => { + changeSelectedLanguage(lang); toggleModal?.(); - await changeSelectedLanguage(lang); - await i18n.changeLanguage?.(lang); }} className={classNames('settings-language__language-link', { 'settings-language__language-link--active': is_active, diff --git a/packages/core/src/App/Containers/RealAccountSignup/account-wizard-form.js b/packages/core/src/App/Containers/RealAccountSignup/account-wizard-form.js index 7fb55cf09287..c412cda01bd2 100644 --- a/packages/core/src/App/Containers/RealAccountSignup/account-wizard-form.js +++ b/packages/core/src/App/Containers/RealAccountSignup/account-wizard-form.js @@ -1,4 +1,5 @@ import { + FinancialDetails, PersonalDetails, TermsOfUse, TradingAssessmentNewUser, @@ -10,18 +11,15 @@ import { tradingAssessmentConfig, } from '@deriv/account'; -import AddressDetails from './address-details'; -import CurrencySelector from './currency-selector.jsx'; -import FinancialDetails from './financial-details.jsx'; +import AddressDetails from '@deriv/account/src/Components/address-details'; +import CurrencySelector from '@deriv/account/src/Components/currency-selector'; const isMaltaAccount = ({ real_account_signup_target }) => real_account_signup_target === 'maltainvest'; -const shouldShowPersonalAndAddressDetailsAndCurrency = ({ real_account_signup_target }) => - real_account_signup_target !== 'samoa'; export const getItems = props => [ - ...(shouldShowPersonalAndAddressDetailsAndCurrency(props) ? [currencySelectorConfig(props, CurrencySelector)] : []), - ...(shouldShowPersonalAndAddressDetailsAndCurrency(props) ? [personalDetailsConfig(props, PersonalDetails)] : []), - ...(shouldShowPersonalAndAddressDetailsAndCurrency(props) ? [addressDetailsConfig(props, AddressDetails)] : []), + currencySelectorConfig(props, CurrencySelector), + personalDetailsConfig(props, PersonalDetails), + addressDetailsConfig(props, AddressDetails), ...(isMaltaAccount(props) ? [tradingAssessmentConfig(props, TradingAssessmentNewUser)] : []), ...(isMaltaAccount(props) ? [financialDetailsConfig(props, FinancialDetails)] : []), termsOfUseConfig(props, TermsOfUse), diff --git a/packages/core/src/App/Containers/RealAccountSignup/address-details.jsx b/packages/core/src/App/Containers/RealAccountSignup/address-details.jsx deleted file mode 100644 index 7b91511c5fe6..000000000000 --- a/packages/core/src/App/Containers/RealAccountSignup/address-details.jsx +++ /dev/null @@ -1,8 +0,0 @@ -import { AddressDetails } from '@deriv/account'; -import { connect } from 'Stores/connect'; - -export default connect(({ client }) => ({ - is_gb_residence: client.residence === 'gb', - fetchStatesList: client.fetchStatesList, - states_list: client.states_list, -}))(AddressDetails); diff --git a/packages/core/src/App/Containers/RealAccountSignup/currency-selector.jsx b/packages/core/src/App/Containers/RealAccountSignup/currency-selector.jsx deleted file mode 100644 index a8f23d58b27d..000000000000 --- a/packages/core/src/App/Containers/RealAccountSignup/currency-selector.jsx +++ /dev/null @@ -1,20 +0,0 @@ -import { CurrencySelector } from '@deriv/account'; -import { connect } from 'Stores/connect'; -import './currency-selector.scss'; - -export default connect(({ client, ui }) => ({ - currencies: client.currencies_list, - has_currency: !!client.currency, - has_real_account: client.has_active_real_account, - legal_allowed_currencies: client.upgradeable_currencies, - real_account_signup: ui.real_account_signup, - resetRealAccountSignupParams: ui.resetRealAccountSignupParams, - selectable_currencies: client.selectable_currencies, - available_crypto_currencies: client.available_crypto_currencies, - real_account_signup_target: ui.real_account_signup_target, - is_dxtrade_allowed: client.is_dxtrade_allowed, - is_mt5_allowed: client.is_mt5_allowed, - has_fiat: client.has_fiat, - accounts: client.accounts, - is_eu: client.is_eu, -}))(CurrencySelector); diff --git a/packages/core/src/App/Containers/RealAccountSignup/financial-details.jsx b/packages/core/src/App/Containers/RealAccountSignup/financial-details.jsx deleted file mode 100644 index 274cfa2e9824..000000000000 --- a/packages/core/src/App/Containers/RealAccountSignup/financial-details.jsx +++ /dev/null @@ -1,8 +0,0 @@ -import { FinancialDetails } from '@deriv/account'; -import { connect } from 'Stores/connect'; - -export default connect(({ client }) => ({ - is_gb_residence: client.residence === 'gb', - fetchStatesList: client.fetchStatesList, - states_list: client.states_list, -}))(FinancialDetails); diff --git a/packages/core/src/App/Containers/RealAccountSignup/set-currency.jsx b/packages/core/src/App/Containers/RealAccountSignup/set-currency.jsx index 93367176e2c1..08a2fef65240 100644 --- a/packages/core/src/App/Containers/RealAccountSignup/set-currency.jsx +++ b/packages/core/src/App/Containers/RealAccountSignup/set-currency.jsx @@ -5,7 +5,7 @@ import { currencySelectorConfig } from '@deriv/account'; import { website_name, generateValidationFunction } from '@deriv/shared'; import { Text } from '@deriv/components'; import { connect } from 'Stores/connect'; -import CurrencySelector from './currency-selector'; +import CurrencySelector from '@deriv/account/src/Components/currency-selector'; import LoadingModal from './real-account-signup-loader.jsx'; import 'Sass/set-currency.scss'; import 'Sass/change-account.scss'; diff --git a/packages/core/src/App/Containers/SettingsModal/settings-language.jsx b/packages/core/src/App/Containers/SettingsModal/settings-language.jsx index 80bf29f4864d..c559f5e7afd2 100644 --- a/packages/core/src/App/Containers/SettingsModal/settings-language.jsx +++ b/packages/core/src/App/Containers/SettingsModal/settings-language.jsx @@ -12,7 +12,7 @@ const LanguageSettings = observer(() => { return (
-
+
{Object.keys(getAllowedLanguages()).map(lang => isCurrentLanguage(lang, current_language) ? ( diff --git a/packages/core/src/Stores/client-store.js b/packages/core/src/Stores/client-store.js index 88795df64787..01343ee83792 100644 --- a/packages/core/src/Stores/client-store.js +++ b/packages/core/src/Stores/client-store.js @@ -695,7 +695,7 @@ export default class ClientStore extends BaseStore { if (Object.keys(this.currencies_list).length > 0) { const keys = Object.keys(this.currencies_list); // Fix for edge case when logging out from crypto accounts causes Fiat list to be empty - if (this.currencies_list[localize('Fiat')].length < 1) return 'USD'; + if (this.currencies_list[localize('Fiat')]?.length < 1) return 'USD'; return Object.values(this.currencies_list[`${keys[0]}`])[0].text; } diff --git a/packages/core/src/Stores/common-store.js b/packages/core/src/Stores/common-store.js index 00dc32ed2599..c0143e1137ea 100644 --- a/packages/core/src/Stores/common-store.js +++ b/packages/core/src/Stores/common-store.js @@ -13,77 +13,71 @@ export default class CommonStore extends BaseStore { super({ root_store }); makeObservable(this, { - server_time: observable, - current_language: observable, - is_language_changing: observable, + addRouteHistoryItem: action.bound, allowed_languages: observable, - has_error: observable, + app_id: observable, + app_router: observable, + app_routing_history: observable, + changeCurrentLanguage: action.bound, + changeSelectedLanguage: action.bound, + changing_language_timer_id: observable, + checkAppId: action.bound, + current_language: observable, + deposit_url: observable, error: observable, - network_status: observable, + has_error: observable, + init: action.bound, + is_from_derivgo: computed, + is_language_changing: observable, is_network_online: observable, is_socket_opened: observable, - was_socket_opened: observable, - services_error: observable, - deposit_url: observable, - withdraw_url: observable, - app_routing_history: observable, - app_router: observable, - app_id: observable, + network_status: observable, platform: observable, + routeBackInApp: action.bound, + routeTo: action.bound, selected_contract_type: observable, - changing_language_timer_id: observable, - setSelectedContractType: action.bound, - init: action.bound, - checkAppId: action.bound, - changeCurrentLanguage: action.bound, + server_time: observable, + services_error: observable, + setAppRouterHistory: action.bound, setAppstorePlatform: action.bound, - setPlatform: action.bound, - is_from_derivgo: computed, + setDepositURL: action.bound, + setError: action.bound, setInitialRouteHistoryItem: action.bound, - setServerTime: action.bound, setIsSocketOpened: action.bound, setNetworkStatus: action.bound, - setError: action.bound, - showError: action.bound, - setDepositURL: action.bound, - setWithdrawURL: action.bound, + setPlatform: action.bound, + setSelectedContractType: action.bound, + setServerTime: action.bound, setServicesError: action.bound, - setAppRouterHistory: action.bound, - routeTo: action.bound, - addRouteHistoryItem: action.bound, - changeSelectedLanguage: action.bound, - routeBackInApp: action.bound, + setWithdrawURL: action.bound, + showError: action.bound, + was_socket_opened: observable, + withdraw_url: observable, }); } - server_time = ServerTime.get() || toMoment(); // fallback: get current time from moment.js - current_language = currentLanguage; - is_language_changing = false; allowed_languages = Object.keys(getAllowedLanguages()); + app_id = undefined; + app_router = { history: null }; + app_routing_history = []; + changing_language_timer_id = ''; + current_language = currentLanguage; + deposit_url = ''; has_error = false; - + is_language_changing = false; + is_network_online = false; + is_socket_opened = false; error = { type: 'info', message: '', }; - network_status = {}; - is_network_online = false; - is_socket_opened = false; - was_socket_opened = false; - - services_error = {}; - - deposit_url = ''; - withdraw_url = ''; - - app_routing_history = []; - app_router = { history: null }; - app_id = undefined; platform = ''; selected_contract_type = ''; - - changing_language_timer_id = ''; + server_time = ServerTime.get() || toMoment(); // fallback: get current time from moment.js + services_error = {}; + was_socket_opened = false; + withdraw_url = ''; setSelectedContractType(contract_type) { this.selected_contract_type = contract_type; diff --git a/packages/core/src/Stores/contract-trade-store.js b/packages/core/src/Stores/contract-trade-store.js index 90221e286aa2..b8259f94b554 100644 --- a/packages/core/src/Stores/contract-trade-store.js +++ b/packages/core/src/Stores/contract-trade-store.js @@ -1,4 +1,4 @@ -import { action, computed, makeObservable, observable, override, reaction, runInAction,toJS } from 'mobx'; +import { action, computed, makeObservable, observable, override, reaction, runInAction, toJS } from 'mobx'; import { getAccuBarriersDTraderTimeout, @@ -399,7 +399,7 @@ export default class ContractTradeStore extends BaseStore { get last_contract() { const applicable_contracts = this.applicable_contracts(); - const length = applicable_contracts.length; + const length = this.contracts[0]?.contract_info.current_spot_time ? applicable_contracts.length : -1; return length > 0 ? applicable_contracts[length - 1] : {}; } diff --git a/packages/core/src/Stores/notification-store.js b/packages/core/src/Stores/notification-store.js index 6fb9386d30e0..09fb1a99774f 100644 --- a/packages/core/src/Stores/notification-store.js +++ b/packages/core/src/Stores/notification-store.js @@ -1,5 +1,4 @@ import React from 'react'; -import debounce from 'lodash.debounce'; import { action, computed, makeObservable, observable, reaction } from 'mobx'; import { StaticUrl } from '@deriv/components'; @@ -88,8 +87,6 @@ export default class NotificationStore extends BaseStore { updateNotifications: action.bound, }); - const debouncedGetP2pCompletedOrders = debounce(this.getP2pCompletedOrders, 1000); - reaction( () => root_store.common.app_routing_history.map(i => i.pathname), () => { @@ -118,7 +115,7 @@ export default class NotificationStore extends BaseStore { Object.keys(root_store.client.landing_companies || {}).length > 0 && root_store.client.is_p2p_enabled ) { - await debouncedGetP2pCompletedOrders(); + await this.getP2pCompletedOrders(); } if ( @@ -1523,8 +1520,8 @@ export default class NotificationStore extends BaseStore { await WS.wait('authorize'); const response = await WS.send?.({ p2p_order_list: 1, active: 0 }); - if (!response?.error) { - this.p2p_completed_orders = response?.p2p_order_list?.list || []; + if (!response?.error && response?.p2p_order_list?.list) { + this.p2p_completed_orders = response.p2p_order_list.list; } } } diff --git a/packages/core/src/Stores/ui-store.js b/packages/core/src/Stores/ui-store.js index a310100b893d..d6b147811043 100644 --- a/packages/core/src/Stores/ui-store.js +++ b/packages/core/src/Stores/ui-store.js @@ -1,4 +1,4 @@ -import { action, autorun, computed, makeObservable,observable } from 'mobx'; +import { action, autorun, computed, makeObservable, observable } from 'mobx'; import { isMobile, isTouchDevice, LocalStore, routes } from '@deriv/shared'; @@ -29,6 +29,7 @@ export default class UIStore extends BaseStore { is_dark_mode_on = window?.matchMedia?.('(prefers-color-scheme: dark)').matches && isMobile(); is_settings_modal_on = false; is_language_settings_modal_on = false; + is_mobile_language_menu_open = false; is_accounts_switcher_on = false; account_switcher_disabled_message = ''; @@ -253,6 +254,7 @@ export default class UIStore extends BaseStore { is_history_tab_active: observable, is_landscape: observable, is_language_settings_modal_on: observable, + is_mobile_language_menu_open: observable, is_nativepicker_visible: observable, is_positions_drawer_on: observable, @@ -306,6 +308,7 @@ export default class UIStore extends BaseStore { init: action.bound, installWithDeferredPrompt: action.bound, is_account_switcher_disabled: computed, + is_desktop: computed, is_mobile: computed, is_tablet: computed, is_warning_scam_message_modal_visible: computed, @@ -369,6 +372,7 @@ export default class UIStore extends BaseStore { setShouldShowWarningModal: action.bound, setSubSectionIndex: action.bound, setTopUpInProgress: action.bound, + setMobileLanguageMenuOpen: action.bound, toggleAccountsDialog: action.bound, toggleAccountSettings: action.bound, toggleAccountSignupModal: action.bound, @@ -482,6 +486,11 @@ export default class UIStore extends BaseStore { return MAX_MOBILE_WIDTH < this.screen_width && this.screen_width <= MAX_TABLET_WIDTH; } + get is_desktop() { + // TODO: remove tablet once there is a design for the specific size. + return this.is_tablet || this.screen_width > MAX_TABLET_WIDTH; + } + get is_account_switcher_disabled() { return !!this.account_switcher_disabled_message; } @@ -576,6 +585,10 @@ export default class UIStore extends BaseStore { return this.is_dark_mode_on; } + setMobileLanguageMenuOpen(is_mobile_language_menu_open) { + this.is_mobile_language_menu_open = is_mobile_language_menu_open; + } + toggleSetCurrencyModal() { this.is_set_currency_modal_visible = !this.is_set_currency_modal_visible; } diff --git a/packages/core/src/sass/app.scss b/packages/core/src/sass/app.scss index b6f913bcad62..06ad5de2cfe1 100644 --- a/packages/core/src/sass/app.scss +++ b/packages/core/src/sass/app.scss @@ -47,8 +47,8 @@ @import 'app/_common/components/cookie-banner'; @import 'app/_common/components/notification-banner'; @import 'app/_common/components/notification-promo'; -@import 'app/_common/components/onfido-container'; @import 'app/_common/components/wallet'; +@import 'app/_common/components/account-common'; @import 'app/_common/components/cfd-poa'; // Modules @import 'app/modules/page-404'; diff --git a/packages/core/src/sass/app/_common/components/account-common.scss b/packages/core/src/sass/app/_common/components/account-common.scss new file mode 100644 index 000000000000..76f7546d6087 --- /dev/null +++ b/packages/core/src/sass/app/_common/components/account-common.scss @@ -0,0 +1,873 @@ +.onfido-container { + display: flex; + flex-direction: column; + align-items: center; + gap: 1.6rem; + + &-view_wrapper { + position: relative; + min-width: 32.8rem; + min-height: 50rem; + margin: auto; + } + + .account-form__poi-confirm-example_container { + margin-bottom: 0; + } + + .onfido-sdk-ui-Modal-inner { + border-radius: $BORDER_RADIUS * 2; + } + + @include mobile { + padding: 1.6rem; + + .onfido-sdk-ui-PageTitle-titleSpan { + font-size: 2rem; + } + } + + .onfido-sdk-ui-Camera-webcamContainer { + left: auto; + width: -webkit-fill-available; + } + + &__disabled { + opacity: 0.5; + pointer-events: none; + } + + &__info-message { + position: absolute; + top: 2.4rem; + left: 25%; + z-index: 1; + @include mobile { + top: 1.6rem; + left: 3.1rem; + } + } + + &__status-message { + background-color: var(--transparent-correct-message); + justify-content: flex-start; + transition: transform 0.35s ease, opacity 0.35s linear; + transform-origin: top; + opacity: 1; + width: 98%; + + &--exit { + transform: scale(1, 0); + opacity: 0; + } + + &_container { + position: absolute; + top: 0.4rem; + min-height: 3.4rem; + text-align: center; + z-index: 1; + width: 100%; + } + } +} + +.account { + &-form { + &__poi-confirm-example { + display: flex; + flex-direction: column; + gap: 0.8rem; + @include mobile { + height: fit-content; + } + + .account-form__fieldset { + max-width: unset; + } + + &--status-message { + margin-top: 1.6rem; + text-align: center; + width: 100%; + } + &_container { + border: 1px solid var(--general-active); + border-radius: 0.8rem; + + @include desktop { + padding: 1.6rem; + } + + @include mobile { + padding: 1.6rem 1.6rem 0; + } + } + + &_wrapper { + transition: transform 0.35s ease, opacity 0.35s linear; + transform-origin: top; + opacity: 1; + padding: 1.6rem; + max-width: 67rem; + + @include mobile { + padding-inline: 0; + } + + &--exit { + transform: scale(1, 0); + opacity: 0; + } + } + + .da-inline-note-with-icon { + margin-top: 0; + padding: 0.8rem; + display: flex; + background: var(--status-alert-background); + border-radius: $BORDER_RADIUS; + gap: 0.8rem; + line-height: 1.4rem; + } + + .account { + &__scrollbars_container--grid-layout { + grid-gap: 0; + } + &-form { + &__section-side-note { + @include mobile { + margin-top: 1.6rem; + justify-content: center; + display: flex; + } + } + &__section-content { + .account-form__fieldset { + margin-bottom: 0; + + .dc-input { + margin-bottom: 1rem; + } + + .dc-input--error, + .dc-input.dc-input--hint { + margin-bottom: 3.8rem; + } + } + } + } + } + + &--button { + padding: 0; + margin: 0; + background-color: unset; + border: unset; + + &__disabled > * { + cursor: not-allowed; + } + } + } + + &__poi-additional-information { + margin-top: 2rem; + } + + &__section { + display: grid; + + @include desktop { + grid-template-areas: 'section-side-note section-content'; + grid-template-columns: auto 1fr; + grid-gap: 1rem; + } + + align-items: center; + + @include mobile { + grid-template-areas: 'section-side-note' 'section-content'; + } + + &-side-note { + grid-area: section-side-note; + + @include mobile { + margin-top: unset; + width: 100%; + margin-bottom: 0.8rem; + } + &__example { + @include mobile { + flex-direction: column; + } + + &-image { + align-self: center; + } + } + } + + &-content { + grid-area: section-content; + + @include mobile { + width: 100%; + } + } + @include desktop { + &--reversed { + grid-template-areas: 'section-content section-side-note'; + grid-template-columns: 1fr auto; + } + } + } + + &__footer { + height: 8rem; + position: absolute; + bottom: 0; + left: 0; + display: flex; + width: 100%; + padding: 1.6rem 2.4rem; + align-items: center; + justify-content: flex-end; + z-index: 4; + border-radius: 0 $BORDER_RADIUS $BORDER_RADIUS 0; + border-top: 1px solid var(--general-section-1); + background-color: var(--general-main-1); + + &--reset { + padding: 2.4rem 0; + position: relative; + margin-top: 2rem; + } + + .back-btn { + margin-right: 8px; + + .back-btn-icon { + margin-right: 0.8rem; + } + + span { + display: inline-flex; + align-items: center; + } + } + + &-note { + color: var(--text-prominent); + font-size: var(--text-size-xxs); + line-height: 1.5; + text-align: right; + min-width: 27.6rem; + max-width: 36.6rem; + height: 3.6rem; + + @include mobile { + width: auto; + text-align: center; + align-self: center; + + &--dashboard { + margin: 0 1.6rem; + text-align: left; + } + } + } + + &-btn { + height: 4rem; + margin: 0 0 0 1.6rem; + + &-wrapper { + align-items: normal; + display: flex; + flex-direction: row; + + @include mobile { + flex-direction: column; + } + } + + &-dashboard { + .dc-btn__text { + color: var(--text-prominent); + } + } + + &-dashboard:hover { + background-color: unset !important; + } + + @include desktop { + margin-left: 1.6rem; + + &-wrapper--dashboard { + display: flex; + justify-content: space-between; + } + } + + @include mobile { + margin: 0 2.4rem; + + &--has-bottom-margin { + margin-bottom: 1.6rem; + } + } + } + + &--dashboard { + width: 68.5rem; + margin-left: 6rem; + + @include mobile { + width: 100vw; + margin-left: unset; + + & .account-form__footer-btn { + min-width: 35%; + + &-wrapper { + flex-direction: row; + } + } + + & > div { + display: flex; + justify-content: space-around; + } + } + } + + &-poa { + margin-left: unset; + } + + &-all-fields-required { + padding-bottom: 2.4rem; + padding-top: 0.8rem; + } + + @include mobile { + flex-direction: column; + height: auto; + align-items: initial; + border-top: 2px solid var(--general-section-1); + } + } + } + &__scrollbars_container { + height: 100%; + padding-top: 2.4rem; + padding-bottom: 6.4rem; + + &-wrapper { + overflow-x: hidden; + overflow-y: auto; + } + + &--grid-layout { + display: grid; + grid-gap: 4px; + + .dc-dropdown-container { + .dc-dropdown__display-text, + .dc-list__item-text { + text-transform: unset; + } + } + + @include mobile { + padding: 0 1.6rem; + overflow-x: hidden; + overflow-y: auto; + grid-template-rows: auto auto 1fr; + + & .account-form__header { + &:first-child { + padding-top: 2.4rem; + margin-bottom: 3.2rem; + } + } + } + } + + @include desktop { + padding-left: 16px; + padding-right: 16px; + } + + @include mobile { + height: unset; + padding-top: unset; + padding-bottom: unset; + } + } +} + +.idv-layout { + width: 100%; + .poi-form-on-signup__fields { + .proof-of-identity { + &__container { + width: 100%; + padding: 0; + } + + &__fieldset { + margin-bottom: 2rem; + &-input { + @include desktop { + margin-bottom: unset; + } + } + } + } + } + .proof-of-identity__inner-container { + @include desktop { + &--incl-image { + display: grid; + align-items: center; + column-gap: 1.5rem; + grid-template-columns: auto 0.5fr; + } + } + } + + .additional-field { + margin-top: 1.6rem; + margin-bottom: 2rem; + + @include mobile { + margin-top: 1rem; + } + } +} + +.account-form_poa { + .account { + &-form { + &__section { + align-items: unset; + + &-side-note { + width: 26rem; + } + + &-content { + width: 40rem; + + @include mobile { + width: 100%; + } + } + } + + &__fieldset { + max-width: unset; + margin-top: 1.6rem; + display: flex; + flex-direction: column; + gap: 3.2rem; + } + } + + &__scrollbars_container { + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + } + } + + .files-description { + &__title { + margin-bottom: 1.6rem; + } + + li { + list-style-type: initial; + margin-left: 1.6rem; + } + } + + &-submit-error { + justify-content: left; + } +} + +.file-uploader { + &__container { + @include desktop { + margin: 1.6rem 0; + padding: 1.6rem 2.4rem; + border-radius: $BORDER_RADIUS * 2; + border: 1px solid var(--border-normal); + } + } + + &__file { + &-dropzone-wrapper { + flex: 1; + height: 13.2rem; + position: relative; + + .dc-file-dropzone { + border-radius: $BORDER_RADIUS * 2; + + &__message { + max-width: unset; + + &-subtitle { + font-size: 1.4rem; + font-weight: bold; + display: flex; + flex-direction: column; + gap: 0.8rem; + margin-top: 1.6rem; + } + } + + @include mobile { + border: 1px dashed var(--icon-grey-background); + } + } + } + + &-title { + margin: 2.4rem 0 1.6rem; + } + + &-supported-formats { + display: flex; + justify-content: space-between; + margin: 1.6rem 0 2.4rem; + + @include mobile { + margin-bottom: 1.6rem; + } + + span { + @include mobile { + max-width: 14rem; + } + } + } + + @include mobile { + flex: unset; + margin-bottom: 2.4rem; + height: 15rem; + } + } + + &__remove-btn { + position: absolute; + width: 1.6rem; + height: 1.6rem; + top: 0.8rem; + right: 0.8rem; + cursor: pointer; + transition: transform 0.25s linear; + + &:hover { + transform: scale(1.25, 1.25); + } + + &--error { + circle { + fill: var(--status-danger); + } + } + + &-container { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + } + } +} + +.proof-of-identity { + width: 100%; + height: 100%; + + &__main-container { + max-width: 68.2rem; + } + + .min-height { + min-height: 50vh; + + @include mobile { + min-height: unset; + } + } + + &__container { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; + + @include mobile { + min-height: unset; + overflow-y: scroll; + justify-content: center; + padding: 0 1.6rem; + } + + &--reset { + align-items: normal; + + @include mobile { + overflow-y: unset; + } + + .proof-of-identity__submit-button { + @include mobile { + margin: unset; + width: 100%; + } + } + + .form-body { + @include desktop { + z-index: 5; + } + } + + .account__scrollbars_container--grid-layout { + padding: 0; + } + } + + .icon { + width: 128px; + height: 128px; + margin-top: 5.2rem; + margin-bottom: 2.6rem; + + @include mobile { + width: 72px; + height: 72px; + margin-top: 2.6rem; + } + } + + .external-dropdown { + .dc-dropdown-list { + z-index: 5; + } + } + } + + .continue-trade { + margin-top: unset !important; + } + + &__redirection { + .dc-btn { + margin-top: 3.2rem; + height: 4rem; + + @include mobile { + margin: 1.6rem 0; + padding: 1.6rem; + width: 100%; + } + } + } + + &__country-text { + margin-bottom: 1.6rem; + } + + &__text { + @include mobile { + width: 94%; + text-align: center; + } + } + + &__dropdown-container { + margin-top: 1.6rem; + } + + &__inner-container { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + width: 100%; + + @include mobile { + flex-direction: column; + } + } + + &__header { + margin: 5.4rem 0 1.6rem; + + @include mobile { + margin: 2.4rem 0 0.8rem; + } + } + + &__footer.external-footer { + padding: unset; + position: unset; + top: unset; + bottom: unset; + border: none; + height: fit-content; + z-index: 4; + } + + &__footer { + @include mobile { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-end; + position: fixed; + bottom: 0; + } + } + + &__footer-alert { + margin-right: auto; + } + + &__submit-button { + @include mobile { + margin-right: 1.2rem; + } + } + + &__fieldset { + width: 39.5rem; + + @include mobile { + width: 94%; + margin: 0.4rem 0 3.2rem; + } + + .country-dropdown { + min-height: 35.2rem; + } + } + + &__fieldset-container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + @include mobile { + width: 100%; + } + } + + &__fieldset-input { + width: 39.5rem; + + @include mobile { + width: 94%; + margin-top: 0.4rem; + } + } + + &__sample-container { + margin-left: 1.6rem; + + @include mobile { + margin-left: unset; + width: 94%; + } + } + + &__sample-container-external { + margin-top: 2.8rem; + } + + &__image-container { + width: fit-content; + height: fit-content; + padding: 8px; + border-radius: 4px; + background-color: $color-grey-2; + } + + &__image { + max-width: 24.5rem; + border-radius: 4px; + object-fit: contain; + + @include mobile { + max-width: calc(95vw - 16px); + } + } + + &__redirect { + width: auto !important; + } + + .text { + display: block; + } + + .btm-spacer { + margin-bottom: 1.6rem; + } + + &__failed { + &-message { + margin: 1.6rem auto 3.2rem; + border-radius: $BORDER_RADIUS * 2; + } + } + + &__mismatch-container { + .idv-form { + margin-bottom: 1.6rem; + } + + .proof-of-identity__submit-button { + @include desktop { + margin-top: 3.2rem; + margin-left: auto; + } + + @include mobile { + margin-inline: 2.4rem; + } + } + + .account__scrollbars_container { + @include desktop { + padding-top: 0; + } + } + + .account__scrollbars_container--grid-layout { + @include mobile { + margin-top: 2.4rem; + } + } + } +} + +@include mobile { + .formik__confirmation-checkbox { + margin-bottom: 1.6rem; + } +} diff --git a/packages/core/src/sass/app/_common/components/onfido-container.scss b/packages/core/src/sass/app/_common/components/onfido-container.scss deleted file mode 100644 index 7c549ba2daf7..000000000000 --- a/packages/core/src/sass/app/_common/components/onfido-container.scss +++ /dev/null @@ -1,441 +0,0 @@ -.onfido-container { - display: flex; - flex-direction: column; - align-items: center; - gap: 1.6rem; - - &-view_wrapper { - position: relative; - min-width: 32.8rem; - min-height: 50rem; - margin: auto; - } - - .account-form__poi-confirm-example_container { - margin-bottom: 0; - } - - .onfido-sdk-ui-Modal-inner { - border-radius: 0.8rem; - } - - @include mobile() { - padding: 1.6rem; - - .onfido-sdk-ui-PageTitle-titleSpan { - font-size: 2rem; - } - } - - .onfido-sdk-ui-Camera-webcamContainer { - left: auto; - width: -webkit-fill-available; - } - - &__disabled { - opacity: 0.5; - pointer-events: none; - } - - &__info-message { - position: absolute; - top: 2.4rem; - left: 25%; - z-index: 1; - @include mobile { - top: 1.6rem; - left: 3.1rem; - } - } - - &__status-message { - background-color: var(--transparent-correct-message); - justify-content: flex-start; - transition: transform 0.35s ease, opacity 0.35s linear; - transform-origin: top; - opacity: 1; - width: 98%; - - &--exit { - transform: scale(1, 0); - opacity: 0; - } - - &_container { - position: absolute; - top: 0.4rem; - min-height: 3.4rem; - text-align: center; - z-index: 1; - width: 100%; - } - } -} - -.account-form { - &__poi-confirm-example { - display: flex; - flex-direction: column; - gap: 0.8rem; - - .account-form__fieldset { - max-width: unset; - } - - &--status-message { - margin-top: 1.6rem; - text-align: center; - width: 100%; - } - &_container { - border: 1px solid var(--general-active); - border-radius: 0.8rem; - - @include desktop() { - padding: 1.6rem; - } - - @include mobile() { - margin-bottom: 7rem; - padding: 1.6rem 1.6rem 0; - } - - .account__scrollbars_container { - padding: 0; - - &--grid-layout { - height: auto !important; - - @include mobile() { - padding: 0 1.6rem; - } - } - - .account-form__section { - align-items: center; - justify-content: space-between; - margin-top: 0.8rem; - - @include mobile() { - margin-bottom: 0; - } - } - } - } - - &_wrapper { - transition: transform 0.35s ease, opacity 0.35s linear; - transform-origin: top; - opacity: 1; - padding: 1.6rem; - max-width: 67rem; - - @include mobile() { - padding-inline: 0; - } - - &--exit { - transform: scale(1, 0); - opacity: 0; - } - } - - .da-inline-note-with-icon { - margin-top: 0; - padding: 0.8rem; - display: flex; - background: var(--status-alert-background); - border-radius: $BORDER_RADIUS; - gap: 0.8rem; - line-height: 1.4rem; - } - - .account__scrollbars_container--grid-layout { - grid-gap: 0; - } - - .account-form__section-side-note { - @include mobile { - margin-top: 1.6rem; - justify-content: center; - display: flex; - } - } - - .account-form__section-content { - .account-form__fieldset { - margin-bottom: 0; - - .dc-input { - margin-bottom: 1rem; - } - - .dc-input--error, - .dc-input.dc-input--hint { - margin-bottom: 3.8rem; - } - } - } - - &--button { - padding: 0; - margin: 0; - background-color: unset; - border: unset; - - &__disabled > * { - cursor: not-allowed; - } - } - } - - &__poi-additional-information { - margin-top: 2rem; - } - - &__section { - display: grid; - - @include desktop() { - grid-template-areas: 'section-side-note section-content'; - grid-template-columns: auto 1fr; - grid-gap: 1rem; - } - align-items: center; - @include mobile { - grid-template-areas: 'section-side-note' 'section-content'; - } - - &-side-note { - grid-area: section-side-note; - - @include mobile { - margin-top: unset; - width: 100%; - margin-bottom: 0.8rem; - } - - &__example { - @include mobile { - flex-direction: column; - } - - &-image { - align-self: center; - } - } - } - - &-content { - grid-area: section-content; - - @include mobile { - width: 100%; - } - } - - @include desktop { - &--reversed { - grid-template-areas: 'section-content section-side-note'; - grid-template-columns: 1fr auto; - } - } - } -} - -.idv-layout { - width: 100%; - .poi-form-on-signup__fields { - .proof-of-identity__container { - width: 100%; - } - .proof-of-identity__fieldset { - @include desktop { - margin-bottom: unset; - } - @include mobile { - margin-bottom: 2rem; - } - &-input { - @include desktop { - margin-bottom: unset; - } - } - } - } - .proof-of-identity__inner-container { - @include desktop { - &--incl-image { - display: grid; - align-items: center; - column-gap: 1.5rem; - grid-template-columns: auto 0.5fr; - } - } - } - - .additional-field { - margin-top: 1.6rem; - - @include mobile { - margin-top: 1rem; - } - } -} - -.account-form_poa { - .account { - &-form { - &__section { - align-items: unset; - - &-side-note { - width: 26rem; - } - - &-content { - width: 40rem; - - @include mobile { - width: 100%; - } - } - } - - &__fieldset { - max-width: unset; - margin-top: 1.6rem; - display: flex; - flex-direction: column; - gap: 3.2rem; - } - } - - &__scrollbars_container { - padding-top: 0; - padding-left: 0; - padding-bottom: 0; - - &--grid-layout { - @include mobile { - padding-top: 2.4rem; - } - } - } - } - - .files-description { - &__title { - margin-bottom: 1.6rem; - } - - li { - list-style-type: initial; - margin-left: 1.6rem; - } - } - - &-submit-error { - justify-content: left; - } -} - -.file-uploader { - &__container { - @include desktop { - margin: 1.6rem 0; - padding: 1.6rem 2.4rem; - border-radius: $BORDER_RADIUS * 2; - border: 1px solid var(--border-normal); - } - } - - &__file { - &-dropzone-wrapper { - flex: 1; - height: 13.2rem; - position: relative; - - .dc-file-dropzone { - border-radius: $BORDER_RADIUS * 2; - - &__message { - max-width: unset; - - &-subtitle { - font-size: 1.4rem; - font-weight: bold; - display: flex; - flex-direction: column; - gap: 0.8rem; - margin-top: 1.6rem; - } - } - - @include mobile { - border: 1px dashed var(--icon-grey-background); - } - } - } - - &-title { - margin: 2.4rem 0 1.6rem; - } - - &-supported-formats { - display: flex; - justify-content: space-between; - margin: 1.6rem 0 2.4rem; - - @include mobile { - margin-bottom: 1.6rem; - } - - span { - @include mobile { - max-width: 14rem; - } - } - } - - @include mobile { - flex: unset; - margin-bottom: 2.4rem; - height: 15rem; - } - } - - &__remove-btn { - position: absolute; - width: 1.6rem; - height: 1.6rem; - top: 0.8rem; - right: 0.8rem; - cursor: pointer; - transition: transform 0.25s linear; - - &:hover { - transform: scale(1.25, 1.25); - } - - &--error { - circle { - fill: var(--status-danger); - } - } - - &-container { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - } - } -} - -@include mobile { - .formik__confirmation-checkbox { - margin-bottom: 1.6rem; - } -} diff --git a/packages/core/src/sass/app/_common/components/settings-language.scss b/packages/core/src/sass/app/_common/components/settings-language.scss index ebd6c519b3b2..d48a1e07d1c5 100644 --- a/packages/core/src/sass/app/_common/components/settings-language.scss +++ b/packages/core/src/sass/app/_common/components/settings-language.scss @@ -1,26 +1,28 @@ /** @define settings-language */ .settings-language { + margin-left: 1.6rem; + width: fit-content; + @include mobile { display: flex; - padding: 1.5rem 1.5rem 8rem; + flex-direction: column; + padding: 1.6rem 2.2rem 8rem; + width: 100%; + margin-left: 0; } &__language-container { display: grid; - grid-template-columns: repeat(4, minmax(90px, 1fr)); - grid-gap: 1.6rem; - &--has-padding { - padding: 1.6rem; - } + grid-template-columns: repeat(4, min-content); + grid-gap: 0.8rem; + margin: 1.6rem 0; + @include mobile { - grid-template-columns: repeat(2, minmax(50%, 1fr)); - grid-gap: 0.3rem; + grid-template-columns: repeat(2, minmax(40%, 1fr)); grid-template-rows: auto; - width: 100%; - &--has-padding { - padding: 0 1.6rem; - grid-gap: 0; - } + grid-gap: initial; + margin: 0 auto; + padding: 0 0.8rem; @include mobile { &--disabled { @@ -44,6 +46,9 @@ align-items: center; border-radius: $BORDER_RADIUS; padding: 16px; + width: 13.6rem; + height: 8.8rem; + @include mobile { padding: 8px; @@ -53,22 +58,26 @@ } text-decoration: none; background-color: var(--state-normal); - cursor: pointer; + + & * { + cursor: pointer; + } &--active { border: 1px solid var(--border-active); color: var(--text-prominent); + + & * { + cursor: not-allowed; + } } } &-flag { - width: 5rem; - height: 4rem; - cursor: pointer; + width: 3.6rem; + height: 2.8rem; @include mobile { margin-top: 1rem; - width: 4rem; - height: 5rem; } } &-name { @@ -93,8 +102,3 @@ } } } -.account-form { - &--language-settings { - overflow: auto !important; - } -} diff --git a/packages/core/src/sass/real-account-signup.scss b/packages/core/src/sass/real-account-signup.scss index 7f2d972bf8ff..0fcafc98d420 100644 --- a/packages/core/src/sass/real-account-signup.scss +++ b/packages/core/src/sass/real-account-signup.scss @@ -205,6 +205,7 @@ border-top: 1px solid var(--general-section-1); @include mobile { width: 100%; + position: relative; } } @@ -216,9 +217,7 @@ } } .account-form__footer { - @include desktop { - position: relative; - } + position: relative; } } @@ -227,7 +226,8 @@ height: 100%; @include mobile { width: 100%; - display: flex; - flex-direction: column; + display: grid; + grid-template-rows: 1fr auto; + padding: unset; } } diff --git a/packages/hooks/src/__tests__/useIsAccountStatusPresent.spec.tsx b/packages/hooks/src/__tests__/useIsAccountStatusPresent.spec.tsx index e3becc366dc9..05153b421de5 100644 --- a/packages/hooks/src/__tests__/useIsAccountStatusPresent.spec.tsx +++ b/packages/hooks/src/__tests__/useIsAccountStatusPresent.spec.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; -import { mockStore, StoreProvider } from '@deriv/stores'; import { renderHook } from '@testing-library/react-hooks'; +import { mockStore, StoreProvider } from '@deriv/stores'; import useIsAccountStatusPresent from '../useIsAccountStatusPresent'; describe('useIsAccountStatusPresent', () => { diff --git a/packages/hooks/src/__tests__/useStatesList.spec.tsx b/packages/hooks/src/__tests__/useStatesList.spec.tsx new file mode 100644 index 000000000000..6d174de438ba --- /dev/null +++ b/packages/hooks/src/__tests__/useStatesList.spec.tsx @@ -0,0 +1,49 @@ +import * as React from 'react'; +import { renderHook } from '@testing-library/react-hooks'; +import { APIProvider, useFetch } from '@deriv/api'; +import { StoreProvider, mockStore } from '@deriv/stores'; +import useStatesList from '../useStatesList'; + +jest.mock('@deriv/api', () => ({ + ...jest.requireActual('@deriv/api'), + useFetch: jest.fn(), +})); + +const mockUseFetch = useFetch as jest.MockedFunction>; + +describe('useStatesList', () => { + const mock = mockStore({}); + + const wrapper = ({ children }: { children: JSX.Element }) => ( + + {children} + + ); + + it('should return an empty array when the store is not ready', () => { + // @ts-expect-error need to come up with a way to mock the return type of useFetch + mockUseFetch.mockReturnValue({ + data: { + states_list: [], + }, + }); + const { result } = renderHook(() => useStatesList('in'), { wrapper }); + + expect(result.current.data).toHaveLength(0); + }); + + it('should return data fetched along with correct status', () => { + // @ts-expect-error need to come up with a way to mock the return type of useFetch + mockUseFetch.mockReturnValue({ + data: { + states_list: [ + { text: 'state 1', value: 's1' }, + { text: 'state 2', value: 's2' }, + ], + }, + isFetched: true, + }); + const { result } = renderHook(() => useStatesList('in'), { wrapper }); + expect(result.current.isFetched).toBeTruthy(); + }); +}); diff --git a/packages/hooks/src/index.ts b/packages/hooks/src/index.ts index 4172ab52b294..69ba5299f8f0 100644 --- a/packages/hooks/src/index.ts +++ b/packages/hooks/src/index.ts @@ -58,6 +58,7 @@ export { default as useWalletMigration } from './useWalletMigration'; export { default as useWalletTransactions } from './useWalletTransactions'; export { default as useWalletTransfer } from './useWalletTransfer'; export { default as useWalletsList } from './useWalletsList'; +export { default as useStatesList } from './useStatesList'; export { default as useP2PConfig } from './useP2PConfig'; export { default as useIsClientHighRiskForMT5 } from './useIsClientHighRiskForMT5'; export { default as useCFDCanGetMoreMT5Accounts } from './useCFDCanGetMoreMT5Accounts'; diff --git a/packages/hooks/src/useIsAccountStatusPresent.ts b/packages/hooks/src/useIsAccountStatusPresent.ts index e641150356d7..db9144b6e058 100644 --- a/packages/hooks/src/useIsAccountStatusPresent.ts +++ b/packages/hooks/src/useIsAccountStatusPresent.ts @@ -48,6 +48,12 @@ const AccountStatusList = [ type TAccountStatus = typeof AccountStatusList[number]; +/** + * Custom hook to check if a particular account status is present. + * @name useIsAccountStatusPresent + * @param status of the account to check + * @returns boolean + */ const useIsAccountStatusPresent = (status: TAccountStatus) => { const { client: { account_status }, diff --git a/packages/hooks/src/useStatesList.ts b/packages/hooks/src/useStatesList.ts new file mode 100644 index 000000000000..ad5086745a1c --- /dev/null +++ b/packages/hooks/src/useStatesList.ts @@ -0,0 +1,16 @@ +import { useFetch } from '@deriv/api'; +/** + * Custom hook to get states list for a particular country. + * @returns an object with the states list and the options to manage API response. + */ +const useStatesList = (country: string) => { + const { data, ...rest } = useFetch('states_list', { + // @ts-expect-error The `states_list` type from `@deriv/api-types` is not correct. + // The type should be `string`, but it's an alias to string type. + payload: { states_list: country }, + }); + + return { ...rest, data: data?.states_list ?? [] }; +}; + +export default useStatesList; diff --git a/packages/p2p/crowdin/messages.json b/packages/p2p/crowdin/messages.json index 257934ad207a..6cdb3364a717 100644 --- a/packages/p2p/crowdin/messages.json +++ b/packages/p2p/crowdin/messages.json @@ -1 +1 @@ -{"6794664":"Ads that match your Deriv P2P balance and limit.","19789721":"Nobody has blocked you. Yay!","24711354":"Total orders <0>30d | <1>lifetime","47573834":"Fixed rate (1 {{account_currency}})","50672601":"Bought","51881712":"You already have an ad with the same exchange rate for this currency pair and order type.

Please set a different rate for your ad.","55916349":"All","68867477":"Order ID {{ id }}","81450871":"We couldn’t find that page","121738739":"Send","122280248":"Avg release time <0>30d","134205943":"Your ads with fixed rates have been deactivated. Set floating rates to reactivate them.","140800401":"Float","145959105":"Choose a nickname","150156106":"Save changes","159757877":"You won't see {{advertiser_name}}'s ads anymore and they won't be able to place orders on your ads.","170072126":"Seen {{ duration }} days ago","173939998":"Avg. pay time <0>30d","197477687":"Edit {{ad_type}} ad","203271702":"Try again","231473252":"Preferred currency","233677840":"of the market rate","246815378":"Once set, your nickname cannot be changed.","276261353":"Avg pay time <0>30d","277542386":"Please use <0>live chat to contact our Customer Support team for help.","316725580":"You can no longer rate this transaction.","323002325":"Post ad","324970564":"Seller's contact details","338910048":"You will appear to other users as","358133589":"Unblock {{advertiser_name}}?","364681129":"Contact details","367579676":"Blocked","392469164":"You have blocked {{advertiser_name}}.","416167062":"You'll receive","424668491":"expired","439264204":"Please set a different minimum and/or maximum order limit.

The range of your ad should not overlap with any of your active ads.","452752527":"Rate (1 {{ currency }})","459886707":"E-wallets","460477293":"Enter message","464044457":"Buyer's nickname","473688701":"Enter a valid amount","476023405":"Didn't receive the email?","488150742":"Resend email","498500965":"Seller's nickname","500514593":"Hide my ads","501523417":"You have no orders.","517202770":"Set fixed rate","523301614":"Release {{amount}} {{currency}}","525380157":"Buy {{offered_currency}} order","531912261":"Bank name, account number, beneficiary name","554135844":"Edit","555447610":"You won't be able to change your buy and sell limits again after this. Do you want to continue?","560402954":"User rating","565060416":"Exchange rate","580715136":"Please register with us!","587882987":"Advertisers","611376642":"Clear","612069973":"Would you recommend this buyer?","628581263":"The {{local_currency}} market rate has changed.","639382772":"Please upload supported file type.","649549724":"I’ve not received any payment.","654193846":"The verification link appears to be invalid. Hit the button below to request for a new one","655733440":"Others","661808069":"Resend email {{remaining_time}}","662578726":"Available","683273691":"Rate (1 {{ account_currency }})","723172934":"Looking to buy or sell USD? You can post your own ad for others to respond.","728383001":"I’ve received more than the agreed amount.","733311523":"P2P transactions are locked. This feature is not available for payment agents.","767789372":"Wait for payment","782834680":"Time left","783454335":"Yes, remove","830703311":"My profile","834075131":"Blocked advertisers","838024160":"Bank details","842911528":"Don’t show this message again.","846659545":"Your ad is not listed on <0>Buy/Sell because the amount exceeds your daily limit of {{limit}} {{currency}}.\n <1 /><1 />You can still see your ad on <0>My ads. If you’d like to increase your daily limit, please contact us via <2>live chat.","847028402":"Check your email","858027714":"Seen {{ duration }} minutes ago","873437248":"Instructions (optional)","876086855":"Complete the financial assessment form","881351325":"Would you recommend this seller?","887667868":"Order","892431976":"If you cancel your order {{cancellation_limit}} times in {{cancellation_period}} hours, you will be blocked from using Deriv P2P for {{block_duration}} hours.
({{number_of_cancels_remaining}} cancellations remaining)","947389294":"We need your documents","949859957":"Submit","954233511":"Sold","957529514":"To place an order, add one of the advertiser’s preferred payment methods:","957807235":"Blocking wasn't possible as {{name}} is not using Deriv P2P anymore.","988380202":"Your instructions","1001160515":"Sell","1002264993":"Seller's real name","1020552673":"You're creating an ad to buy <0>{{ target_amount }} {{ target_currency }}...","1030390916":"You already have an ad with this range","1035893169":"Delete","1052094244":"Max order","1056821534":"Are you sure?","1057127276":"{{- avg_release_time_in_minutes}} min","1065551550":"Set floating rate","1080990424":"Confirm","1089110190":"You accidentally gave us another email address (usually a work or a personal one instead of the one you meant).","1091533736":"Don't risk your funds with cash transactions. Use bank transfers or e-wallets instead.","1106073960":"You've created an ad","1106485202":"Available Deriv P2P balance","1109217274":"Success!","1119887091":"Verification","1121630246":"Block","1137964885":"Can only contain letters, numbers, and special characters .- _ @.","1151608942":"Total amount","1157877436":"{{field_name}} should not exceed Amount","1161621759":"Choose your nickname","1162965175":"Buyer","1163072833":"<0>ID verified","1164771858":"I’ve received payment from 3rd party.","1191941618":"Enter a value that's within -{{limit}}% to +{{limit}}%","1192337383":"Seen {{ duration }} hour ago","1202500203":"Pay now","1228352589":"Not rated yet","1229976478":"You will be able to see {{ advertiser_name }}'s ads. They'll be able to place orders on your ads, too.","1236083813":"Your payment details","1258285343":"Oops, something went wrong","1265751551":"Deriv P2P Balance","1286797620":"Active","1287051975":"Nickname is too long","1300767074":"{{name}} is no longer on Deriv P2P","1303016265":"Yes","1313218101":"Rate this transaction","1314266187":"Joined today","1320670806":"Leave page","1326475003":"Activate","1328352136":"Sell {{ account_currency }}","1330528524":"Seen {{ duration }} month ago","1337027601":"You sold {{offered_amount}} {{offered_currency}}","1347322213":"How would you rate this transaction?","1347724133":"I have paid {{amount}} {{currency}}.","1366244749":"Limits","1370999551":"Floating rate","1371193412":"Cancel","1381949324":"<0>Address verified","1398938904":"We can't deliver the email to this address (usually because of firewalls or filtering).","1422356389":"No results for \"{{text}}\".","1430413419":"Maximum is {{value}} {{currency}}","1438103743":"Floating rates are enabled for {{local_currency}}. Ads with fixed rates will be deactivated. Switch to floating rates by {{end_date}}.","1448855725":"Add payment methods","1452260922":"Too many failed attempts","1467483693":"Past orders","1474532322":"Sort by","1480915523":"Skip","1497156292":"No ads for this currency 😞","1505293001":"Trade partners","1568512719":"Your daily limits have been increased to {{daily_buy_limit}} {{currency}} (buy) and {{daily_sell_limit}} {{currency}} (sell).","1583335572":"If the ad doesn't receive an order for {{adverts_archive_period}} days, it will be deactivated.","1587250288":"Ad ID {{advert_id}} ","1607051458":"Search by nickname","1612595358":"Cannot upload a file over 2MB","1615530713":"Something's not right","1620858613":"You're editing an ad to sell <0>{{ target_amount }} {{ target_currency }} for <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})","1623916605":"I wasn’t able to make full payment.","1654365787":"Unknown","1660278694":"The advertiser changed the rate before you confirmed the order.","1671725772":"If you choose to cancel, the edited details will be lost.","1675716253":"Min limit","1678804253":"Buy {{ currency }}","1685888862":"An internal error occurred","1691540875":"Edit payment method","1703154819":"You're editing an ad to sell <0>{{ target_amount }} {{ target_currency }}...","1721422292":"Show my real name","1734661732":"Your DP2P balance is {{ dp2p_balance }}","1747523625":"Go back","1752096323":"{{field_name}} should not be below Min limit","1767817594":"Buy completion <0>30d","1784151356":"at","1791767028":"Set a fixed rate for your ad.","1794470010":"I’ve made full payment, but the seller hasn’t released the funds.","1794474847":"I've received payment","1798116519":"Available amount","1809099720":"Expand all","1810217569":"Please refresh this page to continue.","1842172737":"You've received {{offered_amount}} {{offered_currency}}","1848044659":"You have no ads.","1859308030":"Give feedback","1874956952":"Hit the button below to add payment methods.","1902229457":"Unable to block advertiser","1908023954":"Sorry, an error occurred while processing your request.","1923443894":"Inactive","1928240840":"Sell {{ currency }}","1929119945":"There are no ads yet","1976156928":"You'll send","1992961867":"Rate (1 {{currency}})","1994023526":"The email address you entered had a mistake or typo (happens to the best of us).","2020104747":"Filter","2029375371":"Payment instructions","2032274854":"Recommended by {{recommended_count}} traders","2039361923":"You're creating an ad to sell...","2040110829":"Increase my limits","2060873863":"Your order {{order_id}} is complete","2063890788":"Cancelled","2091671594":"Status","2096014107":"Apply","2104905634":"No one has recommended this trader yet","2108340400":"Hello! This is where you can chat with the counterparty to confirm the order details.nNote: In case of a dispute, we'll use this chat as a reference.","2121837513":"Minimum is {{value}} {{currency}}","2142425493":"Ad ID","2142752968":"Please ensure you've received {{amount}} {{local_currency}} in your account and hit Confirm to complete the transaction.","2145292295":"Rate","-1837059346":"Buy / Sell","-1845037007":"Advertiser's page","-494667560":"Orders","-679691613":"My ads","-526636259":"Error 404","-1540251249":"Buy {{ account_currency }}","-1267880283":"{{field_name}} is required","-2019083683":"{{field_name}} can only include letters, numbers, spaces, and any of these symbols: -+.,'#@():;","-222920564":"{{field_name}} has exceeded maximum length","-2093768906":"{{name}} has released your funds.
Would you like to give your feedback?","-857786650":"Check your verification status.","-612892886":"We’ll need you to upload your documents to verify your identity.","-2090325029":"Identity verification is complete.","-1101273282":"Nickname is required","-919203928":"Nickname is too short","-1907100457":"Cannot start, end with, or repeat special characters.","-270502067":"Cannot repeat a character more than 4 times.","-499872405":"You have open orders for this ad. Complete all open orders before deleting this ad.","-2125702445":"Instructions","-1274358564":"Max limit","-1995606668":"Amount","-1965472924":"Fixed rate","-1081775102":"{{field_name}} should not be below Max limit","-885044836":"{{field_name}} should not exceed Max limit","-1921077416":"All ({{list_value}})","-608125128":"Blocked ({{list_value}})","-1764050750":"Payment details","-2021135479":"This field is required.","-2005205076":"{{field_name}} has exceeded maximum length of 200 characters.","-480724783":"You already have an ad with this rate","-1117584385":"Seen more than 6 months ago","-1766199849":"Seen {{ duration }} months ago","-591593016":"Seen {{ duration }} day ago","-1586918919":"Seen {{ duration }} hours ago","-664781013":"Seen {{ duration }} minute ago","-1717650468":"Online","-1948369500":"File uploaded is not supported","-1207312691":"Completed","-688728873":"Expired","-1951641340":"Under dispute","-1738697484":"Confirm payment","-1611857550":"Waiting for the seller to confirm","-1452684930":"Buyer's real name","-1597110099":"Receive","-892663026":"Your contact details","-1875343569":"Seller's payment details","-92830427":"Seller's instructions","-1940034707":"Buyer's instructions","-471384801":"Sorry, we're unable to increase your limits right now. Please try again in a few minutes.","-329713179":"Ok","-231863107":"No","-150224710":"Yes, continue","-205277874":"Your ad is not listed on Buy/Sell because its minimum order is higher than your Deriv P2P available balance ({{balance}} {{currency}}).","-971817673":"Your ad isn't visible to others","-1735126907":"This could be because your account balance is insufficient, your ad amount exceeds your daily limit, or both. You can still see your ad on <0>My ads.","-674715853":"Your ad exceeds the daily limit","-1530773708":"Block {{advertiser_name}}?","-1689905285":"Unblock","-2035037071":"Your Deriv P2P balance isn't enough. Please increase your balance before trying again.","-412680608":"Add payment method","-293182503":"Cancel adding this payment method?","-1850127397":"If you choose to cancel, the details you’ve entered will be lost.","-1601971804":"Cancel your edits?","-1571737200":"Don't cancel","-1072444041":"Update ad","-1088454544":"Get new link","-2124584325":"We've verified your order","-848068683":"Hit the link in the email we sent you to authorise this transaction.","-1238182882":"The link will expire in 10 minutes.","-142727028":"The email is in your spam folder (sometimes things get lost there).","-1306639327":"Payment methods","-227512949":"Check your spelling or use a different term.","-1554938377":"Search payment method","-1285759343":"Search","-75934135":"Matching ads","-1856204727":"Reset","-1728351486":"Invalid verification link","-433946201":"Leave page?","-818345434":"Are you sure you want to leave this page? Changes made will not be saved.","-392043307":"Do you want to delete this ad?","-854930519":"You will NOT be able to restore it.","-1600783504":"Set a floating rate for your ad.","-2008992756":"Do you want to cancel this order?","-1618084450":"If you cancel this order, you'll be blocked from using Deriv P2P for {{block_duration}} hours.","-2026176944":"Please do not cancel if you have already made payment.","-1989544601":"Cancel this order","-492996224":"Do not cancel","-1447732068":"Payment confirmation","-1951344681":"Please make sure that you've paid {{amount}} {{currency}} to {{other_user_name}}, and upload the receipt as proof of your payment","-919988505":"We accept JPG, PDF, or PNG (up to 2MB).","-670364940":"Upload receipt here","-937707753":"Go Back","-984140537":"Add","-1220275347":"You may choose up to 3 payment methods for this ad.","-1340125291":"Done","-510341549":"I’ve received less than the agreed amount.","-650030360":"I’ve paid more than the agreed amount.","-1192446042":"If your complaint isn't listed here, please contact our Customer Support team.","-573132778":"Complaint","-792338456":"What's your complaint?","-418870584":"Cancel order","-1392383387":"I've paid","-727273667":"Complain","-2016990049":"Sell {{offered_currency}} order","-811190405":"Time","-961632398":"Collapse all","-415476028":"Not rated","-26434257":"You have until {{remaining_review_time}} GMT to rate this transaction.","-768709492":"Your transaction experience","-652933704":"Recommended","-84139378":"Not Recommended","-2139303636":"You may have followed a broken link, or the page has moved to a new address.","-1448368765":"Error code: {{error_code}} page not found","-1660552437":"Return to P2P","-849068301":"Loading...","-2061807537":"Something’s not right","-1354983065":"Refresh","-137444201":"Buy","-904197848":"Limits {{min_order_amount_limit_display}}-{{max_order_amount_limit_display}} {{currency}}","-464361439":"{{- avg_buy_time_in_minutes}} min","-2109576323":"Sell completion <0>30d","-165392069":"Avg. release time <0>30d","-1154208372":"Trade volume <0>30d","-1887970998":"Unblocking wasn't possible as {{name}} is not using Deriv P2P anymore.","-2017825013":"Got it","-1070228546":"Joined {{days_since_joined}}d","-2015102262":"({{number_of_ratings}} rating)","-1412298133":"({{number_of_ratings}} ratings)","-260332243":"{{user_blocked_count}} person has blocked you","-117094654":"{{user_blocked_count}} people have blocked you","-1148912768":"If the market rate changes from the rate shown here, we won't be able to process your order.","-55126326":"Seller","-835196958":"Receive payment to","-1218007718":"You may choose up to 3.","-1933432699":"Enter {{transaction_type}} amount","-2021730616":"{{ad_type}}","-490637584":"Limit: {{min}}–{{max}} {{currency}}","-1974067943":"Your bank details","-1657433201":"There are no matching ads.","-1862812590":"Limits {{ min_order }}–{{ max_order }} {{ currency }}","-375836822":"Buy {{account_currency}}","-1035421133":"Sell {{account_currency}}","-1503997652":"No ads for this currency.","-1048001140":"No results for \"{{value}}\".","-1179827369":"Create new ad","-73663931":"Create ad","-141315849":"No ads for this currency at the moment 😞","-1889014820":"<0>Don’t see your payment method? <1>Add new.","-1406830100":"Payment method","-1561775203":"Buy {{currency}}","-1527285935":"Sell {{currency}}","-592818187":"Your Deriv P2P balance is {{ dp2p_balance }}","-1654157453":"Fixed rate (1 {{currency}})","-379708059":"Min order","-1459289144":"This information will be visible to everyone.","-207756259":"You may tap and choose up to 3.","-1282343703":"You're creating an ad to buy <0>{{ target_amount }} {{ target_currency }} for <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})","-2139632895":"You're creating an ad to sell <0>{{ target_amount }} {{ target_currency }} for <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})","-40669120":"You're creating an ad to sell <0>{{ target_amount }} {{ target_currency }}...","-514789442":"You're creating an ad to buy...","-230677679":"{{text}}","-1914431773":"You're editing an ad to buy <0>{{ target_amount }} {{ target_currency }} for <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})","-107996509":"You're editing an ad to buy <0>{{ target_amount }} {{ target_currency }}...","-863580260":"You're editing an ad to buy...","-1396464057":"You're editing an ad to sell...","-372210670":"Rate (1 {{account_currency}})","-1318334333":"Deactivate","-1667041441":"Rate (1 {{ offered_currency }})","-1886565882":"Your ads with floating rates have been deactivated. Set fixed rates to reactivate them.","-792015701":"Deriv P2P cashier is unavailable in your country.","-1241719539":"When you block someone, you won't see their ads, and they can't see yours. Your ads will be hidden from their search results, too.","-1007339977":"There are no matching name.","-1298666786":"My counterparties","-179005984":"Save","-2059312414":"Ad details","-1769584466":"Stats","-808161760":"Deriv P2P balance = deposits that can’t be reversed","-684271315":"OK","-2090878601":"Daily limit","-474123616":"Want to increase your daily limits to <0>{{max_daily_buy}} {{currency}} (buy) and <1>{{max_daily_sell}} {{currency}} (sell)?","-130547447":"Trade volume <0>30d | <1>lifetime","-1792280476":"Choose your payment method","-383030149":"You haven’t added any payment methods yet","-1156559889":"Bank Transfers","-1269362917":"Add new","-1983512566":"This conversation is closed.","-283017497":"Retry","-979459594":"Buy/Sell","-2052184983":"Order ID","-2096350108":"Counterparty","-750202930":"Active orders","-1626659964":"I've received {{amount}} {{currency}}.","-1638172550":"To enable this feature you must complete the following:","-1086586743":"Please submit your <0>proof of address. You can use Deriv P2P after we’ve verified your documents.","-559300364":"Your Deriv P2P cashier is blocked","-740038242":"Your rate is","-146021156":"Delete {{payment_method_name}}?","-1846700504":"Are you sure you want to remove this payment method?","-1422779483":"That payment method cannot be deleted","-532709160":"Your nickname","-237014436":"Recommended by {{recommended_count}} trader","-2054589794":"You've been temporarily barred from using our services due to multiple cancellation attempts. Try again after {{date_time}} GMT.","-1079963355":"trades","-930400128":"To use Deriv P2P, you need to choose a display name (a nickname) and verify your identity.","-992568889":"No one to show here"} +{"6794664":"Ads that match your Deriv P2P balance and limit.","19789721":"Nobody has blocked you. Yay!","24711354":"Total orders <0>30d | <1>lifetime","47573834":"Fixed rate (1 {{account_currency}})","50672601":"Bought","51881712":"You already have an ad with the same exchange rate for this currency pair and order type.

Please set a different rate for your ad.","55916349":"All","68867477":"Order ID {{ id }}","81450871":"We couldn’t find that page","121738739":"Send","122280248":"Avg release time <0>30d","134205943":"Your ads with fixed rates have been deactivated. Set floating rates to reactivate them.","140800401":"Float","145959105":"Choose a nickname","150156106":"Save changes","159757877":"You won't see {{advertiser_name}}'s ads anymore and they won't be able to place orders on your ads.","170072126":"Seen {{ duration }} days ago","173939998":"Avg. pay time <0>30d","197477687":"Edit {{ad_type}} ad","203271702":"Try again","231473252":"Preferred currency","233677840":"of the market rate","246815378":"Once set, your nickname cannot be changed.","276261353":"Avg pay time <0>30d","277542386":"Please use <0>live chat to contact our Customer Support team for help.","316725580":"You can no longer rate this transaction.","323002325":"Post ad","324970564":"Seller's contact details","338910048":"You will appear to other users as","358133589":"Unblock {{advertiser_name}}?","364681129":"Contact details","367579676":"Blocked","392469164":"You have blocked {{advertiser_name}}.","416167062":"You'll receive","424668491":"expired","439264204":"Please set a different minimum and/or maximum order limit.

The range of your ad should not overlap with any of your active ads.","452752527":"Rate (1 {{ currency }})","459886707":"E-wallets","460477293":"Enter message","464044457":"Buyer's nickname","473688701":"Enter a valid amount","476023405":"Didn't receive the email?","488150742":"Resend email","498500965":"Seller's nickname","500514593":"Hide my ads","501523417":"You have no orders.","517202770":"Set fixed rate","523301614":"Release {{amount}} {{currency}}","525380157":"Buy {{offered_currency}} order","531912261":"Bank name, account number, beneficiary name","554135844":"Edit","555447610":"You won't be able to change your buy and sell limits again after this. Do you want to continue?","560402954":"User rating","565060416":"Exchange rate","580715136":"Please register with us!","587882987":"Advertisers","611376642":"Clear","612069973":"Would you recommend this buyer?","628581263":"The {{local_currency}} market rate has changed.","639382772":"Please upload supported file type.","649549724":"I’ve not received any payment.","654193846":"The verification link appears to be invalid. Hit the button below to request for a new one","655733440":"Others","661808069":"Resend email {{remaining_time}}","662578726":"Available","683273691":"Rate (1 {{ account_currency }})","723172934":"Looking to buy or sell USD? You can post your own ad for others to respond.","728383001":"I’ve received more than the agreed amount.","733311523":"P2P transactions are locked. This feature is not available for payment agents.","767789372":"Wait for payment","782834680":"Time left","783454335":"Yes, remove","830703311":"My profile","834075131":"Blocked advertisers","838024160":"Bank details","842911528":"Don’t show this message again.","846659545":"Your ad is not listed on <0>Buy/Sell because the amount exceeds your daily limit of {{limit}} {{currency}}.\n <1 /><1 />You can still see your ad on <0>My ads. If you’d like to increase your daily limit, please contact us via <2>live chat.","847028402":"Check your email","858027714":"Seen {{ duration }} minutes ago","873437248":"Instructions (optional)","876086855":"Complete the financial assessment form","881351325":"Would you recommend this seller?","887667868":"Order","892431976":"If you cancel your order {{cancellation_limit}} times in {{cancellation_period}} hours, you will be blocked from using Deriv P2P for {{block_duration}} hours.
({{number_of_cancels_remaining}} cancellations remaining)","947389294":"We need your documents","949859957":"Submit","954233511":"Sold","957529514":"To place an order, add one of the advertiser’s preferred payment methods:","957807235":"Blocking wasn't possible as {{name}} is not using Deriv P2P anymore.","988380202":"Your instructions","1001160515":"Sell","1002264993":"Seller's real name","1020552673":"You're creating an ad to buy <0>{{ target_amount }} {{ target_currency }}...","1030390916":"You already have an ad with this range","1035893169":"Delete","1052094244":"Max order","1056821534":"Are you sure?","1057127276":"{{- avg_release_time_in_minutes}} min","1065551550":"Set floating rate","1080990424":"Confirm","1089110190":"You accidentally gave us another email address (usually a work or a personal one instead of the one you meant).","1091533736":"Don't risk your funds with cash transactions. Use bank transfers or e-wallets instead.","1106073960":"You've created an ad","1106485202":"Available Deriv P2P balance","1109217274":"Success!","1119887091":"Verification","1121630246":"Block","1137964885":"Can only contain letters, numbers, and special characters .- _ @.","1151608942":"Total amount","1157877436":"{{field_name}} should not exceed Amount","1161621759":"Choose your nickname","1162965175":"Buyer","1163072833":"<0>ID verified","1164771858":"I’ve received payment from 3rd party.","1191941618":"Enter a value that's within -{{limit}}% to +{{limit}}%","1192337383":"Seen {{ duration }} hour ago","1202500203":"Pay now","1228352589":"Not rated yet","1229976478":"You will be able to see {{ advertiser_name }}'s ads. They'll be able to place orders on your ads, too.","1236083813":"Your payment details","1258285343":"Oops, something went wrong","1265751551":"Deriv P2P Balance","1286797620":"Active","1287051975":"Nickname is too long","1300767074":"{{name}} is no longer on Deriv P2P","1303016265":"Yes","1313218101":"Rate this transaction","1314266187":"Joined today","1320670806":"Leave page","1326475003":"Activate","1328352136":"Sell {{ account_currency }}","1330528524":"Seen {{ duration }} month ago","1337027601":"You sold {{offered_amount}} {{offered_currency}}","1347322213":"How would you rate this transaction?","1347724133":"I have paid {{amount}} {{currency}}.","1366244749":"Limits","1370999551":"Floating rate","1371193412":"Cancel","1381949324":"<0>Address verified","1398938904":"We can't deliver the email to this address (usually because of firewalls or filtering).","1422356389":"No results for \"{{text}}\".","1430413419":"Maximum is {{value}} {{currency}}","1438103743":"Floating rates are enabled for {{local_currency}}. Ads with fixed rates will be deactivated. Switch to floating rates by {{end_date}}.","1448855725":"Add payment methods","1452260922":"Too many failed attempts","1467483693":"Past orders","1474532322":"Sort by","1480915523":"Skip","1497156292":"No ads for this currency 😞","1505293001":"Trade partners","1568512719":"Your daily limits have been increased to {{daily_buy_limit}} {{currency}} (buy) and {{daily_sell_limit}} {{currency}} (sell).","1583335572":"If the ad doesn't receive an order for {{adverts_archive_period}} days, it will be deactivated.","1587250288":"Ad ID {{advert_id}} ","1607051458":"Search by nickname","1615530713":"Something's not right","1620858613":"You're editing an ad to sell <0>{{ target_amount }} {{ target_currency }} for <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})","1623916605":"I wasn’t able to make full payment.","1654365787":"Unknown","1660278694":"The advertiser changed the rate before you confirmed the order.","1671725772":"If you choose to cancel, the edited details will be lost.","1675716253":"Min limit","1678804253":"Buy {{ currency }}","1685888862":"An internal error occurred","1691540875":"Edit payment method","1699829275":"Cannot upload a file over 5MB","1703154819":"You're editing an ad to sell <0>{{ target_amount }} {{ target_currency }}...","1721422292":"Show my real name","1734661732":"Your DP2P balance is {{ dp2p_balance }}","1747523625":"Go back","1752096323":"{{field_name}} should not be below Min limit","1767817594":"Buy completion <0>30d","1784151356":"at","1791767028":"Set a fixed rate for your ad.","1794470010":"I’ve made full payment, but the seller hasn’t released the funds.","1794474847":"I've received payment","1798116519":"Available amount","1809099720":"Expand all","1810217569":"Please refresh this page to continue.","1842172737":"You've received {{offered_amount}} {{offered_currency}}","1848044659":"You have no ads.","1859308030":"Give feedback","1874956952":"Hit the button below to add payment methods.","1902229457":"Unable to block advertiser","1908023954":"Sorry, an error occurred while processing your request.","1923443894":"Inactive","1928240840":"Sell {{ currency }}","1929119945":"There are no ads yet","1976156928":"You'll send","1992961867":"Rate (1 {{currency}})","1994023526":"The email address you entered had a mistake or typo (happens to the best of us).","2020104747":"Filter","2029375371":"Payment instructions","2032274854":"Recommended by {{recommended_count}} traders","2039361923":"You're creating an ad to sell...","2040110829":"Increase my limits","2060873863":"Your order {{order_id}} is complete","2063890788":"Cancelled","2064304887":"We accept JPG, PDF, or PNG (up to 5MB).","2091671594":"Status","2096014107":"Apply","2104905634":"No one has recommended this trader yet","2108340400":"Hello! This is where you can chat with the counterparty to confirm the order details.nNote: In case of a dispute, we'll use this chat as a reference.","2121837513":"Minimum is {{value}} {{currency}}","2142425493":"Ad ID","2142752968":"Please ensure you've received {{amount}} {{local_currency}} in your account and hit Confirm to complete the transaction.","2145292295":"Rate","-1837059346":"Buy / Sell","-1845037007":"Advertiser's page","-494667560":"Orders","-679691613":"My ads","-526636259":"Error 404","-1540251249":"Buy {{ account_currency }}","-1267880283":"{{field_name}} is required","-2019083683":"{{field_name}} can only include letters, numbers, spaces, and any of these symbols: -+.,'#@():;","-222920564":"{{field_name}} has exceeded maximum length","-2093768906":"{{name}} has released your funds.
Would you like to give your feedback?","-857786650":"Check your verification status.","-612892886":"We’ll need you to upload your documents to verify your identity.","-2090325029":"Identity verification is complete.","-1101273282":"Nickname is required","-919203928":"Nickname is too short","-1907100457":"Cannot start, end with, or repeat special characters.","-270502067":"Cannot repeat a character more than 4 times.","-499872405":"You have open orders for this ad. Complete all open orders before deleting this ad.","-2125702445":"Instructions","-1274358564":"Max limit","-1995606668":"Amount","-1965472924":"Fixed rate","-1081775102":"{{field_name}} should not be below Max limit","-885044836":"{{field_name}} should not exceed Max limit","-1921077416":"All ({{list_value}})","-608125128":"Blocked ({{list_value}})","-1764050750":"Payment details","-2021135479":"This field is required.","-2005205076":"{{field_name}} has exceeded maximum length of 200 characters.","-480724783":"You already have an ad with this rate","-1117584385":"Seen more than 6 months ago","-1766199849":"Seen {{ duration }} months ago","-591593016":"Seen {{ duration }} day ago","-1586918919":"Seen {{ duration }} hours ago","-664781013":"Seen {{ duration }} minute ago","-1717650468":"Online","-1948369500":"File uploaded is not supported","-1207312691":"Completed","-688728873":"Expired","-1951641340":"Under dispute","-1738697484":"Confirm payment","-1611857550":"Waiting for the seller to confirm","-1452684930":"Buyer's real name","-1597110099":"Receive","-892663026":"Your contact details","-1875343569":"Seller's payment details","-92830427":"Seller's instructions","-1940034707":"Buyer's instructions","-471384801":"Sorry, we're unable to increase your limits right now. Please try again in a few minutes.","-329713179":"Ok","-231863107":"No","-150224710":"Yes, continue","-205277874":"Your ad is not listed on Buy/Sell because its minimum order is higher than your Deriv P2P available balance ({{balance}} {{currency}}).","-971817673":"Your ad isn't visible to others","-1735126907":"This could be because your account balance is insufficient, your ad amount exceeds your daily limit, or both. You can still see your ad on <0>My ads.","-674715853":"Your ad exceeds the daily limit","-1530773708":"Block {{advertiser_name}}?","-1689905285":"Unblock","-2035037071":"Your Deriv P2P balance isn't enough. Please increase your balance before trying again.","-412680608":"Add payment method","-293182503":"Cancel adding this payment method?","-1850127397":"If you choose to cancel, the details you’ve entered will be lost.","-1601971804":"Cancel your edits?","-1571737200":"Don't cancel","-1072444041":"Update ad","-1088454544":"Get new link","-2124584325":"We've verified your order","-848068683":"Hit the link in the email we sent you to authorise this transaction.","-1238182882":"The link will expire in 10 minutes.","-142727028":"The email is in your spam folder (sometimes things get lost there).","-1306639327":"Payment methods","-227512949":"Check your spelling or use a different term.","-1554938377":"Search payment method","-1285759343":"Search","-75934135":"Matching ads","-1856204727":"Reset","-1728351486":"Invalid verification link","-433946201":"Leave page?","-818345434":"Are you sure you want to leave this page? Changes made will not be saved.","-392043307":"Do you want to delete this ad?","-854930519":"You will NOT be able to restore it.","-1600783504":"Set a floating rate for your ad.","-2008992756":"Do you want to cancel this order?","-1618084450":"If you cancel this order, you'll be blocked from using Deriv P2P for {{block_duration}} hours.","-2026176944":"Please do not cancel if you have already made payment.","-1989544601":"Cancel this order","-492996224":"Do not cancel","-1447732068":"Payment confirmation","-1951344681":"Please make sure that you've paid {{amount}} {{currency}} to {{other_user_name}}, and upload the receipt as proof of your payment","-670364940":"Upload receipt here","-937707753":"Go Back","-984140537":"Add","-1220275347":"You may choose up to 3 payment methods for this ad.","-1340125291":"Done","-510341549":"I’ve received less than the agreed amount.","-650030360":"I’ve paid more than the agreed amount.","-1192446042":"If your complaint isn't listed here, please contact our Customer Support team.","-573132778":"Complaint","-792338456":"What's your complaint?","-418870584":"Cancel order","-1392383387":"I've paid","-727273667":"Complain","-2016990049":"Sell {{offered_currency}} order","-811190405":"Time","-961632398":"Collapse all","-415476028":"Not rated","-26434257":"You have until {{remaining_review_time}} GMT to rate this transaction.","-768709492":"Your transaction experience","-652933704":"Recommended","-84139378":"Not Recommended","-2139303636":"You may have followed a broken link, or the page has moved to a new address.","-1448368765":"Error code: {{error_code}} page not found","-1660552437":"Return to P2P","-849068301":"Loading...","-2061807537":"Something’s not right","-1354983065":"Refresh","-137444201":"Buy","-904197848":"Limits {{min_order_amount_limit_display}}-{{max_order_amount_limit_display}} {{currency}}","-464361439":"{{- avg_buy_time_in_minutes}} min","-2109576323":"Sell completion <0>30d","-165392069":"Avg. release time <0>30d","-1154208372":"Trade volume <0>30d","-1887970998":"Unblocking wasn't possible as {{name}} is not using Deriv P2P anymore.","-2017825013":"Got it","-1070228546":"Joined {{days_since_joined}}d","-2015102262":"({{number_of_ratings}} rating)","-1412298133":"({{number_of_ratings}} ratings)","-260332243":"{{user_blocked_count}} person has blocked you","-117094654":"{{user_blocked_count}} people have blocked you","-1148912768":"If the market rate changes from the rate shown here, we won't be able to process your order.","-55126326":"Seller","-835196958":"Receive payment to","-1218007718":"You may choose up to 3.","-1933432699":"Enter {{transaction_type}} amount","-2021730616":"{{ad_type}}","-490637584":"Limit: {{min}}–{{max}} {{currency}}","-1974067943":"Your bank details","-1657433201":"There are no matching ads.","-1862812590":"Limits {{ min_order }}–{{ max_order }} {{ currency }}","-375836822":"Buy {{account_currency}}","-1035421133":"Sell {{account_currency}}","-1503997652":"No ads for this currency.","-1048001140":"No results for \"{{value}}\".","-1179827369":"Create new ad","-73663931":"Create ad","-141315849":"No ads for this currency at the moment 😞","-1889014820":"<0>Don’t see your payment method? <1>Add new.","-1406830100":"Payment method","-1561775203":"Buy {{currency}}","-1527285935":"Sell {{currency}}","-592818187":"Your Deriv P2P balance is {{ dp2p_balance }}","-1654157453":"Fixed rate (1 {{currency}})","-379708059":"Min order","-1459289144":"This information will be visible to everyone.","-207756259":"You may tap and choose up to 3.","-1282343703":"You're creating an ad to buy <0>{{ target_amount }} {{ target_currency }} for <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})","-2139632895":"You're creating an ad to sell <0>{{ target_amount }} {{ target_currency }} for <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})","-40669120":"You're creating an ad to sell <0>{{ target_amount }} {{ target_currency }}...","-514789442":"You're creating an ad to buy...","-230677679":"{{text}}","-1914431773":"You're editing an ad to buy <0>{{ target_amount }} {{ target_currency }} for <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})","-107996509":"You're editing an ad to buy <0>{{ target_amount }} {{ target_currency }}...","-863580260":"You're editing an ad to buy...","-1396464057":"You're editing an ad to sell...","-372210670":"Rate (1 {{account_currency}})","-1318334333":"Deactivate","-1667041441":"Rate (1 {{ offered_currency }})","-1886565882":"Your ads with floating rates have been deactivated. Set fixed rates to reactivate them.","-792015701":"Deriv P2P cashier is unavailable in your country.","-1241719539":"When you block someone, you won't see their ads, and they can't see yours. Your ads will be hidden from their search results, too.","-1007339977":"There are no matching name.","-1298666786":"My counterparties","-179005984":"Save","-2059312414":"Ad details","-1769584466":"Stats","-808161760":"Deriv P2P balance = deposits that can’t be reversed","-684271315":"OK","-2090878601":"Daily limit","-474123616":"Want to increase your daily limits to <0>{{max_daily_buy}} {{currency}} (buy) and <1>{{max_daily_sell}} {{currency}} (sell)?","-130547447":"Trade volume <0>30d | <1>lifetime","-1792280476":"Choose your payment method","-383030149":"You haven’t added any payment methods yet","-1156559889":"Bank Transfers","-1269362917":"Add new","-1983512566":"This conversation is closed.","-283017497":"Retry","-979459594":"Buy/Sell","-2052184983":"Order ID","-2096350108":"Counterparty","-750202930":"Active orders","-1626659964":"I've received {{amount}} {{currency}}.","-1638172550":"To enable this feature you must complete the following:","-1086586743":"Please submit your <0>proof of address. You can use Deriv P2P after we’ve verified your documents.","-559300364":"Your Deriv P2P cashier is blocked","-740038242":"Your rate is","-146021156":"Delete {{payment_method_name}}?","-1846700504":"Are you sure you want to remove this payment method?","-1422779483":"That payment method cannot be deleted","-532709160":"Your nickname","-237014436":"Recommended by {{recommended_count}} trader","-2054589794":"You've been temporarily barred from using our services due to multiple cancellation attempts. Try again after {{date_time}} GMT.","-1079963355":"trades","-930400128":"To use Deriv P2P, you need to choose a display name (a nickname) and verify your identity.","-992568889":"No one to show here"} diff --git a/packages/p2p/src/components/__tests__/app-content.spec.js b/packages/p2p/src/components/__tests__/app-content.spec.js index 06136a61fc61..a036fd78a325 100644 --- a/packages/p2p/src/components/__tests__/app-content.spec.js +++ b/packages/p2p/src/components/__tests__/app-content.spec.js @@ -67,7 +67,6 @@ describe('', () => { }); expect(screen.getByText('Tabs')).toBeInTheDocument(); - expect(screen.queryByTestId('my_profile')).not.toBeInTheDocument(); }); it('should render the loading component when is_loading state is true', () => { @@ -104,16 +103,4 @@ describe('', () => { // expect(screen.queryByText('NicknameForm')).not.toBeInTheDocument(); // expect(screen.getByText('Dp2pBlocked')).toBeInTheDocument(); // }); - - it('should render MyProfile component when is_advertiser state is true', () => { - useStores.mockImplementation(() => ({ - ...mocked_store_values, - general_store: { ...mocked_store_values.general_store, is_advertiser: true }, - })); - render(, { - wrapper: ({ children }) => {children}, - }); - - expect(screen.getByTestId('my_profile')).toBeInTheDocument(); - }); }); diff --git a/packages/p2p/src/components/app-content.jsx b/packages/p2p/src/components/app-content.jsx index 34dd1f927518..ec7aceb8e9cf 100644 --- a/packages/p2p/src/components/app-content.jsx +++ b/packages/p2p/src/components/app-content.jsx @@ -83,7 +83,7 @@ const AppContent = ({ order_id }) => {
- {general_store.is_advertiser &&
} +
); }; diff --git a/packages/p2p/src/components/modal-manager/modals/order-details-confirm-modal/__tests__/order-details-confirm-modal.spec.js b/packages/p2p/src/components/modal-manager/modals/order-details-confirm-modal/__tests__/order-details-confirm-modal.spec.js index bc179c6219d4..afa79330217a 100644 --- a/packages/p2p/src/components/modal-manager/modals/order-details-confirm-modal/__tests__/order-details-confirm-modal.spec.js +++ b/packages/p2p/src/components/modal-manager/modals/order-details-confirm-modal/__tests__/order-details-confirm-modal.spec.js @@ -73,7 +73,7 @@ describe('', () => { ).toBeInTheDocument(); expect(screen.getByText('Confirm')).toBeInTheDocument(); expect(screen.getByText('Go Back')).toBeInTheDocument(); - expect(screen.getByText('We accept JPG, PDF, or PNG (up to 2MB).')).toBeInTheDocument(); + expect(screen.getByText('We accept JPG, PDF, or PNG (up to 5MB).')).toBeInTheDocument(); }); it('should handle GoBack Click', () => { const { hideModal } = useModalManagerContext(); diff --git a/packages/p2p/src/components/modal-manager/modals/order-details-confirm-modal/order-details-confirm-modal.jsx b/packages/p2p/src/components/modal-manager/modals/order-details-confirm-modal/order-details-confirm-modal.jsx index 8802381ec655..ed98477e8083 100644 --- a/packages/p2p/src/components/modal-manager/modals/order-details-confirm-modal/order-details-confirm-modal.jsx +++ b/packages/p2p/src/components/modal-manager/modals/order-details-confirm-modal/order-details-confirm-modal.jsx @@ -71,7 +71,7 @@ const OrderDetailsConfirmModal = () => { as='div' className='order-details-confirm-modal__file_format' > - + { // Redirect back to /p2p, this was implemented for the mobile team. Do not remove. if (/\/verification$/.test(location.pathname)) { localStorage.setItem('is_verifying_p2p', true); - history.push(routes.p2p_my_ads); + history.push(routes.p2p_my_profile); } ServerTime.init(general_store.server_time); diff --git a/packages/p2p/src/pages/buy-sell/buy-sell-form.scss b/packages/p2p/src/pages/buy-sell/buy-sell-form.scss index 507fdcecdb66..9062e157f7c8 100644 --- a/packages/p2p/src/pages/buy-sell/buy-sell-form.scss +++ b/packages/p2p/src/pages/buy-sell/buy-sell-form.scss @@ -16,7 +16,6 @@ &__field { margin-bottom: 0 !important; flex: 1; - height: 4rem; .dc-input__container { width: 91%; diff --git a/packages/p2p/src/pages/my-profile/__tests__/my-profile.spec.js b/packages/p2p/src/pages/my-profile/__tests__/my-profile.spec.js new file mode 100644 index 000000000000..c621a618bcf0 --- /dev/null +++ b/packages/p2p/src/pages/my-profile/__tests__/my-profile.spec.js @@ -0,0 +1,44 @@ +import React from 'react'; +import { screen, render } from '@testing-library/react'; +import MyProfile from '../my-profile'; + +const mock_store = { + general_store: { + advertiser_info: { + buy_completion_rate: 100, + buy_orders_amount: 1, + buy_orders_count: 1, + buy_time_avg: 80, + partner_count: 1, + }, + is_advertiser: false, + should_show_dp2p_blocked: false, + setActiveIndex: jest.fn(), + }, + my_profile_store: { + error_message: '', + getSettings: jest.fn(), + setActiveTab: jest.fn(), + setShouldShowAddPaymentMethodForm: jest.fn(), + }, +}; + +jest.mock('Stores', () => ({ + ...jest.requireActual('Stores'), + useStores: jest.fn(() => mock_store), +})); + +jest.mock('Components/verification', () => jest.fn(() =>
Verification
)); +jest.mock('../my-profile-content.jsx', () => jest.fn(() =>
MyProfileContent
)); +jest.mock('../my-profile-stats/my-profile-details-container', () => + jest.fn(() =>
MyProfileDetailsContainer
) +); +jest.mock('../my-profile-header', () => jest.fn(() =>
MyProfileHeader
)); + +describe('', () => { + it('should show the verification page if is_advertiser is false', () => { + render(); + + expect(screen.getByText('Verification')).toBeInTheDocument(); + }); +}); diff --git a/packages/p2p/src/pages/my-profile/my-profile.jsx b/packages/p2p/src/pages/my-profile/my-profile.jsx index 58adbcac798a..550660945cdc 100644 --- a/packages/p2p/src/pages/my-profile/my-profile.jsx +++ b/packages/p2p/src/pages/my-profile/my-profile.jsx @@ -1,13 +1,14 @@ import React from 'react'; +import { observer } from 'mobx-react-lite'; import { AutoSizer, DesktopWrapper, Loading, Text } from '@deriv/components'; import { isEmptyObject } from '@deriv/shared'; -import { observer } from 'mobx-react-lite'; -import { useStores } from 'Stores'; +import DailyLimitModal from 'Components/daily-limit-modal'; +import Verification from 'Components/verification'; import { my_profile_tabs } from 'Constants/my-profile-tabs'; +import { useStores } from 'Stores'; +import MyProfileDetailsContainer from './my-profile-stats/my-profile-details-container'; import MyProfileContent from './my-profile-content.jsx'; import MyProfileHeader from './my-profile-header'; -import MyProfileDetailsContainer from './my-profile-stats/my-profile-details-container/my-profile-details-container.jsx'; -import DailyLimitModal from 'Components/daily-limit-modal'; const MyProfile = () => { const { general_store, my_profile_store } = useStores(); @@ -24,7 +25,11 @@ const MyProfile = () => { // eslint-disable-next-line react-hooks/exhaustive-deps }, []); - if (isEmptyObject(general_store.advertiser_info) && !general_store.should_show_dp2p_blocked) { + if ( + isEmptyObject(general_store.advertiser_info) && + !general_store.poi_status && + !general_store.should_show_dp2p_blocked + ) { return ; } @@ -38,6 +43,10 @@ const MyProfile = () => { ); } + if (!general_store.is_advertiser) { + return ; + } + return ( {({ height, width }) => ( diff --git a/packages/p2p/src/pages/my-profile/payment-methods/add-payment-method/add-payment-method-form.scss b/packages/p2p/src/pages/my-profile/payment-methods/add-payment-method/add-payment-method-form.scss index c5afd3f9b961..98ca1cb64879 100644 --- a/packages/p2p/src/pages/my-profile/payment-methods/add-payment-method/add-payment-method-form.scss +++ b/packages/p2p/src/pages/my-profile/payment-methods/add-payment-method/add-payment-method-form.scss @@ -60,6 +60,10 @@ padding-right: 0; } } + + & .dc-field--error { + top: 9.8rem; + } } } } diff --git a/packages/p2p/src/stores/my-ads-store.js b/packages/p2p/src/stores/my-ads-store.js index 189c7db41f3d..8817cbdc3e8a 100644 --- a/packages/p2p/src/stores/my-ads-store.js +++ b/packages/p2p/src/stores/my-ads-store.js @@ -125,7 +125,7 @@ export default class MyAdsStore extends BaseStore { if (response) { if (!response.error) { const { get_account_status } = response; - const { status } = get_account_status.authentication.identity; + const { status } = get_account_status?.authentication?.identity ?? {}; this.root_store.general_store.setPoiStatus(status); } else { this.setErrorMessage(response.error); diff --git a/packages/p2p/src/translations/ar.json b/packages/p2p/src/translations/ar.json index 69c4aaf7af21..d0c806ab2d65 100644 --- a/packages/p2p/src/translations/ar.json +++ b/packages/p2p/src/translations/ar.json @@ -153,7 +153,6 @@ "1583335572": "إذا لم يتلق الإعلان طلبًا لمدة {{adverts_archive_period}} يومًا، فسيتم إلغاء تنشيطه.", "1587250288": "معرف الإعلان {{advert_id}} ", "1607051458": "البحث عن طريق الاسم المستعار", - "1612595358": "لا يمكن تحميل ملف يزيد عن 2 ميغابايت", "1615530713": "هناك شيء غير صحيح", "1620858613": "أنت تقوم بتحرير إعلان لبيع <0>{{ target_amount }} {{ target_currency }} مقابل <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "لم أتمكن من تسديد المبلغ بالكامل.", @@ -164,6 +163,7 @@ "1678804253": "شراء {{ currency }}", "1685888862": "حدث خطأ داخلي", "1691540875": "تحرير طريقة الدفع", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "أنت تقوم بتحرير إعلان لبيع <0>{{ target_amount }} {{ target_currency }}...", "1721422292": "أظهر اسمي الحقيقي", "1734661732": "رصيد DP2P الخاص بك هو {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "قم بزيادة حدودي", "2060873863": "اكتمل طلبك {{order_id}}", "2063890788": "أُلغيت", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "الحالة", "2096014107": "تقدم بطلبك", "2104905634": "لم يوصي أحد بهذا التاجر حتى الآن", @@ -293,7 +294,6 @@ "-492996224": "لا تقم بالإلغاء", "-1447732068": "تأكيد الدفع", "-1951344681": "يرجى التأكد من الدفع {{amount}} {{currency}} إلى {{other_user_name}}الإيصال وتحميله كدليل على دفعتك", - "-919988505": "نحن نقبل JPG أو PDF أو PNG (حتى 2 ميجابايت).", "-670364940": "قم بتحميل الإيصال هنا", "-937707753": "ارجع", "-984140537": "أضف", diff --git a/packages/p2p/src/translations/bn.json b/packages/p2p/src/translations/bn.json index 3d081214efaa..82737020a60f 100644 --- a/packages/p2p/src/translations/bn.json +++ b/packages/p2p/src/translations/bn.json @@ -153,7 +153,6 @@ "1583335572": "যদি বিজ্ঞাপনে {{adverts_archive_period}} দিনের জন্য কোন অর্ডার না পায়, তাহলে সেটি নিষ্ক্রিয় হয়ে যাবে।", "1587250288": "আইডি {{advert_id}} যোগ করুন ", "1607051458": "ডাকনাম অনুসারে অনুসন্ধান করুন", - "1612595358": "2MB এর বেশি ফাইল আপলোড করা যাচ্ছে না", "1615530713": "কিছু একটা ঠিক না", "1620858613": "আপনি বিক্রি করার <0>{{ target_amount }} {{ target_currency }}জন্য একটি বিজ্ঞাপন সম্পাদনা করছেন <0>{{ local_amount }} {{ local_currency }}<1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "আমি পূর্ণ অর্থ প্রদান করতে সক্ষম ছিল না।", @@ -164,6 +163,7 @@ "1678804253": "কিনুন {{ currency }}", "1685888862": "একটি অভ্যন্তরীণ ত্রুটি ঘটেছে", "1691540875": "মূল্যপরিশোধের পদ্ধতি সম্পাদনা করুন", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "আপনি <0>{{ target_amount }} {{ target_currency }} বিক্রি করার জন্য একটি বিজ্ঞাপন সম্পাদনা করছেন...", "1721422292": "আমার আসল নাম দেখাও", "1734661732": "আপনার DP2P ব্যালেন্স {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "আমার সীমা বাড়াও", "2060873863": "আপনার অর্ডার {{order_id}} সম্পূর্ণ", "2063890788": "বাতিল করা হয়েছে", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "স্ট্যাটাস", "2096014107": "প্রয়োগ করুন", "2104905634": "কেউই এখনো এই ট্রেডারকে সুপারিশ করেনি", @@ -293,7 +294,6 @@ "-492996224": "বাতিল করা হবে না", "-1447732068": "পেমেন্ট নিশ্চিতকরণ", "-1951344681": "অনুগ্রহ করে নিশ্চিত করুন যে আপনি অর্থ প্রদান {{amount}} {{currency}} করেছেন {{other_user_name}}, এবং আপনার পেমেন্টের প্রমাণ হিসাবে রসিদটি আপলোড করুন", - "-919988505": "আমরা JPG, PDF, বা PNG (2MB পর্যন্ত) গ্রহণ করি।", "-670364940": "এখানে রসিদ আপলোড করুন", "-937707753": "ফিরে যাও", "-984140537": "যোগ করুন", diff --git a/packages/p2p/src/translations/de.json b/packages/p2p/src/translations/de.json index dd907c23c440..4e11bbc62822 100644 --- a/packages/p2p/src/translations/de.json +++ b/packages/p2p/src/translations/de.json @@ -153,7 +153,6 @@ "1583335572": "Wenn für die Anzeige innerhalb von {{adverts_archive_period}} Tagen keine Bestellung eingegangen ist, wird sie deaktiviert.", "1587250288": "ID {{advert_id}} hinzufügen ", "1607051458": "Suche nach Nickname", - "1612595358": "Hochladen einer Datei über 2MB nicht möglich", "1615530713": "Etwas stimmt nicht", "1620858613": "Sie bearbeiten eine Anzeige, um <0>{{ target_amount }} {{ target_currency }} für <0>{{ local_amount }} {{ local_currency }} zu verkaufen <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "Ich war nicht in der Lage, die vollständige Zahlung zu leisten.", @@ -164,6 +163,7 @@ "1678804253": "Kaufe {{ currency }}", "1685888862": "Ein interner Fehler ist aufgetreten", "1691540875": "Zahlungsmethode bearbeiten", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "Sie bearbeiten eine Anzeige, um <0>{{ target_amount }} {{ target_currency }} zu verkaufen...", "1721422292": "Zeige meinen richtigen Namen", "1734661732": "Ihr DP2P-Guthaben beträgt {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "Erhöhe meine Limits", "2060873863": "Ihre Bestellung {{order_id}} ist abgeschlossen", "2063890788": "Abgesagt", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "Status", "2096014107": "Bewerben", "2104905634": "Bisher hat noch niemand diesen Trader empfohlen", @@ -293,7 +294,6 @@ "-492996224": "Nicht stornieren", "-1447732068": "Bestätigung der Zahlung", "-1951344681": "Bitte vergewissern Sie sich, dass Sie {{amount}} {{currency}} an {{other_user_name}}bezahlt haben, und laden Sie die Quittung als Beleg für Ihre Zahlung hoch.", - "-919988505": "Wir akzeptieren JPG-, PDF- oder PNG-Dateien (bis zu 2 MB).", "-670364940": "Quittung hier hochladen", "-937707753": "Geh zurück", "-984140537": "Hinzufügen", diff --git a/packages/p2p/src/translations/es.json b/packages/p2p/src/translations/es.json index 8bc1576718c9..8a19e75d9510 100644 --- a/packages/p2p/src/translations/es.json +++ b/packages/p2p/src/translations/es.json @@ -153,7 +153,6 @@ "1583335572": "Si su anuncio no recibe un pedido durante {{adverts_archive_period}} días, se desactivará.", "1587250288": "ID del anuncio {{advert_id}} ", "1607051458": "Buscar por alias", - "1612595358": "No se puede cargar un archivo de más de 2MB", "1615530713": "Algo no está bien", "1620858613": "Está editando un anuncio para vender <0>{{ target_amount }} {{ target_currency }} por <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "No pude realizar el pago completo.", @@ -164,6 +163,7 @@ "1678804253": "Comprar {{ currency }}", "1685888862": "Se ha producido un error interno", "1691540875": "Editar método de pago", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "Está editando un anuncio para vender <0>{{ target_amount }} {{ target_currency }}...", "1721422292": "Mostrar mi nombre real", "1734661732": "Su saldo DP2P es {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "Incrementa mis límites", "2060873863": "Su Pedido {{order_id}} está completo", "2063890788": "Cancelado", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "Estado", "2096014107": "Aplicar", "2104905634": "Nadie ha recomendado este trader todavía", @@ -293,7 +294,6 @@ "-492996224": "No cancelar", "-1447732068": "Confirmación de pago", "-1951344681": "Asegúrese de haber pagado de {{amount}} {{currency}} a {{other_user_name}} y cargue el recibo como comprobante de su pago", - "-919988505": "Aceptamos JPG, PDF o PNG (hasta 2 MB).", "-670364940": "Sube el recibo aquí", "-937707753": "Volver atrás", "-984140537": "Añadir", diff --git a/packages/p2p/src/translations/fr.json b/packages/p2p/src/translations/fr.json index 47fb2565afa8..77a18ec2d0c2 100644 --- a/packages/p2p/src/translations/fr.json +++ b/packages/p2p/src/translations/fr.json @@ -153,7 +153,6 @@ "1583335572": "Si l'annonce ne reçoit pas de demande pendant {{adverts_archive_period}} jours, elle sera désactivée.", "1587250288": "ID d'annonce {{advert_id}} ", "1607051458": "Recherche par pseudo", - "1612595358": "Impossible de télécharger un fichier de plus de 2MB", "1615530713": "Quelque chose ne va pas", "1620858613": "Vous modifiez une annonce pour vendre <0>{{ target_amount }} {{ target_currency }} pour <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "Je n'ai pas pu effectuer le paiement intégral.", @@ -164,6 +163,7 @@ "1678804253": "Acheter {{ currency }}", "1685888862": "Une erreur interne s'est produite", "1691540875": "Modifier le mode de paiement", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "Vous modifiez une annonce pour vendre <0>{{ target_amount }} {{ target_currency }}...", "1721422292": "Montrer mon nom réel", "1734661732": "Votre solde DP2P est de {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "Augmenter mes limites", "2060873863": "Votre commande {{order_id}} est terminée", "2063890788": "Annulé", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "Statut", "2096014107": "Appliquer", "2104905634": "Personne n'a encore recommandé ce trader", @@ -293,7 +294,6 @@ "-492996224": "Ne pas annuler", "-1447732068": "Confirmation du paiement", "-1951344681": "Assurez-vous que vous avez payé {{amount}} {{currency}} à {{other_user_name}} et téléchargez le reçu comme preuve de votre paiement", - "-919988505": "Nous acceptons les formats JPG, PDF ou PNG (jusqu'à 2MB).", "-670364940": "Téléchargez le reçu ici", "-937707753": "Retour", "-984140537": "Ajouter", diff --git a/packages/p2p/src/translations/id.json b/packages/p2p/src/translations/id.json index d687b7f15202..440976195c29 100644 --- a/packages/p2p/src/translations/id.json +++ b/packages/p2p/src/translations/id.json @@ -153,7 +153,6 @@ "1583335572": "Jika iklan ini tidak menerima order dalam tempo {{adverts_archive_period}}, maka iklan akan dinonaktifkan.", "1587250288": "Ad ID {{advert_id}} ", "1607051458": "Cari berdasarkan nama panggilan", - "1612595358": "Tidak dapat mengunggah file lebih dari 2MB", "1615530713": "Ada yang tidak beres", "1620858613": "Anda mengedit iklan untuk menjual <0>{{ target_amount }} {{ target_currency }} untuk <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "Saya tidak dapat melakukan pembayaran penuh.", @@ -164,6 +163,7 @@ "1678804253": "Beli {{ currency }}", "1685888862": "Terjadi kesalahan internal", "1691540875": "Edit metode pembayaran", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "Anda mengedit iklan untuk menjual <0>{{ target_amount }}{{ target_currency }}...", "1721422292": "Tampilkan nama asli", "1734661732": "Saldo DP2P Anda adalah {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "Naikkan batasan saya", "2060873863": "Order {{order_id}} telah diproses", "2063890788": "Dibatalkan", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "Status", "2096014107": "Daftar", "2104905634": "Belum ada yang merekomendasikan trader ini", @@ -293,7 +294,6 @@ "-492996224": "Jangan batalkan", "-1447732068": "Konfirmasi pembayaran", "-1951344681": "Pastikan Anda telah membayar {{amount}} {{currency}} ke {{other_user_name}}, dan unggah tanda terima sebagai bukti pembayaran Anda", - "-919988505": "Kami menerima JPG, PDF, atau PNG (hingga 2MB).", "-670364940": "Unggah tanda terima di sini", "-937707753": "Kembali", "-984140537": "Tambah", diff --git a/packages/p2p/src/translations/it.json b/packages/p2p/src/translations/it.json index 1de844fd0aad..21c207aa23fb 100644 --- a/packages/p2p/src/translations/it.json +++ b/packages/p2p/src/translations/it.json @@ -153,7 +153,6 @@ "1583335572": "Se non ricevi ordini per il tuo annuncio per {{adverts_archive_period}} giorni, questo verrà disattivato.", "1587250288": "ID annuncio {{advert_id}} ", "1607051458": "Cerca per soprannome", - "1612595358": "Impossibile caricare un file superiore a 2MB", "1615530713": "Qualcosa non va", "1620858613": "Stai modificando un annuncio per vendere <0>{{ target_amount }} {{ target_currency }} per <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "Non ho potuto effettuare il pagamento completo.", @@ -164,6 +163,7 @@ "1678804253": "Acquista {{ currency }}", "1685888862": "Si è verificato un errore interno", "1691540875": "Modifica modalità di pagamento", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "Stai modificando un annuncio per vendere <0>{{ target_amount }} {{ target_currency }}...", "1721422292": "Mostra il mio vero nome", "1734661732": "Il tuo saldo DP2P è {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "Aumenta i miei limiti", "2060873863": "L'ordine {{order_id}} è completo", "2063890788": "Annullato", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "Stato", "2096014107": "Richiedi", "2104905634": "Nessuno ha ancora consigliato questo trader", @@ -293,7 +294,6 @@ "-492996224": "Non cancellare", "-1447732068": "Conferma del pagamento", "-1951344681": "Si assicuri di aver pagato {{amount}} {{currency}} a {{other_user_name}}, e carichi la ricevuta come prova del pagamento.", - "-919988505": "Accettiamo JPG, PDF o PNG (fino a 2MB).", "-670364940": "Carichi la ricevuta qui", "-937707753": "Torna indietro", "-984140537": "Aggiungi", diff --git a/packages/p2p/src/translations/ko.json b/packages/p2p/src/translations/ko.json index 69730e81220d..47e4c9916074 100644 --- a/packages/p2p/src/translations/ko.json +++ b/packages/p2p/src/translations/ko.json @@ -153,7 +153,6 @@ "1583335572": "광고가 {{adverts_archive_period}} 일 동안 주문을 받지 못하면 비활성화됩니다.", "1587250288": "광고 ID {{advert_id}} ", "1607051458": "닉네임으로 검색", - "1612595358": "2MB를 초과하는 파일을 업로드할 수 없습니다.", "1615530713": "뭔가 잘못됐어", "1620858613": "판매하기 위해 광고를 편집하고 있습니다. <0>{{ target_amount }} {{ target_currency }} 에 대한 <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "전체 금액을 결제하지 못했습니다.", @@ -164,6 +163,7 @@ "1678804253": "구매하기 {{ currency }}", "1685888862": "내부 오류가 발생했습니다.", "1691540875": "결제 방법 편집", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "판매용 광고를 편집 중입니다. <0>{{ target_amount }} {{ target_currency }}...", "1721422292": "내 실명 보여줘", "1734661732": "DP2P 잔액은 {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "한도 늘리기", "2060873863": "귀하의 주문 {{order_id}} 은 완료되었습니다", "2063890788": "취소됨", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "상태", "2096014107": "적용하기", "2104905634": "아직 아무도 이 트레이더를 추천하지 않았습니다", @@ -293,7 +294,6 @@ "-492996224": "취소하지 마세요", "-1447732068": "결제 확인", "-1951344681": "{{amount}} {{currency}} 에서 {{other_user_name}}으로 결제했는지 확인하고 영수증을 결제 증빙 자료로 업로드하세요.", - "-919988505": "JPG, PDF 또는 PNG(최대 2MB)를 허용합니다.", "-670364940": "여기에서 영수증 업로드", "-937707753": "뒤로 가기", "-984140537": "추가", diff --git a/packages/p2p/src/translations/pl.json b/packages/p2p/src/translations/pl.json index 8699f413f2b2..daec1c115681 100644 --- a/packages/p2p/src/translations/pl.json +++ b/packages/p2p/src/translations/pl.json @@ -153,7 +153,6 @@ "1583335572": "Jeśli ogłoszenie nie otrzyma zlecenia przez {{adverts_archive_period}} dni, zostanie dezaktywowane.", "1587250288": "ID reklamy {{advert_id}} ", "1607051458": "Wyszukaj po pseudonimie", - "1612595358": "Nie można przesłać pliku powyżej 2 MB", "1615530713": "Coś jest nie tak", "1620858613": "Edytujesz reklamę, aby sprzedać <0>{{ target_amount }} {{ target_currency }} za <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "Nie udało się dokonać pełnej płatności.", @@ -164,6 +163,7 @@ "1678804253": "Kup {{ currency }}", "1685888862": "Wystąpił błąd wewnętrzny", "1691540875": "Edytuj metodę płatności", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "Edytujesz reklamę, aby sprzedać <0>{{ target_amount }} {{ target_currency }}...", "1721422292": "Pokaż moje prawdziwe imię", "1734661732": "Twoje saldo DP2P wynosi {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "Zwiększ moje limity", "2060873863": "Twoje zlecenie {{order_id}} zostało ukończone", "2063890788": "Anulowano", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "Status", "2096014107": "Zastosuj", "2104905634": "Nikt jeszcze nie polecił tego inwestora", @@ -293,7 +294,6 @@ "-492996224": "Nie anuluj", "-1447732068": "Potwierdzenie płatności", "-1951344681": "Prosimy upewnić się, że dokonali Państwo płatności na {{amount}} {{currency}} na adres {{other_user_name}}i przesłać paragon jako dowód płatności.", - "-919988505": "Akceptujemy pliki JPG, PDF lub PNG (do 2 MB).", "-670364940": "Proszę przesłać paragon tutaj", "-937707753": "Wstecz", "-984140537": "Dodaj", diff --git a/packages/p2p/src/translations/pt.json b/packages/p2p/src/translations/pt.json index b868159a03c1..d88e9515abf0 100644 --- a/packages/p2p/src/translations/pt.json +++ b/packages/p2p/src/translations/pt.json @@ -153,7 +153,6 @@ "1583335572": "Se o anúncio não receber um pedido por {{adverts_archive_period}} dias, ele será desativado.", "1587250288": "ID do anúncio {{advert_id}} ", "1607051458": "Pesquise por apelido", - "1612595358": "Não é possível carregar um ficheiro com mais de 2MB", "1615530713": "Alguma coisa não está certa", "1620858613": "Você está editando um anúncio para vender <0>{{ target_amount }} {{ target_currency }} por <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "Não consegui fazer o pagamento integral.", @@ -164,6 +163,7 @@ "1678804253": "Comprar {{ currency }}", "1685888862": "Erro interno", "1691540875": "Editar método de pagamento", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "Você está editando um anúncio para vender <0>{{ target_amount }} {{ target_currency }}...", "1721422292": "Mostrar meu nome verdadeiro", "1734661732": "Seu saldo DP2P é {{dp2p_balance}}", @@ -196,6 +196,7 @@ "2040110829": "Aumentar meus limites", "2060873863": "Seu pedido {{order_id}} está concluído", "2063890788": "Cancelado", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "Status", "2096014107": "Aplicar", "2104905634": "Este trader ainda não foi recomendado", @@ -293,7 +294,6 @@ "-492996224": "Não cancele", "-1447732068": "Confirmação de pagamento", "-1951344681": "Verifique se pagou {{amount}} {{currency}} a {{other_user_name}} e faça o upload do recibo como comprovativo de pagamento", - "-919988505": "Aceitamos JPG, PDF ou PNG (até 2MB).", "-670364940": "Faça o upload do recibo aqui", "-937707753": "Voltar", "-984140537": "Adicionar", diff --git a/packages/p2p/src/translations/ru.json b/packages/p2p/src/translations/ru.json index a755b9bc2661..6dd045f0b3a2 100644 --- a/packages/p2p/src/translations/ru.json +++ b/packages/p2p/src/translations/ru.json @@ -153,7 +153,6 @@ "1583335572": "Если ваше объявление не получит ордер в течение {{adverts_archive_period}} дн., оно будет деактивировано.", "1587250288": "ID объявления {{advert_id}} ", "1607051458": "Поиск по псевдониму", - "1612595358": "Невозможно загрузить файл размером более 2 МБ", "1615530713": "Что-то пошло не так", "1620858613": "Вы редактируете объявление о продаже <0>{{ target_amount }} {{ target_currency }} за <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "Мне не удалось произвести полную оплату.", @@ -164,6 +163,7 @@ "1678804253": "Купить {{ currency }}", "1685888862": "Произошла внутренняя ошибка", "1691540875": "Изменить платежный метод", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "Вы редактируете объявление о продаже <0>{{ target_amount }} {{ target_currency }}...", "1721422292": "Показывать мое настоящее имя", "1734661732": "Ваш баланс DP2P: {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "Увеличить лимиты", "2060873863": "Ваш ордер {{order_id}} завершен", "2063890788": "Отменено", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "Статус", "2096014107": "Применить", "2104905634": "Никто пока не рекомендовал этого трейдера", @@ -293,7 +294,6 @@ "-492996224": "Не отменять", "-1447732068": "Подтверждение платежа", "-1951344681": "Пожалуйста, убедитесь, что Вы оплатили {{amount}} {{currency}} по адресу {{other_user_name}}, и загрузите квитанцию в качестве доказательства оплаты", - "-919988505": "Мы принимаем изображения в форматах JPG, PDF или PNG (до 2 МБ).", "-670364940": "Загрузите чек здесь", "-937707753": "Назад", "-984140537": "Добавить", diff --git a/packages/p2p/src/translations/si.json b/packages/p2p/src/translations/si.json index 3f596c41bb25..3e239f162373 100644 --- a/packages/p2p/src/translations/si.json +++ b/packages/p2p/src/translations/si.json @@ -153,7 +153,6 @@ "1583335572": "දැන්වීමට දින {{adverts_archive_period}} ක් සඳහා ඇණවුමක් නොලැබුනේ නම්, එය අක්රිය වේ.", "1587250288": "දැන්වීම දැන්වීම දැන්වීම {{advert_id}} ", "1607051458": "අන්වර්ථ නාමයෙන් සොයන්න", - "1612595358": "2MB ට වැඩි ගොනුවක් උඩුගත කළ නොහැක", "1615530713": "යමක් හරි නැහැ", "1620858613": "ඔබ විකිණීමට දැන්වීමක් සංස්කරණය කරන්නේ <0>{{ target_amount }} {{ target_currency }} සඳහා <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "මට සම්පූර්ණ ගෙවීමක් කිරීමට නොහැකි විය.", @@ -164,6 +163,7 @@ "1678804253": "{{ currency }}මිලදී ගන්න", "1685888862": "අභ්යන්තර දෝෂයක් සිදුවිය", "1691540875": "ගෙවීම් ක්රමය සංස්කරණය කරන්න", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "ඔබ <0>{{ target_amount }} {{ target_currency }} විකිණීමට දැන්වීමක් සංස්කරණය කරනවා...", "1721422292": "මගේ සැබෑ නම පෙන්වන්න", "1734661732": "ඔබේ DP2P ශේෂය {{ dp2p_balance }}වේ", @@ -196,6 +196,7 @@ "2040110829": "මගේ සීමාවන් වැඩි කරන්න", "2060873863": "ඔබගේ ඇණවුම {{order_id}} සම්පූර්ණයි", "2063890788": "අවලංගු කරන ලදි", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "තත්ත්වය", "2096014107": "අයදුම් කරන්න", "2104905634": "කිසිවෙකු තවමත් මෙම වෙළෙන්දා නිර්දේශ කර නැත", @@ -293,7 +294,6 @@ "-492996224": "අවලංගු නොකරන්න", "-1447732068": "ගෙවීම් තහවුරු කිරීම", "-1951344681": "කරුණාකර ඔබ ගෙවා ඇති බවට වග බලා {{amount}} {{currency}} ගන්න {{other_user_name}}, සහ ඔබේ ගෙවීම පිළිබඳ සාක්ෂියක් ලෙස රිසිට්පත උඩුගත කරන්න", - "-919988505": "අපි පිළිගන්නෙමු JPG, PDF, හෝ PNG (2MB දක්වා).", "-670364940": "කුවිතාන්සිය මෙහි උඩුගත කරන්න", "-937707753": "ආපසු යන්න", "-984140537": "එකතු කරන්න", diff --git a/packages/p2p/src/translations/th.json b/packages/p2p/src/translations/th.json index 971127a20be0..1129bd418342 100644 --- a/packages/p2p/src/translations/th.json +++ b/packages/p2p/src/translations/th.json @@ -153,7 +153,6 @@ "1583335572": "ถ้าโฆษณาไม่ได้รับคําสั่งซื้อเลยในช่วง {{adverts_archive_period}} วัน โฆษณานั้นจะถูกปิดใช้งาน", "1587250288": "หมายเลขโฆษณา {{advert_id}} ", "1607051458": "ค้นหาตามชื่อเล่น", - "1612595358": "ไม่สามารถอัปโหลดไฟล์ขนาดเกิน 2MB", "1615530713": "มีบางอย่างไม่ถูกต้อง", "1620858613": "คุณกำลังแก้ไขโฆษณาเพื่อขาย <0>{{ target_amount }} {{ target_currency }} ในราคา <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "ฉันไม่สามารถชำระเงินเต็มจำนวนได้", @@ -164,6 +163,7 @@ "1678804253": "ซื้อ {{ currency }}", "1685888862": "เกิดข้อผิดพลาดภายใน", "1691540875": "แก้ไขวิธีการชำระเงิน", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "คุณกำลังแก้ไขโฆษณาเพื่อขาย <0>{{ target_amount }} {{ target_currency }}...", "1721422292": "แสดงชื่อจริงของฉัน", "1734661732": "ยอดคงเหลือ DP2P ของคุณคือ {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "เพิ่มขีดจำกัดวงเงินของฉัน", "2060873863": "คำสั่งซื้อของคุณ {{order_id}} เสร็จสมบูรณ์แล้ว", "2063890788": "ยกเลิกแล้ว", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "สถานะ", "2096014107": "นำมาใช้งาน", "2104905634": "ยังไม่มีใครแนะนำเทรดเดอร์รายนี้เลย", @@ -293,7 +294,6 @@ "-492996224": "อย่าทำการยกเลิก", "-1447732068": "การยืนยันการชำระเงิน", "-1951344681": "โปรดตรวจสอบว่าคุณได้ชำระเงิน {{amount}} {{currency}} ให้กับ {{other_user_name}} และอัปโหลดใบเสร็จรับเงินเป็นหลักฐานการชำระเงินของคุณ", - "-919988505": "เรายอมรับ JPG PDF หรือ PNG (สูงสุด 2MB)", "-670364940": "อัปโหลดใบเสร็จที่นี่", "-937707753": "ย้อนกลับไป", "-984140537": "เพิ่ม", diff --git a/packages/p2p/src/translations/tr.json b/packages/p2p/src/translations/tr.json index 0c73d7bf00d9..76bed989bb0f 100644 --- a/packages/p2p/src/translations/tr.json +++ b/packages/p2p/src/translations/tr.json @@ -153,7 +153,6 @@ "1583335572": "Eğer ilan {{adverts_archive_period}} gün boyunca bir emir almazsa devre dışı bırakılır.", "1587250288": "İlan Kimliği {{advert_id}} ", "1607051458": "Takma ada göre ara", - "1612595358": "2MB üzerinde bir dosya yüklenemiyor", "1615530713": "Doğru olmayan bir şeyler var", "1620858613": "Satmak için bir ilan oluşturuyorsunuz: <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }}) için <0>{{ target_amount }} {{ target_currency }}", "1623916605": "Tam ödeme yapamadım.", @@ -164,6 +163,7 @@ "1678804253": "Satın al {{ currency }}", "1685888862": "Dahili bir hata oluştu", "1691540875": "Ödeme yöntemini düzenle", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "<0>{{ target_amount }} {{ target_currency }} satmak için bir ilan oluşturuyorsunuz...", "1721422292": "Gerçek adımı göster", "1734661732": "DP2P bakiyeniz {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "Sınırlarımı arttır", "2060873863": "Siparişiniz {{order_id}} tamamlandı", "2063890788": "İptal edildi", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "Durum", "2096014107": "Uygula", "2104905634": "Henüz kimse bu tüccarı tavsiye etmedi", @@ -293,7 +294,6 @@ "-492996224": "İptal etme", "-1447732068": "Ödeme onayı", "-1951344681": "Lütfen {{amount}} {{currency}} adresinden {{other_user_name}}adresine ödeme yaptığınızdan emin olun ve ödemenizin kanıtı olarak makbuzu yükleyin", - "-919988505": "JPG, PDF veya PNG (2 MB'a kadar) kabul ediyoruz.", "-670364940": "Makbuzu buraya yükleyin", "-937707753": "Geri dön", "-984140537": "Ekle", diff --git a/packages/p2p/src/translations/vi.json b/packages/p2p/src/translations/vi.json index a49110be5927..26db5af7e69f 100644 --- a/packages/p2p/src/translations/vi.json +++ b/packages/p2p/src/translations/vi.json @@ -153,7 +153,6 @@ "1583335572": "Nếu quảng cáo không nhận được yêu cầu giao dịch trong {{adverts_archive_period}} ngày, quảng cáo sẽ bị vô hiệu hóa.", "1587250288": "ID Quảng cáo {{advert_id}} ", "1607051458": "Tìm bằng nickname", - "1612595358": "Không thể tải lên một tập tin trên 2MB", "1615530713": "Đã có vấn đề xảy ra", "1620858613": "Bạn đang chỉnh sửa một quảng cáo để bán <0>{{ target_amount }} {{ target_currency }} cho <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "Tôi không thể thanh toán đầy đủ.", @@ -164,6 +163,7 @@ "1678804253": "Mua {{ currency }}", "1685888862": "Đã xảy ra lỗi nội bộ", "1691540875": "Chỉnh sửa phương thức thanh toán", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "Bạn đang chỉnh sửa một quảng cáo để bán <0>{{ target_amount }} {{ target_currency }}...", "1721422292": "Hiển thị tên thật của tôi", "1734661732": "Số dư DP2P của bạn là {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "Tăng giới hạn của tôi", "2060873863": "Giao dịch {{order_id}} của bạn đã hoàn tất", "2063890788": "Đã huỷ", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "Trạng thái", "2096014107": "Áp dụng", "2104905634": "Chưa ai giới thiệu trader này", @@ -293,7 +294,6 @@ "-492996224": "Không hủy", "-1447732068": "Xác nhận thanh toán", "-1951344681": "Vui lòng đảm bảo rằng bạn đã thanh toán {{amount}} {{currency}} và tải lên biên lai làm bằng chứng về khoản thanh toán của bạn {{other_user_name}}", - "-919988505": "Chúng tôi chấp nhận JPG, PDF hoặc PNG (tối đa 2MB).", "-670364940": "Tải lên biên lai tại đây", "-937707753": "Quay lại", "-984140537": "Thêm", diff --git a/packages/p2p/src/translations/zh_cn.json b/packages/p2p/src/translations/zh_cn.json index bbc1a3e87d52..75ce1b5b62c8 100644 --- a/packages/p2p/src/translations/zh_cn.json +++ b/packages/p2p/src/translations/zh_cn.json @@ -153,7 +153,6 @@ "1583335572": "如广告连续 {{adverts_archive_period}} 天没收到订单将被停用。", "1587250288": "广告 ID {{advert_id}} ", "1607051458": "按昵称搜索", - "1612595358": "无法上传超过 2MB 的文件", "1615530713": "出现问题", "1620858613": "正在编辑广告以<0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})卖出<0>{{ target_amount }} {{ target_currency }}", "1623916605": "我无法全额付款。", @@ -164,6 +163,7 @@ "1678804253": "买入 {{ currency }}", "1685888862": "出现内部错误", "1691540875": "编辑付款方式", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "您正在编辑广告以卖出 <0>{{ target_amount }} {{ target_currency }}...", "1721422292": "显示我的真实姓名", "1734661732": "您的 DP2P 余额是 {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "提高限额", "2060873863": "订单 {{order_id}} 已完成", "2063890788": "已取消", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "状态", "2096014107": "申请", "2104905634": "还没有人推荐这个交易者", @@ -293,7 +294,6 @@ "-492996224": "不要取消", "-1447732068": "付款确认", "-1951344681": "请确保已付款 {{amount}} {{currency}} 给 {{other_user_name}},及上传收据作为付款凭证", - "-919988505": "接受 JPG、PDF 或 PNG 格式(最大 2MB)。", "-670364940": "在此处上传收据", "-937707753": "返回", "-984140537": "添加", diff --git a/packages/p2p/src/translations/zh_tw.json b/packages/p2p/src/translations/zh_tw.json index 206833fc81ca..8af3faa333d2 100644 --- a/packages/p2p/src/translations/zh_tw.json +++ b/packages/p2p/src/translations/zh_tw.json @@ -153,7 +153,6 @@ "1583335572": "如廣告連續 {{adverts_archive_period}} 天沒接到訂單將被停用。", "1587250288": "廣告 ID {{advert_id}} ", "1607051458": "按暱稱搜尋", - "1612595358": "無法上傳超過 2MB 的檔案", "1615530713": "出現問題", "1620858613": "正在編輯廣告以 <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})賣出 <0>{{ target_amount }} {{ target_currency }}", "1623916605": "我無法全額付款。", @@ -164,6 +163,7 @@ "1678804253": "買入 {{ currency }}", "1685888862": "發生內部錯誤", "1691540875": "編輯支付方式", + "1699829275": "Cannot upload a file over 5MB", "1703154819": "您正在編輯廣告以賣出<0>{{ target_amount }} {{ target_currency }}...", "1721422292": "顯示我的真實姓名", "1734661732": "您的 DP2P 餘額是 {{ dp2p_balance }}", @@ -196,6 +196,7 @@ "2040110829": "提高限額", "2060873863": "訂單 {{order_id}} 已完成", "2063890788": "已取消", + "2064304887": "We accept JPG, PDF, or PNG (up to 5MB).", "2091671594": "狀況", "2096014107": "申請", "2104905634": "還沒有人推薦這個交易者", @@ -293,7 +294,6 @@ "-492996224": "不要取消", "-1447732068": "付款確認", "-1951344681": "請確認已付款 {{amount}} {{currency}} 給 {{other_user_name}},並上傳收據作為付款證明", - "-919988505": "接受 JPG、PDF 或 PNG(最大 2 MB)。", "-670364940": "這裡上傳收據", "-937707753": "返回", "-984140537": "新增", diff --git a/packages/p2p/src/utils/file-uploader.js b/packages/p2p/src/utils/file-uploader.js index dbc354e1ccce..08cdeca12b43 100644 --- a/packages/p2p/src/utils/file-uploader.js +++ b/packages/p2p/src/utils/file-uploader.js @@ -4,7 +4,7 @@ export const convertToMB = bytes => bytes / (1024 * 1024); export const getPotSupportedFiles = filename => /^.*\.(png|PNG|jpg|JPG|jpeg|JPEG|pdf|PDF)$/.test(filename); -export const max_pot_file_size = 2097152; +export const max_pot_file_size = 5242880; export const isImageType = type => ['image/jpeg', 'image/png', 'image/gif'].includes(type); @@ -15,5 +15,5 @@ const isFileSupported = files => files.filter(each_file => getPotSupportedFiles( export const getErrorMessage = files => isFileTooLarge(files) && isFileSupported(files) - ? localize('Cannot upload a file over 2MB') + ? localize('Cannot upload a file over 5MB') : localize('File uploaded is not supported'); diff --git a/packages/reports/src/Containers/open-positions.tsx b/packages/reports/src/Containers/open-positions.tsx index e5bf812a8a8d..c367cf972c24 100644 --- a/packages/reports/src/Containers/open-positions.tsx +++ b/packages/reports/src/Containers/open-positions.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { withRouter } from 'react-router-dom'; +import { RouteComponentProps, withRouter } from 'react-router-dom'; import { DesktopWrapper, MobileWrapper, @@ -114,7 +114,7 @@ type TTotals = { payout?: number; }; -type TOpenPositions = { +type TOpenPositions = RouteComponentProps & { component_icon: string; }; diff --git a/packages/shared/package.json b/packages/shared/package.json index 45a8fcd869c3..2821fef759c9 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -32,6 +32,10 @@ "devDependencies": { "@babel/eslint-parser": "^7.17.0", "@babel/preset-react": "^7.16.7", + "@testing-library/jest-dom": "^5.12.0", + "@testing-library/react": "^12.0.0", + "@testing-library/react-hooks": "^7.0.2", + "@testing-library/user-event": "^13.5.0", "@types/jsdom": "^20.0.0", "@types/react": "^18.0.7", "@types/react-dom": "^18.0.0", diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 963f4e3419bb..2faa767f9621 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -35,3 +35,4 @@ export * from './services'; export * from './utils/helpers'; export * from './utils/constants'; export * from './utils/loader-handler'; +export * from './utils/types'; diff --git a/packages/shared/src/utils/cfd/cfd.ts b/packages/shared/src/utils/cfd/cfd.ts index 7c1b52962a48..049159e480b7 100644 --- a/packages/shared/src/utils/cfd/cfd.ts +++ b/packages/shared/src/utils/cfd/cfd.ts @@ -184,7 +184,7 @@ export const getCFDAccountDisplay = ({ let cfd_account_key = getCFDAccountKey({ market_type, sub_account_type, platform, shortcode }); if (!cfd_account_key) return undefined; - if (cfd_account_key === 'financial' && is_eu) { + if (cfd_account_key === 'financial_demo' && is_eu) { if (is_mt5_trade_modal) cfd_account_key = 'mt5_cfds'; else cfd_account_key = 'cfd'; } @@ -206,6 +206,11 @@ type TGetCFDAccount = TGetAccount & { is_transfer_form?: boolean; }; +type TGetMT5Icon = { + market_type: TMarketType; + is_eu?: boolean; +}; + export const getCFDAccount = ({ market_type, sub_account_type, @@ -216,7 +221,7 @@ export const getCFDAccount = ({ let cfd_account_key = getCFDAccountKey({ market_type, sub_account_type, platform }); if (!cfd_account_key) return undefined; - if (cfd_account_key === 'financial' && is_eu) { + if (cfd_account_key === 'financial_demo' && is_eu) { cfd_account_key = 'cfd'; } @@ -225,6 +230,12 @@ export const getCFDAccount = ({ return CFD_text[cfd_account_key as keyof typeof CFD_text]; }; +export const getMT5Icon = ({ market_type, is_eu }: TGetMT5Icon) => { + if (market_type === 'all' && !is_eu) return 'SwapFree'; + if (market_type === 'financial' && is_eu) return 'CFDs'; + return market_type; +}; + export const setSharedCFDText = (all_shared_CFD_text: { [key: string]: () => void }) => { CFD_text_translated = all_shared_CFD_text; }; diff --git a/packages/shared/src/utils/config/adapters.ts b/packages/shared/src/utils/config/adapters.ts index 0b962cb0d005..7ec4efc3e265 100644 --- a/packages/shared/src/utils/config/adapters.ts +++ b/packages/shared/src/utils/config/adapters.ts @@ -21,6 +21,7 @@ type TIDVFormValues = { /** * Formats the IDV form values to be sent to the API + * @name formatIDVFormValues * @param idv_form_value - Formik values of the IDV form * @param country_code - Country code of the user * @returns IDV form values diff --git a/packages/shared/src/utils/constants/error.ts b/packages/shared/src/utils/constants/error.ts index 53fd468f5770..7058da23d4e0 100644 --- a/packages/shared/src/utils/constants/error.ts +++ b/packages/shared/src/utils/constants/error.ts @@ -5,3 +5,12 @@ export const getDefaultError = () => ({ description: localize('Our servers hit a bump. Let’s refresh to move on.'), cta_label: localize('Refresh'), }); + +export const STATUS_CODES = Object.freeze({ + NONE: 'none', + PENDING: 'pending', + REJECTED: 'rejected', + VERIFIED: 'verified', + EXPIRED: 'expired', + SUSPECTED: 'suspected', +}); diff --git a/packages/shared/src/utils/constants/idv-failure-codes.ts b/packages/shared/src/utils/constants/idv-failure-codes.ts new file mode 100644 index 000000000000..5df21e24c9d5 --- /dev/null +++ b/packages/shared/src/utils/constants/idv-failure-codes.ts @@ -0,0 +1,7 @@ +export const idv_error_statuses = Object.freeze({ + poi_name_dob_mismatch: 'POI_NAME_DOB_MISMATCH', + poi_dob_mismatch: 'POI_DOB_MISMATCH', + poi_name_mismatch: 'POI_NAME_MISMATCH', + poi_expired: 'POI_EXPIRED', + poi_failed: 'POI_FAILED', +}); diff --git a/packages/shared/src/utils/constants/index.ts b/packages/shared/src/utils/constants/index.ts index d9817697f166..101af38867a5 100644 --- a/packages/shared/src/utils/constants/index.ts +++ b/packages/shared/src/utils/constants/index.ts @@ -5,3 +5,4 @@ export * from './default-options'; export * from './jurisdictions-config'; export * from './signup_fields'; export * from './error'; +export * from './idv-failure-codes'; diff --git a/packages/shared/src/utils/contract/__tests__/contract.spec.ts b/packages/shared/src/utils/contract/__tests__/contract.spec.ts index 50c20e064ba1..c98bec1ab498 100644 --- a/packages/shared/src/utils/contract/__tests__/contract.spec.ts +++ b/packages/shared/src/utils/contract/__tests__/contract.spec.ts @@ -1,3 +1,4 @@ +import { screen, render } from '@testing-library/react'; import * as ContractUtils from '../contract'; import { TContractInfo, TDigitsInfo, TTickItem } from '../contract-types'; @@ -585,3 +586,20 @@ describe('getContractStatus', () => { ).toBe('won'); }); }); + +describe('getLocalizedTurbosSubtype', () => { + it('should return an empty string for non-turbos contracts', () => { + render(ContractUtils.getLocalizedTurbosSubtype('CALL') as JSX.Element); + expect(screen.queryByText('Long')).not.toBeInTheDocument(); + expect(screen.queryByText('Short')).not.toBeInTheDocument(); + expect(ContractUtils.getLocalizedTurbosSubtype('CALL')).toBe(''); + }); + it('should render "Long" for TURBOSLONG contract', () => { + render(ContractUtils.getLocalizedTurbosSubtype('TURBOSLONG') as JSX.Element); + expect(screen.getByText('Long')).toBeInTheDocument(); + }); + it('should render "Short" for TURBOSSHORT contract', () => { + render(ContractUtils.getLocalizedTurbosSubtype('TURBOSSHORT') as JSX.Element); + expect(screen.getByText('Short')).toBeInTheDocument(); + }); +}); diff --git a/packages/shared/src/utils/contract/contract-types.ts b/packages/shared/src/utils/contract/contract-types.ts index 0442d8ffeeb6..0e5be1ce6746 100644 --- a/packages/shared/src/utils/contract/contract-types.ts +++ b/packages/shared/src/utils/contract/contract-types.ts @@ -1,15 +1,26 @@ -import { ContractUpdate, Portfolio1, ProposalOpenContract } from '@deriv/api-types'; +import { + ContractUpdate, + ContractUpdateHistory, + Portfolio1, + ProposalOpenContract, + TickSpotData, +} from '@deriv/api-types'; export type TContractStore = { + clearContractUpdateConfigValues: () => void; contract_info: TContractInfo; + contract_update_history: ContractUpdateHistory; contract_update_take_profit: number | string; contract_update_stop_loss: number | string; - clearContractUpdateConfigValues: () => void; + digits_info: TDigitsInfo; + display_status: string; has_contract_update_take_profit: boolean; has_contract_update_stop_loss: boolean; + is_digit_contract: boolean; + is_ended: boolean; + onChange: (param: { name: string; value: string | number | boolean }) => void; updateLimitOrder: () => void; validation_errors: { contract_update_stop_loss: string[]; contract_update_take_profit: string[] }; - onChange: (param: { name: string; value: string | number | boolean }) => void; }; export type TContractInfo = ProposalOpenContract & @@ -33,3 +44,5 @@ type TLimitProperty = { }; export type TLimitOrder = Partial>; + +export type TTickSpotData = TickSpotData; diff --git a/packages/shared/src/utils/contract/contract.ts b/packages/shared/src/utils/contract/contract.tsx similarity index 95% rename from packages/shared/src/utils/contract/contract.ts rename to packages/shared/src/utils/contract/contract.tsx index 006e872ef84a..4f9ad4bb5f4a 100644 --- a/packages/shared/src/utils/contract/contract.ts +++ b/packages/shared/src/utils/contract/contract.tsx @@ -1,4 +1,6 @@ import moment from 'moment'; +import React from 'react'; +import { Localize } from '@deriv/translations'; import { unique } from '../object'; import { capitalizeFirstLetter } from '../string/string_util'; import { TContractInfo, TDigitsInfo, TLimitOrder, TTickItem } from './contract-types'; @@ -214,7 +216,16 @@ export const shouldShowExpiration = (symbol = '') => symbol.startsWith('cry'); export const shouldShowCancellation = (symbol = '') => !/^(cry|CRASH|BOOM|stpRNG|WLD|JD)/.test(symbol); -export const getContractSubtype = (type: string) => +export const getContractSubtype = (type = '') => /(VANILLALONG|TURBOS)/i.test(type) ? capitalizeFirstLetter(type.replace(/(VANILLALONG|TURBOS)/i, '').toLowerCase()) : ''; + +export const getLocalizedTurbosSubtype = (contract_type = '') => { + if (!isTurbosContract(contract_type)) return ''; + return getContractSubtype(contract_type) === 'Long' ? ( + + ) : ( + + ); +}; diff --git a/packages/shared/src/utils/currency/currency.ts b/packages/shared/src/utils/currency/currency.ts index d26b7eb207e8..6bf986764e61 100644 --- a/packages/shared/src/utils/currency/currency.ts +++ b/packages/shared/src/utils/currency/currency.ts @@ -42,7 +42,7 @@ const crypto_currencies_display_order = [ 'USDK', ]; -export const reorderCurrencies = (list: Array<{ value: string; type: string }>, type = 'fiat') => { +export const reorderCurrencies = (list: Array, type = 'fiat') => { const new_order = type === 'fiat' ? fiat_currencies_display_order : crypto_currencies_display_order; return list.sort((a, b) => { diff --git a/packages/shared/src/utils/digital-options/digital-options.ts b/packages/shared/src/utils/digital-options/digital-options.ts index 5ee382320bf5..b619b0af2c35 100644 --- a/packages/shared/src/utils/digital-options/digital-options.ts +++ b/packages/shared/src/utils/digital-options/digital-options.ts @@ -10,7 +10,7 @@ type TShowError = { message: string; header: string; redirect_label: string; - redirectOnClick: (() => void) | null; + redirectOnClick?: (() => void) | null; should_show_refresh: boolean; redirect_to: string; should_clear_error_on_click: boolean; @@ -25,8 +25,8 @@ type TAccounts = { export const showDigitalOptionsUnavailableError = ( showError: (t: TShowError) => void, message: TMessage, - redirectOnClick: (() => void) | null, - should_redirect: boolean, + redirectOnClick?: (() => void) | null, + should_redirect = false, should_clear_error_on_click = true ) => { const { title, text, link } = message; diff --git a/packages/shared/src/utils/files/file-uploader-utils.ts b/packages/shared/src/utils/files/file-uploader-utils.ts index 552d71d4da88..8eac3f283cd9 100644 --- a/packages/shared/src/utils/files/file-uploader-utils.ts +++ b/packages/shared/src/utils/files/file-uploader-utils.ts @@ -80,7 +80,7 @@ export const readFiles = (files: TFile[], getFileReadErrorMessage: (t: string) = documentFormat: getFormatFromMIME(f), file_size: f.size, ...settings, - documentType: settings?.documentType || 'utility_bill', + documentType: settings?.documentType ?? 'utility_bill', }; resolve(file_obj); }; diff --git a/packages/shared/src/utils/helpers/duration.ts b/packages/shared/src/utils/helpers/duration.ts index 84d47c169c9a..be2579641b3f 100644 --- a/packages/shared/src/utils/helpers/duration.ts +++ b/packages/shared/src/utils/helpers/duration.ts @@ -163,10 +163,10 @@ export const hasIntradayDurationUnit = (duration_units_list: TUnit[]) => { * On switching symbols, end_time value of volatility indices should be set to today * * @param {String} symbol - * @param {String} expiry_type + * @param {String | null} expiry_type * @returns {*} */ -export const resetEndTimeOnVolatilityIndices = (symbol: string, expiry_type: string) => +export const resetEndTimeOnVolatilityIndices = (symbol: string, expiry_type: string | null) => /^R_/.test(symbol) && expiry_type === 'endtime' ? toMoment(null).format('DD MMM YYYY') : null; export const getDurationMinMaxValues = ( diff --git a/packages/shared/src/utils/helpers/format-response.ts b/packages/shared/src/utils/helpers/format-response.ts index 9f46174f556e..7149b8d706f5 100644 --- a/packages/shared/src/utils/helpers/format-response.ts +++ b/packages/shared/src/utils/helpers/format-response.ts @@ -1,8 +1,9 @@ import { GetSettings, ResidenceList } from '@deriv/api-types'; -import { getUnsupportedContracts } from '../constants'; +import { STATUS_CODES, getUnsupportedContracts } from '../constants'; import { getSymbolDisplayName, TActiveSymbols } from './active-symbols'; import { getMarketInformation } from './market-underlying'; import { TContractInfo } from '../contract'; +import { idv_error_statuses } from '../constants/idv-failure-codes'; type TIsUnSupportedContract = { contract_type?: string; @@ -42,6 +43,37 @@ export const formatPortfolioPosition = ( }; }; +export type TIDVErrorStatus = typeof idv_error_statuses[keyof typeof idv_error_statuses]; + +//formatIDVError is parsing errors messages from BE (strings) and returns error codes for using it on FE +export const formatIDVError = (errors: string[], status_code: string) => { + /** + * Check required incase of DIEL client + */ + if (errors.length === 0 && (status_code === STATUS_CODES.NONE || status_code === STATUS_CODES.VERIFIED)) + return null; + const error_keys: Record = { + name: 'POI_NAME_MISMATCH', + birth: 'POI_DOB_MISMATCH', + rejected: 'POI_FAILED', + }; + if (status_code === STATUS_CODES.EXPIRED) { + return 'POI_EXPIRED'; + } + const status: TIDVErrorStatus[] = []; + errors.forEach(error => { + const error_regex = RegExp(/(name|birth|rejected)/i).exec(error); + if (error_regex) { + status.push(error_keys[error_regex[0].toLowerCase()]); + } + }); + return status.includes(error_keys.name) && + status.includes(error_keys.birth) && + !status.includes(error_keys.rejected) + ? 'POI_NAME_DOB_MISMATCH' + : status[0] ?? 'POI_FAILED'; +}; + export const isVerificationServiceSupported = ( residence_list: ResidenceList, account_settings: GetSettings, diff --git a/packages/shared/src/utils/helpers/logic.ts b/packages/shared/src/utils/helpers/logic.ts index 691cef6f72b8..435d9c5a6a34 100644 --- a/packages/shared/src/utils/helpers/logic.ts +++ b/packages/shared/src/utils/helpers/logic.ts @@ -2,55 +2,25 @@ import moment from 'moment'; import { isEmptyObject } from '../object'; import { isAccumulatorContract, isOpen, isUserSold } from '../contract'; import { TContractInfo, TContractStore } from '../contract/contract-types'; - -type TTick = { - ask?: number; - bid?: number; - epoch?: number; - id?: string; - pip_size: number; - quote?: number; - symbol?: string; -}; - -type TIsEndedBeforeCancellationExpired = TGetEndTime & { - cancellation: { - ask_price: number; - date_expiry: number; - }; -}; +import { TickSpotData } from '@deriv/api-types'; type TIsSoldBeforeStart = Required>; type TIsStarted = Required>; -type TGetEndTime = Pick< - TContractInfo, - | 'is_expired' - | 'sell_time' - | 'status' - | 'tick_count' - | 'bid_price' - | 'buy_price' - | 'contract_id' - | 'is_valid_to_sell' - | 'profit' -> & - Required>; - -export const isContractElapsed = (contract_info: TGetEndTime, tick: TTick) => { +export const isContractElapsed = (contract_info: TContractInfo, tick?: TickSpotData) => { if (isEmptyObject(tick) || isEmptyObject(contract_info)) return false; const end_time = getEndTime(contract_info) || 0; - if (end_time && tick.epoch) { + if (end_time && tick && tick.epoch) { const seconds = moment.duration(moment.unix(tick.epoch).diff(moment.unix(end_time))).asSeconds(); return seconds >= 2; } return false; }; -export const isEndedBeforeCancellationExpired = (contract_info: TIsEndedBeforeCancellationExpired) => { +export const isEndedBeforeCancellationExpired = (contract_info: TContractInfo) => { const end_time = getEndTime(contract_info) || 0; - return !!(contract_info.cancellation && end_time < contract_info.cancellation.date_expiry); + return !!(contract_info.cancellation?.date_expiry && end_time < contract_info.cancellation.date_expiry); }; export const isSoldBeforeStart = (contract_info: TIsSoldBeforeStart) => diff --git a/packages/shared/src/utils/shortcode/shortcode.ts b/packages/shared/src/utils/shortcode/shortcode.ts index 6517450d2bd0..954a1da76487 100644 --- a/packages/shared/src/utils/shortcode/shortcode.ts +++ b/packages/shared/src/utils/shortcode/shortcode.ts @@ -9,19 +9,17 @@ type TIsHighLow = { }; }; -type TInfoFromShortcode = Partial< - Record< - | 'category' - | 'underlying' - | 'barrier_1' - | 'multiplier' - | 'start_time' - | 'payout_tick' - | 'growth_rate' - | 'growth_frequency' - | 'tick_size_barrier', - string - > +type TInfoFromShortcode = Record< + | 'category' + | 'underlying' + | 'barrier_1' + | 'multiplier' + | 'start_time' + | 'payout_tick' + | 'growth_rate' + | 'growth_frequency' + | 'tick_size_barrier', + string >; // category_underlying_amount diff --git a/packages/shared/src/utils/types.ts b/packages/shared/src/utils/types.ts new file mode 100644 index 000000000000..51ebd1123f8f --- /dev/null +++ b/packages/shared/src/utils/types.ts @@ -0,0 +1,3 @@ +import { Jurisdiction } from './constants'; + +export type TBrokerCodes = typeof Jurisdiction[keyof typeof Jurisdiction]; diff --git a/packages/shared/src/utils/validation/declarative-validation-rules.ts b/packages/shared/src/utils/validation/declarative-validation-rules.ts index 96fc564926d6..29578f216009 100644 --- a/packages/shared/src/utils/validation/declarative-validation-rules.ts +++ b/packages/shared/src/utils/validation/declarative-validation-rules.ts @@ -47,7 +47,7 @@ export const validPhone = (value: string) => /^\+?([0-9-]+\s)*[0-9-]+$/.test(val export const validLetterSymbol = (value: string) => /^[A-Za-z]+([a-zA-Z.' -])*[a-zA-Z.' -]+$/.test(value); export const validName = (value: string) => /^(?!.*\s{2,})[\p{L}\s'.-]{2,50}$/u.test(value); export const validLength = (value = '', options: TOptions) => - (options.min ? value.length >= options.min : true) && (options.max ? value.length <= options.max : true); + (options.min ? value.length >= options.min : true) && (options.max ? value.length <= Number(options.max) : true); export const validPassword = (value: string) => /^(?=.*[a-z])(?=.*\d)(?=.*[A-Z])[!-~]{8,25}$/.test(value); export const validEmail = (value: string) => /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,63}$/.test(value); const validBarrier = (value: string) => /^[+-]?\d+\.?\d*$/.test(value); @@ -60,7 +60,7 @@ const validEmailToken = (value: string) => value.trim().length === 8; let pre_build_dvrs: TInitPreBuildDVRs, form_error_messages: TFormErrorMessagesTypes; const isMoreThanMax = (value: number, options: TOptions) => - options.type === 'float' ? +value > +options.max! : compareBigUnsignedInt(value, options.max!) === 1; + options.type === 'float' ? +value > Number(options.max) : compareBigUnsignedInt(value, options.max) === 1; export const validNumber = (value: string, opts: TOptions) => { const options = cloneObject(opts); diff --git a/packages/stores/src/mockStore.ts b/packages/stores/src/mockStore.ts index 4920bac18906..87b8cbf31c14 100644 --- a/packages/stores/src/mockStore.ts +++ b/packages/stores/src/mockStore.ts @@ -1,6 +1,5 @@ import merge from 'lodash.merge'; - -import type { TStores } from '../types'; +import type { TCoreStores, TStores } from '../types'; const mock = (): TStores & { is_mock: boolean } => { const common_store_error = { @@ -13,7 +12,6 @@ const mock = (): TStores & { is_mock: boolean } => { should_clear_error_on_click: false, should_show_refresh: false, redirectOnClick: jest.fn(), - setError: jest.fn(), }; return { is_mock: true, @@ -21,7 +19,6 @@ const mock = (): TStores & { is_mock: boolean } => { account_settings: {}, account_type: 'virtual', accounts: {}, - is_social_signup: false, active_account_landing_company: '', trading_platform_available_accounts: [], account_limits: {}, @@ -109,6 +106,7 @@ const mock = (): TStores & { is_mock: boolean } => { }, balance: '', can_change_fiat_currency: false, + clients_country: '', country_standpoint: { is_belgium: false, is_france: false, @@ -126,6 +124,7 @@ const mock = (): TStores & { is_mock: boolean } => { setCFDScore: jest.fn(), getLimits: jest.fn(), has_active_real_account: false, + has_fiat: false, has_logged_out: false, has_maltainvest_account: false, has_restricted_mt5_account: false, @@ -134,6 +133,7 @@ const mock = (): TStores & { is_mock: boolean } => { is_authorize: false, is_deposit_lock: false, is_dxtrade_allowed: false, + is_dxtrade_password_not_set: false, is_eu: false, is_eu_country: false, has_residence: false, @@ -145,17 +145,19 @@ const mock = (): TStores & { is_mock: boolean } => { is_landing_company_loaded: false, is_logged_in: false, is_logging_in: false, + is_mt5_password_not_set: false, is_pending_proof_of_ownership: false, + is_populating_dxtrade_account_list: false, + is_social_signup: false, is_single_currency: false, is_switching: false, is_tnc_needed: false, is_high_risk: false, is_trading_experience_incomplete: false, + is_unwelcome: false, is_virtual: false, is_withdrawal_lock: false, is_populating_account_list: false, - is_language_loaded: false, - prev_account_type: '', landing_company_shortcode: '', local_currency_config: { currency: '', @@ -201,6 +203,7 @@ const mock = (): TStores & { is_mock: boolean } => { active_accounts: [], account_list: [], available_crypto_currencies: [], + selectCurrency: jest.fn(), setAccountStatus: jest.fn(), setBalanceOtherAccounts: jest.fn(), setInitialized: jest.fn(), @@ -208,6 +211,7 @@ const mock = (): TStores & { is_mock: boolean } => { setVisibilityRealityCheck: jest.fn(), setP2pAdvertiserInfo: jest.fn(), setPreSwitchAccount: jest.fn(), + social_identity_provider: '', switched: false, switch_broadcast: false, switchEndSignal: jest.fn(), @@ -225,6 +229,7 @@ const mock = (): TStores & { is_mock: boolean } => { is_populating_mt5_account_list: false, landing_companies: {}, landing_company: {}, + upgradeable_currencies: [], getChangeableFields: jest.fn(), isAccountOfTypeDisabled: jest.fn(), is_mt5_allowed: false, @@ -277,6 +282,7 @@ const mock = (): TStores & { is_mock: boolean } => { current_language: 'EN', isCurrentLanguage: jest.fn(), is_from_derivgo: false, + is_socket_opened: false, has_error: false, platform: '', routeBackInApp: jest.fn(), @@ -284,14 +290,17 @@ const mock = (): TStores & { is_mock: boolean } => { changeCurrentLanguage: jest.fn(), changeSelectedLanguage: jest.fn(), is_network_online: false, + network_status: {}, services_error: {}, - server_time: undefined, + server_time: new Date() as unknown as TCoreStores['common']['server_time'], + setError: jest.fn(), + setSelectedContractType: jest.fn(), + setServicesError: jest.fn(), + showError: jest.fn(), is_language_changing: false, - is_socket_opened: false, setAppstorePlatform: jest.fn(), app_routing_history: [], getExchangeRate: jest.fn(), - network_status: {}, }, ui: { advanced_duration_unit: 't', @@ -301,16 +310,22 @@ const mock = (): TStores & { is_mock: boolean } => { }, current_focus: null, is_account_settings_visible: false, + is_advanced_duration: false, is_loading: false, is_cashier_visible: false, is_wallet_modal_visible: false, - is_app_disabled: false, + is_chart_layout_default: false, is_closing_create_real_account_modal: false, is_dark_mode_on: false, is_language_settings_modal_on: false, + is_desktop: false, + is_app_disabled: false, + has_only_forward_starting_contracts: false, header_extension: null, is_link_expired_modal_visible: false, is_mobile: false, + is_tablet: false, + is_mobile_language_menu_open: false, is_positions_drawer_on: false, is_reports_visible: false, is_route_modal_on: false, @@ -322,26 +337,38 @@ const mock = (): TStores & { is_mock: boolean } => { toggleAccountsDialog: jest.fn(), toggleAccountSettings: jest.fn(), toggleCashier: jest.fn(), - togglePositionsDrawer: jest.fn(), setDarkMode: jest.fn(), setReportsTabIndex: jest.fn(), - has_only_forward_starting_contracts: false, has_real_account_signup_ended: false, + real_account_signup_target: '', + real_account_signup: { + active_modal_index: -1, + previous_currency: '', + current_currency: '', + success_message: '', + error_message: '', + }, + resetRealAccountSignupParams: jest.fn(), notification_messages_ui: jest.fn(), + openPositionsDrawer: jest.fn(), openRealAccountSignup: jest.fn(), setIsWalletModalVisible: jest.fn(), setHasOnlyForwardingContracts: jest.fn(), setIsClosingCreateRealAccountModal: jest.fn(), + setMobileLanguageMenuOpen: jest.fn(), setRealAccountSignupEnd: jest.fn(), setPurchaseState: jest.fn(), + setAppContentsScrollRef: jest.fn(), shouldNavigateAfterChooseCrypto: jest.fn(), toggleLanguageSettingsModal: jest.fn(), - toggleServicesErrorModal: jest.fn(), + togglePositionsDrawer: jest.fn(), toggleLinkExpiredModal: jest.fn(), + toggleServicesErrorModal: jest.fn(), toggleSetCurrencyModal: jest.fn(), addToast: jest.fn(), removeToast: jest.fn(), reports_route_tab_index: 1, + resetPurchaseStates: jest.fn(), should_show_cancellation_warning: false, toggleCancellationWarning: jest.fn(), toggleUnsupportedContractModal: jest.fn(), @@ -349,13 +376,10 @@ const mock = (): TStores & { is_mock: boolean } => { setSubSectionIndex: jest.fn(), sub_section_index: 0, toggleReadyToDepositModal: jest.fn(), - is_tablet: false, is_ready_to_deposit_modal_visible: false, is_real_acc_signup_on: false, is_need_real_account_for_cashier_modal_visible: false, - is_chart_layout_default: false, toggleNeedRealAccountForCashierModal: jest.fn(), - setAppContentsScrollRef: jest.fn(), is_switch_to_deriv_account_modal_visible: false, openSwitchToRealAccountModal: jest.fn(), is_top_up_virtual_open: false, @@ -391,14 +415,10 @@ const mock = (): TStores & { is_mock: boolean } => { login: '', account_id: '', }, - handleTabItemClick: jest.fn(), - is_account_transfer_modal_open: false, is_eu_user: false, is_demo: false, setIsOnboardingVisited: jest.fn(), is_real: false, - is_regulators_compare_modal_visible: false, - is_tour_open: false, selectRegion: jest.fn(), setSelectedAccount: jest.fn(), is_low_risk_cr_eu_real: false, @@ -475,30 +495,56 @@ const mock = (): TStores & { is_mock: boolean } => { setP2POrderProps: jest.fn(), setP2PRedirectTo: jest.fn(), showAccountSwitchToRealNotification: jest.fn(), + setShouldShowPopups: jest.fn(), toggleNotificationsModal: jest.fn(), }, portfolio: { active_positions: [], + active_positions_count: 0, all_positions: [], + barriers: [], error: '', getPositionById: jest.fn(), is_loading: false, is_accumulator: false, is_multiplier: false, is_turbos: false, + onBuyResponse: jest.fn(), onClickCancel: jest.fn(), onClickSell: jest.fn(), onMount: jest.fn(), + open_accu_contract: null, positions: [], removePositionById: jest.fn(), + setContractType: jest.fn(), }, contract_trade: { - contract_info: {}, - contract_update_stop_loss: '', - contract_update_take_profit: '', - has_contract_update_stop_loss: false, - has_contract_update_take_profit: false, + accountSwitchListener: jest.fn(), + accu_barriers_timeout_id: null, + accumulator_barriers_data: {}, + accumulator_contract_barriers_data: {}, + addContract: jest.fn(), + chart_type: '', + clearAccumulatorBarriersData: jest.fn(), + clearError: jest.fn(), + contracts: [], + error_message: '', getContractById: jest.fn(), + granularity: 0, + has_crossed_accu_barriers: false, + has_error: false, + last_contract: {}, + markers_array: [], + onUnmount: jest.fn(), + prev_chart_type: '', + prev_granularity: null, + removeContract: jest.fn(), + savePreviousChartMode: jest.fn(), + setNewAccumulatorBarriersData: jest.fn(), + updateAccumulatorBarriersData: jest.fn(), + updateChartType: jest.fn(), + updateGranularity: jest.fn(), + updateProposal: jest.fn(), }, modules: {}, exchange_rates: { @@ -527,9 +573,20 @@ const mock = (): TStores & { is_mock: boolean } => { setLoginFlag: jest.fn(), }, pushwoosh: {}, - contract_replay: {}, + contract_replay: { + contract_store: { + contract_info: {}, + digits_info: {}, + display_status: '', + is_digit_contract: false, + is_ended: false, + }, + }, chart_barrier_store: {}, - active_symbols: {}, + active_symbols: { + active_symbols: [], + setActiveSymbols: jest.fn(), + }, }; }; diff --git a/packages/stores/types.ts b/packages/stores/types.ts index 0f5300347805..556de4fbc932 100644 --- a/packages/stores/types.ts +++ b/packages/stores/types.ts @@ -5,7 +5,6 @@ import type { AccountLimitsResponse, Authorize, ContractUpdate, - ContractUpdateHistory, DetailsOfEachMT5Loginid, GetAccountStatus, GetLimits, @@ -18,7 +17,10 @@ import type { SetFinancialAssessmentRequest, SetFinancialAssessmentResponse, StatesList, + WebsiteStatus, + ContractUpdateHistory, Transaction, + ActiveSymbols, } from '@deriv/api-types'; import type { ExchangeRatesStore, FeatureFlagsStore } from './src/stores'; @@ -239,11 +241,11 @@ type TAvailableCFDAccounts = { type TAuthenticationStatus = { document_status: string; identity_status: string }; type TAddToastProps = { - key: string; + key?: string; content: string | React.ReactNode; - is_bottom?: boolean; timeout?: number; - type: string; + is_bottom?: boolean; + type?: string; }; type TButtonProps = { @@ -316,6 +318,15 @@ type TDXTraderStatusServerType = Record<'all' | 'demo' | 'real', number>; type TMt5StatusServer = Record<'demo' | 'real', TMt5StatusServerType[]>; +type RealAccountSignupSettings = { + active_modal_index: number; + current_currency: string; + error_code?: string; + error_details?: string | Record; + error_message: string; + previous_currency: string; + success_message: string; +}; type TCountryStandpoint = { is_belgium: boolean; is_france: boolean; @@ -338,9 +349,10 @@ type TClientStore = { }; account_list: TAccountsList; account_status: GetAccountStatus; - available_crypto_currencies: string[]; + available_crypto_currencies: Array; balance?: string | number; can_change_fiat_currency: boolean; + clients_country: string; cfd_score: number; setCFDScore: (score: number) => void; country_standpoint: TCountryStandpoint; @@ -361,9 +373,12 @@ type TClientStore = { is_eu_country: boolean; is_eu: boolean; is_uk: boolean; + is_unwelcome: boolean; + is_single_currency: boolean; is_social_signup: boolean; has_residence: boolean; is_authorize: boolean; + is_dxtrade_password_not_set: boolean; is_financial_account: boolean; is_financial_assessment_needed: boolean; is_financial_information_incomplete: boolean; @@ -372,8 +387,9 @@ type TClientStore = { is_logged_in: boolean; is_logging_in: boolean; is_low_risk: boolean; + is_mt5_password_not_set: boolean; is_pending_proof_of_ownership: boolean; - is_single_currency: boolean; + is_populating_dxtrade_account_list: boolean; is_switching: boolean; is_tnc_needed: boolean; is_high_risk: boolean; @@ -382,7 +398,6 @@ type TClientStore = { is_withdrawal_lock: boolean; landing_company_shortcode: string; is_populating_account_list: boolean; - is_language_loaded: boolean; local_currency_config: { currency: string; decimal_places?: number; @@ -403,6 +418,7 @@ type TClientStore = { standpoint: TStandPoint; setAccountStatus: (status?: GetAccountStatus) => void; setBalanceOtherAccounts: (balance: number) => void; + selectCurrency: (currency: string) => void; setInitialized: (status?: boolean) => void; setLogout: (status?: boolean) => void; setVisibilityRealityCheck: (value: boolean) => void; @@ -410,9 +426,11 @@ type TClientStore = { setPreSwitchAccount: (status?: boolean) => void; switchAccount: (value?: string) => Promise; setLoginInformation: (client_accounts: { [k: string]: TActiveAccount }, client_id: string) => void; + social_identity_provider: string; switched: boolean; switch_broadcast: boolean; switchEndSignal: () => void; + upgradeable_currencies: Array; verification_code: { payment_agent_withdraw: string; payment_withdraw: string; @@ -465,6 +483,7 @@ type TClientStore = { has_account_error_in_mt5_demo_list: boolean; has_account_error_in_dxtrade_real_list: boolean; has_account_error_in_dxtrade_demo_list: boolean; + has_fiat: boolean; is_fully_authenticated: boolean; states_list: StatesList; /** @deprecated Use `useCurrencyConfig` or `useCurrentCurrencyConfig` from `@deriv/hooks` package instead. */ @@ -487,19 +506,17 @@ type TClientStore = { setFinancialAndTradingAssessment: ( payload: SetFinancialAssessmentRequest ) => Promise; - prev_account_type: string; }; type TCommonStoreError = { - app_routing_history?: TAppRoutingHistory[]; - header: string | JSX.Element; + header?: string | JSX.Element; message: string | JSX.Element; - redirect_label: string; + redirect_label?: string; redirect_to?: string; - redirectOnClick: (() => void) | null; - setError?: (has_error: boolean, error: React.ReactNode | null) => void; + redirectOnClick?: (() => void) | null; should_clear_error_on_click?: boolean; - should_show_refresh: boolean; + should_redirect?: boolean; + should_show_refresh?: boolean; type?: string; }; type TCommonStoreServicesError = { @@ -517,7 +534,7 @@ type TCommonStore = { platform: 'dxtrade' | 'derivez' | 'mt5' | 'ctrader' | ''; routeBackInApp: (history: Pick, additional_platform_path?: string[]) => void; routeTo: (pathname: string) => void; - server_time?: Moment; + server_time: Moment; changeCurrentLanguage: (new_language: string) => void; changeSelectedLanguage: (key: string) => void; current_language: string; @@ -525,6 +542,10 @@ type TCommonStore = { services_error: TCommonStoreServicesError; is_socket_opened: boolean; setAppstorePlatform: (value: string) => void; + setError?: (has_error: boolean, error: TCommonStoreError) => void; + setSelectedContractType: (contract_type: string) => void; + setServicesError: (error: TCommonStoreServicesError) => void; + showError: (error: TCommonStoreError) => void; app_routing_history: TAppRoutingHistory[]; getExchangeRate: (from_currency: string, to_currency: string) => Promise; network_status: Record | { [key: string]: string }; @@ -542,20 +563,27 @@ type TUiStore = { has_real_account_signup_ended: boolean; header_extension: JSX.Element | null; is_account_settings_visible: boolean; - is_loading: boolean; + is_advanced_duration: boolean; is_cashier_visible: boolean; is_wallet_modal_visible: boolean; + is_chart_asset_info_visible?: boolean; + is_chart_layout_default: boolean; is_closing_create_real_account_modal: boolean; is_dark_mode_on: boolean; + is_loading: boolean; is_reports_visible: boolean; is_route_modal_on: boolean; is_language_settings_modal_on: boolean; + is_desktop: boolean; is_app_disabled: boolean; is_link_expired_modal_visible: boolean; is_mobile: boolean; + is_tablet: boolean; + is_mobile_language_menu_open: boolean; is_positions_drawer_on: boolean; is_services_error_visible: boolean; is_unsupported_contract_modal_visible: boolean; + openPositionsDrawer: () => void; openRealAccountSignup: ( value: 'maltainvest' | 'svg' | 'add_crypto' | 'choose' | 'add_fiat' | 'set_currency' | 'manage' ) => void; @@ -571,11 +599,13 @@ type TUiStore = { ] | [] ) => void; + resetPurchaseStates: () => void; setAppContentsScrollRef: (ref: React.MutableRefObject) => void; setCurrentFocus: (value: string | null) => void; setDarkMode: (is_dark_mode_on: boolean) => boolean; setIsWalletModalVisible: (value: boolean) => void; - setHasOnlyForwardingContracts: (has_only_forward_starting_contracts: boolean) => void; + setHasOnlyForwardingContracts: (has_only_forward_starting_contracts?: boolean) => void; + setMobileLanguageMenuOpen: (is_mobile_language_menu_open: boolean) => void; setReportsTabIndex: (value: number) => void; setIsClosingCreateRealAccountModal: (value: boolean) => void; setRealAccountSignupEnd: (status: boolean) => void; @@ -593,7 +623,6 @@ type TUiStore = { toggleServicesErrorModal: (is_visible: boolean) => void; toggleSetCurrencyModal: () => void; toggleShouldShowRealAccountsList: (value: boolean) => void; - is_tablet: boolean; removeToast: (key: string) => void; is_ready_to_deposit_modal_visible: boolean; reports_route_tab_index: number; @@ -603,7 +632,6 @@ type TUiStore = { toggleReports: (is_visible: boolean) => void; is_real_acc_signup_on: boolean; is_need_real_account_for_cashier_modal_visible: boolean; - is_chart_layout_default: boolean; toggleNeedRealAccountForCashierModal: () => void; is_switch_to_deriv_account_modal_visible: boolean; openSwitchToRealAccountModal: () => void; @@ -611,6 +639,7 @@ type TUiStore = { is_top_up_virtual_open: boolean; is_top_up_virtual_in_progress: boolean; is_top_up_virtual_success: boolean; + real_account_signup_target: string; closeSuccessTopUpModal: () => void; closeTopUpModal: () => void; is_cfd_reset_password_modal_enabled: boolean; @@ -619,6 +648,8 @@ type TUiStore = { is_accounts_switcher_on: boolean; openTopUpModal: () => void; is_reset_trading_password_modal_visible: boolean; + real_account_signup: RealAccountSignupSettings; + resetRealAccountSignupParams: () => void; setResetTradingPasswordModalOpen: () => void; populateHeaderExtensions: (header_items: JSX.Element | null) => void; populateSettingsExtensions: (menu_items: Array | null) => void; @@ -629,27 +660,137 @@ type TUiStore = { type TPortfolioStore = { active_positions: TPortfolioPosition[]; + active_positions_count: number; all_positions: TPortfolioPosition[]; + barriers: TBarriers; error: string; getPositionById: (id: number) => TPortfolioPosition; is_loading: boolean; is_multiplier: boolean; is_accumulator: boolean; is_turbos: boolean; + onBuyResponse: (contract_info: { contract_id: number; longcode: string; contract_type: string }) => void; onClickCancel: (contract_id?: number) => void; onClickSell: (contract_id?: number) => void; onMount: () => void; + open_accu_contract: TPortfolioPosition | null; positions: TPortfolioPosition[]; removePositionById: (id: number) => void; -}; - + setContractType: (contract_type: string) => void; +}; + +type TAccumulatorBarriersData = { + current_spot: number; + current_spot_time: number; + tick_update_timestamp: number; + accumulators_high_barrier: string; + accumulators_low_barrier: string; + barrier_spot_distance: string; + previous_spot_time: number; +}; +type TAccumulatorContractBarriersData = TAccumulatorBarriersData & { + should_update_contract_barriers: boolean; +}; +type TAddContractParams = { + barrier: number | null; + contract_id: number; + contract_type: string; + start_time: number; + longcode: string; + underlying: string; + is_tick_contract: boolean; + limit_order?: ProposalOpenContract['limit_order']; +}; +type TOnChartBarrierChange = null | ((barrier_1: string, barrier_2?: string) => void); +type TOnChangeParams = { high: string | number; low?: string | number }; +type TBarriers = Array<{ + color: string; + lineStyle: string; + shade?: string; + shadeColor?: string; + high?: string | number; + low?: string | number; + onChange: (barriers: TOnChangeParams) => void; + relative: boolean; + draggable: boolean; + hidePriceLines: boolean; + hideBarrierLine?: boolean; + hideOffscreenLine?: boolean; + title?: string; + onChartBarrierChange: TOnChartBarrierChange | null; + key?: string; + hideOffscreenBarrier?: boolean; + isSingleBarrier?: boolean; + onBarrierChange: (barriers: TOnChangeParams) => void; + updateBarrierColor: (is_dark_mode: boolean) => void; + updateBarriers: (high: string | number, low?: string | number, isFromChart?: boolean) => void; + updateBarrierShade: (should_display: boolean, contract_type: string) => void; + barrier_count: number; + default_shade: string; +}>; type TContractTradeStore = { - contract_info: TPortfolioPosition['contract_info']; - contract_update_stop_loss: string; - contract_update_take_profit: string; - getContractById: (id: number) => TContractStore; - has_contract_update_stop_loss: boolean; - has_contract_update_take_profit: boolean; + accountSwitchListener: () => Promise; + accu_barriers_timeout_id: NodeJS.Timeout | null; + accumulator_barriers_data: Partial; + accumulator_contract_barriers_data: Partial; + addContract: ({ + barrier, + contract_id, + contract_type, + start_time, + longcode, + underlying, + is_tick_contract, + limit_order, + }: TAddContractParams) => void; + chart_type: string; + clearAccumulatorBarriersData: (should_clear_contract_data_only?: boolean, should_clear_timeout?: boolean) => void; + clearError: () => void; + contracts: TContractStore[]; + error_message: string; + getContractById: (contract_id?: number) => TContractStore; + granularity: null | number; + has_crossed_accu_barriers: boolean; + has_error: boolean; + last_contract: TContractStore | Record; + markers_array: Array<{ + type: string; + contract_info: { + accu_barriers_difference: + | boolean + | { + top: string; + bottom: string; + font: string; + }; + has_crossed_accu_barriers: boolean; + is_accumulator_trade_without_contract: boolean; + }; + key: string; + price_array: [string, string]; + epoch_array: [number]; + }>; + onUnmount: () => void; + prev_chart_type: string; + prev_granularity: number | null; + removeContract: (data: { contract_id: string }) => void; + savePreviousChartMode: (chart_type: string, granularity: number | null) => void; + setNewAccumulatorBarriersData: ( + new_barriers_data: TAccumulatorBarriersData, + should_update_contract_barriers?: boolean + ) => void; + updateAccumulatorBarriersData: ({ + accumulators_high_barrier, + accumulators_low_barrier, + barrier_spot_distance, + current_spot, + current_spot_time, + should_update_contract_barriers, + underlying, + }: Partial) => void; + updateChartType: (type: string) => void; + updateGranularity: (granularity: number) => void; + updateProposal: (response: ProposalOpenContract) => void; }; type TContractStore = { @@ -686,9 +827,15 @@ type TNotificationStore = { setP2POrderProps: () => void; setP2PRedirectTo: () => void; showAccountSwitchToRealNotification: (loginid: string, currency: string) => void; + setShouldShowPopups: (should_show_popups: boolean) => void; toggleNotificationsModal: () => void; }; +type TActiveSymbolsStore = { + active_symbols: ActiveSymbols; + setActiveSymbols: () => Promise; +}; + type TBalance = { currency: string; balance: number; @@ -722,8 +869,6 @@ type TTradersHubStore = { login: string; account_id: string; }; - handleTabItemClick: (idx: number) => void; - is_account_transfer_modal_open: boolean; is_low_risk_cr_eu_real: boolean; is_eu_user: boolean; setIsOnboardingVisited: (is_visited: boolean) => void; @@ -731,8 +876,6 @@ type TTradersHubStore = { setTogglePlatformType: (platform_type: string) => void; is_demo: boolean; is_real: boolean; - is_regulators_compare_modal_visible: boolean; - is_tour_open: boolean; selectRegion: (region: string) => void; closeAccountTransferModal: () => void; toggleRegulatorsCompareModal: () => void; @@ -778,6 +921,15 @@ type TTradersHubStore = { showTopUpModal: () => void; }; +type TContractReplay = { + contract_store: { + contract_info: TPortfolioPosition['contract_info']; + digits_info: { [key: number]: { digit: number; spot: string } }; + display_status: string; + is_digit_contract: boolean; + is_ended: boolean; + }; +}; type TGtmStore = { is_gtm_applicable: boolean; visitorId: Readonly; @@ -814,9 +966,9 @@ export type TCoreStores = { traders_hub: TTradersHubStore; gtm: TGtmStore; pushwoosh: Record; - contract_replay: Record; + contract_replay: TContractReplay; chart_barrier_store: Record; - active_symbols: Record; + active_symbols: TActiveSymbolsStore; }; export type TStores = TCoreStores & { diff --git a/packages/trader/build/constants.js b/packages/trader/build/constants.js index 1a8cab525725..2560c6ae2b60 100644 --- a/packages/trader/build/constants.js +++ b/packages/trader/build/constants.js @@ -42,6 +42,7 @@ const ALIASES = { Services: path.resolve(__dirname, '../src/Services'), Stores: path.resolve(__dirname, '../src/Stores'), Translations: path.resolve(__dirname, '../src/public/translations'), + Types: path.resolve(__dirname, '../src/Types'), Utils: path.resolve(__dirname, '../src/Utils'), }; diff --git a/packages/trader/package.json b/packages/trader/package.json index 452493ae28ae..dcb6682da3a1 100644 --- a/packages/trader/package.json +++ b/packages/trader/package.json @@ -87,7 +87,8 @@ "@deriv/analytics": "^1.0.0", "@deriv/components": "^1.0.0", "@deriv/deriv-api": "^1.0.13", - "@deriv/deriv-charts": "1.3.6", + "@deriv/api-types": "^1.0.118", + "@deriv/deriv-charts": "1.4.0", "@deriv/reports": "^1.0.0", "@deriv/shared": "^1.0.0", "@deriv/stores": "^1.0.0", diff --git a/packages/trader/src/App/Components/Elements/ContractAudit/__tests__/contract-details.spec.js b/packages/trader/src/App/Components/Elements/ContractAudit/__tests__/contract-details.spec.tsx similarity index 85% rename from packages/trader/src/App/Components/Elements/ContractAudit/__tests__/contract-details.spec.js rename to packages/trader/src/App/Components/Elements/ContractAudit/__tests__/contract-details.spec.tsx index edea635534de..9f1b66141a40 100644 --- a/packages/trader/src/App/Components/Elements/ContractAudit/__tests__/contract-details.spec.js +++ b/packages/trader/src/App/Components/Elements/ContractAudit/__tests__/contract-details.spec.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { screen, render } from '@testing-library/react'; +import { TContractInfo } from '@deriv/shared'; import ContractDetails from '../contract-details'; describe('ContractDetails', () => { @@ -46,27 +47,27 @@ describe('ContractDetails', () => { }; it('renders the ContractAuditItems specific to Vanilla component when is_vanilla is true', () => { - const wrapper = render( + render( ); - expect(wrapper.queryAllByTestId('dt_bt_label')).toHaveLength(2); + expect(screen.queryAllByTestId('dt_bt_label')).toHaveLength(2); }); it('renders the Payout per point label when is_vanilla is true', () => { render( ); diff --git a/packages/trader/src/App/Components/Elements/ContractAudit/contract-audit-item.jsx b/packages/trader/src/App/Components/Elements/ContractAudit/contract-audit-item.tsx similarity index 80% rename from packages/trader/src/App/Components/Elements/ContractAudit/contract-audit-item.jsx rename to packages/trader/src/App/Components/Elements/ContractAudit/contract-audit-item.tsx index efd400b90269..9fbee190778f 100644 --- a/packages/trader/src/App/Components/Elements/ContractAudit/contract-audit-item.jsx +++ b/packages/trader/src/App/Components/Elements/ContractAudit/contract-audit-item.tsx @@ -1,9 +1,17 @@ -import PropTypes from 'prop-types'; import React from 'react'; import { formatDate, formatTime } from '@deriv/shared'; import { Text } from '@deriv/components'; -const ContractAuditItem = ({ icon, id, label, timestamp, value, value2 }) => ( +type TContractAuditItem = { + icon?: React.ReactNode; + id: string; + label?: string; + timestamp?: number; + value: React.ReactNode; + value2?: React.ReactNode; +}; + +const ContractAuditItem = ({ icon, id, label, timestamp, value, value2 }: TContractAuditItem) => (
{icon &&
{icon}
}
@@ -34,13 +42,4 @@ const ContractAuditItem = ({ icon, id, label, timestamp, value, value2 }) => (
); -ContractAuditItem.propTypes = { - icon: PropTypes.node, - id: PropTypes.string, - label: PropTypes.string, - timestamp: PropTypes.string, - value: PropTypes.PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.node]), - value2: PropTypes.PropTypes.oneOfType([PropTypes.number, PropTypes.string]), -}; - export default ContractAuditItem; diff --git a/packages/trader/src/App/Components/Elements/ContractAudit/contract-audit.jsx b/packages/trader/src/App/Components/Elements/ContractAudit/contract-audit.tsx similarity index 55% rename from packages/trader/src/App/Components/Elements/ContractAudit/contract-audit.jsx rename to packages/trader/src/App/Components/Elements/ContractAudit/contract-audit.tsx index 24daae7534b5..aaee80ca2f55 100644 --- a/packages/trader/src/App/Components/Elements/ContractAudit/contract-audit.jsx +++ b/packages/trader/src/App/Components/Elements/ContractAudit/contract-audit.tsx @@ -1,35 +1,56 @@ -import PropTypes from 'prop-types'; import React from 'react'; import { Tabs } from '@deriv/components'; import { localize } from '@deriv/translations'; -import { WS } from '@deriv/shared'; +import { WS, TContractStore, TContractInfo } from '@deriv/shared'; +import { useTraderStore } from 'Stores/useTraderStores'; import ContractDetails from './contract-details'; -import ContractHistory from './contract-history.jsx'; +import ContractHistory from './contract-history'; + +type TContractUpdateHistory = TContractStore['contract_update_history']; + +type TContractAudit = Partial< + Pick, 'is_accumulator' | 'is_turbos' | 'is_multiplier' | 'is_vanilla'> +> & { + contract_update_history: TContractUpdateHistory; + contract_end_time: number | undefined; + contract_info: TContractInfo; + duration: string | number; + duration_unit: string; + exit_spot: string | undefined; + has_result: boolean; + is_dark_theme: boolean; + is_open: boolean; + toggleHistoryTab: (state_change?: boolean) => void; +}; + +type TResponse = { + contract_update_history: TContractUpdateHistory; +}; const ContractAudit = ({ contract_update_history, has_result, is_accumulator, is_multiplier, - is_smarttrader_contract, is_turbos, toggleHistoryTab, ...props -}) => { +}: TContractAudit) => { const { contract_id, currency } = props.contract_info; - const [update_history, setUpdateHistory] = React.useState([]); + const [update_history, setUpdateHistory] = React.useState([]); - const getSortedUpdateHistory = history => history.sort((a, b) => b.order_date - a.order_date); + const getSortedUpdateHistory = (history: TContractUpdateHistory) => + history.sort((a, b) => Number(b?.order_date) - Number(a?.order_date)); React.useEffect(() => { if (!!contract_update_history.length && contract_update_history.length > update_history.length) setUpdateHistory(getSortedUpdateHistory(contract_update_history)); }, [contract_update_history, update_history]); - const onTabItemClick = tab_index => { - toggleHistoryTab(tab_index); + const onTabItemClick = (tab_index: number) => { + toggleHistoryTab(!!tab_index); if (tab_index) { - WS.contractUpdateHistory(contract_id).then(response => { + WS.contractUpdateHistory(contract_id).then((response: TResponse) => { setUpdateHistory(getSortedUpdateHistory(response.contract_update_history)); }); } @@ -58,15 +79,4 @@ const ContractAudit = ({ ); }; -ContractAudit.propTypes = { - contract_info: PropTypes.object, - contract_update_history: PropTypes.array, - has_result: PropTypes.bool, - is_accumulator: PropTypes.bool, - is_multiplier: PropTypes.bool, - is_smarttrader_contract: PropTypes.bool, - is_turbos: PropTypes.bool, - toggleHistoryTab: PropTypes.func, -}; - export default ContractAudit; diff --git a/packages/trader/src/App/Components/Elements/ContractAudit/contract-details.jsx b/packages/trader/src/App/Components/Elements/ContractAudit/contract-details.tsx similarity index 82% rename from packages/trader/src/App/Components/Elements/ContractAudit/contract-details.jsx rename to packages/trader/src/App/Components/Elements/ContractAudit/contract-details.tsx index 51e4083bdccf..236fd691cc62 100644 --- a/packages/trader/src/App/Components/Elements/ContractAudit/contract-details.jsx +++ b/packages/trader/src/App/Components/Elements/ContractAudit/contract-details.tsx @@ -1,4 +1,3 @@ -import PropTypes from 'prop-types'; import React from 'react'; import { Money, Icon, ThemedScrollbars } from '@deriv/components'; import { localize } from '@deriv/translations'; @@ -17,6 +16,7 @@ import { isEndedBeforeCancellationExpired, isUserCancelled, toGMTFormat, + TContractInfo, } from '@deriv/shared'; import { addCommaToNumber, @@ -24,10 +24,26 @@ import { getBarrierValue, isDigitType, } from 'App/Components/Elements/PositionsDrawer/helpers'; -import ContractAuditItem from './contract-audit-item.jsx'; +import ContractAuditItem from './contract-audit-item'; import { isCancellationExpired } from 'Stores/Modules/Trading/Helpers/logic'; -const ContractDetails = ({ contract_end_time, contract_info, duration, duration_unit, exit_spot, is_vanilla }) => { +type TContractDetails = { + contract_end_time?: number; + contract_info: TContractInfo; + duration: number | string; + duration_unit: string; + exit_spot?: string; + is_vanilla?: boolean; +}; + +const ContractDetails = ({ + contract_end_time, + contract_info, + duration, + duration_unit, + exit_spot, + is_vanilla, +}: TContractDetails) => { const { commission, contract_type, @@ -45,15 +61,16 @@ const ContractDetails = ({ contract_end_time, contract_info, duration, duration_ display_number_of_contracts, } = contract_info; - const is_profit = profit >= 0; + const is_profit = Number(profit) >= 0; const cancellation_price = getCancellationPrice(contract_info); const show_barrier = !is_vanilla && !isAccumulatorContract(contract_type) && !isSmartTraderContract(contract_type); - const show_duration = !isAccumulatorContract(contract_type) || !isNaN(contract_end_time); + const show_duration = !isAccumulatorContract(contract_type) || !isNaN(Number(contract_end_time)); const show_payout_per_point = isTurbosContract(contract_type) || is_vanilla; + const ticks_label = Number(tick_count) < 2 ? localize('tick') : localize('ticks'); const show_strike_barrier = is_vanilla || isAsiansContract(contract_type); const ticks_duration_text = isAccumulatorContract(contract_type) ? `${tick_passed}/${tick_count} ${localize('ticks')}` - : `${tick_count} ${tick_count < 2 ? localize('tick') : localize('ticks')}`; + : `${tick_count} ${ticks_label}`; const getLabel = () => { if (isUserSold(contract_info) && isEndedBeforeCancellationExpired(contract_info)) @@ -62,7 +79,6 @@ const ContractDetails = ({ contract_end_time, contract_info, duration, duration_ if (isCancellationExpired(contract_info)) return localize('Deal cancellation (expired)'); return localize('Deal cancellation (active)'); }; - return (
@@ -79,7 +95,7 @@ const ContractDetails = ({ contract_end_time, contract_info, duration, duration_ id='dt_commission_label' icon={} label={localize('Commission')} - value={} + value={} /> {!!cancellation_price && ( } label={localize('Duration')} - value={tick_count > 0 ? ticks_duration_text : `${duration} ${duration_unit}`} + value={Number(tick_count) > 0 ? ticks_duration_text : `${duration} ${duration_unit}`} /> )} {show_strike_barrier && ( @@ -144,7 +160,11 @@ const ContractDetails = ({ contract_end_time, contract_info, duration, duration_ id='dt_bt_label' icon={} label={localize('Payout per point')} - value={`${display_number_of_contracts} ${getCurrencyDisplayCode(currency)}` || ' - '} + value={ + display_number_of_contracts + ? `${display_number_of_contracts} ${getCurrencyDisplayCode(currency)}` + : ' - ' + } /> )} @@ -153,7 +173,7 @@ const ContractDetails = ({ contract_end_time, contract_info, duration, duration_ id='dt_start_time_label' icon={} label={localize('Start time')} - value={toGMTFormat(epochToMoment(date_start)) || ' - '} + value={toGMTFormat(epochToMoment(Number(date_start))) || ' - '} /> {!isDigitType(contract_type) && ( } label={localize('Entry spot')} value={addCommaToNumber(entry_spot_display_value) || ' - '} - value2={toGMTFormat(epochToMoment(entry_tick_time)) || ' - '} + value2={toGMTFormat(epochToMoment(Number(entry_tick_time))) || ' - '} /> )} - {!isNaN(exit_spot) && ( + {!isNaN(Number(exit_spot)) && ( } label={localize('Exit spot')} value={addCommaToNumber(exit_spot) || ' - '} - value2={toGMTFormat(epochToMoment(exit_tick_time)) || ' - '} + value2={toGMTFormat(epochToMoment(Number(exit_tick_time))) || ' - '} /> )} - {!isNaN(contract_end_time) && ( + {!isNaN(Number(contract_end_time)) && ( } label={localize('Exit time')} - value={toGMTFormat(epochToMoment(contract_end_time)) || ' - '} + value={toGMTFormat(epochToMoment(Number(contract_end_time))) || ' - '} /> )}
@@ -186,14 +206,4 @@ const ContractDetails = ({ contract_end_time, contract_info, duration, duration_ ); }; -ContractDetails.propTypes = { - contract_end_time: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - contract_info: PropTypes.object, - date_start: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - duration: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - duration_unit: PropTypes.string, - exit_spot: PropTypes.string, - is_vanilla: PropTypes.bool, -}; - export default ContractDetails; diff --git a/packages/trader/src/App/Components/Elements/ContractAudit/contract-history.jsx b/packages/trader/src/App/Components/Elements/ContractAudit/contract-history.tsx similarity index 75% rename from packages/trader/src/App/Components/Elements/ContractAudit/contract-history.jsx rename to packages/trader/src/App/Components/Elements/ContractAudit/contract-history.tsx index 239c8ee4d8fc..af17015ee0a6 100644 --- a/packages/trader/src/App/Components/Elements/ContractAudit/contract-history.jsx +++ b/packages/trader/src/App/Components/Elements/ContractAudit/contract-history.tsx @@ -1,12 +1,14 @@ -import PropTypes from 'prop-types'; import React from 'react'; import { Icon, Money, ThemedScrollbars, Text } from '@deriv/components'; -import { isMobile } from '@deriv/shared'; - +import { isMobile, TContractStore } from '@deriv/shared'; import { localize } from '@deriv/translations'; -import ContractAuditItem from './contract-audit-item.jsx'; +import ContractAuditItem from './contract-audit-item'; -const ContractHistory = ({ currency, history = [] }) => { +type TContractHistory = { + currency?: string; + history: [] | TContractStore['contract_update_history']; +}; +const ContractHistory = ({ currency, history = [] }: TContractHistory) => { if (!history.length) { return (
@@ -23,14 +25,14 @@ const ContractHistory = ({ currency, history = [] }) => {
{history.map((item, key) => ( - {+item.order_amount < 0 && -} + {Number(item.order_amount) < 0 && -} {item.value && ( @@ -50,9 +52,4 @@ const ContractHistory = ({ currency, history = [] }) => { ); }; -ContractHistory.propTypes = { - currency: PropTypes.string, - history: PropTypes.array, -}; - export default ContractHistory; diff --git a/packages/trader/src/App/Components/Elements/ContractAudit/index.js b/packages/trader/src/App/Components/Elements/ContractAudit/index.js index 1cf766ffd8e6..5051cc70b69f 100644 --- a/packages/trader/src/App/Components/Elements/ContractAudit/index.js +++ b/packages/trader/src/App/Components/Elements/ContractAudit/index.js @@ -1,3 +1,3 @@ -import ContractAudit from './contract-audit.jsx'; +import ContractAudit from './contract-audit'; export default ContractAudit; diff --git a/packages/trader/src/App/Components/Elements/ContractDrawer/contract-drawer-card.jsx b/packages/trader/src/App/Components/Elements/ContractDrawer/contract-drawer-card.tsx similarity index 80% rename from packages/trader/src/App/Components/Elements/ContractDrawer/contract-drawer-card.jsx rename to packages/trader/src/App/Components/Elements/ContractDrawer/contract-drawer-card.tsx index 3bac2237f157..9b8709b0b4a2 100644 --- a/packages/trader/src/App/Components/Elements/ContractDrawer/contract-drawer-card.jsx +++ b/packages/trader/src/App/Components/Elements/ContractDrawer/contract-drawer-card.tsx @@ -1,5 +1,4 @@ import classNames from 'classnames'; -import PropTypes from 'prop-types'; import React from 'react'; import { DesktopWrapper, MobileWrapper, Collapsible, ContractCard, useHover } from '@deriv/components'; import { @@ -9,18 +8,45 @@ import { getContractTypeDisplay, isCryptoContract, isDesktop, + toMoment, } from '@deriv/shared'; import { getMarketInformation } from 'Utils/Helpers/market-underlying'; -import { SwipeableContractDrawer } from './swipeable-components.jsx'; -import MarketClosedContractOverlay from './market-closed-contract-overlay.jsx'; +import { SwipeableContractDrawer } from './swipeable-components'; +import MarketClosedContractOverlay from './market-closed-contract-overlay'; import { useTraderStore } from 'Stores/useTraderStores'; import { observer, useStore } from '@deriv/stores'; +type TContractCardBodyProps = React.ComponentProps; +type TContractCardFooterProps = React.ComponentProps; +type TSwipeableContractDrawerProps = React.ComponentProps; + +type TContractDrawerCardProps = { + currency?: string; + is_collapsed: boolean; + is_market_closed: boolean; + is_smarttrader_contract: boolean; + result?: string; + server_time?: moment.Moment; + toggleContractAuditDrawer: () => void; +} & Pick< + TContractCardBodyProps, + | 'contract_info' + | 'contract_update' + | 'is_accumulator' + | 'is_mobile' + | 'is_multiplier' + | 'is_turbos' + | 'is_vanilla' + | 'status' +> & + Pick & + Pick; + const ContractDrawerCard = observer( ({ contract_info, contract_update, - currency, + currency = '', is_accumulator, is_collapsed, is_market_closed, @@ -35,10 +61,10 @@ const ContractDrawerCard = observer( onSwipedUp, onSwipedDown, result, - server_time, + server_time = toMoment(), status, toggleContractAuditDrawer, - }) => { + }: TContractDrawerCardProps) => { const { ui, contract_trade } = useStore(); const { active_symbols } = useTraderStore(); const { @@ -50,13 +76,13 @@ const ContractDrawerCard = observer( toggleCancellationWarning, } = ui; const { getContractById } = contract_trade; - const [hover_ref, should_hide_closed_overlay] = useHover(); + const [hover_ref, should_hide_closed_overlay] = useHover(); const { profit, validation_error } = contract_info; const is_sold = !!getEndTime(contract_info); const display_name = getSymbolDisplayName( active_symbols, - getMarketInformation(contract_info.shortcode).underlying + getMarketInformation(contract_info.shortcode || '').underlying ); const is_crypto = isCryptoContract(contract_info.underlying); @@ -83,7 +109,7 @@ const ContractDrawerCard = observer( contract_info={contract_info} contract_update={contract_update} currency={currency} - current_focus={current_focus} + current_focus={current_focus ?? ''} getCardLabels={getCardLabels} getContractById={getContractById} is_accumulator={is_accumulator} @@ -97,7 +123,7 @@ const ContractDrawerCard = observer( server_time={server_time} setCurrentFocus={setCurrentFocus} should_show_cancellation_warning={should_show_cancellation_warning} - status={status} + status={status ?? ''} toggleCancellationWarning={toggleCancellationWarning} /> ); @@ -111,7 +137,6 @@ const ContractDrawerCard = observer( onClickCancel={onClickCancel} onClickSell={onClickSell} server_time={server_time} - status={status} /> ); @@ -127,13 +152,13 @@ const ContractDrawerCard = observer( contract_info={contract_info} getCardLabels={getCardLabels} is_multiplier={is_multiplier} - profit_loss={profit} + profit_loss={Number(profit)} should_show_result_overlay={false} >
0 && !result, - 'dc-contract-card--red': profit < 0 && !result, + 'dc-contract-card--green': Number(profit) > 0 && !result, + 'dc-contract-card--red': Number(profit) < 0 && !result, 'contract-card__market-closed--disabled': is_market_closed && should_hide_closed_overlay, })} ref={hover_ref} @@ -175,13 +200,4 @@ const ContractDrawerCard = observer( } ); -ContractDrawerCard.propTypes = { - currency: PropTypes.string, - is_accumulator: PropTypes.bool, - is_smarttrader_contract: PropTypes.bool, - is_collapsed: PropTypes.bool, - is_turbos: PropTypes.bool, - onClickCancel: PropTypes.func, - onClickSell: PropTypes.func, -}; export default ContractDrawerCard; diff --git a/packages/trader/src/App/Components/Elements/ContractDrawer/contract-drawer.jsx b/packages/trader/src/App/Components/Elements/ContractDrawer/contract-drawer.tsx similarity index 84% rename from packages/trader/src/App/Components/Elements/ContractDrawer/contract-drawer.jsx rename to packages/trader/src/App/Components/Elements/ContractDrawer/contract-drawer.tsx index 0d51eae66590..69045cc10ab8 100644 --- a/packages/trader/src/App/Components/Elements/ContractDrawer/contract-drawer.jsx +++ b/packages/trader/src/App/Components/Elements/ContractDrawer/contract-drawer.tsx @@ -1,7 +1,6 @@ import classNames from 'classnames'; -import PropTypes from 'prop-types'; import React from 'react'; -import { withRouter } from 'react-router'; +import { RouteComponentProps, withRouter } from 'react-router'; import { CSSTransition } from 'react-transition-group'; import { DesktopWrapper, MobileWrapper, Div100vhContainer } from '@deriv/components'; import { @@ -11,13 +10,35 @@ import { getDurationTime, getDurationUnitText, getEndTime, + TContractStore, } from '@deriv/shared'; import ContractAudit from 'App/Components/Elements/ContractAudit'; import { PositionsCardLoader } from 'App/Components/Elements/ContentLoader'; import ContractDrawerCard from './contract-drawer-card'; -import { SwipeableContractAudit } from './swipeable-components.jsx'; +import { SwipeableContractAudit } from './swipeable-components'; import { observer, useStore } from '@deriv/stores'; +type TContractDrawerCardProps = React.ComponentProps; +type TContractDrawerProps = RouteComponentProps & { + contract_update_history: TContractStore['contract_update_history']; + is_dark_theme: boolean; + toggleHistoryTab: (state_change?: boolean) => void; +} & Pick< + TContractDrawerCardProps, + | 'contract_info' + | 'contract_update' + | 'is_accumulator' + | 'is_market_closed' + | 'is_multiplier' + | 'is_sell_requested' + | 'is_smarttrader_contract' + | 'is_turbos' + | 'is_vanilla' + | 'onClickCancel' + | 'onClickSell' + | 'status' + >; + const ContractDrawer = observer( ({ contract_info, @@ -35,13 +56,13 @@ const ContractDrawer = observer( onClickSell, status, toggleHistoryTab, - }) => { + }: TContractDrawerProps) => { const { common, ui } = useStore(); const { server_time } = common; const { is_mobile } = ui; const { currency, exit_tick_display_value, is_sold } = contract_info; - const contract_drawer_ref = React.useRef(); - const contract_drawer_card_ref = React.useRef(); + const contract_drawer_ref = React.useRef(null); + const contract_drawer_card_ref = React.useRef(null); const [should_show_contract_audit, setShouldShowContractAudit] = React.useState(false); const exit_spot = isUserSold(contract_info) && !is_accumulator && !is_multiplier && !is_turbos @@ -56,7 +77,6 @@ const ContractDrawer = observer( is_accumulator={is_accumulator} is_dark_theme={is_dark_theme} is_multiplier={is_multiplier} - is_smarttrader_contract={is_smarttrader_contract} is_open is_turbos={is_turbos} duration={getDurationTime(contract_info)} @@ -102,7 +122,7 @@ const ContractDrawer = observer( ) : (
- +
); @@ -119,11 +139,10 @@ const ContractDrawer = observer( 'contract-drawer--is-multiplier-sold': is_multiplier && isMobile() && getEndTime(contract_info), })} style={{ - transform: - should_show_contract_audit && + transform: (should_show_contract_audit && contract_drawer_ref.current && contract_drawer_card_ref.current && - `translateY(calc(${contract_drawer_card_ref.current.clientHeight}px - ${contract_drawer_ref.current.clientHeight}px))`, + `translateY(calc(${contract_drawer_card_ref.current.clientHeight}px - ${contract_drawer_ref.current.clientHeight}px))`) as React.CSSProperties['transform'], }} ref={contract_drawer_ref} > @@ -162,13 +181,4 @@ const ContractDrawer = observer( } ); -ContractDrawer.propTypes = { - is_accumulator: PropTypes.bool, - is_multiplier: PropTypes.bool, - is_vanilla: PropTypes.bool, - is_smarttrader_contract: PropTypes.bool, - is_turbos: PropTypes.bool, - toggleHistoryTab: PropTypes.func, -}; - export default withRouter(ContractDrawer); diff --git a/packages/trader/src/App/Components/Elements/ContractDrawer/index.js b/packages/trader/src/App/Components/Elements/ContractDrawer/index.js deleted file mode 100644 index 34ed63b1b74e..000000000000 --- a/packages/trader/src/App/Components/Elements/ContractDrawer/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import ContractDrawer from './contract-drawer.jsx'; - -export default ContractDrawer; diff --git a/packages/trader/src/App/Components/Elements/ContractDrawer/index.ts b/packages/trader/src/App/Components/Elements/ContractDrawer/index.ts new file mode 100644 index 000000000000..563d551f3b95 --- /dev/null +++ b/packages/trader/src/App/Components/Elements/ContractDrawer/index.ts @@ -0,0 +1,3 @@ +import ContractDrawer from './contract-drawer'; + +export default ContractDrawer; diff --git a/packages/trader/src/App/Components/Elements/ContractDrawer/market-closed-contract-overlay.jsx b/packages/trader/src/App/Components/Elements/ContractDrawer/market-closed-contract-overlay.tsx similarity index 64% rename from packages/trader/src/App/Components/Elements/ContractDrawer/market-closed-contract-overlay.jsx rename to packages/trader/src/App/Components/Elements/ContractDrawer/market-closed-contract-overlay.tsx index 8d3d47aeb479..8538cd1de2c6 100644 --- a/packages/trader/src/App/Components/Elements/ContractDrawer/market-closed-contract-overlay.jsx +++ b/packages/trader/src/App/Components/Elements/ContractDrawer/market-closed-contract-overlay.tsx @@ -1,8 +1,7 @@ import React from 'react'; -import PropTypes from 'prop-types'; import { Text } from '@deriv/components'; -const MarketClosedContractOverlay = ({ validation_error }) => ( +const MarketClosedContractOverlay = ({ validation_error }: { validation_error?: string }) => (
{validation_error} @@ -10,8 +9,4 @@ const MarketClosedContractOverlay = ({ validation_error }) => (
); -MarketClosedContractOverlay.propTypes = { - symbol: PropTypes.string, -}; - export default MarketClosedContractOverlay; diff --git a/packages/trader/src/App/Components/Elements/ContractDrawer/swipeable-components.jsx b/packages/trader/src/App/Components/Elements/ContractDrawer/swipeable-components.tsx similarity index 75% rename from packages/trader/src/App/Components/Elements/ContractDrawer/swipeable-components.jsx rename to packages/trader/src/App/Components/Elements/ContractDrawer/swipeable-components.tsx index 9b9e917c28b3..55aefd7f33e7 100644 --- a/packages/trader/src/App/Components/Elements/ContractDrawer/swipeable-components.jsx +++ b/packages/trader/src/App/Components/Elements/ContractDrawer/swipeable-components.tsx @@ -1,13 +1,21 @@ import classNames from 'classnames'; -import PropTypes from 'prop-types'; import React from 'react'; import ReactDOM from 'react-dom'; import { SwipeableWrapper } from '@deriv/components'; +type TSwipeableContractAuditProps = React.PropsWithChildren<{ + is_multiplier?: boolean; + onSwipedDown?: () => void; +}>; +type TSwipeableContractDrawerProps = React.PropsWithChildren<{ + onSwipedDown?: () => void; + onSwipedUp?: () => void; +}>; + /** * Swipeable components */ -export const SwipeableContractAudit = ({ is_multiplier, children, onSwipedDown }) => { +export const SwipeableContractAudit = ({ is_multiplier, children, onSwipedDown }: TSwipeableContractAuditProps) => { const swipe_handlers = SwipeableWrapper.useSwipeable({ onSwipedDown, }); @@ -31,13 +39,7 @@ export const SwipeableContractAudit = ({ is_multiplier, children, onSwipedDown } ); }; -SwipeableContractAudit.propTypes = { - is_multiplier: PropTypes.bool, - children: PropTypes.node, - onSwipedDown: PropTypes.func, -}; - -export const SwipeableContractDrawer = ({ children, onSwipedDown, onSwipedUp }) => { +export const SwipeableContractDrawer = ({ children, onSwipedDown, onSwipedUp }: TSwipeableContractDrawerProps) => { const swipe_handlers = SwipeableWrapper.useSwipeable({ onSwipedDown, onSwipedUp, @@ -45,9 +47,3 @@ export const SwipeableContractDrawer = ({ children, onSwipedDown, onSwipedUp }) return
{children}
; }; - -SwipeableContractDrawer.propTypes = { - children: PropTypes.node, - onSwipedDown: PropTypes.func, - onSwipedUp: PropTypes.func, -}; diff --git a/packages/trader/src/App/Components/Elements/TogglePositions/__tests__/toggle-positions-mobile.spec.tsx b/packages/trader/src/App/Components/Elements/TogglePositions/__tests__/toggle-positions-mobile.spec.tsx index cd2855ab77f7..025a84d9b56a 100644 --- a/packages/trader/src/App/Components/Elements/TogglePositions/__tests__/toggle-positions-mobile.spec.tsx +++ b/packages/trader/src/App/Components/Elements/TogglePositions/__tests__/toggle-positions-mobile.spec.tsx @@ -7,21 +7,53 @@ import { mockStore } from '@deriv/stores'; import { TCoreStores } from '@deriv/stores/types'; import { BrowserRouter } from 'react-router-dom'; -const default_mocked_props = { +const default_mocked_props: React.ComponentProps = { active_positions_count: 0, - filtered_positions: [], currency: 'USD', - disableApp: jest.fn(), - enableApp: jest.fn(), error: '', + filtered_positions: [ + { + contract_info: { + contract_id: 215925907928, + contract_type: 'CALL', + is_sold: 0, + shortcode: 'CALL_1HZ100V_76.33_1692187938_1692188838_S0P_0', + underlying: '1HZ100V', + }, + contract_update: {}, + display_name: 'Volatility 100 (1s) Index', + indicative: 29.55, + reference: 430851089968, + is_sell_requested: false, + is_unsupported: false, + profit_loss: -9.45, + }, + { + contract_info: { + contract_id: 2, + contract_type: 'PUT', + is_sold: 0, + shortcode: 'PUT_R_10_19.53_1691443887_1691444787_S0P_0', + underlying: 'R_100', + }, + contract_update: {}, + display_name: 'Volatility 100 (1s) Index', + indicative: 29.55, + reference: 430851089968, + is_sell_requested: false, + is_unsupported: false, + profit_loss: -9.45, + }, + ], is_empty: true, onClickSell: jest.fn(), onClickCancel: jest.fn(), - toggleUnsupportedContractModal: jest.fn(), }; + const default_mock_store = { ui: { togglePositionsDrawer: jest.fn(), + toggleUnsupportedContractModal: jest.fn(), is_positions_drawer_on: false, }, }; @@ -68,29 +100,47 @@ describe('TogglePositionsMobile component', () => { expect(screen.getByText(/You have no open positions for this asset./i)).toBeInTheDocument(); }); it('should display 2 positions when is_positions_drawer_on === true, is_empty === false, and has 2 active positions', () => { - const new_mocked_props = { + const new_mocked_props: React.ComponentProps = { active_positions_count: 2, + currency: 'USD', + error: '', filtered_positions: [ { contract_info: { - contract_id: '1', + contract_id: 1, contract_type: 'CALL', is_sold: 0, shortcode: 'CALL_R_10_19.54_1691443851_1691444751_S0P_0', underlying: 'R_100', }, + contract_update: {}, + display_name: 'Volatility 100 (1s) Index', + indicative: 29.55, + reference: 430851089968, + is_sell_requested: false, + is_unsupported: false, + profit_loss: -9.45, }, { contract_info: { - contract_id: '2', + contract_id: 2, contract_type: 'PUT', is_sold: 0, shortcode: 'PUT_R_10_19.53_1691443887_1691444787_S0P_0', underlying: 'R_100', }, + contract_update: {}, + display_name: 'Volatility 100 (1s) Index', + indicative: 29.55, + reference: 430851089968, + is_sell_requested: false, + is_unsupported: false, + profit_loss: -9.45, }, ], is_empty: false, + onClickSell: jest.fn(), + onClickCancel: jest.fn(), }; const mock_root_store = mockStore({ ...default_mock_store, @@ -101,29 +151,47 @@ describe('TogglePositionsMobile component', () => { expect(screen.getAllByText(/PositionsModalCard/i)).toHaveLength(2); }); it('should display 1 of 2 positions after closing the modal if one of the 2 positions is sold', async () => { - const new_mocked_props = { + const new_mocked_props: React.ComponentProps = { active_positions_count: 1, + currency: 'USD', + error: '', filtered_positions: [ { contract_info: { - contract_id: '1', + contract_id: 1, contract_type: 'CALL', is_sold: 0, shortcode: 'CALL_R_10_19.54_1691443851_1691444751_S0P_0', underlying: 'R_100', }, + contract_update: {}, + display_name: 'Volatility 100 (1s) Index', + indicative: 29.55, + reference: 430851089968, + is_sell_requested: false, + is_unsupported: false, + profit_loss: -9.45, }, { contract_info: { - contract_id: '2', + contract_id: 2, contract_type: 'PUT', is_sold: 1, shortcode: 'PUT_R_10_19.53_1691443887_1691444787_S0P_0', underlying: 'R_100', }, + contract_update: {}, + display_name: 'Volatility 100 (1s) Index', + indicative: 29.55, + reference: 430851089968, + is_sell_requested: false, + is_unsupported: false, + profit_loss: -9.45, }, ], is_empty: false, + onClickSell: jest.fn(), + onClickCancel: jest.fn(), }; const mock_root_store = mockStore({ ...default_mock_store, @@ -140,24 +208,38 @@ describe('TogglePositionsMobile component', () => { }); }); it('should display no more than 5 recent positions', () => { - const positions_pair = [ + const positions_pair: React.ComponentProps['filtered_positions'] = [ { contract_info: { - contract_id: '1', + contract_id: 1, contract_type: 'CALL', is_sold: 0, shortcode: 'CALL_R_10_19.54_1691443851_1691444751_S0P_0', underlying: 'R_100', }, + contract_update: {}, + display_name: 'Volatility 100 (1s) Index', + indicative: 29.55, + reference: 430851089968, + is_sell_requested: false, + is_unsupported: false, + profit_loss: -9.45, }, { contract_info: { - contract_id: '2', + contract_id: 2, contract_type: 'PUT', is_sold: 0, shortcode: 'PUT_R_10_19.53_1691443887_1691444787_S0P_0', underlying: 'R_100', }, + contract_update: {}, + display_name: 'Volatility 100 (1s) Index', + indicative: 29.55, + reference: 430851089968, + is_sell_requested: false, + is_unsupported: false, + profit_loss: -9.45, }, ]; const new_mocked_props = { diff --git a/packages/trader/src/App/Components/Elements/TogglePositions/__tests__/toggle-positions.spec.tsx b/packages/trader/src/App/Components/Elements/TogglePositions/__tests__/toggle-positions.spec.tsx index 19770e5e8bf3..20e13be8dd7a 100644 --- a/packages/trader/src/App/Components/Elements/TogglePositions/__tests__/toggle-positions.spec.tsx +++ b/packages/trader/src/App/Components/Elements/TogglePositions/__tests__/toggle-positions.spec.tsx @@ -1,29 +1,35 @@ import React from 'react'; import userEvent from '@testing-library/user-event'; import { render, screen } from '@testing-library/react'; -import TogglePositions from '../toggle-positions.jsx'; +import TogglePositions from '../toggle-positions'; + +const default_props = { + is_open: false, + positions_count: 0, + togglePositions: jest.fn(), +}; describe('TogglePositions component', () => { it('should have "positions-toggle--active" class when "is_open" is "true"', () => { - render(); + render(); expect(screen.getByTestId('dt_positions_toggle')).toHaveClass('positions-toggle--active'); }); it('should have "positions-toggle--has-count" class when "positions_count > 0"', () => { - render(); + render(); expect(screen.getByTestId('dt_positions_toggle')).toHaveClass('positions-toggle--has-count'); }); it('should call "togglePositions" when the user clicked on the link', () => { const mockTogglePositions = jest.fn(); - render(); + render(); const link = screen.getByTestId('dt_positions_toggle'); userEvent.click(link); expect(mockTogglePositions).toHaveBeenCalledTimes(1); }); it('should render "IcPortfolio" icon', () => { - render(); + render(); expect(screen.getByTestId('dt_icon')).toBeVisible(); }); }); diff --git a/packages/trader/src/App/Components/Elements/TogglePositions/index.js b/packages/trader/src/App/Components/Elements/TogglePositions/index.js index 117ed97b03fd..c97185e5654a 100644 --- a/packages/trader/src/App/Components/Elements/TogglePositions/index.js +++ b/packages/trader/src/App/Components/Elements/TogglePositions/index.js @@ -1,3 +1,3 @@ -import TogglePositions from './toggle-positions.jsx'; +import TogglePositions from './toggle-positions'; export default TogglePositions; diff --git a/packages/trader/src/App/Components/Elements/TogglePositions/toggle-positions-mobile.jsx b/packages/trader/src/App/Components/Elements/TogglePositions/toggle-positions-mobile.tsx similarity index 87% rename from packages/trader/src/App/Components/Elements/TogglePositions/toggle-positions-mobile.jsx rename to packages/trader/src/App/Components/Elements/TogglePositions/toggle-positions-mobile.tsx index d17e8ca51eed..eef96fdde3b9 100644 --- a/packages/trader/src/App/Components/Elements/TogglePositions/toggle-positions-mobile.jsx +++ b/packages/trader/src/App/Components/Elements/TogglePositions/toggle-positions-mobile.tsx @@ -6,24 +6,32 @@ import { localize } from '@deriv/translations'; import { NavLink } from 'react-router-dom'; import EmptyPortfolioMessage from '../EmptyPortfolioMessage'; import PositionsModalCard from 'App/Components/Elements/PositionsDrawer/positions-modal-card.jsx'; -import TogglePositions from './toggle-positions.jsx'; +import TogglePositions from './toggle-positions'; import { observer, useStore } from '@deriv/stores'; +type TTogglePositionsMobile = Pick< + ReturnType['portfolio'], + 'active_positions_count' | 'error' | 'onClickSell' | 'onClickCancel' +> & { + currency: ReturnType['client']['currency']; + filtered_positions: ReturnType['portfolio']['all_positions']; + is_empty: boolean; +}; + +type THiddenPositionsId = TTogglePositionsMobile['filtered_positions'][0]['id']; + const TogglePositionsMobile = observer( ({ active_positions_count, currency, - disableApp, - enableApp, error, filtered_positions, is_empty, onClickSell, onClickCancel, - toggleUnsupportedContractModal, - }) => { - const { togglePositionsDrawer, is_positions_drawer_on } = useStore().ui; - const [hidden_positions_ids, setHiddenPositionsIds] = React.useState([]); + }: TTogglePositionsMobile) => { + const { togglePositionsDrawer, toggleUnsupportedContractModal, is_positions_drawer_on } = useStore().ui; + const [hidden_positions_ids, setHiddenPositionsIds] = React.useState([]); const displayed_positions = filtered_positions .filter(p => hidden_positions_ids.every(hidden_position_id => hidden_position_id !== p.contract_info.contract_id) @@ -57,6 +65,7 @@ const TogglePositionsMobile = observer( unmountOnExit > diff --git a/packages/trader/src/App/Components/Elements/TogglePositions/toggle-positions.jsx b/packages/trader/src/App/Components/Elements/TogglePositions/toggle-positions.tsx similarity index 74% rename from packages/trader/src/App/Components/Elements/TogglePositions/toggle-positions.jsx rename to packages/trader/src/App/Components/Elements/TogglePositions/toggle-positions.tsx index c37fb05d11f0..7e7691372e11 100644 --- a/packages/trader/src/App/Components/Elements/TogglePositions/toggle-positions.jsx +++ b/packages/trader/src/App/Components/Elements/TogglePositions/toggle-positions.tsx @@ -1,10 +1,15 @@ import classNames from 'classnames'; -import PropTypes from 'prop-types'; import React from 'react'; import { Icon } from '@deriv/components'; import 'Sass/app/_common/components/positions-toggle.scss'; -const TogglePositions = ({ positions_count, is_open, togglePositions }) => { +type TTogglePositions = { + positions_count: number; + is_open: boolean; + togglePositions: () => void; +}; + +const TogglePositions = ({ positions_count, is_open, togglePositions }: TTogglePositions) => { const positions_toggle_class = classNames('positions-toggle', { 'positions-toggle--active': is_open, 'positions-toggle--has-count': positions_count > 0, @@ -22,12 +27,4 @@ const TogglePositions = ({ positions_count, is_open, togglePositions }) => { ); }; -TogglePositions.propTypes = { - is_open: PropTypes.bool, - is_positions_drawer_on: PropTypes.bool, - positions_count: PropTypes.number, - togglePositions: PropTypes.func, - togglePositionsDrawer: PropTypes.func, -}; - export default TogglePositions; diff --git a/packages/trader/src/App/Components/Elements/market-countdown-timer.jsx b/packages/trader/src/App/Components/Elements/market-countdown-timer.jsx deleted file mode 100644 index 833af29df84f..000000000000 --- a/packages/trader/src/App/Components/Elements/market-countdown-timer.jsx +++ /dev/null @@ -1,209 +0,0 @@ -import classNames from 'classnames'; -import React from 'react'; -import PropTypes from 'prop-types'; -import moment from 'moment'; -import { Text } from '@deriv/components'; -import { useIsMounted, WS, convertTimeFormat, isMarketClosed } from '@deriv/shared'; -import { Localize } from '@deriv/translations'; -import { observer } from '@deriv/stores'; -import { useTraderStore } from 'Stores/useTraderStores'; - -// check market in coming 7 days -const days_to_check_before_exit = 7; - -const getTradingTimes = async target_time => { - const data = await WS.tradingTimes(target_time); - if (data.error) { - return { api_initial_load_error: data.error.message }; - } - return data; -}; -// eslint-disable-next-line consistent-return -const getSymbol = (target_symbol, trading_times) => { - let symbol; - const { markets } = trading_times; - for (let i = 0; i < markets.length; i++) { - const { submarkets } = markets[i]; - for (let j = 0; j < submarkets.length; j++) { - const { symbols } = submarkets[j]; - symbol = symbols.find(item => item.symbol === target_symbol); - if (symbol !== undefined) return symbol; - } - } -}; - -const calculateTimeLeft = remaining_time_to_open => { - const difference = remaining_time_to_open - Date.now(); - return difference > 0 - ? { - days: Math.floor(difference / (1000 * 60 * 60 * 24)), - hours: Math.floor((difference / (1000 * 60 * 60)) % 24), - minutes: Math.floor((difference / 1000 / 60) % 60), - seconds: Math.floor((difference / 1000) % 60), - } - : {}; -}; - -const MarketCountdownTimer = observer(({ is_main_page, setIsTimerLoading, onMarketOpen, symbol }) => { - const { active_symbols } = useTraderStore(); - const isMounted = useIsMounted(); - const [when_market_opens, setWhenMarketOpens] = React.useState({}); - const [time_left, setTimeLeft] = React.useState(calculateTimeLeft(when_market_opens?.remaining_time_to_open)); - const [is_loading, setLoading] = React.useState(true); - - React.useEffect(() => { - if (!is_main_page || (is_main_page && isMarketClosed(active_symbols, symbol))) { - setLoading(true); - // eslint-disable-next-line consistent-return - const whenMarketOpens = async (days_offset, target_symbol) => { - // days_offset is 0 for today, 1 for tomorrow, etc. - if (days_offset > days_to_check_before_exit) return {}; - let remaining_time_to_open; - const target_date = moment(new Date()).add(days_offset, 'days'); - const api_response = await getTradingTimes(target_date.format('YYYY-MM-DD')); - if (!api_response.api_initial_load_error) { - const { times } = getSymbol(target_symbol, api_response.trading_times); - const { open, close } = times; - const is_closed_all_day = open?.length === 1 && open[0] === '--' && close[0] === '--'; - if (is_closed_all_day) { - // check tomorrow trading times - return whenMarketOpens(days_offset + 1, target_symbol); - } - const date_str = target_date.toISOString().substring(0, 11); - const getUTCDate = hour => new Date(`${date_str}${hour}Z`); - for (let i = 0; i < open?.length; i++) { - const diff = +getUTCDate(open[i]) - Date.now(); - if (diff > 0) { - remaining_time_to_open = +getUTCDate(open[i]); - if (isMounted() && target_symbol === symbol) { - return setWhenMarketOpens({ - days_offset, - opening_time: open[i], - remaining_time_to_open, - }); - } - } - } - whenMarketOpens(days_offset + 1, target_symbol); - } - }; - - whenMarketOpens(0, symbol); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [symbol]); - - React.useEffect(() => { - let timer; - if (when_market_opens?.remaining_time_to_open) { - timer = setTimeout(() => { - setTimeLeft(calculateTimeLeft(when_market_opens.remaining_time_to_open)); - if (new Date(when_market_opens.remaining_time_to_open) - +new Date() < 1000) { - setLoading(true); - if (is_main_page) onMarketOpen(false); - } - }, 1000); - } - return () => { - if (timer) { - clearTimeout(timer); - } - }; - }, [time_left, when_market_opens, onMarketOpen, is_main_page]); - - React.useEffect(() => { - if (!is_loading) setIsTimerLoading(false); - }, [is_loading, setIsTimerLoading]); - - let timer_components = ''; - - if (Object.keys(time_left).length) { - const hours = (time_left.days * 24 + time_left.hours).toString().padStart(2, '0'); - const minutes = time_left.minutes.toString().padStart(2, '0'); - const seconds = time_left.seconds.toString().padStart(2, '0'); - timer_components = `${hours}:${minutes}:${seconds}`; - } - - if (!(when_market_opens && timer_components)) return null; - - const { opening_time, days_offset } = when_market_opens; - let opening_time_banner = null; - if (opening_time) { - const formatted_opening_time = convertTimeFormat(opening_time); - const target_date = moment(new Date()).add(days_offset, 'days'); - const opening_date = target_date.format('DD MMM YYYY'); - const opening_day = target_date.format('dddd'); - opening_time_banner = ( - - ]} - values={{ - formatted_opening_time, - opening_day, - opening_date, - }} - /> - - ); - } - - if (is_loading) setLoading(false); - - return ( - - - - - {opening_time_banner} - - - - - {timer_components} - -
- - ); -}); - -MarketCountdownTimer.propTypes = { - is_main_page: PropTypes.bool, - setIsTimerLoading: PropTypes.func, - onMarketOpen: PropTypes.func, - symbol: PropTypes.string.isRequired, -}; - -export default MarketCountdownTimer; diff --git a/packages/trader/src/App/Components/Elements/market-countdown-timer.tsx b/packages/trader/src/App/Components/Elements/market-countdown-timer.tsx new file mode 100644 index 000000000000..03ec30b9ec2a --- /dev/null +++ b/packages/trader/src/App/Components/Elements/market-countdown-timer.tsx @@ -0,0 +1,224 @@ +import classNames from 'classnames'; +import React from 'react'; +import moment from 'moment'; +import { Text } from '@deriv/components'; +import { useIsMounted, WS, convertTimeFormat, isMarketClosed } from '@deriv/shared'; +import { Localize } from '@deriv/translations'; +import { observer } from '@deriv/stores'; +import { useTraderStore } from 'Stores/useTraderStores'; +import { TradingTimesRequest, TradingTimesResponse } from '@deriv/api-types'; + +type TMarketCountDownTimer = { + is_main_page: boolean; + setIsTimerLoading: React.Dispatch>; + onMarketOpen: ReturnType['prepareTradeStore']; + symbol: ReturnType['symbol']; +}; + +type TWhenMarketOpens = { + days_offset: number; + opening_time: string; + remaining_time_to_open: number; +}; + +// check market in coming 7 days +const days_to_check_before_exit = 7; + +const getTradingTimes = async (target_time: TradingTimesRequest['trading_times']) => { + const data = await WS.tradingTimes(target_time); + if (data.error) { + return { api_initial_load_error: data.error.message }; + } + return data; +}; +// eslint-disable-next-line consistent-return +const getSymbol = ( + target_symbol: string, + trading_times: NonNullable> +) => { + let symbol; + const { markets } = trading_times; + for (let i = 0; i < markets.length; i++) { + const { submarkets } = markets[i]; + if (submarkets) { + for (let j = 0; j < submarkets.length; j++) { + const { symbols } = submarkets[j]; + symbol = symbols?.find(item => item.symbol === target_symbol); + if (symbol !== undefined) return symbol; + } + } + } +}; + +const calculateTimeLeft = (remaining_time_to_open: number) => { + const difference = remaining_time_to_open - Date.now(); + return difference > 0 + ? { + days: Math.floor(difference / (1000 * 60 * 60 * 24)), + hours: Math.floor((difference / (1000 * 60 * 60)) % 24), + minutes: Math.floor((difference / 1000 / 60) % 60), + seconds: Math.floor((difference / 1000) % 60), + } + : {}; +}; + +const MarketCountdownTimer = observer( + ({ is_main_page, setIsTimerLoading, onMarketOpen, symbol }: TMarketCountDownTimer) => { + const { active_symbols } = useTraderStore(); + const isMounted = useIsMounted(); + const [when_market_opens, setWhenMarketOpens] = React.useState({} as TWhenMarketOpens); + const [time_left, setTimeLeft] = React.useState(calculateTimeLeft(when_market_opens?.remaining_time_to_open)); + const [is_loading, setLoading] = React.useState(true); + + React.useEffect(() => { + if (!is_main_page || (is_main_page && isMarketClosed(active_symbols, symbol))) { + setLoading(true); + // eslint-disable-next-line consistent-return + // @ts-expect-error there is no explict return type because of if statements + const whenMarketOpens = async (days_offset: number, target_symbol: string) => { + // days_offset is 0 for today, 1 for tomorrow, etc. + if (days_offset > days_to_check_before_exit) return {}; + let remaining_time_to_open; + const target_date = moment(new Date()).add(days_offset, 'days'); + const api_response = await getTradingTimes(target_date.format('YYYY-MM-DD')); + if (!api_response.api_initial_load_error) { + const returned_symbol = getSymbol(target_symbol, api_response.trading_times); + const open = returned_symbol?.times.open as string[]; + const close = returned_symbol?.times.close as string[]; + const is_closed_all_day = open?.length === 1 && open[0] === '--' && close[0] === '--'; + if (is_closed_all_day) { + // check tomorrow trading times + return whenMarketOpens(days_offset + 1, target_symbol); + } + const date_str = target_date.toISOString().substring(0, 11); + const getUTCDate = (hour: string) => new Date(`${date_str}${hour}Z`); + for (let i = 0; i < open?.length; i++) { + const diff = +getUTCDate(open[i]) - Date.now(); + if (diff > 0) { + remaining_time_to_open = +getUTCDate(open[i]); + if (isMounted() && target_symbol === symbol) { + return setWhenMarketOpens({ + days_offset, + opening_time: open[i], + remaining_time_to_open, + }); + } + } + } + whenMarketOpens(days_offset + 1, target_symbol); + } + }; + + whenMarketOpens(0, symbol); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [symbol]); + + React.useEffect(() => { + let timer: ReturnType; + if (when_market_opens?.remaining_time_to_open) { + timer = setTimeout(() => { + setTimeLeft(calculateTimeLeft(when_market_opens.remaining_time_to_open)); + if (+new Date(when_market_opens.remaining_time_to_open) - +new Date() < 1000) { + setLoading(true); + if (is_main_page) onMarketOpen(false); + } + }, 1000); + } + return () => { + if (timer) { + clearTimeout(timer); + } + }; + }, [time_left, when_market_opens, onMarketOpen, is_main_page]); + + React.useEffect(() => { + if (!is_loading) setIsTimerLoading(false); + }, [is_loading, setIsTimerLoading]); + + let timer_components = ''; + + if (Object.keys(time_left).length) { + const hours = (Number(time_left.days) * 24 + Number(time_left.hours)).toString().padStart(2, '0'); + const minutes = Number(time_left.minutes).toString().padStart(2, '0'); + const seconds = Number(time_left.seconds).toString().padStart(2, '0'); + timer_components = `${hours}:${minutes}:${seconds}`; + } + + if (!(when_market_opens && timer_components)) return null; + + const { opening_time, days_offset } = when_market_opens; + let opening_time_banner = null; + if (opening_time) { + const formatted_opening_time = convertTimeFormat(opening_time); + const target_date = moment(new Date()).add(days_offset, 'days'); + const opening_date = target_date.format('DD MMM YYYY'); + const opening_day = target_date.format('dddd'); + opening_time_banner = ( + + ]} + values={{ + formatted_opening_time, + opening_day, + opening_date, + }} + /> + + ); + } + + if (is_loading) setLoading(false); + + return ( + + + + + {opening_time_banner} + + + + + {timer_components} + +
+ + ); + } +); + +export default MarketCountdownTimer; diff --git a/packages/trader/src/App/Components/Elements/market-is-closed-overlay.jsx b/packages/trader/src/App/Components/Elements/market-is-closed-overlay.tsx similarity index 68% rename from packages/trader/src/App/Components/Elements/market-is-closed-overlay.jsx rename to packages/trader/src/App/Components/Elements/market-is-closed-overlay.tsx index a68ab239d67c..e2c58ab7180b 100644 --- a/packages/trader/src/App/Components/Elements/market-is-closed-overlay.jsx +++ b/packages/trader/src/App/Components/Elements/market-is-closed-overlay.tsx @@ -1,14 +1,29 @@ import classNames from 'classnames'; import React from 'react'; -import PropTypes from 'prop-types'; import { Button, Text } from '@deriv/components'; import { localize, Localize } from '@deriv/translations'; -import MarketCountdownTimer from './market-countdown-timer.jsx'; +import MarketCountdownTimer from './market-countdown-timer'; +import { useStore } from '@deriv/stores'; +import { useTraderStore } from 'Stores/useTraderStores.js'; -const MarketIsClosedOverlay = ({ is_eu, is_synthetics_trading_market_available, onClick, onMarketOpen, symbol }) => { +type TMarketIsClosedOverlay = { + is_eu: ReturnType['client']['is_eu']; + is_synthetics_trading_market_available: ReturnType['is_synthetics_trading_market_available']; + onClick: () => void; + onMarketOpen: React.ComponentProps['onMarketOpen']; + symbol: ReturnType['symbol']; +}; + +const MarketIsClosedOverlay = ({ + is_eu, + is_synthetics_trading_market_available, + onClick, + onMarketOpen, + symbol, +}: TMarketIsClosedOverlay) => { const [is_timer_loading, setIsTimerLoading] = React.useState(true); - let message = ( + let message: JSX.Element | null = ( ); let btn_lbl = localize('Try Synthetic Indices'); @@ -45,12 +60,4 @@ const MarketIsClosedOverlay = ({ is_eu, is_synthetics_trading_market_available, ); }; -MarketIsClosedOverlay.propTypes = { - is_eu: PropTypes.bool, - is_synthetics_trading_market_available: PropTypes.bool, - onClick: PropTypes.func, - onMarketOpen: PropTypes.func, - symbol: PropTypes.string, -}; - export default MarketIsClosedOverlay; diff --git a/packages/trader/src/App/Containers/ProgressSliderStream/__tests__/progress-slider-stream.spec.jsx b/packages/trader/src/App/Containers/ProgressSliderStream/__tests__/progress-slider-stream.spec.jsx deleted file mode 100644 index 76db96aadf64..000000000000 --- a/packages/trader/src/App/Containers/ProgressSliderStream/__tests__/progress-slider-stream.spec.jsx +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react'; -import { screen, render } from '@testing-library/react'; -import { mockStore } from '@deriv/stores'; -import TraderProviders from '../../../../trader-providers'; -import ProgressSliderStream from '../progress-slider-stream'; - -jest.mock('@deriv/components', () => ({ - ...jest.requireActual('@deriv/components'), - ProgressSlider: () =>
Mocked Progress Slider
, -})); - -const contract_info = { - contract_type: 'TEST', - date_expiry: 1222222224, - date_start: 1222222222, - tick_count: 2, - tick_stream: [ - { epoch: 1, tick: 1, tick_display_value: '300' }, - { epoch: 2, tick: 2, tick_display_value: '302' }, - ], -}; - -describe('', () => { - const mockProgressSliderStream = (mocked_store, contract_info = null) => { - return ( - - - - ); - }; - - it('should not render if contract_info is falsy', () => { - const mock_root_store = mockStore({}); - render(mockProgressSliderStream(mock_root_store)); - - expect(screen.queryByText('Mocked Progress Slider')).not.toBeInTheDocument(); - }); - it('should render if contract_info was passed in props', () => { - const mock_root_store = mockStore({}); - render(mockProgressSliderStream(mock_root_store, contract_info)); - - expect(screen.getByText('Mocked Progress Slider')).toBeInTheDocument(); - }); -}); diff --git a/packages/trader/src/App/Containers/ProgressSliderStream/index.js b/packages/trader/src/App/Containers/ProgressSliderStream/index.js deleted file mode 100644 index 657c6ba7065a..000000000000 --- a/packages/trader/src/App/Containers/ProgressSliderStream/index.js +++ /dev/null @@ -1 +0,0 @@ -export default from './progress-slider-stream.jsx'; diff --git a/packages/trader/src/App/Containers/ProgressSliderStream/progress-slider-stream.jsx b/packages/trader/src/App/Containers/ProgressSliderStream/progress-slider-stream.jsx deleted file mode 100644 index 34409af133c9..000000000000 --- a/packages/trader/src/App/Containers/ProgressSliderStream/progress-slider-stream.jsx +++ /dev/null @@ -1,34 +0,0 @@ -import PropTypes from 'prop-types'; -import React from 'react'; -import { ProgressSlider } from '@deriv/components'; -import { getCardLabels, getCurrentTick } from '@deriv/shared'; -import { observer, useStore } from '@deriv/stores'; - -const ProgressSliderStream = observer(({ contract_info }) => { - const { common, portfolio } = useStore(); - const { server_time } = common; - const { is_loading } = portfolio; - - if (!contract_info) { - return
; - } - const current_tick = contract_info.tick_count && getCurrentTick(contract_info); - - return ( - - ); -}); - -ProgressSliderStream.propTypes = { - contract_info: PropTypes.object, -}; - -export default ProgressSliderStream; diff --git a/packages/trader/src/App/Containers/populate-header.jsx b/packages/trader/src/App/Containers/populate-header.jsx index 74127c7c9c33..6cb78ddd14cc 100644 --- a/packages/trader/src/App/Containers/populate-header.jsx +++ b/packages/trader/src/App/Containers/populate-header.jsx @@ -1,15 +1,14 @@ import React from 'react'; -import TogglePositionsMobile from 'App/Components/Elements/TogglePositions/toggle-positions-mobile.jsx'; +import TogglePositionsMobile from 'App/Components/Elements/TogglePositions/toggle-positions-mobile'; import { filterByContractType } from 'App/Components/Elements/PositionsDrawer/helpers'; import { useTraderStore } from 'Stores/useTraderStores'; import { observer, useStore } from '@deriv/stores'; import { TURBOS, VANILLALONG, isTurbosContract, isVanillaContract } from '@deriv/shared'; const PopulateHeader = observer(() => { - const { portfolio, ui, client } = useStore(); + const { portfolio, client } = useStore(); const { symbol, contract_type: trade_contract_type } = useTraderStore(); const { currency: positions_currency } = client; - const { disableApp, enableApp } = ui; const { active_positions_count, all_positions: positions, @@ -37,12 +36,10 @@ const PopulateHeader = observer(() => { return ( diff --git a/packages/trader/src/App/Containers/trade-footer-extensions.jsx b/packages/trader/src/App/Containers/trade-footer-extensions.tsx similarity index 82% rename from packages/trader/src/App/Containers/trade-footer-extensions.jsx rename to packages/trader/src/App/Containers/trade-footer-extensions.tsx index 702950f5ebca..8643c94f5987 100644 --- a/packages/trader/src/App/Containers/trade-footer-extensions.jsx +++ b/packages/trader/src/App/Containers/trade-footer-extensions.tsx @@ -1,11 +1,11 @@ -import PropTypes from 'prop-types'; import React from 'react'; -import { withRouter } from 'react-router-dom'; +import { RouteComponentProps, withRouter } from 'react-router-dom'; import { routes } from '@deriv/shared'; -import TogglePositions from 'App/Components/Elements/TogglePositions'; +import TogglePositions from '../Components/Elements/TogglePositions/toggle-positions'; import { observer, useStore } from '@deriv/stores'; -const TradeFooterExtensions = observer(() => { +const TradeFooterExtensions = observer((props: RouteComponentProps) => { + const { location } = props; const { client, portfolio, ui } = useStore(); const { is_logged_in } = client; const { active_positions_count } = portfolio; @@ -40,8 +40,4 @@ const TradeFooterExtensions = observer(() => { return null; }); -TradeFooterExtensions.propTypes = { - location: PropTypes.object, -}; - export default withRouter(TradeFooterExtensions); diff --git a/packages/trader/src/App/app.tsx b/packages/trader/src/App/app.tsx index a2bfedb085fb..bbafd8fa512f 100644 --- a/packages/trader/src/App/app.tsx +++ b/packages/trader/src/App/app.tsx @@ -2,7 +2,7 @@ import React from 'react'; import Loadable from 'react-loadable'; import Routes from 'App/Containers/Routes/routes.jsx'; import TradeHeaderExtensions from 'App/Containers/trade-header-extensions'; -import TradeFooterExtensions from 'App/Containers/trade-footer-extensions.jsx'; +import TradeFooterExtensions from 'App/Containers/trade-footer-extensions'; import TradeSettingsExtensions from 'App/Containers/trade-settings-extensions'; import { NetworkStatusToastErrorPopup } from 'Modules/Trading/Containers/toast-popup'; import initStore from './init-store'; diff --git a/packages/trader/src/Modules/Contract/Components/Digits/digits.jsx b/packages/trader/src/Modules/Contract/Components/Digits/digits.tsx similarity index 66% rename from packages/trader/src/Modules/Contract/Components/Digits/digits.jsx rename to packages/trader/src/Modules/Contract/Components/Digits/digits.tsx index 8436d533dde2..e963a30c2ee7 100644 --- a/packages/trader/src/Modules/Contract/Components/Digits/digits.jsx +++ b/packages/trader/src/Modules/Contract/Components/Digits/digits.tsx @@ -1,13 +1,59 @@ import classNames from 'classnames'; -import PropTypes from 'prop-types'; import React from 'react'; import { toJS } from 'mobx'; import { DesktopWrapper, MobileWrapper, Popover, Text } from '@deriv/components'; -import { getMarketNamesMap, isMobile, useIsMounted, isContractElapsed } from '@deriv/shared'; +import { + getMarketNamesMap, + isMobile, + useIsMounted, + isContractElapsed, + TContractStore, + TTickSpotData, +} from '@deriv/shared'; import { localize, Localize } from '@deriv/translations'; import { Bounce, SlideIn } from 'App/Components/Animations'; import { DigitSpot, LastDigitPrediction } from '../LastDigitPrediction'; import 'Sass/app/modules/contract/digits.scss'; +import { useTraderStore } from 'Stores/useTraderStores'; + +type TTraderStore = ReturnType; +type TOnChangeStatus = { status: string | null | undefined; current_tick: number | null }; +type TOnLastDigitSpot = { + spot: string | null; + is_lost?: boolean; + is_selected_winning: boolean; + is_latest: boolean; + is_won?: boolean; +}; + +type TDigitsWrapper = TDigits & { + onChangeStatus?: (params: TOnChangeStatus) => void; + onLastDigitSpot?: (params: TOnLastDigitSpot) => void; +}; +type TDigits = Pick & { + digits_array?: number[]; + display_status?: TContractStore['display_status']; + is_digit_contract?: TContractStore['is_digit_contract']; + is_ended?: TContractStore['is_ended']; + is_trade_page?: boolean; + onDigitChange?: TTraderStore['onChange']; + selected_digit?: TTraderStore['last_digit']; + trade_type?: TTraderStore['contract_type']; + tick?: TTickSpotData; + underlying: TTraderStore['symbol']; +}; +type TTickStream = NonNullable[number]; +type TTickData = + | TTickSpotData + | null + | undefined + | { + ask: TTickStream['tick']; + bid: TTickStream['tick']; + current_tick: number; + epoch: TTickStream['epoch']; + pip_size?: number; + }; const DigitsWrapper = ({ contract_info, @@ -22,9 +68,9 @@ const DigitsWrapper = ({ trade_type, onChangeStatus, ...props -}) => { +}: TDigitsWrapper) => { const has_contract = contract_info.date_start; - let tick = props.tick; + let tick: TTickData = props.tick; const is_tick_ready = is_trade_page ? !!tick : true; const is_contract_elapsed = is_trade_page ? isContractElapsed(contract_info, tick) : false; @@ -35,13 +81,13 @@ const DigitsWrapper = ({ if (has_contract && !is_contract_elapsed) { tick = null; const tick_stream = contract_info.tick_stream; - if (tick_stream && tick_stream.length) { + if (tick_stream?.length) { const t = toJS(tick_stream.slice(-1)[0]); tick = { ask: t.tick, bid: t.tick, epoch: t.epoch, - pip_size: t.tick_display_value.split('.')[1].length, + pip_size: t.tick_display_value?.split('.')[1].length, current_tick: tick_stream.length, }; } @@ -49,7 +95,7 @@ const DigitsWrapper = ({ React.useEffect(() => { if (onChangeStatus) { - onChangeStatus({ status, current_tick: tick ? tick.current_tick : null }); + onChangeStatus({ status, current_tick: tick && 'current_tick' in tick ? tick.current_tick : null }); } }, [tick, is_trade_page, display_status, onChangeStatus, status]); @@ -59,15 +105,15 @@ const DigitsWrapper = ({ // i.e - 40px + 6px left and 6px right padding/margin = 52 dimension={isMobile() ? 64 : 52} has_entry_spot={!!contract_info.entry_tick} - barrier={!is_contract_elapsed && is_tick_ready ? +contract_info.barrier : null} - contract_type={!is_contract_elapsed && is_tick_ready ? contract_info.contract_type : null} + barrier={!is_contract_elapsed && is_tick_ready ? Number(contract_info.barrier) : null} + contract_type={!is_contract_elapsed && is_tick_ready ? contract_info.contract_type : ''} digits={digits_array} digits_info={!is_contract_elapsed && is_tick_ready ? digits_info : {}} is_digit_contract={is_digit_contract} is_ended={is_ended} is_trade_page={is_trade_page} - status={status} - tick={tick} + status={status as React.ComponentProps['status']} + tick={tick as React.ComponentProps['tick']} trade_type={trade_type} onDigitChange={onDigitChange} selected_digit={selected_digit} @@ -76,28 +122,26 @@ const DigitsWrapper = ({ ); }; -const Digits = React.memo(props => { - const [status, setStatus] = React.useState(); - const [current_tick, setCurrentTick] = React.useState(); - const [spot, setSpot] = React.useState(); - const [is_selected_winning, setIsSelectedWinning] = React.useState(); - const [is_latest, setIsLatest] = React.useState(); - const [is_won, setIsWon] = React.useState(); - const [is_lost, setIsLost] = React.useState(); +const Digits = React.memo((props: TDigits) => { + const [status, setStatus] = React.useState(); + const [current_tick, setCurrentTick] = React.useState(); + const [spot, setSpot] = React.useState(); + const [is_selected_winning, setIsSelectedWinning] = React.useState(); + const [is_won, setIsWon] = React.useState(); + const [is_lost, setIsLost] = React.useState(); const isMounted = useIsMounted(); const { contract_info, digits_array, is_digit_contract, is_trade_page, underlying } = props; - const onChangeStatus = params => { + const onChangeStatus = (params: TOnChangeStatus) => { setStatus(params.status); setCurrentTick(params.current_tick); }; - const onLastDigitSpot = params => { + const onLastDigitSpot = (params: TOnLastDigitSpot) => { setSpot(params.spot); setIsLost(params.is_lost); setIsSelectedWinning(params.is_selected_winning); - setIsLatest(params.is_latest); setIsWon(params.is_won); }; @@ -105,7 +149,8 @@ const Digits = React.memo(props => { const underlying_name = is_trade_page ? underlying : contract_info.underlying; return localize('Last digit stats for latest 1000 ticks for {{underlying_name}}', { - underlying_name: getMarketNamesMap()[underlying_name.toUpperCase()], + underlying_name: + getMarketNamesMap()[underlying_name?.toUpperCase() as keyof ReturnType], }); }; @@ -151,7 +196,6 @@ const Digits = React.memo(props => { current_spot={spot} is_lost={is_lost} is_selected_winning={is_selected_winning} - is_visible={!!(is_latest && spot)} is_won={is_won} /> @@ -164,18 +208,4 @@ const Digits = React.memo(props => { Digits.displayName = 'Digits'; -Digits.propTypes = { - contract_info: PropTypes.object, - digits_array: PropTypes.array, - digits_info: PropTypes.object, - display_status: PropTypes.string, - is_digit_contract: PropTypes.bool, - is_ended: PropTypes.bool, - is_trade_page: PropTypes.bool, - trade_type: PropTypes.string, - onDigitChange: PropTypes.func, - selected_digit: PropTypes.number, - underlying: PropTypes.string, -}; - export default Digits; diff --git a/packages/trader/src/Modules/Contract/Components/Digits/index.js b/packages/trader/src/Modules/Contract/Components/Digits/index.js index d46e4208466c..5a177415c03a 100644 --- a/packages/trader/src/Modules/Contract/Components/Digits/index.js +++ b/packages/trader/src/Modules/Contract/Components/Digits/index.js @@ -1,3 +1,3 @@ -import Digits from './digits.jsx'; +import Digits from './digits'; export default Digits; diff --git a/packages/trader/src/Modules/Contract/Components/LastDigitPrediction/digit-display.tsx b/packages/trader/src/Modules/Contract/Components/LastDigitPrediction/digit-display.tsx index 856cfe2e4aec..482d22dc692f 100644 --- a/packages/trader/src/Modules/Contract/Components/LastDigitPrediction/digit-display.tsx +++ b/packages/trader/src/Modules/Contract/Components/LastDigitPrediction/digit-display.tsx @@ -20,7 +20,7 @@ type TDigitDisplay = Pick, 'is_lost' | 'i digit: number | null; spot: string | null; }; - selected_digit: number | boolean; + selected_digit?: number; status: ProposalOpenContract['status']; stats?: number | null; value: number; diff --git a/packages/trader/src/Modules/Contract/Components/LastDigitPrediction/digit-spot.tsx b/packages/trader/src/Modules/Contract/Components/LastDigitPrediction/digit-spot.tsx index 18ee62ff7b95..0f8720f4314f 100644 --- a/packages/trader/src/Modules/Contract/Components/LastDigitPrediction/digit-spot.tsx +++ b/packages/trader/src/Modules/Contract/Components/LastDigitPrediction/digit-spot.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { Text } from '@deriv/components'; type TDigitSpot = { - current_spot: string | null; + current_spot?: string | null; is_selected_winning?: boolean; is_lost?: boolean; is_won?: boolean; diff --git a/packages/trader/src/Modules/Contract/Components/LastDigitPrediction/last-digit-prediction.tsx b/packages/trader/src/Modules/Contract/Components/LastDigitPrediction/last-digit-prediction.tsx index b8dbabe9bbb2..bca5ba854ec4 100644 --- a/packages/trader/src/Modules/Contract/Components/LastDigitPrediction/last-digit-prediction.tsx +++ b/packages/trader/src/Modules/Contract/Components/LastDigitPrediction/last-digit-prediction.tsx @@ -11,13 +11,13 @@ type TLastDigitPrediction = Pick< 'barrier' | 'is_digit_contract' | 'has_entry_spot' | 'onLastDigitSpot' > & { contract_type?: string; - digits: number[]; + digits?: number[]; digits_info: { [key: string]: { digit: number; spot: string } }; dimension: number; is_ended?: boolean; - is_trade_page: boolean; - onDigitChange: (event: { target: { name: string; value: number } }) => void; - selected_digit: number | boolean; + is_trade_page?: boolean; + onDigitChange?: (event: { target: { name: string; value: number } }) => void; + selected_digit?: number; status?: ProposalOpenContract['status']; tick?: TicksStreamResponse['tick']; trade_type?: string; @@ -138,7 +138,7 @@ const LastDigitPrediction = ({ value={idx} onLastDigitSpot={onLastDigitSpot} onSelect={isSelectableDigitType() ? handleSelect : null} - selected_digit={isSelectableDigitType() ? selected_digit : false} + selected_digit={isSelectableDigitType() ? selected_digit : undefined} /> ))} diff --git a/packages/trader/src/Modules/Trading/Components/Elements/__tests__/purchase-button.spec.tsx b/packages/trader/src/Modules/Trading/Components/Elements/__tests__/purchase-button.spec.tsx index b04d37672d73..c031641f198f 100644 --- a/packages/trader/src/Modules/Trading/Components/Elements/__tests__/purchase-button.spec.tsx +++ b/packages/trader/src/Modules/Trading/Components/Elements/__tests__/purchase-button.spec.tsx @@ -33,7 +33,7 @@ const default_mocked_props = { should_fade: false, setPurchaseState: jest.fn(), type: 'VANILLALONGCALL', -}; +} as unknown as React.ComponentProps; jest.mock('@deriv/shared', () => ({ ...jest.requireActual('@deriv/shared'), diff --git a/packages/trader/src/Modules/Trading/Components/Elements/__tests__/purchase-fieldset.spec.tsx b/packages/trader/src/Modules/Trading/Components/Elements/__tests__/purchase-fieldset.spec.tsx index 8e3bc4d23c8f..d01422b93c7b 100644 --- a/packages/trader/src/Modules/Trading/Components/Elements/__tests__/purchase-fieldset.spec.tsx +++ b/packages/trader/src/Modules/Trading/Components/Elements/__tests__/purchase-fieldset.spec.tsx @@ -35,7 +35,7 @@ const default_mocked_props = { purchased_states_arr: [true, false], setPurchaseState: jest.fn(), type: '', -}; +} as unknown as React.ComponentProps; jest.mock('@deriv/shared', () => ({ ...jest.requireActual('@deriv/shared'), diff --git a/packages/trader/src/Modules/Trading/Components/Elements/mobile-widget.jsx b/packages/trader/src/Modules/Trading/Components/Elements/mobile-widget.jsx index 972fddcaaeb1..3cc03e313cbc 100644 --- a/packages/trader/src/Modules/Trading/Components/Elements/mobile-widget.jsx +++ b/packages/trader/src/Modules/Trading/Components/Elements/mobile-widget.jsx @@ -3,7 +3,7 @@ import { Money } from '@deriv/components'; import { localize, Localize } from '@deriv/translations'; import { getExpiryType, getDurationMinMaxValues, getLocalizedBasis } from '@deriv/shared'; import { MultiplierAmountWidget } from 'Modules/Trading/Components/Form/TradeParams/Multiplier/widgets.jsx'; -import TradeParamsModal from '../../Containers/trade-params-mobile.jsx'; +import TradeParamsModal from '../../Containers/trade-params-mobile'; import { observer, useStore } from '@deriv/stores'; import { useTraderStore } from 'Stores/useTraderStores'; diff --git a/packages/trader/src/Modules/Trading/Components/Elements/payout-per-point-mobile.tsx b/packages/trader/src/Modules/Trading/Components/Elements/payout-per-point-mobile.tsx index f2a409658087..fd24be61089d 100644 --- a/packages/trader/src/Modules/Trading/Components/Elements/payout-per-point-mobile.tsx +++ b/packages/trader/src/Modules/Trading/Components/Elements/payout-per-point-mobile.tsx @@ -5,22 +5,10 @@ import Fieldset from 'App/Components/Form/fieldset'; import { observer } from '@deriv/stores'; import { getContractSubtype, isVanillaContract } from '@deriv/shared'; import { useTraderStore } from 'Stores/useTraderStores'; +import { TProposalTypeInfo } from 'Types'; type TProposalInfo = { - [key: string]: { - has_error?: boolean; - id: string; - has_increased?: boolean; - message?: string; - cancellation?: { - ask_price: number; - date_expiry: number; - }; - growth_rate?: number; - obj_contract_basis?: Record<'text' | 'value', string>; - returns?: string; - stake: string; - }; + [key: string]: TProposalTypeInfo; }; const PayoutPerPointMobile = observer(() => { diff --git a/packages/trader/src/Modules/Trading/Components/Elements/purchase-button.tsx b/packages/trader/src/Modules/Trading/Components/Elements/purchase-button.tsx index 2d39b67f94e8..5f24ead4faeb 100644 --- a/packages/trader/src/Modules/Trading/Components/Elements/purchase-button.tsx +++ b/packages/trader/src/Modules/Trading/Components/Elements/purchase-button.tsx @@ -3,11 +3,11 @@ import React from 'react'; import { DesktopWrapper, MobileWrapper, Money, IconTradeTypes, Text } from '@deriv/components'; import ContractInfo from 'Modules/Trading/Components/Form/Purchase/contract-info'; import { getContractTypeDisplay } from '@deriv/shared'; -import { TProposalTypeInfo } from 'Types'; +import { TProposalTypeInfo, TTradeStore } from 'Types'; type TPurchaseButton = { basis: string; - buy_info: { error?: string }; + buy_info: TTradeStore['purchase_info']; currency: string; growth_rate: number; has_deal_cancellation: boolean; @@ -164,6 +164,7 @@ const PurchaseButton = ({ is_loading={is_loading} is_multiplier={is_multiplier} is_turbos={is_turbos} + is_vanilla={is_vanilla} should_fade={should_fade} proposal_info={info} type={type} diff --git a/packages/trader/src/Modules/Trading/Components/Elements/purchase-fieldset.tsx b/packages/trader/src/Modules/Trading/Components/Elements/purchase-fieldset.tsx index 9dd0c883dfb5..b45321d42b1f 100644 --- a/packages/trader/src/Modules/Trading/Components/Elements/purchase-fieldset.tsx +++ b/packages/trader/src/Modules/Trading/Components/Elements/purchase-fieldset.tsx @@ -5,11 +5,11 @@ import Fieldset from 'App/Components/Form/fieldset'; import ContractInfo from 'Modules/Trading/Components/Form/Purchase/contract-info'; import PurchaseButton from 'Modules/Trading/Components/Elements/purchase-button'; import CancelDealInfo from '../Form/Purchase/cancel-deal-info'; -import { TProposalTypeInfo } from 'Types'; +import { TProposalTypeInfo, TTradeStore } from 'Types'; type TPurchaseFieldset = { basis: string; - buy_info: { error?: string }; + buy_info: TTradeStore['purchase_info']; currency: string; growth_rate: number; has_cancellation: boolean; @@ -119,6 +119,8 @@ const PurchaseFieldset = ({ is_vanilla={is_vanilla} should_fade={should_fade} type={type} + is_accumulator={is_accumulator} + growth_rate={growth_rate} /> )}
{ }); it('should render component when click on ', () => { - render(); + render(); const dt_contract_dropdown = screen.getByTestId('dt_contract_dropdown'); fireEvent.click(dt_contract_dropdown); diff --git a/packages/trader/src/Modules/Trading/Components/Form/ContractType/__tests__/contract-type-widget.spec.tsx b/packages/trader/src/Modules/Trading/Components/Form/ContractType/__tests__/contract-type-widget.spec.tsx index ffe284748fa9..153198722b0c 100644 --- a/packages/trader/src/Modules/Trading/Components/Form/ContractType/__tests__/contract-type-widget.spec.tsx +++ b/packages/trader/src/Modules/Trading/Components/Form/ContractType/__tests__/contract-type-widget.spec.tsx @@ -88,7 +88,7 @@ describe('', () => { is_mobile: false, }, }); - render(); + render(); expect(screen.getByTestId('dt_contract_widget')).toBeInTheDocument(); }); }); diff --git a/packages/trader/src/Modules/Trading/Components/Form/ContractType/contract-type-widget.tsx b/packages/trader/src/Modules/Trading/Components/Form/ContractType/contract-type-widget.tsx index 41b8e8a629c9..11a666819a3a 100644 --- a/packages/trader/src/Modules/Trading/Components/Form/ContractType/contract-type-widget.tsx +++ b/packages/trader/src/Modules/Trading/Components/Form/ContractType/contract-type-widget.tsx @@ -7,10 +7,15 @@ import { getContractTypeCategoryIcons, findContractCategory } from '../../../Hel import { TContractCategory, TContractType, TList } from './types'; type TContractTypeWidget = { - name?: string; + name: string; value: TContractType['value']; list: TContractCategory[]; - onChange: (event: DeepPartial>) => void; + onChange: (e: { + target: { + name: string; + value: unknown; + }; + }) => Promise; languageChanged?: boolean; }; diff --git a/packages/trader/src/Modules/Trading/Components/Form/Purchase/cancel-deal-info.tsx b/packages/trader/src/Modules/Trading/Components/Form/Purchase/cancel-deal-info.tsx index febf2f6cc8de..3010d38f6a34 100644 --- a/packages/trader/src/Modules/Trading/Components/Form/Purchase/cancel-deal-info.tsx +++ b/packages/trader/src/Modules/Trading/Components/Form/Purchase/cancel-deal-info.tsx @@ -13,15 +13,12 @@ const CancelDealInfo = observer(({ proposal_info }: { proposal_info: TProposalTy const error = has_error ?? !id; const [is_row_layout, setIsRowLayout] = React.useState(false); - const ref = React.useRef(null); + const ref = React.useRef(null); React.useEffect(() => { if (ref.current) { - const el_height = ref.current.parentElement?.clientHeight; - if ( - el_height && - ((el_height > 21 && isDesktop()) || ((el_height > 21 || getDecimalPlaces(currency) > 2) && isMobile())) - ) { + const el_height = Number(ref.current.parentElement?.clientHeight); + if ((el_height > 21 && isDesktop()) || ((el_height > 21 || getDecimalPlaces(currency) > 2) && isMobile())) { setIsRowLayout(true); } else { setIsRowLayout(false); diff --git a/packages/trader/src/Modules/Trading/Components/Form/Purchase/contract-info.jsx b/packages/trader/src/Modules/Trading/Components/Form/Purchase/contract-info.tsx similarity index 77% rename from packages/trader/src/Modules/Trading/Components/Form/Purchase/contract-info.jsx rename to packages/trader/src/Modules/Trading/Components/Form/Purchase/contract-info.tsx index 209a7d98a52e..6c3a53f41e0e 100644 --- a/packages/trader/src/Modules/Trading/Components/Form/Purchase/contract-info.jsx +++ b/packages/trader/src/Modules/Trading/Components/Form/Purchase/contract-info.tsx @@ -1,44 +1,23 @@ import classNames from 'classnames'; -import PropTypes from 'prop-types'; import React from 'react'; -import { DesktopWrapper, Icon, MobileWrapper, Money, Popover, Text } from '@deriv/components'; +import { DesktopWrapper, MobileWrapper, Money, Popover, Text } from '@deriv/components'; import { Localize, localize } from '@deriv/translations'; import { getContractSubtype, getCurrencyDisplayCode, getLocalizedBasis, getGrowthRatePercentage } from '@deriv/shared'; +import { useTraderStore } from 'Stores/useTraderStores'; import CancelDealInfo from './cancel-deal-info'; +import ValueMovement from './value-movement'; +import { TProposalTypeInfo } from 'Types'; -export const ValueMovement = ({ - has_error_or_not_loaded, - proposal_info, - currency, - has_increased, - is_turbos, - is_vanilla, - value, - show_currency = true, -}) => ( -
-
- {!has_error_or_not_loaded && ( - - )} -
-
- {!has_error_or_not_loaded && has_increased !== null && has_increased ? ( - - ) : ( - - )} -
-
-); +type TContractInfo = Pick< + ReturnType, + 'basis' | 'growth_rate' | 'is_accumulator' | 'is_turbos' | 'is_vanilla' | 'is_multiplier' | 'currency' +> & { + has_increased?: boolean | null; + is_loading: boolean; + proposal_info: TProposalTypeInfo; + should_fade: boolean; + type: string; +}; const ContractInfo = ({ basis, @@ -53,7 +32,7 @@ const ContractInfo = ({ should_fade, proposal_info, type, -}) => { +}: TContractInfo) => { const localized_basis = getLocalizedBasis(); const stakeOrPayout = () => { switch (basis) { @@ -72,7 +51,7 @@ const ContractInfo = ({ }; const has_error_or_not_loaded = proposal_info.has_error || !proposal_info.id; - const basis_text = has_error_or_not_loaded ? stakeOrPayout() : proposal_info.obj_contract_basis.text; + const basis_text = has_error_or_not_loaded ? stakeOrPayout() : proposal_info?.obj_contract_basis?.text || ''; const { message, obj_contract_basis, stake } = proposal_info; const setHintMessage = () => { @@ -182,19 +161,4 @@ const ContractInfo = ({ ); }; -ContractInfo.propTypes = { - basis: PropTypes.string, - currency: PropTypes.string, - growth_rate: PropTypes.number, - has_increased: PropTypes.bool, - is_accumulator: PropTypes.bool, - is_multiplier: PropTypes.bool, - is_turbos: PropTypes.bool, - is_vanilla: PropTypes.bool, - is_loading: PropTypes.bool, - proposal_info: PropTypes.object, - should_fade: PropTypes.bool, - type: PropTypes.string, -}; - export default ContractInfo; diff --git a/packages/trader/src/Modules/Trading/Components/Form/Purchase/value-movement.tsx b/packages/trader/src/Modules/Trading/Components/Form/Purchase/value-movement.tsx new file mode 100644 index 000000000000..ff65e52dfc75 --- /dev/null +++ b/packages/trader/src/Modules/Trading/Components/Form/Purchase/value-movement.tsx @@ -0,0 +1,50 @@ +import classNames from 'classnames'; +import React from 'react'; +import { Icon, Money } from '@deriv/components'; +import ContractInfo from './contract-info'; + +type TValueMovement = Partial< + Pick< + React.ComponentProps, + 'is_turbos' | 'is_vanilla' | 'currency' | 'has_increased' | 'proposal_info' + > +> & { + has_error_or_not_loaded: boolean; + value?: number | string; + show_currency?: boolean; +}; +const ValueMovement = ({ + has_error_or_not_loaded, + proposal_info, + currency, + has_increased, + is_turbos = false, + is_vanilla = false, + value, + show_currency = true, +}: TValueMovement) => ( +
+
+ {!has_error_or_not_loaded && ( + + )} +
+
+ {!has_error_or_not_loaded && has_increased !== null && has_increased ? ( + + ) : ( + + )} +
+
+); + +export default ValueMovement; diff --git a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/Duration/duration-wrapper.jsx b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/Duration/duration-wrapper.jsx index 8ef7596439f6..eb20274ae761 100644 --- a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/Duration/duration-wrapper.jsx +++ b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/Duration/duration-wrapper.jsx @@ -1,6 +1,4 @@ -import PropTypes from 'prop-types'; import React from 'react'; -import { PropTypes as MobxPropTypes } from 'mobx-react'; import { getDurationMinMaxValues } from '@deriv/shared'; import Duration from './duration.jsx'; import { observer, useStore } from '@deriv/stores'; @@ -195,18 +193,4 @@ const DurationWrapper = observer(() => { ); }); -DurationWrapper.propTypes = { - duration_d: PropTypes.number, - duration_h: PropTypes.number, - duration_m: PropTypes.number, - duration_s: PropTypes.number, - duration_unit: PropTypes.string, - duration_units_list: MobxPropTypes.arrayOrObservableArray, - getDurationFromUnit: PropTypes.func, - is_minimized: PropTypes.bool, - sessions: MobxPropTypes.arrayOrObservableArray, - start_time: PropTypes.string, - symbol: PropTypes.string, -}; - export default DurationWrapper; diff --git a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/allow-equals.jsx b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/allow-equals.tsx similarity index 72% rename from packages/trader/src/Modules/Trading/Components/Form/TradeParams/allow-equals.jsx rename to packages/trader/src/Modules/Trading/Components/Form/TradeParams/allow-equals.tsx index 0d3ad0614154..448e3419ba38 100644 --- a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/allow-equals.jsx +++ b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/allow-equals.tsx @@ -1,5 +1,4 @@ import React from 'react'; -import PropTypes from 'prop-types'; import { Popover, Checkbox } from '@deriv/components'; import { localize } from '@deriv/translations'; import { @@ -7,6 +6,22 @@ import { hasDurationForCallPutEqual, isRiseFallEqual, } from 'Stores/Modules/Trading/Helpers/allow-equals'; +import { useTraderStore } from 'Stores/useTraderStores'; + +type TTradeStore = Pick< + ReturnType, + | 'contract_start_type' + | 'contract_type' + | 'contract_types_list' + | 'duration_unit' + | 'expiry_type' + | 'has_equals_only' +>; + +type TAllowEquals = TTradeStore & { + onChange: (e: { target: { name: string; value: number } }) => Promise; + value: number; +}; const AllowEquals = ({ contract_start_type, @@ -17,7 +32,7 @@ const AllowEquals = ({ onChange, value, has_equals_only, -}) => { +}: TAllowEquals) => { const has_callputequal_duration = hasDurationForCallPutEqual( contract_types_list, duration_unit, @@ -28,10 +43,12 @@ const AllowEquals = ({ const has_allow_equals = isRiseFallEqual(contract_type) && (has_callputequal_duration || expiry_type === 'endtime') && has_callputequal; - const changeValue = e => { + const changeValue: React.ComponentProps['onChange'] = e => { e.persist(); - const { name, checked } = e.target; - onChange({ target: { name, value: Number(checked) } }); + if ('checked' in e.target) { + const { name, checked } = e.target; + onChange({ target: { name, value: Number(checked) } }); + } }; return ( @@ -61,15 +78,4 @@ const AllowEquals = ({ ); }; -AllowEquals.propTypes = { - contract_start_type: PropTypes.string, - contract_type: PropTypes.string, - contract_types_list: PropTypes.object, - duration_unit: PropTypes.string, - expiry_type: PropTypes.string, - has_equals_only: PropTypes.bool, - onChange: PropTypes.func, - value: PropTypes.number, -}; - export default AllowEquals; diff --git a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/amount-mobile.jsx b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/amount-mobile.tsx similarity index 86% rename from packages/trader/src/Modules/Trading/Components/Form/TradeParams/amount-mobile.jsx rename to packages/trader/src/Modules/Trading/Components/Form/TradeParams/amount-mobile.tsx index 2e5439c3aff1..b968f272ee63 100644 --- a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/amount-mobile.jsx +++ b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/amount-mobile.tsx @@ -7,6 +7,24 @@ import { Money, Numpad, Tabs } from '@deriv/components'; import { getDecimalPlaces, isEmptyObject } from '@deriv/shared'; import MinMaxStakeInfo from './min-max-stake-info'; +type TAmountMobile = React.ComponentProps & { + amount_tab_idx?: number; + setAmountTabIdx: React.ComponentProps['onTabItemClick']; + stake_value: string | number; + payout_value: string | number; +}; + +type TBasis = { + basis: string; + duration_unit: string; + duration_value: number; + toggleModal: () => void; + has_duration_error: boolean; + selected_basis: string | number; + setSelectedAmount: (basis: string, num: string | number) => void; + setAmountError: (has_error: boolean) => void; +}; + const Basis = observer( ({ basis, @@ -17,7 +35,7 @@ const Basis = observer( selected_basis, setSelectedAmount, setAmountError, - }) => { + }: TBasis) => { const { ui, client } = useStore(); const { addToast } = ui; const { currency } = client; @@ -27,21 +45,21 @@ const Basis = observer( is_vanilla, onChangeMultiple, stake_boundary, - trade_amount, - trade_basis, - trade_duration_unit, - trade_duration, + amount: trade_amount, + basis: trade_basis, + duration_unit: trade_duration_unit, + duration: trade_duration, } = useTraderStore(); const { min_stake, max_stake } = stake_boundary[contract_type.toUpperCase()] || {}; const user_currency_decimal_places = getDecimalPlaces(currency); - const onNumberChange = num => { + const onNumberChange = (num: number | string) => { setSelectedAmount(basis, num); validateAmount(num); }; - const formatAmount = value => - !isNaN(value) && value !== '' ? Number(value).toFixed(user_currency_decimal_places) : value; - const setBasisAndAmount = amount => { - const on_change_obj = {}; + const formatAmount = (value: number | string) => + !isNaN(+value) && value !== '' ? Number(value).toFixed(user_currency_decimal_places) : value; + const setBasisAndAmount = (amount: number | string) => { + const on_change_obj: Partial> = {}; // Check for any duration changes in Duration trade params Tab before sending onChange object if (duration_unit !== trade_duration_unit && !has_duration_error) @@ -50,7 +68,7 @@ const Basis = observer( if (amount !== trade_amount || basis !== trade_basis) { on_change_obj.basis = basis; - on_change_obj.amount = amount; + on_change_obj.amount = +amount; } if (!isEmptyObject(on_change_obj)) onChangeMultiple(on_change_obj); @@ -59,7 +77,7 @@ const Basis = observer( const zero_decimals = Number('0').toFixed(getDecimalPlaces(currency)); const min_amount = parseFloat(zero_decimals.toString().replace(/.$/, '1')); - const validateAmount = value => { + const validateAmount = (value: number | string) => { const localized_message = ; const min_max_stake_message = ( { + }: TAmountMobile) => { const { basis, basis_list } = useTraderStore(); const has_selected_tab_idx = typeof amount_tab_idx !== 'undefined'; const active_index = has_selected_tab_idx ? amount_tab_idx : basis_list.findIndex(b => b.value === basis); diff --git a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/amount.jsx b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/amount.tsx similarity index 88% rename from packages/trader/src/Modules/Trading/Components/Form/TradeParams/amount.jsx rename to packages/trader/src/Modules/Trading/Components/Form/TradeParams/amount.tsx index 9352e4b03e24..c33cf5e80ab1 100644 --- a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/amount.jsx +++ b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/amount.tsx @@ -1,29 +1,37 @@ import { AMOUNT_MAX_LENGTH, addComma, getDecimalPlaces } from '@deriv/shared'; import { ButtonToggle, Dropdown, InputField } from '@deriv/components'; import { Localize, localize } from '@deriv/translations'; - -import AllowEquals from './allow-equals.jsx'; +import AllowEquals from './allow-equals'; import Fieldset from 'App/Components/Form/fieldset'; import Multiplier from './Multiplier/multiplier.jsx'; import MultipliersInfo from './Multiplier/info.jsx'; import MinMaxStakeInfo from './min-max-stake-info'; -import PropTypes from 'prop-types'; import React from 'react'; import classNames from 'classnames'; import { useTraderStore } from 'Stores/useTraderStores'; import { observer, useStore } from '@deriv/stores'; +type TInput = { + amount: string | number; + currency: string; + current_focus: string | null; + error_messages?: string[]; + is_disabled?: boolean; + is_single_currency: boolean; + onChange: (e: { target: { name: string; value: number | string } }) => void; + setCurrentFocus: (name: string | null) => void; +}; + export const Input = ({ amount, currency, current_focus, error_messages, - is_nativepicker, is_single_currency, is_disabled, onChange, setCurrentFocus, -}) => ( +}: TInput) => ( ); -const Amount = observer(({ is_minimized, is_nativepicker }) => { +const Amount = observer(({ is_minimized = false }: { is_minimized?: boolean }) => { const { ui, client } = useStore(); const { currencies_list, is_single_currency } = client; const { setCurrentFocus, current_focus } = ui; @@ -82,9 +89,7 @@ const Amount = observer(({ is_minimized, is_nativepicker }) => { if (is_minimized) { return (
- - {(basis_list.find(o => o.value === basis) || {}).text} - + {basis_list.find(o => o.value === basis)?.text}   { ); } - const error_messages = validation_errors.amount; + const error_messages = validation_errors?.amount; const getBasisList = () => basis_list.map(item => ({ text: item.text, value: item.value })); @@ -140,12 +145,10 @@ const Amount = observer(({ is_minimized, is_nativepicker }) => { current_focus={current_focus} error_messages={error_messages} is_single_currency={is_single_currency} - is_nativepicker={is_nativepicker} onChange={onChange} setCurrentFocus={setCurrentFocus} /> { current_focus={current_focus} error_messages={error_messages} is_single_currency={is_single_currency} - is_nativepicker={is_nativepicker} is_disabled={has_open_accu_contract} onChange={onChange} setCurrentFocus={setCurrentFocus} @@ -177,13 +179,14 @@ const Amount = observer(({ is_minimized, is_nativepicker }) => { duration_unit={duration_unit} expiry_type={expiry_type} onChange={onChange} - value={parseInt(is_equal)} + value={Number(is_equal)} has_equals_only={has_equals_only} /> {is_multiplier && ( { ); }); -Amount.propTypes = { - is_minimized: PropTypes.bool, - is_nativepicker: PropTypes.bool, -}; - export default Amount; diff --git a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/barrier.jsx b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/barrier.tsx similarity index 94% rename from packages/trader/src/Modules/Trading/Components/Form/TradeParams/barrier.jsx rename to packages/trader/src/Modules/Trading/Components/Form/TradeParams/barrier.tsx index 7ca8412e989f..e8f19de41855 100644 --- a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/barrier.jsx +++ b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/barrier.tsx @@ -1,15 +1,19 @@ import classNames from 'classnames'; -import PropTypes from 'prop-types'; import React from 'react'; import { DesktopWrapper, Icon, InputField, MobileWrapper, Modal, Text, usePrevious } from '@deriv/components'; import Fieldset from 'App/Components/Form/fieldset'; -import { ValueMovement } from '../Purchase/contract-info'; +import ValueMovement from '../Purchase/value-movement'; import { observer, useStore } from '@deriv/stores'; import { useTraderStore } from 'Stores/useTraderStores'; import { localize } from '@deriv/translations'; import LabeledQuantityInputMobile from '../LabeledQuantityInputMobile'; -const Barrier = observer(({ is_minimized, is_absolute_only }) => { +type TBarrier = { + is_minimized?: boolean; + is_absolute_only?: boolean; +}; + +const Barrier = observer(({ is_minimized, is_absolute_only }: TBarrier) => { const { ui } = useStore(); const { current_focus, setCurrentFocus } = ui; const { @@ -25,11 +29,12 @@ const Barrier = observer(({ is_minimized, is_absolute_only }) => { } = useTraderStore(); const [show_modal, setShowModal] = React.useState(false); const type_with_current_spot = Object.keys(trade_types).find(type => proposal_info?.[type]?.spot); - const contract_info = proposal_info?.[type_with_current_spot]; + let contract_info, has_spot_increased; + if (type_with_current_spot) contract_info = proposal_info?.[type_with_current_spot]; const current_spot = contract_info?.spot || ''; const current_barrier_price = contract_info?.barrier || ''; const previous_spot = usePrevious(current_spot); - const has_spot_increased = current_spot > previous_spot; + if (previous_spot) has_spot_increased = Number(current_spot) > previous_spot; const barrier_title = barrier_count === 1 ? localize('Barrier') : localize('Barriers'); const has_error_or_not_loaded = contract_info?.has_error || !contract_info?.id; @@ -49,7 +54,7 @@ const Barrier = observer(({ is_minimized, is_absolute_only }) => { // TODO: Some contracts yet to be implemented in app.deriv.com allow only absolute barrier, hence the prop const is_absolute_barrier = is_day_duration || is_absolute_only; - const format = value => { + const format = (value: string) => { const float_value = parseFloat(value); let final_value; if (Math.sign(float_value) === -1) { @@ -86,7 +91,7 @@ const Barrier = observer(({ is_minimized, is_absolute_only }) => { )} current_focus={current_focus} onChange={onChange} - error_messages={validation_errors.barrier_1 || []} + error_messages={validation_errors?.barrier_1 || []} is_float is_signed setCurrentFocus={setCurrentFocus} @@ -103,7 +108,7 @@ const Barrier = observer(({ is_minimized, is_absolute_only }) => { classNameInput='trade-container__input' current_focus={current_focus} onChange={onChange} - error_messages={validation_errors.barrier_2} + error_messages={validation_errors?.barrier_2} is_float is_signed setCurrentFocus={setCurrentFocus} @@ -155,7 +160,7 @@ const Barrier = observer(({ is_minimized, is_absolute_only }) => { current_focus={current_focus} onChange={onChange} error_messages={ - (barrier_count === 1 ? validation_errors.barrier_1 : validation_errors.barrier_2) || [] + (barrier_count === 1 ? validation_errors?.barrier_1 : validation_errors?.barrier_2) || [] } error_message_alignment='top' is_float @@ -219,9 +224,4 @@ const Barrier = observer(({ is_minimized, is_absolute_only }) => { ); }); -Barrier.propTypes = { - is_absolute_only: PropTypes.bool, - is_minimized: PropTypes.bool, -}; - export default Barrier; diff --git a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/last-digit.jsx b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/last-digit.tsx similarity index 80% rename from packages/trader/src/Modules/Trading/Components/Form/TradeParams/last-digit.jsx rename to packages/trader/src/Modules/Trading/Components/Form/TradeParams/last-digit.tsx index 46edec68c99a..58930d65d309 100644 --- a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/last-digit.jsx +++ b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/last-digit.tsx @@ -1,4 +1,3 @@ -import PropTypes from 'prop-types'; import React from 'react'; import { isDesktop } from '@deriv/shared'; import { localize } from '@deriv/translations'; @@ -7,7 +6,11 @@ import Fieldset from 'App/Components/Form/fieldset'; import { observer } from '@deriv/stores'; import { useTraderStore } from 'Stores/useTraderStores'; -const LastDigit = observer(({ is_minimized }) => { +type TLastDigit = { + is_minimized?: boolean; +}; + +const LastDigit = observer(({ is_minimized }: TLastDigit) => { const { onChange, last_digit } = useTraderStore(); if (is_minimized) { return
{`${localize('Last Digit')}: ${last_digit}`}
; @@ -29,10 +32,4 @@ const LastDigit = observer(({ is_minimized }) => { ); }); -LastDigit.propTypes = { - is_minimized: PropTypes.bool, - last_digit: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), - onChange: PropTypes.func, -}; - export default LastDigit; diff --git a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/min-max-stake-info.tsx b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/min-max-stake-info.tsx index d2215cf55729..24e3541fe651 100644 --- a/packages/trader/src/Modules/Trading/Components/Form/TradeParams/min-max-stake-info.tsx +++ b/packages/trader/src/Modules/Trading/Components/Form/TradeParams/min-max-stake-info.tsx @@ -6,9 +6,9 @@ import { observer, useStore } from '@deriv/stores'; type TMinMaxStakeInfo = { className?: string; - min_stake: number; - max_stake: number; - currency: string; + min_stake?: number; + max_stake?: number; + currency?: string; }; const MinMaxStakeInfo = observer(({ className, currency, max_stake, min_stake }: TMinMaxStakeInfo) => { @@ -17,8 +17,8 @@ const MinMaxStakeInfo = observer(({ className, currency, max_stake, min_stake }: } = useStore(); return (
- {!isNaN(min_stake) && - !isNaN(max_stake) && + {!isNaN(Number(min_stake)) && + !isNaN(Number(max_stake)) && ['Min', 'Max'].map(text => ( ({ })); jest.mock('../../../Containers/contract-type', () => jest.fn(() => 'MockedContractType')); jest.mock('../../../Containers/purchase', () => jest.fn(() => 'MockedPurchase')); -jest.mock('../../../Containers/trade-params.jsx', () => jest.fn(() => 'MockedTradeParams')); +jest.mock('../../../Containers/trade-params', () => jest.fn(() => 'MockedTradeParams')); const mock_props = { is_market_closed: false, diff --git a/packages/trader/src/Modules/Trading/Components/Form/screen-large.tsx b/packages/trader/src/Modules/Trading/Components/Form/screen-large.tsx index 6916fd8d0c97..cd917012fd3a 100644 --- a/packages/trader/src/Modules/Trading/Components/Form/screen-large.tsx +++ b/packages/trader/src/Modules/Trading/Components/Form/screen-large.tsx @@ -4,7 +4,7 @@ import { TradeParamsLoader } from 'App/Components/Elements/ContentLoader'; import Fieldset from 'App/Components/Form/fieldset'; import ContractType from '../../Containers/contract-type'; import Purchase from '../../Containers/purchase'; -import TradeParams from '../../Containers/trade-params.jsx'; +import TradeParams from '../../Containers/trade-params'; type TScreenLarge = { is_market_closed?: boolean; diff --git a/packages/trader/src/Modules/Trading/Components/Form/screen-small.tsx b/packages/trader/src/Modules/Trading/Components/Form/screen-small.tsx index 7181dd35f9b4..aef43f88b21b 100644 --- a/packages/trader/src/Modules/Trading/Components/Form/screen-small.tsx +++ b/packages/trader/src/Modules/Trading/Components/Form/screen-small.tsx @@ -13,7 +13,7 @@ import { } from 'Modules/Trading/Components/Form/TradeParams/Multiplier/widgets.jsx'; import AccumulatorsAmountMobile from 'Modules/Trading/Components/Form/TradeParams/Accumulator/accumulators-amount-mobile'; import AccumulatorsInfoDisplay from 'Modules/Trading/Components/Form/TradeParams/Accumulator/accumulators-info-display'; -import { BarrierMobile, LastDigitMobile } from 'Modules/Trading/Containers/trade-params-mobile.jsx'; +import { BarrierMobile, LastDigitMobile } from 'Modules/Trading/Containers/trade-params-mobile'; import ContractType from 'Modules/Trading/Containers/contract-type'; import MobileWidget from 'Modules/Trading/Components/Elements/mobile-widget.jsx'; import Purchase from 'Modules/Trading/Containers/purchase'; diff --git a/packages/trader/src/Modules/Trading/Containers/Multiplier/multiplier-amount-modal.jsx b/packages/trader/src/Modules/Trading/Containers/Multiplier/multiplier-amount-modal.jsx index 7818ffd8b8fa..ff8a61763e63 100644 --- a/packages/trader/src/Modules/Trading/Containers/Multiplier/multiplier-amount-modal.jsx +++ b/packages/trader/src/Modules/Trading/Containers/Multiplier/multiplier-amount-modal.jsx @@ -3,7 +3,7 @@ import { Div100vhContainer, Modal, Money, Popover, usePreventIOSZoom } from '@de import { useIsMounted, WS } from '@deriv/shared'; import { localize, Localize } from '@deriv/translations'; import { requestPreviewProposal } from 'Stores/Modules/Trading/Helpers/preview-proposal'; -import AmountMobile from 'Modules/Trading/Components/Form/TradeParams/amount-mobile.jsx'; +import AmountMobile from 'Modules/Trading/Components/Form/TradeParams/amount-mobile'; import MultipliersInfo from 'Modules/Trading/Components/Form/TradeParams/Multiplier/info.jsx'; import { observer, useStore } from '@deriv/stores'; import { useTraderStore } from 'Stores/useTraderStores'; diff --git a/packages/trader/src/Modules/Trading/Containers/purchase.tsx b/packages/trader/src/Modules/Trading/Containers/purchase.tsx index e6ae38d7edc7..20d4af5ab044 100644 --- a/packages/trader/src/Modules/Trading/Containers/purchase.tsx +++ b/packages/trader/src/Modules/Trading/Containers/purchase.tsx @@ -12,7 +12,7 @@ import AccumulatorsSellButton from '../Components/Form/TradeParams/Accumulator/a import PurchaseFieldset from 'Modules/Trading/Components/Elements/purchase-fieldset'; import { useTraderStore } from 'Stores/useTraderStores'; import { observer, useStore } from '@deriv/stores'; -import { TProposalTypeInfo } from 'Types'; +import { TTradeStore } from 'Types'; type TGetSupportedContractsKey = keyof ReturnType; @@ -48,14 +48,14 @@ const Purchase = observer(({ is_market_closed }: { is_market_closed?: boolean }) proposal_info, purchase_info, symbol, - validation_errors, + validation_errors = {}, trade_types, is_trade_enabled, has_open_accu_contract, } = useTraderStore(); const is_high_low = /^high_low$/.test(contract_type.toLowerCase()); - const isLoading = (info: TProposalTypeInfo | Record) => { + const isLoading = (info: TTradeStore['proposal_info'][string] | Record) => { const has_validation_error = Object.values(validation_errors).some(e => e.length); return !has_validation_error && !info?.has_error && !info.id; }; diff --git a/packages/trader/src/Modules/Trading/Containers/trade-params-mobile.jsx b/packages/trader/src/Modules/Trading/Containers/trade-params-mobile.tsx similarity index 75% rename from packages/trader/src/Modules/Trading/Containers/trade-params-mobile.jsx rename to packages/trader/src/Modules/Trading/Containers/trade-params-mobile.tsx index fe9cd8e69bbe..8cb17c6ffe72 100644 --- a/packages/trader/src/Modules/Trading/Containers/trade-params-mobile.jsx +++ b/packages/trader/src/Modules/Trading/Containers/trade-params-mobile.tsx @@ -1,17 +1,68 @@ import 'Sass/app/modules/trading-mobile.scss'; - import { Div100vhContainer, Modal, Money, Tabs, ThemedScrollbars, usePreventIOSZoom } from '@deriv/components'; - -import AmountMobile from 'Modules/Trading/Components/Form/TradeParams/amount-mobile.jsx'; -import Barrier from 'Modules/Trading/Components/Form/TradeParams/barrier.jsx'; +import AmountMobile from 'Modules/Trading/Components/Form/TradeParams/amount-mobile'; +import Barrier from 'Modules/Trading/Components/Form/TradeParams/barrier'; import DurationMobile from 'Modules/Trading/Components/Form/TradeParams/Duration/duration-mobile.jsx'; -import LastDigit from 'Modules/Trading/Components/Form/TradeParams/last-digit.jsx'; +import LastDigit from 'Modules/Trading/Components/Form/TradeParams/last-digit'; +import { TTextValueStrings } from 'Types'; import { observer, useStore } from '@deriv/stores'; import { useTraderStore } from 'Stores/useTraderStores'; import React from 'react'; import classNames from 'classnames'; import { localize } from '@deriv/translations'; +type TTradeParamsModal = { + is_open: boolean; + tab_index: number; + toggleModal: () => void; +}; + +type TTradeParamsMobile = { + currency: string; + toggleModal: () => void; + isVisible: (component_key: string) => boolean; + setAmountTabIdx: (amount_tab_idx?: number) => void; + amount_tab_idx?: number; + setTradeParamTabIdx: (trade_param_tab_idx: number) => void; + trade_param_tab_idx: number; + setDurationTabIdx: (duration_tab_idx?: number) => void; + duration_unit: string; + duration_units_list: TTextValueStrings[]; + duration_value: number; + duration_tab_idx?: number; + has_amount_error: boolean; + has_duration_error: boolean; + // amount + setAmountError: (has_error: boolean) => void; + setSelectedAmount: (basis: string, selected_basis_value: string | number) => void; + stake_value: number; + payout_value: number; + // duration + setDurationError: (has_error: boolean) => void; + setSelectedDuration: (selected_duration_unit: string, selected_duration: number) => void; + t_duration: number; + s_duration: number; + m_duration: number; + h_duration: number; + d_duration: number; +}; + +type TReducer = Pick< + TTradeParamsMobile, + | 'trade_param_tab_idx' + | 'duration_tab_idx' + | 'amount_tab_idx' + | 'has_amount_error' + | 'has_duration_error' + | 't_duration' + | 's_duration' + | 'm_duration' + | 'h_duration' + | 'd_duration' + | 'stake_value' + | 'payout_value' +> & { curr_duration_unit: string; curr_duration_value: number }; + const DEFAULT_DURATION = Object.freeze({ t: 5, s: 15, @@ -20,20 +71,21 @@ const DEFAULT_DURATION = Object.freeze({ d: 1, }); -const reducer = (state, payload) => { +const reducer = (state: TReducer, payload: Partial) => { return { ...state, ...payload, }; }; -const makeGetDefaultDuration = (trade_duration, trade_duration_unit) => duration_unit => - trade_duration_unit === duration_unit ? trade_duration : DEFAULT_DURATION[duration_unit]; +const makeGetDefaultDuration = (trade_duration: number, trade_duration_unit: string) => (duration_unit: string) => + trade_duration_unit === duration_unit + ? trade_duration + : DEFAULT_DURATION[duration_unit as keyof typeof DEFAULT_DURATION]; -const TradeParamsModal = observer(({ is_open, toggleModal, tab_index }) => { - const { client, ui } = useStore(); +const TradeParamsModal = observer(({ is_open, toggleModal, tab_index }: TTradeParamsModal) => { + const { client } = useStore(); const { currency } = client; - const { enableApp, disableApp } = ui; const { amount, form_components, duration, duration_unit, duration_units_list } = useTraderStore(); // eslint-disable-next-line react-hooks/exhaustive-deps const getDefaultDuration = React.useCallback(makeGetDefaultDuration(duration, duration_unit), []); @@ -61,19 +113,20 @@ const TradeParamsModal = observer(({ is_open, toggleModal, tab_index }) => { React.useEffect(() => { setSelectedDuration(duration_unit, duration); - setDurationTabIdx(undefined); + setDurationTabIdx(); // duration and duration_unit can be changed in trade-store when contract type is changed }, [duration, duration_unit]); - const setTradeParamTabIdx = trade_param_tab_idx => dispatch({ trade_param_tab_idx }); + const setTradeParamTabIdx = (trade_param_tab_idx: number) => dispatch({ trade_param_tab_idx }); - const setDurationTabIdx = duration_tab_idx => dispatch({ duration_tab_idx }); + const setDurationTabIdx = (duration_tab_idx?: number) => dispatch({ duration_tab_idx }); - const setAmountTabIdx = amount_tab_idx => dispatch({ amount_tab_idx }); + const setAmountTabIdx = (amount_tab_idx?: number) => dispatch({ amount_tab_idx }); - const setSelectedAmount = (basis, selected_basis_value) => dispatch({ [`${basis}_value`]: selected_basis_value }); + const setSelectedAmount = (basis: string, selected_basis_value: string | number) => + dispatch({ [`${basis}_value`]: selected_basis_value }); - const setSelectedDuration = (selected_duration_unit, selected_duration) => { + const setSelectedDuration = (selected_duration_unit: string, selected_duration: number) => { dispatch({ [`${selected_duration_unit}_duration`]: selected_duration, curr_duration_unit: selected_duration_unit, @@ -81,24 +134,21 @@ const TradeParamsModal = observer(({ is_open, toggleModal, tab_index }) => { }); }; - const setAmountError = has_error => { + const setAmountError = (has_error: boolean) => { dispatch({ has_amount_error: has_error }); }; - const setDurationError = has_error => { + const setDurationError = (has_error: boolean) => { dispatch({ has_duration_error: has_error }); }; - const isVisible = component_key => form_components.includes(component_key); - + const isVisible = (component_key: string): boolean => form_components.includes(component_key); return ( } - disableApp={disableApp} toggleModal={toggleModal} height='auto' width='calc(100vw - 32px)' @@ -172,7 +222,7 @@ const TradeParamsMobile = observer( m_duration, h_duration, d_duration, - }) => { + }: TTradeParamsMobile) => { const { basis_list, basis, expiry_epoch, is_turbos, is_vanilla } = useTraderStore(); const getDurationText = () => { const duration = duration_units_list.find(d => d.value === duration_unit); @@ -188,7 +238,7 @@ const TradeParamsMobile = observer( return ; }; - const getHeaderContent = tab_key => { + const getHeaderContent = (tab_key: string) => { switch (tab_key) { case 'duration': return ( @@ -229,9 +279,10 @@ const TradeParamsMobile = observer( onTabItemClick={setTradeParamTabIdx} top > - {isVisible('duration') && ( + {isVisible('duration') ? (
is migrated to TS toggleModal={toggleModal} amount_tab_idx={amount_tab_idx} duration_tab_idx={duration_tab_idx} @@ -249,8 +300,8 @@ const TradeParamsMobile = observer( expiry_epoch={expiry_epoch} />
- )} - {isVisible('amount') && ( + ) : null} + {isVisible('amount') ? (
- )} + ) : null} ); } @@ -273,10 +326,10 @@ const TradeParamsMobile = observer( export const LastDigitMobile = observer(() => { const { form_components } = useTraderStore(); - return form_components.includes('last_digit') && ; + return form_components.includes('last_digit') ? : null; }); export const BarrierMobile = observer(() => { const { form_components } = useTraderStore(); - return form_components.includes('barrier') && ; + return form_components.includes('barrier') ? : null; }); diff --git a/packages/trader/src/Modules/Trading/Containers/trade-params.jsx b/packages/trader/src/Modules/Trading/Containers/trade-params.tsx similarity index 86% rename from packages/trader/src/Modules/Trading/Containers/trade-params.jsx rename to packages/trader/src/Modules/Trading/Containers/trade-params.tsx index 6941ca692129..a00d1e44f459 100644 --- a/packages/trader/src/Modules/Trading/Containers/trade-params.jsx +++ b/packages/trader/src/Modules/Trading/Containers/trade-params.tsx @@ -1,11 +1,10 @@ -import PropTypes from 'prop-types'; import React from 'react'; import classNames from 'classnames'; -import Amount from 'Modules/Trading/Components/Form/TradeParams/amount.jsx'; -import Barrier from 'Modules/Trading/Components/Form/TradeParams/barrier.jsx'; +import Amount from 'Modules/Trading/Components/Form/TradeParams/amount'; +import Barrier from 'Modules/Trading/Components/Form/TradeParams/barrier'; import BarrierSelector from 'Modules/Trading/Components/Form/TradeParams/Turbos/barrier-selector'; import Duration from 'Modules/Trading/Components/Form/TradeParams/Duration'; -import LastDigit from 'Modules/Trading/Components/Form/TradeParams/last-digit.jsx'; +import LastDigit from 'Modules/Trading/Components/Form/TradeParams/last-digit'; import CancelDeal from 'Modules/Trading/Components/Form/TradeParams/Multiplier/cancel-deal.jsx'; import Accumulator from 'Modules/Trading/Components/Form/TradeParams/Accumulator/accumulator'; import StopLoss from 'Modules/Trading/Components/Form/TradeParams/Multiplier/stop-loss.jsx'; @@ -18,15 +17,22 @@ import { observer } from '@deriv/stores'; import { useTraderStore } from 'Stores/useTraderStores'; import Fieldset from 'App/Components/Form/fieldset'; -const TradeParams = observer(({ is_minimized }) => { +type TTradeParams = { + is_minimized?: boolean; +}; + +const TradeParams = observer(({ is_minimized = false }: TTradeParams) => { const { form_components } = useTraderStore(); - const isVisible = component_key => { + const isVisible = (component_key: string) => { return form_components.includes(component_key); }; return ( - {isVisible('duration') && } + {isVisible('duration') && ( + // @ts-expect-error: TODO: check if TS error is gone after is migrated to TS + + )} {isVisible('barrier') && } {isVisible('last_digit') && } {isVisible('accumulator') && } @@ -46,8 +52,5 @@ const TradeParams = observer(({ is_minimized }) => { ); }); -TradeParams.propTypes = { - is_minimized: PropTypes.bool, -}; export default TradeParams; diff --git a/packages/trader/src/Modules/Trading/Containers/trade.jsx b/packages/trader/src/Modules/Trading/Containers/trade.jsx index c01c0eed96ed..9b57197c5570 100644 --- a/packages/trader/src/Modules/Trading/Containers/trade.jsx +++ b/packages/trader/src/Modules/Trading/Containers/trade.jsx @@ -4,7 +4,7 @@ import { DesktopWrapper, Div100vhContainer, MobileWrapper, SwipeableWrapper } fr import { getDecimalPlaces, isDesktop, isMobile } from '@deriv/shared'; import ChartLoader from 'App/Components/Elements/chart-loader'; import PositionsDrawer from 'App/Components/Elements/PositionsDrawer'; -import MarketIsClosedOverlay from 'App/Components/Elements/market-is-closed-overlay.jsx'; +import MarketIsClosedOverlay from 'App/Components/Elements/market-is-closed-overlay'; import Test from './test.jsx'; import { ChartBottomWidgets, ChartTopWidgets, DigitsWidget } from './chart-widgets.jsx'; import FormLayout from '../Components/Form/form-layout'; @@ -300,7 +300,6 @@ const ChartTrade = observer(props => { wsSubscribe, active_symbols, has_alternative_source, - refToAddTick, } = useTraderStore(); const settings = { @@ -391,7 +390,6 @@ const ChartTrade = observer(props => { onExportLayout={exportLayout} shouldFetchTradingTimes={!end_epoch} hasAlternativeSource={has_alternative_source} - refToAddTick={refToAddTick} getMarketsOrder={getMarketsOrder} should_zoom_out_on_yaxis={is_accumulator} yAxisMargin={{ diff --git a/packages/trader/src/Modules/Trading/Helpers/contract-type.tsx b/packages/trader/src/Modules/Trading/Helpers/contract-type.tsx index aba9e38fee31..36dd8cf923f8 100644 --- a/packages/trader/src/Modules/Trading/Helpers/contract-type.tsx +++ b/packages/trader/src/Modules/Trading/Helpers/contract-type.tsx @@ -5,7 +5,7 @@ import { TContractType, TContractCategory, TList } from '../Components/Form/Cont type TContractTypesList = { [key: string]: { name: string; - categories: TContractType[]; + categories: DeepRequired; }; }; diff --git a/packages/trader/src/Stores/Modules/SmartChart/chart-barrier-store.ts b/packages/trader/src/Stores/Modules/SmartChart/chart-barrier-store.ts index 493dfe14a2b4..7f3e2adb9f0f 100644 --- a/packages/trader/src/Stores/Modules/SmartChart/chart-barrier-store.ts +++ b/packages/trader/src/Stores/Modules/SmartChart/chart-barrier-store.ts @@ -29,7 +29,7 @@ export class ChartBarrierStore { onChartBarrierChange: TOnChartBarrierChange | null; constructor( - high_barrier: string | number, + high_barrier?: string | number, low_barrier?: string | number, onChartBarrierChange: TOnChartBarrierChange = null, { color, line_style, not_draggable }: TChartBarrierStoreOptions = {} diff --git a/packages/trader/src/Stores/Modules/Trading/Actions/purchase.ts b/packages/trader/src/Stores/Modules/Trading/Actions/purchase.ts index f2a8062a8ebc..cc2b463fede0 100644 --- a/packages/trader/src/Stores/Modules/Trading/Actions/purchase.ts +++ b/packages/trader/src/Stores/Modules/Trading/Actions/purchase.ts @@ -1,11 +1,20 @@ -import { Buy, BuyContractRequest } from '@deriv/api-types'; +import { Buy, BuyContractResponse, BuyContractRequest } from '@deriv/api-types'; import { WS } from '@deriv/shared'; +type TResponse = BuyContractResponse & { + echo_req: Buy; + error?: { + code: string; + message: string; + details?: BuyContractResponse['buy'] & { field: string }; + }; +}; + export const processPurchase = async ( proposal_id: string, - price: BuyContractRequest['price'], - passthrough: BuyContractRequest['passthrough'] -): Promise => + price: string | number, + passthrough?: BuyContractRequest['passthrough'] +): Promise => WS.buy({ proposal_id, price, diff --git a/packages/trader/src/Stores/Modules/Trading/Actions/start-date.ts b/packages/trader/src/Stores/Modules/Trading/Actions/start-date.ts index 9be02fc3e422..62d9950f5e04 100644 --- a/packages/trader/src/Stores/Modules/Trading/Actions/start-date.ts +++ b/packages/trader/src/Stores/Modules/Trading/Actions/start-date.ts @@ -38,7 +38,6 @@ export const onChangeStartDate = async (store: TTradeStore) => { export const onChangeExpiry = async (store: TTradeStore) => { const { start_time, expiry_date, expiry_type, expiry_time, start_date, symbol, sessions } = store; - const trading_times = await ContractType.getTradingTimes(expiry_date, symbol); const obj_market_open_times = { market_open_times: trading_times.open }; const obj_market_close_times = { market_close_times: trading_times.close }; diff --git a/packages/trader/src/Stores/Modules/Trading/Constants/validation-rules.ts b/packages/trader/src/Stores/Modules/Trading/Constants/validation-rules.ts index 6911efae718e..cbd1835ba444 100644 --- a/packages/trader/src/Stores/Modules/Trading/Constants/validation-rules.ts +++ b/packages/trader/src/Stores/Modules/Trading/Constants/validation-rules.ts @@ -4,231 +4,208 @@ import { isSessionAvailable } from '../Helpers/start-date'; import { TTradeStore } from 'Types'; import type { TRuleOptions } from 'Utils/Validator/validator'; +type TValidationRules = { + [key: string]: { + rules?: Array[]; + trigger?: string; + }; +}; + const tradeSpecificBarrierCheck = (is_vanilla: boolean, input: number) => is_vanilla || input !== 0; -export const getValidationRules = () => - ({ - amount: { - rules: [ - ['req', { message: localize('Amount is a required field.') }], - ['number', { min: 0, type: 'float' }], - ], - }, - barrier_1: { - rules: [ - [ - 'req', - { - condition: (store: TTradeStore) => - store.barrier_count && store.form_components.indexOf('barrier') > -1, - message: localize('Barrier is a required field.'), - }, - ], - ['barrier', { condition: (store: TTradeStore) => store.barrier_count }], - [ - 'custom', - { - func: ( - value: TTradeStore['barrier_1'], - options: Partial, - store: TTradeStore, - inputs: Pick - ) => (store.barrier_count > 1 ? +value > +inputs.barrier_2 : true), - message: localize('Higher barrier must be higher than lower barrier.'), - }, - ], - [ - 'custom', - { - func: ( - value: TTradeStore['barrier_1'], - options: Partial, - store: TTradeStore, - inputs: Pick - ) => - /^[+-]/.test(inputs.barrier_1) - ? tradeSpecificBarrierCheck(store.is_vanilla, +inputs.barrier_1) - : true, - message: localize('Barrier cannot be zero.'), - }, - ], - ], - trigger: 'barrier_2', - }, - barrier_2: { - rules: [ - [ - 'req', - { - condition: (store: TTradeStore) => - store.barrier_count > 1 && store.form_components.indexOf('barrier') > -1, - message: localize('Barrier is a required field.'), - }, - ], - ['barrier', { condition: (store: TTradeStore) => store.barrier_count }], - [ - 'custom', - { - func: ( - value: TTradeStore['barrier_2'], - options: Partial, - store: TTradeStore, - inputs: Pick - ) => - (/^[+-]/g.test(inputs.barrier_1) && /^[+-]/g.test(value)) || - (/^(?![+-])/g.test(inputs.barrier_1) && /^(?![+-])/g.test(value)), - message: localize('Both barriers should be relative or absolute'), - }, - ], - [ - 'custom', - { - func: ( - value: TTradeStore['barrier_2'], - options: Partial, - store: TTradeStore, - inputs: Pick - ) => +inputs.barrier_1 > +value, - message: localize('Lower barrier must be lower than higher barrier.'), - }, - ], - ], - trigger: 'barrier_1', - }, - duration: { - rules: [['req', { message: localize('Duration is a required field.') }]], - }, - start_date: { - trigger: 'start_time', - }, - expiry_date: { - trigger: 'expiry_time', - }, - start_time: { - rules: [ - [ - 'custom', - { - func: (value: TTradeStore['start_time'], options: Partial, store: TTradeStore) => - store.contract_start_type === 'spot' || isTimeValid(value ?? ''), - message: localize('Please enter the start time in the format "HH:MM".'), - }, - ], - [ - 'custom', - { - func: (value: TTradeStore['start_time'], options: Partial, store: TTradeStore) => - store.contract_start_type === 'spot' || isHourValid(value ?? ''), - message: localize('Hour must be between 0 and 23.'), - }, - ], - [ - 'custom', - { - func: (value: TTradeStore['start_time'], options: Partial, store: TTradeStore) => - store.contract_start_type === 'spot' || isMinuteValid(value ?? ''), - message: localize('Minute must be between 0 and 59.'), - }, - ], - [ - 'custom', - { - func: ( - value: TTradeStore['start_time'], - options: Partial, - store: TTradeStore - ) => { - if (store.contract_start_type === 'spot') return true; - if (!isTimeValid(value ?? '')) return false; - const start_moment = toMoment(store.start_date); - const start_moment_clone = start_moment.clone(); - const [h, m] = value?.split(':') ?? []; - return isSessionAvailable( - store.sessions, - start_moment_clone.hour(+h).minute(+m), - start_moment - ); - }, - message: localize('Start time cannot be in the past.'), - }, - ], - ], - }, - expiry_time: { - rules: [ - [ - 'custom', - { - func: (value: TTradeStore['expiry_time'], options: Partial, store: TTradeStore) => - store.contract_start_type === 'spot' || isTimeValid(value ?? ''), - message: localize('Please enter the start time in the format "HH:MM".'), - }, - ], - [ - 'custom', - { - func: (value: TTradeStore['expiry_time'], options: Partial, store: TTradeStore) => - store.contract_start_type === 'spot' || isHourValid(value ?? ''), - message: localize('Hour must be between 0 and 23.'), - }, - ], - [ - 'custom', - { - func: (value: TTradeStore['expiry_time'], options: Partial, store: TTradeStore) => - store.contract_start_type === 'spot' || isMinuteValid(value ?? ''), - message: localize('Minute must be between 0 and 59.'), - }, - ], - [ - 'custom', - { - func: ( - value: TTradeStore['expiry_time'], - options: Partial, - store: TTradeStore - ) => { - if (store.contract_start_type === 'spot') return true; - if (!isTimeValid(value ?? '')) return false; - const start_moment = toMoment(store.start_date); - const start_moment_clone = start_moment.clone(); - const [h, m] = value?.split(':') ?? []; - return isSessionAvailable( - store.sessions, - start_moment_clone.hour(+h).minute(+m), - start_moment - ); - }, - message: localize('Expiry time cannot be in the past.'), - }, - ], +export const getValidationRules = (): TValidationRules => ({ + amount: { + rules: [ + ['req', { message: localize('Amount is a required field.') }], + ['number', { min: 0, type: 'float' }], + ], + }, + barrier_1: { + rules: [ + [ + 'req', + { + condition: store => !!store.barrier_count && store.form_components.indexOf('barrier') > -1, + message: localize('Barrier is a required field.'), + }, + ], + ['barrier', { condition: (store: TTradeStore) => !!store.barrier_count }], + [ + 'custom', + { + func: (value: TTradeStore['barrier_1'], options, store, inputs) => + Number(store?.barrier_count) > 1 ? +value > Number(inputs?.barrier_2) : true, + message: localize('Higher barrier must be higher than lower barrier.'), + }, ], - }, - ...getMultiplierValidationRules(), - } as const); + [ + 'custom', + { + func: (value: TTradeStore['barrier_1'], options, store, inputs) => + /^[+-]/.test(inputs?.barrier_1 ?? '') + ? tradeSpecificBarrierCheck(!!store?.is_vanilla, Number(inputs?.barrier_1)) + : true, + message: localize('Barrier cannot be zero.'), + }, + ], + ], + trigger: 'barrier_2', + }, + barrier_2: { + rules: [ + [ + 'req', + { + condition: store => store.barrier_count > 1 && store.form_components.indexOf('barrier') > -1, + message: localize('Barrier is a required field.'), + }, + ], + ['barrier', { condition: (store: TTradeStore) => !!store.barrier_count }], + [ + 'custom', + { + func: (value: TTradeStore['barrier_2'], options, store, inputs) => + (/^[+-]/g.test(inputs?.barrier_1 ?? '') && /^[+-]/g.test(value)) || + (/^(?![+-])/g.test(inputs?.barrier_1 ?? '') && /^(?![+-])/g.test(value)), + message: localize('Both barriers should be relative or absolute'), + }, + ], + [ + 'custom', + { + func: (value: TTradeStore['barrier_2'], options, store, inputs) => + Number(inputs?.barrier_1) > +value, + message: localize('Lower barrier must be lower than higher barrier.'), + }, + ], + ], + trigger: 'barrier_1', + }, + duration: { + rules: [['req', { message: localize('Duration is a required field.') }]], + }, + start_date: { + trigger: 'start_time', + }, + expiry_date: { + trigger: 'expiry_time', + }, + start_time: { + rules: [ + [ + 'custom', + { + func: (value: TTradeStore['start_time'], options, store) => + store?.contract_start_type === 'spot' || isTimeValid(value ?? ''), + message: localize('Please enter the start time in the format "HH:MM".'), + }, + ], + [ + 'custom', + { + func: (value: TTradeStore['start_time'], options, store) => + store?.contract_start_type === 'spot' || isHourValid(value ?? ''), + message: localize('Hour must be between 0 and 23.'), + }, + ], + [ + 'custom', + { + func: (value: TTradeStore['start_time'], options, store) => + store?.contract_start_type === 'spot' || isMinuteValid(value ?? ''), + message: localize('Minute must be between 0 and 59.'), + }, + ], + [ + 'custom', + { + func: (value: TTradeStore['start_time'], options, store) => { + if (store?.contract_start_type === 'spot') return true; + if (!isTimeValid(value ?? '')) return false; + const start_moment = toMoment(store?.start_date); + const start_moment_clone = start_moment.clone(); + const [h, m] = value?.split(':') ?? []; + return isSessionAvailable( + store?.sessions, + start_moment_clone.hour(+h).minute(+m), + start_moment + ); + }, + message: localize('Start time cannot be in the past.'), + }, + ], + ], + }, + expiry_time: { + rules: [ + [ + 'custom', + { + func: (value: TTradeStore['expiry_time'], options, store) => + store?.contract_start_type === 'spot' || isTimeValid(value ?? ''), + message: localize('Please enter the start time in the format "HH:MM".'), + }, + ], + [ + 'custom', + { + func: (value: TTradeStore['expiry_time'], options, store) => + store?.contract_start_type === 'spot' || isHourValid(value ?? ''), + message: localize('Hour must be between 0 and 23.'), + }, + ], + [ + 'custom', + { + func: (value: TTradeStore['expiry_time'], options, store) => + store?.contract_start_type === 'spot' || isMinuteValid(value ?? ''), + message: localize('Minute must be between 0 and 59.'), + }, + ], + [ + 'custom', + { + func: (value: TTradeStore['expiry_time'], options, store) => { + if (store?.contract_start_type === 'spot') return true; + if (!isTimeValid(value ?? '')) return false; + const start_moment = toMoment(store?.start_date); + const start_moment_clone = start_moment.clone(); + const [h, m] = value?.split(':') ?? []; + return isSessionAvailable( + store?.sessions, + start_moment_clone.hour(+h).minute(+m), + start_moment + ); + }, + message: localize('Expiry time cannot be in the past.'), + }, + ], + ], + }, + ...getMultiplierValidationRules(), +}); -export const getMultiplierValidationRules = () => - ({ - stop_loss: { - rules: [ - [ - 'req', - { - condition: (store: TTradeStore) => store.has_stop_loss && !store.stop_loss, - message: localize('Please enter a stop loss amount.'), - }, - ], - ], - }, - take_profit: { - rules: [ - [ - 'req', - { - condition: (store: TTradeStore) => store.has_take_profit && !store.take_profit, - message: localize('Please enter a take profit amount.'), - }, - ], +export const getMultiplierValidationRules = () => ({ + stop_loss: { + rules: [ + [ + 'req', + { + condition: (store: TTradeStore) => store.has_stop_loss && !store.stop_loss, + message: localize('Please enter a stop loss amount.'), + }, + ], + ], + }, + take_profit: { + rules: [ + [ + 'req', + { + condition: (store: TTradeStore) => store.has_take_profit && !store.take_profit, + message: localize('Please enter a take profit amount.'), + }, ], - }, - } as const); + ], + }, +}); diff --git a/packages/trader/src/Stores/Modules/Trading/Helpers/allow-equals.ts b/packages/trader/src/Stores/Modules/Trading/Helpers/allow-equals.ts index 189936dfe2c9..8d2eb0bdbdbf 100644 --- a/packages/trader/src/Stores/Modules/Trading/Helpers/allow-equals.ts +++ b/packages/trader/src/Stores/Modules/Trading/Helpers/allow-equals.ts @@ -1,11 +1,10 @@ import { isEmptyObject, getPropertyValue } from '@deriv/shared'; import { ContractType } from 'Stores/Modules/Trading/Helpers/contract-type'; -import { PriceProposalRequest } from '@deriv/api-types'; import { TTradeStore } from 'Types'; type THasDurationForCallPutEqual = { contract_type_list: TTradeStore['contract_types_list']; - duration_unit: string; + duration_unit: TTradeStore['duration_unit']; contract_start_type: string; }; @@ -26,7 +25,6 @@ export const hasDurationForCallPutEqual = ( if (!contract_type_list || !duration_unit || !contract_start_type) return false; const contract_list = Object.keys(contract_type_list || {}).reduce((key, list) => { - // @ts-expect-error the key always exists in the object, hence can ignore the TS error. const item: THasDurationForCallPutEqual['contract_type_list']['Ups & Downs'] = contract_type_list[list]; return [...key, ...item.categories.map(contract => contract.value)]; }, []); diff --git a/packages/trader/src/Stores/Modules/Trading/Helpers/chart.ts b/packages/trader/src/Stores/Modules/Trading/Helpers/chart.ts index c06061a0ab86..9f9d97eec88b 100644 --- a/packages/trader/src/Stores/Modules/Trading/Helpers/chart.ts +++ b/packages/trader/src/Stores/Modules/Trading/Helpers/chart.ts @@ -1,16 +1,11 @@ -type TPayload = { - data?: { - action: string; - chart_type_name?: string; - indicator_type_name?: string; - indicators_category_name?: string; - market_type_name?: string; - search_string?: string; - subform_name?: string; - tab_market_name?: string; - time_interval_name?: string; - }; - event_type: string; +import type { TEvents } from '@deriv/analytics'; + +export type TPayload = { + data: Omit< + Partial, + 'action' + > & { action: string }; + event_type: 'ce_chart_types_form' | 'ce_market_types_form' | 'ce_indicators_types_form'; }; type TStateChangeOption = { @@ -75,7 +70,7 @@ export const SUBFORM_NAME = { const getChartTypeFormAnalyticsData = (state: keyof typeof STATE_TYPES, option: TStateChangeOption = {}) => { const { chart_type_name = '', is_open, time_interval_name } = option; const chart_event_type = 'ce_chart_types_form'; - const payload = { + const payload: TPayload = { data: { action: '', chart_type_name, @@ -107,9 +102,9 @@ const getIndicatorTypeFormAnalyticsData = (state: keyof typeof STATE_TYPES, opti const indicators_subform = is_info_open ? SUBFORM_NAME.INDICATORS_INFO : SUBFORM_NAME.INDICATORS_TYPE; const info_open_close_action = is_info_open ? ACTION.INFO_OPEN : ACTION.INFO_CLOSE; const open_close_action = is_open ? ACTION.OPEN : ACTION.CLOSE; - const payload: TPayload = { + const payload = { event_type: indicators_event_type, - }; + } as TPayload; if ( (state === STATE_TYPES.INDICATOR_SEARCH && !option.search_string) || ((state === STATE_TYPES.INDICATOR_ADDED || @@ -183,9 +178,9 @@ const getMarketTypeFormAnalyticsData = (state: keyof typeof STATE_TYPES, option: const market_event_type = 'ce_market_types_form'; const favorites_action = is_favorite ? ACTION.ADD_TO_FAVORITES : ACTION.DELETE_FROM_FAVORITES; const open_close_action = is_open ? ACTION.OPEN : ACTION.CLOSE; - const payload: TPayload = { + const payload = { event_type: market_event_type, - }; + } as TPayload; if ( (state === STATE_TYPES.MARKET_SEARCH && !option.search_string) || (state === STATE_TYPES.FAVORITE_MARKETS_TOGGLE && !market_type_name) diff --git a/packages/trader/src/Stores/Modules/Trading/Helpers/contract-type.ts b/packages/trader/src/Stores/Modules/Trading/Helpers/contract-type.ts index 35f9b6c9210f..f49fb573e61a 100644 --- a/packages/trader/src/Stores/Modules/Trading/Helpers/contract-type.ts +++ b/packages/trader/src/Stores/Modules/Trading/Helpers/contract-type.ts @@ -159,7 +159,7 @@ export const ContractType = (() => { return trade_types; }; - const getArrayDefaultValue = (arr_new_values: Array, value: string | number) => + const getArrayDefaultValue = (arr_new_values: Array, value: T): T => arr_new_values.indexOf(value) !== -1 ? value : arr_new_values[0]; const getContractValues = (store: TTradeStore): TContractValues | Record => { @@ -292,7 +292,7 @@ export const ContractType = (() => { }; const getDurationMinMax = (contract_type: string, contract_start_type: string, contract_expiry_type?: string) => { - let duration_min_max: TTradeStore['duration_min_max'] | TTradeStore['duration_min_max'][string] = + let duration_min_max: TTradeStore['duration_min_max'] = getPropertyValue(available_contract_types, [ contract_type, 'config', @@ -302,7 +302,12 @@ export const ContractType = (() => { ]) || {}; if (contract_expiry_type) { - duration_min_max = 'contract_expiry_type' in duration_min_max ? duration_min_max[contract_expiry_type] : {}; + duration_min_max = + 'contract_expiry_type' in duration_min_max + ? (duration_min_max as unknown as { [key: string]: TTradeStore['duration_min_max'] })[ + contract_expiry_type + ] + : {}; } return { duration_min_max }; @@ -579,7 +584,7 @@ export const ContractType = (() => { moment_obj.minute(Math.ceil(moment_obj.minute() / 5) * 5); const getTradeTypes = (contract_type: string) => ({ - trade_types: getPropertyValue(available_contract_types, [contract_type, 'config', 'trade_types']) as string[], + trade_types: getPropertyValue(available_contract_types, [contract_type, 'config', 'trade_types']), }); const getBarriers = (contract_type: string, expiry_type: string, stored_barrier_value?: string) => { diff --git a/packages/trader/src/Stores/Modules/Trading/Helpers/limit-orders.ts b/packages/trader/src/Stores/Modules/Trading/Helpers/limit-orders.ts index 2020d20c37bb..a7a0183a7638 100644 --- a/packages/trader/src/Stores/Modules/Trading/Helpers/limit-orders.ts +++ b/packages/trader/src/Stores/Modules/Trading/Helpers/limit-orders.ts @@ -2,11 +2,10 @@ import { isMultiplierContract, BARRIER_COLORS, BARRIER_LINE_STYLES } from '@deri import { ChartBarrierStore } from '../../SmartChart/chart-barrier-store'; import { removeBarrier } from '../../SmartChart/Helpers/barriers'; import { useStore } from '@deriv/stores'; +import { getProposalInfo } from './proposal'; -const isLimitOrderBarrierSupported = ( - contract_type: string, - contract_info: ReturnType['portfolio']['all_positions'][0]['contract_info'] -) => isMultiplierContract(contract_type) && contract_info.limit_order; +const isLimitOrderBarrierSupported = (contract_type: string, contract_info: ReturnType) => + isMultiplierContract(contract_type) && contract_info.limit_order; export const LIMIT_ORDER_TYPES = { STOP_OUT: 'stop_out', @@ -18,14 +17,14 @@ type TBarrier = ChartBarrierStore & { key?: string }; type TSetLimitOrderBarriers = { barriers: TBarrier[]; - contract_type: string; - contract_info: Parameters[1]; + contract_type?: string; + contract_info?: ReturnType; is_over: boolean; }; export const setLimitOrderBarriers = ({ barriers, - contract_type, - contract_info = {}, + contract_type = '', + contract_info = {} as ReturnType, is_over, }: TSetLimitOrderBarriers) => { if (is_over && isLimitOrderBarrierSupported(contract_type, contract_info)) { @@ -53,7 +52,6 @@ export const setLimitOrderBarriers = ({ barrier.onChange({ high: obj_limit_order.value, - low: undefined, //TODO: wait until ChartBarrierStore is ts migrated and 'low' can be an optional parameter }); } else { const obj_barrier = { @@ -87,7 +85,7 @@ export const setLimitOrderBarriers = ({ */ export const getLimitOrder = ( contract_update: Pick< - ReturnType['contract_trade'], + ReturnType['contract_trade']['contracts'][number], | 'has_contract_update_stop_loss' | 'has_contract_update_take_profit' | 'contract_update_stop_loss' diff --git a/packages/trader/src/Stores/Modules/Trading/Helpers/logic.ts b/packages/trader/src/Stores/Modules/Trading/Helpers/logic.ts index b586a0425592..e1cd547ee251 100644 --- a/packages/trader/src/Stores/Modules/Trading/Helpers/logic.ts +++ b/packages/trader/src/Stores/Modules/Trading/Helpers/logic.ts @@ -1,5 +1,5 @@ -import { TTradeStore } from 'Types'; +import { TContractInfo } from '@deriv/shared'; import ServerTime from '_common/base/server_time'; -export const isCancellationExpired = (contract_info: TTradeStore['proposal_info'][string]) => +export const isCancellationExpired = (contract_info: TContractInfo) => !!contract_info.cancellation?.date_expiry && contract_info.cancellation.date_expiry < ServerTime.get().unix(); diff --git a/packages/trader/src/Stores/Modules/Trading/Helpers/process.ts b/packages/trader/src/Stores/Modules/Trading/Helpers/process.ts index 9c4afbcc970d..bab8b78af2da 100644 --- a/packages/trader/src/Stores/Modules/Trading/Helpers/process.ts +++ b/packages/trader/src/Stores/Modules/Trading/Helpers/process.ts @@ -23,7 +23,7 @@ const processInSequence = async ( }); }; -export const processTradeParams = async (store: TTradeStore, new_state: DeepPartial) => { +export const processTradeParams = async (store: TTradeStore, new_state: Partial) => { const functions = getMethodsList(store, new_state); await processInSequence(store, functions); diff --git a/packages/trader/src/Stores/Modules/Trading/Helpers/proposal.ts b/packages/trader/src/Stores/Modules/Trading/Helpers/proposal.ts index 0ae9ff9fde8c..7231a2f97d9f 100644 --- a/packages/trader/src/Stores/Modules/Trading/Helpers/proposal.ts +++ b/packages/trader/src/Stores/Modules/Trading/Helpers/proposal.ts @@ -71,7 +71,7 @@ export const getProposalInfo = ( const is_stake = contract_basis?.value === 'stake'; - const price = is_stake ? stake : proposal[contract_basis?.value as keyof Proposal]; + const price = is_stake ? stake : (proposal[contract_basis?.value as keyof Proposal] as string | number); let has_increased = false; if (price !== undefined && price !== null) { diff --git a/packages/trader/src/Stores/Modules/Trading/trade-store.js b/packages/trader/src/Stores/Modules/Trading/trade-store.ts similarity index 82% rename from packages/trader/src/Stores/Modules/Trading/trade-store.js rename to packages/trader/src/Stores/Modules/Trading/trade-store.ts index d20856b83796..0e304c394dc4 100644 --- a/packages/trader/src/Stores/Modules/Trading/trade-store.js +++ b/packages/trader/src/Stores/Modules/Trading/trade-store.ts @@ -1,5 +1,4 @@ import * as Symbol from './Actions/symbol'; - import { WS, cloneObject, @@ -21,7 +20,6 @@ import { isTurbosContract, isVanillaContract, pickDefaultSymbol, - removeBarrier, resetEndTimeOnVolatilityIndices, showDigitalOptionsUnavailableError, showUnavailableLocationError, @@ -32,6 +30,7 @@ import { BARRIER_LINE_STYLES, } from '@deriv/shared'; import { RudderStack } from '@deriv/analytics'; +import type { TEvents } from '@deriv/analytics'; import { localize } from '@deriv/translations'; import { getValidationRules, getMultiplierValidationRules } from 'Stores/Modules/Trading/Constants/validation-rules'; import { ContractType } from 'Stores/Modules/Trading/Helpers/contract-type'; @@ -45,13 +44,136 @@ import { action, computed, makeObservable, observable, override, reaction, runIn import { createProposalRequests, getProposalErrorField, getProposalInfo } from './Helpers/proposal'; import { getHoveredColor } from './Helpers/barrier-utils'; import BaseStore from '../../base-store'; +import { TTextValueNumber, TTextValueStrings } from 'Types'; import { ChartBarrierStore } from '../SmartChart/chart-barrier-store'; import debounce from 'lodash.debounce'; import { setLimitOrderBarriers } from './Helpers/limit-orders'; -import { STATE_TYPES, getChartAnalyticsData } from './Helpers/chart'; +import type { TCoreStores } from '@deriv/stores/types'; +import { + ActiveSymbols, + ActiveSymbolsRequest, + Buy, + BuyContractResponse, + History, + PriceProposalRequest, + PriceProposalResponse, + ServerTimeRequest, + TickSpotData, + TicksHistoryRequest, + TicksHistoryResponse, + TicksStreamResponse, + TradingTimesRequest, +} from '@deriv/api-types'; +import { STATE_TYPES, TPayload, getChartAnalyticsData } from './Helpers/chart'; + +type TBarriers = Array< + ChartBarrierStore & { + hideOffscreenBarrier?: boolean; + isSingleBarrier?: boolean; + } +>; +type TChartLayout = { + adj: boolean; + aggregationType: string; + animation?: boolean; + candleWidth: number; + chartScale: string; + chartType: string; + crosshair: number; + extended: boolean; + flipped: boolean; + interval: number; + marketSessions: Partial>; + outliers: boolean; + panels: { + chart: { + chartName: string; + display: string; + index: number; + percent: number; + yAxis: { + name: string; + position: null; + }; + yaxisLHS: string[]; + yaxisRHS: string[]; + }; + }; + periodicity: number; + previousMaxTicks?: number; + range: Partial>; + setSpan: Partial>; + studies?: Partial>; + symbols: [ + { + interval: number; + periodicity: number; + setSpan: Partial>; + symbol: string; + symbolObject: ActiveSymbols[number]; + timeUnit: string; + } + ]; + timeUnit: string; + volumeUnderlay: boolean; +}; +type TChartStateChangeOption = { symbol: string | undefined; isClosed: boolean }; +type TContractDataForGTM = Omit, 'cancellation' | 'limit_order'> & + ReturnType & { + buy_price: number; + }; +type TPrevChartLayout = + | (TChartLayout & { + isDone?: VoidFunction; + is_used?: boolean; + }) + | null; +type TContractTypesList = { + [key: string]: { + name: string; + categories: TTextValueStrings[]; + }; +}; +type TDurationMinMax = { + [key: string]: { min: number; max: number }; +}; +type TResponse = Res & { + echo_req: Req; + error?: { + code: string; + message: string; + details?: Res[K] & { field: string }; + }; +}; +type TProposalInfo = { + [key: string]: ReturnType; +}; +type TStakeBoundary = Record< + string, + { + min_stake?: number; + max_stake?: number; + } +>; +type TTicksHistoryResponse = TicksHistoryResponse | TicksStreamResponse; +type TToastBoxListItem = { + component: JSX.Element | null; + contract_types: TTextValueStrings[]; + icon: string; + key: string; + label: string; +}; +type TToastBoxObject = { + key?: boolean; + buy_price?: string; + currency?: string; + contract_type?: string; + list?: Array; +}; +type TBarriersData = Record | { barrier: string; barrier_choices: string[] }; const store_name = 'trade_store'; -const g_subscribers_map = {}; // blame amin.m +const g_subscribers_map: Partial>> = {}; // blame amin.m export default class TradeStore extends BaseStore { // Control values @@ -62,53 +184,53 @@ export default class TradeStore extends BaseStore { has_equals_only = false; // Underlying - symbol; + symbol = ''; is_market_closed = false; previous_symbol = ''; - active_symbols = []; + active_symbols: ActiveSymbols = []; - form_components = []; + form_components: string[] = []; // Contract Type contract_expiry_type = ''; contract_start_type = ''; contract_type = ''; - contract_types_list = {}; - trade_types = {}; + contract_types_list: TContractTypesList = {}; + trade_types: { [key: string]: string } = {}; // Amount amount = 10; basis = ''; - basis_list = []; + basis_list: Array = []; currency = ''; - stake_boundary = {}; + stake_boundary: Partial = {}; // Duration duration = 5; - duration_min_max = {}; + duration_min_max: TDurationMinMax = {}; duration_unit = ''; - duration_units_list = []; - expiry_date = ''; - expiry_epoch = ''; - expiry_time = ''; - expiry_type = 'duration'; + duration_units_list: Array = []; + expiry_date: string | null = ''; + expiry_epoch: number | string = ''; + expiry_time: string | null = ''; + expiry_type: string | null = 'duration'; // Barrier barrier_1 = ''; barrier_2 = ''; barrier_count = 0; - barriers = []; + main_barrier: ChartBarrierStore | null = null; + barriers: TBarriers = []; hovered_barrier = ''; - main_barrier = null; - barrier_choices = []; + barrier_choices: string[] = []; // Start Time - start_date = Number(0); // Number(0) refers to 'now' - start_dates_list = []; - start_time = null; - sessions = []; + start_date = 0; // 0 refers to 'now' + start_dates_list: Array<{ text: string; value: number }> = []; + start_time: string | null = null; + sessions: Array<{ open: moment.Moment; close: moment.Moment }> = []; - market_open_times = []; + market_open_times: string[] = []; // End Date Time /** * An array that contains market closing time. @@ -116,68 +238,70 @@ export default class TradeStore extends BaseStore { * e.g. ["04:00:00", "08:00:00"] * */ - market_close_times = []; + market_close_times: string[] = []; // Last Digit last_digit = 5; is_mobile_digit_view_selected = false; // Purchase - proposal_info = {}; - purchase_info = {}; + proposal_info: TProposalInfo = {}; + purchase_info: Partial = {}; // Chart loader observables - is_chart_loading; + is_chart_loading?: boolean; should_show_active_symbols_loading = false; // Accumulator trade params - accumulator_range_list = []; + accumulator_range_list: number[] = []; growth_rate = 0.03; maximum_payout = 0; maximum_ticks = 0; - ticks_history_stats = {}; + ticks_history_stats: { + ticks_stayed_in?: number[]; + last_tick_epoch?: number; + } = {}; tick_size_barrier = 0; // Multiplier trade params - multiplier; - multiplier_range_list = []; - stop_loss; - take_profit; + multiplier = 0; + multiplier_range_list: TTextValueNumber[] = []; + stop_loss?: string; + take_profit?: string; has_stop_loss = false; has_take_profit = false; has_cancellation = false; - commission; - cancellation_price; - stop_out; - expiration; - hovered_contract_type; + commission?: string | number; + cancellation_price?: number; + stop_out?: number; + expiration?: number; + hovered_contract_type?: string | null; cancellation_duration = '60m'; - cancellation_range_list = []; + cancellation_range_list: Array = []; // Turbos trade params - long_barriers = {}; - short_barriers = {}; + long_barriers: TBarriersData = {}; + short_barriers: TBarriersData = {}; // Vanilla trade params - strike_price_choices = {}; + strike_price_choices: TBarriersData = {}; // Mobile is_trade_params_expanded = true; //Toastbox - contract_purchase_toast_box; + contract_purchase_toast_box?: TToastBoxObject; - addTickByProposal = () => null; debouncedProposal = debounce(this.requestProposal, 500); - proposal_requests = {}; + proposal_requests: Record> = {}; is_purchasing_contract = false; - initial_barriers; + initial_barriers?: { barrier_1: string; barrier_2: string }; is_initial_barrier_applied = false; should_skip_prepost_lifecycle = false; - constructor({ root_store }) { + constructor({ root_store }: { root_store: TCoreStores }) { const local_storage_properties = [ 'amount', 'currency', @@ -337,7 +461,6 @@ export default class TradeStore extends BaseStore { resetErrorServices: action.bound, resetPreviousSymbol: action.bound, setActiveSymbols: action.bound, - setAllowEqual: action.bound, setBarrierChoices: action.bound, setChartStatus: action.bound, setContractPurchaseToastbox: action.bound, @@ -347,14 +470,12 @@ export default class TradeStore extends BaseStore { setMarketStatus: action.bound, setMobileDigitView: action.bound, setPreviousSymbol: action.bound, - setPurchaseSpotBarrier: action.bound, setSkipPrePostLifecycle: action.bound, setStakeBoundary: action.bound, setTradeStatus: action.bound, show_digits_stats: computed, themeChangeListener: action.bound, updateBarrierColor: action.bound, - updateLimitOrderBarriers: action.bound, updateStore: action.bound, updateSymbol: action.bound, }); @@ -427,7 +548,7 @@ export default class TradeStore extends BaseStore { } ); when( - () => this.accumulator_range_list.length, + () => !!this.accumulator_range_list.length, () => this.setDefaultGrowthRate() ); } @@ -464,14 +585,14 @@ export default class TradeStore extends BaseStore { } } - setSkipPrePostLifecycle(should_skip) { + setSkipPrePostLifecycle(should_skip: boolean) { if (!!should_skip !== !!this.should_skip_prepost_lifecycle) { // to skip assignment if no change is made this.should_skip_prepost_lifecycle = should_skip; } } - setTradeStatus(status) { + setTradeStatus(status: boolean) { this.is_trade_enabled = status; } @@ -531,7 +652,7 @@ export default class TradeStore extends BaseStore { return; } - if (!active_symbols || !active_symbols.length) { + if (!active_symbols?.length) { await WS.wait('get_settings'); /* * This logic is related to EU country checks @@ -564,7 +685,9 @@ export default class TradeStore extends BaseStore { runInAction(() => { const contract_categories = ContractType.getContractCategories(); this.processNewValuesAsync({ - ...contract_categories, + ...(contract_categories as Pick & { + has_only_forward_starting_contracts: boolean; + }), ...ContractType.getContractType(contract_categories.contract_types_list, this.contract_type), }); this.processNewValuesAsync(ContractType.getContractValues(this)); @@ -603,7 +726,7 @@ export default class TradeStore extends BaseStore { ); } - async onChangeMultiple(values) { + async onChangeMultiple(values: Partial) { Object.keys(values).forEach(name => { if (!(name in this)) { throw new Error(`Invalid Argument: ${name}`); @@ -614,7 +737,7 @@ export default class TradeStore extends BaseStore { this.validateAllProperties(); // then run validation before sending proposal } - async onChange(e) { + async onChange(e: { target: { name: string; value: unknown } }) { const { name, value } = e.target; if (name === 'symbol' && value) { // set trade params skeleton and chart loader to true until processNewValuesAsync resolves @@ -627,7 +750,7 @@ export default class TradeStore extends BaseStore { } else if (name === 'currency') { // Only allow the currency dropdown change if client is not logged in if (!this.root_store.client.is_logged_in) { - this.root_store.client.selectCurrency(value); + this.root_store.client.selectCurrency(value as string); } } else if (name === 'expiry_date') { this.expiry_time = null; @@ -645,19 +768,15 @@ export default class TradeStore extends BaseStore { this.root_store.common.setSelectedContractType(this.contract_type); } - setHoveredBarrier(hovered_value) { + setHoveredBarrier(hovered_value: string) { this.hovered_barrier = hovered_value; } - setPreviousSymbol(symbol) { + setPreviousSymbol(symbol: string) { if (this.previous_symbol !== symbol) this.previous_symbol = symbol; } - setAllowEqual(is_equal) { - this.is_equal = is_equal; - } - - setIsTradeParamsExpanded(value) { + setIsTradeParamsExpanded(value: boolean) { this.is_trade_params_expanded = value; } @@ -665,7 +784,7 @@ export default class TradeStore extends BaseStore { this.setMarketStatus(isMarketClosed(this.active_symbols, this.previous_symbol)); await Symbol.onChangeSymbolAsync(this.previous_symbol); - await this.updateSymbol(this.symbol); + this.updateSymbol(this.symbol); this.setChartStatus(false); runInAction(() => { @@ -673,18 +792,18 @@ export default class TradeStore extends BaseStore { }); } - updateBarrierColor(is_dark_mode) { + updateBarrierColor(is_dark_mode: boolean) { if (this.main_barrier) { this.main_barrier.updateBarrierColor(is_dark_mode); } } - onHoverPurchase(is_over, contract_type) { + onHoverPurchase(is_over: boolean, contract_type?: string) { if (this.is_accumulator) return; if (this.is_purchase_enabled && this.main_barrier && !this.is_multiplier) { - this.main_barrier.updateBarrierShade(is_over, contract_type); + this.main_barrier.updateBarrierShade(is_over, contract_type ?? ''); } else if (!is_over && this.main_barrier && !this.is_multiplier) { - this.main_barrier.updateBarrierShade(false, contract_type); + this.main_barrier.updateBarrierShade(false, contract_type ?? ''); } this.hovered_contract_type = is_over ? contract_type : null; @@ -692,44 +811,7 @@ export default class TradeStore extends BaseStore { barriers: this.root_store.portfolio.barriers, is_over, contract_type, - contract_info: this.proposal_info[contract_type], - }); - } - - setPurchaseSpotBarrier(is_over, position) { - const key = 'PURCHASE_SPOT_BARRIER'; - if (!is_over) { - removeBarrier(this.root_store.portfolio.barriers, key); - return; - } - - let purchase_spot_barrier = this.root_store.portfolio.barriers.find(b => b.key === key); - if (purchase_spot_barrier) { - if (purchase_spot_barrier.high !== +position.contract_info.entry_spot) { - purchase_spot_barrier.onChange({ - high: position.contract_info.entry_spot, - }); - } - } else { - purchase_spot_barrier = new ChartBarrierStore(position.contract_info.entry_spot); - purchase_spot_barrier.key = key; - purchase_spot_barrier.draggable = false; - purchase_spot_barrier.hideOffscreenBarrier = true; - purchase_spot_barrier.isSingleBarrier = true; - purchase_spot_barrier.updateBarrierColor(this.root_store.ui.is_dark_mode_on); - this.barriers.push(purchase_spot_barrier); - this.root_store.portfolio.barriers.push(purchase_spot_barrier); - } - } - - updateLimitOrderBarriers(is_over, position) { - const contract_info = position.contract_info; - const { barriers } = this; - setLimitOrderBarriers({ - barriers, - contract_info, - contract_type: contract_info.contract_type, - is_over, + contract_info: this.proposal_info[contract_type ?? ''], }); } @@ -755,19 +837,18 @@ export default class TradeStore extends BaseStore { return this.root_store.portfolio.barriers && toJS(this.root_store.portfolio.barriers); } - setMainBarrier = proposal_info => { + setMainBarrier = (proposal_info: PriceProposalRequest) => { if (!proposal_info) { return; } - const { barrier, contract_type, high_barrier, low_barrier } = proposal_info; - + const { contract_type, barrier, barrier2 } = proposal_info; if (isBarrierSupported(contract_type)) { const color = this.root_store.ui.is_dark_mode_on ? BARRIER_COLORS.DARK_GRAY : BARRIER_COLORS.GRAY; // create barrier only when it's available in response this.main_barrier = new ChartBarrierStore( - this.hovered_barrier || barrier || high_barrier, - low_barrier, + this.hovered_barrier || barrier, + barrier2, this.onChartBarrierChange, { color: this.hovered_barrier ? getHoveredColor(contract_type) : color, @@ -783,14 +864,14 @@ export default class TradeStore extends BaseStore { onPurchase = debounce(this.processPurchase, 300); - processPurchase(proposal_id, price, type) { + processPurchase(proposal_id: string, price: string | number, type: string) { if (!this.is_purchase_enabled) return; if (proposal_id) { this.is_purchase_enabled = false; this.is_purchasing_contract = true; const is_tick_contract = this.duration_unit === 't'; processPurchase(proposal_id, price).then( - action(response => { + action((response: TResponse) => { if (!this.is_trade_component_mounted) { this.enablePurchase(); this.is_purchasing_contract = false; @@ -820,7 +901,7 @@ export default class TradeStore extends BaseStore { if (this.proposal_info[type] && this.proposal_info[type].id !== proposal_id) { throw new Error('Proposal ID does not match.'); } - const contract_data = { + const contract_data: TContractDataForGTM = { ...this.proposal_requests[type], ...this.proposal_info[type], buy_price: response.buy.buy_price, @@ -831,8 +912,8 @@ export default class TradeStore extends BaseStore { if (contract_id) { const shortcode = response.buy.shortcode; const { category, underlying } = extractInfoFromShortcode(shortcode); - const is_digit_contract = isDigitContractType(category.toUpperCase()); - const contract_type = category.toUpperCase(); + const is_digit_contract = isDigitContractType(category?.toUpperCase() ?? ''); + const contract_type = category?.toUpperCase(); this.root_store.contract_trade.addContract({ contract_id, start_time, @@ -886,10 +967,10 @@ export default class TradeStore extends BaseStore { const el_purchase_value = document.getElementsByClassName('trade-container__price-info'); const el_purchase_buttons = document.getElementsByClassName('btn-purchase'); [].forEach.bind(el_purchase_buttons, el => { - el.classList.add('btn-purchase--disabled'); + (el as HTMLButtonElement).classList.add('btn-purchase--disabled'); })(); [].forEach.bind(el_purchase_value, el => { - el.classList.add('trade-container__price-info--fade'); + (el as HTMLDivElement).classList.add('trade-container__price-info--fade'); })(); }; @@ -898,11 +979,11 @@ export default class TradeStore extends BaseStore { * @param {Object} new_state - new values to update the store with * @return {Object} returns the object having only those values that are updated */ - updateStore(new_state) { + updateStore(new_state: Partial) { Object.keys(cloneObject(new_state) || {}).forEach(key => { if (key === 'root_store' || ['validation_rules', 'validation_errors', 'currency'].indexOf(key) > -1) return; - if (JSON.stringify(this[key]) === JSON.stringify(new_state[key])) { - delete new_state[key]; + if (JSON.stringify(this[key as keyof this]) === JSON.stringify(new_state[key as keyof TradeStore])) { + delete new_state[key as keyof TradeStore]; } else { if (key === 'symbol') { this.is_purchase_enabled = false; @@ -913,7 +994,7 @@ export default class TradeStore extends BaseStore { new_state.start_date = parseInt(new_state.start_date); } - this[key] = new_state[key]; + this[key as 'currency'] = new_state[key as keyof TradeStore] as TradeStore['currency']; // validation is done in mobx intercept (base_store.js) // when barrier_1 is set, it is compared with store.barrier_2 (which is not updated yet) @@ -926,9 +1007,9 @@ export default class TradeStore extends BaseStore { } async processNewValuesAsync( - obj_new_values = {}, + obj_new_values: Partial = {}, is_changed_by_user = false, - obj_old_values = {}, + obj_old_values: Partial | null = {}, should_forget_first = true ) { // To switch to rise_fall_equal contract type when allow equal is checked on first page refresh or @@ -962,7 +1043,7 @@ export default class TradeStore extends BaseStore { savePreviousChartMode('', null); } - if (/\bduration\b/.test(Object.keys(obj_new_values))) { + if (/\bduration\b/.test(Object.keys(obj_new_values) as unknown as string)) { // TODO: fix this in input-field.jsx if (typeof obj_new_values.duration === 'string') { obj_new_values.duration = +obj_new_values.duration; @@ -974,27 +1055,27 @@ export default class TradeStore extends BaseStore { this.forgetAllProposal(); this.proposal_requests = {}; } - if (is_changed_by_user && /\bcurrency\b/.test(Object.keys(obj_new_values))) { + if (is_changed_by_user && /\bcurrency\b/.test(Object.keys(obj_new_values) as unknown as string)) { const prev_currency = obj_old_values?.currency || this.currency; const has_currency_changed = obj_new_values.currency !== prev_currency; const should_reset_stake = - isCryptocurrency(obj_new_values.currency) || + isCryptocurrency(obj_new_values.currency ?? '') || // For switch between fiat and crypto and vice versa - isCryptocurrency(obj_new_values.currency) !== isCryptocurrency(prev_currency); + isCryptocurrency(obj_new_values.currency ?? '') !== isCryptocurrency(prev_currency); if (has_currency_changed && should_reset_stake) { - obj_new_values.amount = obj_new_values.amount || getMinPayout(obj_new_values.currency); + obj_new_values.amount = obj_new_values.amount || getMinPayout(obj_new_values.currency ?? ''); } - this.currency = obj_new_values.currency; + this.currency = obj_new_values.currency ?? ''; } let has_only_forward_starting_contracts; if (Object.keys(obj_new_values).includes('symbol')) { this.setPreviousSymbol(this.symbol); - await Symbol.onChangeSymbolAsync(obj_new_values.symbol); - this.setMarketStatus(isMarketClosed(this.active_symbols, obj_new_values.symbol)); + await Symbol.onChangeSymbolAsync(obj_new_values.symbol ?? ''); + this.setMarketStatus(isMarketClosed(this.active_symbols, obj_new_values.symbol ?? '')); has_only_forward_starting_contracts = ContractType.getContractCategories().has_only_forward_starting_contracts; } @@ -1005,7 +1086,10 @@ export default class TradeStore extends BaseStore { const new_state = this.updateStore(cloneObject(obj_new_values)); - if (is_changed_by_user || /\b(symbol|contract_types_list)\b/.test(Object.keys(new_state))) { + if ( + is_changed_by_user || + /\b(symbol|contract_types_list)\b/.test(Object.keys(new_state) as unknown as string) + ) { this.updateStore({ // disable purchase button(s), clear contract info is_purchase_enabled: false, @@ -1030,7 +1114,7 @@ export default class TradeStore extends BaseStore { ...(!this.is_initial_barrier_applied ? this.initial_barriers : {}), }); this.is_initial_barrier_applied = true; - if (/\b(contract_type|currency)\b/.test(Object.keys(new_state))) { + if (/\b(contract_type|currency)\b/.test(Object.keys(new_state) as unknown as string)) { this.validateAllProperties(); } this.debouncedProposal(); @@ -1051,11 +1135,11 @@ export default class TradeStore extends BaseStore { return isDigitTradeType(this.contract_type); } - setMobileDigitView(bool) { + setMobileDigitView(bool: boolean) { this.is_mobile_digit_view_selected = bool; } - pushPurchaseDataToGtm(contract_data) { + pushPurchaseDataToGtm(contract_data: TContractDataForGTM) { const data = { event: 'buy_contract', bom_ui: 'new', @@ -1105,7 +1189,7 @@ export default class TradeStore extends BaseStore { } if (!isEmptyObject(requests)) { - this.proposal_requests = requests; + this.proposal_requests = requests as Record>; this.purchase_info = {}; Object.keys(this.proposal_requests).forEach(type => { WS.subscribeProposal(this.proposal_requests[type], this.onProposalResponse); @@ -1119,11 +1203,11 @@ export default class TradeStore extends BaseStore { if (length > 0) WS.forgetAll('proposal'); } - setMarketStatus(status) { + setMarketStatus(status: boolean) { this.is_market_closed = status; } - onProposalResponse(response) { + onProposalResponse(response: TResponse) { const { contract_type } = response.echo_req; const prev_proposal_info = getPropertyValue(this.proposal_info, contract_type) || {}; const obj_prev_contract_basis = getPropertyValue(prev_proposal_info, 'obj_contract_basis') || {}; @@ -1155,11 +1239,11 @@ export default class TradeStore extends BaseStore { if (this.is_accumulator && this.proposal_info?.ACCU) { const { barrier_spot_distance, - maximum_ticks, + maximum_ticks = 0, ticks_stayed_in, - tick_size_barrier, + tick_size_barrier = 0, last_tick_epoch, - maximum_payout, + maximum_payout = 0, high_barrier, low_barrier, spot_time, @@ -1189,10 +1273,9 @@ export default class TradeStore extends BaseStore { } if (this.hovered_contract_type === contract_type) { - this.addTickByProposal(response); setLimitOrderBarriers({ barriers: this.root_store.portfolio.barriers, - contract_info: this.proposal_info[this.hovered_contract_type], + contract_info: this.proposal_info[this.hovered_contract_type ?? ''], contract_type, is_over: true, }); @@ -1233,7 +1316,7 @@ export default class TradeStore extends BaseStore { if ((this.is_turbos || this.is_vanilla) && response.error.details?.barrier_choices) { const { barrier_choices, max_stake, min_stake } = response.error.details; this.setStakeBoundary(contract_type, min_stake, max_stake); - this.setBarrierChoices(barrier_choices); + this.setBarrierChoices(barrier_choices as string[]); if (!this.barrier_choices.includes(this.barrier_1)) { // Since on change of duration `proposal` API call is made which returns a new set of barrier values. // The new list is set and the mid value is assigned @@ -1250,8 +1333,8 @@ export default class TradeStore extends BaseStore { } else { this.validateAllProperties(); if (this.is_turbos || this.is_vanilla) { - const { max_stake, min_stake, barrier_choices } = response.proposal; - this.setBarrierChoices(barrier_choices); + const { max_stake, min_stake, barrier_choices } = response.proposal ?? {}; + this.setBarrierChoices(barrier_choices as string[]); this.setStakeBoundary(contract_type, min_stake, max_stake); } } @@ -1261,15 +1344,15 @@ export default class TradeStore extends BaseStore { } } - onChartBarrierChange(barrier_1, barrier_2) { + onChartBarrierChange(barrier_1: string, barrier_2?: string) { this.processNewValuesAsync({ barrier_1, barrier_2 }, true); } onAllowEqualsChange() { - this.processNewValuesAsync({ contract_type: parseInt(this.is_equal) ? 'rise_fall_equal' : 'rise_fall' }, true); + this.processNewValuesAsync({ contract_type: this.is_equal ? 'rise_fall_equal' : 'rise_fall' }, true); } - updateSymbol(underlying) { + updateSymbol(underlying: string) { if (!underlying) return; this.onChange({ target: { @@ -1287,7 +1370,7 @@ export default class TradeStore extends BaseStore { if (!this.validation_rules.duration) return; - const index = this.validation_rules.duration.rules.findIndex(item => item[0] === 'number'); + const index = this.validation_rules.duration.rules?.findIndex(item => item[0] === 'number'); const limits = this.duration_min_max[this.contract_expiry_type] || false; if (limits) { @@ -1296,10 +1379,10 @@ export default class TradeStore extends BaseStore { max: convertDurationLimit(+limits.max, this.duration_unit), }; - if (index > -1) { - this.validation_rules.duration.rules[index][1] = duration_options; + if (Number(index) > -1 && this.validation_rules.duration.rules) { + this.validation_rules.duration.rules[Number(index)][1] = duration_options; } else { - this.validation_rules.duration.rules.push(['number', duration_options]); + this.validation_rules.duration.rules?.push(['number', duration_options]); } this.validateProperty('duration', this.duration); } @@ -1352,11 +1435,11 @@ export default class TradeStore extends BaseStore { return Promise.resolve(); } - networkStatusChangeListener(is_online) { + networkStatusChangeListener(is_online: boolean) { this.setTradeStatus(is_online); } - themeChangeListener(is_dark_mode_on) { + themeChangeListener(is_dark_mode_on: boolean) { this.updateBarrierColor(is_dark_mode_on); } @@ -1383,11 +1466,11 @@ export default class TradeStore extends BaseStore { }); } - setChartStatus(status) { + setChartStatus(status: boolean) { this.is_chart_loading = status; } - async initAccountCurrency(new_currency) { + async initAccountCurrency(new_currency: string) { if (this.currency === new_currency) return; await this.processNewValuesAsync({ currency: new_currency }, true, { currency: this.currency }, false); @@ -1422,7 +1505,7 @@ export default class TradeStore extends BaseStore { } } - prev_chart_layout = null; + prev_chart_layout: TPrevChartLayout = null; get chart_layout() { let layout = null; @@ -1433,38 +1516,40 @@ export default class TradeStore extends BaseStore { } get is_crypto_multiplier() { - return this.contract_type === 'multiplier' && /^cry/.test(this.symbol); + return this.contract_type === 'multiplier' && this.symbol.startsWith('cry'); } - exportLayout(layout) { + exportLayout(layout: TChartLayout) { delete layout.previousMaxTicks; // TODO: fix it in smartcharts this.prev_chart_layout = layout; - this.prev_chart_layout.isDone = () => { - this.prev_chart_layout.is_used = true; - this.setChartStatus(false); - }; + if (this.prev_chart_layout) { + this.prev_chart_layout.isDone = () => { + if (this.prev_chart_layout) this.prev_chart_layout.is_used = true; + this.setChartStatus(false); + }; + } } // ---------- WS ---------- - wsSubscribe = (req, callback) => { - const passthrough_callback = (...args) => { + wsSubscribe = (req: TicksHistoryRequest, callback: (response: TTicksHistoryResponse) => void) => { + const passthrough_callback = (...args: [TTicksHistoryResponse]) => { callback(...args); if (this.is_accumulator) { let current_spot_data = {}; if ('tick' in args[0]) { - const { epoch, quote, symbol } = args[0].tick; + const { epoch, quote, symbol } = args[0].tick as TickSpotData; if (this.symbol !== symbol) return; current_spot_data = { current_spot: quote, current_spot_time: epoch, }; } else if ('history' in args[0]) { - const { prices, times } = args[0].history; + const { prices, times } = args[0].history as History; const symbol = args[0].echo_req.ticks_history; if (this.symbol !== symbol) return; current_spot_data = { - current_spot: prices[prices.length - 1], - current_spot_time: times[times.length - 1], + current_spot: prices?.[prices?.length - 1], + current_spot_time: times?.[times?.length - 1], }; } else { return; @@ -1479,21 +1564,21 @@ export default class TradeStore extends BaseStore { } }; - wsForget = req => { + wsForget = (req: TicksHistoryRequest) => { const key = JSON.stringify(req); if (g_subscribers_map[key]) { - g_subscribers_map[key].unsubscribe(); + g_subscribers_map[key]?.unsubscribe(); delete g_subscribers_map[key]; } // WS.forget('ticks_history', callback, match); }; - wsForgetStream = stream_id => { + wsForgetStream = (stream_id: string) => { WS.forgetStream(stream_id); }; - wsSendRequest = req => { - if (req.time) { + wsSendRequest = (req: TradingTimesRequest | ActiveSymbolsRequest | ServerTimeRequest) => { + if ('time' in req) { return ServerTime.timePromise().then(server_time => { if (server_time) { return { @@ -1504,16 +1589,16 @@ export default class TradeStore extends BaseStore { return WS.time(); }); } - if (req.active_symbols) { + if ('active_symbols' in req) { return WS.activeSymbols('brief'); } - if (req.trading_times) { + if ('trading_times' in req) { return WS.tradingTimes(req.trading_times); } return WS.storage.send(req); }; - chartStateChange(state, option) { + chartStateChange(state: string, option?: TChartStateChangeOption) { if ( state === STATE_TYPES.MARKET_STATE_CHANGE && this.is_trade_component_mounted && @@ -1522,20 +1607,16 @@ export default class TradeStore extends BaseStore { ) { this.prepareTradeStore(false); } - const { data, event_type } = getChartAnalyticsData(state, option); + const { data, event_type } = getChartAnalyticsData(state as keyof typeof STATE_TYPES, option) as TPayload; if (data) { RudderStack.track(event_type, { ...data, device_type: isMobile() ? 'mobile' : 'desktop', form_name: 'default', - }); + } as TEvents['ce_chart_types_form']); } } - refToAddTick = ref => { - this.addTickByProposal = ref; - }; - get has_alternative_source() { return this.is_multiplier && !!this.hovered_contract_type; } @@ -1556,23 +1637,26 @@ export default class TradeStore extends BaseStore { return isVanillaContract(this.contract_type); } - setContractPurchaseToastbox(response) { - const list = getAvailableContractTypes(this.contract_types_list, unsupported_contract_types_list); + setContractPurchaseToastbox(response: Buy) { + const list = getAvailableContractTypes( + this.contract_types_list, + unsupported_contract_types_list + ) as Array; - return (this.contract_purchase_toast_box = { + this.contract_purchase_toast_box = { key: true, buy_price: formatMoney(this.root_store.client.currency, response.buy_price, true, 0, 0), contract_type: this.contract_type, currency: getCurrencyDisplayCode(this.root_store.client.currency), list, - }); + }; } clearContractPurchaseToastBox() { this.contract_purchase_toast_box = undefined; } - async getFirstOpenMarket(markets_to_search) { + async getFirstOpenMarket(markets_to_search: string[]) { if (this.active_symbols?.length) { return findFirstOpenMarket(this.active_symbols, markets_to_search); } @@ -1584,7 +1668,11 @@ export default class TradeStore extends BaseStore { return findFirstOpenMarket(active_symbols, markets_to_search); } - setBarrierChoices(barrier_choices) { + setStakeBoundary(type: string, min_stake?: number, max_stake?: number) { + if (min_stake && max_stake) this.stake_boundary[type] = { min_stake, max_stake }; + } + + setBarrierChoices(barrier_choices: string[]) { this.barrier_choices = barrier_choices ?? []; if (this.is_turbos) { const stored_barriers_data = { barrier: this.barrier_1, barrier_choices }; @@ -1598,8 +1686,4 @@ export default class TradeStore extends BaseStore { this.strike_price_choices = { barrier: this.barrier_1, barrier_choices }; } } - - setStakeBoundary(type, min_stake, max_stake) { - if (min_stake && max_stake) this.stake_boundary[type] = { min_stake, max_stake }; - } } diff --git a/packages/trader/src/Stores/base-store.ts b/packages/trader/src/Stores/base-store.ts index 704efb2175f2..c66f6937d334 100644 --- a/packages/trader/src/Stores/base-store.ts +++ b/packages/trader/src/Stores/base-store.ts @@ -7,7 +7,7 @@ import { getValidationRules } from './Modules/Trading/Constants/validation-rules type TValidationRules = ReturnType | Record; type TBaseStoreOptions = { - root_store?: TCoreStores; + root_store: TCoreStores; local_storage_properties?: string[]; session_storage_properties?: string[]; validation_rules?: TValidationRules; @@ -33,21 +33,21 @@ export default class BaseStore { logout_listener: null | (() => Promise) = null; local_storage_properties: string[]; networkStatusChangeDisposer: null | (() => void) = null; - network_status_change_listener: null | ((is_online?: boolean) => void) = null; + network_status_change_listener: null | ((is_online: boolean) => void) = null; partial_fetch_time = 0; preSwitchAccountDisposer: null | (() => void) = null; pre_switch_account_listener: null | (() => Promise) = null; realAccountSignupEndedDisposer: null | (() => void) = null; real_account_signup_ended_listener: null | (() => Promise) = null; - root_store?: TCoreStores; + root_store: TCoreStores; session_storage_properties: string[]; store_name = ''; switchAccountDisposer: null | (() => void) = null; switch_account_listener: null | (() => Promise) = null; themeChangeDisposer: null | (() => void) = null; - theme_change_listener: null | ((is_dark_mode_on?: boolean) => void) = null; + theme_change_listener: null | ((is_dark_mode_on: boolean) => void) = null; validation_errors: { [key: string]: string[] } = {}; - validation_rules: TValidationRules = {}; + validation_rules: TValidationRules | Record = {}; /** * Constructor of the base class that gets properties' name of child which should be saved in storages * @@ -58,7 +58,7 @@ export default class BaseStore { * @property {Object} validation_rules - An object that contains the validation rules for each property of the store. * @property {String} store_name - Explicit store name for browser application storage (to bypass minification) */ - constructor(options: TBaseStoreOptions = {}) { + constructor(options = {} as TBaseStoreOptions) { makeObservable(this, { validation_errors: observable, validation_rules: observable, @@ -268,7 +268,7 @@ export default class BaseStore { * */ validateProperty(property: string, value: T[keyof T]) { - const validation_rules_for_property = this.validation_rules[property as keyof TValidationRules]; + const validation_rules_for_property = this.validation_rules[property] ?? {}; const trigger = 'trigger' in validation_rules_for_property ? validation_rules_for_property.trigger : undefined; const inputs = { [property]: value ?? this[property as keyof this] }; const validation_rules = { @@ -315,13 +315,13 @@ export default class BaseStore { this.switch_account_listener = listener; this.switchAccountDisposer = when( - () => !!this.root_store?.client.switch_broadcast, + () => !!this.root_store.client.switch_broadcast, () => { try { const result = this.switch_account_listener?.(); if (result?.then && typeof result.then === 'function') { result.then(() => { - this.root_store?.client.switchEndSignal(); + this.root_store.client.switchEndSignal(); this.onSwitchAccount(this.switch_account_listener); }); } else { @@ -343,13 +343,13 @@ export default class BaseStore { if (listener) { this.pre_switch_account_listener = listener; this.preSwitchAccountDisposer = when( - () => !!this.root_store?.client.pre_switch_broadcast, + () => !!this.root_store.client.pre_switch_broadcast, () => { try { const result = this.pre_switch_account_listener?.(); if (result?.then && typeof result.then === 'function') { result.then(() => { - this.root_store?.client.setPreSwitchAccount(false); + this.root_store.client.setPreSwitchAccount(false); this.onPreSwitchAccount(this.pre_switch_account_listener); }); } else { @@ -369,13 +369,13 @@ export default class BaseStore { onLogout(listener: null | (() => Promise)): void { this.logoutDisposer = when( - () => !!this.root_store?.client.has_logged_out, + () => !!this.root_store.client.has_logged_out, async () => { try { const result = this.logout_listener?.(); if (result?.then && typeof result.then === 'function') { result.then(() => { - this.root_store?.client.setLogout(false); + this.root_store.client.setLogout(false); this.onLogout(this.logout_listener); }); } else { @@ -395,13 +395,13 @@ export default class BaseStore { onClientInit(listener: null | (() => Promise)): void { this.clientInitDisposer = when( - () => !!this.root_store?.client.initialized_broadcast, + () => !!this.root_store.client.initialized_broadcast, async () => { try { const result = this.client_init_listener?.(); if (result?.then && typeof result.then === 'function') { result.then(() => { - this.root_store?.client.setInitialized(false); + this.root_store.client.setInitialized(false); this.onClientInit(this.client_init_listener); }); } else { @@ -419,9 +419,9 @@ export default class BaseStore { this.client_init_listener = listener; } - onNetworkStatusChange(listener: null | ((is_online?: boolean) => void)): void { + onNetworkStatusChange(listener: null | ((is_online: boolean) => void)): void { this.networkStatusChangeDisposer = reaction( - () => this.root_store?.common.is_network_online, + () => this.root_store.common.is_network_online, is_online => { try { this.network_status_change_listener?.(is_online); @@ -438,9 +438,9 @@ export default class BaseStore { this.network_status_change_listener = listener; } - onThemeChange(listener: null | ((is_dark_mode_on?: boolean) => void)): void { + onThemeChange(listener: null | ((is_dark_mode_on: boolean) => void)): void { this.themeChangeDisposer = reaction( - () => this.root_store?.ui.is_dark_mode_on, + () => this.root_store.ui.is_dark_mode_on, is_dark_mode_on => { try { this.theme_change_listener?.(is_dark_mode_on); @@ -459,13 +459,13 @@ export default class BaseStore { onRealAccountSignupEnd(listener: null | (() => Promise)): void { this.realAccountSignupEndedDisposer = when( - () => !!this.root_store?.ui.has_real_account_signup_ended, + () => !!this.root_store.ui.has_real_account_signup_ended, () => { try { const result = this.real_account_signup_ended_listener?.(); if (result?.then && typeof result.then === 'function') { result.then(() => { - this.root_store?.ui.setRealAccountSignupEnd(false); + this.root_store.ui.setRealAccountSignupEnd(false); this.onRealAccountSignupEnd(this.real_account_signup_ended_listener); }); } else { @@ -545,7 +545,7 @@ export default class BaseStore { assertHasValidCache(loginid: string, ...reactions: VoidFunction[]): void { // account was changed when this was unmounted. - if (this.root_store?.client.loginid !== loginid) { + if (this.root_store.client.loginid !== loginid) { reactions.forEach(act => act()); this.partial_fetch_time = 0; } diff --git a/packages/trader/src/Stores/useTraderStores.tsx b/packages/trader/src/Stores/useTraderStores.tsx index ff5ab4b5becd..5e4db0cd77c2 100644 --- a/packages/trader/src/Stores/useTraderStores.tsx +++ b/packages/trader/src/Stores/useTraderStores.tsx @@ -1,128 +1,8 @@ import React from 'react'; import { useStore } from '@deriv/stores'; import TradeStore from './Modules/Trading/trade-store'; -import moment from 'moment'; -type TTextValueStrings = { - text: string; - value: string; -}; - -type TContractTypesList = { - name: string; - categories: TTextValueStrings[]; -}; - -type TContractCategoriesList = { - Multipliers: TContractTypesList; - 'Ups & Downs': TContractTypesList; - 'Highs & Lows': TContractTypesList; - 'Ins & Outs': TContractTypesList; - 'Look Backs': TContractTypesList; - Digits: TContractTypesList; - Vanillas: TContractTypesList; - Accumulators: TContractTypesList; -}; - -type TToastBoxListItem = { - contract_category: string; - contract_types: [ - { - text: string; - value: string; - } - ]; -}; - -type TToastBoxObject = { - key?: boolean; - buy_price?: number; - currency?: string; - contract_type?: string; - list?: TToastBoxListItem[]; -}; - -type TOverrideTradeStore = Omit< - TradeStore, - | 'accumulator_range_list' - | 'barriers' - | 'basis_list' - | 'cancellation_price' - | 'cancellation_range_list' - | 'clearContractPurchaseToastBox' - | 'contract_purchase_toast_box' - | 'contract_types_list' - | 'duration_min_max' - | 'duration_units_list' - | 'expiry_date' - | 'expiry_time' - | 'expiry_type' - | 'form_components' - | 'market_close_times' - | 'market_open_times' - | 'multiplier_range_list' - | 'multiplier' - | 'sessions' - | 'setIsTradeParamsExpanded' - | 'start_dates_list' - | 'start_time' - | 'symbol' - | 'take_profit' - | 'proposal_info' - | 'trade_types' - | 'ticks_history_stats' -> & { - accumulator_range_list?: number[]; - basis_list: Array; - cancellation_price?: number; - cancellation_range_list: Array; - clearContractPurchaseToastBox: () => void; - contract_purchase_toast_box: TToastBoxObject; - contract_types_list: TContractCategoriesList; - duration_min_max: { - [key: string]: { min: number; max: number }; - }; - duration_units_list: Array; - expiry_date: string | null; - expiry_time: string | null; - expiry_type: string | null; - form_components: string[]; - long_barriers: Record | { barrier: string; barrier_choices: string[] }; - market_open_times: string[]; - market_close_times: string[]; - multiplier: number; - multiplier_range_list: number[]; - proposal_info: { - [key: string]: { - has_error?: boolean; - id: string; - has_increased?: boolean; - message?: string; - cancellation?: { - ask_price: number; - date_expiry: number; - }; - growth_rate?: number; - returns?: string; - stake: string; - }; - }; - sessions: Array<{ open: moment.Moment; close: moment.Moment }>; - setIsTradeParamsExpanded: (value: boolean) => void; - short_barriers: Record | { barrier: string; barrier_choices: string[] }; - strike_price_choices: Record | { barrier: string; barrier_choices: string[] }; - start_dates_list: Array<{ text: string; value: number }>; - start_time?: string | null; - symbol: string; - take_profit?: string; - ticks_history_stats: { - ticks_stayed_in?: number[]; - last_tick_epoch?: number; - }; - trade_types: { [key: string]: string }; -}; - -const TraderStoreContext = React.createContext(null); +const TraderStoreContext = React.createContext(null); export const TraderStoreProvider = ({ children }: React.PropsWithChildren) => { const { modules } = useStore(); diff --git a/packages/trader/src/Types/common-prop.type.ts b/packages/trader/src/Types/common-prop.type.ts index bc38b04c55e2..d2252c3012d8 100644 --- a/packages/trader/src/Types/common-prop.type.ts +++ b/packages/trader/src/Types/common-prop.type.ts @@ -1,19 +1,16 @@ import { useTraderStore } from 'Stores/useTraderStores'; -export type TProposalTypeInfo = { - has_error?: boolean; - id: string; - has_increased?: boolean; - message?: string; - cancellation?: { - ask_price: number; - date_expiry: number; - }; - growth_rate?: number; - returns?: string; - stake: string; +export type TTextValueStrings = { + text: string; + value: string; +}; +export type TTextValueNumber = { + text: string; + value: number; }; +export type TProposalTypeInfo = TTradeStore['proposal_info'][string]; + export type TError = { error?: { code?: string; diff --git a/packages/trader/src/Utils/Validator/validator.ts b/packages/trader/src/Utils/Validator/validator.ts index 99f297b0aebb..4adf2224591b 100644 --- a/packages/trader/src/Utils/Validator/validator.ts +++ b/packages/trader/src/Utils/Validator/validator.ts @@ -7,8 +7,8 @@ type TOptions = { [key: string]: unknown; decimals?: string | number; is_required?: boolean; - max?: number | string; - min?: number | string; + max?: number | string | null; + min?: number | string | null; name1?: string; name2?: string; regex?: RegExp; @@ -18,9 +18,14 @@ type TOptions = { type TInitPreBuildDVRs = ReturnType; export type TRuleOptions = { - func: (value: string | number, options?: TOptions, store?: TTradeStore, inputs?: unknown) => boolean; - condition: (store: TTradeStore) => boolean; - message: string; + func?: ( + value: T, + options?: TOptions, + store?: TTradeStore, + inputs?: Pick + ) => boolean | { is_ok: boolean; message: string }; + condition?: (store: TTradeStore) => boolean; + message?: string; } & TOptions; type TRule = string | Array; @@ -31,13 +36,13 @@ type TValidationResult = { }; class Validator { - input: Partial; + input: Pick; rules: Partial; store: TTradeStore; errors: Errors; error_count: number; - constructor(input: Partial, rules: Partial, store: TTradeStore) { + constructor(input: Pick, rules: Partial, store: TTradeStore) { this.input = input; this.rules = rules; this.store = store; @@ -100,8 +105,8 @@ class Validator { let is_valid, error_message; if (ruleObject.name === 'number') { - const { is_ok, message }: TValidationResult = ruleObject.validator( - this.input[attribute as keyof TTradeStore], + const { is_ok, message } = ruleObject.validator( + this.input[attribute as keyof TTradeStore] as string, ruleObject.options, this.store, this.input @@ -110,7 +115,7 @@ class Validator { error_message = message; } else { is_valid = ruleObject.validator( - this.input[attribute as keyof TTradeStore], + this.input[attribute as keyof TTradeStore] as string, ruleObject.options, this.store, this.input @@ -153,12 +158,7 @@ class Validator { : ( getPreBuildDVRs() as unknown as { [key: string]: { - func: ( - value: string | number, - options?: TRuleOptions, - store?: TTradeStore, - inputs?: unknown - ) => boolean | { is_ok: boolean; message: string }; + func: TRuleOptions['func']; }; } )[rule_object_name].func, diff --git a/packages/translations/crowdin/messages.json b/packages/translations/crowdin/messages.json index 76dfd133e3a8..c1b04fe70572 100644 --- a/packages/translations/crowdin/messages.json +++ b/packages/translations/crowdin/messages.json @@ -1 +1 @@ -{"0":"","1014140":"You may also call <0>+447723580049 to place your complaint.","1485191":"1:1000","2091451":"Deriv Bot - your automated trading partner","3125515":"Your Deriv MT5 password is for logging in to your Deriv MT5 accounts on the desktop, web, and mobile apps.","3215342":"Last 30 days","3420069":"To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your identity document.","7100308":"Hour must be between 0 and 23.","9488203":"Deriv Bot is a web-based strategy builder for trading digital options. It’s a platform where you can build your own automated trading bot using drag-and-drop 'blocks'.","11539750":"set {{ variable }} to Relative Strength Index Array {{ dummy }}","11872052":"Yes, I'll come back later","14365404":"Request failed for: {{ message_type }}, retrying in {{ delay }}s","15377251":"Profit amount: {{profit}}","17843034":"Check proof of identity document verification status","19424289":"Username","19552684":"USD Basket","21035405":"Please tell us why you’re leaving. (Select up to {{ allowed_reasons }} reasons.)","24900606":"Gold Basket","25854018":"This block displays messages in the developer’s console with an input that can be either a string of text, a number, boolean, or an array of data.","26566655":"Summary","26596220":"Finance","27582767":"{{amount}} {{currency}}","27731356":"Your account is temporarily disabled. Please contact us via <0>live chat to enable deposits and withdrawals again.","27830635":"Deriv (V) Ltd","28581045":"Add a real MT5 account","30801950":"Your account will be opened with {{legal_entity_name}}, regulated by the Malta Gaming Authority, and will be subject to the laws of Malta.","33433576":"Please use an e-wallet to withdraw your funds.","35089987":"Upload the front and back of your driving licence.","41737927":"Thank you","44877997":"Residence permit","45453595":"Binary Coin","45941470":"Where would you like to start?","46523711":"Your proof of identity is verified","49404821":"If you buy a \"<0>{{trade_type}}\" option, you receive a payout at expiry if the final price is {{payout_status}} the strike price. Otherwise, your “<0>{{trade_type}}” option will expire worthless.","50200731":"FX majors (standard/micro lots), FX minors, basket indices, commodities, and cryptocurrencies","53801223":"Hong Kong 50","53964766":"5. Hit Save to download your bot. You can choose to download your bot to your device or your Google Drive.","54185751":"Less than $100,000","55340304":"Keep your current contract?","55916349":"All","56764670":"Deriv Bot will not proceed with any new trades. Any ongoing trades will be completed by our system. Any unsaved changes will be lost.<0>Note: Please check your statement to view completed transactions.","58254854":"Scopes","59169515":"If you select \"Asian Rise\", you will win the payout if the last tick is higher than the average of the ticks.","59341501":"Unrecognized file format","59662816":"Stated limits are subject to change without prior notice.","62748351":"List Length","63869411":"This block tests a given number according to the selection","64402604":"Check transfer information","65185694":"Fiat onramp","65982042":"Total","66519591":"Investor password","67923436":"No, Deriv Bot will stop running when your web browser is closed.","68885999":"Repeats the previous trade when an error is encountered.","69005593":"The example below restarts trading after 30 or more seconds after 1 minute candle was started.","71016232":"OMG/USD","71445658":"Open","71563326":"A fast and secure fiat-to-crypto payment service. Deposit cryptocurrencies from anywhere in the world using your credit/debit cards and bank transfers.","71853457":"$100,001 - $500,000","72500774":"Please fill in Tax residence.","73086872":"You have self-excluded from trading","73326375":"The low is the lowest point ever reached by the market during the contract period.","74963864":"Under","76916358":"You have reached the withdrawal limit.<0/>Please upload your proof of identity and address to lift the limit to continue your withdrawal.","76925355":"Check your bot’s performance","77945356":"Trade on the go with our mobile app.","77982950":"Vanilla options allow you to predict an upward (bullish) or downward (bearish) direction of the underlying asset by purchasing a \"Call\" or a \"Put\".","81450871":"We couldn’t find that page","82839270":"Upload the page of your passport that contains your photo.","83202647":"Collapse Block","84402478":"Where do I find the blocks I need?","85343079":"Financial assessment","85359122":"40 or more","85389154":"Steps required to continue verification on your mobile","89062902":"Trade on MT5","90266322":"2. Start a chat with your newly created Telegram bot and make sure to send it some messages before proceeding to the next step. (e.g. Hello Bot!)","91993812":"The Martingale Strategy is a classic trading technique that has been used for more than a hundred years, popularised by the French mathematician Paul Pierre Levy in the 18th century.","93154671":"1. Hit Reset at the bottom of stats panel.","96381225":"ID verification failed","98473502":"We’re not obliged to conduct an appropriateness test, nor provide you with any risk warnings.","98972777":"random item","100239694":"Upload front of card from your computer","102226908":"Field cannot be empty","108916570":"Duration: {{duration}} days","109073671":"Please use an e-wallet that you have used for deposits previously. Ensure the e-wallet supports withdrawal. See the list of e-wallets that support withdrawals <0>here.","111215238":"Move away from direct light","111718006":"End date","111931529":"Max. total stake over 7 days","113378532":"ETH/USD","115032488":"Buy price and P/L","116005488":"Indicators","117056711":"We’re updating our site","117318539":"Password should have lower and uppercase English letters with numbers.","118158064":"2. Use a logic block to check if current profit/loss exceeds maximum loss. If it does, set trade again to false to prevent the bot from running another cycle.","118586231":"Document number (identity card, passport)","119261701":"Prediction:","119446122":"Contract type is not selected","120340777":"Complete your personal details","123454801":"{{withdraw_amount}} {{currency_symbol}}","124723298":"Upload a proof of address to verify your address","125443840":"6. Restart last trade on error","127307725":"A politically exposed person (PEP) is someone appointed with a prominent public position. Close associates and family members of a PEP are also considered to be PEPs.","129729742":"Tax Identification Number*","130567238":"THEN","132596476":"In providing our services to you, we are required to ask you for some information to assess if a given product or service is appropriate for you and whether you have the experience and knowledge to understand the risks involved.<0/><0/>","132689841":"Trade on web terminal","133284316":"Supported formats: JPEG, JPG, PNG, PDF and GIF only","133523018":"Please go to the Deposit page to get an address.","133536621":"and","133655768":"Note: If you wish to learn more about the Bot Builder, you can proceed to the <0>Tutorials tab.","139454343":"Confirm my limits","141265840":"Funds transfer information","141626595":"Make sure your device has a working camera","142050447":"set {{ variable }} to create text with","142390699":"Connected to your mobile","143970826":"Payment problems?","145146541":"Our accounts and services are unavailable for the Jersey postal code","145736466":"Take a selfie","149616444":"cTrader Demo","150486954":"Token name","151344063":"The exit spot is the market price when the contract is closed.","151646545":"Unable to read file {{name}}","152415091":"Math","152524253":"Trade the world’s markets with our popular user-friendly platform.","154545319":"Country of residence is where you currently live.","157593038":"random integer from {{ start_number }} to {{ end_number }}","157871994":"Link expired","158355408":"Some services may be temporarily unavailable.","160746023":"Tether as an Omni token (USDT) is a version of Tether that is hosted on the Omni layer on the Bitcoin blockchain.","160863687":"Camera not detected","164112826":"This block allows you to load blocks from a URL if you have them stored on a remote server, and they will be loaded only when your bot runs.","164564432":"Deposits are temporarily unavailable due to system maintenance. You can make your deposits when the maintenance is complete.","165294347":"Please set your country of residence in your account settings to access the cashier.","165312615":"Continue on phone","165682516":"If you don’t mind sharing, which other trading platforms do you use?","170185684":"Ignore","170244199":"I’m closing my account for other reasons.","171307423":"Recovery","171579918":"Go to Self-exclusion","171638706":"Variables","173991459":"We’re sending your request to the blockchain.","174793462":"Strike","176078831":"Added","176319758":"Max. total stake over 30 days","176327749":"- Android: Tap the account, open <0>Options, and tap <0>Delete.","176654019":"$100,000 - $250,000","177099483":"Your address verification is pending, and we’ve placed some restrictions on your account. The restrictions will be lifted once your address is verified.","178413314":"First name should be between 2 and 50 characters.","179083332":"Date","179737767":"Our legacy options trading platform.","181346014":"Notes ","181881956":"Contract Type: {{ contract_type }}","184024288":"lower case","189705706":"This block uses the variable \"i\" to control the iterations. With each iteration, the value of \"i\" is determined by the items in a given list.","189759358":"Creates a list by repeating a given item","190834737":"Guide","191372501":"Accumulation of Income/Savings","192436105":"No need for symbols, digits, or uppercase letters","192573933":"Verification complete","195972178":"Get character","196810983":"If the duration is more than 24 hours, the Cut-off time and Expiry date will apply instead.","196998347":"We hold customer funds in bank accounts separate from our operational accounts which would not, in the event of insolvency, form part of the company's assets. This meets the <0>Gambling Commission's requirements for the segregation of customer funds at the level: <1>medium protection.","197190401":"Expiry date","201091938":"30 days","203108063":"Congratulations, you have successfully created your {{category}} <0>{{platform}} <1>{{type}} account. ","203179929":"<0>You can open this account once your submitted documents have been verified.","203271702":"Try again","203297887":"The Quick Strategy you just created will be loaded to the workspace.","203924654":"Hit the <0>Start button to begin and follow the tutorial.","204797764":"Transfer to client","204863103":"Exit time","206010672":"Delete {{ delete_count }} Blocks","207824122":"Please withdraw your funds from the following Deriv account(s):","209533725":"You’ve transferred {{amount}} {{currency}}","210385770":"If you have an active account, please log in to continue. Otherwise, please sign up.","211224838":"Investment","211461880":"Common names and surnames are easy to guess","211847965":"Your <0>personal details are incomplete. Please go to your account settings and complete your personal details to enable withdrawals.","212871086":"Coming soon on mobile","216650710":"You are using a demo account","217403651":"St. Vincent & Grenadines","217504255":"Financial assessment submitted successfully","218441288":"Identity card number","220014242":"Upload a selfie from your computer","220019594":"Need more help? Contact us through live chat for assistance.","220186645":"Text Is empty","220232017":"demo CFDs","221261209":"A Deriv account will allow you to fund (and withdraw from) your CFDs account(s).","223120514":"In this example, each point of the SMA line is an arithmetic average of close prices for the last 50 days.","223607908":"Last digit stats for latest 1000 ticks for {{underlying_name}}","224650827":"IOT/USD","224929714":"Virtual events based bets in the UK and the Isle of Man are offered by {{legal_entity_name}}, Millennium House, Level 1, Victoria Road, Douglas IM2 4RW, Isle of Man, licensed and regulated in Great Britain by the Gambling Commission under <0>account no. 39172 and by the Gambling Supervision Commission in the Isle of Man (<1>view licence).","225887649":"This block is mandatory. It's added to your strategy by default when you create new strategy. You can not add more than one copy of this block to the canvas.","227591929":"To timestamp {{ input_datetime }} {{ dummy }}","227903202":"We’ll charge a 1% transfer fee for transfers in different currencies between your Deriv fiat and {{platform_name_mt5}} accounts.","228521812":"Tests whether a string of text is empty. Returns a boolean value (true or false).","229355215":"Trade on {{platform_name_dbot}}","233500222":"- High: the highest price","235583807":"SMA is a frequently used indicator in technical analysis. It calculates the average market price over a specified period, and is usually used to identify market trend direction: up or down. For example, if the SMA is moving upwards, it means the market trend is up. ","236642001":"Journal","238496287":"Leverage trading is high-risk, so it's a good idea to use risk management features such as stop loss. Stop loss allows you to","243537306":"1. Under the Blocks menu, go to Utility > Variables.","243614144":"This is only available for existing clients.","245005091":"lower","245187862":"The DRC will make a <0>decision on the complaint (please note that the DRC mentions no timeframe for announcing its decision).","245812353":"if {{ condition }} return {{ value }}","246428134":"Step-by-step guides","247418415":"Gaming trading can become a real addiction, as can any other activity pushed to its limits. To avoid the danger of such an addiction, we provide a reality-check that gives you a summary of your trades and accounts on a regular basis.","248153700":"Reset your password","248565468":"Check your {{ identifier_title }} account email and click the link in the email to proceed.","248909149":"Send a secure link to your phone","251134918":"Account Information","251322536":"Deriv EZ accounts","251445658":"Dark theme","251882697":"Thank you! Your response has been recorded into our system.<0/><0/>Please click ‘OK’ to continue.","254912581":"This block is similar to EMA, except that it gives you the entire EMA line based on the input list and the given period.","256031314":"Cash Business","256602726":"If you close your account:","258448370":"MT5","258912192":"Trading assessment","260069181":"An error occured while trying to load the URL","260086036":"Place blocks here to perform tasks once when your bot starts running.","260361841":"Tax Identification Number can't be longer than 25 characters.","261074187":"4. Once the blocks are loaded onto the workspace, tweak the parameters if you want, or hit Run to start trading.","261250441":"Drag the <0>Trade again block and add it into the <0>do part of the <0>Repeat until block.","262095250":"If you select <0>\"Put\", you’ll earn a payout if the final price is below the strike price at expiry. Otherwise, you won’t receive a payout.","264976398":"3. 'Error' displays a message in red to highlight something that needs to be resolved immediately.","265644304":"Trade types","267992618":"The platforms lack key features or functionality.","268940240":"Your balance ({{format_balance}} {{currency}}) is less than the current minimum withdrawal allowed ({{format_min_withdraw_amount}} {{currency}}). Please top up your account to continue with your withdrawal.","269322978":"Deposit with your local currency via peer-to-peer exchange with fellow traders in your country.","269607721":"Upload","270339490":"If you select \"Over\", you will win the payout if the last digit of the last tick is greater than your prediction.","270610771":"In this example, the open price of a candle is assigned to the variable \"candle_open_price\".","270712176":"descending","270780527":"You've reached the limit for uploading your documents.","272042258":"When you set your limits, they will be aggregated across all your account types in {{platform_name_trader}}, {{platform_name_dbot}}, {{platform_name_smarttrader}} and {{platform_name_bbot}} on Deriv. For example, the losses made on all four platforms will add up and be counted towards the loss limit you set.","272179372":"This block is commonly used to adjust the parameters of your next trade and to implement stop loss/take profit logic.","273350342":"Copy and paste the token into the app.","273728315":"Should not be 0 or empty","274268819":"Volatility 100 Index","275116637":"Deriv X","277469417":"Exclude time cannot be for more than five years.","278684544":"get sub-list from # from end","280021988":"Use these shortcuts","282319001":"Check your image","282564053":"Next, we'll need your proof of address.","283830551":"Your address doesn’t match your profile","283986166":"Self-exclusion on the website only applies to your {{brand_website_name}} account and does not include other companies or websites.","284527272":"antimode","284772879":"Contract","284809500":"Financial Demo","287934290":"Are you sure you want to cancel this transaction?","289898640":"TERMS OF USE","291744889":"<0>1. Trade parameters:<0>","291817757":"Go to our Deriv community and learn about APIs, API tokens, ways to use Deriv APIs, and more.","292491635":"If you select “Stop loss” and specify an amount to limit your loss, your position will be closed automatically when your loss is more than or equals to this amount. Your loss may be more than the amount you entered depending on the market price at closing.","292526130":"Tick and candle analysis","292589175":"This will display the SMA for the specified period, using a candle list.","292887559":"Transfer to {{selected_value}} is not allowed, Please choose another account from dropdown","294305803":"Manage account settings","294335229":"Sell at market price","295173783":"Long/Short","296017162":"Back to Bot","301441673":"Select your citizenship/nationality as it appears on your passport or other government-issued ID.","304309961":"We're reviewing your withdrawal request. You may still cancel this transaction if you wish. Once we start processing, you won't be able to cancel.","310234308":"Close all your positions.","312142140":"Save new limits?","312300092":"Trims the spaces within a given string or text.","313741895":"This block returns “True” if the last candle is black. It can be placed anywhere on the canvas except within the Trade parameters root block.","315306603":"You have an account that do not have currency assigned. Please choose a currency to trade with this account.","316694303":"Is candle black?","318865860":"close","318984807":"This block repeats the instructions contained within for a specific number of times.","321457615":"Oops, something went wrong!","323179846":"The time interval for each candle can be set from one minute to one day.","323209316":"Select a Deriv Bot Strategy","323360883":"Baskets","325662004":"Expand Block","325763347":"result","326770937":"Withdraw {{currency}} ({{currency_symbol}}) to your wallet","327534692":"Duration value is not allowed. To run the bot, please enter {{min}}.","328539132":"Repeats inside instructions specified number of times","329353047":"Malta Financial Services Authority (MFSA) (licence no. IS/70156)","329404045":"<0>Switch to your real account<1> to create a {{platform}} {{account_title}} account.","333121115":"Select Deriv MT5's account type","333456603":"Withdrawal limits","333807745":"Click on the block you want to remove and press Delete on your keyboard.","334680754":"Switch to your real account to create a Deriv MT5 account","334942497":"Buy time","335040248":"About us","337023006":"Start time cannot be in the past.","339449279":"Remaining time","339610914":"Spread Up/Spread Down","339879944":"GBP/USD","340807218":"Description not found.","342181776":"Cancel transaction","343873723":"This block displays a message. You can specify the color of the message and choose from 6 different sound options.","344418897":"These trading limits and self-exclusion help you control the amount of money and time you spend on {{brand_website_name}} and exercise <0>responsible trading.","345320063":"Invalid timestamp","345818851":"Sorry, an internal error occurred. Hit the above checkbox to try again.","347029309":"Forex: standard/micro","347039138":"Iterate (2)","347217485":"Trouble accessing Deriv MT5 on your mobile?","348951052":"Your cashier is currently locked","349047911":"Over","349110642":"<0>{{payment_agent}}<1>'s contact details","350602311":"Stats show the history of consecutive tick counts, i.e. the number of ticks the price remained within range continuously.","351744408":"Tests if a given text string is empty","352363702":"You may see links to websites with a fake Deriv login page where you’ll get scammed for your money.","353731490":"Job done","354945172":"Submit document","357477280":"No face found","359053005":"Please enter a token name.","359649435":"Given candle list is not valid","359809970":"This block gives you the selected candle value from a list of candles within the selected time interval. You can choose from open price, close price, high price, low price, and open time.","360224937":"Logic","360773403":"Bot Builder","362946954":"Our legacy automated trading platform.","363576009":"- High price: the highest price","363738790":"Browser","363990763":"Sell price:","367801124":"Total assets in your Deriv accounts.","368160866":"in list","369035361":"<0>•Your account number","371151609":"Last used","371710104":"This scope will allow third-party apps to buy and sell contracts for you, renew your expired purchases, and top up your demo accounts.","372291654":"Exclude time must be after today.","372645383":"True if the market direction matches the selection","373021397":"random","373306660":"{{label}} is required.","373495360":"This block returns the entire SMA line, containing a list of all values for a given period.","374537470":"No results for \"{{text}}\"","375714803":"Deal Cancellation Error","377231893":"Deriv Bot is unavailable in the EU","379523479":"To avoid loss of funds, do not share tokens with the Admin scope with unauthorised parties.","380606668":"tick","380694312":"Maximum consecutive trades","384303768":"This block returns \"True\" if the last candle is black. It can be placed anywhere on the canvas except within the Trade parameters root block.","386191140":"You can choose between CFD trading accounts or Options and Multipliers accounts","386278304":"Install the {{platform_name_trader}} web app","386502387":"Bot is not running","389923099":"Zoom in","390647540":"Real account","390890891":"Last quarter","391915203":"Hedging","392582370":"Fall Equals","393789743":"Letters, spaces, periods, hyphens, apostrophes only.","396418990":"Offline","396801529":"To start trading, top-up funds from your Deriv account into this account.","398816980":"Launch {{platform_name_trader}} in seconds the next time you want to trade.","401339495":"Verify address","401345454":"Head to the Tutorials tab to do so.","402343402":"Due to an issue on our server, some of your {{platform}} accounts are unavailable at the moment. Please bear with us and thank you for your patience.","403456289":"The formula for SMA is:","404743411":"Total deposits","406359555":"Contract details","406497323":"Sell your active contract if needed (optional)","411482865":"Add {{deriv_account}} account","412433839":"I agree to the <0>terms and conditions.","413594348":"Only letters, numbers, space, hyphen, period, and forward slash are allowed.","417714706":"If your margin level drops below our stop out level, your positions may be closed automatically to protect you from further losses.","417864079":"You’ll not be able to change currency once you have made a deposit.","418265501":"Demo Derived","419485005":"Spot","419496000":"Your contract is closed automatically when your profit is more than or equals to this amount. This block can only be used with the multipliers trade type.","420072489":"CFD trading frequency","422055502":"From","424272085":"We take your financial well-being seriously and want to ensure you are fully aware of the risks before trading.<0/><0/>","424897068":"Do you understand that you could potentially lose 100% of the money you use to trade?","426031496":"Stop","427134581":"Try using another file type.","427617266":"Bitcoin","428709688":"Your preferred time interval between each report:","431267979":"Here’s a quick guide on how to use Deriv Bot on the go.","432273174":"1:100","432508385":"Take Profit: {{ currency }} {{ take_profit }}","432519573":"Document uploaded","433348384":"Real accounts are not available to politically exposed persons (PEPs).","433616983":"2. Investigation phase","434548438":"Highlight function definition","434896834":"Custom functions","436364528":"Your account will be opened with {{legal_entity_name}}, and will be subject to the laws of Saint Vincent and the Grenadines.","436534334":"<0>We've sent you an email.","437138731":"Create a new {{platform}} password","437453244":"Choose your preferred cryptocurrency","437485293":"File type not supported","437904704":"Maximum open positions","438067535":"Over $500,000","439398769":"This strategy is currently not compatible with Deriv Bot.","442520703":"$250,001 - $500,000","443203714":"Your contract will be closed automatically if your loss reaches this amount.","443559872":"Financial SVG","444484637":"Logic negation","445419365":"1 - 2 years","450983288":"Your deposit is unsuccessful due to an error on the blockchain. Please contact your crypto wallet service provider for more info.","451852761":"Continue on your phone","452054360":"Similar to RSI, this block gives you a list of values for each entry in the input list.","453175851":"Your MT5 Financial STP account will be opened through {{legal_entity_name}}. All trading in this account is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA). None of your other accounts, including your Deriv account, is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA).","453409608":"Your profit is the percentage change in market price times your stake and the multiplier of your choice.","454196938":"Regulation:","456746157":"Grant access to your camera from your browser settings","457020083":"It’ll take longer to verify you if we can’t read it","457494524":"1. From the block library, enter a name for the new variable and click Create.","459612953":"Select account","459817765":"Pending","460070238":"Congratulations","460975214":"Complete your Appropriateness Test","461795838":"Please contact us via live chat to unlock it.","462079779":"Resale not offered","463361726":"Select an item","465993338":"Oscar's Grind","466369320":"Your gross profit is the percentage change in market price times your stake and the multiplier chosen here.","466837068":"Yes, increase my limits","467839232":"I trade forex CFDs and other complex financial instruments regularly on other platforms.","473154195":"Settings","474306498":"We’re sorry to see you leave. Your account is now closed.","475492878":"Try Synthetic Indices","476023405":"Didn't receive the email?","477557241":"Remote blocks to load must be a collection.","478280278":"This block displays a dialog box that uses a customised message to prompt for an input. The input can be either a string of text or a number and can be assigned to a variable. When the dialog box is displayed, your strategy is paused and will only resume after you enter a response and click \"OK\".","479420576":"Tertiary","480356486":"*Boom 300 and Crash 300 Index","481276888":"Goes Outside","483279638":"Assessment Completed<0/><0/>","483551811":"Your <0>payout is the sum of your inital stake and profit.","483591040":"Delete all {{ delete_count }} blocks?","485379166":"View transactions","487239607":"Converts a given True or False to the opposite value","488150742":"Resend email","489768502":"Change investor password","491603904":"Unsupported browser","492198410":"Make sure everything is clear","492566838":"Taxpayer identification number","497518317":"Function that returns a value","498562439":"or","499522484":"1. for \"string\": 1325.68 USD","500215405":"Server maintenance starts at 01:00 GMT every Sunday and may last up to 2 hours. You may experience service disruption during this time.","500855527":"Chief Executives, Senior Officials and Legislators","500920471":"This block performs arithmetic operations between two numbers.","501401157":"You are only allowed to make deposits","501537611":"*Maximum number of open positions","502007051":"Demo Swap-Free SVG","502041595":"This block gives you a specific candle from within the selected time interval.","503137339":"Payout limit","505793554":"last letter","508390614":"Demo Financial STP","510815408":"Letters, numbers, spaces, hyphens only","511679687":"Accumulators allow you to express a view on the range of movement of an index and grow your stake exponentially at a fixed <0>growth rate.","514031715":"list {{ input_list }} is empty","514776243":"Your {{account_type}} password has been changed.","514948272":"Copy link","518955798":"7. Run Once at Start","520136698":"Boom 500 Index","521872670":"item","522283618":"Digital options trading experience","522703281":"divisible by","523123321":"- 10 to the power of a given number","524459540":"How do I create variables?","527329988":"This is a top-100 common password","529056539":"Options","530953413":"Authorised applications","531114081":"3. Contract Type","531675669":"Euro","535041346":"Max. total stake per day","537788407":"Other CFDs Platform","538017420":"0.5 pips","541650045":"Manage {{platform}} password","541700024":"First, enter your driving licence number and the expiry date.","542038694":"Only letters, numbers, space, underscore, and hyphen are allowed for {{label}}.","542305026":"You must also submit a proof of identity.","543413346":"You have no open positions for this asset. To view other open positions, click Go to Reports","543915570":"Forex, stocks, stock indices, cryptocurrencies, synthetic indices","545476424":"Total withdrawals","549479175":"Deriv Multipliers","550589723":"Your stake will grow at {{growth_rate}}% per tick as long as the current spot price remains within ±{{tick_size_barrier}} from the previous spot price.","551569133":"Learn more about trading limits","554135844":"Edit","554410233":"This is a top-10 common password","555351771":"After defining trade parameters and trade options, you may want to instruct your bot to purchase contracts when specific conditions are met. To do that you can use conditional blocks and indicators blocks to help your bot to make decisions.","555881991":"National Identity Number Slip","556264438":"Time interval","558262475":"On your MT5 mobile app, delete your existing Deriv account:","558866810":"Run your bot","559224320":"Our classic “drag-and-drop” tool for creating trading bots, featuring pop-up trading charts, for advanced users.","561982839":"Change your currency","562599414":"This block returns the purchase price for the selected trade type. This block can be used only in the \"Purchase conditions\" root block.","563034502":"We shall try to resolve your complaint within 15 business days. We will inform you of the outcome together with an explanation of our position and propose any remedial measures we intend to take.","563166122":"We shall acknowledge receiving your complaint, review it carefully, and keep you updated on the handling process. We might request further information or clarifications to facilitate the resolution of the complaint.","563652273":"Go to block","565410797":"The below image illustrates how Simple Moving Average Array block works:","566274201":"1. Market","567019968":"A variable is among the most important and powerful components in creating a bot. It is a way to store information, either as text or numbers. The information stored as a variable can be used and changed according to the given instructions. Variables can be given any name, but usually they are given useful, symbolic names so that it is easier to call them during the execution of instructions.","567163880":"Create a {{platform}} password","567755787":"Tax Identification Number is required.","569057236":"In which country was your document issued?","571921777":"Funds protection level","572576218":"Languages","573173477":"Is candle {{ input_candle }} black?","575702000":"Remember, selfies, pictures of houses, or non-related images will be rejected.","576355707":"Select your country and citizenship:","577215477":"count with {{ variable }} from {{ start_number }} to {{ end_number }} by {{ step_size }}","577779861":"Withdrawal","577883523":"4. Awards and orders","578640761":"Call Spread","579529868":"Show all details — including the bottom 2 lines","580431127":"Restart buy/sell on error (disable for better performance): {{ checkbox }}","580665362":"Stays In/Goes Out","580774080":"insert at","581168980":"Legal","582945649":"2 minutes","584028307":"Allow equals","587577425":"Secure my account","587856857":"Want to know more about APIs?","588609216":"Repeat tour","592087722":"Employment status is required.","593459109":"Try a different currency","594937260":"Derived - BVI","595080994":"Example: CR123456789","595136687":"Save Strategy","597089493":"Here is where you can decide to sell your contract before it expires. Only one copy of this block is allowed.","597481571":"DISCLAIMER","597707115":"Tell us about your trading experience.","599469202":"{{secondPast}}s ago","602278674":"Verify identity","603849445":"Strike price","603849863":"Look for the <0>Repeat While/Until, and click the + icon to add the block to the workspace area.","603899222":"Distance to current spot","606240547":"- Natural log","606877840":"Back to today","607807243":"Get candle","609519227":"This is the email address associated with your Deriv account.","609650241":"Infinite loop detected","610537973":"Any information you provide is confidential and will be used for verification purposes only.","611020126":"View address on Blockchain","611786123":"FX-majors (standard/micro lots), FX-minors, Commodities, Cryptocurrencies, Stocks, and Stock Indices","617345387":"If you select \"Reset-Up”, you win the payout if the exit spot is strictly higher than either the entry spot or the spot at reset time.","617910072":"Use your Deriv account email and password to login into the {{ platform }} platform.","618520466":"Example of a cut-off document","619268911":"<0>a.The Financial Commission will investigate the validity of the complaint within 5 business days.","619407328":"Are you sure you want to unlink from {{identifier_title}}?","623192233":"Please complete the <0>Appropriateness Test to access your cashier.","623542160":"Exponential Moving Average Array (EMAA)","624668261":"You’ve just stopped the bot. Any open contracts can be viewed on the <0>Reports page.","625571750":"Entry spot:","626175020":"Standard Deviation Up Multiplier {{ input_number }}","626809456":"Resubmit","627292452":"<0>Your Proof of Identity or Proof of Address did not meet our requirements. Please check your email for further instructions.","627814558":"This block returns a value when a condition is true. Use this block within either of the function blocks above.","628193133":"Account ID","629145209":"In case if the \"AND\" operation is selected, the block returns \"True\" only if both given values are \"True\"","629395043":"All growth rates","632398049":"This block assigns a null value to an item or statement.","634219491":"You have not provided your tax identification number. This information is necessary for legal and regulatory requirements. Please go to <0>Personal details in your account settings, and fill in your latest tax identification number.","636219628":"<0>c.If no settlement opportunity can be found, the complaint will proceed to the determination phase to be handled by the DRC.","639382772":"Please upload supported file type.","640596349":"You have yet to receive any notifications","640730141":"Refresh this page to restart the identity verification process","641420532":"We've sent you an email","642210189":"Please check your email for the verification link to complete the process.","642393128":"Enter amount","642546661":"Upload back of license from your computer","642995056":"Email","644150241":"The number of contracts you have won since you last cleared your stats.","645016681":"Trading frequency in other financial instruments","645902266":"EUR/NZD","647039329":"Proof of address required","647745382":"Input List {{ input_list }}","648035589":"Other CFD Platforms","649317411":"On the basis of the information provided in relation to your knowledge and experience, we consider that the investments available via this website are not appropriate for you.<0/><1/>","649923867":"Adds a sign to a number to create a barrier offset. (deprecated)","651284052":"Low Tick","651684094":"Notify","652041791":"To create a Deriv X real account, create a Deriv real account first.","652298946":"Date of birth","654264404":"Up to 1:30","654507872":"True-False","654924603":"Martingale","655937299":"We’ll update your limits. Click <0>Accept to acknowledge that you are fully responsible for your actions, and we are not liable for any addiction or loss.","656296740":"While “Deal cancellation” is active:","656893085":"Timestamp","657325150":"This block is used to define trade options within the Trade parameters root block. Some options are only applicable for certain trade types. Parameters such as duration and stake are common among most trade types. Prediction is used for trade types such as Digits, while barrier offsets are for trade types that involve barriers such as Touch/No Touch, Ends In/Out, etc.","659482342":"Please remember that it is your responsibility to keep your answers accurate and up to date. You can update your personal details at any time in your account settings.","660481941":"To access your mobile apps and other third-party apps, you'll first need to generate an API token.","660991534":"Finish","661759508":"On the basis of the information provided in relation to your knowledge and experience, we consider that the investments available via this website are not appropriate for you.<0/><0/>","662548260":"Forex, Stock indices, Commodities and Cryptocurrencies","662578726":"Available","662609119":"Download the MT5 app","665089217":"Please submit your <0>proof of identity to authenticate your account and access your Cashier.","665777772":"XLM/USD","665872465":"In the example below, the opening price is selected, which is then assigned to a variable called \"op\".","666724936":"Please enter a valid ID number.","672008428":"ZEC/USD","673915530":"Jurisdiction and choice of law","674973192":"Use this password to log in to your Deriv MT5 accounts on the desktop, web, and mobile apps.","676159329":"Could not switch to default account.","677918431":"Market: {{ input_market }} > {{ input_submarket }} > {{ input_symbol }}","680334348":"This block was required to correctly convert your old strategy.","680478881":"Total withdrawal limit","681808253":"Previous spot price","681926004":"Example of a blurry document","682056402":"Standard Deviation Down Multiplier {{ input_number }}","684282133":"Trading instruments","685391401":"If you're having trouble signing in, let us know via <0>chat","686312916":"Trading accounts","686387939":"How do I clear my transaction log?","687193018":"Slippage risk","687212287":"Amount is a required field.","688510664":"You've {{two_fa_status}} 2FA on this device. You'll be logged out of your account on other devices (if any). Use your password and a 2FA code to log back in.","689137215":"Purchase price","691956534":"<0>You have added a {{currency}} account.<0> Make a deposit now to start trading.","692354762":"Please enter your {{document_name}}. {{example_format}}","693396140":"Deal cancellation (expired)","694035561":"Trade options multipliers","696870196":"- Open time: the opening time stamp","697630556":"This market is presently closed.","698037001":"National Identity Number","699159918":"1. Filing complaints","699646180":"A minimum deposit value of <0>{{minimum_deposit}} {{currency}} is required. Otherwise, the funds will be lost and cannot be recovered.","700259824":"Account currency","701034660":"We are still processing your withdrawal request.<0 />Please wait for the transaction to be completed before deactivating your account.","701462190":"Entry spot","701647434":"Search for string","702451070":"National ID (No Photo)","702561961":"Change theme","705299518":"Next, upload the page of your passport that contains your photo.","706413212":"To access the cashier, you are now in your {{regulation}} {{currency}} ({{loginid}}) account.","706727320":"Binary options trading frequency","706755289":"This block performs trigonometric functions.","706960383":"We’ll offer to buy your contract at this price should you choose to sell it before its expiry. This is based on several factors, such as the current spot price, duration, etc. However, we won’t offer a contract value if the remaining duration is below 60 seconds.","707662672":"{{unblock_date}} at {{unblock_time}}","708055868":"Driving licence number","710123510":"repeat {{ while_or_until }} {{ boolean }}","711999057":"Successful","712101776":"Take a photo of your passport photo page","712635681":"This block gives you the selected candle value from a list of candles. You can choose from open price, close price, high price, low price, and open time.","713054648":"Sending","714080194":"Submit proof","714746816":"MetaTrader 5 Windows app","715841616":"Please enter a valid phone number (e.g. +15417541234).","716428965":"(Closed)","718504300":"Postal/ZIP code","720293140":"Log out","720519019":"Reset my password","721011817":"- Raise the first number to the power of the second number","723045653":"You'll log in to your Deriv account with this email address.","723961296":"Manage password","724203548":"You can send your complaint to the <0>European Commission's Online Dispute Resolution (ODR) platform. This is not applicable to UK clients.","724526379":"Learn more with our tutorials","728042840":"To continue trading with us, please confirm where you live.","728824018":"Spanish Index","729651741":"Choose a photo","730473724":"This block performs the \"AND\" or the \"OR\" logic operation with the given values.","731382582":"BNB/USD","734390964":"Insufficient balance","734881840":"false","742469109":"Reset Balance","742676532":"Trade CFDs on forex, derived indices, cryptocurrencies, and commodities with high leverage.","743623600":"Reference","744110277":"Bollinger Bands Array (BBA)","745656178":"Use this block to sell your contract at the market price.","745674059":"Returns the specific character from a given string of text according to the selected option. ","746112978":"Your computer may take a few seconds to update","750886728":"Switch to your real account to submit your documents","751468800":"Start now","751692023":"We <0>do not guarantee a refund if you make a wrong transfer.","752024971":"Reached maximum number of digits","752992217":"This block gives you the selected constant values.","753088835":"Default","753184969":"In providing our services to you, we are required to obtain information from you in order to assess whether a given product or service is appropriate for you (that is, whether you possess the experience and knowledge to understand the risks involved).<0/><1/>","753727511":"Type","755867072":"{{platform_name_mt5}} is not available in {{country}}","756152377":"SMA places equal weight to the entire distribution of values.","758003269":"make list from text","759783233":"For more information and assistance to counselling and support services, please visit <0>begambleaware.org.","760528514":"Please note that changing the value of \"i\" won't change the value of the original item in the list","761576760":"Fund your account to start trading.","762185380":"<0>Multiply returns by <0>risking only what you put in.","762871622":"{{remaining_time}}s","762926186":"A quick strategy is a ready-made strategy that you can use in Deriv Bot. There are 3 quick strategies you can choose from: Martingale, D'Alembert, and Oscar's Grind.","764366329":"Trading limits","766317539":"Language","770171141":"Go to {{hostname}}","773091074":"Stake:","773309981":"Oil/USD","773336410":"Tether is a blockchain-enabled platform designed to facilitate the use of fiat currencies in a digital manner.","775679302":"{{pending_withdrawals}} pending withdrawal(s)","775706054":"Do you sell trading bots?","776085955":"Strategies","781924436":"Call Spread/Put Spread","783974693":"Avoid recent years","784311461":"Exponential Moving Average (EMA)","784583814":"Linked to your computer","785969488":"Jump 75 Index","787727156":"Barrier","788005234":"NA","792164271":"This is when your contract will expire based on the Duration or End time you’ve selected.","792622364":"Negative balance protection","793526589":"To file a complaint about our service, send an email to <0>complaints@deriv.com and state your complaint in detail. Please submit any relevant screenshots of your trading or system for our better understanding.","793531921":"Our company is one of the oldest and most reputable online trading companies in the world. We are committed to treat our clients fairly and provide them with excellent service.<0/><1/>Please provide us with feedback on how we can improve our services to you. Rest assured that you will be heard, valued, and treated fairly at all times.","793826881":"This is your personal start page for Deriv","794682658":"Copy the link to your phone","795859446":"Password saved","797007873":"Follow these steps to recover camera access:","797500286":"negative","800228448":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}} and {{legal_entity_name_fx}}.","800521289":"Your personal details are incomplete","801430087":"A link can contain the word \"Deriv\" and still be fake.","802436811":"View transaction details","802438383":"New proof of address is needed","802556390":"seconds","802989607":"Drag your XML file here","803500173":"Initial stake","806165583":"Australia 200","807499069":"Financial commission complaints procedure","808323704":"You can also use \"Compare\" and \"Logic operation\" blocks to make test variables.","811876954":"You may transfer between your Deriv fiat, cryptocurrency, {{platform_name_mt5}}, and {{platform_name_dxtrade}} accounts.","812430133":"Spot price on the previous tick.","812775047":"below the barrier","814827314":"The stop-out level on the chart indicates the price at which your potential loss equals your entire stake. When the market price reaches this level, your position will be closed automatically. This ensures that your loss does not exceed the amount you paid to purchase the contract.","815925952":"This block is mandatory. Only one copy of this block is allowed. It is added to the canvas by default when you open Deriv Bot.","816580787":"Welcome back! Your messages have been restored.","816738009":"<0/><1/>You may also raise your unresolved dispute to the <2>Office of the Arbiter for Financial Services.","818447476":"Switch account?","820877027":"Please verify your proof of identity","821163626":"Server maintenance occurs every first Saturday of the month from 7 to 10 GMT time. You may experience service disruption during this time.","823186089":"A block that can contain text.","824797920":"Is list empty?","825042307":"Let’s try again","826511719":"USD/SEK","827688195":"Disable Block","828219890":"then","828602451":"Returns the list of tick values in string format","830164967":"Last name","830703311":"My profile","830993327":"No current transactions available","832053636":"Document submission","832217983":"40 transactions or more in the past 12 months","832398317":"Sell Error","832588873":"Order execution","832721563":"If you select \"Low Tick\", you win the payout if the selected tick is the lowest among the next five ticks.","834966953":"1551661986 seconds since Jan 01 1970 (UTC) translates to 03/04/2019 @ 1:13am (UTC).","835058671":"Total buy price","835336137":"View Detail","835350845":"Add another word or two. Uncommon words are better.","836097457":"I am interested in trading but have very little experience.","837063385":"Do not send other currencies to this address.","837066896":"Your document is being reviewed, please check back in 1-3 days.","839618971":"ADDRESS","839805709":"To smoothly verify you, we need a better photo","840672750":"If this doesn’t work, uninstall and re-install the MT5 app. Then redo steps <0>2 and <0>3.","841434703":"Disable stack","841543189":"View transaction on Blockchain","843333337":"You can only make deposits. Please complete the <0>financial assessment to unlock withdrawals.","845213721":"Logout","845304111":"Slow EMA Period {{ input_number }}","848083350":"Your payout is equal to the <0>payout per point multiplied by the difference between the final price and the strike price. You will only earn a profit if your payout is higher than your initial stake.","850582774":"Please update your personal info","851054273":"If you select \"Higher\", you win the payout if the exit spot is strictly higher than the barrier.","851264055":"Creates a list with a given item repeated for a specific number of times.","851508288":"This block constrains a given number within a set range.","852527030":"Step 2","852583045":"Tick List String","854399751":"Digit code must only contain numbers.","854630522":"Choose a cryptocurrency account","857363137":"Volatility 300 (1s) Index","857445204":"Deriv currently supports withdrawals of Tether eUSDT to Ethereum wallet. To ensure a successful transaction, enter a wallet address compatible with the tokens you wish to withdraw. <0>Learn more","857986403":"do something","860319618":"Tourism","862283602":"Phone number*","863328851":"Proof of identity","864610268":"First, enter your {{label}} and the expiry date.","864957760":"Math Number Positive","865424952":"High-to-Low","865642450":"2. Logged in from a different browser","866496238":"Make sure your license details are clear to read, with no blur or glare","868826608":"Excluded from {{brand_website_name}} until","869068127":"The cashier is temporarily down due to maintenance. It will be available as soon as the maintenance is complete.","869823595":"Function","869993298":"Minimum withdrawal","872549975":"You have {{number}} transfers remaining for today.","872661442":"Are you sure you want to update email <0>{{prev_email}} to <1>{{changed_email}}?","872721776":"2. Select your XML file and hit Select.","872817404":"Entry Spot Time","873166343":"1. 'Log' displays a regular message.","874461655":"Scan the QR code with your phone","874484887":"Take profit must be a positive number.","875101277":"If I close my web browser, will Deriv Bot continue to run?","875532284":"Restart process on a different device","876086855":"Complete the financial assessment form","876292912":"Exit","879014472":"Reached maximum number of decimals","879647892":"You may sell the contract up until 60 seconds before expiry. If you do, we’ll pay you the <0>contract value.","881963105":"(XAUUSD, XAGUSD)","885065431":"Get a Deriv account","888274063":"Town/City","888924866":"We don’t accept the following inputs for:","890299833":"Go to Reports","891337947":"Select country","892341141":"Your trading statistics since: {{date_time}}","893117915":"Variable","893963781":"Close-to-Low","893975500":"You do not have any recent bots","894191608":"<0>c.We must award the settlement within 28 days of when the decision is reached.","898457777":"You have added a Deriv Financial account.","898904393":"Barrier:","900646972":"page.","902045490":"3 minutes","903429103":"In candles list read {{ candle_property }} # from end {{ input_number }}","904696726":"API token","905134118":"Payout:","905227556":"Strong passwords contain at least 8 characters, combine uppercase and lowercase letters and numbers.","905564365":"MT5 CFDs","906049814":"We’ll review your documents and notify you of its status within 5 minutes.","907680782":"Proof of ownership verification failed","909272635":"Financial - SVG","910888293":"Too many attempts","911048905":"(BTCUSD, ETHUSD)","912406629":"Follow these steps:","912967164":"Import from your computer","915735109":"Back to {{platform_name}}","918447723":"Real","920125517":"Add demo account","921901739":"- your account details of the bank linked to your account","922313275":"You're back online","924046954":"Upload a document showing your name and bank account number or account details.","926813068":"Fixed/Variable","929608744":"You are unable to make withdrawals","930346117":"Capitalization doesn't help very much","930546422":"Touch","933126306":"Enter some text here","933193610":"Only letters, periods, hyphens, apostrophes, and spaces, please.","934835052":"Potential profit","934932936":"PERSONAL","936766426":"You are limited to one fiat account. You won’t be able to change your account currency if you have already made your first deposit.","937237342":"Strategy name cannot be empty","937682366":"Upload both of these documents to prove your identity.","937831119":"Last name*","937992258":"Table","938500877":"{{ text }}. <0>You can view the summary of this transaction in your email.","938947787":"Withdrawal {{currency}}","938988777":"High barrier","943535887":"Please close your positions in the following Deriv MT5 account(s):","944499219":"Max. open positions","945532698":"Contract sold","946204249":"Read","946841802":"A white (or green) candle indicates that the open price is lower than the close price. This represents an upward movement of the market price.","946944859":"Hit the button below and we'll send you an email with a link. Click that link to verify your withdrawal request.","947046137":"Your withdrawal will be processed within 24 hours","947363256":"Create list","947758334":"City is required","947914894":"Top up  <0>","948156236":"Create {{type}} password","948176566":"New!","948545552":"150+","949859957":"Submit","952927527":"Regulated by the Malta Financial Services Authority (MFSA) (licence no. IS/70156)","955352264":"Trade on {{platform_name_dxtrade}}","956448295":"Cut-off image detected","957182756":"Trigonometric functions","958430760":"In/Out","959031082":"set {{ variable }} to MACD Array {{ dropdown }} {{ dummy }}","960201789":"3. Sell conditions","961266215":"140+","961327418":"My computer","961692401":"Bot","966457287":"set {{ variable }} to Exponential Moving Average {{ dummy }}","968576099":"Up/Down","969987233":"Win up to maximum payout if exit spot is between lower and upper barrier, in proportion to the difference between exit spot and lower barrier.","970915884":"AN","975668699":"I confirm and accept {{company}} 's <0>Terms and Conditions","975950139":"Country of Residence","977929335":"Go to my account settings","981138557":"Redirect","981568830":"You have chosen to exclude yourself from trading on our website until {{exclude_until}}. If you are unable to place a trade or deposit after your self-exclusion period, please contact us via <0>live chat.","981965437":"Scan the QR code below with your 2FA app. We recommend <0>Authy or <1>Google Authenticator.","982146443":"WhatsApp","982402892":"First line of address","982829181":"Barriers","983451828":"2. Select the asset and trade type.","987224688":"How many trades have you placed with other financial instruments in the past 12 months?","988064913":"4. Come back to Deriv Bot and add the Notify Telegram block to the workspace. Paste the Telegram API token and chat ID into the block fields accordingly.","988361781":"You have no trading activity yet.","988934465":"When prompted, you must enable camera access to continue","990739582":"170+","992294492":"Your postal code is invalid","992677950":"Logging out on other devices","993827052":"Choosing this jurisdiction will give you a Financial STP account. Your trades will go directly to the market and have tighter spreads.","995563717":"not {{ boolean }}","997276809":"I confirm that the name and date of birth above match my chosen identity document","999008199":"text","1001160515":"Sell","1001749987":"You’ll get a warning, named margin call, if your account balance drops down close to the stop out level.","1003876411":"Should start with letter or number and may contain a hyphen, period and slash.","1004127734":"Send email","1006458411":"Errors","1006664890":"Silent","1009032439":"All time","1010198306":"This block creates a list with strings and numbers.","1010337648":"We were unable to verify your proof of ownership.","1011424042":"{{text}}. stake<0/>","1012102263":"You will not be able to log in to your account until this date (up to 6 weeks from today).","1015201500":"Define your trade options such as duration and stake.","1016220824":"You need to switch to a real money account to use this feature.<0/>You can do this by selecting a real account from the <1>Account Switcher.","1018803177":"standard deviation","1019265663":"You have no transactions yet.","1019508841":"Barrier 1","1021679446":"Multipliers only","1022934784":"1 minute","1023237947":"1. In the example below, the instructions are repeated as long as the value of x is less than or equal to 10. Once the value of x exceeds 10, the loop is terminated.","1023643811":"This block purchases contract of a specified type.","1023795011":"Even/Odd","1024205076":"Logic operation","1025887996":"Negative Balance Protection","1026046972":"Please enter a payout amount that's lower than {{max_payout}}.","1026289179":"Trade on the go","1027098103":"Leverage gives you the ability to trade a larger position using your existing capital. Leverage varies across different symbols.","1028211549":"All fields are required","1028758659":"Citizenship*","1029164365":"We presume that you possess the experience, knowledge, and expertise to make your own investment decisions and properly assess the risk involved.","1030021206":"change {{ variable }} by {{ number }}","1031602624":"We've sent a secure link to %{number}","1031731167":"Pound Sterling","1032173180":"Deriv","1032907147":"AUD/NZD","1033076894":"- current profit/loss: Use this variable to store the cumulative profit or loss while your bot is running. Set the initial value to 0.","1035893169":"Delete","1036116144":"Speculate on the price movement of an asset without actually owning it.","1036867749":"The desired duration, stake, prediction, and/or barrier(s) for the contract is defined here.","1038575777":"Change password","1039428638":"EU regulation","1039755542":"Use a few words, avoid common phrases","1040472990":"1. Go to Bot Builder.","1040677897":"To continue trading, you must also submit a proof of address.","1041001318":"This block performs the following operations on a given list: sum, minimum, maximum, average, median, mode, antimode, standard deviation, random item.","1041620447":"If you are unable to scan the QR code, you can manually enter this code instead:","1042659819":"You have an account that needs action","1043790274":"There was an error","1044540155":"100+","1044599642":"<0> has been credited into your {{platform}} {{title}} account.","1045704971":"Jump 150 Index","1045782294":"Click the <0>Change password button to change your Deriv password.","1047389068":"Food Services","1047881477":"Unfortunately, your browser does not support the video.","1048687543":"Labuan Financial Services Authority","1048947317":"Sorry, this app is unavailable in {{clients_country}}.","1049384824":"Rise","1050063303":"Videos on Deriv Bot","1050128247":"I confirm that I have verified the payment agent’s transfer information.","1050844889":"Reports","1052779010":"You are on your demo account","1053153674":"Jump 50 Index","1053159279":"Level of education","1053556481":"Once you submit your complaint, we will send you an acknowledgement email to confirm that we have received it.","1055313820":"No document detected","1056381071":"Return to trade","1056821534":"Are you sure?","1057216772":"text {{ input_text }} is empty","1057749183":"Two-factor authentication (2FA)","1057765448":"Stop out level","1057904606":"The concept of the D’Alembert Strategy is said to be similar to the Martingale Strategy where you will increase your contract size after a loss. With the D’Alembert Strategy, you will also decrease your contract size after a successful trade.","1058804653":"Expiry","1060231263":"When are you required to pay an initial margin?","1061308507":"Purchase {{ contract_type }}","1062423382":"Explore the video guides and FAQs to build your bot in the tutorials tab.","1062536855":"Equals","1065275078":"cTrader is only available on desktop for now.","1065353420":"110+","1065498209":"Iterate (1)","1066235879":"Transferring funds will require you to create a second account.","1066459293":"4.3. Acknowledging your complaint","1069347258":"The verification link you used is invalid or expired. Please request for a new one.","1069576070":"Purchase lock","1070624871":"Check proof of address document verification status","1073261747":"Verifications","1076006913":"Profit/loss on the last {{item_count}} contracts","1077515534":"Date to","1078221772":"Leverage prevents you from opening large positions.","1080068516":"Action","1080990424":"Confirm","1082158368":"*Maximum account cash balance","1082406746":"Please enter a stake amount that's at least {{min_stake}}.","1083781009":"Tax identification number*","1083826534":"Enable Block","1087112394":"You must select the strike price before entering the contract.","1088031284":"Strike:","1088138125":"Tick {{current_tick}} - ","1089085289":"Mobile number","1089436811":"Tutorials","1089687322":"Stop your current bot?","1090041864":"The {{block_type}} block is mandatory and cannot be deleted/disabled.","1095295626":"<0>•The Arbiter for Financial Services will determine whether the complaint can be accepted and is in accordance with the law.","1096078516":"We’ll review your documents and notify you of its status within 3 days.","1096175323":"You’ll need a Deriv account","1098147569":"Purchase commodities or shares of a company.","1098622295":"\"i\" starts with the value of 1, and it will be increased by 2 at every iteration. The loop will repeat until \"i\" reaches the value of 12, and then the loop is terminated.","1100133959":"National ID","1100870148":"To learn more about account limits and how they apply, please go to the <0>Help Centre.","1101560682":"stack","1101712085":"Buy Price","1102420931":"Next, upload the front and back of your driving licence.","1102995654":"Calculates Exponential Moving Average (EMA) list from a list of values with a period","1103309514":"Target","1103452171":"Cookies help us to give you a better experience and personalised content on our site.","1104912023":"Pending verification","1107474660":"Submit proof of address","1107555942":"To","1109217274":"Success!","1110102997":"Statement","1112582372":"Interval duration","1113119682":"This block gives you the selected candle value from a list of candles.","1113292761":"Less than 8MB","1114679006":"You have successfully created your bot using a simple strategy.","1117281935":"Sell conditions (optional)","1117863275":"Security and safety","1118294625":"You have chosen to exclude yourself from trading on our website until {{exclusion_end}}. If you are unable to place a trade or deposit after your self-exclusion period, please contact us via live chat.","1119887091":"Verification","1119986999":"Your proof of address was submitted successfully","1120985361":"Terms & conditions updated","1122910860":"Please complete your <0>financial assessment.","1123927492":"You have not selected your account currency","1125090693":"Must be a number","1126075317":"Add your Deriv MT5 <0>{{account_type_name}} STP account under Deriv (FX) Ltd regulated by Labuan Financial Services Authority (Licence no. MB/18/0024).","1126934455":"Length of token name must be between 2 and 32 characters.","1127149819":"Make sure§","1127224297":"Sorry for the interruption","1128139358":"How many CFD trades have you placed in the past 12 months?","1128321947":"Clear All","1128404172":"Undo","1129124569":"If you select \"Under\", you will win the payout if the last digit of the last tick is less than your prediction.","1129842439":"Please enter a take profit amount.","1130744117":"We shall try to resolve your complaint within 10 business days. We will inform you of the outcome together with an explanation of our position and propose any remedial measures we intend to take.","1130791706":"N","1133651559":"Live chat","1134879544":"Example of a document with glare","1138126442":"Forex: standard","1139483178":"Enable stack","1143730031":"Direction is {{ direction_type }}","1144028300":"Relative Strength Index Array (RSIA)","1145927365":"Run the blocks inside after a given number of seconds","1146064568":"Go to Deposit page","1147269948":"Barrier cannot be zero.","1150637063":"*Volatility 150 Index and Volatility 250 Index","1151964318":"both sides","1152294962":"Upload the front of your driving licence.","1154021400":"list","1154239195":"Title and name","1155011317":"This block converts the date and time to the number of seconds since the Unix Epoch (1970-01-01 00:00:00).","1155626418":"below","1158678321":"<0>b.The Head of the Dispute Resolution Committee (DRC) will contact both you and us within 5 business days to obtain all necessary information and see if there is a chance to settle the complaint during the investigation phase.","1160761178":"No payout if exit spot is below or equal to the lower barrier.","1161924555":"Please select an option","1163771266":"The third block is <0>optional. You may use this block if you want to sell your contract before it expires. For now, leave the block as it is. ","1163836811":"Real Estate","1164773983":"Take profit and/or stop loss are not available while deal cancellation is active.","1166128807":"Choose one of your accounts or add a new cryptocurrency account","1166377304":"Increment value","1168029733":"Win payout if exit spot is also equal to entry spot.","1169201692":"Create {{platform}} password","1170228717":"Stay on {{platform_name_trader}}","1171765024":"Step 3","1171961126":"trade parameters","1172524677":"CFDs Demo","1174542625":"- Find the chat ID property in the response, and copy the value of the id property","1174689133":"3. Set your trade parameters and hit Run.","1174748431":"Payment channel","1175183064":"Vanuatu","1176926166":"Experience with trading other financial instruments","1177396776":"If you select \"Asian Fall\", you will win the payout if the last tick is lower than the average of the ticks.","1177723589":"There are no transactions to display","1178582280":"The number of contracts you have lost since you last cleared your stats.","1178800778":"Take a photo of the back of your license","1178942276":"Please try again in a minute.","1179704370":"Please enter a take profit amount that's higher than the current potential profit.","1180619731":"Each day, you can make up to {{ allowed_internal }} transfers between your Deriv accounts, up to {{ allowed_mt5 }} transfers between your Deriv and {{platform_name_mt5}} accounts, and up to {{ allowed_dxtrade }} transfers between your Deriv and {{platform_name_dxtrade}} accounts.","1181396316":"This block gives you a random number from within a set range","1181770592":"Profit/loss from selling","1183007646":"- Contract type: the name of the contract type such as Rise, Fall, Touch, No Touch, etс.","1184968647":"Close your contract now or keep it running. If you decide to keep it running, you can check and close it later on the ","1188316409":"To receive your funds, contact the payment agent with the details below","1188980408":"5 minutes","1189249001":"4.1. What is considered a complaint?","1189368976":"Please complete your personal details before you verify your identity.","1191429031":"Please click on the link in the email to change your <0>{{platform_name_dxtrade}} password.","1191644656":"Predict the market direction and select either “Up” or “Down” to open a position. We will charge a commission when you open a position.","1192708099":"Duration unit","1195393249":"Notify {{ notification_type }} with sound: {{ notification_sound }} {{ input_message }}","1196006480":"Profit threshold","1196683606":"Deriv MT5 CFDs demo account","1198368641":"Relative Strength Index (RSI)","1199281499":"Last Digits List","1201533528":"Contracts won","1201773643":"numeric","1203297580":"This block sends a message to a Telegram channel.","1204223111":"In this example, the open prices from a list of candles are assigned to a variable called \"candle_list\".","1206227936":"How to mask your card?","1206821331":"Armed Forces","1207152000":"Choose a template and set your trade parameters.","1208714859":"For Short:","1208729868":"Ticks","1208903663":"Invalid token","1211912982":"Bot is starting","1214893428":"Account creation is currently unavailable for mobile. Please log in with your computer to create a new account.","1216408337":"Self-Employed","1217159705":"Bank account number","1217481729":"Tether as an ERC20 token (eUSDT) is a version of Tether that is hosted on Ethereum.","1218546232":"What is Fiat onramp?","1219844088":"do %1","1221250438":"To enable withdrawals, please submit your <0>Proof of Identity (POI) and <1>Proof of Address (POA) and also complete the <2>financial assessment in your account settings.","1222096166":"Deposit via bank wire, credit card, and e-wallet","1222521778":"Making deposits and withdrawals is difficult.","1222544232":"We’ve sent you an email","1225150022":"Number of assets","1227074958":"random fraction","1227240509":"Trim spaces","1228534821":"Some currencies may not be supported by payment agents in your country.","1229883366":"Tax identification number","1230884443":"State/Province (optional)","1231282282":"Use only the following special characters: {{permitted_characters}}","1232291311":"Maximum withdrawal remaining","1232353969":"0-5 transactions in the past 12 months","1233300532":"Payout","1234292259":"Source of wealth","1234764730":"Upload a screenshot of your name and email address from the personal details section.","1235426525":"50%","1237330017":"Pensioner","1238311538":"Admin","1239752061":"In your cryptocurrency wallet, make sure to select the <0>{{network_name}} network when you transfer funds to Deriv.","1239760289":"Complete your trading assessment","1239940690":"Restarts the bot when an error is encountered.","1240027773":"Please Log in","1240688917":"Glossary","1241238585":"You may transfer between your Deriv fiat, cryptocurrency, and {{platform_name_mt5}} accounts.","1242288838":"Hit the checkbox above to choose your document.","1242994921":"Click here to start building your Deriv Bot.","1243064300":"Local","1243287470":"Transaction status","1246207976":"Enter the authentication code generated by your 2FA app:","1246880072":"Select issuing country","1247280835":"Our cryptocurrency cashier is temporarily down due to system maintenance. You can make cryptocurrency deposits and withdrawals in a few minutes when the maintenance is complete.","1248018350":"Source of income","1248940117":"<0>a.The decisions made by the DRC are binding on us. DRC decisions are binding on you only if you accept them.","1250495155":"Token copied!","1252669321":"Import from your Google Drive","1253531007":"Confirmed","1254565203":"set {{ variable }} to create list with","1255827200":"You can also import or build your bot using any of these shortcuts.","1255909792":"last","1255963623":"To date/time {{ input_timestamp }} {{ dummy }}","1258097139":"What could we do to improve?","1258198117":"positive","1259598687":"GBP/JPY","1260259925":"Phone is not in a proper format.","1263387702":"All {{count}} account types use market execution. This means you agree with the broker's price in advance and will place orders at the broker's price.","1264096613":"Search for a given string","1264842111":"You can switch between real and demo accounts.","1265704976":"","1269296089":"Let's build a Bot!","1270581106":"If you select \"No Touch\", you win the payout if the market never touches the barrier at any time during the contract period.","1271461759":"Your contract will be closed automatically if your profit reaches this amount.","1272012156":"GBP/CHF","1272337240":"Days","1272681097":"Hours","1274819385":"3. Complaints and Disputes","1281045211":"Sorts the items in a given list, by their numeric or alphabetical value, in either ascending or descending order.","1281290230":"Select","1282951921":"Only Downs","1284522768":"If \"Loss\" is selected, it will return \"True\" if your last trade was unsuccessful. Otherwise, it will return an empty string.","1286094280":"Withdraw","1286507651":"Close identity verification screen","1288965214":"Passport","1289146554":"British Virgin Islands Financial Services Commission","1289646209":"Margin call","1290525720":"Example: ","1291887623":"Digital options trading frequency","1291997417":"Contracts will expire at exactly 23:59:59 GMT on your selected expiry date.","1292188546":"Reset Deriv MT5 investor password","1292891860":"Notify Telegram","1293660048":"Max. total loss per day","1294756261":"This block creates a function, which is a group of instructions that can be executed at any time. Place other blocks in here to perform any kind of action that you need in your strategy. When all the instructions in a function have been carried out, your bot will continue with the remaining blocks in your strategy. Click the “do something” field to give it a name of your choice. Click the plus icon to send a value (as a named variable) to your function.","1295284664":"Please accept our <0>updated Terms and Conditions to proceed.","1296380713":"Close my contract","1299479533":"8 hours","1300576911":"Please resubmit your proof of address or we may restrict your account.","1302691457":"Occupation","1303016265":"Yes","1303530014":"We’re processing your withdrawal.","1304083330":"copy","1304272843":"Please submit your proof of address.","1304620236":"Enable camera","1304788377":"<0/><1/>If your complaint relates to our data processing practices, you can submit a formal complaint to the <2>Information and Data Protection Commissioner (Malta) on their website or make a complaint to any supervisory authority within the European Union.","1304807342":"Compare CFDs demo accounts","1305217290":"Upload the back of your identity card.","1308625834":"Sets the default time interval for blocks that read list of candles.","1309017029":"Enabling this allows you to save your blocks as one collection which can be easily integrated into other bots.","1309044871":"Returns the value of the latest tick in string format","1309133590":"Earn a range of payouts by correctly predicting market movements with <0>options, or get the upside of CFDs without risking more than your initial stake with <1>multipliers.","1309186223":"- current stake: Use this variable to store the stake amount used in the last contract. You can assign any amount you want, but it must be a positive number.","1310483610":"Results for \"{{ search_term }}\"","1311680770":"payout","1313167179":"Please log in","1316216284":"You can use this password for all your {{platform}} accounts.","1319217849":"Check your mobile","1320750775":"Front and back","1322804930":"Restart the process on the latest version of Google Chrome","1323327633":"Our complaints process comprises the following 4 steps:","1323476617":"Changes the capitalisation of a string of text to Upper case, Lower case, Title case.","1323941798":"Short","1323996051":"Profile","1324922837":"2. The new variable will appear as a block under Set variable.","1325514262":"(licence no. MB/18/0024)","1327181172":"Financial Vanuatu","1327494533":"{{sell_value}} (Sell)","1329136554":"Jump 200 Index","1329325646":"The content of this block is called on every tick","1331199417":"Please enter the correct format. ","1331367811":"Client account number","1332168410":"Learn more","1332168769":"Disconnect","1333576137":"Please update your {{details}} to continue.","1333839457":"Submit identity card (front)","1334326985":"It may take a few minutes to arrive","1335967988":"Notice","1336052175":"Switch accounts","1337846406":"This block gives you the selected candle value from a list of candles within the selected time interval.","1337864666":"Photo of your document","1338496204":"Ref. ID","1339613797":"Regulator/External dispute resolution","1340286510":"The bot has stopped, but your trade may still be running. You can check it on the Reports page.","1341840346":"View in Journal","1346204508":"Take profit","1346339408":"Managers","1347071802":"{{minutePast}}m ago","1348009461":"Please close your positions in the following Deriv X account(s):","1349133669":"Try changing your search criteria.","1349289354":"Great, that's everything we need","1349295677":"in text {{ input_text }} get substring from {{ position1 }} {{ index1 }} to {{ position2 }} {{ index2 }}","1351906264":"This feature is not available for payment agents.","1353197182":"Please select","1354288636":"Based on your answers, it looks like you have insufficient knowledge and experience in trading CFDs. CFD trading is risky and you could potentially lose all of your capital.<0/><0/>","1355250245":"{{ calculation }} of list {{ input_list }}","1356373528":"Run Deriv EZ on your browser","1356574493":"Returns a specific portion of a given string of text.","1356607862":"Deriv password","1357129681":"{{num_day}} days {{num_hour}} hours {{num_minute}} minutes","1357213116":"Identity card","1358543466":"Not available","1358543748":"enabled","1360929368":"Add a Deriv account","1362578283":"High","1363060668":"Your trading statistics since:","1363645836":"Derived FX","1363675688":"Duration is a required field.","1364958515":"Stocks","1366244749":"Limits","1367023655":"To ensure your loss does not exceed your stake, your contract will be closed automatically when your loss equals to <0/>.","1367488817":"4. Restart trading conditions","1367990698":"Volatility 10 Index","1369709538":"Our terms of use","1370647009":"Enjoy higher daily limits","1371193412":"Cancel","1371555192":"Choose your preferred payment agent and enter your withdrawal amount. If your payment agent is not listed, <0>search for them using their account number.","1371641641":"Open the link on your mobile","1371911731":"Financial products in the EU are offered by {{legal_entity_name}}, licensed as a Category 3 Investment Services provider by the Malta Financial Services Authority (<0>Licence no. IS/70156).","1374627690":"Max. account balance","1375884086":"Financial, legal, or government document: recent bank statement, affidavit, or government-issued letter.","1376329801":"Last 60 days","1378419333":"Ether","1380349261":"Range","1383017005":"You have switched accounts.","1384127719":"You should enter {{min}}-{{max}} numbers.","1384222389":"Please submit valid identity documents to unlock the cashier.","1385418910":"Please set a currency for your existing real account before creating another account.","1387503299":"Log in","1388770399":"Proof of identity required","1389197139":"Import error","1390792283":"Trade parameters","1391174838":"Potential payout:","1392966771":"Mrs","1392985917":"This is similar to a commonly used password","1393559748":"Invalid date/time: {{ datetime_string }}","1393901361":"There’s an app for that","1393903598":"if true {{ return_value }}","1396179592":"Commission","1396417530":"Bear Market Index","1397628594":"Insufficient funds","1400341216":"We’ll review your documents and notify you of its status within 1 to 3 days.","1400732866":"View from camera","1402208292":"Change text case","1403376207":"Update my details","1405584799":"with interval: {{ candle_interval_type }}","1407191858":"DTrader","1408844944":"Click the plus icon to extend the functionality of this block.","1411373212":"Strong passwords contain at least 8 characters. combine uppercase and lowercase letters, numbers, and symbols.","1412535872":"You can check the result of the last trade with this block. It can only be placed within the \"Restart trading conditions\" root block.","1413047745":"Assigns a given value to a variable","1413359359":"Make a new transfer","1414205271":"prime","1415006332":"get sub-list from first","1415513655":"Download cTrader on your phone to trade with the Deriv cTrader account","1415974522":"If you select \"Differs\", you will win the payout if the last digit of the last tick is not the same as your prediction.","1417558007":"Max. total loss over 7 days","1417914636":"Login ID","1418115525":"This block repeats instructions as long as a given condition is true.","1421749665":"Simple Moving Average (SMA)","1422060302":"This block replaces a specific item in a list with another given item. It can also insert the new item in the list at a specific position.","1422129582":"All details must be clear — nothing blurry","1423082412":"Last Digit","1423296980":"Enter your SSNIT number","1424741507":"See more","1424779296":"If you've recently used bots but don't see them in this list, it may be because you:","1428657171":"You can only make deposits. Please contact us via <0>live chat for more information.","1430396558":"5. Restart buy/sell on error","1430632931":"To get trading, please confirm who you are, and where you live.","1433367863":"Sorry, an error occured while processing your request.","1433468641":"We offer our services in all countries, except for the ones mentioned in our terms and conditions.","1434382099":"Displays a dialog window with a message","1434767075":"Get started on Deriv Bot","1434976996":"Announcement","1435363248":"This block converts the number of seconds since the Unix Epoch to a date and time format such as 2019-08-01 00:00:00.","1435380105":"Minimum deposit","1437396005":"Add comment","1438247001":"A professional client receives a lower degree of client protection due to the following.","1438340491":"else","1439168633":"Stop loss:","1441208301":"Total<0 />profit/loss","1442747050":"Loss amount: <0>{{profit}}","1442840749":"Random integer","1443478428":"Selected proposal does not exist","1444843056":"Corporate Affairs Commission","1445592224":"You accidentally gave us another email address (Usually a work or a personal one instead of the one you meant).","1446742608":"Click here if you ever need to repeat this tour.","1449462402":"In review","1452260922":"Too many failed attempts","1452941569":"This block delays execution for a given number of seconds. You can place any blocks within this block. The execution of other blocks in your strategy will be paused until the instructions in this block are carried out.","1453317405":"This block gives you the balance of your account either as a number or a string of text.","1454406889":"Choose <0>until as the repeat option.","1454648764":"deal reference id","1454865058":"Do not enter an address linked to an ICO purchase or crowdsale. If you do, the ICO tokens will not be credited into your account.","1455741083":"Upload the back of your driving licence.","1457341530":"Your proof of identity verification has failed","1457603571":"No notifications","1458160370":"Enter your {{platform}} password to add a {{platform_name}} {{account}} {{jurisdiction_shortcode}} account.","1459761348":"Submit proof of identity","1461323093":"Display messages in the developer’s console.","1464190305":"This block will transfer the control back to the Purchase conditions block, enabling you to purchase another contract without manually stopping and restarting your bot.","1464253511":"You already have an account for each of the cryptocurrencies available on {{deriv}}.","1465084972":"How much experience do you have with other financial instruments?","1465919899":"Pick an end date","1466430429":"Should be between {{min_value}} and {{max_value}}","1466900145":"Doe","1467017903":"This market is not yet available on {{platform_name_trader}}, but it is on {{platform_name_smarttrader}}.","1467421920":"with interval: %1","1467661678":"Cryptocurrency trading","1467880277":"3. General queries","1468308734":"This block repeats instructions as long as a given condition is true","1468419186":"Deriv currently supports withdrawals of Tether USDT to Omni wallet. To ensure a successful transaction, enter a wallet address compatible with the tokens you wish to withdraw. <0>Learn more","1468937050":"Trade on {{platform_name_trader}}","1469133110":"cTrader Windows app","1469150826":"Take Profit","1469764234":"Cashier Error","1469814942":"- Division","1470319695":"Returns either True or False","1471008053":"Deriv Bot isn't quite ready for real accounts","1471070549":"Can contract be sold?","1471741480":"Severe error","1473369747":"Synthetics only","1476301886":"Similar to SMA, this block gives you the entire SMA line containing a list of all values for a given period.","1478030986":"Create or delete API tokens for trading and withdrawals","1480915523":"Skip","1481977420":"Please help us verify your withdrawal request.","1483470662":"Click ‘Open’ to start trading with your account","1484336612":"This block is used to either terminate or continue a loop, and can be placed anywhere within a loop block.","1487086154":"Your documents were submitted successfully","1488548367":"Upload again","1491392301":"<0>Sold for: {{sold_for}}","1492686447":"Your MT5 Financial STP account will be opened through Deriv (FX) Ltd. All trading in this account is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA). None of your other accounts, including your Deriv account, is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA).","1493673429":"Change email","1493866481":"Run Deriv X on your browser","1496810530":"GBP/AUD","1497773819":"Deriv MT5 accounts","1499074768":"Add a real Deriv Multipliers account","1499080621":"Tried to perform an invalid operation.","1501691227":"Add Your Deriv MT5 <0>{{account_type_name}} account under Deriv (V) Ltd, regulated by the Vanuatu Financial Services Commission.","1502039206":"Over {{barrier}}","1502325741":"Your password cannot be the same as your email address.","1503618738":"- Deal reference ID: the reference ID of the contract","1505420815":"No payment agents found for your search","1505898522":"Download stack","1505927599":"Our servers hit a bump. Let’s refresh to move on.","1509559328":"cTrader","1509570124":"{{buy_value}} (Buy)","1509678193":"Education","1510075920":"Gold/USD","1510357015":"Tax residence is required.","1510735345":"This block gives you a list of the last digits of the last 1000 tick values.","1512469749":"In the above example it is assumed that variable candle_open_price is processed somewhere within other blocks.","1513771077":"We're processing your withdrawal.","1516559721":"Please select one file only","1516676261":"Deposit","1516834467":"‘Get’ the accounts you want","1517503814":"Drop file or click here to upload","1519124277":"Derived SVG","1519891032":"Welcome to Trader's Hub","1520332426":"Net annual income","1524636363":"Authentication failed","1526483456":"2. Enter a name for your variable, and hit Create. New blocks containing your new variable will appear below.","1527251898":"Unsuccessful","1527664853":"Your payout is equal to the payout per point multiplied by the difference between the final price and the strike price.","1527906715":"This block adds the given number to the selected variable.","1531017969":"Creates a single text string from combining the text value of each attached item, without spaces in between. The number of items can be added accordingly.","1533177906":"Fall","1534796105":"Gets variable value","1537711064":"You need to make a quick identity verification before you can access the Cashier. Please go to your account settings to submit your proof of identity.","1540585098":"Decline","1541508606":"Looking for CFDs? Go to Trader's Hub","1541969455":"Both","1542742708":"Synthetics, Forex, Stocks, Stock indices, Commodities, and Cryptocurrencies","1544642951":"If you select \"Only Ups\", you win the payout if consecutive ticks rise successively after the entry spot. No payout if any tick falls or is equal to any of the previous ticks.","1547148381":"That file is too big (only up to 8MB allowed). Please upload another file.","1548765374":"Verification of document number failed","1549098835":"Total withdrawn","1551172020":"AUD Basket","1552162519":"View onboarding","1555345325":"User Guide","1557426040":"Demo Derived SVG","1557682012":"Account Settings","1557904289":"We accept only these types of documents as proof of your address. The document must be recent (issued within last 6 months) and include your name and address:","1558972889":"set {{ variable }} to Simple Moving Average {{ dummy }}","1559220089":"Options and multipliers trading platform.","1560302445":"Copied","1562374116":"Students","1562982636":"Re-add your MT5 account using the same log in credentials.","1564392937":"When you set your limits or self-exclusion, they will be aggregated across all your account types in {{platform_name_trader}} and {{platform_name_dbot}}. For example, the losses made on both platforms will add up and be counted towards the loss limit you set.","1566037033":"Bought: {{longcode}} (ID: {{transaction_id}})","1566717687":"We also provide a guide on the Tutorial tab to show you how you can build and execute a simple strategy.","1567076540":"Only use an address for which you have proof of residence - ","1567745852":"Bot name","1569624004":"Dismiss alert","1570484627":"Ticks list","1571575776":"Accepted formats: pdf, jpeg, jpg, and png. Max file size: 8MB","1572504270":"Rounding operation","1572982976":"Server","1573429525":"Call/Put","1573533094":"Your document is pending for verification.","1574989243":"- trade again: Use this variable to stop trading when your loss limit is reached. Set the initial value to true.","1575556189":"Tether on the Ethereum blockchain, as an ERC20 token, is a newer transport layer, which now makes Tether available in Ethereum smart contracts. As a standard ERC20 token, it can also be sent to any Ethereum address.","1577480486":"Your mobile link will expire in one hour","1577527507":"Account opening reason is required.","1577612026":"Select a folder","1579839386":"Appstore","1580498808":"Multiple faces found","1584109614":"Ticks String List","1584936297":"XML file contains unsupported elements. Please check or modify file.","1585859194":"We’ll charge a 1% transfer fee for transfers in different currencies between your Deriv fiat and {{platform_name_mt5}} accounts, your Deriv fiat and {{platform_name_derivez}} accounts, and your Deriv fiat and {{platform_name_dxtrade}} accounts.","1587046102":"Documents from that country are not currently supported — try another document type","1589148299":"Start","1589640950":"Resale of this contract is not offered.","1589702653":"Proof of address","1590400723":"Total assets in all your accounts","1591933071":"Resubmit document","1593010588":"Login now","1594147169":"Please come back in","1594322503":"Sell is available","1596378630":"You have added a real Gaming account.<0/>Make a deposit now to start trading.","1597672660":"Deriv MT5 Password","1598009247":"<0>a.You may file a complaint with the Financial Commission up to 45 days after the incident.","1598443642":"Transaction hash","1602894348":"Create a password","1604916224":"Absolute","1605222432":"I have no knowledge and experience in trading at all.","1605292429":"Max. total loss","1612105450":"Get substring","1612638396":"Cancel your trade at any time within a specified timeframe.","1613633732":"Interval should be between 10-60 minutes","1615897837":"Signal EMA Period {{ input_number }}","1618809782":"Maximum withdrawal","1619070150":"You are being redirected to an external website.","1620278321":"Names and surnames by themselves are easy to guess","1620346110":"Set currency","1621024661":"Tether as a TRC20 token (tUSDT) is a version of Tether that is hosted on Tron.","1622662457":"Date from","1622944161":"Now, go to the <0>Restart trading conditions block.","1623706874":"Use this block when you want to use multipliers as your trade type.","1628981793":"Can I trade cryptocurrencies on Deriv Bot?","1630417358":"Please go to your account settings and complete your personal details to enable withdrawals.","1631281562":"GBP Basket","1634903642":"Only your face can be in the selfie","1634969163":"Change currency","1635266650":"It seems that your name in the document is not the same as your Deriv profile. Please update your name in the <0>Personal details page to solve this issue.","1635628424":"An envelope with your name and address.","1636605481":"Platform settings","1636782601":"Multipliers","1638321777":"Your demo account balance is low. Reset your balance to continue trading from your demo account.","1639262461":"Pending withdrawal request:","1639304182":"Please click on the link in the email to reset your password.","1641395634":"Last digits list","1641635657":"New proof of identity document needed","1641980662":"Salutation is required.","1644636153":"Transaction hash: <0>{{value}}","1644703962":"Looking for CFD accounts? Go to Trader's Hub","1644864436":"You’ll need to authenticate your account before requesting to become a professional client. <0>Authenticate my account","1644908559":"Digit code is required.","1647186767":"The bot encountered an error while running.","1648938920":"Netherlands 25","1649239667":"2. Under the Blocks menu, you'll see a list of categories. Blocks are grouped within these categories. Choose the block you want and drag them to the workspace.","1651513020":"Display remaining time for each interval","1651951220":"Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"","1652366857":"get and remove","1652968048":"Define your trade options such as multiplier and stake.","1652976865":"In this example, this block is used with another block to get the open prices from a list of candles. The open prices are then assigned to the variable called \"cl\".","1653136377":"copied!","1653180917":"We cannot verify you without using your camera","1654365787":"Unknown","1654721858":"Upload anyway","1655627840":"UPPER CASE","1656155124":"Resend in <0 /> seconds","1658954996":"Plant and Machine Operators and Assemblers","1659074761":"Reset Put","1659352235":"Add your Deriv MT5 CFDs account under Deriv Investments (Europe) Limited, regulated by the Malta Financial Services Authority (MFSA) (licence no. IS/70156).","1665272539":"Remember: You cannot log in to your account until the selected date.","1665738338":"Balance","1665756261":"Go to live chat","1668138872":"Modify account settings","1670016002":"Multiplier: {{ multiplier }}","1670426231":"End Time","1671232191":"You have set the following limits:","1674163852":"You can determine the expiry of your contract by setting the duration or end time.","1675030608":"To create this account first we need you to resubmit your proof of address.","1675289747":"Switched to real account","1676549796":"Dynamic Leverage","1677027187":"Forex","1677990284":"My apps","1679743486":"1. Go to Quick strategy and select the strategy you want.","1680666439":"Upload your bank statement showing your name, account number, and transaction history.","1682409128":"Untitled Strategy","1682636566":"Resend email in","1683522174":"Top-up","1683963454":"Your contract will be closed automatically at the next available asset price on {{date}} at {{timestamp}}.","1684419981":"What's this?","1686800117":"{{error_msg}}","1687173740":"Get more","1689103988":"Second Since Epoch","1689258195":"We were unable to verify your address with the details you provided. Please check and resubmit or choose a different document type.","1691335819":"To continue trading with us, please confirm who you are.","1691765860":"- Negation","1692912479":"Deriv MT5, Deriv X","1693614409":"Start time","1694331708":"You can switch between CFDs, digital options, and multipliers at any time.","1694517345":"Enter a new email address","1698624570":"2. Hit Ok to confirm.","1700233813":"Transfer from {{selected_value}} is not allowed, Please choose another account from dropdown","1701447705":"Please update your address","1702339739":"Common mistakes","1703091957":"We collect information about your employment as part of our due diligence obligations, as required by anti-money laundering legislation.","1704656659":"How much experience do you have in CFD trading?","1708413635":"For your {{currency_name}} ({{currency}}) account","1709401095":"Trade CFDs on Deriv X with financial markets and our Derived indices.","1709859601":"Exit Spot Time","1710662619":"If you have the app, launch it to start trading.","1711013665":"Anticipated account turnover","1711676335":"square root","1711929663":"Your funds have been transferred","1712357617":"Invalid email address.","1714255392":"To enable withdrawals, please complete your financial assessment.","1715011380":"Jump 25 Index","1715630945":"Returns the total profit in string format","1717023554":"Resubmit documents","1719248689":"EUR/GBP/USD","1720451994":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv fiat and Deriv cryptocurrency accounts.","1720968545":"Upload passport photo page from your computer","1723589564":"Represents the maximum number of outstanding contracts in your portfolio. Each line in your portfolio counts for one open position. Once the maximum is reached, you will not be able to open new positions without closing an existing position first.","1724696797":"You are limited to one fiat account only.","1725958461":"Account number","1726472773":"Function with no return value","1726565314":"Close my account","1728121741":"Transactions.csv","1728183781":"About Tether","1729145421":"Risk warning","1731747596":"The block(s) highlighted in red are missing input values. Please update them and click \"Run bot\".","1732891201":"Sell price","1733711201":"Regulators/external dispute resolution","1734185104":"Balance: %1","1734264460":"Disclaimer","1736292549":"Update postal code","1737352280":"Bot.init is not called","1738094481":"<0>Duration: Ticks 1","1738681493":"Remove your glasses, if necessary","1739086943":"Wall Street 30","1739384082":"Unemployed","1739668049":"Close your account","1740371444":"Underlying market is not selected","1742256256":"Please upload one of the following documents:","1743448290":"Payment agents","1743679873":"If you select <0>\"Call\", you’ll earn a <1>payout if the <1>final price is above the <1>strike price at <1>expiry. Otherwise, you won’t receive a payout.","1743902050":"Complete your financial assessment","1744509610":"Just drag the XML file from your computer onto the workspace, and your bot will be loaded accordingly. Alternatively, you can hit Import in Bot Builder, and choose to import your bot from your computer or from your Google Drive.","1745523557":"- Square root","1746051371":"Download the app","1746273643":"Moving Average Convergence Divergence","1747501260":"Sell conditions","1747523625":"Go back","1747674345":"Please use `.` as a decimal separator for fractional numbers.","1747682136":"Contract was cancelled.","1748754976":"Run","1749675724":"Deriv charges no commission across all account types.","1750065391":"Login time:","1753183432":"We take all complaints seriously and aim to resolve them as quickly and fairly as possible. If you are unhappy with any aspect of our service, please let us know by submitting a complaint using the guidance below:","1753226544":"remove","1753975551":"Upload passport photo page","1756678453":"break out","1758386013":"Do not get lured to fake \"Deriv\" pages!","1761038852":"Let’s continue with providing proofs of address and identity.","1761762171":"Restart last trade on error (bot ignores the unsuccessful trade): {{ checkbox }}","1762707297":"Phone number","1762746301":"MF4581125","1763123662":"Upload your NIMC slip.","1766212789":"Server maintenance starts at 06:00 GMT every Sunday and may last up to 2 hours. You may experience service disruption during this time.","1766993323":"Only letters, numbers, and underscores are allowed.","1767429330":"Add a Derived account","1768293340":"Contract value","1768861315":"Minute","1768918213":"Only letters, space, hyphen, period, and apostrophe are allowed.","1769068935":"Choose any of these exchanges to buy cryptocurrencies:","1771037549":"Add a Deriv real account","1771592738":"Conditional block","1777847421":"This is a very common password","1778893716":"Click here","1779144409":"Account verification required","1779519903":"Should be a valid number.","1780442963":"Scan the QR code to download {{ platform }}.","1780770384":"This block gives you a random fraction between 0.0 to 1.0.","1781393492":"We do not charge a transfer fee for transfers in the same currency between your Deriv fiat and {{platform_name_mt5}} accounts, your Deriv fiat and {{platform_name_derivez}} accounts and your Deriv fiat and {{platform_name_dxtrade}} accounts.","1782308283":"Quick strategy","1782395995":"Last Digit Prediction","1782690282":"Blocks menu","1782703044":"Sign up","1783526986":"How do I build a trading bot?","1783740125":"Upload your selfie","1787135187":"Postal/ZIP code is required","1787492950":"Indicators on the chart tab are for indicative purposes only and may vary slightly from the ones on the {{platform_name_dbot}} workspace.","1788515547":"<0/>For more information on submitting a complaint with the Office of the Arbiter for Financial Services, please <1>see their guidance.","1788966083":"01-07-1999","1789273878":"Payout per point","1789497185":"Make sure your passport details are clear to read, with no blur or glare","1790770969":"FX-majors (standard/micro lots), FX-minors, Commodities, Cryptocurrencies","1791432284":"Search for country","1791971912":"Recent","1793913365":"To deposit money, please switch to your {{currency_symbol}} account.","1794815502":"Download your transaction history.","1796787905":"Please upload the following document(s).","1798943788":"You can only make deposits.","1801093206":"Get candle list","1801270786":"Ready to automate your trading strategy without writing any code? You’ve come to the right place.","1801927731":"{{platform_name_dxtrade}} accounts","1803338729":"Choose what type of contract you want to trade. For example, for the Rise/Fall trade type you can choose one of three options: Rise, Fall, or Both. Selected option will determine available options for the Purchase block.","1804620701":"Expiration","1804789128":"{{display_value}} Ticks","1806017862":"Max. ticks","1806355993":"No commission","1808058682":"Blocks are loaded successfully","1808393236":"Login","1808867555":"This block uses the variable “i” to control the iterations. With each iteration, the value of “i” is determined by the items in a given list.","1810217569":"Please refresh this page to continue.","1811109068":"Jurisdiction","1811972349":"Market","1811973475":"Returns a specific character from a given string","1812006199":"Identity verification","1812582011":"Connecting to server","1813700208":"Boom 300 Index","1813958354":"Remove comment","1815034361":"alphabetic","1815905959":"DTrader, DBot, SmartTrader, and Binary Bot","1815995250":"Buying contract","1816126006":"Trade on Deriv MT5 ({{platform_name_dmt5}}), the all-in-one FX and CFD trading platform.","1817154864":"This block gives you a random number from within a set range.","1820242322":"e.g. United States","1820332333":"Top up","1821818748":"Enter Driver License Reference number","1823177196":"Most popular","1824193700":"This block gives you the last digit of the latest tick value.","1824292864":"Call","1827607208":"File not uploaded.","1828370654":"Onboarding","1830520348":"{{platform_name_dxtrade}} Password","1831847842":"I confirm that the name and date of birth above match my chosen identity document (see below)","1833481689":"Unlock","1833499833":"Proof of identity documents upload failed","1836767074":"Search payment agent name","1837762008":"Please submit your proof of identity and proof of address to verify your account in your account settings to access the cashier.","1838639373":"Resources","1839021527":"Please enter a valid account number. Example: CR123456789","1840865068":"set {{ variable }} to Simple Moving Average Array {{ dummy }}","1841381387":"Get more wallets","1841788070":"Palladium/USD","1841996888":"Daily loss limit","1842266423":"back","1842862156":"Welcome to your Deriv X dashboard","1843658716":"If you select \"Only Downs\", you win the payout if consecutive ticks fall successively after the entry spot. No payout if any tick rises or is equal to any of the previous ticks.","1845892898":"(min: {{min_stake}} - max: {{max_payout}})","1846266243":"This feature is not available for demo accounts.","1846587187":"You have not selected your country of residence","1846664364":"{{platform_name_dxtrade}}","1849484058":"Any unsaved changes will be lost.","1850031313":"- Low: the lowest price","1850132581":"Country not found","1850659345":"- Payout: the payout of the contract","1850663784":"Submit proofs","1851052337":"Place of birth is required.","1851776924":"upper","1854480511":"Cashier is locked","1854874899":"Back to list","1855566768":"List item position","1856485118":"Please <0>resubmit your proof of address to transfer funds between MT5 and Deriv accounts.","1856755117":"Pending action required","1856932069":"For Long:","1858251701":"minute","1859308030":"Give feedback","1863053247":"Please upload your identity document.","1863694618":"Trade CFDs on MT5 with forex, stocks, stock indices, commodities, and cryptocurrencies.","1863731653":"To receive your funds, contact the payment agent","1865525612":"No recent transactions.","1866811212":"Deposit in your local currency via an authorised, independent payment agent in your country.","1866836018":"<0/><1/>If your complaint relates to our data processing practices, you can submit a formal complaint to your local supervisory authority.","1867217564":"Index must be a positive integer","1867783237":"High-to-Close","1869315006":"See how we protect your funds to unlock the cashier.","1869787212":"Even","1870933427":"Crypto","1871196637":"True if the result of the last trade matches the selection","1871377550":"Do you offer pre-built trading bots on Deriv Bot?","1871664426":"Note","1873838570":"Please verify your address","1874481756":"Use this block to purchase the specific contract you want. You may add multiple Purchase blocks together with conditional blocks to define your purchase conditions. This block can only be used within the Purchase conditions block.","1874756442":"BVI","1875702561":"Load or build your bot","1876015808":"Social Security and National Insurance Trust","1876325183":"Minutes","1877225775":"Your proof of address is verified","1877832150":"# from end","1878172674":"No, we don't. However, you'll find quick strategies on Deriv Bot that'll help you build your own trading bot for free.","1879042430":"Appropriateness Test, WARNING:","1879412976":"Profit amount: <0>{{profit}}","1879651964":"<0>Pending verification","1880029566":"Australian Dollar","1880097605":"prompt for {{ string_or_number }} with message {{ input_text }}","1880875522":"Create \"get %1\"","1881018702":"hour","1881587673":"Total stake since you last cleared your stats.","1882825238":"Restart trading conditions","1883531976":"Clerks","1885708031":"#","1889357660":"Enter a value in minutes, up to 60480 minutes (equivalent to 6 weeks).","1890171328":"By clicking Accept below and proceeding with the Account Opening you should note that you may be exposing yourself to risks (which may be significant, including the risk of loss of the entire sum invested) that you may not have the knowledge and experience to properly assess or mitigate.","1890332321":"Returns the number of characters of a given string of text, including numbers, spaces, punctuation marks, and symbols.","1893869876":"(lots)","1894667135":"Please verify your proof of address","1898670234":"{{formatted_opening_time}} (GMT) on {{opening_day}},<0> {{opening_date}}.","1899898605":"Maximum size: 8MB","1902547203":"MetaTrader 5 MacOS app","1903437648":"Blurry photo detected","1905032541":"We're now ready to verify your identity","1905589481":"If you want to change your account currency, please contact us via <0>live chat.","1906213000":"Our system will finish any Deriv Bot trades that are running, and Deriv Bot will not place any new trades.","1906639368":"If this is the first time you try to create a password, or you have forgotten your password, please reset it.","1907884620":"Add a real Deriv Gaming account","1908023954":"Sorry, an error occurred while processing your request.","1908239019":"Make sure all of the document is in the photo","1908686066":"Appropriateness Test Warning","1909647105":"TRX/USD","1909769048":"median","1913777654":"Switch account","1914014145":"Today","1914270645":"Default Candle Interval: {{ candle_interval_type }}","1914725623":"Upload the page that contains your photo.","1917178459":"Bank Verification Number","1917523456":"This block sends a message to a Telegram channel. You will need to create your own Telegram bot to use this block.","1918796823":"Please enter a stop loss amount.","1918832194":"No experience","1919030163":"Tips to take a good selfie","1919594496":"{{website_name}} is not affiliated with any payment agents. Customers deal with payment agents at their sole risk. Customers are advised to check the credentials of payment agents and the accuracy of any information about payment agents (on {{website_name}} or elsewhere) before using their services.","1919694313":"To start trading, transfer funds from your Deriv account into this account.","1920217537":"Compare","1920468180":"How to use the SMA block","1921634159":"A few personal details","1921914669":"Deposit with Deriv P2P","1922529883":"Boom 1000 Index","1922955556":"Use a longer keyboard pattern with more turns","1923431535":"“Stop loss” is deactivated and will only be available when “Deal cancellation” expires.","1924365090":"Maybe later","1924765698":"Place of birth*","1926987784":"- iOS: Swipe left on the account and tap <0>Delete.","1928930389":"GBP/NOK","1929309951":"Employment Status","1929694162":"Compare accounts","1930899934":"Tether","1931659123":"Run on every tick","1931884033":"It seems that your date of birth in the document is not the same as your Deriv profile. Please update your date of birth in the <0>Personal details page to solve this issue.","1934450653":"For <0>Contract type, set it to Both.","1938327673":"Deriv {{platform}} <0>{{is_demo}}","1939014728":"How do I remove blocks from the workspace?","1939902659":"Signal","1940408545":"Delete this token","1941915555":"Try later","1942091675":"Cryptocurrency trading is not available for clients residing in the United Kingdom.","1943440862":"Calculates Bollinger Bands (BB) list from a list with a period","1944204227":"This block returns current account balance.","1947527527":"1. This link was sent by you","1948092185":"GBP/CAD","1949719666":"Here are the possible reasons:","1950413928":"Submit identity documents","1952580688":"Submit passport photo page","1955219734":"Town/City*","1957759876":"Upload identity document","1958807602":"4. 'Table' takes an array of data, such as a list of candles, and displays it in a table format.","1959678342":"Highs & Lows","1960240336":"first letter","1964097111":"USD","1964165648":"Connection lost","1965916759":"Asian options settle by comparing the last tick with the average spot over the period.","1966023998":"2FA enabled","1966281100":"Console {{ message_type }} value: {{ input_message }}","1968025770":"Bitcoin Cash","1968077724":"Agriculture","1968368585":"Employment status","1970060713":"You’ve successfully deleted a bot.","1971898712":"Add or manage account","1973060793":"- maximum loss: Use this variable to store your maximum loss limit. You can assign any amount you want, but it must be a positive number.","1973536221":"You have no open positions yet.","1973564194":"You are limited to one fiat account. You won’t be able to change your account currency if you have already made your first deposit or created a real {{dmt5_label}} or {{platform_name_dxtrade}} account.","1973910243":"Manage your accounts","1974273865":"This scope will allow third-party apps to view your account activity, settings, limits, balance sheets, trade purchase history, and more.","1974903951":"If you hit Yes, the info you entered will be lost.","1981940238":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}} and {{legal_entity_name_v}}.","1982912252":"Relative Strength Index (RSI) from a list with a period","1983001416":"Define your trade options such as multiplier and stake. This block can only be used with the multipliers trade type. If you select another trade type, this block will be replaced with the Trade options block.","1983358602":"This policy, which may change from time to time, applies to your account registered with {{legal_entity_name}}.","1983387308":"Preview","1983480826":"Sign in","1983544897":"P.O. Box is not accepted in address","1983676099":"Please check your email for details.","1984700244":"Request an input","1984742793":"Uploading documents","1985366224":"Each day, you can make up to {{ allowed_internal }} transfers between your Deriv accounts and up to {{ allowed_mt5 }} transfers between your Deriv and {{platform_name_mt5}} accounts.","1985637974":"Any blocks placed within this block will be executed at every tick. If the default candle interval is set to 1 minute in the Trade Parameters root block, the instructions in this block will be executed once every minute. Place this block outside of any root block.","1986498784":"BTC/LTC","1987080350":"Demo","1987447369":"Your cashier is locked","1988153223":"Email address","1988302483":"Take profit:","1988601220":"Duration value","1990331072":"Proof of ownership","1990735316":"Rise Equals","1991055223":"View the market price of your favourite assets.","1991448657":"Don't know your tax identification number? Click <0>here to learn more.","1991524207":"Jump 100 Index","1994023526":"The email address you entered had a mistake or typo (happens to the best of us).","1994558521":"The platforms aren’t user-friendly.","1994600896":"This block requires a list of candles as an input parameter.","1995023783":"First line of address*","1996767628":"Please confirm your tax information.","1997138507":"If the last tick is equal to the average of the ticks, you don't win the payout.","1997313835":"Your stake will continue to grow as long as the current spot price remains within a specified <0>range from the <0>previous spot price. Otherwise, you lose your stake and the trade is terminated.","1998199587":"You can also exclude yourself entirely for a specified duration. If, at any time, you decide to trade again, you must then contact our Customer Support to remove this self-exclusion. There will be a 24-hour-cooling-off period before you can resume trading. ","1999346412":"For faster verification, input the same address here as in your proof of address document (see section below)","2001222130":"Check your spam or junk folder. If it's not there, try resending the email.","2004792696":"If you are a UK resident, to self-exclude from all online gambling companies licensed in Great Britain, go to <0>www.gamstop.co.uk.","2007028410":"market, trade type, contract type","2007092908":"Trade with leverage and low spreads for better returns on successful trades.","2010759971":"Uploads successful","2010866561":"Returns the total profit/loss","2011609940":"Please input number greater than 0","2011808755":"Purchase Time","2014536501":"Card number","2014590669":"Variable '{{variable_name}}' has no value. Please set a value for variable '{{variable_name}}' to notify.","2017672013":"Please select the country of document issuance.","2020545256":"Close your account?","2021037737":"Please update your details to continue.","2021161151":"
Watch this video to learn how to build a trading bot on Deriv Bot. Also, check out this blog post on building a trading bot.","2023659183":"Student","2023762268":"I prefer another trading website.","2025339348":"Move away from direct light — no glare","2027625329":"Simple Moving Average Array (SMAA)","2027696535":"Tax information","2028163119":"EOS/USD","2029237955":"Labuan","2029641956":"CFDCompareAccounts","2030018735":"RSI is a technical analysis tool that helps you identify the market trend. It will give you a value from 0 to 100. An RSI value of 70 and above means that the asset is overbought and the current trend may reverse, while a value of 30 and below means that the asset is oversold.","2030045667":"Message","2033648953":"This block gives you the specified candle value for a selected time interval.","2034803607":"You must be 18 years old and above.","2035258293":"Start trading with us","2035925727":"sort {{ sort_type }} {{ sort_direction }} {{ input_list }}","2036578466":"Should be {{value}}","2037607934":"The purchase of <0>{{trade_type_name}} contract has been completed successfully for the amount of <0> {{buy_price}} {{currency}}","2037665157":"Expand All Blocks","2037906477":"get sub-list from #","2042023623":"We’re reviewing your documents. This should take about 5 minutes.","2042050260":"- Purchase price: the purchase price (stake) of the contract","2042115724":"Upload a screenshot of your account and personal details page with your name, account number, phone number, and email address.","2044086432":"The close is the latest tick at or before the end time. If you selected a specific end time, the end time is the selected time.","2046273837":"Last tick","2046577663":"Import or choose your bot","2048110615":"Email address*","2048134463":"File size exceeded.","2049386104":"We need you to submit these in order to get this account:","2050170533":"Tick list","2051558666":"View transaction history","2054889300":"Create \"%1\"","2055317803":"Copy the link to your mobile browser","2057082550":"Accept our updated <0>terms and conditions","2057419639":"Exit Spot","2059365224":"Yes, you can get started with a pre-built bot using the Quick strategy feature. You’ll find some of the most popular trading strategies here: Martingale, D'Alembert, and Oscar's Grind. Just select the strategy, enter your trade parameters, and your bot will be created for you. You can always tweak the parameters later.","2059753381":"Why did my verification fail?","2060873863":"Your order {{order_id}} is complete","2062912059":"function {{ function_name }} {{ function_params }}","2063655921":"By purchasing the \"Close-to-Low\" contract, you'll win the multiplier times the difference between the close and low over the duration of the contract.","2063812316":"Text Statement","2063890788":"Cancelled","2065278286":"Spread","2067903936":"Driving licence","2070002739":"Don’t accept","2070345146":"When opening a leveraged CFD trade.","2070518923":"Import your bot or tap Quick Strategies to choose from the ready-to-use bot templates.","2070752475":"Regulatory Information","2071043849":"Browse","2073813664":"CFDs, Options or Multipliers","2074235904":"Last name is required.","2074497711":"The Telegram notification could not be sent","2074713563":"4.2. Submission of a complaint","2080553498":"3. Get the chat ID using the Telegram REST API (read more: https://core.telegram.org/bots/api#getupdates)","2080829530":"Sold for: {{sold_for}}","2082533832":"Yes, delete","2084693624":"Converts a string representing a date/time string into seconds since Epoch. Example: 2019-01-01 21:03:45 GMT+0800 will be converted to 1546347825. Time and time zone offset are optional.","2085387371":"Must be numbers, letters, and special characters . , ' -","2085602195":"- Entry value: the value of the first tick of the contract","2086742952":"You have added a real Options account.<0/>Make a deposit now to start trading.","2086792088":"Both barriers should be relative or absolute","2088735355":"Your session and login limits","2089581483":"Expires on","2090650973":"The spot price may change by the time your order reaches our servers. When this happens, your payout may be affected.","2091671594":"Status","2093675079":"- Close: the closing price","2096014107":"Apply","2096456845":"Date of birth*","2096603244":"Derived - Vanuatu","2097170986":"About Tether (Omni)","2097365786":"A copy of your identity document (identity card, passport)","2097381850":"Calculates Simple Moving Average line from a list with a period","2097932389":"Upload 2 separate screenshots from the personal details page and the account page via <0>https://app.astropay.com/profile","2100713124":"account","2101972779":"This is the same as the above example, using a tick list.","2102572780":"Length of digit code must be 6 characters.","2104115663":"Last login","2104364680":"Please switch to your demo account to run your Deriv Bot.","2104397115":"Please go to your account settings and complete your personal details to enable deposits and withdrawals.","2107381257":"Scheduled cashier system maintenance","2109312805":"The spread is the difference between the buy price and sell price. A variable spread means that the spread is constantly changing, depending on market conditions. A fixed spread remains constant but is subject to alteration, at the Broker's absolute discretion.","2110365168":"Maximum number of trades reached","2111015970":"This block helps you check if your contract can be sold. If your contract can be sold, it returns “True”. Otherwise, it returns an empty string.","2111528352":"Creating a variable","2112119013":"Take a selfie showing your face","2112175277":"with delimiter","2113321581":"Add a Deriv Gaming account","2115223095":"Loss","2117165122":"1. Create a Telegram bot and get your Telegram API token. Read more on how to create bots in Telegram here: https://core.telegram.org/bots#6-botfather","2117489390":"Auto update in {{ remaining }} seconds","2118315870":"Where do you live?","2119449126":"Example output of the below example will be:","2119710534":"FAQ","2121227568":"NEO/USD","2122152120":"Assets","2127564856":"Withdrawals are locked","2131963005":"Please withdraw your funds from the following Deriv MT5 account(s):","2133451414":"Duration","2133470627":"This block returns the potential payout for the selected trade type. This block can be used only in the \"Purchase conditions\" root block.","2135563258":"Forex trading frequency","2136246996":"Selfie uploaded","2137901996":"This will clear all data in the summary, transactions, and journal panels. All counters will be reset to zero.","2137993569":"This block compares two values and is used to build a conditional structure.","2138861911":"Scans and photocopies are not accepted","2139171480":"Reset Up/Reset Down","2139362660":"left side","2141055709":"New {{type}} password","2141873796":"Get more info on <0>CFDs, <1>multipliers, and <2>options.","2143803283":"Purchase Error","2144609616":"If you select \"Reset-Down”, you win the payout if the exit spot is strictly lower than either the entry spot or the spot at reset time.","2145690912":"Income Earning","2145995536":"Create new account","2146336100":"in text %1 get %2","2146698770":"Pro tip: You can also click and drag out the desired block","2146892766":"Binary options trading experience","2147244655":"How do I import my own trading bot into Deriv Bot?","-1232613003":"<0>Verification failed. <1>Why?","-2029508615":"<0>Need verification.<1>Verify now","-931052769":"Submit verification","-1004605898":"Tips","-1938142055":"Documents uploaded","-448090287":"The link only works on mobile devices","-1244287721":"Something's gone wrong","-241258681":"You'll need to restart your verification on your computer","-929254273":"Get secure link","-2021867851":"Check back here to finish the submission","-1547069149":"Open the link and complete the tasks","-1767652006":"Here's how to do it:","-277611959":"You can now return to your computer to continue","-724178625":"Make sure full document is visible","-1519380038":"Glare detected","-1895280620":"Make sure your card details are clear to read, with no blur or glare","-1464447919":"Make sure your permit details are clear to read, with no blur or glare","-1436160506":"Make sure details are clear to read, with no blur or glare","-759124288":"Close","-759118956":"Redo","-753375398":"Enlarge image","-1042933881":"Driver's license","-1503134764":"Face photo page","-1335343167":"Sorry, no mobile phone bills","-699045522":"Documents you can use to verify your identity","-543666102":"It must be an official photo ID","-903877217":"These are the documents most likely to show your current home address","-1356835948":"Choose document","-1364375936":"Select a %{country} document","-401586196":"or upload photo – no scans or photocopies","-3110517":"Take a photo with your phone","-2033894027":"Submit identity card (back)","-20684738":"Submit license (back)","-1359585500":"Submit license (front)","-106779602":"Submit residence permit (back)","-1287247476":"Submit residence permit (front)","-1954762444":"Restart the process on the latest version of Safari","-261174676":"Must be under 10MB.","-685885589":"An error occurred while loading the component","-502539866":"Your face is needed in the selfie","-1377968356":"Please try again","-1226547734":"Try using a JPG or PNG file","-849068301":"Loading...","-1730346712":"Loading","-1849371752":"Check that your number is correct","-309848900":"Copy","-1424436001":"Send link","-1093833557":"How to scan a QR code","-1408210605":"Point your phone’s camera at the QR code","-1773802163":"If it doesn’t work, download a QR code scanner from Google Play or the App Store","-109026565":"Scan QR code","-1644436882":"Get link via SMS","-1667839246":"Enter mobile number","-1533172567":"Enter your mobile number:","-1352094380":"Send this one-time link to your phone","-28974899":"Get your secure link","-359315319":"Continue","-1279080293":"2. Your desktop window stays open","-102776692":"Continue with the verification","-89152891":"Take a photo of the back of your card","-1646367396":"Take a photo of the front of your card","-1350855047":"Take a photo of the front of your license","-2119367889":"Take a photo using the basic camera mode instead","-342915396":"Take a photo","-419040068":"Passport photo page","-1354983065":"Refresh","-1925063334":"Recover camera access to continue face verification","-54784207":"Camera access is denied","-1392699864":"Allow camera access","-269477401":"Provide the whole document page for best results","-864639753":"Upload back of card from your computer","-1309771027":"Upload front of license from your computer","-1722060225":"Take photo","-565732905":"Selfie","-1703181240":"Check that it is connected and functional. You can also continue verification on your phone","-2043114239":"Camera not working?","-2029238500":"It may be disconnected. Try using your phone instead.","-468928206":"Make sure your device's camera works","-466246199":"Camera not working","-698978129":"Remember to press stop when you're done. Redo video actions","-538456609":"Looks like you took too long","-781816433":"Photo of your face","-1471336265":"Make sure your selfie clearly shows your face","-1375068556":"Check selfie","-1914530170":"Face forward and make sure your eyes are clearly visible","-776541617":"We'll compare it with your document","-478752991":"Your link will expire in one hour","-1859729380":"Keep this window open while using your mobile","-1283761937":"Resend link","-629011256":"Don't refresh this page","-1005231905":"Once you've finished we'll take you to the next step","-542134805":"Upload photo","-1462975230":"Document example","-1472844935":"The photo should clearly show your document","-189310067":"Account closed","-1823540512":"Personal details","-849320995":"Assessments","-773766766":"Email and passwords","-1466827732":"Self exclusion","-1498206510":"Account limits","-241588481":"Login history","-966136867":"Connected apps","-213009361":"Two-factor authentication","-526636259":"Error 404","-1227878799":"Speculative","-1196936955":"Upload a screenshot of your name and email address from the personal information section.","-1286823855":"Upload your mobile bill statement showing your name and phone number.","-1309548471":"Upload your bank statement showing your name and account details.","-1410396115":"Upload a photo showing your name and the first six and last four digits of your card number. If the card does not display your name, upload the bank statement showing your name and card number in the transaction history.","-3805155":"Upload a screenshot of either of the following to process the transaction:","-1523487566":"- your account profile section on the website","-613062596":"- the Account Information page on the app","-1718304498":"User ID","-609424336":"Upload a screenshot of your name, account number, and email address from the personal details section of the app or profile section of your account on the website.","-1954436643":"Upload a screenshot of your username on the General Information page at <0>https://onlinenaira.com/members/index.htm","-79853954":"Upload a screenshot of your account number and phone number on the Bank Account/Mobile wallet page at <0>https://onlinenaira.com/members/bank.htm","-1192882870":"Upload a screenshot of your name and account number from the personal details section.","-1120954663":"First name*","-1659980292":"First name","-962979523":"Your {{ field_name }} as in your identity document","-1416797980":"Please enter your {{ field_name }} as in your official identity documents.","-1466268810":"Please remember that it is your responsibility to keep your answers accurate and up to date. You can update your personal details at any time in your <0>account settings.","-32386760":"Name","-766265812":"first name","-1857534296":"John","-1282749116":"last name","-1485480657":"Other details","-1784741577":"date of birth","-1702919018":"Second line of address (optional)","-1315410953":"State/Province","-2040322967":"Citizenship","-344715612":"Employment status*","-1543016582":"I hereby confirm that the tax information I provided is true and complete. I will also inform {{legal_entity_name}} about any changes to this information.","-946282997":"Additional information","-1315571766":"Place of birth","-789291456":"Tax residence*","-1692219415":"Tax residence","-1903720068":"The country in which you meet the criteria for paying taxes. Usually the country in which you physically reside.","-651516152":"Tax Identification Number","-1387062433":"Account opening reason","-222283483":"Account opening reason*","-1113902570":"Details","-71696502":"Previous","-1541554430":"Next","-987011273":"Your proof of ownership isn't required.","-808299796":"You are not required to submit proof of ownership at this time. We will inform you if proof of ownership is required in the future.","-179726573":"We’ve received your proof of ownership.","-813779897":"Proof of ownership verification passed.","-638756912":"Black out digits 7 to 12 of the card number that’s shown on the front of your debit/credit card.⁤","-2073934245":"The financial trading services offered on this site are only suitable for customers who accept the possibility of losing all the money they invest and who understand and have experience of the risk involved in the purchase of financial contracts. Transactions in financial contracts carry a high degree of risk. If the contracts you purchased expire as worthless, you will lose all your investment, which includes the contract premium.","-1166068675":"Your account will be opened with {{legal_entity_name}}, regulated by the UK Gaming Commission (UKGC), and will be subject to the laws of the Isle of Man.","-975118358":"Your account will be opened with {{legal_entity_name}}, regulated by the Malta Financial Services Authority (MFSA), and will be subject to the laws of Malta.","-680528873":"Your account will be opened with {{legal_entity_name}} and will be subject to the laws of Samoa.","-1125193491":"Add account","-2068229627":"I am not a PEP, and I have not been a PEP in the last 12 months.","-684271315":"OK","-740157281":"Trading Experience Assessment","-1720468017":"In providing our services to you, we are required to obtain information from you in order to assess whether a given product or service is appropriate for you.","-186841084":"Change your login email","-907403572":"To change your email address, you'll first need to unlink your email address from your {{identifier_title}} account.","-1850792730":"Unlink from {{identifier_title}}","-307865807":"Risk Tolerance Warning","-690100729":"Yes, I understand the risk.","-2010628430":"CFDs and other financial instruments come with a high risk of losing money rapidly due to leverage. You should consider whether you understand how CFDs and other financial instruments work and whether you can afford to take the high risk of losing your money. <0/><0/> To continue, you must confirm that you understand your capital is at risk.","-863770104":"Please note that by clicking ‘OK’, you may be exposing yourself to risks. You may not have the knowledge or experience to properly assess or mitigate these risks, which may be significant, including the risk of losing the entire sum you have invested.","-1292808093":"Trading Experience","-2145244263":"This field is required","-884768257":"You should enter 0-35 characters.","-1784470716":"State is not in a proper format","-1699820408":"Please enter a {{field_name}} under {{max_number}} characters.","-1575567374":"postal/ZIP code","-2113555886":"Only letters, numbers, space, and hyphen are allowed.","-874280157":"This Tax Identification Number (TIN) is invalid. You may continue using it, but to facilitate future payment processes, valid tax information will be required.","-1174064217":"Mr","-855506127":"Ms","-1037916704":"Miss","-634958629":"We use the information you give us only for verification purposes. All information is kept confidential.","-731992635":"Title*","-352888977":"Title","-136976514":"Country of residence*","-945104751":"We’re legally obliged to ask for your tax information.","-1024240099":"Address","-1124948631":"Professional Client","-259515058":"By default, all {{brand_website_name}} clients are retail clients but anyone can request to be treated as a professional client.","-1463348492":"I would like to be treated as a professional client.","-1958764604":"Email preference","-2121071263":"Check this box to receive updates via email.","-2068064150":"Get updates about Deriv products, services and events.","-1558679249":"Please make sure your information is correct or it may affect your trading experience.","-179005984":"Save","-2116332353":"Please close your positions in the following Deriv account(s):","-2048005267":"{{number_of_positions}} position(s)","-1923892687":"Please withdraw your funds from the following Deriv X account(s):","-1629894615":"I have other financial priorities.","-844051272":"I want to stop myself from trading.","-1113965495":"I’m no longer interested in trading.","-1224285232":"Customer service was unsatisfactory.","-9323953":"Remaining characters: {{remaining_characters}}","-839094775":"Back","-2061895474":"Closing your account will automatically log you out. We shall delete your personal information as soon as our legal obligations are met.","-203298452":"Close account","-937707753":"Go Back","-1219849101":"Please select at least one reason","-484540402":"An error occurred","-1911549768":"Inaccessible MT5 account(s)","-1869355019":"Action required","-1030102424":"You can't trade on Deriv.","-448385353":"You can't make transactions.","-1058447223":"Before closing your account:","-912764166":"Withdraw your funds.","-60139953":"We shall delete your personal information as soon as our legal obligations are met, as mentioned in the section on Data Retention in our <0>Security and privacy policy","-1725454783":"Failed","-506510414":"Date and time","-1708927037":"IP address","-619126443":"Use the <0>Deriv password to log in to {{brand_website_name}} and {{platform_name_trader}}.","-623760979":"Use the <0>Deriv password to log in to {{brand_website_name}}, {{platform_name_trader}} and {{platform_name_go}}.","-459147994":"Use the <0>Deriv password to log in to {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} and {{platform_name_ctrader}}.","-80717068":"Apps you have linked to your <0>Deriv password:","-9570380":"Use the {{platform_name_dxtrade}} password to log in to your {{platform_name_dxtrade}} accounts on the web and mobile apps.","-2131200819":"Disable","-200487676":"Enable","-1840392236":"That's not the right code. Please try again.","-2067796458":"Authentication code","-790444493":"Protect your account with 2FA. Each time you log in to your account, you will need to enter your password and an authentication code generated by a 2FA app on your smartphone.","-368010540":"You have enabled 2FA for your Deriv account.","-403552929":"To disable 2FA, please enter the six-digit authentication code generated by your 2FA app below:","-752939584":"How to set up 2FA for your Deriv account","-90649785":"Click here to copy key","-206376148":"Key copied!","-1592318047":"See example","-1376950117":"That file format isn't supported. Please upload .pdf, .png, .jpg, or .jpeg files only.","-1272489896":"Please complete this field.","-397487797":"Enter your full card number","-153346659":"Upload your selfie.","-602131304":"Passport number","-1051213440":"Upload the front and back of your identity card.","-1600807543":"First, enter your identity card number and the expiry date.","-1139923664":"Next, upload the front and back of your identity card.","-783705755":"Upload the front of your identity card.","-566750665":"NIMC slip and proof of age","-1465944279":"NIMC slip number","-429612996":"Next, upload both of the following documents.","-376981174":"Upload your proof of age: birth certificate or age declaration document.","-612174191":"First line of address is required","-242734402":"Only {{max}} characters, please.","-378415317":"State is required","-1497654315":"Our accounts and services are unavailable for the Jersey postal code.","-755626951":"Complete your address details","-584911871":"Select wallet currency","-1461267236":"Please choose your currency","-1352330125":"CURRENCY","-1027595143":"Less than $25,000","-40491332":"$25,000 - $50,000","-1139806939":"$50,001 - $100,000","-626752657":"0-1 year","-532014689":"1-2 years","-1001024004":"Over 3 years","-790513277":"6-10 transactions in the past 12 months","-580085300":"11-39 transactions in the past 12 months","-654781670":"Primary","-1717373258":"Secondary","-996132458":"Construction","-915003867":"Health","-1430012453":"Information & Communications Technology","-987824916":"Science & Engineering","-146630682":"Social & Cultural","-761306973":"Manufacturing","-739367071":"Employed","-1156937070":"$500,001 - $1,000,000","-315534569":"Over $1,000,000","-2068544539":"Salaried Employee","-531314998":"Investments & Dividends","-1235114522":"Pension","-1298056749":"State Benefits","-449943381":"Savings & Inheritance","-1631552645":"Professionals","-474864470":"Personal Care, Sales and Service Workers","-1129355784":"Agricultural, Forestry and Fishery Workers","-1242914994":"Craft, Metal, Electrical and Electronics Workers","-1317824715":"Cleaners and Helpers","-1592729751":"Mining, Construction, Manufacturing and Transport Workers","-2137323480":"Company Ownership","-1590574533":"Divorce Settlement","-1667683002":"Inheritance","-1237843731":"Investment Income","-777506574":"Sale of Property","-1161338910":"First name is required.","-1161818065":"Last name should be between 2 and 50 characters.","-1281693513":"Date of birth is required.","-26599672":"Citizenship is required","-912174487":"Phone is required.","-673765468":"Letters, numbers, spaces, periods, hyphens and forward slashes only.","-212167954":"Tax Identification Number is not properly formatted.","-621555159":"Identity information","-204765990":"Terms of use","-231863107":"No","-870902742":"How much knowledge and experience do you have in relation to online trading?","-1929477717":"I have an academic degree, professional certification, and/or work experience related to financial services.","-1540148863":"I have attended seminars, training, and/or workshops related to trading.","-922751756":"Less than a year","-542986255":"None","-1337206552":"In your understanding, CFD trading allows you to","-456863190":"Place a position on the price movement of an asset where the outcome is a fixed return or nothing at all.","-1314683258":"Make a long-term investment for a guaranteed profit.","-1546090184":"How does leverage affect CFD trading?","-1636427115":"Leverage helps to mitigate risk.","-800221491":"Leverage guarantees profits.","-811839563":"Leverage lets you open large positions for a fraction of trade value, which may result in increased profit or loss.","-1185193552":"Close your trade automatically when the loss is equal to or more than a specified amount, as long as there is adequate market liquidity.","-1046354":"Close your trade automatically when the profit is equal to or more than a specified amount, as long as there is adequate market liquidity.","-1842858448":"Make a guaranteed profit on your trade.","-860053164":"When trading multipliers.","-1250327770":"When buying shares of a company.","-1222388581":"All of the above.","-477761028":"Voter ID","-1466346630":"CPF","-1030759620":"Government Officers","-612752984":"These are default limits that we apply to your accounts.","-1598263601":"To learn more about trading limits and how they apply, please go to the <0>Help Centre.","-1411635770":"Learn more about account limits","-1340125291":"Done","-1101543580":"Limit","-858297154":"Represents the maximum amount of cash that you may hold in your account. If the maximum is reached, you will be asked to withdraw funds.","-976258774":"Not set","-1182362640":"Represents the maximum aggregate payouts on outstanding contracts in your portfolio. If the maximum is attained, you may not purchase additional contracts without first closing out existing positions.","-1781293089":"Maximum aggregate payouts on open positions","-1412690135":"*Any limits in your Self-exclusion settings will override these default limits.","-1598751496":"Represents the maximum volume of contracts that you may purchase in any given trading day.","-173346300":"Maximum daily turnover","-138380129":"Total withdrawal allowed","-854023608":"To increase limit please verify your identity","-1500958859":"Verify","-1502578110":"Your account is fully authenticated and your withdrawal limits have been lifted.","-1662154767":"a recent utility bill (e.g. electricity, water, gas, landline, or internet), bank statement, or government-issued letter with your name and this address.","-190838815":"We need this for verification. If the information you provide is fake or inaccurate, you won’t be able to deposit and withdraw.","-223216785":"Second line of address*","-594456225":"Second line of address","-1940457555":"Postal/ZIP Code*","-1964954030":"Postal/ZIP Code","-516397235":"Be careful who you share this token with. Anyone with this token can perform the following actions on your account behalf","-989216986":"Add accounts","-617480265":"Delete token","-316749685":"Are you sure you want to delete this token?","-786372363":"Learn more about API token","-55560916":"To access our mobile apps and other third-party apps, you'll first need to generate an API token.","-198329198":"API Token","-955038366":"Copy this token","-1668692965":"Hide this token","-1661284324":"Show this token","-1076138910":"Trade","-1666909852":"Payments","-488597603":"Trading information","-605778668":"Never","-1628008897":"Token","-1238499897":"Last Used","-1171226355":"Length of token name must be between {{MIN_TOKEN}} and {{MAX_TOKEN}} characters.","-1803339710":"Maximum {{MAX_TOKEN}} characters.","-408613988":"Select scopes based on the access you need.","-5605257":"This scope will allow third-party apps to withdraw to payment agents and make inter-account transfers for you.","-1373485333":"This scope will allow third-party apps to view your trading history.","-758221415":"This scope will allow third-party apps to open accounts for you, manage your settings and token usage, and more. ","-1117963487":"Name your token and click on 'Create' to generate your token.","-2005211699":"Create","-2115275974":"CFDs","-1879666853":"Deriv MT5","-460645791":"You are limited to one fiat account. You won’t be able to change your account currency if you have already made your first deposit or created a real {{dmt5_label}} account.","-1146960797":"Fiat currencies","-1959484303":"Cryptocurrencies","-561724665":"You are limited to one fiat currency only","-2087317410":"Oops, something went wrong.","-184202848":"Upload file","-1447142373":"Click here to upload.","-863586176":"Drag and drop a file or click to browse your files.","-723198394":"File size should be 8MB or less","-1948369500":"File uploaded is not supported","-1040865880":"Drop files here..","-1100235269":"Industry of employment","-684388823":"Estimated net worth","-509054266":"Anticipated annual turnover","-601903492":"Forex trading experience","-1012699451":"CFD trading experience","-1588485629":"Example","-1117345066":"Choose the document type","-651192353":"Sample:","-1044962593":"Upload Document","-164448351":"Show less","-1361653502":"Show more","-337620257":"Switch to real account","-2120454054":"Add a real account","-38915613":"Unsaved changes","-2137450250":"You have unsaved changes. Are you sure you want to discard changes and leave this page?","-1067082004":"Leave Settings","-1982432743":"It appears that the address in your document doesn’t match the address\n in your Deriv profile. Please update your personal details now with the\n correct address.","-1451334536":"Continue trading","-1525879032":"Your documents for proof of address is expired. Please submit again.","-1425489838":"Proof of address verification not required","-1008641170":"Your account does not need address verification at this time. We will inform you if address verification is required in the future.","-60204971":"We could not verify your proof of address","-1944264183":"To continue trading, you must also submit a proof of identity.","-1088324715":"We’ll review your documents and notify you of its status within 1 - 3 working days.","-329713179":"Ok","-1176889260":"Please select a document type.","-1926456107":"The ID you submitted is expired.","-555047589":"It looks like your identity document has expired. Please try again with a valid document.","-841187054":"Try Again","-2097808873":"We were unable to verify your ID with the details you provided. ","-228284848":"We were unable to verify your ID with the details you provided.","-1391934478":"Your ID is verified. You will also need to submit proof of your address.","-118547687":"ID verification passed","-200989771":"Go to personal details","-1358357943":"Please check and update your postal code before submitting proof of identity.","-1401994581":"Your personal details are missing","-2004327866":"Please select a valid country of document issuance.","-1664159494":"Country","-749870311":"Please contact us via <0>live chat.","-1084991359":"Proof of identity verification not required","-1981334109":"Your account does not need identity verification at this time. We will inform you if identity verification is required in the future.","-182918740":"Your proof of identity submission failed because:","-155705811":"A clear colour photo or scanned image","-246893488":"JPEG, JPG, PNG, PDF, or GIF","-1454880310":"Must be valid for at least 6 months","-100534371":"Before uploading, please ensure that you’re facing forward in the selfie, your face is within the frame, and your eyes are clearly visible even if you’re wearing glasses.","-1529523673":"Confirm and upload","-705047643":"Sorry, an error occured. Please select another file.","-1664309884":"Tap here to upload","-856213726":"You must also submit a proof of address.","-1389323399":"You should enter {{min_number}}-{{max_number}} characters.","-1313806160":"Please request a new password and check your email for the new token.","-1598167506":"Success","-1077809489":"You have a new {{platform}} password to log in to your {{platform}} accounts on the web and mobile apps.","-2068479232":"{{platform}} password","-1332137219":"Strong passwords contain at least 8 characters that include uppercase and lowercase letters, numbers, and symbols.","-1597186502":"Reset {{platform}} password","-848721396":"These trading limits are optional, and you can strengthen them at any time. If you don’t wish to set a specific limit, leave the field blank. If you live in the United Kingdom, Customer Support can only remove or weaken your trading limits after 24 hours of receiving the request. If you live in the Isle of Man, Customer Support can only remove or weaken your trading limits after your trading limit period has expired.","-469096390":"These trading limits are optional, and you can strengthen them at any time. If you don’t wish to set a specific limit, leave the field blank. Customer Support can only remove or weaken your trading limits after 24 hours of receiving the request.","-42808954":"You can also exclude yourself entirely for a specified duration. This can only be removed once your self-exclusion has expired. If you wish to continue trading once your self-exclusion period expires, you must contact Customer Support by calling <0>+447723580049 to lift this self-exclusion. Requests by chat or email shall not be entertained. There will be a 24-hour cooling-off period before you can resume trading.","-1088698009":"These self-exclusion limits help you control the amount of money and time you spend trading on {{platform_name_trader}}, {{platform_name_dbot}}, {{platform_name_smarttrader}} and {{platform_name_bbot}} on Deriv. The limits you set here will help you exercise <0>responsible trading.","-1702324712":"These limits are optional, and you can adjust them at any time. You decide how much and how long you’d like to trade. If you don’t wish to set a specific limit, leave the field blank.","-1819875658":"You can also exclude yourself entirely for a specified duration. Once the self-exclusion period has ended, you can either extend it further or resume trading immediately. If you wish to reduce or remove the self-exclusion period, contact our <0>Customer Support.","-1031814119":"About trading limits and self-exclusion","-183468698":"Trading limits and self-exclusion","-933963283":"No, review my limits","-1759860126":"Yes, log me out immediately","-572347855":"{{value}} mins","-313333548":"You’ll be able to adjust these limits at any time. You can reduce your limits from the <0>self-exclusion page. To increase or remove your limits, please contact our <1>Customer Support team.","-1265833982":"Accept","-2123139671":"Your stake and loss limits","-1250802290":"24 hours","-2070080356":"Max. total stake","-1545823544":"7 days","-180147209":"You will be automatically logged out from each session after this time limit.","-374553538":"Your account will be excluded from the website until this date (at least 6 months, up to 5 years).","-2121421686":"To self-exclude from all online gambling companies licensed in Great Britain, go to <0>www.gamstop.co.uk.","-2105708790":"Your maximum account balance and open positions","-1960600163":"Once your account balance reaches this amount, you will not be able to deposit funds into your account.","-1073845224":"No. of open position(s)","-288196326":"Your maximum deposit limit","-568749373":"Max. deposit limit","-1884902844":"Max. deposit limit per day","-545085253":"Max. deposit limit over 7 days","-1031006762":"Max. deposit limit over 30 days","-1116871438":"Max. total loss over 30 days","-2134714205":"Time limit per session","-1884271702":"Time out until","-1265825026":"Timeout time must be greater than current time.","-1332882202":"Timeout time cannot be more than 6 weeks.","-1635977118":"Exclude time cannot be less than 6 months.","-1617352279":"The email is in your spam folder (Sometimes things get lost there).","-547557964":"We can’t deliver the email to this address (Usually because of firewalls or filtering).","-142444667":"Please click on the link in the email to change your Deriv MT5 password.","-742748008":"Check your email and click the link in the email to proceed.","-84068414":"Still didn't get the email? Please contact us via <0>live chat.","-428335668":"You will need to set a password to complete the process.","-818898181":"Name in document doesn’t match your Deriv profile.","-310316375":"Address in document doesn’t match address you entered above.","-485368404":"Document issued more than 6-months ago.","-367016488":"Blurry document. All information must be clear and visible.","-1957076143":"Cropped document. All information must be clear and visible.","-1515286538":"Please enter your document number. ","-1694758788":"Enter your document number","-1458676679":"You should enter 2-50 characters.","-2139303636":"You may have followed a broken link, or the page has moved to a new address.","-1448368765":"Error code: {{error_code}} page not found","-254792921":"You can only make deposits at the moment. To enable withdrawals, please complete your financial assessment.","-1437017790":"Financial information","-70342544":"We’re legally obliged to ask for your financial information.","-39038029":"Trading experience","-1894668798":"Other trading instruments experience","-1026468600":"Other trading instruments frequency","-1743024217":"Select Language","-1822545742":"Ether Classic","-1334641066":"Litecoin","-1214036543":"US Dollar","-1782590355":"No currency has been set for this account","-536187647":"Confirm revoke access?","-1357606534":"Permission","-570222048":"Revoke access","-1526404112":"Utility bill: electricity, water, gas, or landline phone bill.","-537552700":"Home rental agreement: valid and current agreement.","-890084320":"Save and submit","-30772747":"Your personal details have been saved successfully.","-1107320163":"Automate your trading, no coding needed.","-829643221":"Multipliers trading platform.","-1585707873":"Financial Commission","-199154602":"Vanuatu Financial Services Commission","-191165775":"Malta Financial Services Authority","-194969520":"Counterparty company","-1089385344":"Deriv (SVG) LLC","-2019617323":"Deriv (BVI) Ltd","-112814932":"Deriv (FX) Ltd","-1131400885":"Deriv Investments (Europe) Limited","-1471207907":"All assets","-781132577":"Leverage","-1591882610":"Synthetics","-543177967":"Stock indices","-362324454":"Commodities","-1071336803":"Platform","-820028470":"Options & Multipliers","-1255879419":"Trader's Hub","-1856204727":"Reset","-213142918":"Deposits and withdrawals temporarily unavailable ","-224804428":"Transactions","-1186807402":"Transfer","-1308346982":"Derived","-1145604233":"Trade CFDs on MT5 with Derived indices that simulate real-world market movements.","-328128497":"Financial","-1484404784":"Trade CFDs on MT5 with forex, stock indices, commodities, and cryptocurrencies.","-659955365":"Swap-Free","-674118045":"Trade swap-free CFDs on MT5 with synthetics, forex, stocks, stock indices, cryptocurrencies, and ETFs.","-1210359945":"Transfer funds to your accounts","-81256466":"You need a Deriv account to create a CFD account.","-699372497":"Trade with leverage and tight spreads for better returns on successful trades. <0>Learn more","-1884966862":"Get more Deriv MT5 account with different type and jurisdiction.","-145462920":"Deriv cTrader","-982095728":"Get","-1277942366":"Total assets","-493788773":"Non-EU","-673837884":"EU","-230566990":"The following documents you submitted did not pass our checks:","-846812148":"Proof of address.","-2055865877":"Non-EU regulation","-643108528":"Non-EU and EU regulation","-172898036":"CR5236585","-1665192032":"Multipliers account","-744999940":"Deriv account","-1638358352":"Get the upside of CFDs without risking more than your initial stake with <0>Multipliers.","-749129977":"Get a real Deriv account, start trading and manage your funds.","-1814994113":"CFDs <0>{{compare_accounts_title}}","-318106501":"Trade CFDs on MT5 with synthetics, baskets, and derived FX.","-1328701106":"Trade CFDs on MT5 with forex, stocks, stock indices, synthetics, cryptocurrencies, and commodities.","-1173266642":"This account offers CFDs on a feature-rich trading platform.","-1290112064":"Deriv EZ","-1453519913":"Trade CFDs on an easy-to-get-started platform with all your favourite assets.","-2051096382":"Earn a range of payouts by correctly predicting market movements with <0>options, or get the\n upside of CFDs without risking more than your initial stake with <1>multipliers.","-2146691203":"Choice of regulation","-249184528":"You can create real accounts under EU or non-EU regulation. Click the <0><0/> icon to learn more about these accounts.","-1505234170":"Trader's Hub tour","-1536335438":"These are the trading accounts available to you. You can click on an account’s icon or description to find out more","-1034232248":"CFDs or Multipliers","-1320214549":"You can choose between CFD trading accounts and Multipliers accounts","-2069414013":"Click the ‘Get’ button to create an account","-951876657":"Top-up your account","-1945421757":"Once you have an account click on ‘Deposit’ or ‘Transfer’ to add funds to an account","-1965920446":"Start trading","-33612390":"<0>EU statutory disclaimer: CFDs are complex instruments and come with a high risk of losing money rapidly due to leverage. <0>73% of retail investor accounts lose money when trading CFDs with this provider. You should consider whether you understand how CFDs work and whether you can afford to take the high risk of losing your money.","-2021135479":"This field is required.","-1870909526":"Our server cannot retrieve an address.","-582721696":"The current allowed withdraw amount is {{format_min_withdraw_amount}} to {{format_max_withdraw_amount}} {{currency}}","-1975494965":"Cashier","-42592103":"Deposit cryptocurrencies","-60779216":"Withdrawals are temporarily unavailable due to system maintenance. You can make your withdrawals when the maintenance is complete.","-520142572":"Cashier is currently down for maintenance","-1552080215":"Please check back in a few minutes.<0>Thank you for your patience.","-215186732":"You’ve not set your country of residence. To access Cashier, please update your country of residence in the Personal details section in your account settings.","-1392897508":"The identification documents you submitted have expired. Please submit valid identity documents to unlock Cashier. ","-954082208":"Your cashier is currently locked. Please contact us via <0>live chat to find out how to unlock it.","-929148387":"Please set your account currency to enable deposits and withdrawals.","-541392118":"Your account has not been authenticated. Please submit your <0>proof of identity and <1>proof of address to authenticate your account and access your cashier.","-247122507":"Your cashier is locked. Please complete the <0>financial assessment to unlock it.","-1443721737":"Your cashier is locked. See <0>how we protect your funds before you proceed.","-901712457":"Your access to Cashier has been temporarily disabled as you have not set your 30-day turnover limit. Please go to <0>Self-exclusion and set your 30-day turnover limit.","-166472881":"Your <0>personal details are incomplete. Please go to your account settings and complete your personal details to enable deposits and withdrawals.","-666905139":"Deposits are locked","-378858101":"Your <0>personal details are incomplete. Please go to your account settings and complete your personal details to enable deposits.","-1318742415":"Your account has not been authenticated. Please submit your <0>proof of identity and <1>proof of address to authenticate your account and request for withdrawals.","-1923809087":"Unfortunately, you can only make deposits. Please contact us via <0>live chat to enable withdrawals.","-172277021":"Cashier is locked for withdrawals","-1624999813":"It seems that you've no commissions to withdraw at the moment. You can make withdrawals once you receive your commissions.","-1077304626":"Amount ({{currency}})","-1559994981":"Approximate value","-190084602":"Transaction","-1995606668":"Amount","-2024290965":"Confirmations","-811190405":"Time","-1984478597":"The details of this transaction is available on CoinsPaid.","-1272778997":"We've sent you an email.","-89973258":"Resend email in {{seconds}}s","-1332236294":"Please verify your identity","-1675848843":"Error","-283017497":"Retry","-1838982691":"UNKNOWN","-532693866":"Something went wrong. Please refresh the page and try again.","-1196049878":"First line of home address","-1326406485":"Postal Code/ZIP","-939625805":"Telephone","-442575534":"Email verification failed","-1459042184":"Update your personal details","-1603543465":"We can't validate your personal details because there is some information missing.","-614516651":"Need help? <0>Contact us.","-203002433":"Deposit now","-720315013":"You have no funds in your {{currency}} account","-2052373215":"Please make a deposit to use this feature.","-379487596":"{{selected_percentage}}% of available balance ({{format_amount}} {{currency__display_code}})","-1957498244":"more","-1059419768":"Notes","-285921910":"Learn more about <0>payment methods.","-316545835":"Please ensure <0>all details are <0>correct before making your transfer.","-949073402":"I confirm that I have verified the client’s transfer information.","-1752211105":"Transfer now","-1787304306":"Deriv P2P","-174976899":"P2P verification","-1705887186":"Your deposit is successful.","-142361708":"In process","-1582681840":"We’ve received your request and are waiting for more blockchain confirmations.","-1626218538":"You’ve cancelled your withdrawal request.","-1062841150":"Your withdrawal is unsuccessful due to an error on the blockchain. Please <0>contact us via live chat for more info.","-630780094":"We’re awaiting confirmation from the blockchain.","-1525882769":"Your withdrawal is unsuccessful. We've sent you an email with more information.","-298601922":"Your withdrawal is successful.","-1463156905":"Learn more about payment methods","-1236567184":"This is your <0>{{regulation}}{{currency}} account {{loginid}}.","-1547606079":"We accept the following cryptocurrencies:","-1517325716":"Deposit via the following payment methods:","-639677539":"Buy cryptocurrencies","-1560098002":"Buy cryptocurrencies via fiat onramp","-541870313":"Deposit via payment agents","-197251450":"Don't want to trade in {{currency_code}}? You can open another cryptocurrency account.","-91824739":"Deposit {{currency}}","-523804269":"{{amount}} {{currency}} on {{date}}","-494847428":"Address: <0>{{value}}","-1117977576":"Confirmations: <0>{{value}}","-1935946851":"View more","-1744490898":"Unfortunately, we cannot retrieve the information at this time. ","-515809216":"Send only {{currency_name}} ({{currency_code}}) to this address.","-1589407981":"To avoid loss of funds:","-1042704302":"Make sure to copy your Deriv account address correctly into your crypto wallet.","-80329359":"<0>Note: You’ll receive an email when your deposit start being processed.","-2108344100":"Looking for a way to buy cryptocurrencies? <0>Try Fiat onramp.","-598073640":"About Tether (Ethereum)","-275902914":"Tether on Ethereum (eUSDT)","-1188009792":"Tether on Omni Layer (USDT)","-1239329687":"Tether was originally created to use the bitcoin network as its transport protocol ‒ specifically, the Omni Layer ‒ to allow transactions of tokenised traditional currency.","-314177745":"Unfortunately, we couldn't get the address since our server was down. Please click Refresh to reload the address or try again later.","-1068036170":"We do not charge a transfer fee for transfers in the same currency between your Deriv fiat and {{platform_name_mt5}} accounts and between your Deriv fiat and {{platform_name_dxtrade}} accounts.","-2056016338":"You’ll not be charged a transfer fee for transfers in the same currency between your Deriv fiat and {{platform_name_mt5}} accounts.","-599632330":"We’ll charge a 1% transfer fee for transfers in different currencies between your Deriv fiat and {{platform_name_mt5}} accounts and between your Deriv fiat and {{platform_name_dxtrade}} accounts.","-1196994774":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency accounts.","-1361372445":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency and Deriv MT5 accounts, your Deriv cryptocurrency and {{platform_name_derivez}} accounts, and your Deriv cryptocurrency and {{platform_name_dxtrade}} accounts.","-993556039":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency and Deriv MT5 accounts and between your Deriv cryptocurrency and {{platform_name_dxtrade}} accounts.","-1382702462":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency and Deriv MT5 accounts.","-1995859618":"You may transfer between your Deriv fiat, cryptocurrency, {{platform_name_mt5}}, {{platform_name_derivez}} and {{platform_name_dxtrade}} accounts.","-545616470":"Each day, you can make up to {{ allowed_internal }} transfers between your Deriv accounts, up to {{ allowed_mt5 }} transfers between your Deriv and {{platform_name_mt5}} accounts, up to {{ allowed_derivez }} transfers between your Deriv and {{platform_name_derivez}} accounts, and up to {{ allowed_dxtrade }} transfers between your Deriv and {{platform_name_dxtrade}} accounts.","-1151983985":"Transfer limits may vary depending on the exchange rates.","-1747571263":"Please bear in mind that some transfers may not be possible.","-757062699":"Transfers may be unavailable due to high volatility or technical issues and when the exchange markets are closed.","-1866405488":"Deriv cTrader accounts","-1344870129":"Deriv accounts","-1156059326":"You have {{number}} transfer remaining for today.","-1109729546":"You will be able to transfer funds between MT5 accounts and other accounts once your address is verified.","-1593609508":"Transfer between your accounts in Deriv","-1155970854":"You have reached the maximum daily transfers. Please try again tomorrow.","-464965808":"Transfer limits: <0 /> - <1 />","-553249337":"Transfers are locked","-1638172550":"To enable this feature you must complete the following:","-1949883551":"You only have one account","-1149845849":"Back to Trader's Hub","-1232852916":"We’re switching over to your {{currency}} account to view the transaction.","-759000391":"We were unable to verify your information automatically. To enable this function, you must complete the following:","-1632668764":"I accept","-544232635":"Please go to the Deposit page to generate an address. Then come back here to continue with your transaction.","-1161069724":"Please copy the crypto address you see below. You'll need it to deposit your cryptocurrency.","-1388977563":"Copied!","-1962894999":"This address can only be used ONCE. Please copy a new one for your next transaction.","-451858550":"By clicking 'Continue' you will be redirected to {{ service }}, a third-party payment service provider. Please note that {{ website_name }} is not responsible for the content or services provided by {{ service }}. If you encounter any issues related to {{ service }} services, you must contact {{ service }} directly.","-2005265642":"Fiat onramp is a cashier service that allows you to convert fiat currencies to crypto to top up your Deriv crypto accounts. Listed here are third-party crypto exchanges. You’ll need to create an account with them to use their services.","-1593063457":"Select payment channel","-1309258714":"From account number","-1247676678":"To account number","-816476007":"Account holder name","-344403983":"Description","-922432739":"Please enter a valid client login ID.","-1024241603":"Insufficient balance.","-1979554765":"Please enter a valid description.","-1254233806":"You've transferred","-953082600":"Some payment methods may not be listed here but payment agents may still offer them. If you can’t find your favourite method, contact the payment agents directly to check further.","-1491457729":"All payment methods","-142563298":"Contact your preferred payment agent for payment instructions and make your deposit.","-1023961762":"Commission on deposits","-552873274":"Commission on withdrawal","-880645086":"Withdrawal amount","-118683067":"Withdrawal limits: <0 />-<1 />","-1125090734":"Important notice to receive your funds","-1924707324":"View transaction","-1474202916":"Make a new withdrawal","-511423158":"Enter the payment agent account number","-2059278156":"Note: {{website_name}} does not charge any transfer fees.","-1201279468":"To withdraw your funds, please choose the same payment method you used to make your deposits.","-2004264970":"Your wallet address should have 25 to 64 characters.","-1707299138":"Your {{currency_symbol}} wallet address","-38063175":"{{account_text}} wallet","-705272444":"Upload a proof of identity to verify your identity","-2024958619":"This is to protect your account from unauthorised withdrawals.","-130833284":"Please note that your maximum and minimum withdrawal limits aren’t fixed. They change due to the high volatility of cryptocurrency.","-1531269493":"We'll send you an email once your transaction has been processed.","-1572746946":"Asian Up","-686840306":"Asian Down","-2141198770":"Higher","-816098265":"Lower","-1646655742":"Spread Up","-668987427":"Spread Down","-912577498":"Matches","-1862940531":"Differs","-808904691":"Odd","-556230215":"Ends Outside","-1268220904":"Ends Between","-703542574":"Up","-1127399675":"Down","-768425113":"No Touch","-1163058241":"Stays Between","-1354485738":"Reset Call","-376148198":"Only Ups","-1337379177":"High Tick","-328036042":"Please enter a stop loss amount that's higher than the current potential loss.","-2127699317":"Invalid stop loss. Stop loss cannot be more than stake.","-590765322":"Unfortunately, this trading platform is not available for EU Deriv account. Please switch to a non-EU account to continue trading.","-2110207996":"Deriv Bot is unavailable for this account","-971295844":"Switch to another account","-1194079833":"Deriv Bot is not available for EU clients","-1223145005":"Loss amount: {{profit}}","-1206212388":"Welcome back! Your messages have been restored. You are using your {{current_currency}} account.","-1724342053":"You are using your {{current_currency}} account.","-1062922595":"Reference ID (buy)","-2068574600":"Reference ID (sell)","-994038153":"Start Time","-1979852400":"Entry Spot","-427802309":"Profit/Loss","-668558002":"Journal.csv","-746652890":"Notifications","-824109891":"System","-749186458":"Account switching is disabled while your bot is running. Please stop your bot before switching accounts.","-662836330":"Would you like to keep your current contract or close it? If you decide to keep it running, you can check and close it later on the <0>Reports page.","-597939268":"Keep my contract","-1322453991":"You need to log in to run the bot.","-236548954":"Contract Update Error","-1428017300":"THE","-1450728048":"OF","-255051108":"YOU","-1845434627":"IS","-931434605":"THIS","-740712821":"A","-187634388":"This block is mandatory. Here is where you can decide if your bot should continue trading. Only one copy of this block is allowed.","-2105473795":"The only input parameter determines how block output is going to be formatted. In case if the input parameter is \"string\" then the account currency will be added.","-1800436138":"2. for \"number\": 1325.68","-530632460":"This block is used to determine if the market price moves in the selected direction or not. It gives you a value of \"True\" or \"False\".","-1875717842":"Examples:","-890079872":"1. If the selected direction is \"Rise\", and the previous tick value is less than the current tick value, the output will be \"True\". Otherwise, the output will be an empty string.","-489739641":"2. If the selected direction is \"Fall\", and the previous tick value is more than the current tick value, the output will be \"True\". Otherwise, the output will be an empty string.","-2116076360":"There are 4 message types:","-1421941045":"2. 'Warn' displays a message in yellow to highlight something that needs attention.","-277850921":"If \"Win\" is selected, it will return \"True\" if your last trade was successful. Otherwise, it will return an empty string.","-1918487001":"Example:","-2139916657":"1. In the below example the loop is terminated in case \"x\" is \"False\" even though only one iteration is complete","-1238900333":"2. In the below example the loop jumps to the next iteration without executing below block in case if \"x\" is \"False\"","-1729479576":"You can use \"i\" inside the loop, for example to access list items","-1474636594":"In this example, the loop will repeat three times, as that is the number of items in the given list. During each iteration, the variable \"i\" will be assigned a value from the list. ","-908772734":"This block evaluates a statement and will perform an action only when the statement is true.","-334040831":"2. In this example, the instructions are repeated as long as the value of x is greater than or equal to 10. Once the value of x drops below 10, the loop is terminated.","-444267958":"\"Seconds Since Epoch\" block returns the number of seconds since January 1st, 1970.","-447522129":"You might need it when you want to repeat an actions after certain amount of time.","-1488259879":"The term \"candle\" refers to each bar on the candlestick chart. Each candle represents four market prices for the selected time interval:","-2020693608":"Each candlestick on the chart represents 4 market prices for the selected time interval:","-62728852":"- Open price: the opening price","-1247744334":"- Low price: the lowest price","-1386365697":"- Close price: the closing price","-1498732382":"A black (or red) candle indicates that the open price is higher than the close price. This represents a downward movement of the market price.","-1871864755":"This block gives you the last digit of the latest tick value of the selected market. If the latest tick value is 1410.90, this block will return 0. It’s useful for digit-based contracts such as Even/Odd, Matches/Differs, or Higher/Lower.","-1029671512":"In case if the \"OR\" operation is selected, the block returns \"True\" in case if one or both given values are \"True\"","-210295176":"Available operations:","-1385862125":"- Addition","-983721613":"- Subtraction","-854750243":"- Multiplication","-1394815185":"In case if the given number is less than the lower boundary of the range, the block returns the lower boundary value. Similarly, if the given number is greater than the higher boundary, the block will return the higher boundary value. In case if the given value is between boundaries, the block will return the given value unchanged.","-1034564248":"In the below example the block returns the value of 10 as the given value (5) is less than the lower boundary (10)","-2009817572":"This block performs the following operations to a given number","-671300479":"Available operations are:","-514610724":"- Absolute","-1923861818":"- Euler’s number (2.71) to the power of a given number","-1556344549":"Here’s how:","-1061127827":"- Visit the following URL, make sure to replace with the Telegram API token you created in Step 1: https://api.telegram.org/bot/getUpdates","-311389920":"In this example, the open prices from a list of candles are assigned to a variable called \"cl\".","-1460794449":"This block gives you a list of candles within a selected time interval.","-1634242212":"Used within a function block, this block returns a value when a specific condition is true.","-2012970860":"This block gives you information about your last contract.","-1504783522":"You can choose to see one of the following:","-10612039":"- Profit: the profit you’ve earned","-555996976":"- Entry time: the starting time of the contract","-1391071125":"- Exit time: the contract expiration time","-1961642424":"- Exit value: the value of the last tick of the contract","-111312913":"- Barrier: the barrier value of the contract (applicable to barrier-based trade types such as stays in/out, touch/no touch, etc.)","-674283099":"- Result: the result of the last contract: \"win\" or \"loss\"","-704543890":"This block gives you the selected candle value such as open price, close price, high price, low price, and open time. It requires a candle as an input parameter.","-482281200":"In the example below, the open price is assigned to the variable \"op\".","-364621012":"This block gives you the specified candle value for a selected time interval. You can choose which value you want:","-232477769":"- Open: the opening price","-610736310":"Use this block to sell your contract at the market price. Selling your contract is optional. You may choose to sell if the market trend is unfavourable.","-1307657508":"This block gives you the potential profit or loss if you decide to sell your contract. It can only be used within the \"Sell conditions\" root block.","-1921072225":"In the example below, the contract will only be sold if the potential profit or loss is more than the stake.","-955397705":"SMA adds the market price in a list of ticks or candles for a number of time periods, and divides the sum by that number of time periods.","-1424923010":"where n is the number of periods.","-1835384051":"What SMA tells you","-749487251":"SMA serves as an indicator of the trend. If the SMA points up then the market price is increasing and vice versa. The larger the period number, the smoother SMA line is.","-1996062088":"In this example, each point of the SMA line is an arithmetic average of close prices for the last 10 days.","-1866751721":"Input list accepts a list of ticks or candles, while period is the specified time period.","-1097076512":"You may compare SMA values calculated on every bot run to identify the market trend direction. Alternatively, you may also use a variation of the SMA block, the Simple Moving Average Array block. ","-1254849504":"If a period of 10 is entered, the Simple Moving Average Array block will return a list of SMA values calculated based on period of 10.","-1190046167":"This block displays a dialog box with a customised message. When the dialog box is displayed, your strategy is paused and will only resume after you click \"OK\".","-859028989":"In this example, the date and time will be displayed in a green notification box.","-1452086215":"In this example, a Rise contract will be purchased at midnight on 1 August 2019.","-1765276625":"Click the multiplier drop-down menu and choose the multiplier value you want to trade with.","-1872233077":"Your potential profit will be multiplied by the multiplier value you’ve chosen.","-614454953":"To learn more about multipliers, please go to the <0>Multipliers page.","-2078588404":"Select your desired market and asset type. For example, Forex > Major pairs > AUD/JPY","-2037446013":"2. Trade Type","-533927844":"Select your desired trade type. For example, Up/Down > Rise/Fall","-1192411640":"4. Default Candle Interval","-485434772":"8. Trade Options","-1827646586":"This block assigns a given value to a variable, creating the variable if it doesn't already exist.","-254421190":"List: ({{message_length}})","-1616649196":"results","-90107030":"No results found","-984140537":"Add","-1373954791":"Should be a valid number","-1278608332":"Please enter a number between 0 and {{api_max_losses}}.","-287597204":"Enter limits to stop your bot from trading when any of these conditions are met.","-1445989611":"Limits your potential losses for the day across all Deriv platforms.","-152878438":"Maximum number of trades your bot will execute for this run.","-1490942825":"Apply and run","-1442034178":"Contract bought","-2020280751":"Bot is stopping","-1436403979":"Contract closed","-1711732508":"Reference IDs","-386141434":"(Buy)","-482272687":"(Sell)","-1983189496":"ticks","-694277729":"(High)","-2028564707":"(Low)","-627895223":"Exit spot","-596238067":"Entry/Exit spot","-558594655":"The bot is not running","-478946875":"The stats are cleared","-1842451303":"Welcome to Deriv Bot!","-1391310674":"Check out these guides and FAQs to learn more about building your bot:","-2066779239":"FAQs","-280324365":"What is Deriv Bot?","-1016171176":"Asset","-621128676":"Trade type","-447853970":"Loss threshold","-507620484":"Unsaved","-764102808":"Google Drive","-555886064":"Won","-529060972":"Lost","-1696412885":"Import","-320197558":"Sort blocks","-1566369363":"Zoom out","-1285759343":"Search","-1291088318":"Purchase conditions","-112876186":"Analysis","-1769584466":"Stats","-1133736197":"Utility","-1682372359":"Text","-907562847":"Lists","-1646497683":"Loops","-251326965":"Miscellaneous","-934909826":"Load strategy","-1692205739":"Import a bot from your computer or Google Drive, build it from scratch, or start with a quick strategy.","-1545070554":"Delete bot","-1972599670":"Your bot will be permanently deleted when you hit ","-1692956623":"Yes, delete.","-573479616":"Are you sure you want to delete it?","-786915692":"You are connected to Google Drive","-1256971627":"To import your bot from your Google Drive, you'll need to sign in to your Google account.","-1233084347":"To know how Google Drive handles your data, please review Deriv’s <0>Privacy policy.","-1150107517":"Connect","-1150390589":"Last modified","-1393876942":"Your bots:","-767342552":"Enter your bot name, choose to save on your computer or Google Drive, and hit ","-1372891985":"Save.","-1003476709":"Save as collection","-636521735":"Save strategy","-1953880747":"Stop my bot","-1899230001":"Stopping the current bot will load the Quick Strategy you just created to the workspace.","-2131847097":"Any open contracts can be viewed on the ","-563774117":"Dashboard","-939764287":"Charts","-683790172":"Now, <0>run the bot to test out the strategy.","-1127164953":"Hi! Hit <0>Start for a quick tour.","-358288026":"Note: You can also find this tutorial in the <0>Tutorials tab.","-1793577405":"Build from scratch","-358753028":"Create your bot using our drag-and-drop blocks or click Quick Strategy to choose from the ready-to-use bot templates.","-1212601535":"Monitor the market","-21136101":"See how your bot is doing in real-time.","-631097919":"Click <0>Run when you want to start trading, and click <0>Stop when you want to stop.","-1999747212":"Want to retake the tour?","-129587613":"Got it, thanks!","-782992165":"Step 1 :","-1207872534":"First, set the <0>Trade parameters block.","-1656388044":"First, set <0>Market to Derived > Continuous Indices > Volatility 100 (1s) Index.","-1706298865":"Then, set <0>Trade type to Up/Down > Rise/Fall.","-1834358537":"For <0>Default candle interval, set it to 1 minute","-1940971254":"For <0>Trade options, set it as below:","-512839354":"<0>Stake: USD 10 (min: 0.35 - max: 50000)","-753745278":"Step 2 :","-1056713679":"Then, set the <0>Purchase conditions block.","-245497823":"<0>2. Purchase conditions:","-916770284":"<0>Purchase: Rise","-758077259":"Step 3 :","-677396944":"Step 4 :","-295975118":"Next, go to <0>Utility tab under the Blocks menu. Tap the drop-down arrow and hit <0>Loops.","-698493945":"Step 5 :","-1992994687":"Now, tap the <0>Analysis drop-down arrow and hit <0>Contract.","-1844492873":"Go to the <0>Last trade result block and click + icon to add the <0>Result is Win block to the workspace.","-1547091772":"Then, drag the <0>Result is win into the empty slot next to <0>repeat until block.","-736400802":"Step 6 :","-732067680":"Finally, drag and add the whole <0>Repeat block to the <0>Restart trading conditions block.","-1411787252":"Step 1","-1109392787":"Learn how to build your bot from scratch using a simple strategy.","-1263822623":"You can import a bot from your mobile device or from Google drive, see a preview in the bot builder, and start trading by running the bot.","-563921656":"Bot Builder guide","-1109191651":"Must be a number higher than 0","-689786738":"Minimum duration: {{ min }}","-184183432":"Maximum duration: {{ max }}","-1494924808":"The value must be equal to or greater than 2.","-1823621139":"Quick Strategy","-1778025545":"You’ve successfully imported a bot.","-1519425996":"No results found \"{{ faq_search_value }}\"","-155173714":"Let’s build a bot!","-1919212468":"3. You can also search for the blocks you want using the search bar above the categories.","-1520558271":"For more info, check out this blog post on the basics of building a trading bot.","-980360663":"3. Choose the block you want and drag it to the workspace.","-1493168314":"What is a quick strategy?","-1680391945":"Using a quick strategy","-1177914473":"How do I save my strategy?","-271986909":"In Bot Builder, hit Save on the toolbar at the top to download your bot. Give your bot a name, and choose to download your bot to your device or Google Drive. Your bot will be downloaded as an XML file.","-1149045595":"1. After hitting Import, select Local and click Continue.","-288041546":"2. Select your XML file and hit Open.","-2127548288":"3. Your bot will be loaded accordingly.","-1311297611":"1. After hitting Import, select Google Drive and click Continue.","-1549564044":"How do I reset the workspace?","-1127331928":"In Bot Builder, hit Reset on the toolbar at the top. This will clear the workspace. Please note that any unsaved changes will be lost.","-1720444288":"How do I control my losses with Deriv Bot?","-1142295124":"There are several ways to control your losses with Deriv Bot. Here’s a simple example of how you can implement loss control in your strategy:","-986689483":"1. Create the following variables:","-269910127":"3. Update current profit/loss with the profit from the last contract. If the last contract was lost, the value of current profit/loss will be negative.","-1565344891":"Can I run Deriv Bot on multiple tabs in my web browser?","-90192474":"Yes, you can. However, there are limits on your account, such as maximum number of open positions and maximum aggregate payouts on open positions. So, just keep these limits in mind when opening multiple positions. You can find more info about these limits at Settings > Account limits.","-213872712":"No, we don't offer cryptocurrencies on Deriv Bot.","-2147346223":"In which countries is Deriv Bot available?","-352345777":"What are the most popular strategies for automated trading?","-552392096":"Three of the most commonly used strategies in automated trading are Martingale, D'Alembert, and Oscar's Grind — you can find them all ready-made and waiting for you in Deriv Bot.","-418247251":"Download your journal.","-2123571162":"Download","-870004399":"<0>Bought: {{longcode}} (ID: {{transaction_id}})","-1211474415":"Filters","-186972150":"There are no messages to display","-999254545":"All messages are filtered out","-1121028020":"or, if you prefer...","-254025477":"Select an XML file from your device","-1131095838":"Please upload an XML file","-523928088":"Create one or upload one from your local drive or Google Drive.","-1684205190":"Why can't I see my recent bots?","-2050879370":"1. Logged in from a different device","-811857220":"3. Cleared your browser cache","-625024929":"Leaving already?","-584289785":"No, I'll stay","-1435060006":"If you leave, your current contract will be completed, but your bot will stop running immediately.","-783058284":"Total stake","-2077494994":"Total payout","-1073955629":"No. of runs","-1729519074":"Contracts lost","-42436171":"Total profit/loss","-1137823888":"Total payout since you last cleared your stats.","-992662695":"The number of times your bot has run since you last cleared your stats. Each run includes the execution of all the root blocks.","-1382491190":"Your total profit/loss since you last cleared your stats. It is the difference between your total payout and your total stake.","-24780060":"When you’re ready to trade, hit ","-2147110353":". You’ll be able to track your bot’s performance here.","-2140412463":"Buy price","-1299484872":"Account","-2004386410":"Win","-266502731":"Transactions detailed summary","-1717650468":"Online","-1309011360":"Open positions","-1597214874":"Trade table","-1929724703":"Compare CFD accounts","-883103549":"Account deactivated","-1837059346":"Buy / Sell","-1845037007":"Advertiser's page","-494667560":"Orders","-679691613":"My ads","-821418875":"Trader","-679102561":"Contract Details","-430118939":"Complaints policy","-568280383":"Deriv Gaming","-895331276":"Complete your proof of address","-782679300":"Complete your proof of identity","-579984289":"Derived Demo","-1596515467":"Derived BVI","-222394569":"Derived Vanuatu","-533935232":"Financial BVI","-565431857":"Financial Labuan","-291535132":"Swap-Free Demo","-1472945832":"Swap-Free SVG","-144803045":"Only numbers and these special characters are allowed: {{permitted_characters}}","-1450516268":"Only letters, numbers, space, hyphen, period, and apostrophe are allowed.","-1966032552":"The length of token should be 8.","-2128137611":"Should start with letter or number, and may contain hyphen and underscore.","-1590869353":"Up to {{decimal_count}} decimal places are allowed.","-2061307421":"Should be more than {{min_value}}","-1099941162":"Should be less than {{max_value}}","-1528188268":"Straight rows of keys are easy to guess","-1339903234":"Short keyboard patterns are easy to guess","-23980798":"Repeats like \"aaa\" are easy to guess","-235760680":"Avoid repeated words and characters","-1568933154":"Sequences like abc or 6543 are easy to guess","-725663701":"Avoid sequences","-1450768475":"Recent years are easy to guess","-1804838610":"Avoid years that are associated with you","-64849469":"Dates are often easy to guess","-2006915194":"Avoid dates and years that are associated with you","-2124205211":"A word by itself is easy to guess","-1095202689":"All-uppercase is almost as easy to guess as all-lowercase","-2137856661":"Reversed words aren't much harder to guess","-1885413063":"Predictable substitutions like '@' instead of 'a' don't help very much","-369258265":"This password is on the blacklist","-681468758":"Your web browser is out of date and may affect your trading experience. Please <0>update your browser.","-577777971":"You have reached the rate limit of requests per second. Please try later.","-206321775":"Fiat","-522767852":"DEMO","-433761292":"Switching to default account.","-405439829":"Sorry, you can't view this contract because it doesn't belong to this account.","-1590712279":"Gaming","-16448469":"Virtual","-2093768906":"{{name}} has released your funds.
Would you like to give your feedback?","-705744796":"Your demo account balance has reached the maximum limit, and you will not be able to place new trades. Reset your balance to continue trading from your demo account.","-2063700253":"disabled","-1585069798":"Please click the following link to complete your Appropriateness Test.","-1287141934":"Find out more","-367759751":"Your account has not been verified","-596690079":"Enjoy using Deriv?","-265932467":"We’d love to hear your thoughts","-1815573792":"Drop your review on Trustpilot.","-823349637":"Go to Trustpilot","-1204063440":"Set my account currency","-1601813176":"Would you like to increase your daily limits to {{max_daily_buy}} {{currency}} (buy) and {{max_daily_sell}} {{currency}} (sell)?","-1751632759":"Get a faster mobile trading experience with the <0>{{platform_name_go}} app!","-1164554246":"You submitted expired identification documents","-219846634":"Let’s verify your ID","-529038107":"Install","-1738575826":"Please switch to your real account or create one to access the cashier.","-1329329028":"You’ve not set your 30-day turnover limit","-132893998":"Your access to the cashier has been temporarily disabled as you have not set your 30-day turnover limit. Please go to Self-exclusion and set the limit.","-1852207910":"MT5 withdrawal disabled","-764323310":"MT5 withdrawals have been disabled on your account. Please check your email for more details.","-1902997828":"Refresh now","-753791937":"A new version of Deriv is available","-1775108444":"This page will automatically refresh in 5 minutes to load the latest version.","-1175685940":"Please contact us via live chat to enable withdrawals.","-493564794":"Please complete your financial assessment.","-1125797291":"Password updated.","-157145612":"Please log in with your updated password.","-1728185398":"Resubmit proof of address","-612396514":"Please resubmit your proof of address.","-1519764694":"Your proof of address is verified.","-1961967032":"Resubmit proof of identity","-117048458":"Please submit your proof of identity.","-1196422502":"Your proof of identity is verified.","-136292383":"Your proof of address verification is pending","-386909054":"Your proof of address verification has failed","-430041639":"Your proof of address did not pass our verification checks, and we’ve placed some restrictions on your account. Please resubmit your proof of address.","-87177461":"Please go to your account settings and complete your personal details to enable deposits.","-904632610":"Reset your balance","-470018967":"Reset balance","-156611181":"Please complete the financial assessment in your account settings to unlock it.","-1925176811":"Unable to process withdrawals in the moment","-980696193":"Withdrawals are temporarily unavailable due to system maintenance. You can make withdrawals when the maintenance is complete.","-1647226944":"Unable to process deposit in the moment","-488032975":"Deposits are temporarily unavailable due to system maintenance. You can make deposits when the maintenance is complete.","-2136953532":"Scheduled cashier maintenance","-849587074":"You have not provided your tax identification number","-47462430":"This information is necessary for legal and regulatory requirements. Please go to your account settings, and fill in your latest tax identification number.","-2067423661":"Stronger security for your Deriv account","-1719731099":"With two-factor authentication, you’ll protect your account with both your password and your phone - so only you can access your account, even if someone knows your password.","-949074612":"Please contact us via live chat.","-2087822170":"You are offline","-1669693571":"Check your connection.","-1706642239":"<0>Proof of ownership <1>required","-553262593":"<0><1>Your account is currently locked <2><3>Please upload your proof of <4>ownership to unlock your account. <5>","-1834929362":"Upload my document","-1043638404":"<0>Proof of ownership <1>verification failed","-1766760306":"<0><1>Please upload your document <2>with the correct details. <3>","-8892474":"Start assessment","-1330929685":"Please submit your proof of identity and proof of address to verify your account and continue trading.","-99461057":"Please submit your proof of address to verify your account and continue trading.","-577279362":"Please submit your proof of identity to verify your account and continue trading.","-197134911":"Your proof of identity is expired","-152823394":"Your proof of identity has expired. Please submit a new proof of identity to verify your account and continue trading.","-420930276":"Follow these simple instructions to fix it.","-2142540205":"It appears that the address in your document doesn’t match the address in your Deriv profile. Please update your personal details now with the correct address.","-482715448":"Go to Personal details","-2072411961":"Your proof of address has been verified","-384887227":"Update the address in your profile.","-448961363":"non-EU","-1998049070":"If you agree to our use of cookies, click on Accept. For more information, <0>see our policy.","-402093392":"Add Deriv Account","-1721181859":"You’ll need a {{deriv_account}} account","-1989074395":"Please add a {{deriv_account}} account first before adding a {{dmt5_account}} account. Deposits and withdrawals for your {{dmt5_label}} account are done by transferring funds to and from your {{deriv_label}} account.","-689237734":"Proceed","-1642457320":"Help centre","-1966944392":"Network status: {{status}}","-594209315":"Synthetic indices in the EU are offered by {{legal_entity_name}}, W Business Centre, Level 3, Triq Dun Karm, Birkirkara BKR 9033, Malta, licensed and regulated by the Malta Gaming Authority (<0>licence no. MGA/B2C/102/2000) and by the Revenue Commissioners for clients in Ireland (<2>licence no. 1010285).","-181484419":"Responsible trading","-650505513":"Full screen","-1823504435":"View notifications","-1954045170":"No currency assigned","-583559763":"Menu","-1591792668":"Account Limits","-34495732":"Regulatory information","-1496158755":"Go to Deriv.com","-1323441180":"I hereby confirm that my request for opening an account with Deriv to trade OTC products issued and offered exclusively outside Brazil was initiated by me. I fully understand that Deriv is not regulated by CVM and by approaching Deriv I intend to set up a relation with a foreign company.","-1396326507":"Unfortunately, {{website_name}} is not available in your country.","-1019903756":"Synthetic","-288996254":"Unavailable","-735306327":"Manage accounts","-2024365882":"Explore","-1197864059":"Create free demo account","-1813972756":"Account creation paused for 24 hours","-366030582":"Sorry, you're unable to create an account at this time. As you declined our previous risk warnings, we need you to wait for 24 hours after your first account creation attempt before you can proceed.<0/><0/>","-534047566":"Thank you for your understanding. You can create your account on {{real_account_unblock_date}} or later.","-399816343":"Trading Experience Assessment<0/>","-1822498621":"As per our regulatory obligations, we are required to assess your trading knowledge and experience.<0/><0/>Please click ‘OK’ to continue","-71049153":"Keep your account secure with a password","-1861974537":"Strong passwords contain at least 8 characters, combine uppercase and lowercase letters, numbers, and symbols.","-1485242688":"Step {{step}}: {{step_title}} ({{step}} of {{steps}})","-1829842622":"You can open an account for each cryptocurrency.","-987221110":"Choose a currency you would like to trade with.","-1066574182":"Choose a currency","-1914534236":"Choose your currency","-200560194":"Please switch to your {{fiat_currency}} account to change currencies.","-1829493739":"Choose the currency you would like to trade with.","-1814647553":"Add a new","-1269362917":"Add new","-650480777":"crypto account","-175638343":"Choose an account or add a new one","-1768223277":"Your account is ready","-1215717784":"<0>You have successfully changed your currency to {{currency}}.<0>Make a deposit now to start trading.","-786091297":"Trade on demo","-228099749":"Please verify your identity and address","-1041852744":"We're processing your personal information","-1775006840":"Make a deposit now to start trading.","-983734304":"We need proof of your identity and address before you can start trading.","-917733293":"To get trading, please confirm where you live.","-1282628163":"You'll be able to get trading as soon as verification is complete.","-952649119":"Log In","-3815578":"Sign Up","-1456176427":"Set a currency for your real account","-1557011219":"Add a real Deriv Options account","-241733171":"Add a Deriv Financial account","-1329687645":"Create a cryptocurrency account","-1429178373":"Create a new account","-1740162250":"Manage account","-1016775979":"Choose an account","-1362081438":"Adding more real accounts has been restricted for your country.","-1602122812":"24-hour Cool Down Warning","-1519791480":"CFDs and other financial instruments come with a high risk of losing money rapidly due to leverage. You should consider whether you understand how CFDs and other financial instruments work and whether you can afford to take the risk of losing your money. <0/><0/>\n As you have declined our previous warning, you would need to wait 24 hours before you can proceed further.","-1010875436":"CFDs and other financial instruments come with a high risk of losing money rapidly due to leverage. You should consider whether you understand how CFDs and other financial instruments work and whether you can afford to take the high risk of losing your money. <0/><0/> To continue, kindly note that you would need to wait 24 hours before you can proceed further.","-1725418054":"By clicking ‘Accept’ and proceeding with the account opening, you should note that you may be exposing yourself to risks. These risks, which may be significant, include the risk of losing the entire sum invested, and you may not have the knowledge and experience to properly assess or mitigate them.","-1369294608":"Already signed up?","-730377053":"You can’t add another real account","-2100785339":"Invalid inputs","-2061807537":"Something’s not right","-617844567":"An account with your details already exists.","-292363402":"Trading statistics report","-1656860130":"Options trading can become a real addiction, as can any other activity pushed to its limits. To avoid the danger of such an addiction, we provide a reality-check that gives you a summary of your trades and accounts on a regular basis.","-28080461":"Would like to check your statement first? <0>Check Statement","-611059051":"Please specify your preferred interval reality check in minutes:","-1876891031":"Currency","-11615110":"Turnover","-1370419052":"Profit / Loss","-437320982":"Session duration:","-3959715":"Current time:","-1534648620":"Your password has been changed","-596199727":"We will now redirect you to the login page.","-310434518":"The email input should not be empty.","-437918412":"No currency assigned to your account","-1193651304":"Country of residence","-707550055":"We need this to make sure our service complies with laws and regulations in your country.","-280139767":"Set residence","-601615681":"Select theme","-1152511291":"Dark","-1428458509":"Light","-1976089791":"Your Deriv account has been unlinked from your {{social_identity_provider}} account. You can now log in to Deriv using your new email address and password.","-505449293":"Enter a new password for your Deriv account.","-1728963310":"Stop creating an account?","-703818088":"Only log in to your account at this secure link, never elsewhere.","-1235799308":"Fake links often contain the word that looks like \"Deriv\" but look out for these differences.","-2102997229":"Examples","-82488190":"I've read the above carefully.","-97775019":"Do not trust and give away your credentials on fake websites, ads or emails.","-2142491494":"OK, got it","-611136817":"Beware of fake links.","-1787820992":"Platforms","-1793883644":"Trade FX and CFDs on a customisable, easy-to-use trading platform.","-184713104":"Earn fixed payouts with options, or trade multipliers to amplify your gains with limited risk.","-1571775875":"Our flagship options and multipliers trading platform.","-895091803":"If you're looking for CFDs","-1447215751":"Not sure? Try this","-2338797":"<0>Maximise returns by <0>risking more than you put in.","-1682067341":"Earn <0>fixed returns by <0>risking only what you put in.","-1744351732":"Not sure where to start?","-1342699195":"Total profit/loss:","-943710774":"This complaints policy, which may change from time to time, applies to your account registered with {{legal_entity_name}}, having its registered office address at First Floor, Millennium House, Victoria Road, Douglas, Isle of Man, IM2 4RW, licensed and regulated respectively by (1) the Gambling Supervision Commission in the Isle of Man (current <0>licence issued on 31 August 2017) and (2) the Gambling Commission in the UK (<1>licence no. 39172).","-255056078":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name}}, having its registered office address at W Business Centre, Level 3, Triq Dun Karm, Birkirkara, BKR 9033, Malta, licensed and regulated by the Malta Gaming Authority in Malta for gambling products only, <0>licence no. MGA/B2C/102/2000, and for clients residing in the UK by the UK Gambling Commission (account number 39495).","-1941013000":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}}, {{legal_entity_name_fx}}, and {{legal_entity_name_v}}.","-594812204":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}}.","-813256361":"We are committed to treating our clients fairly and providing them with excellent service.<0/><1/>We would love to hear from you on how we can improve our services to you. Any information you provide will be treated in the strictest confidence. Rest assured that you will be heard, valued, and always treated fairly.","-1622847732":"If you have an inquiry regarding your trading account with {{legal_entity_name}}, you can contact us through our <0>Help centre or by chatting with a representative via <1>Live Chat.<2/><3/>We are committed to resolving your query in the quickest time possible and appreciate your patience in allowing us time to resolve the matter.<4/><5/>We strive to provide the best possible service and support to our customers. However, in the event that we are unable to resolve your query or if you feel that our response is unsatisfactory, we want to hear from you. We welcome and encourage you to submit an official complaint to us so that we can review your concerns and work towards a resolution.","-1639808836":"If you are not satisfied with the outcome, you can escalate your complaint to the <0>Independent Betting Adjudication Service (IBAS) by filling the IBAS adjudication form. Please note that IBAS only deals with disputes that result from transactions.","-1505742956":"<0/><1/>You can also refer your dispute to the Malta Gaming Authority via the <2>Player Support Unit.","-1406192787":"If you are not satisfied with the outcome, you can escalate your complaint to the <0>Financial Commission.","-1776547326":"<0/><1/>If you reside in the UK and you are unhappy with our response you may escalate your complaint to the <2>Financial Ombudsman Service.","-2115348800":"1. Introduction","-744009523":"2. Fair treatment","-866831420":"3.1. Submission of a complaint","-1102904026":"3.2. Handling your complaint","-603378979":"3.3. Resolving your complaint","-697569974":"3.4. Your decision","-1280998762":"4. Complaints","-1886635232":"A complaint is any expression of dissatisfaction by a client regarding our products or services that requires a formal response.<0/><1/>If what you submit does not fall within the scope of a complaint, we may reclassify it as a query and forward it to the relevant department for handling. However, if you believe that your query should be classified as a complaint due to its relevance to the investment services provided by {{legal_entity_name}}, you may request that we reclassify it accordingly.","-1771496016":"To submit a complaint, please send an email to <0>complaints@deriv.com, providing as much detail as possible. To help us investigate and resolve your complaint more efficiently, please include the following information:","-1197243525":"<0>•A clear and detailed description of your complaint, including any relevant dates, times, and transactions","-1795134892":"<0>•Any relevant screenshots or supporting documentation that will assist us in understanding the issue","-2053887036":"4.4. Handling your complaint","-717170429":"Once we have received the details of your complaint, we shall review it carefully and keep you updated on the handling process. We might request further information or clarifications to facilitate the resolution of the complaint.","-1841922393":"4.5. Resolving your complaint","-1327119795":"4.6. Your decision","-2019654103":"If we are unable to resolve your complaint or you are not satisfied with the outcome, you can escalate your complaint to the Office of the Arbiter for Financial Services.<0/><1/><2>Filing complaints with the Office of the Arbiter for Financial Services","-687172857":"<0>•You may file a complaint with the Arbiter for Financial Services only if you are not satisfied with our decision or the decision wasn’t made within 15 business days.","-262934706":"<0>•If the complaint is accepted by the Arbiter, you will receive another email with further details relating to the payment of the €25 complaint fee and the processes that follow.","-993572476":"<0>b.The Financial Commission has 5 days to acknowledge that your complaint was received and 14 days to answer the complaint through our Internal Dispute Resolution (IDR) procedure.","-1769159081":"<0>c.You will be able to file a complaint with the Financial Commission only if you are not satisfied with our decision or the decision wasn’t made within 14 days.","-58307244":"3. Determination phase","-356618087":"<0>b.The DRC may request additional information from you or us, who must then provide the requested information within 7 days.","-945718602":"<0>b.If you agree with a DRC decision, you will need to accept it within 14 days. If you do not respond to the DRC decision within 14 days, the complaint is considered closed.","-1500907666":"<0>d.If the decision is made in our favour, you must provide a release for us within 7 days of when the decision is made, and the complaint will be considered closed.","-429248139":"5. Disclaimer","-818926350":"The Financial Commission accepts appeals for 45 days following the date of the incident and only after the trader has tried to resolve the issue with the company directly.","-1825471709":"A whole new trading experience on a powerful yet easy to use platform.","-981017278":"Automated trading at your fingertips. No coding needed.","-778309978":"The link you clicked has expired. Ensure to click the link in the latest email in your inbox. Alternatively, enter your email below and click <0>Resend email for a new link.","-336222114":"Follow these simple steps to fix it:","-1064116456":"Search for the broker <0>Deriv Holdings (Guernsey) Limited and select it.","-941870889":"The cashier is for real accounts only","-352838513":"It looks like you don’t have a real {{regulation}} account. To use the cashier, switch to your {{active_real_regulation}} real account, or get an {{regulation}} real account.","-1858915164":"Ready to deposit and trade for real?","-162753510":"Add real account","-1208519001":"You need a real Deriv account to access the cashier.","-175369516":"Welcome to Deriv X","-939154994":"Welcome to Deriv MT5 dashboard","-1667427537":"Run Deriv X on your browser or download the mobile app","-305915794":"Run MT5 from your browser or download the MT5 app for your devices","-404375367":"Trade forex, basket indices, commodities, and cryptocurrencies with high leverage.","-243985555":"Trade CFDs on forex, stocks, stock indices, synthetic indices, cryptocurrencies, and commodities with leverage.","-2030107144":"Trade CFDs on forex, stocks & stock indices, commodities, and crypto.","-705682181":"Malta","-409563066":"Regulator","-1302404116":"Maximum leverage","-2098459063":"British Virgin Islands","-1510474851":"British Virgin Islands Financial Services Commission (licence no. SIBA/L/18/1114)","-761250329":"Labuan Financial Services Authority (Licence no. MB/18/0024)","-1264604378":"Up to 1:1000","-1686150678":"Up to 1:100","-637908996":"100%","-1420548257":"20+","-1344709651":"40+","-1373949478":"50+","-1382029900":"70+","-1493055298":"90+","-523602297":"Forex majors","-1303090739":"Up to 1:1500","-19213603":"Metals","-1728334460":"Up to 1:300","-646902589":"(US_30, US_100, US_500)","-1835174654":"1:30","-1647612934":"Spreads from","-1587894214":"about verifications needed.","-466784048":"Regulator/EDR","-1920034143":"Synthetics, Baskets and Derived FX","-1326848138":"British Virgin Islands Financial Services Commission (License no. SIBA/L/18/1114)","-777580328":"Forex, Stocks, Stock indices, Commodities, and Cryptocurrencies","-1372141447":"Straight-through processing","-1969608084":"Forex and Cryptocurrencies","-800771713":"Labuan Financial Services Authority (licence no. MB/18/0024)","-1497128311":"80+","-1501230046":"0.6 pips","-1689815930":"You will need to submit proof of identity and address once you reach certain thresholds.","-1175785439":"Deriv (SVG) LLC (company no. 273 LLC 2020)","-235833244":"Synthetics, Forex, Stocks, Stock Indices, Cryptocurrencies, and ETFs","-139026353":"A selfie of yourself.","-70314394":"A recent utility bill (electricity, water or gas) or recent bank statement or government-issued letter with your name and address.","-435524000":"Verification failed. Resubmit during account creation.","-1385099152":"Your document is verified.","-931599668":"ETF","-651501076":"Derived - SVG","-865172869":"Financial - BVI","-1851765767":"Financial - Vanuatu","-558597854":"Financial - Labuan","-2052425142":"Swap-Free - SVG","-1192904361":"Deriv X Demo","-1269597956":"MT5 Platform","-239789243":"(License no. SIBA/L/18/1114)","-1434036215":"Demo Financial","-1416247163":"Financial STP","-1637969571":"Demo Swap-Free","-1882063886":"Demo CFDs","-1347908717":"Demo Financial SVG","-1780324582":"SVG","-785625598":"Use these credentials to log in to your {{platform}} account on the website and mobile apps.","-997127433":"Change Password","-860609405":"Password","-742647506":"Fund transfer","-1972393174":"Trade CFDs on our synthetics, baskets, and derived FX.","-1357917360":"Web terminal","-1454896285":"The MT5 desktop app is not supported by Windows XP, Windows 2003, and Windows Vista.","-810388996":"Download the Deriv X mobile app","-1727991510":"Scan the QR code to download the Deriv X Mobile App","-1769852749":"N/A","-511301450":"Indicates the availability of cryptocurrency trading on a particular account.","-1647569139":"Synthetics, Baskets, Derived FX, Forex: standard/micro, Stocks, Stock indices, Commodities, Cryptocurrencies","-2102641225":"At bank rollover, liquidity in the forex markets is reduced and may increase the spread and processing time for client orders. This happens around 21:00 GMT during daylight saving time, and 22:00 GMT non-daylight saving time.","-495364248":"Margin call and stop out level will change from time to time based on market condition.","-536189739":"To protect your portfolio from adverse market movements due to the market opening gap, we reserve the right to decrease leverage on all offered symbols for financial accounts before market close and increase it again after market open. Please make sure that you have enough funds available in your {{platform}} account to support your positions at all times.","-712681566":"Peer-to-peer exchange","-1267880283":"{{field_name}} is required","-2084509650":"{{field_name}} is not properly formatted.","-1580554423":"Trade CFDs on our synthetic indices that simulate real-world market movements.","-1385484963":"Confirm to change your {{platform}} password","-1990902270":"This will change the password to all of your {{platform}} accounts.","-1922462747":"Trader's hub","-700260448":"demo","-1769158315":"real","-2015785957":"Compare CFDs {{demo_title}} accounts","-673424733":"Demo account","-1986258847":"Server maintenance starts at 01:00 GMT every Sunday, and this process may take up to 2 hours to complete. Service may be disrupted during this time.","-1199152768":"Please explore our other platforms.","-205020823":"Explore {{platform_name_trader}}","-1982499699":"Explore {{platform_name_dbot}}","-1567989247":"Submit your proof of identity and address","-184453418":"Enter your {{platform}} password","-393388362":"We’re reviewing your documents. This should take about 1 to 3 days.","-790488576":"Forgot password?","-535365199":"Enter your {{platform}} password to add a {{platform_name}} {{account}} account.","-2057918502":"Hint: You may have entered your Deriv password, which is different from your {{platform}} password.","-1936102840":"Congratulations, you have successfully created your {{category}} <0>{{platform}} <1>{{type}} {{jurisdiction_selected_shortcode}} account. ","-1928229820":"Reset Deriv X investor password","-1087845020":"main","-1950683866":"investor","-1874242353":"Fund top up","-89838213":"You can top up your demo account with an additional <0> if your balance is <1> or less.","-1211122723":"{{ platform }} {{ account_title }} account","-78895143":"Current balance","-149993085":"New current balance","-490244964":"Forex, stocks, stock indices, cryptocurrencies","-1368041210":", synthetic indices","-877064208":"EUR","-1284221303":"You’ll get a warning, known as margin call, if your account balance drops down close to the stop out level.","-1848799829":"To understand stop out, first you need to learn about margin level, which is the ratio of your equity (the total balance you would have if you close all your positions at that point) to the margin you're using at the moment. If your margin level drops below our stop out level, your positions may be closed automatically to protect you from further losses.","-224051432":"24/7","-1318070255":"EUR/GBP","-70716111":"FX-majors (standard/micro lots), FX-minors, basket indices, commodities, cryptocurrencies, and stocks and stock indices","-1041629137":"FX-majors, FX-minors, FX-exotics, and cryptocurrencies","-287097947":"FX-majors (standard/micro lots), FX-minors, Commodities, Cryptocurrencies (except UK)","-2016975615":"Deriv MT5 CFDs real account","-1207265427":"Compare CFDs real accounts","-1225160479":"Compare available accounts","-266701451":"derivX wordmark","-2145356061":"Download Deriv X on your phone to trade with the Deriv X account","-251202291":"Broker","-81650212":"MetaTrader 5 web","-941636117":"MetaTrader 5 Linux app","-637537305":"Download {{ platform }} on your phone to trade with the {{ platform }} {{ account }} account","-678964540":"to","-206829624":"(1:x)","-616293830":"Enjoy dynamic leverage of <0>up to 1:1500 when trading selected instruments in the forex, commodities, cryptocurrencies, and stock indices markets. Our dynamic leverage adjusts automatically to your trading position, based on asset type and trading volume.","-2042845290":"Your investor password has been changed.","-1882295407":"Your password has been changed.","-254497873":"Use this password to grant viewing access to another user. While they may view your trading account, they will not be able to trade or take any other actions.","-161656683":"Current investor password","-374736923":"New investor password","-1793894323":"Create or reset investor password","-21438174":"Add your Deriv cTrader account under Deriv (SVG) LLC (company no. 273 LLC 2020).","-2026018074":"Add your Deriv MT5 <0>{{account_type_name}} account under Deriv (SVG) LLC (company no. 273 LLC 2020).","-162320753":"Add your Deriv MT5 <0>{{account_type_name}} account under Deriv (BVI) Ltd, regulated by the British Virgin Islands Financial Services Commission (License no. SIBA/L/18/1114).","-271828350":"Get more out of Deriv MT5 Financial","-2125860351":"Choose a jurisdiction for your Deriv MT5 CFDs account","-450424792":"You need a real account (fiat currency or cryptocurrency) in Deriv to create a real Deriv MT5 account.","-1760596315":"Create a Deriv account","-525896186":"Download Deriv GO on your phone to trade with the Deriv EZ account","-1547458328":"Run cTrader on your browser","-648956272":"Use this password to log in to your Deriv X accounts on the web and mobile apps.","-1814308691":"Please click on the link in the email to change your {{platform}} password.","-35790392":"Scan the QR code to download {{Deriv}} {{ platform }}.","-1282933308":"Not {{barrier}}","-968190634":"Equals {{barrier}}","-1747377543":"Under {{barrier}}","-256210543":"Trading is unavailable at this time.","-1150099396":"We’re working to have this available for you soon. If you have another account, switch to that account to continue trading. You may add a Deriv MT5 Financial.","-28115241":"{{platform_name_trader}} is not available for this account","-453920758":"Go to {{platform_name_mt5}} dashboard","-402175529":"History","-902712434":"Deal cancellation","-988484646":"Deal cancellation (executed)","-444882676":"Deal cancellation (active)","-13423018":"Reference ID","-2035315547":"Low barrier","-1551639437":"No history","-1214703885":"You have yet to update either take profit or stop loss","-504849554":"It will reopen at","-59803288":"In the meantime, try our synthetic indices. They simulate real-market volatility and are open 24/7.","-1278109940":"See open markets","-694105443":"This market is closed","-1043795232":"Recent positions","-1511825574":"Profit/Loss:","-726626679":"Potential profit/loss:","-338379841":"Indicative price:","-1572796316":"Purchase price:","-447037544":"Buy price:","-1694314813":"Contract value:","-153220091":"{{display_value}} Tick","-802374032":"Hour","-2039780875":"Purchase confirmation","-1672470173":"Require confirmation before purchasing a contract","-1342661765":"Lock contract purchase buttons","-1382749084":"Go back to trading","-1231210510":"Tick","-1239477911":"second","-1585766960":"min","-1652791614":"mins","-1977959027":"hours","-442488432":"day","-337314714":"days","-8998663":"Digit: {{last_digit}} ","-1435392215":"About deal cancellation","-2017825013":"Got it","-1192773792":"Don't show this again","-1280319153":"Cancel your trade anytime within a chosen time-frame. Triggered automatically if your trade reaches the stop out level within the chosen time-frame.","-471757681":"Risk management","-843831637":"Stop loss","-771725194":"Deal Cancellation","-338707425":"Minimum duration is 1 day","-1003473648":"Duration: {{duration}} day","-740702998":"<0>{{title}} {{message}}","-1669741470":"The payout at expiry is equal to the payout per point multiplied by the difference between the final price and the strike price.","-1527492178":"Purchase Locked","-725375562":"You can lock/unlock the purchase button from the Settings menu","-774638412":"Stake must be between {{min_stake}} {{currency}} and {{max_stake}} {{currency}}","-1358367903":"Stake","-434270664":"Current Price","-1956787775":"Barrier Price:","-1513281069":"Barrier 2","-390994177":"Should be between {{min}} and {{max}}","-1804019534":"Expiry: {{date}}","-2055106024":"Toggle between advanced and simple duration settings","-1012793015":"End time","-2037881712":"Your contract will be closed automatically at the next available asset price on <0>.","-629549519":"Commission <0/>","-2131859340":"Stop out <0/>","-1686280757":"<0>{{commission_percentage}}% of (<1/> * {{multiplier}})","-1043117679":"When your current loss equals or exceeds {{stop_out_percentage}}% of your stake, your contract will be closed at the nearest available asset price.","-339236213":"Multiplier","-2131851017":"Growth rate","-1763848396":"Put","-194424366":"above","-857660728":"Strike Prices","-1386326276":"Barrier is a required field.","-1418742026":"Higher barrier must be higher than lower barrier.","-92007689":"Lower barrier must be lower than higher barrier.","-1095538960":"Please enter the start time in the format \"HH:MM\".","-1975910372":"Minute must be between 0 and 59.","-866277689":"Expiry time cannot be in the past.","-1455298001":"Now","-439389714":"We’re working on it","-770929448":"Go to {{platform_name_smarttrader}}","-347156282":"Submit Proof","-138538812":"Log in or create a free account to place a trade.","-2036388794":"Create free account","-1813736037":"No further trading is allowed on this contract type for the current trading session. For more info, refer to our <0>terms and conditions.","-590131162":"Stay on {{website_domain}}","-1444663817":"Go to Binary.com","-1526466612":"You’ve selected a trade type that is currently unsupported, but we’re working on it.","-1738427539":"Purchase","-1937372493":"You can close your trade anytime. However, be aware of <0>slippage risk<0/>.","-1392065699":"If you select \"Rise\", you win the payout if the exit spot is strictly higher than the entry spot.","-1762566006":"If you select \"Fall\", you win the payout if the exit spot is strictly lower than the entry spot.","-1435306976":"If you select \"Allow equals\", you win the payout if exit spot is higher than or equal to entry spot for \"Rise\". Similarly, you win the payout if exit spot is lower than or equal to entry spot for \"Fall\".","-1959473569":"If you select \"Lower\", you win the payout if the exit spot is strictly lower than the barrier.","-1350745673":"If the exit spot is equal to the barrier, you don't win the payout.","-2089488446":"If you select \"Ends Between\", you win the payout if the exit spot is strictly higher than the Low barrier AND strictly lower than the High barrier.","-1876950330":"If you select \"Ends Outside\", you win the payout if the exit spot is EITHER strictly higher than the High barrier, OR strictly lower than the Low barrier.","-546460677":"If the exit spot is equal to either the Low barrier or the High barrier, you don't win the payout.","-1812957362":"If you select \"Stays Between\", you win the payout if the market stays between (does not touch) either the High barrier or the Low barrier at any time during the contract period","-220379757":"If you select \"Goes Outside\", you win the payout if the market touches either the High barrier or the Low barrier at any time during the contract period.","-1281286610":"If you select \"Matches\", you will win the payout if the last digit of the last tick is the same as your prediction.","-1929209278":"If you select \"Even\", you will win the payout if the last digit of the last tick is an even number (i.e., 2, 4, 6, 8, or 0).","-2038865615":"If you select \"Odd\", you will win the payout if the last digit of the last tick is an odd number (i.e., 1, 3, 5, 7, or 9).","-1416078023":"If you select \"Touch\", you win the payout if the market touches the barrier at any time during the contract period.","-1272255095":"If the exit spot is equal to the barrier or the new barrier (if a reset occurs), you don't win the payout.","-231957809":"Win maximum payout if the exit spot is higher than or equal to the upper barrier.","-464144986":"Win maximum payout if the exit spot is lower than or equal to the lower barrier.","-1031456093":"Win up to maximum payout if exit spot is between lower and upper barrier, in proportion to the difference between upper barrier and exit spot.","-968162707":"No payout if exit spot is above or equal to the upper barrier.","-299450697":"If you select \"High Tick\", you win the payout if the selected tick is the highest among the next five ticks.","-705681870":"By purchasing the \"High-to-Low\" contract, you'll win the multiplier times the difference between the high and low over the duration of the contract.","-420387848":"The high is the highest point ever reached by the market during the contract period.","-1666375348":"By purchasing the \"High-to-Close\" contract, you'll win the multiplier times the difference between the high and close over the duration of the contract.","-2024955268":"If you select “Up”, you will earn a profit by closing your position when the market price is higher than the entry spot.","-1598433845":"If you select “Down”, you will earn a profit by closing your position when the market price is lower than the entry spot.","-885323297":"These are optional parameters for each position that you open:","-584696680":"If you select “Take profit” and specify an amount that you’d like to earn, your position will be closed automatically when your profit is more than or equals to this amount. Your profit may be more than the amount you entered depending on the market price at closing.","-1192494358":"If you select “Deal cancellation”, you’ll be able to cancel your trade within a chosen time frame should the market move against your favour. We’ll charge a small fee for this, but we’ll return your stake amount without profit or loss. If the stop-out amount is reached before the deal cancellation expires, your position will be cancelled automatically and we’ll return your stake amount without profit or loss.","-178096090":"“Take profit” cannot be updated. You may update it only when “Deal cancellation” expires.","-206909651":"The entry spot is the market price when your contract is processed by our servers.","-1576967286":"This product allows you to express a strong bullish or bearish view on an underlying asset.","-610471235":"If you think the market price will rise continuously for a specific period, choose <0>Long. You will get a payout at the expiry time if the market price doesn’t touch or cross below the barrier. Your payout will grow proportionally to the distance between the market price and the barrier if the barrier is not breached. You will start making a profit when the payout is higher than your stake. If the market price ever crosses the barrier, there won’t be a payout.","-454245976":"If you think the market price will drop continuously for a specific period, choose <0>Short. You will get a payout at the expiry time if the market price doesn’t touch or cross above the barrier. Your payout will grow proportionally to the distance between the market price and the barrier if the barrier is not breached. You will start making a profit when the payout is higher than your stake. If the market price ever crosses the barrier, there won’t be a payout.","-351875097":"Number of ticks","-729830082":"View less","-1790089996":"NEW!","-993480898":"Accumulators","-45873457":"NEW","-1422269966":"You can choose a growth rate with values of 1%, 2%, 3%, 4%, and 5%.","-1186791513":"Payout is the sum of your initial stake and profit.","-1682624802":"It is a percentage of the previous spot price. The percentage rate is based on your choice of the index and the growth rate.","-1221049974":"Final price","-1247327943":"This is the spot price of the last tick at expiry.","-878534036":"If you select \"Call\", you’ll earn a payout if the final price is above the strike price at expiry. Otherwise, you won’t receive a payout.","-1587076792":"If you select \"Put\", you’ll earn a payout if the final price is below the strike price at expiry. Otherwise, you won’t receive a payout.","-1482134885":"We calculate this based on the strike price and duration you’ve selected.","-1890561510":"Cut-off time","-565990678":"Your contract will expire on this date (in GMT), based on the End time you’ve selected.","-127118348":"Choose {{contract_type}}","-543478618":"Try checking your spelling or use a different term","-700280380":"Deal cancel. fee","-542594338":"Max. payout","-690963898":"Your contract will be automatically closed when your payout reaches this amount.","-511541916":"Your contract will be automatically closed upon reaching this number of ticks.","-438655760":"<0>Note: You can close your trade anytime. Be aware of slippage risk.","-1683683754":"Long","-1046859144":"<0>{{title}} You will get a payout if the market price stays {{price_position}} and doesn't touch or cross the barrier. Otherwise, your payout will be zero.","-1815023694":"above the barrier","-243332856":"Last digit stats for latest 1000 ticks for {{ underlying_name }}","-1572548510":"Ups & Downs","-71301554":"Ins & Outs","-952298801":"Look Backs","-763273340":"Digits","-461955353":"purchase price","-172348735":"profit","-1624674721":"contract type","-1644154369":"entry spot time","-510792478":"entry spot price","-1974651308":"exit spot time","-1600267387":"exit spot price","-514917720":"barrier","-1072292603":"No Change","-1631669591":"string","-1768939692":"number","-795152863":"green","-1640576332":"blue","-804983649":"yellow","-94281841":"red","-1242470654":"Earned money","-841561409":"Put Spread","-1429914047":"Low","-1893628957":"Open Time","-1896106455":"10 minutes","-999492762":"15 minutes","-1978767852":"30 minutes","-293628675":"1 hour","-385604445":"2 hours","-1965813351":"4 hours","-525321833":"1 day","-1691868913":"Touch/No Touch","-151151292":"Asians","-1048378719":"Reset Call/Reset Put","-1282312809":"High/Low Ticks","-1237186896":"Only Ups/Only Downs","-529846150":"Seconds","-1635771697":"middle","-1529389221":"Histogram","-1819860668":"MACD","-1750896349":"D'Alembert","-102980621":"The Oscar's Grind Strategy is a low-risk positive progression strategy that first appeared in 1965. By using this strategy, the size of your contract will increase after successful trades, but remains unchanged after unsuccessful trades.","-462715374":"Untitled Bot","-2002533437":"Custom function","-215053350":"with:","-1257232389":"Specify a parameter name:","-1885742588":"with: ","-188442606":"function {{ function_name }} {{ function_params }} {{ dummy }}","-313112159":"This block is similar to the one above, except that this returns a value. The returned value can be assigned to a variable of your choice.","-1783320173":"Prematurely returns a value within a function","-1485521724":"Conditional return","-1482801393":"return","-46453136":"get","-1838027177":"first","-1182568049":"Get list item","-1675454867":"This block gives you the value of a specific item in a list, given the position of the item. It can also remove the item from the list.","-381501912":"This block creates a list of items from an existing list, using specific item positions.","-426766796":"Get sub-list","-1679267387":"in list {{ input_list }} find {{ first_or_last }} occurence of item {{ input_value }}","-2087996855":"This block gives you the position of an item in a given list.","-422008824":"Checks if a given list is empty","-1343887675":"This block checks if a given list is empty. It returns “True” if the list is empty, “False” if otherwise.","-1548407578":"length of {{ input_list }}","-1786976254":"This block gives you the total number of items in a given list.","-2113424060":"create list with item {{ input_item }} repeated {{ number }} times","-1955149944":"Repeat an item","-434887204":"set","-197957473":"as","-851591741":"Set list item","-1874774866":"ascending","-1457178757":"Sorts the items in a given list","-350986785":"Sort list","-324118987":"make text from list","-155065324":"This block creates a list from a given string of text, splitting it with the given delimiter. It can also join items in a list into a string of text.","-459051222":"Create list from text","-977241741":"List Statement","-451425933":"{{ break_or_continue }} of loop","-323735484":"continue with next iteration","-1592513697":"Break out/continue","-713658317":"for each item {{ variable }} in list {{ input_list }}","-1825658540":"Iterates through a given list","-952264826":"repeat {{ number }} times","-887757135":"Repeat (2)","-1608672233":"This block is similar to the block above, except that the number of times it repeats is determined by a given variable.","-533154446":"Repeat (1)","-1059826179":"while","-1893063293":"until","-279445533":"Repeat While/Until","-1003706492":"User-defined variable","-359097473":"set {{ variable }} to {{ value }}","-1588521055":"Sets variable value","-980448436":"Set variable","-1538570345":"Get the last trade information and result, then trade again.","-222725327":"Here is where you can decide if your bot should continue trading.","-1638446329":"Result is {{ win_or_loss }}","-1968029988":"Last trade result","-1588406981":"You can check the result of the last trade with this block.","-1459154781":"Contract Details: {{ contract_detail }}","-1652241017":"Reads a selected property from contract details list","-985351204":"Trade again","-2082345383":"These blocks transfer control to the Purchase conditions block.","-172574065":"This block will transfer the control back to the Purchase conditions block, enabling you to purchase another contract.","-403103225":"restart","-837044282":"Ask Price {{ contract_type }}","-1033917049":"This block returns the purchase price for the selected trade type.","-1863737684":"2. Purchase conditions","-228133740":"Specify contract type and purchase conditions.","-1098726473":"This block is mandatory. Only one copy of this block is allowed. You can place the Purchase block (see below) here as well as conditional blocks to define your purchase conditions.","-1777988407":"Payout {{ contract_type }}","-511116341":"This block returns the potential payout for the selected trade type","-1943211857":"Potential payout","-813464969":"buy","-53668380":"True if active contract can be sold before expiration at current market price","-43337012":"Sell profit/loss","-2112866691":"Returns the profit/loss from selling at market price","-2132417588":"This block gives you the potential profit or loss if you decide to sell your contract.","-1360483055":"set {{ variable }} to Bollinger Bands {{ band_type }} {{ dummy }}","-20542296":"Calculates Bollinger Bands (BB) from a list with a period","-1951109427":"Bollinger Bands (BB)","-857226052":"BB is a technical analysis indicator that’s commonly used by traders. The idea behind BB is that the market price stays within the upper and lower bands for 95% of the time. The bands are the standard deviations of the market price, while the line in the middle is a simple moving average line. If the price reaches either the upper or lower band, there’s a possibility of a trend reversal.","-325196350":"set {{ variable }} to Bollinger Bands Array {{ band_type }} {{ dummy }}","-199689794":"Similar to BB. This block gives you a choice of returning the values of either the lower band, higher band, or the SMA line in the middle.","-920690791":"Calculates Exponential Moving Average (EMA) from a list with a period","-960641587":"EMA is a type of moving average that places more significance on the most recent data points. It’s also known as the exponentially weighted moving average. EMA is different from SMA in that it reacts more significantly to recent price changes.","-1557584784":"set {{ variable }} to Exponential Moving Average Array {{ dummy }}","-32333344":"Calculates Moving Average Convergence Divergence (MACD) from a list","-628573413":"MACD is calculated by subtracting the long-term EMA (26 periods) from the short-term EMA (12 periods). If the short-term EMA is greater or lower than the long-term EMA than there’s a possibility of a trend reversal.","-1133676960":"Fast EMA Period {{ input_number }}","-883166598":"Period {{ input_period }}","-450311772":"set {{ variable }} to Relative Strength Index {{ dummy }}","-1861493523":"Calculates Relative Strength Index (RSI) list from a list of values with a period","-880048629":"Calculates Simple Moving Average (SMA) from a list with a period","-1150972084":"Market direction","-276935417":"This block is used to determine if the market price moves in the selected direction or not. It gives you a value of “True” or “False”.","-764931948":"in candle list get # from end {{ input_number }}","-924607337":"Returns the last digit of the latest tick","-560033550":"Returns the list of last digits of 1000 recent tick values","-74062476":"Make a List of {{ candle_property }} values in candles list with interval: {{ candle_interval_type }}","-1556495906":"Returns a list of specific values from a candle list according to selected time interval","-166816850":"Create a list of candle values (1)","-1261436901":"Candles List","-1174859923":"Read the selected candle value","-1972165119":"Read candle value (1)","-1956100732":"You can use this block to analyze the ticks, regardless of your trades","-443243232":"The content of this block is called on every tick. Place this block outside of any root block.","-641399277":"Last Tick","-1628954567":"Returns the value of the last tick","-1332756793":"This block gives you the value of the last tick.","-2134440920":"Last Tick String","-1466340125":"Tick value","-467913286":"Tick value Description","-785831237":"This block gives you a list of the last 1000 tick values.","-1546430304":"Tick List String Description","-1788626968":"Returns \"True\" if the given candle is black","-436010611":"Make a list of {{ candle_property }} values from candles list {{ candle_list }}","-1384340453":"Returns a list of specific values from a given candle list","-584859539":"Create a list of candle values (2)","-2010558323":"Read {{ candle_property }} value in candle {{ input_candle }}","-2846417":"This block gives you the selected candle value.","-1587644990":"Read candle value (2)","-1202212732":"This block returns account balance","-1737837036":"Account balance","-1963883840":"Put your blocks in here to prevent them from being removed","-1284013334":"Use this block if you want some instructions to be ignored when your bot runs. Instructions within this block won’t be executed.","-1217253851":"Log","-1987568069":"Warn","-104925654":"Console","-1956819233":"This block displays messages in the developer's console with an input that can be either a string of text, a number, boolean, or an array of data.","-1450461842":"Load block from URL: {{ input_url }}","-1088614441":"Loads blocks from URL","-1747943728":"Loads from URL","-2105753391":"Notify Telegram {{ dummy }} Access Token: {{ input_access_token }} Chat ID: {{ input_chat_id }} Message: {{ input_message }}","-1008209188":"Sends a message to Telegram","-1218671372":"Displays a notification and optionally play selected sound","-2099284639":"This block gives you the total profit/loss of your trading strategy since your bot started running. You can reset this by clicking “Clear stats” on the Transaction Stats window, or by refreshing this page in your browser.","-683825404":"Total Profit String","-718220730":"Total Profit String Description","-1861858493":"Number of runs","-264195345":"Returns the number of runs","-303451917":"This block gives you the total number of times your bot has run. You can reset this by clicking “Clear stats” on the Transaction Stats window, or by refreshing this page in your browser.","-2132861129":"Conversion Helper Block","-74095551":"Seconds Since Epoch","-15528039":"Returns the number of seconds since January 1st, 1970","-729807788":"This block returns the number of seconds since January 1st, 1970.","-1370107306":"{{ dummy }} {{ stack_input }} Run after {{ number }} second(s)","-558838192":"Delayed run","-1975250999":"This block converts the number of seconds since the Unix Epoch (1 January 1970) into a string of text representing the date and time.","-702370957":"Convert to date/time","-982729677":"Convert to timestamp","-311268215":"This block converts a string of text that represents the date and time into seconds since the Unix Epoch (1 January 1970). The time and time zone offset are optional. Example: 2019-01-01 21:03:45 GMT+0800 will be converted to 1546347825.","-1797602591":"Stop Loss: {{ currency }} {{ stop_loss }}","-1374685318":"Your contract is closed automatically when your loss is more than or equals to this amount. This block can only be used with the multipliers trade type.","-1214929127":"Stop loss must be a positive number.","-780745489":"If the contract type is “Both”, then the Purchase Conditions should include both Rise and Fall using the “Conditional Block\"","-2142851225":"Multiplier trade options","-625636913":"Amount must be a positive number.","-1466383897":"Duration: {{ duration_unit }} {{ duration_value }}","-440702280":"Trade options","-1193894978":"Define your trade options such as duration and stake. Some options are only applicable for certain trade types.","-46523443":"Duration value is not allowed. To run the bot, please enter a value between {{min}} to {{max}}.","-1483427522":"Trade Type: {{ trade_type_category }} > {{ trade_type }}","-323348124":"1. Trade parameters","-1671903503":"Run once at start:","-783173909":"Trade options:","-376956832":"Here is where you define the parameters of your contract.","-1244007240":"if {{ condition }} then","-1577206704":"else if","-33796979":"true","-1434883449":"This is a single block that returns a boolean value, either true or false.","-1946404450":"Compares two values","-979918560":"This block converts the boolean value (true or false) to its opposite.","-2047257743":"Null","-1274387519":"Performs selected logic operation","-766386234":"This block performs the \"AND\" or the \"OR\" logic operation.","-790995537":"test {{ condition }}","-1860211657":"if false {{ return_value }}","-1643760249":"This block tests if a given value is true or false and returns “True” or “False” accordingly.","-1551875333":"Test value","-52486882":"Arithmetical operations","-1010436425":"This block adds the given number to the selected variable","-999773703":"Change variable","-1272091683":"Mathematical constants","-1396629894":"constrain {{ number }} low {{ low_number }} high {{ high_number }}","-425224412":"This block constrains a given number so that it is within a set range.","-2072551067":"Constrain within a range","-43523220":"remainder of {{ number1 }} ÷ {{ number2 }}","-1291857083":"Returns the remainder after a division","-592154850":"Remainder after division","-736665095":"Returns the remainder after the division of the given numbers.","-1266992960":"Math Number Description","-77191651":"{{ number }} is {{ type }}","-817881230":"even","-142319891":"odd","-1000789681":"whole","-1735674752":"Test a number","-1017805068":"This block tests a given number according to the selection and it returns a value of “True” or “False”. Available options: Even, Odd, Prime, Whole, Positive, Negative, Divisible","-1858332062":"Number","-1053492479":"Enter an integer or fractional number into this block. Please use `.` as a decimal separator for fractional numbers.","-927097011":"sum","-1653202295":"max","-1555878023":"average","-1748351061":"mode","-992067330":"Aggregate operations","-1691561447":"This block gives you a random fraction between 0.0 to 1.0","-523625686":"Random fraction number","-933024508":"Rounds a given number to an integer","-1656927862":"This block rounds a given number according to the selection: round, round up, round down.","-1495304618":"absolute","-61210477":"Operations on a given number","-181644914":"This block performs the selected operations to a given number.","-840732999":"to {{ variable }} append text {{ input_text }}","-1469497908":"Appends a given text to a variable","-1851366276":"Text Append","-1666316828":"Appends a given text to a variable.","-1902332770":"Transform {{ input_text }} to {{ transform_type }}","-1489004405":"Title Case","-904432685":"Changes text case accordingly","-882381096":"letter #","-1027605069":"letter # from end","-2066990284":"random letter","-337089610":"in text {{ input_text1 }} find {{ first_or_last }} occurence of text {{ input_text2 }}","-1966694141":"Searches through a string of text for a specific occurrence of a given character or word, and returns the position.","-697543841":"Text join","-141160667":"length of {{ input_text }}","-1133072029":"Text String Length","-1109723338":"print {{ input_text }}","-736668830":"Print","-1821552998":"trim spaces from {{ side }} of {{ input_text }}","-801766026":"right side","-474779821":"Trims spaces","-1687036846":"Download block","-1266781295":"Expand","-894560707":"function","-1867119688":"Duplicate","-610728049":"Rearrange Vertically","-2033146714":"Collapse All Blocks","-958601558":"Delete Block","-1193267384":"Detach Block","-1750478127":"New variable name","-1061878051":"Y","-2047029150":"Unable to load the block file.","-1410769167":"Target must be an XML file","-609157479":"This URL is already loaded","-241945454":"Proposals are not ready","-1087890592":"Maximum loss amount reached","-1030545878":"You are rate limited for: {{ message_type }}, retrying in {{ delay }}s (ID: {{ request }})","-490766438":"You are disconnected, retrying in {{ delay }}s","-1389975609":"unknown","-1900515692":"Duration must be a positive integer","-245297595":"Please login","-1445046468":"Given candle is not valid","-1891622945":"{{hourPast}}h ago","-1919680487":"workspace","-1703118772":"The {{block_type}} block is misplaced from {{missing_space}}.","-1785726890":"purchase conditions","-538215347":"Net deposits","-280147477":"All transactions","-137444201":"Buy","-130601012":"Please select duration","-232254547":"Custom","-1577570698":"Start date","-1251526905":"Last 7 days","-1904030160":"Transaction performed by (App ID: {{app_id}})","-513103225":"Transaction time","-2066666313":"Credit/Debit","-1981004241":"Sell time","-600828210":"Indicative profit/loss","-706219815":"Indicative price","-3423966":"Take profit<0 />Stop loss","-2082644096":"Current stake","-1131753095":"The {{trade_type_name}} contract details aren't currently available. We're working on making them available soon.","-360975483":"You've made no transactions of this type during this period.","-1226595254":"Turbos","-922253974":"Rise/Fall","-1361254291":"Higher/Lower","-335816381":"Ends In/Ends Out","-1789807039":"Asian Up/Asian Down","-330437517":"Matches/Differs","-657360193":"Over/Under","-558031309":"High Tick/Low Tick","-123659792":"Vanillas","-113940416":"Current stake:","-1999539705":"Deal cancel. fee:","-155989831":"Decrement value","-1167474366":"Tick ","-2027409966":"Initial stake:","-1525144993":"Payout limit:","-1669418686":"AUD/CAD","-1548588249":"AUD/CHF","-1552890620":"AUD/JPY","-681231560":"AUD/PLN","-64938413":"AUD/USD","-1430522808":"EUR/AUD","-2020477069":"EUR/CAD","-1201853162":"EUR/CHF","-1197505739":"EUR/JPY","-405907358":"EUR/USD","-1536293064":"NZD/JPY","-79700881":"NZD/USD","-642323838":"USD/CAD","-428199705":"USD/CHF","-424108348":"USD/JPY","-548255282":"USD/NOK","-1834131208":"USD/PLN","-524302516":"Silver/USD","-764731776":"Platinum/USD","-853582174":"France 40","-1096386695":"UK 100","-617646862":"Germany 40","-2077690248":"Japan 225","-512194910":"US Tech 100","-381746202":"US 500","-1935463381":"Swiss 20","-1941767726":"Euro 50","-1925264914":"Volatility 25 Index","-708579504":"Volatility 50 Index","-975255670":"Volatility 75 Index","-1736314513":"Crash 300 Index","-342128411":"Crash 500 Index","-9704319":"Crash 1000 Index","-465860988":"Bull Market Index","-390528194":"Step Index","-280323742":"EUR Basket","-563812039":"Volatility 10 (1s) Index","-764111252":"Volatility 100 (1s) Index","-816110209":"Volatility 150 (1s) Index","-1374309449":"Volatility 200 (1s) Index","-1288044380":"Volatility 250 (1s) Index","-1164978320":"Jump 10 Index","-575272887":"BCH/USD","-295406873":"BTC/ETH","-1713556301":"ZMR/USD","-2046638412":"XRP/USD","-1263203461":"BTC/USD","-1112522776":"DSH/USD","-460689370":"LTC/USD","-1715390759":"I want to do this later","-2092611555":"Sorry, this app is unavailable in your current location.","-1488537825":"If you have an account, log in to continue.","-1603581277":"minutes","-1714959941":"This chart display is not ideal for tick contracts","-1254554534":"Please change the chart duration to tick for a better trading experience.","-1658230823":"Contract was sold for <0 />.","-1905867404":"Contract cancelled"} \ No newline at end of file +{"0":"","1014140":"You may also call <0>+447723580049 to place your complaint.","1485191":"1:1000","2091451":"Deriv Bot - your automated trading partner","3125515":"Your Deriv MT5 password is for logging in to your Deriv MT5 accounts on the desktop, web, and mobile apps.","3215342":"Last 30 days","3420069":"To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your identity document.","7100308":"Hour must be between 0 and 23.","9488203":"Deriv Bot is a web-based strategy builder for trading digital options. It’s a platform where you can build your own automated trading bot using drag-and-drop 'blocks'.","11539750":"set {{ variable }} to Relative Strength Index Array {{ dummy }}","11872052":"Yes, I'll come back later","14365404":"Request failed for: {{ message_type }}, retrying in {{ delay }}s","15377251":"Profit amount: {{profit}}","17843034":"Check proof of identity document verification status","19424289":"Username","19552684":"USD Basket","21035405":"Please tell us why you’re leaving. (Select up to {{ allowed_reasons }} reasons.)","24900606":"Gold Basket","25854018":"This block displays messages in the developer’s console with an input that can be either a string of text, a number, boolean, or an array of data.","26566655":"Summary","26596220":"Finance","27582767":"{{amount}} {{currency}}","27731356":"Your account is temporarily disabled. Please contact us via <0>live chat to enable deposits and withdrawals again.","27830635":"Deriv (V) Ltd","28581045":"Add a real MT5 account","33433576":"Please use an e-wallet to withdraw your funds.","35089987":"Upload the front and back of your driving licence.","41737927":"Thank you","44877997":"Residence permit","45453595":"Binary Coin","45941470":"Where would you like to start?","46523711":"Your proof of identity is verified","49404821":"If you buy a \"<0>{{trade_type}}\" option, you receive a payout at expiry if the final price is {{payout_status}} the strike price. Otherwise, your “<0>{{trade_type}}” option will expire worthless.","50200731":"FX majors (standard/micro lots), FX minors, basket indices, commodities, and cryptocurrencies","53801223":"Hong Kong 50","53964766":"5. Hit Save to download your bot. You can choose to download your bot to your device or your Google Drive.","54185751":"Less than $100,000","55340304":"Keep your current contract?","55916349":"All","56764670":"Deriv Bot will not proceed with any new trades. Any ongoing trades will be completed by our system. Any unsaved changes will be lost.<0>Note: Please check your statement to view completed transactions.","58254854":"Scopes","59169515":"If you select \"Asian Rise\", you will win the payout if the last tick is higher than the average of the ticks.","59341501":"Unrecognized file format","59662816":"Stated limits are subject to change without prior notice.","62748351":"List Length","63869411":"This block tests a given number according to the selection","64402604":"Check transfer information","65185694":"Fiat onramp","65982042":"Total","66519591":"Investor password","67923436":"No, Deriv Bot will stop running when your web browser is closed.","68885999":"Repeats the previous trade when an error is encountered.","69005593":"The example below restarts trading after 30 or more seconds after 1 minute candle was started.","71016232":"OMG/USD","71445658":"Open","71563326":"A fast and secure fiat-to-crypto payment service. Deposit cryptocurrencies from anywhere in the world using your credit/debit cards and bank transfers.","71853457":"$100,001 - $500,000","72500774":"Please fill in Tax residence.","73086872":"You have self-excluded from trading","73326375":"The low is the lowest point ever reached by the market during the contract period.","74963864":"Under","76916358":"You have reached the withdrawal limit.<0/>Please upload your proof of identity and address to lift the limit to continue your withdrawal.","76925355":"Check your bot’s performance","77945356":"Trade on the go with our mobile app.","77982950":"Vanilla options allow you to predict an upward (bullish) or downward (bearish) direction of the underlying asset by purchasing a \"Call\" or a \"Put\".","81450871":"We couldn’t find that page","82839270":"Upload the page of your passport that contains your photo.","83202647":"Collapse Block","84402478":"Where do I find the blocks I need?","85343079":"Financial assessment","85359122":"40 or more","85389154":"Steps required to continue verification on your mobile","89062902":"Trade on MT5","90266322":"2. Start a chat with your newly created Telegram bot and make sure to send it some messages before proceeding to the next step. (e.g. Hello Bot!)","91993812":"The Martingale Strategy is a classic trading technique that has been used for more than a hundred years, popularised by the French mathematician Paul Pierre Levy in the 18th century.","93154671":"1. Hit Reset at the bottom of stats panel.","96381225":"ID verification failed","98473502":"We’re not obliged to conduct an appropriateness test, nor provide you with any risk warnings.","98972777":"random item","100239694":"Upload front of card from your computer","102226908":"Field cannot be empty","108916570":"Duration: {{duration}} days","109073671":"Please use an e-wallet that you have used for deposits previously. Ensure the e-wallet supports withdrawal. See the list of e-wallets that support withdrawals <0>here.","111215238":"Move away from direct light","111718006":"End date","111931529":"Max. total stake over 7 days","113378532":"ETH/USD","115032488":"Buy price and P/L","116005488":"Indicators","117056711":"We’re updating our site","117318539":"Password should have lower and uppercase English letters with numbers.","118158064":"2. Use a logic block to check if current profit/loss exceeds maximum loss. If it does, set trade again to false to prevent the bot from running another cycle.","118586231":"Document number (identity card, passport)","119261701":"Prediction:","119446122":"Contract type is not selected","120340777":"Complete your personal details","123454801":"{{withdraw_amount}} {{currency_symbol}}","124723298":"Upload a proof of address to verify your address","125443840":"6. Restart last trade on error","127307725":"A politically exposed person (PEP) is someone appointed with a prominent public position. Close associates and family members of a PEP are also considered to be PEPs.","129729742":"Tax Identification Number*","130567238":"THEN","132596476":"In providing our services to you, we are required to ask you for some information to assess if a given product or service is appropriate for you and whether you have the experience and knowledge to understand the risks involved.<0/><0/>","132689841":"Trade on web terminal","133284316":"Supported formats: JPEG, JPG, PNG, PDF and GIF only","133523018":"Please go to the Deposit page to get an address.","133536621":"and","133655768":"Note: If you wish to learn more about the Bot Builder, you can proceed to the <0>Tutorials tab.","139454343":"Confirm my limits","141265840":"Funds transfer information","141626595":"Make sure your device has a working camera","142050447":"set {{ variable }} to create text with","142390699":"Connected to your mobile","143970826":"Payment problems?","145146541":"Our accounts and services are unavailable for the Jersey postal code","145736466":"Take a selfie","149616444":"cTrader Demo","150486954":"Token name","151344063":"The exit spot is the market price when the contract is closed.","151646545":"Unable to read file {{name}}","152415091":"Math","152524253":"Trade the world’s markets with our popular user-friendly platform.","154545319":"Country of residence is where you currently live.","157593038":"random integer from {{ start_number }} to {{ end_number }}","157871994":"Link expired","158355408":"Some services may be temporarily unavailable.","160746023":"Tether as an Omni token (USDT) is a version of Tether that is hosted on the Omni layer on the Bitcoin blockchain.","160863687":"Camera not detected","164112826":"This block allows you to load blocks from a URL if you have them stored on a remote server, and they will be loaded only when your bot runs.","164564432":"Deposits are temporarily unavailable due to system maintenance. You can make your deposits when the maintenance is complete.","165294347":"Please set your country of residence in your account settings to access the cashier.","165312615":"Continue on phone","165682516":"If you don’t mind sharing, which other trading platforms do you use?","170185684":"Ignore","170244199":"I’m closing my account for other reasons.","171307423":"Recovery","171579918":"Go to Self-exclusion","171638706":"Variables","173991459":"We’re sending your request to the blockchain.","174793462":"Strike","176078831":"Added","176319758":"Max. total stake over 30 days","176327749":"- Android: Tap the account, open <0>Options, and tap <0>Delete.","176654019":"$100,000 - $250,000","177099483":"Your address verification is pending, and we’ve placed some restrictions on your account. The restrictions will be lifted once your address is verified.","178413314":"First name should be between 2 and 50 characters.","179083332":"Date","179737767":"Our legacy options trading platform.","181346014":"Notes ","181881956":"Contract Type: {{ contract_type }}","184024288":"lower case","189705706":"This block uses the variable \"i\" to control the iterations. With each iteration, the value of \"i\" is determined by the items in a given list.","189759358":"Creates a list by repeating a given item","190834737":"Guide","191372501":"Accumulation of Income/Savings","192436105":"No need for symbols, digits, or uppercase letters","192573933":"Verification complete","195972178":"Get character","196810983":"If the duration is more than 24 hours, the Cut-off time and Expiry date will apply instead.","196998347":"We hold customer funds in bank accounts separate from our operational accounts which would not, in the event of insolvency, form part of the company's assets. This meets the <0>Gambling Commission's requirements for the segregation of customer funds at the level: <1>medium protection.","197190401":"Expiry date","201091938":"30 days","203108063":"Congratulations, you have successfully created your {{category}} <0>{{platform}} <1>{{type}} account. ","203179929":"<0>You can open this account once your submitted documents have been verified.","203271702":"Try again","203297887":"The Quick Strategy you just created will be loaded to the workspace.","203924654":"Hit the <0>Start button to begin and follow the tutorial.","204797764":"Transfer to client","204863103":"Exit time","206010672":"Delete {{ delete_count }} Blocks","207824122":"Please withdraw your funds from the following Deriv account(s):","209533725":"You’ve transferred {{amount}} {{currency}}","210385770":"If you have an active account, please log in to continue. Otherwise, please sign up.","211224838":"Investment","211461880":"Common names and surnames are easy to guess","211847965":"Your <0>personal details are incomplete. Please go to your account settings and complete your personal details to enable withdrawals.","212871086":"Coming soon on mobile","216650710":"You are using a demo account","217403651":"St. Vincent & Grenadines","217504255":"Financial assessment submitted successfully","218441288":"Identity card number","220014242":"Upload a selfie from your computer","220019594":"Need more help? Contact us through live chat for assistance.","220186645":"Text Is empty","220232017":"demo CFDs","221261209":"A Deriv account will allow you to fund (and withdraw from) your CFDs account(s).","223120514":"In this example, each point of the SMA line is an arithmetic average of close prices for the last 50 days.","223607908":"Last digit stats for latest 1000 ticks for {{underlying_name}}","224650827":"IOT/USD","224929714":"Virtual events based bets in the UK and the Isle of Man are offered by {{legal_entity_name}}, Millennium House, Level 1, Victoria Road, Douglas IM2 4RW, Isle of Man, licensed and regulated in Great Britain by the Gambling Commission under <0>account no. 39172 and by the Gambling Supervision Commission in the Isle of Man (<1>view licence).","225887649":"This block is mandatory. It's added to your strategy by default when you create new strategy. You can not add more than one copy of this block to the canvas.","227591929":"To timestamp {{ input_datetime }} {{ dummy }}","227903202":"We’ll charge a 1% transfer fee for transfers in different currencies between your Deriv fiat and {{platform_name_mt5}} accounts.","228521812":"Tests whether a string of text is empty. Returns a boolean value (true or false).","229355215":"Trade on {{platform_name_dbot}}","233500222":"- High: the highest price","235583807":"SMA is a frequently used indicator in technical analysis. It calculates the average market price over a specified period, and is usually used to identify market trend direction: up or down. For example, if the SMA is moving upwards, it means the market trend is up. ","236642001":"Journal","238496287":"Leverage trading is high-risk, so it's a good idea to use risk management features such as stop loss. Stop loss allows you to","243537306":"1. Under the Blocks menu, go to Utility > Variables.","243614144":"This is only available for existing clients.","245005091":"lower","245187862":"The DRC will make a <0>decision on the complaint (please note that the DRC mentions no timeframe for announcing its decision).","245812353":"if {{ condition }} return {{ value }}","246428134":"Step-by-step guides","247418415":"Gaming trading can become a real addiction, as can any other activity pushed to its limits. To avoid the danger of such an addiction, we provide a reality-check that gives you a summary of your trades and accounts on a regular basis.","248153700":"Reset your password","248565468":"Check your {{ identifier_title }} account email and click the link in the email to proceed.","248909149":"Send a secure link to your phone","251134918":"Account Information","251322536":"Deriv EZ accounts","251445658":"Dark theme","251882697":"Thank you! Your response has been recorded into our system.<0/><0/>Please click ‘OK’ to continue.","254912581":"This block is similar to EMA, except that it gives you the entire EMA line based on the input list and the given period.","256031314":"Cash Business","256602726":"If you close your account:","258448370":"MT5","258912192":"Trading assessment","260069181":"An error occured while trying to load the URL","260086036":"Place blocks here to perform tasks once when your bot starts running.","260361841":"Tax Identification Number can't be longer than 25 characters.","261074187":"4. Once the blocks are loaded onto the workspace, tweak the parameters if you want, or hit Run to start trading.","261250441":"Drag the <0>Trade again block and add it into the <0>do part of the <0>Repeat until block.","262095250":"If you select <0>\"Put\", you’ll earn a payout if the final price is below the strike price at expiry. Otherwise, you won’t receive a payout.","264976398":"3. 'Error' displays a message in red to highlight something that needs to be resolved immediately.","265644304":"Trade types","267992618":"The platforms lack key features or functionality.","268940240":"Your balance ({{format_balance}} {{currency}}) is less than the current minimum withdrawal allowed ({{format_min_withdraw_amount}} {{currency}}). Please top up your account to continue with your withdrawal.","269322978":"Deposit with your local currency via peer-to-peer exchange with fellow traders in your country.","269607721":"Upload","270339490":"If you select \"Over\", you will win the payout if the last digit of the last tick is greater than your prediction.","270610771":"In this example, the open price of a candle is assigned to the variable \"candle_open_price\".","270712176":"descending","270780527":"You've reached the limit for uploading your documents.","272042258":"When you set your limits, they will be aggregated across all your account types in {{platform_name_trader}}, {{platform_name_dbot}}, {{platform_name_smarttrader}} and {{platform_name_bbot}} on Deriv. For example, the losses made on all four platforms will add up and be counted towards the loss limit you set.","272179372":"This block is commonly used to adjust the parameters of your next trade and to implement stop loss/take profit logic.","273350342":"Copy and paste the token into the app.","273728315":"Should not be 0 or empty","274268819":"Volatility 100 Index","275116637":"Deriv X","277469417":"Exclude time cannot be for more than five years.","278684544":"get sub-list from # from end","280021988":"Use these shortcuts","282319001":"Check your image","282564053":"Next, we'll need your proof of address.","283830551":"Your address doesn’t match your profile","283986166":"Self-exclusion on the website only applies to your {{brand_website_name}} account and does not include other companies or websites.","284527272":"antimode","284772879":"Contract","284809500":"Financial Demo","287934290":"Are you sure you want to cancel this transaction?","291744889":"<0>1. Trade parameters:<0>","291817757":"Go to our Deriv community and learn about APIs, API tokens, ways to use Deriv APIs, and more.","292491635":"If you select “Stop loss” and specify an amount to limit your loss, your position will be closed automatically when your loss is more than or equals to this amount. Your loss may be more than the amount you entered depending on the market price at closing.","292526130":"Tick and candle analysis","292589175":"This will display the SMA for the specified period, using a candle list.","292887559":"Transfer to {{selected_value}} is not allowed, Please choose another account from dropdown","294305803":"Manage account settings","294335229":"Sell at market price","295173783":"Long/Short","296017162":"Back to Bot","301441673":"Select your citizenship/nationality as it appears on your passport or other government-issued ID.","304309961":"We're reviewing your withdrawal request. You may still cancel this transaction if you wish. Once we start processing, you won't be able to cancel.","310234308":"Close all your positions.","312142140":"Save new limits?","312300092":"Trims the spaces within a given string or text.","313741895":"This block returns “True” if the last candle is black. It can be placed anywhere on the canvas except within the Trade parameters root block.","315306603":"You have an account that do not have currency assigned. Please choose a currency to trade with this account.","316694303":"Is candle black?","318865860":"close","318984807":"This block repeats the instructions contained within for a specific number of times.","321457615":"Oops, something went wrong!","323179846":"The time interval for each candle can be set from one minute to one day.","323209316":"Select a Deriv Bot Strategy","323360883":"Baskets","325662004":"Expand Block","325763347":"result","326770937":"Withdraw {{currency}} ({{currency_symbol}}) to your wallet","327534692":"Duration value is not allowed. To run the bot, please enter {{min}}.","328539132":"Repeats inside instructions specified number of times","329353047":"Malta Financial Services Authority (MFSA) (licence no. IS/70156)","329404045":"<0>Switch to your real account<1> to create a {{platform}} {{account_title}} account.","333121115":"Select Deriv MT5's account type","333456603":"Withdrawal limits","333807745":"Click on the block you want to remove and press Delete on your keyboard.","334680754":"Switch to your real account to create a Deriv MT5 account","334942497":"Buy time","335040248":"About us","337023006":"Start time cannot be in the past.","339449279":"Remaining time","339610914":"Spread Up/Spread Down","339879944":"GBP/USD","340807218":"Description not found.","342181776":"Cancel transaction","343873723":"This block displays a message. You can specify the color of the message and choose from 6 different sound options.","344418897":"These trading limits and self-exclusion help you control the amount of money and time you spend on {{brand_website_name}} and exercise <0>responsible trading.","345320063":"Invalid timestamp","345818851":"Sorry, an internal error occurred. Hit the above checkbox to try again.","347029309":"Forex: standard/micro","347039138":"Iterate (2)","347217485":"Trouble accessing Deriv MT5 on your mobile?","348951052":"Your cashier is currently locked","349047911":"Over","349110642":"<0>{{payment_agent}}<1>'s contact details","350602311":"Stats show the history of consecutive tick counts, i.e. the number of ticks the price remained within range continuously.","351744408":"Tests if a given text string is empty","352363702":"You may see links to websites with a fake Deriv login page where you’ll get scammed for your money.","353731490":"Job done","354945172":"Submit document","357477280":"No face found","359053005":"Please enter a token name.","359649435":"Given candle list is not valid","359809970":"This block gives you the selected candle value from a list of candles within the selected time interval. You can choose from open price, close price, high price, low price, and open time.","360224937":"Logic","360773403":"Bot Builder","362946954":"Our legacy automated trading platform.","363576009":"- High price: the highest price","363738790":"Browser","363990763":"Sell price:","367801124":"Total assets in your Deriv accounts.","368160866":"in list","369035361":"<0>•Your account number","371151609":"Last used","371710104":"This scope will allow third-party apps to buy and sell contracts for you, renew your expired purchases, and top up your demo accounts.","372291654":"Exclude time must be after today.","372645383":"True if the market direction matches the selection","373021397":"random","373306660":"{{label}} is required.","373495360":"This block returns the entire SMA line, containing a list of all values for a given period.","374537470":"No results for \"{{text}}\"","375714803":"Deal Cancellation Error","377231893":"Deriv Bot is unavailable in the EU","379523479":"To avoid loss of funds, do not share tokens with the Admin scope with unauthorised parties.","380606668":"tick","380694312":"Maximum consecutive trades","384303768":"This block returns \"True\" if the last candle is black. It can be placed anywhere on the canvas except within the Trade parameters root block.","386191140":"You can choose between CFD trading accounts or Options and Multipliers accounts","386278304":"Install the {{platform_name_trader}} web app","386502387":"Bot is not running","389923099":"Zoom in","390647540":"Real account","390890891":"Last quarter","391915203":"Hedging","392582370":"Fall Equals","393789743":"Letters, spaces, periods, hyphens, apostrophes only.","396418990":"Offline","396801529":"To start trading, top-up funds from your Deriv account into this account.","398816980":"Launch {{platform_name_trader}} in seconds the next time you want to trade.","401339495":"Verify address","401345454":"Head to the Tutorials tab to do so.","402343402":"Due to an issue on our server, some of your {{platform}} accounts are unavailable at the moment. Please bear with us and thank you for your patience.","403456289":"The formula for SMA is:","404743411":"Total deposits","406359555":"Contract details","406497323":"Sell your active contract if needed (optional)","411482865":"Add {{deriv_account}} account","412433839":"I agree to the <0>terms and conditions.","413594348":"Only letters, numbers, space, hyphen, period, and forward slash are allowed.","417714706":"If your margin level drops below our stop out level, your positions may be closed automatically to protect you from further losses.","417864079":"You’ll not be able to change currency once you have made a deposit.","418265501":"Demo Derived","419485005":"Spot","419496000":"Your contract is closed automatically when your profit is more than or equals to this amount. This block can only be used with the multipliers trade type.","420072489":"CFD trading frequency","422055502":"From","424272085":"We take your financial well-being seriously and want to ensure you are fully aware of the risks before trading.<0/><0/>","424897068":"Do you understand that you could potentially lose 100% of the money you use to trade?","426031496":"Stop","427134581":"Try using another file type.","427617266":"Bitcoin","428709688":"Your preferred time interval between each report:","429970999":"To avoid delays, enter your <0>name exactly as it appears on your {{document_name}}.","431267979":"Here’s a quick guide on how to use Deriv Bot on the go.","432273174":"1:100","432508385":"Take Profit: {{ currency }} {{ take_profit }}","432519573":"Document uploaded","433348384":"Real accounts are not available to politically exposed persons (PEPs).","433616983":"2. Investigation phase","434548438":"Highlight function definition","434896834":"Custom functions","436364528":"Your account will be opened with {{legal_entity_name}}, and will be subject to the laws of Saint Vincent and the Grenadines.","436534334":"<0>We've sent you an email.","437138731":"Create a new {{platform}} password","437453244":"Choose your preferred cryptocurrency","437485293":"File type not supported","437904704":"Maximum open positions","438067535":"Over $500,000","439398769":"This strategy is currently not compatible with Deriv Bot.","442520703":"$250,001 - $500,000","443203714":"Your contract will be closed automatically if your loss reaches this amount.","443559872":"Financial SVG","444484637":"Logic negation","445419365":"1 - 2 years","450983288":"Your deposit is unsuccessful due to an error on the blockchain. Please contact your crypto wallet service provider for more info.","451852761":"Continue on your phone","452054360":"Similar to RSI, this block gives you a list of values for each entry in the input list.","453175851":"Your MT5 Financial STP account will be opened through {{legal_entity_name}}. All trading in this account is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA). None of your other accounts, including your Deriv account, is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA).","453409608":"Your profit is the percentage change in market price times your stake and the multiplier of your choice.","454196938":"Regulation:","456746157":"Grant access to your camera from your browser settings","457020083":"It’ll take longer to verify you if we can’t read it","457494524":"1. From the block library, enter a name for the new variable and click Create.","459612953":"Select account","459817765":"Pending","460070238":"Congratulations","460975214":"Complete your Appropriateness Test","461795838":"Please contact us via live chat to unlock it.","462079779":"Resale not offered","463361726":"Select an item","465993338":"Oscar's Grind","466369320":"Your gross profit is the percentage change in market price times your stake and the multiplier chosen here.","466837068":"Yes, increase my limits","467839232":"I trade forex CFDs and other complex financial instruments regularly on other platforms.","473154195":"Settings","474306498":"We’re sorry to see you leave. Your account is now closed.","475492878":"Try Synthetic Indices","476023405":"Didn't receive the email?","477557241":"Remote blocks to load must be a collection.","478280278":"This block displays a dialog box that uses a customised message to prompt for an input. The input can be either a string of text or a number and can be assigned to a variable. When the dialog box is displayed, your strategy is paused and will only resume after you enter a response and click \"OK\".","479420576":"Tertiary","480356486":"*Boom 300 and Crash 300 Index","481276888":"Goes Outside","483279638":"Assessment Completed<0/><0/>","483551811":"Your <0>payout is the sum of your inital stake and profit.","483591040":"Delete all {{ delete_count }} blocks?","485379166":"View transactions","487239607":"Converts a given True or False to the opposite value","488150742":"Resend email","489768502":"Change investor password","491603904":"Unsupported browser","492198410":"Make sure everything is clear","492566838":"Taxpayer identification number","497518317":"Function that returns a value","498562439":"or","499522484":"1. for \"string\": 1325.68 USD","500215405":"Server maintenance starts at 01:00 GMT every Sunday and may last up to 2 hours. You may experience service disruption during this time.","500855527":"Chief Executives, Senior Officials and Legislators","500920471":"This block performs arithmetic operations between two numbers.","501401157":"You are only allowed to make deposits","501537611":"*Maximum number of open positions","502007051":"Demo Swap-Free SVG","502041595":"This block gives you a specific candle from within the selected time interval.","503137339":"Payout limit","505793554":"last letter","508390614":"Demo Financial STP","510815408":"Letters, numbers, spaces, hyphens only","511679687":"Accumulators allow you to express a view on the range of movement of an index and grow your stake exponentially at a fixed <0>growth rate.","514031715":"list {{ input_list }} is empty","514776243":"Your {{account_type}} password has been changed.","514948272":"Copy link","518955798":"7. Run Once at Start","520136698":"Boom 500 Index","521872670":"item","522703281":"divisible by","523123321":"- 10 to the power of a given number","524459540":"How do I create variables?","527329988":"This is a top-100 common password","529056539":"Options","530953413":"Authorised applications","531114081":"3. Contract Type","531675669":"Euro","535041346":"Max. total stake per day","537788407":"Other CFDs Platform","538017420":"0.5 pips","541650045":"Manage {{platform}} password","541700024":"First, enter your driving licence number and the expiry date.","542038694":"Only letters, numbers, space, underscore, and hyphen are allowed for {{label}}.","542305026":"You must also submit a proof of identity.","543413346":"You have no open positions for this asset. To view other open positions, click Go to Reports","543915570":"Forex, stocks, stock indices, cryptocurrencies, synthetic indices","545476424":"Total withdrawals","549479175":"Deriv Multipliers","550589723":"Your stake will grow at {{growth_rate}}% per tick as long as the current spot price remains within ±{{tick_size_barrier}} from the previous spot price.","551569133":"Learn more about trading limits","554135844":"Edit","554410233":"This is a top-10 common password","555351771":"After defining trade parameters and trade options, you may want to instruct your bot to purchase contracts when specific conditions are met. To do that you can use conditional blocks and indicators blocks to help your bot to make decisions.","555881991":"National Identity Number Slip","556264438":"Time interval","558262475":"On your MT5 mobile app, delete your existing Deriv account:","558866810":"Run your bot","559224320":"Our classic “drag-and-drop” tool for creating trading bots, featuring pop-up trading charts, for advanced users.","561982839":"Change your currency","562599414":"This block returns the purchase price for the selected trade type. This block can be used only in the \"Purchase conditions\" root block.","563034502":"We shall try to resolve your complaint within 15 business days. We will inform you of the outcome together with an explanation of our position and propose any remedial measures we intend to take.","563166122":"We shall acknowledge receiving your complaint, review it carefully, and keep you updated on the handling process. We might request further information or clarifications to facilitate the resolution of the complaint.","563652273":"Go to block","565410797":"The below image illustrates how Simple Moving Average Array block works:","566274201":"1. Market","567019968":"A variable is among the most important and powerful components in creating a bot. It is a way to store information, either as text or numbers. The information stored as a variable can be used and changed according to the given instructions. Variables can be given any name, but usually they are given useful, symbolic names so that it is easier to call them during the execution of instructions.","567163880":"Create a {{platform}} password","567755787":"Tax Identification Number is required.","569057236":"In which country was your document issued?","571921777":"Funds protection level","572576218":"Languages","573173477":"Is candle {{ input_candle }} black?","575702000":"Remember, selfies, pictures of houses, or non-related images will be rejected.","576355707":"Select your country and citizenship:","577215477":"count with {{ variable }} from {{ start_number }} to {{ end_number }} by {{ step_size }}","577779861":"Withdrawal","577883523":"4. Awards and orders","578640761":"Call Spread","579529868":"Show all details — including the bottom 2 lines","580431127":"Restart buy/sell on error (disable for better performance): {{ checkbox }}","580665362":"Stays In/Goes Out","580774080":"insert at","581168980":"Legal","582945649":"2 minutes","584028307":"Allow equals","587577425":"Secure my account","587856857":"Want to know more about APIs?","588609216":"Repeat tour","592087722":"Employment status is required.","593459109":"Try a different currency","594937260":"Derived - BVI","595080994":"Example: CR123456789","595136687":"Save Strategy","597089493":"Here is where you can decide to sell your contract before it expires. Only one copy of this block is allowed.","597481571":"DISCLAIMER","597707115":"Tell us about your trading experience.","599469202":"{{secondPast}}s ago","602278674":"Verify identity","603849445":"Strike price","603849863":"Look for the <0>Repeat While/Until, and click the + icon to add the block to the workspace area.","603899222":"Distance to current spot","606240547":"- Natural log","606877840":"Back to today","607807243":"Get candle","609519227":"This is the email address associated with your Deriv account.","609650241":"Infinite loop detected","610537973":"Any information you provide is confidential and will be used for verification purposes only.","611020126":"View address on Blockchain","611786123":"FX-majors (standard/micro lots), FX-minors, Commodities, Cryptocurrencies, Stocks, and Stock Indices","617345387":"If you select \"Reset-Up”, you win the payout if the exit spot is strictly higher than either the entry spot or the spot at reset time.","617910072":"Use your Deriv account email and password to login into the {{ platform }} platform.","618520466":"Example of a cut-off document","619268911":"<0>a.The Financial Commission will investigate the validity of the complaint within 5 business days.","619407328":"Are you sure you want to unlink from {{identifier_title}}?","623192233":"Please complete the <0>Appropriateness Test to access your cashier.","623542160":"Exponential Moving Average Array (EMAA)","624668261":"You’ve just stopped the bot. Any open contracts can be viewed on the <0>Reports page.","625571750":"Entry spot:","626175020":"Standard Deviation Up Multiplier {{ input_number }}","626809456":"Resubmit","627292452":"<0>Your Proof of Identity or Proof of Address did not meet our requirements. Please check your email for further instructions.","627814558":"This block returns a value when a condition is true. Use this block within either of the function blocks above.","628193133":"Account ID","629145209":"In case if the \"AND\" operation is selected, the block returns \"True\" only if both given values are \"True\"","629395043":"All growth rates","632398049":"This block assigns a null value to an item or statement.","634219491":"You have not provided your tax identification number. This information is necessary for legal and regulatory requirements. Please go to <0>Personal details in your account settings, and fill in your latest tax identification number.","636219628":"<0>c.If no settlement opportunity can be found, the complaint will proceed to the determination phase to be handled by the DRC.","639382772":"Please upload supported file type.","640596349":"You have yet to receive any notifications","640730141":"Refresh this page to restart the identity verification process","641420532":"We've sent you an email","642210189":"Please check your email for the verification link to complete the process.","642393128":"Enter amount","642546661":"Upload back of license from your computer","642995056":"Email","644150241":"The number of contracts you have won since you last cleared your stats.","645902266":"EUR/NZD","647039329":"Proof of address required","647745382":"Input List {{ input_list }}","648035589":"Other CFD Platforms","649317411":"On the basis of the information provided in relation to your knowledge and experience, we consider that the investments available via this website are not appropriate for you.<0/><1/>","649923867":"Adds a sign to a number to create a barrier offset. (deprecated)","651284052":"Low Tick","651684094":"Notify","652041791":"To create a Deriv X real account, create a Deriv real account first.","652298946":"Date of birth","654264404":"Up to 1:30","654507872":"True-False","654924603":"Martingale","655937299":"We’ll update your limits. Click <0>Accept to acknowledge that you are fully responsible for your actions, and we are not liable for any addiction or loss.","656296740":"While “Deal cancellation” is active:","656893085":"Timestamp","657325150":"This block is used to define trade options within the Trade parameters root block. Some options are only applicable for certain trade types. Parameters such as duration and stake are common among most trade types. Prediction is used for trade types such as Digits, while barrier offsets are for trade types that involve barriers such as Touch/No Touch, Ends In/Out, etc.","659482342":"Please remember that it is your responsibility to keep your answers accurate and up to date. You can update your personal details at any time in your account settings.","660481941":"To access your mobile apps and other third-party apps, you'll first need to generate an API token.","660991534":"Finish","661759508":"On the basis of the information provided in relation to your knowledge and experience, we consider that the investments available via this website are not appropriate for you.<0/><0/>","662548260":"Forex, Stock indices, Commodities and Cryptocurrencies","662578726":"Available","662609119":"Download the MT5 app","665089217":"Please submit your <0>proof of identity to authenticate your account and access your Cashier.","665777772":"XLM/USD","665872465":"In the example below, the opening price is selected, which is then assigned to a variable called \"op\".","666724936":"Please enter a valid ID number.","672008428":"ZEC/USD","673915530":"Jurisdiction and choice of law","674973192":"Use this password to log in to your Deriv MT5 accounts on the desktop, web, and mobile apps.","676159329":"Could not switch to default account.","677918431":"Market: {{ input_market }} > {{ input_submarket }} > {{ input_symbol }}","680334348":"This block was required to correctly convert your old strategy.","680478881":"Total withdrawal limit","681808253":"Previous spot price","681926004":"Example of a blurry document","682056402":"Standard Deviation Down Multiplier {{ input_number }}","684282133":"Trading instruments","685391401":"If you're having trouble signing in, let us know via <0>chat","686312916":"Trading accounts","686387939":"How do I clear my transaction log?","687193018":"Slippage risk","687212287":"Amount is a required field.","688510664":"You've {{two_fa_status}} 2FA on this device. You'll be logged out of your account on other devices (if any). Use your password and a 2FA code to log back in.","689137215":"Purchase price","691956534":"<0>You have added a {{currency}} account.<0> Make a deposit now to start trading.","692354762":"Please enter your {{document_name}}. {{example_format}}","693396140":"Deal cancellation (expired)","694035561":"Trade options multipliers","696870196":"- Open time: the opening time stamp","697630556":"This market is presently closed.","698037001":"National Identity Number","699159918":"1. Filing complaints","699646180":"A minimum deposit value of <0>{{minimum_deposit}} {{currency}} is required. Otherwise, the funds will be lost and cannot be recovered.","700259824":"Account currency","701034660":"We are still processing your withdrawal request.<0 />Please wait for the transaction to be completed before deactivating your account.","701462190":"Entry spot","701647434":"Search for string","702451070":"National ID (No Photo)","702561961":"Change theme","705299518":"Next, upload the page of your passport that contains your photo.","706413212":"To access the cashier, you are now in your {{regulation}} {{currency}} ({{loginid}}) account.","706727320":"Binary options trading frequency","706755289":"This block performs trigonometric functions.","706960383":"We’ll offer to buy your contract at this price should you choose to sell it before its expiry. This is based on several factors, such as the current spot price, duration, etc. However, we won’t offer a contract value if the remaining duration is below 60 seconds.","707662672":"{{unblock_date}} at {{unblock_time}}","708055868":"Driving licence number","710123510":"repeat {{ while_or_until }} {{ boolean }}","711999057":"Successful","712101776":"Take a photo of your passport photo page","712635681":"This block gives you the selected candle value from a list of candles. You can choose from open price, close price, high price, low price, and open time.","713054648":"Sending","714080194":"Submit proof","714746816":"MetaTrader 5 Windows app","715841616":"Please enter a valid phone number (e.g. +15417541234).","716428965":"(Closed)","718504300":"Postal/ZIP code","720293140":"Log out","720519019":"Reset my password","721011817":"- Raise the first number to the power of the second number","723045653":"You'll log in to your Deriv account with this email address.","723961296":"Manage password","724203548":"You can send your complaint to the <0>European Commission's Online Dispute Resolution (ODR) platform. This is not applicable to UK clients.","724526379":"Learn more with our tutorials","728042840":"To continue trading with us, please confirm where you live.","728824018":"Spanish Index","729651741":"Choose a photo","730473724":"This block performs the \"AND\" or the \"OR\" logic operation with the given values.","731382582":"BNB/USD","734390964":"Insufficient balance","734881840":"false","742469109":"Reset Balance","742676532":"Trade CFDs on forex, derived indices, cryptocurrencies, and commodities with high leverage.","743623600":"Reference","744110277":"Bollinger Bands Array (BBA)","745656178":"Use this block to sell your contract at the market price.","745674059":"Returns the specific character from a given string of text according to the selected option. ","746112978":"Your computer may take a few seconds to update","750886728":"Switch to your real account to submit your documents","751468800":"Start now","751692023":"We <0>do not guarantee a refund if you make a wrong transfer.","752024971":"Reached maximum number of digits","752992217":"This block gives you the selected constant values.","753088835":"Default","753184969":"In providing our services to you, we are required to obtain information from you in order to assess whether a given product or service is appropriate for you (that is, whether you possess the experience and knowledge to understand the risks involved).<0/><1/>","753727511":"Type","755867072":"{{platform_name_mt5}} is not available in {{country}}","756152377":"SMA places equal weight to the entire distribution of values.","758003269":"make list from text","759783233":"For more information and assistance to counselling and support services, please visit <0>begambleaware.org.","760528514":"Please note that changing the value of \"i\" won't change the value of the original item in the list","761576760":"Fund your account to start trading.","762185380":"<0>Multiply returns by <0>risking only what you put in.","762871622":"{{remaining_time}}s","762926186":"A quick strategy is a ready-made strategy that you can use in Deriv Bot. There are 3 quick strategies you can choose from: Martingale, D'Alembert, and Oscar's Grind.","764366329":"Trading limits","766317539":"Language","770171141":"Go to {{hostname}}","773091074":"Stake:","773309981":"Oil/USD","773336410":"Tether is a blockchain-enabled platform designed to facilitate the use of fiat currencies in a digital manner.","775679302":"{{pending_withdrawals}} pending withdrawal(s)","775706054":"Do you sell trading bots?","776085955":"Strategies","781924436":"Call Spread/Put Spread","783974693":"Avoid recent years","784311461":"Exponential Moving Average (EMA)","784583814":"Linked to your computer","785969488":"Jump 75 Index","787727156":"Barrier","788005234":"NA","792164271":"This is when your contract will expire based on the Duration or End time you’ve selected.","792622364":"Negative balance protection","793526589":"To file a complaint about our service, send an email to <0>complaints@deriv.com and state your complaint in detail. Please submit any relevant screenshots of your trading or system for our better understanding.","793531921":"Our company is one of the oldest and most reputable online trading companies in the world. We are committed to treat our clients fairly and provide them with excellent service.<0/><1/>Please provide us with feedback on how we can improve our services to you. Rest assured that you will be heard, valued, and treated fairly at all times.","793826881":"This is your personal start page for Deriv","794682658":"Copy the link to your phone","795859446":"Password saved","797007873":"Follow these steps to recover camera access:","797500286":"negative","800228448":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}} and {{legal_entity_name_fx}}.","800521289":"Your personal details are incomplete","801430087":"A link can contain the word \"Deriv\" and still be fake.","802436811":"View transaction details","802438383":"New proof of address is needed","802556390":"seconds","802989607":"Drag your XML file here","803500173":"Initial stake","806165583":"Australia 200","807499069":"Financial commission complaints procedure","808323704":"You can also use \"Compare\" and \"Logic operation\" blocks to make test variables.","811876954":"You may transfer between your Deriv fiat, cryptocurrency, {{platform_name_mt5}}, and {{platform_name_dxtrade}} accounts.","812430133":"Spot price on the previous tick.","812775047":"below the barrier","814827314":"The stop-out level on the chart indicates the price at which your potential loss equals your entire stake. When the market price reaches this level, your position will be closed automatically. This ensures that your loss does not exceed the amount you paid to purchase the contract.","814936420":"{{ banner_message }}","815925952":"This block is mandatory. Only one copy of this block is allowed. It is added to the canvas by default when you open Deriv Bot.","816580787":"Welcome back! Your messages have been restored.","816738009":"<0/><1/>You may also raise your unresolved dispute to the <2>Office of the Arbiter for Financial Services.","818447476":"Switch account?","820877027":"Please verify your proof of identity","821163626":"Server maintenance occurs every first Saturday of the month from 7 to 10 GMT time. You may experience service disruption during this time.","823186089":"A block that can contain text.","824797920":"Is list empty?","825042307":"Let’s try again","826511719":"USD/SEK","827688195":"Disable Block","828219890":"then","828602451":"Returns the list of tick values in string format","830164967":"Last name","830703311":"My profile","830993327":"No current transactions available","832053636":"Document submission","832217983":"40 transactions or more in the past 12 months","832398317":"Sell Error","832588873":"Order execution","832721563":"If you select \"Low Tick\", you win the payout if the selected tick is the lowest among the next five ticks.","834966953":"1551661986 seconds since Jan 01 1970 (UTC) translates to 03/04/2019 @ 1:13am (UTC).","835058671":"Total buy price","835336137":"View Detail","835350845":"Add another word or two. Uncommon words are better.","836097457":"I am interested in trading but have very little experience.","837063385":"Do not send other currencies to this address.","837066896":"Your document is being reviewed, please check back in 1-3 days.","839805709":"To smoothly verify you, we need a better photo","840672750":"If this doesn’t work, uninstall and re-install the MT5 app. Then redo steps <0>2 and <0>3.","841434703":"Disable stack","841543189":"View transaction on Blockchain","843333337":"You can only make deposits. Please complete the <0>financial assessment to unlock withdrawals.","845213721":"Logout","845304111":"Slow EMA Period {{ input_number }}","848083350":"Your payout is equal to the <0>payout per point multiplied by the difference between the final price and the strike price. You will only earn a profit if your payout is higher than your initial stake.","850582774":"Please update your personal info","851054273":"If you select \"Higher\", you win the payout if the exit spot is strictly higher than the barrier.","851264055":"Creates a list with a given item repeated for a specific number of times.","851508288":"This block constrains a given number within a set range.","852527030":"Step 2","852583045":"Tick List String","854399751":"Digit code must only contain numbers.","854630522":"Choose a cryptocurrency account","857363137":"Volatility 300 (1s) Index","857445204":"Deriv currently supports withdrawals of Tether eUSDT to Ethereum wallet. To ensure a successful transaction, enter a wallet address compatible with the tokens you wish to withdraw. <0>Learn more","857986403":"do something","860319618":"Tourism","862283602":"Phone number*","863328851":"Proof of identity","864610268":"First, enter your {{label}} and the expiry date.","864957760":"Math Number Positive","865424952":"High-to-Low","865642450":"2. Logged in from a different browser","866496238":"Make sure your license details are clear to read, with no blur or glare","868826608":"Excluded from {{brand_website_name}} until","869068127":"The cashier is temporarily down due to maintenance. It will be available as soon as the maintenance is complete.","869823595":"Function","869993298":"Minimum withdrawal","872549975":"You have {{number}} transfers remaining for today.","872661442":"Are you sure you want to update email <0>{{prev_email}} to <1>{{changed_email}}?","872721776":"2. Select your XML file and hit Select.","872817404":"Entry Spot Time","873166343":"1. 'Log' displays a regular message.","874461655":"Scan the QR code with your phone","874484887":"Take profit must be a positive number.","875101277":"If I close my web browser, will Deriv Bot continue to run?","875532284":"Restart process on a different device","876086855":"Complete the financial assessment form","876292912":"Exit","879014472":"Reached maximum number of decimals","879647892":"You may sell the contract up until 60 seconds before expiry. If you do, we’ll pay you the <0>contract value.","881963105":"(XAUUSD, XAGUSD)","885065431":"Get a Deriv account","888274063":"Town/City","888924866":"We don’t accept the following inputs for:","890299833":"Go to Reports","891337947":"Select country","892341141":"Your trading statistics since: {{date_time}}","893117915":"Variable","893963781":"Close-to-Low","893975500":"You do not have any recent bots","894191608":"<0>c.We must award the settlement within 28 days of when the decision is reached.","898457777":"You have added a Deriv Financial account.","898904393":"Barrier:","900646972":"page.","902045490":"3 minutes","903429103":"In candles list read {{ candle_property }} # from end {{ input_number }}","904696726":"API token","905134118":"Payout:","905227556":"Strong passwords contain at least 8 characters, combine uppercase and lowercase letters and numbers.","905564365":"MT5 CFDs","906049814":"We’ll review your documents and notify you of its status within 5 minutes.","907680782":"Proof of ownership verification failed","909272635":"Financial - SVG","910888293":"Too many attempts","911048905":"(BTCUSD, ETHUSD)","912406629":"Follow these steps:","912967164":"Import from your computer","915735109":"Back to {{platform_name}}","918447723":"Real","920125517":"Add demo account","921901739":"- your account details of the bank linked to your account","922313275":"You're back online","924046954":"Upload a document showing your name and bank account number or account details.","926813068":"Fixed/Variable","929608744":"You are unable to make withdrawals","930346117":"Capitalization doesn't help very much","930546422":"Touch","933126306":"Enter some text here","933193610":"Only letters, periods, hyphens, apostrophes, and spaces, please.","934835052":"Potential profit","934932936":"PERSONAL","936766426":"You are limited to one fiat account. You won’t be able to change your account currency if you have already made your first deposit.","937237342":"Strategy name cannot be empty","937682366":"Upload both of these documents to prove your identity.","937831119":"Last name*","937992258":"Table","938500877":"{{ text }}. <0>You can view the summary of this transaction in your email.","938947787":"Withdrawal {{currency}}","938988777":"High barrier","943535887":"Please close your positions in the following Deriv MT5 account(s):","944499219":"Max. open positions","945532698":"Contract sold","946204249":"Read","946841802":"A white (or green) candle indicates that the open price is lower than the close price. This represents an upward movement of the market price.","946944859":"Hit the button below and we'll send you an email with a link. Click that link to verify your withdrawal request.","947046137":"Your withdrawal will be processed within 24 hours","947363256":"Create list","947758334":"City is required","947914894":"Top up  <0>","948156236":"Create {{type}} password","948176566":"New!","948545552":"150+","949859957":"Submit","952927527":"Regulated by the Malta Financial Services Authority (MFSA) (licence no. IS/70156)","955352264":"Trade on {{platform_name_dxtrade}}","956448295":"Cut-off image detected","957182756":"Trigonometric functions","958430760":"In/Out","959031082":"set {{ variable }} to MACD Array {{ dropdown }} {{ dummy }}","960201789":"3. Sell conditions","961266215":"140+","961327418":"My computer","961692401":"Bot","966457287":"set {{ variable }} to Exponential Moving Average {{ dummy }}","968576099":"Up/Down","969987233":"Win up to maximum payout if exit spot is between lower and upper barrier, in proportion to the difference between exit spot and lower barrier.","970915884":"AN","975668699":"I confirm and accept {{company}} 's <0>Terms and Conditions","975950139":"Country of Residence","977929335":"Go to my account settings","981138557":"Redirect","981568830":"You have chosen to exclude yourself from trading on our website until {{exclude_until}}. If you are unable to place a trade or deposit after your self-exclusion period, please contact us via <0>live chat.","981965437":"Scan the QR code below with your 2FA app. We recommend <0>Authy or <1>Google Authenticator.","982146443":"WhatsApp","982402892":"First line of address","982829181":"Barriers","983451828":"2. Select the asset and trade type.","987224688":"How many trades have you placed with other financial instruments in the past 12 months?","988064913":"4. Come back to Deriv Bot and add the Notify Telegram block to the workspace. Paste the Telegram API token and chat ID into the block fields accordingly.","988361781":"You have no trading activity yet.","988934465":"When prompted, you must enable camera access to continue","990739582":"170+","992294492":"Your postal code is invalid","992677950":"Logging out on other devices","993827052":"Choosing this jurisdiction will give you a Financial STP account. Your trades will go directly to the market and have tighter spreads.","995563717":"not {{ boolean }}","997276809":"I confirm that the name and date of birth above match my chosen identity document","999008199":"text","1001160515":"Sell","1001749987":"You’ll get a warning, named margin call, if your account balance drops down close to the stop out level.","1003876411":"Should start with letter or number and may contain a hyphen, period and slash.","1004127734":"Send email","1006458411":"Errors","1006664890":"Silent","1009032439":"All time","1010198306":"This block creates a list with strings and numbers.","1010337648":"We were unable to verify your proof of ownership.","1011424042":"{{text}}. stake<0/>","1012102263":"You will not be able to log in to your account until this date (up to 6 weeks from today).","1015201500":"Define your trade options such as duration and stake.","1016220824":"You need to switch to a real money account to use this feature.<0/>You can do this by selecting a real account from the <1>Account Switcher.","1018803177":"standard deviation","1019265663":"You have no transactions yet.","1019508841":"Barrier 1","1021679446":"Multipliers only","1022934784":"1 minute","1023237947":"1. In the example below, the instructions are repeated as long as the value of x is less than or equal to 10. Once the value of x exceeds 10, the loop is terminated.","1023643811":"This block purchases contract of a specified type.","1023795011":"Even/Odd","1024205076":"Logic operation","1025887996":"Negative Balance Protection","1026046972":"Please enter a payout amount that's lower than {{max_payout}}.","1026289179":"Trade on the go","1027098103":"Leverage gives you the ability to trade a larger position using your existing capital. Leverage varies across different symbols.","1028211549":"All fields are required","1028758659":"Citizenship*","1029164365":"We presume that you possess the experience, knowledge, and expertise to make your own investment decisions and properly assess the risk involved.","1030021206":"change {{ variable }} by {{ number }}","1031602624":"We've sent a secure link to %{number}","1031731167":"Pound Sterling","1032173180":"Deriv","1032907147":"AUD/NZD","1033076894":"- current profit/loss: Use this variable to store the cumulative profit or loss while your bot is running. Set the initial value to 0.","1035893169":"Delete","1036116144":"Speculate on the price movement of an asset without actually owning it.","1036867749":"The desired duration, stake, prediction, and/or barrier(s) for the contract is defined here.","1038575777":"Change password","1039428638":"EU regulation","1039755542":"Use a few words, avoid common phrases","1040472990":"1. Go to Bot Builder.","1040677897":"To continue trading, you must also submit a proof of address.","1041001318":"This block performs the following operations on a given list: sum, minimum, maximum, average, median, mode, antimode, standard deviation, random item.","1041620447":"If you are unable to scan the QR code, you can manually enter this code instead:","1042659819":"You have an account that needs action","1043790274":"There was an error","1044540155":"100+","1044599642":"<0> has been credited into your {{platform}} {{title}} account.","1045704971":"Jump 150 Index","1045782294":"Click the <0>Change password button to change your Deriv password.","1047389068":"Food Services","1047881477":"Unfortunately, your browser does not support the video.","1048687543":"Labuan Financial Services Authority","1048947317":"Sorry, this app is unavailable in {{clients_country}}.","1049384824":"Rise","1050063303":"Videos on Deriv Bot","1050128247":"I confirm that I have verified the payment agent’s transfer information.","1050844889":"Reports","1052779010":"You are on your demo account","1053153674":"Jump 50 Index","1053159279":"Level of education","1053556481":"Once you submit your complaint, we will send you an acknowledgement email to confirm that we have received it.","1055313820":"No document detected","1056381071":"Return to trade","1056821534":"Are you sure?","1057216772":"text {{ input_text }} is empty","1057749183":"Two-factor authentication (2FA)","1057765448":"Stop out level","1057904606":"The concept of the D’Alembert Strategy is said to be similar to the Martingale Strategy where you will increase your contract size after a loss. With the D’Alembert Strategy, you will also decrease your contract size after a successful trade.","1058804653":"Expiry","1060231263":"When are you required to pay an initial margin?","1061308507":"Purchase {{ contract_type }}","1062423382":"Explore the video guides and FAQs to build your bot in the tutorials tab.","1062536855":"Equals","1062569830":"The <0>name on your identity document doesn't match your profile.","1065275078":"cTrader is only available on desktop for now.","1065353420":"110+","1065498209":"Iterate (1)","1066235879":"Transferring funds will require you to create a second account.","1066459293":"4.3. Acknowledging your complaint","1069347258":"The verification link you used is invalid or expired. Please request for a new one.","1069576070":"Purchase lock","1070624871":"Check proof of address document verification status","1073261747":"Verifications","1076006913":"Profit/loss on the last {{item_count}} contracts","1077515534":"Date to","1078221772":"Leverage prevents you from opening large positions.","1080068516":"Action","1080990424":"Confirm","1082158368":"*Maximum account cash balance","1082406746":"Please enter a stake amount that's at least {{min_stake}}.","1083781009":"Tax identification number*","1083826534":"Enable Block","1087112394":"You must select the strike price before entering the contract.","1088031284":"Strike:","1088138125":"Tick {{current_tick}} - ","1089085289":"Mobile number","1089436811":"Tutorials","1089687322":"Stop your current bot?","1090041864":"The {{block_type}} block is mandatory and cannot be deleted/disabled.","1095295626":"<0>•The Arbiter for Financial Services will determine whether the complaint can be accepted and is in accordance with the law.","1096078516":"We’ll review your documents and notify you of its status within 3 days.","1096175323":"You’ll need a Deriv account","1098147569":"Purchase commodities or shares of a company.","1098622295":"\"i\" starts with the value of 1, and it will be increased by 2 at every iteration. The loop will repeat until \"i\" reaches the value of 12, and then the loop is terminated.","1100133959":"National ID","1100870148":"To learn more about account limits and how they apply, please go to the <0>Help Centre.","1101560682":"stack","1101712085":"Buy Price","1102420931":"Next, upload the front and back of your driving licence.","1102995654":"Calculates Exponential Moving Average (EMA) list from a list of values with a period","1103309514":"Target","1103452171":"Cookies help us to give you a better experience and personalised content on our site.","1104912023":"Pending verification","1107474660":"Submit proof of address","1107555942":"To","1109217274":"Success!","1110102997":"Statement","1112582372":"Interval duration","1113119682":"This block gives you the selected candle value from a list of candles.","1113292761":"Less than 8MB","1114679006":"You have successfully created your bot using a simple strategy.","1117281935":"Sell conditions (optional)","1117863275":"Security and safety","1118294625":"You have chosen to exclude yourself from trading on our website until {{exclusion_end}}. If you are unable to place a trade or deposit after your self-exclusion period, please contact us via live chat.","1119887091":"Verification","1119986999":"Your proof of address was submitted successfully","1120985361":"Terms & conditions updated","1122910860":"Please complete your <0>financial assessment.","1123927492":"You have not selected your account currency","1125090693":"Must be a number","1126075317":"Add your Deriv MT5 <0>{{account_type_name}} STP account under Deriv (FX) Ltd regulated by Labuan Financial Services Authority (Licence no. MB/18/0024).","1126934455":"Length of token name must be between 2 and 32 characters.","1127149819":"Make sure§","1127224297":"Sorry for the interruption","1128139358":"How many CFD trades have you placed in the past 12 months?","1128321947":"Clear All","1128404172":"Undo","1129124569":"If you select \"Under\", you will win the payout if the last digit of the last tick is less than your prediction.","1129842439":"Please enter a take profit amount.","1130744117":"We shall try to resolve your complaint within 10 business days. We will inform you of the outcome together with an explanation of our position and propose any remedial measures we intend to take.","1130791706":"N","1133651559":"Live chat","1134879544":"Example of a document with glare","1138126442":"Forex: standard","1139483178":"Enable stack","1143730031":"Direction is {{ direction_type }}","1144028300":"Relative Strength Index Array (RSIA)","1145927365":"Run the blocks inside after a given number of seconds","1146064568":"Go to Deposit page","1147269948":"Barrier cannot be zero.","1150637063":"*Volatility 150 Index and Volatility 250 Index","1151964318":"both sides","1152294962":"Upload the front of your driving licence.","1154021400":"list","1154239195":"Title and name","1155011317":"This block converts the date and time to the number of seconds since the Unix Epoch (1970-01-01 00:00:00).","1155626418":"below","1158678321":"<0>b.The Head of the Dispute Resolution Committee (DRC) will contact both you and us within 5 business days to obtain all necessary information and see if there is a chance to settle the complaint during the investigation phase.","1160761178":"No payout if exit spot is below or equal to the lower barrier.","1161924555":"Please select an option","1163771266":"The third block is <0>optional. You may use this block if you want to sell your contract before it expires. For now, leave the block as it is. ","1163836811":"Real Estate","1164773983":"Take profit and/or stop loss are not available while deal cancellation is active.","1166128807":"Choose one of your accounts or add a new cryptocurrency account","1166377304":"Increment value","1168029733":"Win payout if exit spot is also equal to entry spot.","1169201692":"Create {{platform}} password","1170228717":"Stay on {{platform_name_trader}}","1171765024":"Step 3","1171961126":"trade parameters","1172524677":"CFDs Demo","1174542625":"- Find the chat ID property in the response, and copy the value of the id property","1174689133":"3. Set your trade parameters and hit Run.","1174748431":"Payment channel","1175183064":"Vanuatu","1177396776":"If you select \"Asian Fall\", you will win the payout if the last tick is lower than the average of the ticks.","1177723589":"There are no transactions to display","1178582280":"The number of contracts you have lost since you last cleared your stats.","1178800778":"Take a photo of the back of your license","1178942276":"Please try again in a minute.","1179704370":"Please enter a take profit amount that's higher than the current potential profit.","1180619731":"Each day, you can make up to {{ allowed_internal }} transfers between your Deriv accounts, up to {{ allowed_mt5 }} transfers between your Deriv and {{platform_name_mt5}} accounts, and up to {{ allowed_dxtrade }} transfers between your Deriv and {{platform_name_dxtrade}} accounts.","1181396316":"This block gives you a random number from within a set range","1181770592":"Profit/loss from selling","1183007646":"- Contract type: the name of the contract type such as Rise, Fall, Touch, No Touch, etс.","1184968647":"Close your contract now or keep it running. If you decide to keep it running, you can check and close it later on the ","1188316409":"To receive your funds, contact the payment agent with the details below","1188980408":"5 minutes","1189249001":"4.1. What is considered a complaint?","1189368976":"Please complete your personal details before you verify your identity.","1191429031":"Please click on the link in the email to change your <0>{{platform_name_dxtrade}} password.","1191644656":"Predict the market direction and select either “Up” or “Down” to open a position. We will charge a commission when you open a position.","1192708099":"Duration unit","1195393249":"Notify {{ notification_type }} with sound: {{ notification_sound }} {{ input_message }}","1196006480":"Profit threshold","1196683606":"Deriv MT5 CFDs demo account","1198368641":"Relative Strength Index (RSI)","1199281499":"Last Digits List","1201533528":"Contracts won","1201773643":"numeric","1203297580":"This block sends a message to a Telegram channel.","1204223111":"In this example, the open prices from a list of candles are assigned to a variable called \"candle_list\".","1206227936":"How to mask your card?","1206821331":"Armed Forces","1207152000":"Choose a template and set your trade parameters.","1208714859":"For Short:","1208729868":"Ticks","1208903663":"Invalid token","1211912982":"Bot is starting","1214893428":"Account creation is currently unavailable for mobile. Please log in with your computer to create a new account.","1216408337":"Self-Employed","1217159705":"Bank account number","1217481729":"Tether as an ERC20 token (eUSDT) is a version of Tether that is hosted on Ethereum.","1218546232":"What is Fiat onramp?","1219844088":"do %1","1221250438":"To enable withdrawals, please submit your <0>Proof of Identity (POI) and <1>Proof of Address (POA) and also complete the <2>financial assessment in your account settings.","1222096166":"Deposit via bank wire, credit card, and e-wallet","1222521778":"Making deposits and withdrawals is difficult.","1222544232":"We’ve sent you an email","1225150022":"Number of assets","1227074958":"random fraction","1227240509":"Trim spaces","1228534821":"Some currencies may not be supported by payment agents in your country.","1229883366":"Tax identification number","1230884443":"State/Province (optional)","1231282282":"Use only the following special characters: {{permitted_characters}}","1232291311":"Maximum withdrawal remaining","1232353969":"0-5 transactions in the past 12 months","1233300532":"Payout","1234292259":"Source of wealth","1234764730":"Upload a screenshot of your name and email address from the personal details section.","1235426525":"50%","1237330017":"Pensioner","1238311538":"Admin","1239752061":"In your cryptocurrency wallet, make sure to select the <0>{{network_name}} network when you transfer funds to Deriv.","1239760289":"Complete your trading assessment","1239940690":"Restarts the bot when an error is encountered.","1240027773":"Please Log in","1240688917":"Glossary","1241238585":"You may transfer between your Deriv fiat, cryptocurrency, and {{platform_name_mt5}} accounts.","1242288838":"Hit the checkbox above to choose your document.","1242994921":"Click here to start building your Deriv Bot.","1243064300":"Local","1243287470":"Transaction status","1246207976":"Enter the authentication code generated by your 2FA app:","1246880072":"Select issuing country","1247280835":"Our cryptocurrency cashier is temporarily down due to system maintenance. You can make cryptocurrency deposits and withdrawals in a few minutes when the maintenance is complete.","1248018350":"Source of income","1248940117":"<0>a.The decisions made by the DRC are binding on us. DRC decisions are binding on you only if you accept them.","1250495155":"Token copied!","1252669321":"Import from your Google Drive","1253531007":"Confirmed","1254565203":"set {{ variable }} to create list with","1255827200":"You can also import or build your bot using any of these shortcuts.","1255909792":"last","1255963623":"To date/time {{ input_timestamp }} {{ dummy }}","1258097139":"What could we do to improve?","1258198117":"positive","1259145708":"Let’s try again. Choose another document and enter the corresponding details.","1259598687":"GBP/JPY","1260259925":"Phone is not in a proper format.","1263387702":"All {{count}} account types use market execution. This means you agree with the broker's price in advance and will place orders at the broker's price.","1264096613":"Search for a given string","1264842111":"You can switch between real and demo accounts.","1265704976":"","1269296089":"Let's build a Bot!","1270581106":"If you select \"No Touch\", you win the payout if the market never touches the barrier at any time during the contract period.","1271461759":"Your contract will be closed automatically if your profit reaches this amount.","1272012156":"GBP/CHF","1272337240":"Days","1272681097":"Hours","1274819385":"3. Complaints and Disputes","1281045211":"Sorts the items in a given list, by their numeric or alphabetical value, in either ascending or descending order.","1281290230":"Select","1282951921":"Only Downs","1284522768":"If \"Loss\" is selected, it will return \"True\" if your last trade was unsuccessful. Otherwise, it will return an empty string.","1286094280":"Withdraw","1286507651":"Close identity verification screen","1288965214":"Passport","1289146554":"British Virgin Islands Financial Services Commission","1289646209":"Margin call","1290525720":"Example: ","1291997417":"Contracts will expire at exactly 23:59:59 GMT on your selected expiry date.","1292188546":"Reset Deriv MT5 investor password","1292891860":"Notify Telegram","1293660048":"Max. total loss per day","1294756261":"This block creates a function, which is a group of instructions that can be executed at any time. Place other blocks in here to perform any kind of action that you need in your strategy. When all the instructions in a function have been carried out, your bot will continue with the remaining blocks in your strategy. Click the “do something” field to give it a name of your choice. Click the plus icon to send a value (as a named variable) to your function.","1295284664":"Please accept our <0>updated Terms and Conditions to proceed.","1296380713":"Close my contract","1299479533":"8 hours","1300576911":"Please resubmit your proof of address or we may restrict your account.","1302691457":"Occupation","1303016265":"Yes","1303530014":"We’re processing your withdrawal.","1304083330":"copy","1304272843":"Please submit your proof of address.","1304620236":"Enable camera","1304788377":"<0/><1/>If your complaint relates to our data processing practices, you can submit a formal complaint to the <2>Information and Data Protection Commissioner (Malta) on their website or make a complaint to any supervisory authority within the European Union.","1304807342":"Compare CFDs demo accounts","1305217290":"Upload the back of your identity card.","1308625834":"Sets the default time interval for blocks that read list of candles.","1309017029":"Enabling this allows you to save your blocks as one collection which can be easily integrated into other bots.","1309044871":"Returns the value of the latest tick in string format","1309133590":"Earn a range of payouts by correctly predicting market movements with <0>options, or get the upside of CFDs without risking more than your initial stake with <1>multipliers.","1309186223":"- current stake: Use this variable to store the stake amount used in the last contract. You can assign any amount you want, but it must be a positive number.","1310483610":"Results for \"{{ search_term }}\"","1311680770":"payout","1313167179":"Please log in","1316216284":"You can use this password for all your {{platform}} accounts.","1319217849":"Check your mobile","1320750775":"Front and back","1322804930":"Restart the process on the latest version of Google Chrome","1323327633":"Our complaints process comprises the following 4 steps:","1323476617":"Changes the capitalisation of a string of text to Upper case, Lower case, Title case.","1323941798":"Short","1323996051":"Profile","1324922837":"2. The new variable will appear as a block under Set variable.","1325514262":"(licence no. MB/18/0024)","1327181172":"Financial Vanuatu","1327494533":"{{sell_value}} (Sell)","1329136554":"Jump 200 Index","1329325646":"The content of this block is called on every tick","1331199417":"Please enter the correct format. ","1331367811":"Client account number","1332168410":"Learn more","1332168769":"Disconnect","1333576137":"Please update your {{details}} to continue.","1333839457":"Submit identity card (front)","1334326985":"It may take a few minutes to arrive","1335967988":"Notice","1336052175":"Switch accounts","1337846406":"This block gives you the selected candle value from a list of candles within the selected time interval.","1337864666":"Photo of your document","1338496204":"Ref. ID","1339613797":"Regulator/External dispute resolution","1340286510":"The bot has stopped, but your trade may still be running. You can check it on the Reports page.","1341840346":"View in Journal","1346204508":"Take profit","1346339408":"Managers","1347071802":"{{minutePast}}m ago","1348009461":"Please close your positions in the following Deriv X account(s):","1349133669":"Try changing your search criteria.","1349289354":"Great, that's everything we need","1349295677":"in text {{ input_text }} get substring from {{ position1 }} {{ index1 }} to {{ position2 }} {{ index2 }}","1351906264":"This feature is not available for payment agents.","1353197182":"Please select","1354288636":"Based on your answers, it looks like you have insufficient knowledge and experience in trading CFDs. CFD trading is risky and you could potentially lose all of your capital.<0/><0/>","1355250245":"{{ calculation }} of list {{ input_list }}","1356373528":"Run Deriv EZ on your browser","1356574493":"Returns a specific portion of a given string of text.","1356607862":"Deriv password","1357129681":"{{num_day}} days {{num_hour}} hours {{num_minute}} minutes","1357213116":"Identity card","1358543466":"Not available","1358543748":"enabled","1360929368":"Add a Deriv account","1362578283":"High","1363060668":"Your trading statistics since:","1363645836":"Derived FX","1363675688":"Duration is a required field.","1364958515":"Stocks","1366244749":"Limits","1367023655":"To ensure your loss does not exceed your stake, your contract will be closed automatically when your loss equals to <0/>.","1367488817":"4. Restart trading conditions","1367990698":"Volatility 10 Index","1370647009":"Enjoy higher daily limits","1371193412":"Cancel","1371555192":"Choose your preferred payment agent and enter your withdrawal amount. If your payment agent is not listed, <0>search for them using their account number.","1371641641":"Open the link on your mobile","1371911731":"Financial products in the EU are offered by {{legal_entity_name}}, licensed as a Category 3 Investment Services provider by the Malta Financial Services Authority (<0>Licence no. IS/70156).","1374627690":"Max. account balance","1375884086":"Financial, legal, or government document: recent bank statement, affidavit, or government-issued letter.","1376329801":"Last 60 days","1378419333":"Ether","1380349261":"Range","1383017005":"You have switched accounts.","1384127719":"You should enter {{min}}-{{max}} numbers.","1384222389":"Please submit valid identity documents to unlock the cashier.","1385418910":"Please set a currency for your existing real account before creating another account.","1387503299":"Log in","1388770399":"Proof of identity required","1389197139":"Import error","1390792283":"Trade parameters","1391174838":"Potential payout:","1392966771":"Mrs","1392985917":"This is similar to a commonly used password","1393559748":"Invalid date/time: {{ datetime_string }}","1393901361":"There’s an app for that","1393903598":"if true {{ return_value }}","1396179592":"Commission","1396417530":"Bear Market Index","1397628594":"Insufficient funds","1400341216":"We’ll review your documents and notify you of its status within 1 to 3 days.","1400732866":"View from camera","1402208292":"Change text case","1403376207":"Update my details","1405584799":"with interval: {{ candle_interval_type }}","1407191858":"DTrader","1408844944":"Click the plus icon to extend the functionality of this block.","1411373212":"Strong passwords contain at least 8 characters. combine uppercase and lowercase letters, numbers, and symbols.","1412535872":"You can check the result of the last trade with this block. It can only be placed within the \"Restart trading conditions\" root block.","1413047745":"Assigns a given value to a variable","1413359359":"Make a new transfer","1414205271":"prime","1414918420":"We'll review your proof of identity again and will give you an update as soon as possible.","1415006332":"get sub-list from first","1415513655":"Download cTrader on your phone to trade with the Deriv cTrader account","1415974522":"If you select \"Differs\", you will win the payout if the last digit of the last tick is not the same as your prediction.","1417558007":"Max. total loss over 7 days","1417914636":"Login ID","1418115525":"This block repeats instructions as long as a given condition is true.","1421749665":"Simple Moving Average (SMA)","1422060302":"This block replaces a specific item in a list with another given item. It can also insert the new item in the list at a specific position.","1422129582":"All details must be clear — nothing blurry","1423082412":"Last Digit","1423296980":"Enter your SSNIT number","1424741507":"See more","1424779296":"If you've recently used bots but don't see them in this list, it may be because you:","1428657171":"You can only make deposits. Please contact us via <0>live chat for more information.","1430396558":"5. Restart buy/sell on error","1430632931":"To get trading, please confirm who you are, and where you live.","1433367863":"Sorry, an error occured while processing your request.","1433468641":"We offer our services in all countries, except for the ones mentioned in our terms and conditions.","1434382099":"Displays a dialog window with a message","1434767075":"Get started on Deriv Bot","1434976996":"Announcement","1435363248":"This block converts the number of seconds since the Unix Epoch to a date and time format such as 2019-08-01 00:00:00.","1435380105":"Minimum deposit","1437396005":"Add comment","1438247001":"A professional client receives a lower degree of client protection due to the following.","1438340491":"else","1439168633":"Stop loss:","1441208301":"Total<0 />profit/loss","1442747050":"Loss amount: <0>{{profit}}","1442840749":"Random integer","1443478428":"Selected proposal does not exist","1444843056":"Corporate Affairs Commission","1445592224":"You accidentally gave us another email address (Usually a work or a personal one instead of the one you meant).","1446742608":"Click here if you ever need to repeat this tour.","1449462402":"In review","1452260922":"Too many failed attempts","1452941569":"This block delays execution for a given number of seconds. You can place any blocks within this block. The execution of other blocks in your strategy will be paused until the instructions in this block are carried out.","1453317405":"This block gives you the balance of your account either as a number or a string of text.","1454406889":"Choose <0>until as the repeat option.","1454648764":"deal reference id","1454865058":"Do not enter an address linked to an ICO purchase or crowdsale. If you do, the ICO tokens will not be credited into your account.","1455741083":"Upload the back of your driving licence.","1457341530":"Your proof of identity verification has failed","1457603571":"No notifications","1458160370":"Enter your {{platform}} password to add a {{platform_name}} {{account}} {{jurisdiction_shortcode}} account.","1459761348":"Submit proof of identity","1461323093":"Display messages in the developer’s console.","1464190305":"This block will transfer the control back to the Purchase conditions block, enabling you to purchase another contract without manually stopping and restarting your bot.","1464253511":"You already have an account for each of the cryptocurrencies available on {{deriv}}.","1465084972":"How much experience do you have with other financial instruments?","1465919899":"Pick an end date","1466430429":"Should be between {{min_value}} and {{max_value}}","1466900145":"Doe","1467017903":"This market is not yet available on {{platform_name_trader}}, but it is on {{platform_name_smarttrader}}.","1467421920":"with interval: %1","1467661678":"Cryptocurrency trading","1467880277":"3. General queries","1468308734":"This block repeats instructions as long as a given condition is true","1468419186":"Deriv currently supports withdrawals of Tether USDT to Omni wallet. To ensure a successful transaction, enter a wallet address compatible with the tokens you wish to withdraw. <0>Learn more","1468937050":"Trade on {{platform_name_trader}}","1469133110":"cTrader Windows app","1469150826":"Take Profit","1469764234":"Cashier Error","1469814942":"- Division","1470319695":"Returns either True or False","1471008053":"Deriv Bot isn't quite ready for real accounts","1471070549":"Can contract be sold?","1471741480":"Severe error","1473369747":"Synthetics only","1476301886":"Similar to SMA, this block gives you the entire SMA line containing a list of all values for a given period.","1478030986":"Create or delete API tokens for trading and withdrawals","1480915523":"Skip","1481977420":"Please help us verify your withdrawal request.","1483470662":"Click ‘Open’ to start trading with your account","1484336612":"This block is used to either terminate or continue a loop, and can be placed anywhere within a loop block.","1487086154":"Your documents were submitted successfully","1488548367":"Upload again","1491392301":"<0>Sold for: {{sold_for}}","1492686447":"Your MT5 Financial STP account will be opened through Deriv (FX) Ltd. All trading in this account is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA). None of your other accounts, including your Deriv account, is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA).","1493673429":"Change email","1493866481":"Run Deriv X on your browser","1496810530":"GBP/AUD","1497773819":"Deriv MT5 accounts","1499074768":"Add a real Deriv Multipliers account","1499080621":"Tried to perform an invalid operation.","1501691227":"Add Your Deriv MT5 <0>{{account_type_name}} account under Deriv (V) Ltd, regulated by the Vanuatu Financial Services Commission.","1502039206":"Over {{barrier}}","1502325741":"Your password cannot be the same as your email address.","1503618738":"- Deal reference ID: the reference ID of the contract","1505420815":"No payment agents found for your search","1505898522":"Download stack","1505927599":"Our servers hit a bump. Let’s refresh to move on.","1509559328":"cTrader","1509570124":"{{buy_value}} (Buy)","1509678193":"Education","1510075920":"Gold/USD","1510357015":"Tax residence is required.","1510735345":"This block gives you a list of the last digits of the last 1000 tick values.","1512469749":"In the above example it is assumed that variable candle_open_price is processed somewhere within other blocks.","1513771077":"We're processing your withdrawal.","1516559721":"Please select one file only","1516676261":"Deposit","1516834467":"‘Get’ the accounts you want","1517503814":"Drop file or click here to upload","1519124277":"Derived SVG","1519891032":"Welcome to Trader's Hub","1520332426":"Net annual income","1524636363":"Authentication failed","1526483456":"2. Enter a name for your variable, and hit Create. New blocks containing your new variable will appear below.","1527251898":"Unsuccessful","1527664853":"Your payout is equal to the payout per point multiplied by the difference between the final price and the strike price.","1527906715":"This block adds the given number to the selected variable.","1531017969":"Creates a single text string from combining the text value of each attached item, without spaces in between. The number of items can be added accordingly.","1533177906":"Fall","1534796105":"Gets variable value","1537711064":"You need to make a quick identity verification before you can access the Cashier. Please go to your account settings to submit your proof of identity.","1540585098":"Decline","1541508606":"Looking for CFDs? Go to Trader's Hub","1541969455":"Both","1542742708":"Synthetics, Forex, Stocks, Stock indices, Commodities, and Cryptocurrencies","1544642951":"If you select \"Only Ups\", you win the payout if consecutive ticks rise successively after the entry spot. No payout if any tick falls or is equal to any of the previous ticks.","1547148381":"That file is too big (only up to 8MB allowed). Please upload another file.","1549098835":"Total withdrawn","1551172020":"AUD Basket","1552162519":"View onboarding","1555345325":"User Guide","1557426040":"Demo Derived SVG","1557682012":"Account Settings","1557904289":"We accept only these types of documents as proof of your address. The document must be recent (issued within last 6 months) and include your name and address:","1558972889":"set {{ variable }} to Simple Moving Average {{ dummy }}","1559220089":"Options and multipliers trading platform.","1560302445":"Copied","1562374116":"Students","1562982636":"Re-add your MT5 account using the same log in credentials.","1564392937":"When you set your limits or self-exclusion, they will be aggregated across all your account types in {{platform_name_trader}} and {{platform_name_dbot}}. For example, the losses made on both platforms will add up and be counted towards the loss limit you set.","1566037033":"Bought: {{longcode}} (ID: {{transaction_id}})","1566717687":"We also provide a guide on the Tutorial tab to show you how you can build and execute a simple strategy.","1567076540":"Only use an address for which you have proof of residence - ","1567745852":"Bot name","1569624004":"Dismiss alert","1570484627":"Ticks list","1571575776":"Accepted formats: pdf, jpeg, jpg, and png. Max file size: 8MB","1572504270":"Rounding operation","1572982976":"Server","1573429525":"Call/Put","1573533094":"Your document is pending for verification.","1574989243":"- trade again: Use this variable to stop trading when your loss limit is reached. Set the initial value to true.","1575556189":"Tether on the Ethereum blockchain, as an ERC20 token, is a newer transport layer, which now makes Tether available in Ethereum smart contracts. As a standard ERC20 token, it can also be sent to any Ethereum address.","1577480486":"Your mobile link will expire in one hour","1577527507":"Account opening reason is required.","1577612026":"Select a folder","1579839386":"Appstore","1580498808":"Multiple faces found","1584109614":"Ticks String List","1584936297":"XML file contains unsupported elements. Please check or modify file.","1585859194":"We’ll charge a 1% transfer fee for transfers in different currencies between your Deriv fiat and {{platform_name_mt5}} accounts, your Deriv fiat and {{platform_name_derivez}} accounts, and your Deriv fiat and {{platform_name_dxtrade}} accounts.","1587046102":"Documents from that country are not currently supported — try another document type","1589148299":"Start","1589640950":"Resale of this contract is not offered.","1589702653":"Proof of address","1590400723":"Total assets in all your accounts","1591933071":"Resubmit document","1593010588":"Login now","1594147169":"Please come back in","1594322503":"Sell is available","1596378630":"You have added a real Gaming account.<0/>Make a deposit now to start trading.","1597672660":"Deriv MT5 Password","1598009247":"<0>a.You may file a complaint with the Financial Commission up to 45 days after the incident.","1598443642":"Transaction hash","1602894348":"Create a password","1604916224":"Absolute","1605222432":"I have no knowledge and experience in trading at all.","1605292429":"Max. total loss","1612105450":"Get substring","1612638396":"Cancel your trade at any time within a specified timeframe.","1613633732":"Interval should be between 10-60 minutes","1615897837":"Signal EMA Period {{ input_number }}","1618809782":"Maximum withdrawal","1619070150":"You are being redirected to an external website.","1620278321":"Names and surnames by themselves are easy to guess","1620346110":"Set currency","1621024661":"Tether as a TRC20 token (tUSDT) is a version of Tether that is hosted on Tron.","1622662457":"Date from","1622944161":"Now, go to the <0>Restart trading conditions block.","1623706874":"Use this block when you want to use multipliers as your trade type.","1628981793":"Can I trade cryptocurrencies on Deriv Bot?","1630417358":"Please go to your account settings and complete your personal details to enable withdrawals.","1631281562":"GBP Basket","1634903642":"Only your face can be in the selfie","1634969163":"Change currency","1635266650":"It seems that your name in the document is not the same as your Deriv profile. Please update your name in the <0>Personal details page to solve this issue.","1635628424":"An envelope with your name and address.","1636605481":"Platform settings","1636782601":"Multipliers","1638321777":"Your demo account balance is low. Reset your balance to continue trading from your demo account.","1639262461":"Pending withdrawal request:","1639304182":"Please click on the link in the email to reset your password.","1641395634":"Last digits list","1641635657":"New proof of identity document needed","1641980662":"Salutation is required.","1644636153":"Transaction hash: <0>{{value}}","1644703962":"Looking for CFD accounts? Go to Trader's Hub","1644864436":"You’ll need to authenticate your account before requesting to become a professional client. <0>Authenticate my account","1644908559":"Digit code is required.","1647186767":"The bot encountered an error while running.","1648938920":"Netherlands 25","1649239667":"2. Under the Blocks menu, you'll see a list of categories. Blocks are grouped within these categories. Choose the block you want and drag them to the workspace.","1651513020":"Display remaining time for each interval","1651951220":"Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"","1652366857":"get and remove","1652968048":"Define your trade options such as multiplier and stake.","1652976865":"In this example, this block is used with another block to get the open prices from a list of candles. The open prices are then assigned to the variable called \"cl\".","1653136377":"copied!","1653180917":"We cannot verify you without using your camera","1654365787":"Unknown","1654721858":"Upload anyway","1655627840":"UPPER CASE","1656155124":"Resend in <0 /> seconds","1658954996":"Plant and Machine Operators and Assemblers","1659074761":"Reset Put","1659352235":"Add your Deriv MT5 CFDs account under Deriv Investments (Europe) Limited, regulated by the Malta Financial Services Authority (MFSA) (licence no. IS/70156).","1665272539":"Remember: You cannot log in to your account until the selected date.","1665738338":"Balance","1665756261":"Go to live chat","1668138872":"Modify account settings","1670016002":"Multiplier: {{ multiplier }}","1670426231":"End Time","1671232191":"You have set the following limits:","1674163852":"You can determine the expiry of your contract by setting the duration or end time.","1675030608":"To create this account first we need you to resubmit your proof of address.","1675289747":"Switched to real account","1676549796":"Dynamic Leverage","1677027187":"Forex","1677990284":"My apps","1679743486":"1. Go to Quick strategy and select the strategy you want.","1680666439":"Upload your bank statement showing your name, account number, and transaction history.","1682409128":"Untitled Strategy","1682636566":"Resend email in","1683522174":"Top-up","1683963454":"Your contract will be closed automatically at the next available asset price on {{date}} at {{timestamp}}.","1684419981":"What's this?","1686800117":"{{error_msg}}","1687173740":"Get more","1689103988":"Second Since Epoch","1689258195":"We were unable to verify your address with the details you provided. Please check and resubmit or choose a different document type.","1691335819":"To continue trading with us, please confirm who you are.","1691765860":"- Negation","1692912479":"Deriv MT5, Deriv X","1693614409":"Start time","1694331708":"You can switch between CFDs, digital options, and multipliers at any time.","1694517345":"Enter a new email address","1698624570":"2. Hit Ok to confirm.","1700233813":"Transfer from {{selected_value}} is not allowed, Please choose another account from dropdown","1701447705":"Please update your address","1702339739":"Common mistakes","1703091957":"We collect information about your employment as part of our due diligence obligations, as required by anti-money laundering legislation.","1704656659":"How much experience do you have in CFD trading?","1708413635":"For your {{currency_name}} ({{currency}}) account","1709401095":"Trade CFDs on Deriv X with financial markets and our Derived indices.","1709859601":"Exit Spot Time","1710662619":"If you have the app, launch it to start trading.","1711013665":"Anticipated account turnover","1711676335":"square root","1711929663":"Your funds have been transferred","1712357617":"Invalid email address.","1714255392":"To enable withdrawals, please complete your financial assessment.","1715011380":"Jump 25 Index","1715630945":"Returns the total profit in string format","1717023554":"Resubmit documents","1719248689":"EUR/GBP/USD","1720451994":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv fiat and Deriv cryptocurrency accounts.","1720968545":"Upload passport photo page from your computer","1723589564":"Represents the maximum number of outstanding contracts in your portfolio. Each line in your portfolio counts for one open position. Once the maximum is reached, you will not be able to open new positions without closing an existing position first.","1724696797":"You are limited to one fiat account only.","1725958461":"Account number","1726472773":"Function with no return value","1726565314":"Close my account","1728121741":"Transactions.csv","1728183781":"About Tether","1729145421":"Risk warning","1731747596":"The block(s) highlighted in red are missing input values. Please update them and click \"Run bot\".","1732891201":"Sell price","1733711201":"Regulators/external dispute resolution","1734185104":"Balance: %1","1734264460":"Disclaimer","1736292549":"Update postal code","1737352280":"Bot.init is not called","1738094481":"<0>Duration: Ticks 1","1738681493":"Remove your glasses, if necessary","1739086943":"Wall Street 30","1739384082":"Unemployed","1739668049":"Close your account","1740371444":"Underlying market is not selected","1742256256":"Please upload one of the following documents:","1743448290":"Payment agents","1743679873":"If you select <0>\"Call\", you’ll earn a <1>payout if the <1>final price is above the <1>strike price at <1>expiry. Otherwise, you won’t receive a payout.","1743902050":"Complete your financial assessment","1744509610":"Just drag the XML file from your computer onto the workspace, and your bot will be loaded accordingly. Alternatively, you can hit Import in Bot Builder, and choose to import your bot from your computer or from your Google Drive.","1745523557":"- Square root","1746051371":"Download the app","1746273643":"Moving Average Convergence Divergence","1747501260":"Sell conditions","1747523625":"Go back","1747674345":"Please use `.` as a decimal separator for fractional numbers.","1747682136":"Contract was cancelled.","1748754976":"Run","1749675724":"Deriv charges no commission across all account types.","1750065391":"Login time:","1753183432":"We take all complaints seriously and aim to resolve them as quickly and fairly as possible. If you are unhappy with any aspect of our service, please let us know by submitting a complaint using the guidance below:","1753226544":"remove","1753975551":"Upload passport photo page","1756678453":"break out","1758386013":"Do not get lured to fake \"Deriv\" pages!","1761038852":"Let’s continue with providing proofs of address and identity.","1761762171":"Restart last trade on error (bot ignores the unsuccessful trade): {{ checkbox }}","1762707297":"Phone number","1762746301":"MF4581125","1763123662":"Upload your NIMC slip.","1766212789":"Server maintenance starts at 06:00 GMT every Sunday and may last up to 2 hours. You may experience service disruption during this time.","1766993323":"Only letters, numbers, and underscores are allowed.","1767429330":"Add a Derived account","1768293340":"Contract value","1768861315":"Minute","1768918213":"Only letters, space, hyphen, period, and apostrophe are allowed.","1769068935":"Choose any of these exchanges to buy cryptocurrencies:","1771037549":"Add a Deriv real account","1771592738":"Conditional block","1777847421":"This is a very common password","1778893716":"Click here","1779144409":"Account verification required","1779519903":"Should be a valid number.","1780442963":"Scan the QR code to download {{ platform }}.","1780770384":"This block gives you a random fraction between 0.0 to 1.0.","1781393492":"We do not charge a transfer fee for transfers in the same currency between your Deriv fiat and {{platform_name_mt5}} accounts, your Deriv fiat and {{platform_name_derivez}} accounts and your Deriv fiat and {{platform_name_dxtrade}} accounts.","1782308283":"Quick strategy","1782395995":"Last Digit Prediction","1782690282":"Blocks menu","1782703044":"Sign up","1783526986":"How do I build a trading bot?","1783740125":"Upload your selfie","1787135187":"Postal/ZIP code is required","1787492950":"Indicators on the chart tab are for indicative purposes only and may vary slightly from the ones on the {{platform_name_dbot}} workspace.","1788515547":"<0/>For more information on submitting a complaint with the Office of the Arbiter for Financial Services, please <1>see their guidance.","1788966083":"01-07-1999","1789273878":"Payout per point","1789497185":"Make sure your passport details are clear to read, with no blur or glare","1790770969":"FX-majors (standard/micro lots), FX-minors, Commodities, Cryptocurrencies","1791432284":"Search for country","1791971912":"Recent","1792037169":"To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your {{document_name}}.","1793913365":"To deposit money, please switch to your {{currency_symbol}} account.","1794815502":"Download your transaction history.","1796787905":"Please upload the following document(s).","1798943788":"You can only make deposits.","1801093206":"Get candle list","1801270786":"Ready to automate your trading strategy without writing any code? You’ve come to the right place.","1801927731":"{{platform_name_dxtrade}} accounts","1803338729":"Choose what type of contract you want to trade. For example, for the Rise/Fall trade type you can choose one of three options: Rise, Fall, or Both. Selected option will determine available options for the Purchase block.","1804620701":"Expiration","1804789128":"{{display_value}} Ticks","1806017862":"Max. ticks","1806355993":"No commission","1808058682":"Blocks are loaded successfully","1808393236":"Login","1808867555":"This block uses the variable “i” to control the iterations. With each iteration, the value of “i” is determined by the items in a given list.","1810217569":"Please refresh this page to continue.","1811109068":"Jurisdiction","1811972349":"Market","1811973475":"Returns a specific character from a given string","1812006199":"Identity verification","1812582011":"Connecting to server","1813700208":"Boom 300 Index","1813958354":"Remove comment","1815034361":"alphabetic","1815905959":"DTrader, DBot, SmartTrader, and Binary Bot","1815995250":"Buying contract","1816126006":"Trade on Deriv MT5 ({{platform_name_dmt5}}), the all-in-one FX and CFD trading platform.","1817154864":"This block gives you a random number from within a set range.","1820242322":"e.g. United States","1820332333":"Top up","1821818748":"Enter Driver License Reference number","1823177196":"Most popular","1824193700":"This block gives you the last digit of the latest tick value.","1824292864":"Call","1827607208":"File not uploaded.","1828370654":"Onboarding","1830520348":"{{platform_name_dxtrade}} Password","1831847842":"I confirm that the name and date of birth above match my chosen identity document (see below)","1833481689":"Unlock","1833499833":"Proof of identity documents upload failed","1836767074":"Search payment agent name","1837762008":"Please submit your proof of identity and proof of address to verify your account in your account settings to access the cashier.","1838639373":"Resources","1839021527":"Please enter a valid account number. Example: CR123456789","1840865068":"set {{ variable }} to Simple Moving Average Array {{ dummy }}","1841381387":"Get more wallets","1841788070":"Palladium/USD","1841996888":"Daily loss limit","1842266423":"back","1842862156":"Welcome to your Deriv X dashboard","1843658716":"If you select \"Only Downs\", you win the payout if consecutive ticks fall successively after the entry spot. No payout if any tick rises or is equal to any of the previous ticks.","1845892898":"(min: {{min_stake}} - max: {{max_payout}})","1846266243":"This feature is not available for demo accounts.","1846587187":"You have not selected your country of residence","1846664364":"{{platform_name_dxtrade}}","1849484058":"Any unsaved changes will be lost.","1850031313":"- Low: the lowest price","1850132581":"Country not found","1850659345":"- Payout: the payout of the contract","1850663784":"Submit proofs","1851052337":"Place of birth is required.","1851776924":"upper","1854480511":"Cashier is locked","1854874899":"Back to list","1855566768":"List item position","1856485118":"Please <0>resubmit your proof of address to transfer funds between MT5 and Deriv accounts.","1856755117":"Pending action required","1856932069":"For Long:","1858251701":"minute","1859308030":"Give feedback","1863053247":"Please upload your identity document.","1863694618":"Trade CFDs on MT5 with forex, stocks, stock indices, commodities, and cryptocurrencies.","1863731653":"To receive your funds, contact the payment agent","1865525612":"No recent transactions.","1866811212":"Deposit in your local currency via an authorised, independent payment agent in your country.","1866836018":"<0/><1/>If your complaint relates to our data processing practices, you can submit a formal complaint to your local supervisory authority.","1867217564":"Index must be a positive integer","1867783237":"High-to-Close","1869315006":"See how we protect your funds to unlock the cashier.","1869787212":"Even","1870933427":"Crypto","1871196637":"True if the result of the last trade matches the selection","1871377550":"Do you offer pre-built trading bots on Deriv Bot?","1871664426":"Note","1873838570":"Please verify your address","1874481756":"Use this block to purchase the specific contract you want. You may add multiple Purchase blocks together with conditional blocks to define your purchase conditions. This block can only be used within the Purchase conditions block.","1874756442":"BVI","1875702561":"Load or build your bot","1876015808":"Social Security and National Insurance Trust","1876325183":"Minutes","1877225775":"Your proof of address is verified","1877832150":"# from end","1878172674":"No, we don't. However, you'll find quick strategies on Deriv Bot that'll help you build your own trading bot for free.","1879042430":"Appropriateness Test, WARNING:","1879412976":"Profit amount: <0>{{profit}}","1879651964":"<0>Pending verification","1880029566":"Australian Dollar","1880097605":"prompt for {{ string_or_number }} with message {{ input_text }}","1880875522":"Create \"get %1\"","1881018702":"hour","1881587673":"Total stake since you last cleared your stats.","1882825238":"Restart trading conditions","1883531976":"Clerks","1885708031":"#","1889357660":"Enter a value in minutes, up to 60480 minutes (equivalent to 6 weeks).","1890171328":"By clicking Accept below and proceeding with the Account Opening you should note that you may be exposing yourself to risks (which may be significant, including the risk of loss of the entire sum invested) that you may not have the knowledge and experience to properly assess or mitigate.","1890332321":"Returns the number of characters of a given string of text, including numbers, spaces, punctuation marks, and symbols.","1893869876":"(lots)","1894667135":"Please verify your proof of address","1898670234":"{{formatted_opening_time}} (GMT) on {{opening_day}},<0> {{opening_date}}.","1899898605":"Maximum size: 8MB","1902547203":"MetaTrader 5 MacOS app","1903437648":"Blurry photo detected","1905032541":"We're now ready to verify your identity","1905589481":"If you want to change your account currency, please contact us via <0>live chat.","1906213000":"Our system will finish any Deriv Bot trades that are running, and Deriv Bot will not place any new trades.","1906639368":"If this is the first time you try to create a password, or you have forgotten your password, please reset it.","1907884620":"Add a real Deriv Gaming account","1908023954":"Sorry, an error occurred while processing your request.","1908239019":"Make sure all of the document is in the photo","1908686066":"Appropriateness Test Warning","1909647105":"TRX/USD","1909769048":"median","1913777654":"Switch account","1914014145":"Today","1914270645":"Default Candle Interval: {{ candle_interval_type }}","1914725623":"Upload the page that contains your photo.","1917178459":"Bank Verification Number","1917523456":"This block sends a message to a Telegram channel. You will need to create your own Telegram bot to use this block.","1918796823":"Please enter a stop loss amount.","1918832194":"No experience","1919030163":"Tips to take a good selfie","1919594496":"{{website_name}} is not affiliated with any payment agents. Customers deal with payment agents at their sole risk. Customers are advised to check the credentials of payment agents and the accuracy of any information about payment agents (on {{website_name}} or elsewhere) before using their services.","1919694313":"To start trading, transfer funds from your Deriv account into this account.","1920217537":"Compare","1920468180":"How to use the SMA block","1921634159":"A few personal details","1921914669":"Deposit with Deriv P2P","1922529883":"Boom 1000 Index","1922955556":"Use a longer keyboard pattern with more turns","1923431535":"“Stop loss” is deactivated and will only be available when “Deal cancellation” expires.","1924365090":"Maybe later","1924765698":"Place of birth*","1926987784":"- iOS: Swipe left on the account and tap <0>Delete.","1928930389":"GBP/NOK","1929694162":"Compare accounts","1930899934":"Tether","1931659123":"Run on every tick","1931884033":"It seems that your date of birth in the document is not the same as your Deriv profile. Please update your date of birth in the <0>Personal details page to solve this issue.","1934450653":"For <0>Contract type, set it to Both.","1938327673":"Deriv {{platform}} <0>{{is_demo}}","1939014728":"How do I remove blocks from the workspace?","1939902659":"Signal","1940408545":"Delete this token","1941915555":"Try later","1942091675":"Cryptocurrency trading is not available for clients residing in the United Kingdom.","1943440862":"Calculates Bollinger Bands (BB) list from a list with a period","1944204227":"This block returns current account balance.","1947527527":"1. This link was sent by you","1948092185":"GBP/CAD","1949719666":"Here are the possible reasons:","1950413928":"Submit identity documents","1952580688":"Submit passport photo page","1955219734":"Town/City*","1957759876":"Upload identity document","1958807602":"4. 'Table' takes an array of data, such as a list of candles, and displays it in a table format.","1959678342":"Highs & Lows","1960240336":"first letter","1964097111":"USD","1964165648":"Connection lost","1965916759":"Asian options settle by comparing the last tick with the average spot over the period.","1966023998":"2FA enabled","1966281100":"Console {{ message_type }} value: {{ input_message }}","1968025770":"Bitcoin Cash","1968077724":"Agriculture","1968368585":"Employment status","1970060713":"You’ve successfully deleted a bot.","1971898712":"Add or manage account","1973060793":"- maximum loss: Use this variable to store your maximum loss limit. You can assign any amount you want, but it must be a positive number.","1973536221":"You have no open positions yet.","1973564194":"You are limited to one fiat account. You won’t be able to change your account currency if you have already made your first deposit or created a real {{dmt5_label}} or {{platform_name_dxtrade}} account.","1973910243":"Manage your accounts","1974273865":"This scope will allow third-party apps to view your account activity, settings, limits, balance sheets, trade purchase history, and more.","1974903951":"If you hit Yes, the info you entered will be lost.","1981940238":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}} and {{legal_entity_name_v}}.","1982912252":"Relative Strength Index (RSI) from a list with a period","1983001416":"Define your trade options such as multiplier and stake. This block can only be used with the multipliers trade type. If you select another trade type, this block will be replaced with the Trade options block.","1983358602":"This policy, which may change from time to time, applies to your account registered with {{legal_entity_name}}.","1983387308":"Preview","1983480826":"Sign in","1983544897":"P.O. Box is not accepted in address","1983676099":"Please check your email for details.","1984700244":"Request an input","1984742793":"Uploading documents","1985366224":"Each day, you can make up to {{ allowed_internal }} transfers between your Deriv accounts and up to {{ allowed_mt5 }} transfers between your Deriv and {{platform_name_mt5}} accounts.","1985637974":"Any blocks placed within this block will be executed at every tick. If the default candle interval is set to 1 minute in the Trade Parameters root block, the instructions in this block will be executed once every minute. Place this block outside of any root block.","1986498784":"BTC/LTC","1987080350":"Demo","1987447369":"Your cashier is locked","1988153223":"Email address","1988302483":"Take profit:","1988601220":"Duration value","1990331072":"Proof of ownership","1990735316":"Rise Equals","1991055223":"View the market price of your favourite assets.","1991448657":"Don't know your tax identification number? Click <0>here to learn more.","1991524207":"Jump 100 Index","1994023526":"The email address you entered had a mistake or typo (happens to the best of us).","1994558521":"The platforms aren’t user-friendly.","1994600896":"This block requires a list of candles as an input parameter.","1995023783":"First line of address*","1996767628":"Please confirm your tax information.","1997138507":"If the last tick is equal to the average of the ticks, you don't win the payout.","1997313835":"Your stake will continue to grow as long as the current spot price remains within a specified <0>range from the <0>previous spot price. Otherwise, you lose your stake and the trade is terminated.","1998199587":"You can also exclude yourself entirely for a specified duration. If, at any time, you decide to trade again, you must then contact our Customer Support to remove this self-exclusion. There will be a 24-hour-cooling-off period before you can resume trading. ","1999346412":"For faster verification, input the same address here as in your proof of address document (see section below)","2001222130":"Check your spam or junk folder. If it's not there, try resending the email.","2004792696":"If you are a UK resident, to self-exclude from all online gambling companies licensed in Great Britain, go to <0>www.gamstop.co.uk.","2007028410":"market, trade type, contract type","2007092908":"Trade with leverage and low spreads for better returns on successful trades.","2010759971":"Uploads successful","2010866561":"Returns the total profit/loss","2011609940":"Please input number greater than 0","2011808755":"Purchase Time","2014536501":"Card number","2014590669":"Variable '{{variable_name}}' has no value. Please set a value for variable '{{variable_name}}' to notify.","2017672013":"Please select the country of document issuance.","2020545256":"Close your account?","2021037737":"Please update your details to continue.","2021161151":"Watch this video to learn how to build a trading bot on Deriv Bot. Also, check out this blog post on building a trading bot.","2023659183":"Student","2023762268":"I prefer another trading website.","2025339348":"Move away from direct light — no glare","2027625329":"Simple Moving Average Array (SMAA)","2027696535":"Tax information","2028163119":"EOS/USD","2029237955":"Labuan","2029641956":"CFDCompareAccounts","2030018735":"RSI is a technical analysis tool that helps you identify the market trend. It will give you a value from 0 to 100. An RSI value of 70 and above means that the asset is overbought and the current trend may reverse, while a value of 30 and below means that the asset is oversold.","2030045667":"Message","2033648953":"This block gives you the specified candle value for a selected time interval.","2034803607":"You must be 18 years old and above.","2035258293":"Start trading with us","2035925727":"sort {{ sort_type }} {{ sort_direction }} {{ input_list }}","2036578466":"Should be {{value}}","2037607934":"The purchase of <0>{{trade_type_name}} contract has been completed successfully for the amount of <0> {{buy_price}} {{currency}}","2037665157":"Expand All Blocks","2037906477":"get sub-list from #","2042023623":"We’re reviewing your documents. This should take about 5 minutes.","2042050260":"- Purchase price: the purchase price (stake) of the contract","2042115724":"Upload a screenshot of your account and personal details page with your name, account number, phone number, and email address.","2044086432":"The close is the latest tick at or before the end time. If you selected a specific end time, the end time is the selected time.","2046273837":"Last tick","2046577663":"Import or choose your bot","2048110615":"Email address*","2048134463":"File size exceeded.","2049386104":"We need you to submit these in order to get this account:","2050170533":"Tick list","2051558666":"View transaction history","2054889300":"Create \"%1\"","2055317803":"Copy the link to your mobile browser","2057082550":"Accept our updated <0>terms and conditions","2057419639":"Exit Spot","2059365224":"Yes, you can get started with a pre-built bot using the Quick strategy feature. You’ll find some of the most popular trading strategies here: Martingale, D'Alembert, and Oscar's Grind. Just select the strategy, enter your trade parameters, and your bot will be created for you. You can always tweak the parameters later.","2059753381":"Why did my verification fail?","2060873863":"Your order {{order_id}} is complete","2062912059":"function {{ function_name }} {{ function_params }}","2063655921":"By purchasing the \"Close-to-Low\" contract, you'll win the multiplier times the difference between the close and low over the duration of the contract.","2063812316":"Text Statement","2063890788":"Cancelled","2065278286":"Spread","2067903936":"Driving licence","2070002739":"Don’t accept","2070345146":"When opening a leveraged CFD trade.","2070518923":"Import your bot or tap Quick Strategies to choose from the ready-to-use bot templates.","2070752475":"Regulatory Information","2071043849":"Browse","2073813664":"CFDs, Options or Multipliers","2074235904":"Last name is required.","2074497711":"The Telegram notification could not be sent","2074713563":"4.2. Submission of a complaint","2080553498":"3. Get the chat ID using the Telegram REST API (read more: https://core.telegram.org/bots/api#getupdates)","2080829530":"Sold for: {{sold_for}}","2082533832":"Yes, delete","2084693624":"Converts a string representing a date/time string into seconds since Epoch. Example: 2019-01-01 21:03:45 GMT+0800 will be converted to 1546347825. Time and time zone offset are optional.","2085387371":"Must be numbers, letters, and special characters . , ' -","2085602195":"- Entry value: the value of the first tick of the contract","2086742952":"You have added a real Options account.<0/>Make a deposit now to start trading.","2086792088":"Both barriers should be relative or absolute","2088735355":"Your session and login limits","2089581483":"Expires on","2090650973":"The spot price may change by the time your order reaches our servers. When this happens, your payout may be affected.","2091671594":"Status","2093675079":"- Close: the closing price","2096014107":"Apply","2096456845":"Date of birth*","2096603244":"Derived - Vanuatu","2097170986":"About Tether (Omni)","2097365786":"A copy of your identity document (identity card, passport)","2097381850":"Calculates Simple Moving Average line from a list with a period","2097932389":"Upload 2 separate screenshots from the personal details page and the account page via <0>https://app.astropay.com/profile","2100713124":"account","2101972779":"This is the same as the above example, using a tick list.","2102572780":"Length of digit code must be 6 characters.","2104115663":"Last login","2104364680":"Please switch to your demo account to run your Deriv Bot.","2104397115":"Please go to your account settings and complete your personal details to enable deposits and withdrawals.","2107381257":"Scheduled cashier system maintenance","2109312805":"The spread is the difference between the buy price and sell price. A variable spread means that the spread is constantly changing, depending on market conditions. A fixed spread remains constant but is subject to alteration, at the Broker's absolute discretion.","2110365168":"Maximum number of trades reached","2111015970":"This block helps you check if your contract can be sold. If your contract can be sold, it returns “True”. Otherwise, it returns an empty string.","2111528352":"Creating a variable","2112119013":"Take a selfie showing your face","2112175277":"with delimiter","2113321581":"Add a Deriv Gaming account","2115223095":"Loss","2117165122":"1. Create a Telegram bot and get your Telegram API token. Read more on how to create bots in Telegram here: https://core.telegram.org/bots#6-botfather","2117489390":"Auto update in {{ remaining }} seconds","2119449126":"Example output of the below example will be:","2119710534":"FAQ","2121227568":"NEO/USD","2122152120":"Assets","2127564856":"Withdrawals are locked","2129807378":"Update profile","2131963005":"Please withdraw your funds from the following Deriv MT5 account(s):","2133451414":"Duration","2133470627":"This block returns the potential payout for the selected trade type. This block can be used only in the \"Purchase conditions\" root block.","2135563258":"Forex trading frequency","2136246996":"Selfie uploaded","2137901996":"This will clear all data in the summary, transactions, and journal panels. All counters will be reset to zero.","2137993569":"This block compares two values and is used to build a conditional structure.","2138861911":"Scans and photocopies are not accepted","2139171480":"Reset Up/Reset Down","2139362660":"left side","2141055709":"New {{type}} password","2141873796":"Get more info on <0>CFDs, <1>multipliers, and <2>options.","2143803283":"Purchase Error","2144609616":"If you select \"Reset-Down”, you win the payout if the exit spot is strictly lower than either the entry spot or the spot at reset time.","2145690912":"Income Earning","2145995536":"Create new account","2146336100":"in text %1 get %2","2146698770":"Pro tip: You can also click and drag out the desired block","2146892766":"Binary options trading experience","2147244655":"How do I import my own trading bot into Deriv Bot?","-931052769":"Submit verification","-1004605898":"Tips","-1938142055":"Documents uploaded","-448090287":"The link only works on mobile devices","-1244287721":"Something's gone wrong","-241258681":"You'll need to restart your verification on your computer","-929254273":"Get secure link","-2021867851":"Check back here to finish the submission","-1547069149":"Open the link and complete the tasks","-1767652006":"Here's how to do it:","-277611959":"You can now return to your computer to continue","-724178625":"Make sure full document is visible","-1519380038":"Glare detected","-1895280620":"Make sure your card details are clear to read, with no blur or glare","-1464447919":"Make sure your permit details are clear to read, with no blur or glare","-1436160506":"Make sure details are clear to read, with no blur or glare","-759124288":"Close","-759118956":"Redo","-753375398":"Enlarge image","-1042933881":"Driver's license","-1503134764":"Face photo page","-1335343167":"Sorry, no mobile phone bills","-699045522":"Documents you can use to verify your identity","-543666102":"It must be an official photo ID","-903877217":"These are the documents most likely to show your current home address","-1356835948":"Choose document","-1364375936":"Select a %{country} document","-401586196":"or upload photo – no scans or photocopies","-3110517":"Take a photo with your phone","-2033894027":"Submit identity card (back)","-20684738":"Submit license (back)","-1359585500":"Submit license (front)","-106779602":"Submit residence permit (back)","-1287247476":"Submit residence permit (front)","-1954762444":"Restart the process on the latest version of Safari","-261174676":"Must be under 10MB.","-685885589":"An error occurred while loading the component","-502539866":"Your face is needed in the selfie","-1377968356":"Please try again","-1226547734":"Try using a JPG or PNG file","-849068301":"Loading...","-1730346712":"Loading","-1849371752":"Check that your number is correct","-309848900":"Copy","-1424436001":"Send link","-1093833557":"How to scan a QR code","-1408210605":"Point your phone’s camera at the QR code","-1773802163":"If it doesn’t work, download a QR code scanner from Google Play or the App Store","-109026565":"Scan QR code","-1644436882":"Get link via SMS","-1667839246":"Enter mobile number","-1533172567":"Enter your mobile number:","-1352094380":"Send this one-time link to your phone","-28974899":"Get your secure link","-359315319":"Continue","-1279080293":"2. Your desktop window stays open","-102776692":"Continue with the verification","-89152891":"Take a photo of the back of your card","-1646367396":"Take a photo of the front of your card","-1350855047":"Take a photo of the front of your license","-2119367889":"Take a photo using the basic camera mode instead","-342915396":"Take a photo","-419040068":"Passport photo page","-1354983065":"Refresh","-1925063334":"Recover camera access to continue face verification","-54784207":"Camera access is denied","-1392699864":"Allow camera access","-269477401":"Provide the whole document page for best results","-864639753":"Upload back of card from your computer","-1309771027":"Upload front of license from your computer","-1722060225":"Take photo","-565732905":"Selfie","-1703181240":"Check that it is connected and functional. You can also continue verification on your phone","-2043114239":"Camera not working?","-2029238500":"It may be disconnected. Try using your phone instead.","-468928206":"Make sure your device's camera works","-466246199":"Camera not working","-698978129":"Remember to press stop when you're done. Redo video actions","-538456609":"Looks like you took too long","-781816433":"Photo of your face","-1471336265":"Make sure your selfie clearly shows your face","-1375068556":"Check selfie","-1914530170":"Face forward and make sure your eyes are clearly visible","-776541617":"We'll compare it with your document","-478752991":"Your link will expire in one hour","-1859729380":"Keep this window open while using your mobile","-1283761937":"Resend link","-629011256":"Don't refresh this page","-1005231905":"Once you've finished we'll take you to the next step","-542134805":"Upload photo","-1462975230":"Document example","-1472844935":"The photo should clearly show your document","-189310067":"Account closed","-1823540512":"Personal details","-849320995":"Assessments","-773766766":"Email and passwords","-1466827732":"Self exclusion","-1498206510":"Account limits","-241588481":"Login history","-966136867":"Connected apps","-213009361":"Two-factor authentication","-526636259":"Error 404","-1227878799":"Speculative","-1196936955":"Upload a screenshot of your name and email address from the personal information section.","-1286823855":"Upload your mobile bill statement showing your name and phone number.","-1309548471":"Upload your bank statement showing your name and account details.","-1410396115":"Upload a photo showing your name and the first six and last four digits of your card number. If the card does not display your name, upload the bank statement showing your name and card number in the transaction history.","-3805155":"Upload a screenshot of either of the following to process the transaction:","-1523487566":"- your account profile section on the website","-613062596":"- the Account Information page on the app","-1718304498":"User ID","-609424336":"Upload a screenshot of your name, account number, and email address from the personal details section of the app or profile section of your account on the website.","-1954436643":"Upload a screenshot of your username on the General Information page at <0>https://onlinenaira.com/members/index.htm","-79853954":"Upload a screenshot of your account number and phone number on the Bank Account/Mobile wallet page at <0>https://onlinenaira.com/members/bank.htm","-1192882870":"Upload a screenshot of your name and account number from the personal details section.","-1120954663":"First name*","-1659980292":"First name","-962979523":"Your {{ field_name }} as in your identity document","-1416797980":"Please enter your {{ field_name }} as in your official identity documents.","-1466268810":"Please remember that it is your responsibility to keep your answers accurate and up to date. You can update your personal details at any time in your <0>account settings.","-32386760":"Name","-766265812":"first name","-1857534296":"John","-1282749116":"last name","-1485480657":"Other details","-1784741577":"date of birth","-1702919018":"Second line of address (optional)","-1315410953":"State/Province","-2040322967":"Citizenship","-344715612":"Employment status*","-1543016582":"I hereby confirm that the tax information I provided is true and complete. I will also inform {{legal_entity_name}} about any changes to this information.","-946282997":"Additional information","-1315571766":"Place of birth","-789291456":"Tax residence*","-1692219415":"Tax residence","-1903720068":"The country in which you meet the criteria for paying taxes. Usually the country in which you physically reside.","-651516152":"Tax Identification Number","-1387062433":"Account opening reason","-222283483":"Account opening reason*","-1113902570":"Details","-71696502":"Previous","-1541554430":"Next","-987011273":"Your proof of ownership isn't required.","-808299796":"You are not required to submit proof of ownership at this time. We will inform you if proof of ownership is required in the future.","-179726573":"We’ve received your proof of ownership.","-813779897":"Proof of ownership verification passed.","-638756912":"Black out digits 7 to 12 of the card number that’s shown on the front of your debit/credit card.⁤","-684271315":"OK","-740157281":"Trading Experience Assessment","-1720468017":"In providing our services to you, we are required to obtain information from you in order to assess whether a given product or service is appropriate for you.","-307865807":"Risk Tolerance Warning","-690100729":"Yes, I understand the risk.","-2010628430":"CFDs and other financial instruments come with a high risk of losing money rapidly due to leverage. You should consider whether you understand how CFDs and other financial instruments work and whether you can afford to take the high risk of losing your money. <0/><0/> To continue, you must confirm that you understand your capital is at risk.","-863770104":"Please note that by clicking ‘OK’, you may be exposing yourself to risks. You may not have the knowledge or experience to properly assess or mitigate these risks, which may be significant, including the risk of losing the entire sum you have invested.","-1292808093":"Trading Experience","-2145244263":"This field is required","-884768257":"You should enter 0-35 characters.","-1784470716":"State is not in a proper format","-1699820408":"Please enter a {{field_name}} under {{max_number}} characters.","-1575567374":"postal/ZIP code","-2113555886":"Only letters, numbers, space, and hyphen are allowed.","-874280157":"This Tax Identification Number (TIN) is invalid. You may continue using it, but to facilitate future payment processes, valid tax information will be required.","-1174064217":"Mr","-855506127":"Ms","-1037916704":"Miss","-634958629":"We use the information you give us only for verification purposes. All information is kept confidential.","-731992635":"Title*","-352888977":"Title","-136976514":"Country of residence*","-945104751":"We’re legally obliged to ask for your tax information.","-1024240099":"Address","-1124948631":"Professional Client","-259515058":"By default, all {{brand_website_name}} clients are retail clients but anyone can request to be treated as a professional client.","-1463348492":"I would like to be treated as a professional client.","-1958764604":"Email preference","-2121071263":"Check this box to receive updates via email.","-2068064150":"Get updates about Deriv products, services and events.","-1558679249":"Please make sure your information is correct or it may affect your trading experience.","-179005984":"Save","-2116332353":"Please close your positions in the following Deriv account(s):","-2048005267":"{{number_of_positions}} position(s)","-1923892687":"Please withdraw your funds from the following Deriv X account(s):","-1629894615":"I have other financial priorities.","-844051272":"I want to stop myself from trading.","-1113965495":"I’m no longer interested in trading.","-1224285232":"Customer service was unsatisfactory.","-9323953":"Remaining characters: {{remaining_characters}}","-839094775":"Back","-2061895474":"Closing your account will automatically log you out. We shall delete your personal information as soon as our legal obligations are met.","-203298452":"Close account","-937707753":"Go Back","-1219849101":"Please select at least one reason","-484540402":"An error occurred","-1911549768":"Inaccessible MT5 account(s)","-1869355019":"Action required","-1030102424":"You can't trade on Deriv.","-448385353":"You can't make transactions.","-1058447223":"Before closing your account:","-912764166":"Withdraw your funds.","-60139953":"We shall delete your personal information as soon as our legal obligations are met, as mentioned in the section on Data Retention in our <0>Security and privacy policy","-1725454783":"Failed","-506510414":"Date and time","-1708927037":"IP address","-2131200819":"Disable","-200487676":"Enable","-1840392236":"That's not the right code. Please try again.","-2067796458":"Authentication code","-790444493":"Protect your account with 2FA. Each time you log in to your account, you will need to enter your password and an authentication code generated by a 2FA app on your smartphone.","-368010540":"You have enabled 2FA for your Deriv account.","-403552929":"To disable 2FA, please enter the six-digit authentication code generated by your 2FA app below:","-752939584":"How to set up 2FA for your Deriv account","-90649785":"Click here to copy key","-206376148":"Key copied!","-1592318047":"See example","-1376950117":"That file format isn't supported. Please upload .pdf, .png, .jpg, or .jpeg files only.","-1272489896":"Please complete this field.","-397487797":"Enter your full card number","-153346659":"Upload your selfie.","-602131304":"Passport number","-1051213440":"Upload the front and back of your identity card.","-1600807543":"First, enter your identity card number and the expiry date.","-1139923664":"Next, upload the front and back of your identity card.","-783705755":"Upload the front of your identity card.","-566750665":"NIMC slip and proof of age","-1465944279":"NIMC slip number","-429612996":"Next, upload both of the following documents.","-376981174":"Upload your proof of age: birth certificate or age declaration document.","-612174191":"First line of address is required","-242734402":"Only {{max}} characters, please.","-378415317":"State is required","-1497654315":"Our accounts and services are unavailable for the Jersey postal code.","-755626951":"Complete your address details","-1461267236":"Please choose your currency","-1027595143":"Less than $25,000","-40491332":"$25,000 - $50,000","-1139806939":"$50,001 - $100,000","-996132458":"Construction","-915003867":"Health","-1430012453":"Information & Communications Technology","-987824916":"Science & Engineering","-146630682":"Social & Cultural","-761306973":"Manufacturing","-1631552645":"Professionals","-474864470":"Personal Care, Sales and Service Workers","-1129355784":"Agricultural, Forestry and Fishery Workers","-1242914994":"Craft, Metal, Electrical and Electronics Workers","-1317824715":"Cleaners and Helpers","-1592729751":"Mining, Construction, Manufacturing and Transport Workers","-1030759620":"Government Officers","-2137323480":"Company Ownership","-1590574533":"Divorce Settlement","-1667683002":"Inheritance","-1237843731":"Investment Income","-777506574":"Sale of Property","-654781670":"Primary","-1717373258":"Secondary","-1156937070":"$500,001 - $1,000,000","-315534569":"Over $1,000,000","-2068544539":"Salaried Employee","-531314998":"Investments & Dividends","-1235114522":"Pension","-1298056749":"State Benefits","-449943381":"Savings & Inheritance","-1161338910":"First name is required.","-1161818065":"Last name should be between 2 and 50 characters.","-1281693513":"Date of birth is required.","-26599672":"Citizenship is required","-912174487":"Phone is required.","-673765468":"Letters, numbers, spaces, periods, hyphens and forward slashes only.","-212167954":"Tax Identification Number is not properly formatted.","-621555159":"Identity information","-204765990":"Terms of use","-477761028":"Voter ID","-1466346630":"CPF","-739367071":"Employed","-626752657":"0-1 year","-532014689":"1-2 years","-1001024004":"Over 3 years","-790513277":"6-10 transactions in the past 12 months","-580085300":"11-39 transactions in the past 12 months","-612752984":"These are default limits that we apply to your accounts.","-1598263601":"To learn more about trading limits and how they apply, please go to the <0>Help Centre.","-1411635770":"Learn more about account limits","-1340125291":"Done","-1101543580":"Limit","-858297154":"Represents the maximum amount of cash that you may hold in your account. If the maximum is reached, you will be asked to withdraw funds.","-976258774":"Not set","-1182362640":"Represents the maximum aggregate payouts on outstanding contracts in your portfolio. If the maximum is attained, you may not purchase additional contracts without first closing out existing positions.","-1781293089":"Maximum aggregate payouts on open positions","-1412690135":"*Any limits in your Self-exclusion settings will override these default limits.","-1598751496":"Represents the maximum volume of contracts that you may purchase in any given trading day.","-173346300":"Maximum daily turnover","-138380129":"Total withdrawal allowed","-854023608":"To increase limit please verify your identity","-1500958859":"Verify","-1502578110":"Your account is fully authenticated and your withdrawal limits have been lifted.","-1662154767":"a recent utility bill (e.g. electricity, water, gas, landline, or internet), bank statement, or government-issued letter with your name and this address.","-594456225":"Second line of address","-1964954030":"Postal/ZIP Code","-516397235":"Be careful who you share this token with. Anyone with this token can perform the following actions on your account behalf","-989216986":"Add accounts","-617480265":"Delete token","-316749685":"Are you sure you want to delete this token?","-786372363":"Learn more about API token","-55560916":"To access our mobile apps and other third-party apps, you'll first need to generate an API token.","-198329198":"API Token","-955038366":"Copy this token","-1668692965":"Hide this token","-1661284324":"Show this token","-1076138910":"Trade","-1666909852":"Payments","-488597603":"Trading information","-605778668":"Never","-1628008897":"Token","-1238499897":"Last Used","-1171226355":"Length of token name must be between {{MIN_TOKEN}} and {{MAX_TOKEN}} characters.","-1803339710":"Maximum {{MAX_TOKEN}} characters.","-408613988":"Select scopes based on the access you need.","-5605257":"This scope will allow third-party apps to withdraw to payment agents and make inter-account transfers for you.","-1373485333":"This scope will allow third-party apps to view your trading history.","-758221415":"This scope will allow third-party apps to open accounts for you, manage your settings and token usage, and more. ","-1117963487":"Name your token and click on 'Create' to generate your token.","-2005211699":"Create","-2115275974":"CFDs","-1879666853":"Deriv MT5","-460645791":"You are limited to one fiat account. You won’t be able to change your account currency if you have already made your first deposit or created a real {{dmt5_label}} account.","-1146960797":"Fiat currencies","-1959484303":"Cryptocurrencies","-561724665":"You are limited to one fiat currency only","-2087317410":"Oops, something went wrong.","-184202848":"Upload file","-1447142373":"Click here to upload.","-863586176":"Drag and drop a file or click to browse your files.","-723198394":"File size should be 8MB or less","-1948369500":"File uploaded is not supported","-1040865880":"Drop files here..","-1100235269":"Industry of employment","-684388823":"Estimated net worth","-509054266":"Anticipated annual turnover","-1588485629":"Example","-1117345066":"Choose the document type","-651192353":"Sample:","-1044962593":"Upload Document","-164448351":"Show less","-1361653502":"Show more","-337620257":"Switch to real account","-2120454054":"Add a real account","-38915613":"Unsaved changes","-2137450250":"You have unsaved changes. Are you sure you want to discard changes and leave this page?","-1067082004":"Leave Settings","-1982432743":"It appears that the address in your document doesn’t match the address\n in your Deriv profile. Please update your personal details now with the\n correct address.","-1451334536":"Continue trading","-1525879032":"Your documents for proof of address is expired. Please submit again.","-1425489838":"Proof of address verification not required","-1008641170":"Your account does not need address verification at this time. We will inform you if address verification is required in the future.","-60204971":"We could not verify your proof of address","-1944264183":"To continue trading, you must also submit a proof of identity.","-1088324715":"We’ll review your documents and notify you of its status within 1 - 3 working days.","-329713179":"Ok","-895884696":"The <0>name and <0>date of birth on your identity document don't match your profile.","-1792723131":"To avoid delays, enter your <0>date of birth exactly as it appears on your {{document_name}}.","-886317740":"The <0>date of birth on your identity document doesn't match your profile.","-1813671961":"Your identity verification failed because:","-2097808873":"We were unable to verify your ID with the details you provided. ","-1652371224":"Your profile is updated","-504784172":"Your document has been submitted","-1391934478":"Your ID is verified. You will also need to submit proof of your address.","-118547687":"ID verification passed","-200989771":"Go to personal details","-1358357943":"Please check and update your postal code before submitting proof of identity.","-1401994581":"Your personal details are missing","-2004327866":"Please select a valid country of document issuance.","-1627868670":"Your identity document has expired.","-1606307809":"We were unable to verify the identity document with the details provided.","-1664159494":"Country","-749870311":"Please contact us via <0>live chat.","-1084991359":"Proof of identity verification not required","-1981334109":"Your account does not need identity verification at this time. We will inform you if identity verification is required in the future.","-182918740":"Your proof of identity submission failed because:","-155705811":"A clear colour photo or scanned image","-246893488":"JPEG, JPG, PNG, PDF, or GIF","-1454880310":"Must be valid for at least 6 months","-100534371":"Before uploading, please ensure that you’re facing forward in the selfie, your face is within the frame, and your eyes are clearly visible even if you’re wearing glasses.","-1529523673":"Confirm and upload","-705047643":"Sorry, an error occured. Please select another file.","-1664309884":"Tap here to upload","-856213726":"You must also submit a proof of address.","-1389323399":"You should enter {{min_number}}-{{max_number}} characters.","-1313806160":"Please request a new password and check your email for the new token.","-1598167506":"Success","-1077809489":"You have a new {{platform}} password to log in to your {{platform}} accounts on the web and mobile apps.","-2068479232":"{{platform}} password","-1332137219":"Strong passwords contain at least 8 characters that include uppercase and lowercase letters, numbers, and symbols.","-1597186502":"Reset {{platform}} password","-848721396":"These trading limits are optional, and you can strengthen them at any time. If you don’t wish to set a specific limit, leave the field blank. If you live in the United Kingdom, Customer Support can only remove or weaken your trading limits after 24 hours of receiving the request. If you live in the Isle of Man, Customer Support can only remove or weaken your trading limits after your trading limit period has expired.","-469096390":"These trading limits are optional, and you can strengthen them at any time. If you don’t wish to set a specific limit, leave the field blank. Customer Support can only remove or weaken your trading limits after 24 hours of receiving the request.","-42808954":"You can also exclude yourself entirely for a specified duration. This can only be removed once your self-exclusion has expired. If you wish to continue trading once your self-exclusion period expires, you must contact Customer Support by calling <0>+447723580049 to lift this self-exclusion. Requests by chat or email shall not be entertained. There will be a 24-hour cooling-off period before you can resume trading.","-1088698009":"These self-exclusion limits help you control the amount of money and time you spend trading on {{platform_name_trader}}, {{platform_name_dbot}}, {{platform_name_smarttrader}} and {{platform_name_bbot}} on Deriv. The limits you set here will help you exercise <0>responsible trading.","-1702324712":"These limits are optional, and you can adjust them at any time. You decide how much and how long you’d like to trade. If you don’t wish to set a specific limit, leave the field blank.","-1819875658":"You can also exclude yourself entirely for a specified duration. Once the self-exclusion period has ended, you can either extend it further or resume trading immediately. If you wish to reduce or remove the self-exclusion period, contact our <0>Customer Support.","-1031814119":"About trading limits and self-exclusion","-183468698":"Trading limits and self-exclusion","-933963283":"No, review my limits","-1759860126":"Yes, log me out immediately","-572347855":"{{value}} mins","-313333548":"You’ll be able to adjust these limits at any time. You can reduce your limits from the <0>self-exclusion page. To increase or remove your limits, please contact our <1>Customer Support team.","-1265833982":"Accept","-2123139671":"Your stake and loss limits","-1250802290":"24 hours","-2070080356":"Max. total stake","-1545823544":"7 days","-180147209":"You will be automatically logged out from each session after this time limit.","-374553538":"Your account will be excluded from the website until this date (at least 6 months, up to 5 years).","-2121421686":"To self-exclude from all online gambling companies licensed in Great Britain, go to <0>www.gamstop.co.uk.","-2105708790":"Your maximum account balance and open positions","-1960600163":"Once your account balance reaches this amount, you will not be able to deposit funds into your account.","-1073845224":"No. of open position(s)","-288196326":"Your maximum deposit limit","-568749373":"Max. deposit limit","-1884902844":"Max. deposit limit per day","-545085253":"Max. deposit limit over 7 days","-1031006762":"Max. deposit limit over 30 days","-1116871438":"Max. total loss over 30 days","-2134714205":"Time limit per session","-1884271702":"Time out until","-1265825026":"Timeout time must be greater than current time.","-1332882202":"Timeout time cannot be more than 6 weeks.","-1635977118":"Exclude time cannot be less than 6 months.","-1617352279":"The email is in your spam folder (Sometimes things get lost there).","-547557964":"We can’t deliver the email to this address (Usually because of firewalls or filtering).","-142444667":"Please click on the link in the email to change your Deriv MT5 password.","-742748008":"Check your email and click the link in the email to proceed.","-84068414":"Still didn't get the email? Please contact us via <0>live chat.","-975118358":"Your account will be opened with {{legal_entity_name}}, regulated by the Malta Financial Services Authority (MFSA), and will be subject to the laws of Malta.","-2073934245":"The financial trading services offered on this site are only suitable for customers who accept the possibility of losing all the money they invest and who understand and have experience of the risk involved in the purchase of financial contracts. Transactions in financial contracts carry a high degree of risk. If the contracts you purchased expire as worthless, you will lose all your investment, which includes the contract premium.","-1125193491":"Add account","-2068229627":"I am not a PEP, and I have not been a PEP in the last 12 months.","-186841084":"Change your login email","-907403572":"To change your email address, you'll first need to unlink your email address from your {{identifier_title}} account.","-1850792730":"Unlink from {{identifier_title}}","-428335668":"You will need to set a password to complete the process.","-1232613003":"<0>Verification failed. <1>Why?","-2029508615":"<0>Need verification.<1>Verify now","-818898181":"Name in document doesn’t match your Deriv profile.","-310316375":"Address in document doesn’t match address you entered above.","-485368404":"Document issued more than 6-months ago.","-367016488":"Blurry document. All information must be clear and visible.","-1957076143":"Cropped document. All information must be clear and visible.","-1576856758":"An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.","-231863107":"No","-870902742":"How much knowledge and experience do you have in relation to online trading?","-1929477717":"I have an academic degree, professional certification, and/or work experience related to financial services.","-1540148863":"I have attended seminars, training, and/or workshops related to trading.","-922751756":"Less than a year","-542986255":"None","-1337206552":"In your understanding, CFD trading allows you to","-456863190":"Place a position on the price movement of an asset where the outcome is a fixed return or nothing at all.","-1314683258":"Make a long-term investment for a guaranteed profit.","-1546090184":"How does leverage affect CFD trading?","-1636427115":"Leverage helps to mitigate risk.","-800221491":"Leverage guarantees profits.","-811839563":"Leverage lets you open large positions for a fraction of trade value, which may result in increased profit or loss.","-1185193552":"Close your trade automatically when the loss is equal to or more than a specified amount, as long as there is adequate market liquidity.","-1046354":"Close your trade automatically when the profit is equal to or more than a specified amount, as long as there is adequate market liquidity.","-1842858448":"Make a guaranteed profit on your trade.","-860053164":"When trading multipliers.","-1250327770":"When buying shares of a company.","-1222388581":"All of the above.","-1515286538":"Please enter your document number. ","-1694758788":"Enter your document number","-1458676679":"You should enter 2-50 characters.","-1176889260":"Please select a document type.","-1265050949":"identity document","-2139303636":"You may have followed a broken link, or the page has moved to a new address.","-1448368765":"Error code: {{error_code}} page not found","-254792921":"You can only make deposits at the moment. To enable withdrawals, please complete your financial assessment.","-1437017790":"Financial information","-70342544":"We’re legally obliged to ask for your financial information.","-39038029":"Trading experience","-601903492":"Forex trading experience","-1012699451":"CFD trading experience","-1894668798":"Other trading instruments experience","-1026468600":"Other trading instruments frequency","-1743024217":"Select Language","-1822545742":"Ether Classic","-1334641066":"Litecoin","-1214036543":"US Dollar","-1782590355":"No currency has been set for this account","-536187647":"Confirm revoke access?","-1357606534":"Permission","-570222048":"Revoke access","-80717068":"Apps you have linked to your <0>Deriv password:","-340060402":"Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.","-619126443":"Use the <0>Deriv password to log in to {{brand_website_name}} and {{platform_name_trader}}.","-623760979":"Use the <0>Deriv password to log in to {{brand_website_name}}, {{platform_name_trader}} and {{platform_name_go}}.","-459147994":"Use the <0>Deriv password to log in to {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} and {{platform_name_ctrader}}.","-1526404112":"Utility bill: electricity, water, gas, or landline phone bill.","-537552700":"Home rental agreement: valid and current agreement.","-890084320":"Save and submit","-30772747":"Your personal details have been saved successfully.","-1107320163":"Automate your trading, no coding needed.","-829643221":"Multipliers trading platform.","-1585707873":"Financial Commission","-199154602":"Vanuatu Financial Services Commission","-191165775":"Malta Financial Services Authority","-194969520":"Counterparty company","-1089385344":"Deriv (SVG) LLC","-2019617323":"Deriv (BVI) Ltd","-112814932":"Deriv (FX) Ltd","-1131400885":"Deriv Investments (Europe) Limited","-1471207907":"All assets","-781132577":"Leverage","-1591882610":"Synthetics","-543177967":"Stock indices","-362324454":"Commodities","-1071336803":"Platform","-820028470":"Options & Multipliers","-1255879419":"Trader's Hub","-1856204727":"Reset","-213142918":"Deposits and withdrawals temporarily unavailable ","-224804428":"Transactions","-1186807402":"Transfer","-1308346982":"Derived","-1145604233":"Trade CFDs on MT5 with Derived indices that simulate real-world market movements.","-328128497":"Financial","-1484404784":"Trade CFDs on MT5 with forex, stock indices, commodities, and cryptocurrencies.","-659955365":"Swap-Free","-674118045":"Trade swap-free CFDs on MT5 with synthetics, forex, stocks, stock indices, cryptocurrencies, and ETFs.","-1210359945":"Transfer funds to your accounts","-81256466":"You need a Deriv account to create a CFD account.","-699372497":"Trade with leverage and tight spreads for better returns on successful trades. <0>Learn more","-1884966862":"Get more Deriv MT5 account with different type and jurisdiction.","-145462920":"Deriv cTrader","-982095728":"Get","-1277942366":"Total assets","-493788773":"Non-EU","-673837884":"EU","-230566990":"The following documents you submitted did not pass our checks:","-846812148":"Proof of address.","-2055865877":"Non-EU regulation","-643108528":"Non-EU and EU regulation","-172898036":"CR5236585","-1665192032":"Multipliers account","-744999940":"Deriv account","-1638358352":"Get the upside of CFDs without risking more than your initial stake with <0>Multipliers.","-749129977":"Get a real Deriv account, start trading and manage your funds.","-1814994113":"CFDs <0>{{compare_accounts_title}}","-318106501":"Trade CFDs on MT5 with synthetics, baskets, and derived FX.","-1328701106":"Trade CFDs on MT5 with forex, stocks, stock indices, synthetics, cryptocurrencies, and commodities.","-1173266642":"This account offers CFDs on a feature-rich trading platform.","-1290112064":"Deriv EZ","-1453519913":"Trade CFDs on an easy-to-get-started platform with all your favourite assets.","-2051096382":"Earn a range of payouts by correctly predicting market movements with <0>options, or get the\n upside of CFDs without risking more than your initial stake with <1>multipliers.","-2146691203":"Choice of regulation","-249184528":"You can create real accounts under EU or non-EU regulation. Click the <0><0/> icon to learn more about these accounts.","-1505234170":"Trader's Hub tour","-1536335438":"These are the trading accounts available to you. You can click on an account’s icon or description to find out more","-1034232248":"CFDs or Multipliers","-1320214549":"You can choose between CFD trading accounts and Multipliers accounts","-2069414013":"Click the ‘Get’ button to create an account","-951876657":"Top-up your account","-1945421757":"Once you have an account click on ‘Deposit’ or ‘Transfer’ to add funds to an account","-1965920446":"Start trading","-33612390":"<0>EU statutory disclaimer: CFDs are complex instruments and come with a high risk of losing money rapidly due to leverage. <0>73% of retail investor accounts lose money when trading CFDs with this provider. You should consider whether you understand how CFDs work and whether you can afford to take the high risk of losing your money.","-2021135479":"This field is required.","-1870909526":"Our server cannot retrieve an address.","-582721696":"The current allowed withdraw amount is {{format_min_withdraw_amount}} to {{format_max_withdraw_amount}} {{currency}}","-1975494965":"Cashier","-42592103":"Deposit cryptocurrencies","-60779216":"Withdrawals are temporarily unavailable due to system maintenance. You can make your withdrawals when the maintenance is complete.","-520142572":"Cashier is currently down for maintenance","-1552080215":"Please check back in a few minutes.<0>Thank you for your patience.","-215186732":"You’ve not set your country of residence. To access Cashier, please update your country of residence in the Personal details section in your account settings.","-1392897508":"The identification documents you submitted have expired. Please submit valid identity documents to unlock Cashier. ","-954082208":"Your cashier is currently locked. Please contact us via <0>live chat to find out how to unlock it.","-929148387":"Please set your account currency to enable deposits and withdrawals.","-541392118":"Your account has not been authenticated. Please submit your <0>proof of identity and <1>proof of address to authenticate your account and access your cashier.","-247122507":"Your cashier is locked. Please complete the <0>financial assessment to unlock it.","-1443721737":"Your cashier is locked. See <0>how we protect your funds before you proceed.","-901712457":"Your access to Cashier has been temporarily disabled as you have not set your 30-day turnover limit. Please go to <0>Self-exclusion and set your 30-day turnover limit.","-166472881":"Your <0>personal details are incomplete. Please go to your account settings and complete your personal details to enable deposits and withdrawals.","-666905139":"Deposits are locked","-378858101":"Your <0>personal details are incomplete. Please go to your account settings and complete your personal details to enable deposits.","-1318742415":"Your account has not been authenticated. Please submit your <0>proof of identity and <1>proof of address to authenticate your account and request for withdrawals.","-1923809087":"Unfortunately, you can only make deposits. Please contact us via <0>live chat to enable withdrawals.","-172277021":"Cashier is locked for withdrawals","-1624999813":"It seems that you've no commissions to withdraw at the moment. You can make withdrawals once you receive your commissions.","-1077304626":"Amount ({{currency}})","-1559994981":"Approximate value","-190084602":"Transaction","-1995606668":"Amount","-2024290965":"Confirmations","-811190405":"Time","-1984478597":"The details of this transaction is available on CoinsPaid.","-1272778997":"We've sent you an email.","-89973258":"Resend email in {{seconds}}s","-1332236294":"Please verify your identity","-1675848843":"Error","-283017497":"Retry","-1838982691":"UNKNOWN","-532693866":"Something went wrong. Please refresh the page and try again.","-1196049878":"First line of home address","-1326406485":"Postal Code/ZIP","-939625805":"Telephone","-442575534":"Email verification failed","-1459042184":"Update your personal details","-1603543465":"We can't validate your personal details because there is some information missing.","-614516651":"Need help? <0>Contact us.","-203002433":"Deposit now","-720315013":"You have no funds in your {{currency}} account","-2052373215":"Please make a deposit to use this feature.","-379487596":"{{selected_percentage}}% of available balance ({{format_amount}} {{currency__display_code}})","-1957498244":"more","-1059419768":"Notes","-285921910":"Learn more about <0>payment methods.","-316545835":"Please ensure <0>all details are <0>correct before making your transfer.","-949073402":"I confirm that I have verified the client’s transfer information.","-1752211105":"Transfer now","-1787304306":"Deriv P2P","-174976899":"P2P verification","-1705887186":"Your deposit is successful.","-142361708":"In process","-1582681840":"We’ve received your request and are waiting for more blockchain confirmations.","-1626218538":"You’ve cancelled your withdrawal request.","-1062841150":"Your withdrawal is unsuccessful due to an error on the blockchain. Please <0>contact us via live chat for more info.","-630780094":"We’re awaiting confirmation from the blockchain.","-1525882769":"Your withdrawal is unsuccessful. We've sent you an email with more information.","-298601922":"Your withdrawal is successful.","-1463156905":"Learn more about payment methods","-1236567184":"This is your <0>{{regulation}}{{currency}} account {{loginid}}.","-1547606079":"We accept the following cryptocurrencies:","-1517325716":"Deposit via the following payment methods:","-639677539":"Buy cryptocurrencies","-1560098002":"Buy cryptocurrencies via fiat onramp","-541870313":"Deposit via payment agents","-197251450":"Don't want to trade in {{currency_code}}? You can open another cryptocurrency account.","-91824739":"Deposit {{currency}}","-523804269":"{{amount}} {{currency}} on {{date}}","-494847428":"Address: <0>{{value}}","-1117977576":"Confirmations: <0>{{value}}","-1935946851":"View more","-1744490898":"Unfortunately, we cannot retrieve the information at this time. ","-515809216":"Send only {{currency_name}} ({{currency_code}}) to this address.","-1589407981":"To avoid loss of funds:","-1042704302":"Make sure to copy your Deriv account address correctly into your crypto wallet.","-80329359":"<0>Note: You’ll receive an email when your deposit start being processed.","-2108344100":"Looking for a way to buy cryptocurrencies? <0>Try Fiat onramp.","-598073640":"About Tether (Ethereum)","-275902914":"Tether on Ethereum (eUSDT)","-1188009792":"Tether on Omni Layer (USDT)","-1239329687":"Tether was originally created to use the bitcoin network as its transport protocol ‒ specifically, the Omni Layer ‒ to allow transactions of tokenised traditional currency.","-314177745":"Unfortunately, we couldn't get the address since our server was down. Please click Refresh to reload the address or try again later.","-1068036170":"We do not charge a transfer fee for transfers in the same currency between your Deriv fiat and {{platform_name_mt5}} accounts and between your Deriv fiat and {{platform_name_dxtrade}} accounts.","-2056016338":"You’ll not be charged a transfer fee for transfers in the same currency between your Deriv fiat and {{platform_name_mt5}} accounts.","-599632330":"We’ll charge a 1% transfer fee for transfers in different currencies between your Deriv fiat and {{platform_name_mt5}} accounts and between your Deriv fiat and {{platform_name_dxtrade}} accounts.","-1196994774":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency accounts.","-1361372445":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency and Deriv MT5 accounts, your Deriv cryptocurrency and {{platform_name_derivez}} accounts, and your Deriv cryptocurrency and {{platform_name_dxtrade}} accounts.","-993556039":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency and Deriv MT5 accounts and between your Deriv cryptocurrency and {{platform_name_dxtrade}} accounts.","-1382702462":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency and Deriv MT5 accounts.","-1995859618":"You may transfer between your Deriv fiat, cryptocurrency, {{platform_name_mt5}}, {{platform_name_derivez}} and {{platform_name_dxtrade}} accounts.","-545616470":"Each day, you can make up to {{ allowed_internal }} transfers between your Deriv accounts, up to {{ allowed_mt5 }} transfers between your Deriv and {{platform_name_mt5}} accounts, up to {{ allowed_derivez }} transfers between your Deriv and {{platform_name_derivez}} accounts, and up to {{ allowed_dxtrade }} transfers between your Deriv and {{platform_name_dxtrade}} accounts.","-1151983985":"Transfer limits may vary depending on the exchange rates.","-1747571263":"Please bear in mind that some transfers may not be possible.","-757062699":"Transfers may be unavailable due to high volatility or technical issues and when the exchange markets are closed.","-1866405488":"Deriv cTrader accounts","-1344870129":"Deriv accounts","-1156059326":"You have {{number}} transfer remaining for today.","-1109729546":"You will be able to transfer funds between MT5 accounts and other accounts once your address is verified.","-1593609508":"Transfer between your accounts in Deriv","-1155970854":"You have reached the maximum daily transfers. Please try again tomorrow.","-464965808":"Transfer limits: <0 /> - <1 />","-553249337":"Transfers are locked","-1638172550":"To enable this feature you must complete the following:","-1949883551":"You only have one account","-1149845849":"Back to Trader's Hub","-1232852916":"We’re switching over to your {{currency}} account to view the transaction.","-759000391":"We were unable to verify your information automatically. To enable this function, you must complete the following:","-1632668764":"I accept","-544232635":"Please go to the Deposit page to generate an address. Then come back here to continue with your transaction.","-1161069724":"Please copy the crypto address you see below. You'll need it to deposit your cryptocurrency.","-1388977563":"Copied!","-1962894999":"This address can only be used ONCE. Please copy a new one for your next transaction.","-451858550":"By clicking 'Continue' you will be redirected to {{ service }}, a third-party payment service provider. Please note that {{ website_name }} is not responsible for the content or services provided by {{ service }}. If you encounter any issues related to {{ service }} services, you must contact {{ service }} directly.","-2005265642":"Fiat onramp is a cashier service that allows you to convert fiat currencies to crypto to top up your Deriv crypto accounts. Listed here are third-party crypto exchanges. You’ll need to create an account with them to use their services.","-1593063457":"Select payment channel","-1309258714":"From account number","-1247676678":"To account number","-816476007":"Account holder name","-344403983":"Description","-922432739":"Please enter a valid client login ID.","-1024241603":"Insufficient balance.","-1979554765":"Please enter a valid description.","-1254233806":"You've transferred","-953082600":"Some payment methods may not be listed here but payment agents may still offer them. If you can’t find your favourite method, contact the payment agents directly to check further.","-1491457729":"All payment methods","-142563298":"Contact your preferred payment agent for payment instructions and make your deposit.","-1023961762":"Commission on deposits","-552873274":"Commission on withdrawal","-880645086":"Withdrawal amount","-118683067":"Withdrawal limits: <0 />-<1 />","-1125090734":"Important notice to receive your funds","-1924707324":"View transaction","-1474202916":"Make a new withdrawal","-511423158":"Enter the payment agent account number","-2059278156":"Note: {{website_name}} does not charge any transfer fees.","-1201279468":"To withdraw your funds, please choose the same payment method you used to make your deposits.","-2004264970":"Your wallet address should have 25 to 64 characters.","-1707299138":"Your {{currency_symbol}} wallet address","-38063175":"{{account_text}} wallet","-705272444":"Upload a proof of identity to verify your identity","-2024958619":"This is to protect your account from unauthorised withdrawals.","-130833284":"Please note that your maximum and minimum withdrawal limits aren’t fixed. They change due to the high volatility of cryptocurrency.","-1531269493":"We'll send you an email once your transaction has been processed.","-1572746946":"Asian Up","-686840306":"Asian Down","-2141198770":"Higher","-816098265":"Lower","-1646655742":"Spread Up","-668987427":"Spread Down","-912577498":"Matches","-1862940531":"Differs","-808904691":"Odd","-556230215":"Ends Outside","-1268220904":"Ends Between","-703542574":"Up","-1127399675":"Down","-768425113":"No Touch","-1163058241":"Stays Between","-1354485738":"Reset Call","-376148198":"Only Ups","-1337379177":"High Tick","-328036042":"Please enter a stop loss amount that's higher than the current potential loss.","-2127699317":"Invalid stop loss. Stop loss cannot be more than stake.","-590765322":"Unfortunately, this trading platform is not available for EU Deriv account. Please switch to a non-EU account to continue trading.","-2110207996":"Deriv Bot is unavailable for this account","-971295844":"Switch to another account","-1194079833":"Deriv Bot is not available for EU clients","-1223145005":"Loss amount: {{profit}}","-1206212388":"Welcome back! Your messages have been restored. You are using your {{current_currency}} account.","-1724342053":"You are using your {{current_currency}} account.","-1062922595":"Reference ID (buy)","-2068574600":"Reference ID (sell)","-994038153":"Start Time","-1979852400":"Entry Spot","-427802309":"Profit/Loss","-668558002":"Journal.csv","-746652890":"Notifications","-824109891":"System","-749186458":"Account switching is disabled while your bot is running. Please stop your bot before switching accounts.","-662836330":"Would you like to keep your current contract or close it? If you decide to keep it running, you can check and close it later on the <0>Reports page.","-597939268":"Keep my contract","-1322453991":"You need to log in to run the bot.","-236548954":"Contract Update Error","-1428017300":"THE","-1450728048":"OF","-255051108":"YOU","-1845434627":"IS","-931434605":"THIS","-740712821":"A","-187634388":"This block is mandatory. Here is where you can decide if your bot should continue trading. Only one copy of this block is allowed.","-2105473795":"The only input parameter determines how block output is going to be formatted. In case if the input parameter is \"string\" then the account currency will be added.","-1800436138":"2. for \"number\": 1325.68","-530632460":"This block is used to determine if the market price moves in the selected direction or not. It gives you a value of \"True\" or \"False\".","-1875717842":"Examples:","-890079872":"1. If the selected direction is \"Rise\", and the previous tick value is less than the current tick value, the output will be \"True\". Otherwise, the output will be an empty string.","-489739641":"2. If the selected direction is \"Fall\", and the previous tick value is more than the current tick value, the output will be \"True\". Otherwise, the output will be an empty string.","-2116076360":"There are 4 message types:","-1421941045":"2. 'Warn' displays a message in yellow to highlight something that needs attention.","-277850921":"If \"Win\" is selected, it will return \"True\" if your last trade was successful. Otherwise, it will return an empty string.","-1918487001":"Example:","-2139916657":"1. In the below example the loop is terminated in case \"x\" is \"False\" even though only one iteration is complete","-1238900333":"2. In the below example the loop jumps to the next iteration without executing below block in case if \"x\" is \"False\"","-1729479576":"You can use \"i\" inside the loop, for example to access list items","-1474636594":"In this example, the loop will repeat three times, as that is the number of items in the given list. During each iteration, the variable \"i\" will be assigned a value from the list. ","-908772734":"This block evaluates a statement and will perform an action only when the statement is true.","-334040831":"2. In this example, the instructions are repeated as long as the value of x is greater than or equal to 10. Once the value of x drops below 10, the loop is terminated.","-444267958":"\"Seconds Since Epoch\" block returns the number of seconds since January 1st, 1970.","-447522129":"You might need it when you want to repeat an actions after certain amount of time.","-1488259879":"The term \"candle\" refers to each bar on the candlestick chart. Each candle represents four market prices for the selected time interval:","-2020693608":"Each candlestick on the chart represents 4 market prices for the selected time interval:","-62728852":"- Open price: the opening price","-1247744334":"- Low price: the lowest price","-1386365697":"- Close price: the closing price","-1498732382":"A black (or red) candle indicates that the open price is higher than the close price. This represents a downward movement of the market price.","-1871864755":"This block gives you the last digit of the latest tick value of the selected market. If the latest tick value is 1410.90, this block will return 0. It’s useful for digit-based contracts such as Even/Odd, Matches/Differs, or Higher/Lower.","-1029671512":"In case if the \"OR\" operation is selected, the block returns \"True\" in case if one or both given values are \"True\"","-210295176":"Available operations:","-1385862125":"- Addition","-983721613":"- Subtraction","-854750243":"- Multiplication","-1394815185":"In case if the given number is less than the lower boundary of the range, the block returns the lower boundary value. Similarly, if the given number is greater than the higher boundary, the block will return the higher boundary value. In case if the given value is between boundaries, the block will return the given value unchanged.","-1034564248":"In the below example the block returns the value of 10 as the given value (5) is less than the lower boundary (10)","-2009817572":"This block performs the following operations to a given number","-671300479":"Available operations are:","-514610724":"- Absolute","-1923861818":"- Euler’s number (2.71) to the power of a given number","-1556344549":"Here’s how:","-1061127827":"- Visit the following URL, make sure to replace with the Telegram API token you created in Step 1: https://api.telegram.org/bot/getUpdates","-311389920":"In this example, the open prices from a list of candles are assigned to a variable called \"cl\".","-1460794449":"This block gives you a list of candles within a selected time interval.","-1634242212":"Used within a function block, this block returns a value when a specific condition is true.","-2012970860":"This block gives you information about your last contract.","-1504783522":"You can choose to see one of the following:","-10612039":"- Profit: the profit you’ve earned","-555996976":"- Entry time: the starting time of the contract","-1391071125":"- Exit time: the contract expiration time","-1961642424":"- Exit value: the value of the last tick of the contract","-111312913":"- Barrier: the barrier value of the contract (applicable to barrier-based trade types such as stays in/out, touch/no touch, etc.)","-674283099":"- Result: the result of the last contract: \"win\" or \"loss\"","-704543890":"This block gives you the selected candle value such as open price, close price, high price, low price, and open time. It requires a candle as an input parameter.","-482281200":"In the example below, the open price is assigned to the variable \"op\".","-364621012":"This block gives you the specified candle value for a selected time interval. You can choose which value you want:","-232477769":"- Open: the opening price","-610736310":"Use this block to sell your contract at the market price. Selling your contract is optional. You may choose to sell if the market trend is unfavourable.","-1307657508":"This block gives you the potential profit or loss if you decide to sell your contract. It can only be used within the \"Sell conditions\" root block.","-1921072225":"In the example below, the contract will only be sold if the potential profit or loss is more than the stake.","-955397705":"SMA adds the market price in a list of ticks or candles for a number of time periods, and divides the sum by that number of time periods.","-1424923010":"where n is the number of periods.","-1835384051":"What SMA tells you","-749487251":"SMA serves as an indicator of the trend. If the SMA points up then the market price is increasing and vice versa. The larger the period number, the smoother SMA line is.","-1996062088":"In this example, each point of the SMA line is an arithmetic average of close prices for the last 10 days.","-1866751721":"Input list accepts a list of ticks or candles, while period is the specified time period.","-1097076512":"You may compare SMA values calculated on every bot run to identify the market trend direction. Alternatively, you may also use a variation of the SMA block, the Simple Moving Average Array block. ","-1254849504":"If a period of 10 is entered, the Simple Moving Average Array block will return a list of SMA values calculated based on period of 10.","-1190046167":"This block displays a dialog box with a customised message. When the dialog box is displayed, your strategy is paused and will only resume after you click \"OK\".","-859028989":"In this example, the date and time will be displayed in a green notification box.","-1452086215":"In this example, a Rise contract will be purchased at midnight on 1 August 2019.","-1765276625":"Click the multiplier drop-down menu and choose the multiplier value you want to trade with.","-1872233077":"Your potential profit will be multiplied by the multiplier value you’ve chosen.","-614454953":"To learn more about multipliers, please go to the <0>Multipliers page.","-2078588404":"Select your desired market and asset type. For example, Forex > Major pairs > AUD/JPY","-2037446013":"2. Trade Type","-533927844":"Select your desired trade type. For example, Up/Down > Rise/Fall","-1192411640":"4. Default Candle Interval","-485434772":"8. Trade Options","-1827646586":"This block assigns a given value to a variable, creating the variable if it doesn't already exist.","-254421190":"List: ({{message_length}})","-1616649196":"results","-90107030":"No results found","-984140537":"Add","-1373954791":"Should be a valid number","-1278608332":"Please enter a number between 0 and {{api_max_losses}}.","-287597204":"Enter limits to stop your bot from trading when any of these conditions are met.","-1445989611":"Limits your potential losses for the day across all Deriv platforms.","-152878438":"Maximum number of trades your bot will execute for this run.","-1490942825":"Apply and run","-1442034178":"Contract bought","-2020280751":"Bot is stopping","-1436403979":"Contract closed","-1711732508":"Reference IDs","-386141434":"(Buy)","-482272687":"(Sell)","-1983189496":"ticks","-694277729":"(High)","-2028564707":"(Low)","-627895223":"Exit spot","-596238067":"Entry/Exit spot","-558594655":"The bot is not running","-478946875":"The stats are cleared","-1842451303":"Welcome to Deriv Bot!","-1391310674":"Check out these guides and FAQs to learn more about building your bot:","-2066779239":"FAQs","-280324365":"What is Deriv Bot?","-1016171176":"Asset","-621128676":"Trade type","-447853970":"Loss threshold","-155173714":"Let’s build a bot!","-1919212468":"3. You can also search for the blocks you want using the search bar above the categories.","-1520558271":"For more info, check out this blog post on the basics of building a trading bot.","-980360663":"3. Choose the block you want and drag it to the workspace.","-1493168314":"What is a quick strategy?","-1680391945":"Using a quick strategy","-1177914473":"How do I save my strategy?","-271986909":"In Bot Builder, hit Save on the toolbar at the top to download your bot. Give your bot a name, and choose to download your bot to your device or Google Drive. Your bot will be downloaded as an XML file.","-1149045595":"1. After hitting Import, select Local and click Continue.","-288041546":"2. Select your XML file and hit Open.","-2127548288":"3. Your bot will be loaded accordingly.","-1311297611":"1. After hitting Import, select Google Drive and click Continue.","-1549564044":"How do I reset the workspace?","-1127331928":"In Bot Builder, hit Reset on the toolbar at the top. This will clear the workspace. Please note that any unsaved changes will be lost.","-1720444288":"How do I control my losses with Deriv Bot?","-1142295124":"There are several ways to control your losses with Deriv Bot. Here’s a simple example of how you can implement loss control in your strategy:","-986689483":"1. Create the following variables:","-269910127":"3. Update current profit/loss with the profit from the last contract. If the last contract was lost, the value of current profit/loss will be negative.","-1565344891":"Can I run Deriv Bot on multiple tabs in my web browser?","-90192474":"Yes, you can. However, there are limits on your account, such as maximum number of open positions and maximum aggregate payouts on open positions. So, just keep these limits in mind when opening multiple positions. You can find more info about these limits at Settings > Account limits.","-213872712":"No, we don't offer cryptocurrencies on Deriv Bot.","-2147346223":"In which countries is Deriv Bot available?","-352345777":"What are the most popular strategies for automated trading?","-552392096":"Three of the most commonly used strategies in automated trading are Martingale, D'Alembert, and Oscar's Grind — you can find them all ready-made and waiting for you in Deriv Bot.","-507620484":"Unsaved","-764102808":"Google Drive","-555886064":"Won","-529060972":"Lost","-1696412885":"Import","-320197558":"Sort blocks","-1566369363":"Zoom out","-1285759343":"Search","-1291088318":"Purchase conditions","-112876186":"Analysis","-1769584466":"Stats","-1133736197":"Utility","-1682372359":"Text","-907562847":"Lists","-1646497683":"Loops","-251326965":"Miscellaneous","-934909826":"Load strategy","-1692205739":"Import a bot from your computer or Google Drive, build it from scratch, or start with a quick strategy.","-1545070554":"Delete bot","-1972599670":"Your bot will be permanently deleted when you hit ","-1692956623":"Yes, delete.","-573479616":"Are you sure you want to delete it?","-786915692":"You are connected to Google Drive","-1256971627":"To import your bot from your Google Drive, you'll need to sign in to your Google account.","-1233084347":"To know how Google Drive handles your data, please review Deriv’s <0>Privacy policy.","-1150107517":"Connect","-1150390589":"Last modified","-1393876942":"Your bots:","-767342552":"Enter your bot name, choose to save on your computer or Google Drive, and hit ","-1372891985":"Save.","-1003476709":"Save as collection","-636521735":"Save strategy","-1953880747":"Stop my bot","-1899230001":"Stopping the current bot will load the Quick Strategy you just created to the workspace.","-2131847097":"Any open contracts can be viewed on the ","-563774117":"Dashboard","-939764287":"Charts","-683790172":"Now, <0>run the bot to test out the strategy.","-1127164953":"Hi! Hit <0>Start for a quick tour.","-358288026":"Note: You can also find this tutorial in the <0>Tutorials tab.","-1793577405":"Build from scratch","-358753028":"Create your bot using our drag-and-drop blocks or click Quick Strategy to choose from the ready-to-use bot templates.","-1212601535":"Monitor the market","-21136101":"See how your bot is doing in real-time.","-631097919":"Click <0>Run when you want to start trading, and click <0>Stop when you want to stop.","-1999747212":"Want to retake the tour?","-129587613":"Got it, thanks!","-782992165":"Step 1 :","-1207872534":"First, set the <0>Trade parameters block.","-1656388044":"First, set <0>Market to Derived > Continuous Indices > Volatility 100 (1s) Index.","-1706298865":"Then, set <0>Trade type to Up/Down > Rise/Fall.","-1834358537":"For <0>Default candle interval, set it to 1 minute","-1940971254":"For <0>Trade options, set it as below:","-512839354":"<0>Stake: USD 10 (min: 0.35 - max: 50000)","-753745278":"Step 2 :","-1056713679":"Then, set the <0>Purchase conditions block.","-245497823":"<0>2. Purchase conditions:","-916770284":"<0>Purchase: Rise","-758077259":"Step 3 :","-677396944":"Step 4 :","-295975118":"Next, go to <0>Utility tab under the Blocks menu. Tap the drop-down arrow and hit <0>Loops.","-698493945":"Step 5 :","-1992994687":"Now, tap the <0>Analysis drop-down arrow and hit <0>Contract.","-1844492873":"Go to the <0>Last trade result block and click + icon to add the <0>Result is Win block to the workspace.","-1547091772":"Then, drag the <0>Result is win into the empty slot next to <0>repeat until block.","-736400802":"Step 6 :","-732067680":"Finally, drag and add the whole <0>Repeat block to the <0>Restart trading conditions block.","-1411787252":"Step 1","-1109392787":"Learn how to build your bot from scratch using a simple strategy.","-1263822623":"You can import a bot from your mobile device or from Google drive, see a preview in the bot builder, and start trading by running the bot.","-563921656":"Bot Builder guide","-1109191651":"Must be a number higher than 0","-689786738":"Minimum duration: {{ min }}","-184183432":"Maximum duration: {{ max }}","-1494924808":"The value must be equal to or greater than 2.","-1823621139":"Quick Strategy","-1778025545":"You’ve successfully imported a bot.","-1519425996":"No results found \"{{ faq_search_value }}\"","-418247251":"Download your journal.","-2123571162":"Download","-870004399":"<0>Bought: {{longcode}} (ID: {{transaction_id}})","-1211474415":"Filters","-186972150":"There are no messages to display","-999254545":"All messages are filtered out","-1121028020":"or, if you prefer...","-254025477":"Select an XML file from your device","-1131095838":"Please upload an XML file","-523928088":"Create one or upload one from your local drive or Google Drive.","-1684205190":"Why can't I see my recent bots?","-2050879370":"1. Logged in from a different device","-811857220":"3. Cleared your browser cache","-625024929":"Leaving already?","-584289785":"No, I'll stay","-1435060006":"If you leave, your current contract will be completed, but your bot will stop running immediately.","-783058284":"Total stake","-2077494994":"Total payout","-1073955629":"No. of runs","-1729519074":"Contracts lost","-42436171":"Total profit/loss","-1137823888":"Total payout since you last cleared your stats.","-992662695":"The number of times your bot has run since you last cleared your stats. Each run includes the execution of all the root blocks.","-1382491190":"Your total profit/loss since you last cleared your stats. It is the difference between your total payout and your total stake.","-24780060":"When you’re ready to trade, hit ","-2147110353":". You’ll be able to track your bot’s performance here.","-2140412463":"Buy price","-1299484872":"Account","-2004386410":"Win","-266502731":"Transactions detailed summary","-1717650468":"Online","-1309011360":"Open positions","-1597214874":"Trade table","-1929724703":"Compare CFD accounts","-883103549":"Account deactivated","-1837059346":"Buy / Sell","-1845037007":"Advertiser's page","-494667560":"Orders","-679691613":"My ads","-821418875":"Trader","-679102561":"Contract Details","-430118939":"Complaints policy","-568280383":"Deriv Gaming","-895331276":"Complete your proof of address","-782679300":"Complete your proof of identity","-579984289":"Derived Demo","-1596515467":"Derived BVI","-222394569":"Derived Vanuatu","-533935232":"Financial BVI","-565431857":"Financial Labuan","-291535132":"Swap-Free Demo","-1472945832":"Swap-Free SVG","-144803045":"Only numbers and these special characters are allowed: {{permitted_characters}}","-1450516268":"Only letters, numbers, space, hyphen, period, and apostrophe are allowed.","-1966032552":"The length of token should be 8.","-2128137611":"Should start with letter or number, and may contain hyphen and underscore.","-1590869353":"Up to {{decimal_count}} decimal places are allowed.","-2061307421":"Should be more than {{min_value}}","-1099941162":"Should be less than {{max_value}}","-1528188268":"Straight rows of keys are easy to guess","-1339903234":"Short keyboard patterns are easy to guess","-23980798":"Repeats like \"aaa\" are easy to guess","-235760680":"Avoid repeated words and characters","-1568933154":"Sequences like abc or 6543 are easy to guess","-725663701":"Avoid sequences","-1450768475":"Recent years are easy to guess","-1804838610":"Avoid years that are associated with you","-64849469":"Dates are often easy to guess","-2006915194":"Avoid dates and years that are associated with you","-2124205211":"A word by itself is easy to guess","-1095202689":"All-uppercase is almost as easy to guess as all-lowercase","-2137856661":"Reversed words aren't much harder to guess","-1885413063":"Predictable substitutions like '@' instead of 'a' don't help very much","-369258265":"This password is on the blacklist","-681468758":"Your web browser is out of date and may affect your trading experience. Please <0>update your browser.","-577777971":"You have reached the rate limit of requests per second. Please try later.","-206321775":"Fiat","-522767852":"DEMO","-433761292":"Switching to default account.","-405439829":"Sorry, you can't view this contract because it doesn't belong to this account.","-1590712279":"Gaming","-16448469":"Virtual","-2093768906":"{{name}} has released your funds.
Would you like to give your feedback?","-705744796":"Your demo account balance has reached the maximum limit, and you will not be able to place new trades. Reset your balance to continue trading from your demo account.","-2063700253":"disabled","-1585069798":"Please click the following link to complete your Appropriateness Test.","-1287141934":"Find out more","-367759751":"Your account has not been verified","-596690079":"Enjoy using Deriv?","-265932467":"We’d love to hear your thoughts","-1815573792":"Drop your review on Trustpilot.","-823349637":"Go to Trustpilot","-1204063440":"Set my account currency","-1601813176":"Would you like to increase your daily limits to {{max_daily_buy}} {{currency}} (buy) and {{max_daily_sell}} {{currency}} (sell)?","-1751632759":"Get a faster mobile trading experience with the <0>{{platform_name_go}} app!","-1164554246":"You submitted expired identification documents","-219846634":"Let’s verify your ID","-529038107":"Install","-1738575826":"Please switch to your real account or create one to access the cashier.","-1329329028":"You’ve not set your 30-day turnover limit","-132893998":"Your access to the cashier has been temporarily disabled as you have not set your 30-day turnover limit. Please go to Self-exclusion and set the limit.","-1852207910":"MT5 withdrawal disabled","-764323310":"MT5 withdrawals have been disabled on your account. Please check your email for more details.","-1902997828":"Refresh now","-753791937":"A new version of Deriv is available","-1775108444":"This page will automatically refresh in 5 minutes to load the latest version.","-1175685940":"Please contact us via live chat to enable withdrawals.","-493564794":"Please complete your financial assessment.","-1125797291":"Password updated.","-157145612":"Please log in with your updated password.","-1728185398":"Resubmit proof of address","-612396514":"Please resubmit your proof of address.","-1519764694":"Your proof of address is verified.","-1961967032":"Resubmit proof of identity","-117048458":"Please submit your proof of identity.","-1196422502":"Your proof of identity is verified.","-136292383":"Your proof of address verification is pending","-386909054":"Your proof of address verification has failed","-430041639":"Your proof of address did not pass our verification checks, and we’ve placed some restrictions on your account. Please resubmit your proof of address.","-87177461":"Please go to your account settings and complete your personal details to enable deposits.","-904632610":"Reset your balance","-470018967":"Reset balance","-156611181":"Please complete the financial assessment in your account settings to unlock it.","-1925176811":"Unable to process withdrawals in the moment","-980696193":"Withdrawals are temporarily unavailable due to system maintenance. You can make withdrawals when the maintenance is complete.","-1647226944":"Unable to process deposit in the moment","-488032975":"Deposits are temporarily unavailable due to system maintenance. You can make deposits when the maintenance is complete.","-2136953532":"Scheduled cashier maintenance","-849587074":"You have not provided your tax identification number","-47462430":"This information is necessary for legal and regulatory requirements. Please go to your account settings, and fill in your latest tax identification number.","-2067423661":"Stronger security for your Deriv account","-1719731099":"With two-factor authentication, you’ll protect your account with both your password and your phone - so only you can access your account, even if someone knows your password.","-949074612":"Please contact us via live chat.","-2087822170":"You are offline","-1669693571":"Check your connection.","-1706642239":"<0>Proof of ownership <1>required","-553262593":"<0><1>Your account is currently locked <2><3>Please upload your proof of <4>ownership to unlock your account. <5>","-1834929362":"Upload my document","-1043638404":"<0>Proof of ownership <1>verification failed","-1766760306":"<0><1>Please upload your document <2>with the correct details. <3>","-8892474":"Start assessment","-1330929685":"Please submit your proof of identity and proof of address to verify your account and continue trading.","-99461057":"Please submit your proof of address to verify your account and continue trading.","-577279362":"Please submit your proof of identity to verify your account and continue trading.","-197134911":"Your proof of identity is expired","-152823394":"Your proof of identity has expired. Please submit a new proof of identity to verify your account and continue trading.","-420930276":"Follow these simple instructions to fix it.","-2142540205":"It appears that the address in your document doesn’t match the address in your Deriv profile. Please update your personal details now with the correct address.","-482715448":"Go to Personal details","-2072411961":"Your proof of address has been verified","-384887227":"Update the address in your profile.","-448961363":"non-EU","-1998049070":"If you agree to our use of cookies, click on Accept. For more information, <0>see our policy.","-402093392":"Add Deriv Account","-1721181859":"You’ll need a {{deriv_account}} account","-1989074395":"Please add a {{deriv_account}} account first before adding a {{dmt5_account}} account. Deposits and withdrawals for your {{dmt5_label}} account are done by transferring funds to and from your {{deriv_label}} account.","-689237734":"Proceed","-1642457320":"Help centre","-1966944392":"Network status: {{status}}","-594209315":"Synthetic indices in the EU are offered by {{legal_entity_name}}, W Business Centre, Level 3, Triq Dun Karm, Birkirkara BKR 9033, Malta, licensed and regulated by the Malta Gaming Authority (<0>licence no. MGA/B2C/102/2000) and by the Revenue Commissioners for clients in Ireland (<2>licence no. 1010285).","-181484419":"Responsible trading","-650505513":"Full screen","-1823504435":"View notifications","-1954045170":"No currency assigned","-1591792668":"Account Limits","-34495732":"Regulatory information","-1496158755":"Go to Deriv.com","-1323441180":"I hereby confirm that my request for opening an account with Deriv to trade OTC products issued and offered exclusively outside Brazil was initiated by me. I fully understand that Deriv is not regulated by CVM and by approaching Deriv I intend to set up a relation with a foreign company.","-1396326507":"Unfortunately, {{website_name}} is not available in your country.","-1019903756":"Synthetic","-288996254":"Unavailable","-735306327":"Manage accounts","-2024365882":"Explore","-1197864059":"Create free demo account","-1813972756":"Account creation paused for 24 hours","-366030582":"Sorry, you're unable to create an account at this time. As you declined our previous risk warnings, we need you to wait for 24 hours after your first account creation attempt before you can proceed.<0/><0/>","-534047566":"Thank you for your understanding. You can create your account on {{real_account_unblock_date}} or later.","-399816343":"Trading Experience Assessment<0/>","-1822498621":"As per our regulatory obligations, we are required to assess your trading knowledge and experience.<0/><0/>Please click ‘OK’ to continue","-71049153":"Keep your account secure with a password","-1861974537":"Strong passwords contain at least 8 characters, combine uppercase and lowercase letters, numbers, and symbols.","-1485242688":"Step {{step}}: {{step_title}} ({{step}} of {{steps}})","-1829842622":"You can open an account for each cryptocurrency.","-987221110":"Choose a currency you would like to trade with.","-1066574182":"Choose a currency","-1914534236":"Choose your currency","-200560194":"Please switch to your {{fiat_currency}} account to change currencies.","-1829493739":"Choose the currency you would like to trade with.","-1814647553":"Add a new","-1269362917":"Add new","-650480777":"crypto account","-175638343":"Choose an account or add a new one","-1768223277":"Your account is ready","-1215717784":"<0>You have successfully changed your currency to {{currency}}.<0>Make a deposit now to start trading.","-786091297":"Trade on demo","-228099749":"Please verify your identity and address","-1041852744":"We're processing your personal information","-1775006840":"Make a deposit now to start trading.","-983734304":"We need proof of your identity and address before you can start trading.","-917733293":"To get trading, please confirm where you live.","-1282628163":"You'll be able to get trading as soon as verification is complete.","-952649119":"Log In","-3815578":"Sign Up","-1456176427":"Set a currency for your real account","-1557011219":"Add a real Deriv Options account","-241733171":"Add a Deriv Financial account","-1329687645":"Create a cryptocurrency account","-1429178373":"Create a new account","-1740162250":"Manage account","-1016775979":"Choose an account","-1362081438":"Adding more real accounts has been restricted for your country.","-1602122812":"24-hour Cool Down Warning","-1519791480":"CFDs and other financial instruments come with a high risk of losing money rapidly due to leverage. You should consider whether you understand how CFDs and other financial instruments work and whether you can afford to take the risk of losing your money. <0/><0/>\n As you have declined our previous warning, you would need to wait 24 hours before you can proceed further.","-1010875436":"CFDs and other financial instruments come with a high risk of losing money rapidly due to leverage. You should consider whether you understand how CFDs and other financial instruments work and whether you can afford to take the high risk of losing your money. <0/><0/> To continue, kindly note that you would need to wait 24 hours before you can proceed further.","-1725418054":"By clicking ‘Accept’ and proceeding with the account opening, you should note that you may be exposing yourself to risks. These risks, which may be significant, include the risk of losing the entire sum invested, and you may not have the knowledge and experience to properly assess or mitigate them.","-1369294608":"Already signed up?","-730377053":"You can’t add another real account","-2100785339":"Invalid inputs","-2061807537":"Something’s not right","-617844567":"An account with your details already exists.","-292363402":"Trading statistics report","-1656860130":"Options trading can become a real addiction, as can any other activity pushed to its limits. To avoid the danger of such an addiction, we provide a reality-check that gives you a summary of your trades and accounts on a regular basis.","-28080461":"Would like to check your statement first? <0>Check Statement","-611059051":"Please specify your preferred interval reality check in minutes:","-1876891031":"Currency","-11615110":"Turnover","-1370419052":"Profit / Loss","-437320982":"Session duration:","-3959715":"Current time:","-1534648620":"Your password has been changed","-596199727":"We will now redirect you to the login page.","-310434518":"The email input should not be empty.","-437918412":"No currency assigned to your account","-1193651304":"Country of residence","-707550055":"We need this to make sure our service complies with laws and regulations in your country.","-280139767":"Set residence","-601615681":"Select theme","-1152511291":"Dark","-1428458509":"Light","-1976089791":"Your Deriv account has been unlinked from your {{social_identity_provider}} account. You can now log in to Deriv using your new email address and password.","-505449293":"Enter a new password for your Deriv account.","-1728963310":"Stop creating an account?","-703818088":"Only log in to your account at this secure link, never elsewhere.","-1235799308":"Fake links often contain the word that looks like \"Deriv\" but look out for these differences.","-2102997229":"Examples","-82488190":"I've read the above carefully.","-97775019":"Do not trust and give away your credentials on fake websites, ads or emails.","-2142491494":"OK, got it","-611136817":"Beware of fake links.","-1787820992":"Platforms","-1793883644":"Trade FX and CFDs on a customisable, easy-to-use trading platform.","-184713104":"Earn fixed payouts with options, or trade multipliers to amplify your gains with limited risk.","-1571775875":"Our flagship options and multipliers trading platform.","-895091803":"If you're looking for CFDs","-1447215751":"Not sure? Try this","-2338797":"<0>Maximise returns by <0>risking more than you put in.","-1682067341":"Earn <0>fixed returns by <0>risking only what you put in.","-1744351732":"Not sure where to start?","-1342699195":"Total profit/loss:","-943710774":"This complaints policy, which may change from time to time, applies to your account registered with {{legal_entity_name}}, having its registered office address at First Floor, Millennium House, Victoria Road, Douglas, Isle of Man, IM2 4RW, licensed and regulated respectively by (1) the Gambling Supervision Commission in the Isle of Man (current <0>licence issued on 31 August 2017) and (2) the Gambling Commission in the UK (<1>licence no. 39172).","-255056078":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name}}, having its registered office address at W Business Centre, Level 3, Triq Dun Karm, Birkirkara, BKR 9033, Malta, licensed and regulated by the Malta Gaming Authority in Malta for gambling products only, <0>licence no. MGA/B2C/102/2000, and for clients residing in the UK by the UK Gambling Commission (account number 39495).","-1941013000":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}}, {{legal_entity_name_fx}}, and {{legal_entity_name_v}}.","-594812204":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}}.","-813256361":"We are committed to treating our clients fairly and providing them with excellent service.<0/><1/>We would love to hear from you on how we can improve our services to you. Any information you provide will be treated in the strictest confidence. Rest assured that you will be heard, valued, and always treated fairly.","-1622847732":"If you have an inquiry regarding your trading account with {{legal_entity_name}}, you can contact us through our <0>Help centre or by chatting with a representative via <1>Live Chat.<2/><3/>We are committed to resolving your query in the quickest time possible and appreciate your patience in allowing us time to resolve the matter.<4/><5/>We strive to provide the best possible service and support to our customers. However, in the event that we are unable to resolve your query or if you feel that our response is unsatisfactory, we want to hear from you. We welcome and encourage you to submit an official complaint to us so that we can review your concerns and work towards a resolution.","-1639808836":"If you are not satisfied with the outcome, you can escalate your complaint to the <0>Independent Betting Adjudication Service (IBAS) by filling the IBAS adjudication form. Please note that IBAS only deals with disputes that result from transactions.","-1505742956":"<0/><1/>You can also refer your dispute to the Malta Gaming Authority via the <2>Player Support Unit.","-1406192787":"If you are not satisfied with the outcome, you can escalate your complaint to the <0>Financial Commission.","-1776547326":"<0/><1/>If you reside in the UK and you are unhappy with our response you may escalate your complaint to the <2>Financial Ombudsman Service.","-2115348800":"1. Introduction","-744009523":"2. Fair treatment","-866831420":"3.1. Submission of a complaint","-1102904026":"3.2. Handling your complaint","-603378979":"3.3. Resolving your complaint","-697569974":"3.4. Your decision","-1280998762":"4. Complaints","-1886635232":"A complaint is any expression of dissatisfaction by a client regarding our products or services that requires a formal response.<0/><1/>If what you submit does not fall within the scope of a complaint, we may reclassify it as a query and forward it to the relevant department for handling. However, if you believe that your query should be classified as a complaint due to its relevance to the investment services provided by {{legal_entity_name}}, you may request that we reclassify it accordingly.","-1771496016":"To submit a complaint, please send an email to <0>complaints@deriv.com, providing as much detail as possible. To help us investigate and resolve your complaint more efficiently, please include the following information:","-1197243525":"<0>•A clear and detailed description of your complaint, including any relevant dates, times, and transactions","-1795134892":"<0>•Any relevant screenshots or supporting documentation that will assist us in understanding the issue","-2053887036":"4.4. Handling your complaint","-717170429":"Once we have received the details of your complaint, we shall review it carefully and keep you updated on the handling process. We might request further information or clarifications to facilitate the resolution of the complaint.","-1841922393":"4.5. Resolving your complaint","-1327119795":"4.6. Your decision","-2019654103":"If we are unable to resolve your complaint or you are not satisfied with the outcome, you can escalate your complaint to the Office of the Arbiter for Financial Services.<0/><1/><2>Filing complaints with the Office of the Arbiter for Financial Services","-687172857":"<0>•You may file a complaint with the Arbiter for Financial Services only if you are not satisfied with our decision or the decision wasn’t made within 15 business days.","-262934706":"<0>•If the complaint is accepted by the Arbiter, you will receive another email with further details relating to the payment of the €25 complaint fee and the processes that follow.","-993572476":"<0>b.The Financial Commission has 5 days to acknowledge that your complaint was received and 14 days to answer the complaint through our Internal Dispute Resolution (IDR) procedure.","-1769159081":"<0>c.You will be able to file a complaint with the Financial Commission only if you are not satisfied with our decision or the decision wasn’t made within 14 days.","-58307244":"3. Determination phase","-356618087":"<0>b.The DRC may request additional information from you or us, who must then provide the requested information within 7 days.","-945718602":"<0>b.If you agree with a DRC decision, you will need to accept it within 14 days. If you do not respond to the DRC decision within 14 days, the complaint is considered closed.","-1500907666":"<0>d.If the decision is made in our favour, you must provide a release for us within 7 days of when the decision is made, and the complaint will be considered closed.","-429248139":"5. Disclaimer","-818926350":"The Financial Commission accepts appeals for 45 days following the date of the incident and only after the trader has tried to resolve the issue with the company directly.","-1825471709":"A whole new trading experience on a powerful yet easy to use platform.","-981017278":"Automated trading at your fingertips. No coding needed.","-583559763":"Menu","-778309978":"The link you clicked has expired. Ensure to click the link in the latest email in your inbox. Alternatively, enter your email below and click <0>Resend email for a new link.","-336222114":"Follow these simple steps to fix it:","-1064116456":"Search for the broker <0>Deriv Holdings (Guernsey) Limited and select it.","-941870889":"The cashier is for real accounts only","-352838513":"It looks like you don’t have a real {{regulation}} account. To use the cashier, switch to your {{active_real_regulation}} real account, or get an {{regulation}} real account.","-1858915164":"Ready to deposit and trade for real?","-162753510":"Add real account","-1208519001":"You need a real Deriv account to access the cashier.","-175369516":"Welcome to Deriv X","-939154994":"Welcome to Deriv MT5 dashboard","-1667427537":"Run Deriv X on your browser or download the mobile app","-305915794":"Run MT5 from your browser or download the MT5 app for your devices","-404375367":"Trade forex, basket indices, commodities, and cryptocurrencies with high leverage.","-243985555":"Trade CFDs on forex, stocks, stock indices, synthetic indices, cryptocurrencies, and commodities with leverage.","-2030107144":"Trade CFDs on forex, stocks & stock indices, commodities, and crypto.","-705682181":"Malta","-409563066":"Regulator","-1302404116":"Maximum leverage","-2098459063":"British Virgin Islands","-1510474851":"British Virgin Islands Financial Services Commission (licence no. SIBA/L/18/1114)","-761250329":"Labuan Financial Services Authority (Licence no. MB/18/0024)","-1264604378":"Up to 1:1000","-1686150678":"Up to 1:100","-637908996":"100%","-1420548257":"20+","-1344709651":"40+","-1373949478":"50+","-1382029900":"70+","-1493055298":"90+","-523602297":"Forex majors","-1303090739":"Up to 1:1500","-19213603":"Metals","-1728334460":"Up to 1:300","-646902589":"(US_30, US_100, US_500)","-1835174654":"1:30","-1647612934":"Spreads from","-1587894214":"about verifications needed.","-466784048":"Regulator/EDR","-1920034143":"Synthetics, Baskets and Derived FX","-1326848138":"British Virgin Islands Financial Services Commission (License no. SIBA/L/18/1114)","-777580328":"Forex, Stocks, Stock indices, Commodities, and Cryptocurrencies","-1372141447":"Straight-through processing","-1969608084":"Forex and Cryptocurrencies","-800771713":"Labuan Financial Services Authority (licence no. MB/18/0024)","-1497128311":"80+","-1501230046":"0.6 pips","-1689815930":"You will need to submit proof of identity and address once you reach certain thresholds.","-1175785439":"Deriv (SVG) LLC (company no. 273 LLC 2020)","-235833244":"Synthetics, Forex, Stocks, Stock Indices, Cryptocurrencies, and ETFs","-139026353":"A selfie of yourself.","-70314394":"A recent utility bill (electricity, water or gas) or recent bank statement or government-issued letter with your name and address.","-435524000":"Verification failed. Resubmit during account creation.","-1385099152":"Your document is verified.","-931599668":"ETF","-651501076":"Derived - SVG","-865172869":"Financial - BVI","-1851765767":"Financial - Vanuatu","-558597854":"Financial - Labuan","-2052425142":"Swap-Free - SVG","-1192904361":"Deriv X Demo","-1269597956":"MT5 Platform","-239789243":"(License no. SIBA/L/18/1114)","-1434036215":"Demo Financial","-1416247163":"Financial STP","-1637969571":"Demo Swap-Free","-1882063886":"Demo CFDs","-1347908717":"Demo Financial SVG","-1780324582":"SVG","-785625598":"Use these credentials to log in to your {{platform}} account on the website and mobile apps.","-997127433":"Change Password","-860609405":"Password","-742647506":"Fund transfer","-1972393174":"Trade CFDs on our synthetics, baskets, and derived FX.","-1357917360":"Web terminal","-1454896285":"The MT5 desktop app is not supported by Windows XP, Windows 2003, and Windows Vista.","-810388996":"Download the Deriv X mobile app","-1727991510":"Scan the QR code to download the Deriv X Mobile App","-1769852749":"N/A","-511301450":"Indicates the availability of cryptocurrency trading on a particular account.","-1647569139":"Synthetics, Baskets, Derived FX, Forex: standard/micro, Stocks, Stock indices, Commodities, Cryptocurrencies","-2102641225":"At bank rollover, liquidity in the forex markets is reduced and may increase the spread and processing time for client orders. This happens around 21:00 GMT during daylight saving time, and 22:00 GMT non-daylight saving time.","-495364248":"Margin call and stop out level will change from time to time based on market condition.","-536189739":"To protect your portfolio from adverse market movements due to the market opening gap, we reserve the right to decrease leverage on all offered symbols for financial accounts before market close and increase it again after market open. Please make sure that you have enough funds available in your {{platform}} account to support your positions at all times.","-712681566":"Peer-to-peer exchange","-1267880283":"{{field_name}} is required","-2084509650":"{{field_name}} is not properly formatted.","-1580554423":"Trade CFDs on our synthetic indices that simulate real-world market movements.","-1385484963":"Confirm to change your {{platform}} password","-1990902270":"This will change the password to all of your {{platform}} accounts.","-1922462747":"Trader's hub","-700260448":"demo","-1769158315":"real","-2015785957":"Compare CFDs {{demo_title}} accounts","-673424733":"Demo account","-1986258847":"Server maintenance starts at 01:00 GMT every Sunday, and this process may take up to 2 hours to complete. Service may be disrupted during this time.","-1199152768":"Please explore our other platforms.","-205020823":"Explore {{platform_name_trader}}","-1982499699":"Explore {{platform_name_dbot}}","-1567989247":"Submit your proof of identity and address","-184453418":"Enter your {{platform}} password","-393388362":"We’re reviewing your documents. This should take about 1 to 3 days.","-790488576":"Forgot password?","-535365199":"Enter your {{platform}} password to add a {{platform_name}} {{account}} account.","-2057918502":"Hint: You may have entered your Deriv password, which is different from your {{platform}} password.","-1936102840":"Congratulations, you have successfully created your {{category}} <0>{{platform}} <1>{{type}} {{jurisdiction_selected_shortcode}} account. ","-1928229820":"Reset Deriv X investor password","-1087845020":"main","-1950683866":"investor","-1874242353":"Fund top up","-89838213":"You can top up your demo account with an additional <0> if your balance is <1> or less.","-1211122723":"{{ platform }} {{ account_title }} account","-78895143":"Current balance","-149993085":"New current balance","-490244964":"Forex, stocks, stock indices, cryptocurrencies","-1368041210":", synthetic indices","-877064208":"EUR","-1284221303":"You’ll get a warning, known as margin call, if your account balance drops down close to the stop out level.","-1848799829":"To understand stop out, first you need to learn about margin level, which is the ratio of your equity (the total balance you would have if you close all your positions at that point) to the margin you're using at the moment. If your margin level drops below our stop out level, your positions may be closed automatically to protect you from further losses.","-224051432":"24/7","-1318070255":"EUR/GBP","-70716111":"FX-majors (standard/micro lots), FX-minors, basket indices, commodities, cryptocurrencies, and stocks and stock indices","-1041629137":"FX-majors, FX-minors, FX-exotics, and cryptocurrencies","-287097947":"FX-majors (standard/micro lots), FX-minors, Commodities, Cryptocurrencies (except UK)","-2016975615":"Deriv MT5 CFDs real account","-1207265427":"Compare CFDs real accounts","-1225160479":"Compare available accounts","-266701451":"derivX wordmark","-2145356061":"Download Deriv X on your phone to trade with the Deriv X account","-251202291":"Broker","-81650212":"MetaTrader 5 web","-941636117":"MetaTrader 5 Linux app","-637537305":"Download {{ platform }} on your phone to trade with the {{ platform }} {{ account }} account","-678964540":"to","-206829624":"(1:x)","-616293830":"Enjoy dynamic leverage of <0>up to 1:1500 when trading selected instruments in the forex, commodities, cryptocurrencies, and stock indices markets. Our dynamic leverage adjusts automatically to your trading position, based on asset type and trading volume.","-2042845290":"Your investor password has been changed.","-1882295407":"Your password has been changed.","-254497873":"Use this password to grant viewing access to another user. While they may view your trading account, they will not be able to trade or take any other actions.","-161656683":"Current investor password","-374736923":"New investor password","-1793894323":"Create or reset investor password","-21438174":"Add your Deriv cTrader account under Deriv (SVG) LLC (company no. 273 LLC 2020).","-2026018074":"Add your Deriv MT5 <0>{{account_type_name}} account under Deriv (SVG) LLC (company no. 273 LLC 2020).","-162320753":"Add your Deriv MT5 <0>{{account_type_name}} account under Deriv (BVI) Ltd, regulated by the British Virgin Islands Financial Services Commission (License no. SIBA/L/18/1114).","-271828350":"Get more out of Deriv MT5 Financial","-2125860351":"Choose a jurisdiction for your Deriv MT5 CFDs account","-450424792":"You need a real account (fiat currency or cryptocurrency) in Deriv to create a real Deriv MT5 account.","-1760596315":"Create a Deriv account","-525896186":"Download Deriv GO on your phone to trade with the Deriv EZ account","-1547458328":"Run cTrader on your browser","-648956272":"Use this password to log in to your Deriv X accounts on the web and mobile apps.","-1814308691":"Please click on the link in the email to change your {{platform}} password.","-35790392":"Scan the QR code to download {{Deriv}} {{ platform }}.","-1282933308":"Not {{barrier}}","-968190634":"Equals {{barrier}}","-1747377543":"Under {{barrier}}","-1043795232":"Recent positions","-1511825574":"Profit/Loss:","-726626679":"Potential profit/loss:","-338379841":"Indicative price:","-1572796316":"Purchase price:","-447037544":"Buy price:","-1694314813":"Contract value:","-153220091":"{{display_value}} Tick","-802374032":"Hour","-2039780875":"Purchase confirmation","-1672470173":"Require confirmation before purchasing a contract","-1342661765":"Lock contract purchase buttons","-1382749084":"Go back to trading","-1231210510":"Tick","-1239477911":"second","-1585766960":"min","-1652791614":"mins","-1977959027":"hours","-442488432":"day","-337314714":"days","-8998663":"Digit: {{last_digit}} ","-1435392215":"About deal cancellation","-2017825013":"Got it","-1192773792":"Don't show this again","-902712434":"Deal cancellation","-1280319153":"Cancel your trade anytime within a chosen time-frame. Triggered automatically if your trade reaches the stop out level within the chosen time-frame.","-471757681":"Risk management","-843831637":"Stop loss","-771725194":"Deal Cancellation","-338707425":"Minimum duration is 1 day","-1003473648":"Duration: {{duration}} day","-1527492178":"Purchase Locked","-725375562":"You can lock/unlock the purchase button from the Settings menu","-390994177":"Should be between {{min}} and {{max}}","-1804019534":"Expiry: {{date}}","-2055106024":"Toggle between advanced and simple duration settings","-1012793015":"End time","-2037881712":"Your contract will be closed automatically at the next available asset price on <0>.","-629549519":"Commission <0/>","-2131859340":"Stop out <0/>","-1686280757":"<0>{{commission_percentage}}% of (<1/> * {{multiplier}})","-1043117679":"When your current loss equals or exceeds {{stop_out_percentage}}% of your stake, your contract will be closed at the nearest available asset price.","-339236213":"Multiplier","-2131851017":"Growth rate","-1763848396":"Put","-194424366":"above","-857660728":"Strike Prices","-1358367903":"Stake","-1386326276":"Barrier is a required field.","-1418742026":"Higher barrier must be higher than lower barrier.","-92007689":"Lower barrier must be lower than higher barrier.","-1095538960":"Please enter the start time in the format \"HH:MM\".","-1975910372":"Minute must be between 0 and 59.","-866277689":"Expiry time cannot be in the past.","-1455298001":"Now","-256210543":"Trading is unavailable at this time.","-1150099396":"We’re working to have this available for you soon. If you have another account, switch to that account to continue trading. You may add a Deriv MT5 Financial.","-28115241":"{{platform_name_trader}} is not available for this account","-453920758":"Go to {{platform_name_mt5}} dashboard","-402175529":"History","-988484646":"Deal cancellation (executed)","-444882676":"Deal cancellation (active)","-13423018":"Reference ID","-2035315547":"Low barrier","-1551639437":"No history","-1214703885":"You have yet to update either take profit or stop loss","-504849554":"It will reopen at","-59803288":"In the meantime, try our synthetic indices. They simulate real-market volatility and are open 24/7.","-1278109940":"See open markets","-694105443":"This market is closed","-439389714":"We’re working on it","-770929448":"Go to {{platform_name_smarttrader}}","-347156282":"Submit Proof","-138538812":"Log in or create a free account to place a trade.","-2036388794":"Create free account","-1813736037":"No further trading is allowed on this contract type for the current trading session. For more info, refer to our <0>terms and conditions.","-590131162":"Stay on {{website_domain}}","-1444663817":"Go to Binary.com","-1526466612":"You’ve selected a trade type that is currently unsupported, but we’re working on it.","-1738427539":"Purchase","-1937372493":"You can close your trade anytime. However, be aware of <0>slippage risk<0/>.","-1392065699":"If you select \"Rise\", you win the payout if the exit spot is strictly higher than the entry spot.","-1762566006":"If you select \"Fall\", you win the payout if the exit spot is strictly lower than the entry spot.","-1435306976":"If you select \"Allow equals\", you win the payout if exit spot is higher than or equal to entry spot for \"Rise\". Similarly, you win the payout if exit spot is lower than or equal to entry spot for \"Fall\".","-1959473569":"If you select \"Lower\", you win the payout if the exit spot is strictly lower than the barrier.","-1350745673":"If the exit spot is equal to the barrier, you don't win the payout.","-2089488446":"If you select \"Ends Between\", you win the payout if the exit spot is strictly higher than the Low barrier AND strictly lower than the High barrier.","-1876950330":"If you select \"Ends Outside\", you win the payout if the exit spot is EITHER strictly higher than the High barrier, OR strictly lower than the Low barrier.","-546460677":"If the exit spot is equal to either the Low barrier or the High barrier, you don't win the payout.","-1812957362":"If you select \"Stays Between\", you win the payout if the market stays between (does not touch) either the High barrier or the Low barrier at any time during the contract period","-220379757":"If you select \"Goes Outside\", you win the payout if the market touches either the High barrier or the Low barrier at any time during the contract period.","-1281286610":"If you select \"Matches\", you will win the payout if the last digit of the last tick is the same as your prediction.","-1929209278":"If you select \"Even\", you will win the payout if the last digit of the last tick is an even number (i.e., 2, 4, 6, 8, or 0).","-2038865615":"If you select \"Odd\", you will win the payout if the last digit of the last tick is an odd number (i.e., 1, 3, 5, 7, or 9).","-1416078023":"If you select \"Touch\", you win the payout if the market touches the barrier at any time during the contract period.","-1272255095":"If the exit spot is equal to the barrier or the new barrier (if a reset occurs), you don't win the payout.","-231957809":"Win maximum payout if the exit spot is higher than or equal to the upper barrier.","-464144986":"Win maximum payout if the exit spot is lower than or equal to the lower barrier.","-1031456093":"Win up to maximum payout if exit spot is between lower and upper barrier, in proportion to the difference between upper barrier and exit spot.","-968162707":"No payout if exit spot is above or equal to the upper barrier.","-299450697":"If you select \"High Tick\", you win the payout if the selected tick is the highest among the next five ticks.","-705681870":"By purchasing the \"High-to-Low\" contract, you'll win the multiplier times the difference between the high and low over the duration of the contract.","-420387848":"The high is the highest point ever reached by the market during the contract period.","-1666375348":"By purchasing the \"High-to-Close\" contract, you'll win the multiplier times the difference between the high and close over the duration of the contract.","-2024955268":"If you select “Up”, you will earn a profit by closing your position when the market price is higher than the entry spot.","-1598433845":"If you select “Down”, you will earn a profit by closing your position when the market price is lower than the entry spot.","-885323297":"These are optional parameters for each position that you open:","-584696680":"If you select “Take profit” and specify an amount that you’d like to earn, your position will be closed automatically when your profit is more than or equals to this amount. Your profit may be more than the amount you entered depending on the market price at closing.","-1192494358":"If you select “Deal cancellation”, you’ll be able to cancel your trade within a chosen time frame should the market move against your favour. We’ll charge a small fee for this, but we’ll return your stake amount without profit or loss. If the stop-out amount is reached before the deal cancellation expires, your position will be cancelled automatically and we’ll return your stake amount without profit or loss.","-178096090":"“Take profit” cannot be updated. You may update it only when “Deal cancellation” expires.","-206909651":"The entry spot is the market price when your contract is processed by our servers.","-1576967286":"This product allows you to express a strong bullish or bearish view on an underlying asset.","-610471235":"If you think the market price will rise continuously for a specific period, choose <0>Long. You will get a payout at the expiry time if the market price doesn’t touch or cross below the barrier. Your payout will grow proportionally to the distance between the market price and the barrier if the barrier is not breached. You will start making a profit when the payout is higher than your stake. If the market price ever crosses the barrier, there won’t be a payout.","-454245976":"If you think the market price will drop continuously for a specific period, choose <0>Short. You will get a payout at the expiry time if the market price doesn’t touch or cross above the barrier. Your payout will grow proportionally to the distance between the market price and the barrier if the barrier is not breached. You will start making a profit when the payout is higher than your stake. If the market price ever crosses the barrier, there won’t be a payout.","-351875097":"Number of ticks","-729830082":"View less","-1669741470":"The payout at expiry is equal to the payout per point multiplied by the difference between the final price and the strike price.","-740702998":"<0>{{title}} {{message}}","-1790089996":"NEW!","-993480898":"Accumulators","-45873457":"NEW","-1422269966":"You can choose a growth rate with values of 1%, 2%, 3%, 4%, and 5%.","-1186791513":"Payout is the sum of your initial stake and profit.","-1682624802":"It is a percentage of the previous spot price. The percentage rate is based on your choice of the index and the growth rate.","-1221049974":"Final price","-1247327943":"This is the spot price of the last tick at expiry.","-878534036":"If you select \"Call\", you’ll earn a payout if the final price is above the strike price at expiry. Otherwise, you won’t receive a payout.","-1587076792":"If you select \"Put\", you’ll earn a payout if the final price is below the strike price at expiry. Otherwise, you won’t receive a payout.","-1482134885":"We calculate this based on the strike price and duration you’ve selected.","-1890561510":"Cut-off time","-565990678":"Your contract will expire on this date (in GMT), based on the End time you’ve selected.","-127118348":"Choose {{contract_type}}","-543478618":"Try checking your spelling or use a different term","-700280380":"Deal cancel. fee","-542594338":"Max. payout","-690963898":"Your contract will be automatically closed when your payout reaches this amount.","-511541916":"Your contract will be automatically closed upon reaching this number of ticks.","-438655760":"<0>Note: You can close your trade anytime. Be aware of slippage risk.","-774638412":"Stake must be between {{min_stake}} {{currency}} and {{max_stake}} {{currency}}","-434270664":"Current Price","-1956787775":"Barrier Price:","-1513281069":"Barrier 2","-1683683754":"Long","-1046859144":"<0>{{title}} You will get a payout if the market price stays {{price_position}} and doesn't touch or cross the barrier. Otherwise, your payout will be zero.","-1815023694":"above the barrier","-243332856":"Last digit stats for latest 1000 ticks for {{ underlying_name }}","-1572548510":"Ups & Downs","-71301554":"Ins & Outs","-952298801":"Look Backs","-763273340":"Digits","-461955353":"purchase price","-172348735":"profit","-1624674721":"contract type","-1644154369":"entry spot time","-510792478":"entry spot price","-1974651308":"exit spot time","-1600267387":"exit spot price","-514917720":"barrier","-1072292603":"No Change","-1631669591":"string","-1768939692":"number","-795152863":"green","-1640576332":"blue","-804983649":"yellow","-94281841":"red","-1242470654":"Earned money","-841561409":"Put Spread","-1429914047":"Low","-1893628957":"Open Time","-1896106455":"10 minutes","-999492762":"15 minutes","-1978767852":"30 minutes","-293628675":"1 hour","-385604445":"2 hours","-1965813351":"4 hours","-525321833":"1 day","-1691868913":"Touch/No Touch","-151151292":"Asians","-1048378719":"Reset Call/Reset Put","-1282312809":"High/Low Ticks","-1237186896":"Only Ups/Only Downs","-529846150":"Seconds","-1635771697":"middle","-1529389221":"Histogram","-1819860668":"MACD","-1750896349":"D'Alembert","-102980621":"The Oscar's Grind Strategy is a low-risk positive progression strategy that first appeared in 1965. By using this strategy, the size of your contract will increase after successful trades, but remains unchanged after unsuccessful trades.","-462715374":"Untitled Bot","-2002533437":"Custom function","-215053350":"with:","-1257232389":"Specify a parameter name:","-1885742588":"with: ","-188442606":"function {{ function_name }} {{ function_params }} {{ dummy }}","-313112159":"This block is similar to the one above, except that this returns a value. The returned value can be assigned to a variable of your choice.","-1783320173":"Prematurely returns a value within a function","-1485521724":"Conditional return","-1482801393":"return","-46453136":"get","-1838027177":"first","-1182568049":"Get list item","-1675454867":"This block gives you the value of a specific item in a list, given the position of the item. It can also remove the item from the list.","-381501912":"This block creates a list of items from an existing list, using specific item positions.","-426766796":"Get sub-list","-1679267387":"in list {{ input_list }} find {{ first_or_last }} occurence of item {{ input_value }}","-2087996855":"This block gives you the position of an item in a given list.","-422008824":"Checks if a given list is empty","-1343887675":"This block checks if a given list is empty. It returns “True” if the list is empty, “False” if otherwise.","-1548407578":"length of {{ input_list }}","-1786976254":"This block gives you the total number of items in a given list.","-2113424060":"create list with item {{ input_item }} repeated {{ number }} times","-1955149944":"Repeat an item","-434887204":"set","-197957473":"as","-851591741":"Set list item","-1874774866":"ascending","-1457178757":"Sorts the items in a given list","-350986785":"Sort list","-324118987":"make text from list","-155065324":"This block creates a list from a given string of text, splitting it with the given delimiter. It can also join items in a list into a string of text.","-459051222":"Create list from text","-977241741":"List Statement","-451425933":"{{ break_or_continue }} of loop","-323735484":"continue with next iteration","-1592513697":"Break out/continue","-713658317":"for each item {{ variable }} in list {{ input_list }}","-1825658540":"Iterates through a given list","-952264826":"repeat {{ number }} times","-887757135":"Repeat (2)","-1608672233":"This block is similar to the block above, except that the number of times it repeats is determined by a given variable.","-533154446":"Repeat (1)","-1059826179":"while","-1893063293":"until","-279445533":"Repeat While/Until","-1003706492":"User-defined variable","-359097473":"set {{ variable }} to {{ value }}","-1588521055":"Sets variable value","-980448436":"Set variable","-1538570345":"Get the last trade information and result, then trade again.","-222725327":"Here is where you can decide if your bot should continue trading.","-1638446329":"Result is {{ win_or_loss }}","-1968029988":"Last trade result","-1588406981":"You can check the result of the last trade with this block.","-1459154781":"Contract Details: {{ contract_detail }}","-1652241017":"Reads a selected property from contract details list","-985351204":"Trade again","-2082345383":"These blocks transfer control to the Purchase conditions block.","-172574065":"This block will transfer the control back to the Purchase conditions block, enabling you to purchase another contract.","-403103225":"restart","-837044282":"Ask Price {{ contract_type }}","-1033917049":"This block returns the purchase price for the selected trade type.","-1863737684":"2. Purchase conditions","-228133740":"Specify contract type and purchase conditions.","-1098726473":"This block is mandatory. Only one copy of this block is allowed. You can place the Purchase block (see below) here as well as conditional blocks to define your purchase conditions.","-1777988407":"Payout {{ contract_type }}","-511116341":"This block returns the potential payout for the selected trade type","-1943211857":"Potential payout","-813464969":"buy","-53668380":"True if active contract can be sold before expiration at current market price","-43337012":"Sell profit/loss","-2112866691":"Returns the profit/loss from selling at market price","-2132417588":"This block gives you the potential profit or loss if you decide to sell your contract.","-1360483055":"set {{ variable }} to Bollinger Bands {{ band_type }} {{ dummy }}","-20542296":"Calculates Bollinger Bands (BB) from a list with a period","-1951109427":"Bollinger Bands (BB)","-857226052":"BB is a technical analysis indicator that’s commonly used by traders. The idea behind BB is that the market price stays within the upper and lower bands for 95% of the time. The bands are the standard deviations of the market price, while the line in the middle is a simple moving average line. If the price reaches either the upper or lower band, there’s a possibility of a trend reversal.","-325196350":"set {{ variable }} to Bollinger Bands Array {{ band_type }} {{ dummy }}","-199689794":"Similar to BB. This block gives you a choice of returning the values of either the lower band, higher band, or the SMA line in the middle.","-920690791":"Calculates Exponential Moving Average (EMA) from a list with a period","-960641587":"EMA is a type of moving average that places more significance on the most recent data points. It’s also known as the exponentially weighted moving average. EMA is different from SMA in that it reacts more significantly to recent price changes.","-1557584784":"set {{ variable }} to Exponential Moving Average Array {{ dummy }}","-32333344":"Calculates Moving Average Convergence Divergence (MACD) from a list","-628573413":"MACD is calculated by subtracting the long-term EMA (26 periods) from the short-term EMA (12 periods). If the short-term EMA is greater or lower than the long-term EMA than there’s a possibility of a trend reversal.","-1133676960":"Fast EMA Period {{ input_number }}","-883166598":"Period {{ input_period }}","-450311772":"set {{ variable }} to Relative Strength Index {{ dummy }}","-1861493523":"Calculates Relative Strength Index (RSI) list from a list of values with a period","-880048629":"Calculates Simple Moving Average (SMA) from a list with a period","-1150972084":"Market direction","-276935417":"This block is used to determine if the market price moves in the selected direction or not. It gives you a value of “True” or “False”.","-764931948":"in candle list get # from end {{ input_number }}","-924607337":"Returns the last digit of the latest tick","-560033550":"Returns the list of last digits of 1000 recent tick values","-74062476":"Make a List of {{ candle_property }} values in candles list with interval: {{ candle_interval_type }}","-1556495906":"Returns a list of specific values from a candle list according to selected time interval","-166816850":"Create a list of candle values (1)","-1261436901":"Candles List","-1174859923":"Read the selected candle value","-1972165119":"Read candle value (1)","-1956100732":"You can use this block to analyze the ticks, regardless of your trades","-443243232":"The content of this block is called on every tick. Place this block outside of any root block.","-641399277":"Last Tick","-1628954567":"Returns the value of the last tick","-1332756793":"This block gives you the value of the last tick.","-2134440920":"Last Tick String","-1466340125":"Tick value","-467913286":"Tick value Description","-785831237":"This block gives you a list of the last 1000 tick values.","-1546430304":"Tick List String Description","-1788626968":"Returns \"True\" if the given candle is black","-436010611":"Make a list of {{ candle_property }} values from candles list {{ candle_list }}","-1384340453":"Returns a list of specific values from a given candle list","-584859539":"Create a list of candle values (2)","-2010558323":"Read {{ candle_property }} value in candle {{ input_candle }}","-2846417":"This block gives you the selected candle value.","-1587644990":"Read candle value (2)","-1202212732":"This block returns account balance","-1737837036":"Account balance","-1963883840":"Put your blocks in here to prevent them from being removed","-1284013334":"Use this block if you want some instructions to be ignored when your bot runs. Instructions within this block won’t be executed.","-1217253851":"Log","-1987568069":"Warn","-104925654":"Console","-1956819233":"This block displays messages in the developer's console with an input that can be either a string of text, a number, boolean, or an array of data.","-1450461842":"Load block from URL: {{ input_url }}","-1088614441":"Loads blocks from URL","-1747943728":"Loads from URL","-2105753391":"Notify Telegram {{ dummy }} Access Token: {{ input_access_token }} Chat ID: {{ input_chat_id }} Message: {{ input_message }}","-1008209188":"Sends a message to Telegram","-1218671372":"Displays a notification and optionally play selected sound","-2099284639":"This block gives you the total profit/loss of your trading strategy since your bot started running. You can reset this by clicking “Clear stats” on the Transaction Stats window, or by refreshing this page in your browser.","-683825404":"Total Profit String","-718220730":"Total Profit String Description","-1861858493":"Number of runs","-264195345":"Returns the number of runs","-303451917":"This block gives you the total number of times your bot has run. You can reset this by clicking “Clear stats” on the Transaction Stats window, or by refreshing this page in your browser.","-2132861129":"Conversion Helper Block","-74095551":"Seconds Since Epoch","-15528039":"Returns the number of seconds since January 1st, 1970","-729807788":"This block returns the number of seconds since January 1st, 1970.","-1370107306":"{{ dummy }} {{ stack_input }} Run after {{ number }} second(s)","-558838192":"Delayed run","-1975250999":"This block converts the number of seconds since the Unix Epoch (1 January 1970) into a string of text representing the date and time.","-702370957":"Convert to date/time","-982729677":"Convert to timestamp","-311268215":"This block converts a string of text that represents the date and time into seconds since the Unix Epoch (1 January 1970). The time and time zone offset are optional. Example: 2019-01-01 21:03:45 GMT+0800 will be converted to 1546347825.","-1797602591":"Stop Loss: {{ currency }} {{ stop_loss }}","-1374685318":"Your contract is closed automatically when your loss is more than or equals to this amount. This block can only be used with the multipliers trade type.","-1214929127":"Stop loss must be a positive number.","-780745489":"If the contract type is “Both”, then the Purchase Conditions should include both Rise and Fall using the “Conditional Block\"","-2142851225":"Multiplier trade options","-625636913":"Amount must be a positive number.","-1466383897":"Duration: {{ duration_unit }} {{ duration_value }}","-440702280":"Trade options","-1193894978":"Define your trade options such as duration and stake. Some options are only applicable for certain trade types.","-46523443":"Duration value is not allowed. To run the bot, please enter a value between {{min}} to {{max}}.","-1483427522":"Trade Type: {{ trade_type_category }} > {{ trade_type }}","-323348124":"1. Trade parameters","-1671903503":"Run once at start:","-783173909":"Trade options:","-376956832":"Here is where you define the parameters of your contract.","-1244007240":"if {{ condition }} then","-1577206704":"else if","-33796979":"true","-1434883449":"This is a single block that returns a boolean value, either true or false.","-1946404450":"Compares two values","-979918560":"This block converts the boolean value (true or false) to its opposite.","-2047257743":"Null","-1274387519":"Performs selected logic operation","-766386234":"This block performs the \"AND\" or the \"OR\" logic operation.","-790995537":"test {{ condition }}","-1860211657":"if false {{ return_value }}","-1643760249":"This block tests if a given value is true or false and returns “True” or “False” accordingly.","-1551875333":"Test value","-52486882":"Arithmetical operations","-1010436425":"This block adds the given number to the selected variable","-999773703":"Change variable","-1272091683":"Mathematical constants","-1396629894":"constrain {{ number }} low {{ low_number }} high {{ high_number }}","-425224412":"This block constrains a given number so that it is within a set range.","-2072551067":"Constrain within a range","-43523220":"remainder of {{ number1 }} ÷ {{ number2 }}","-1291857083":"Returns the remainder after a division","-592154850":"Remainder after division","-736665095":"Returns the remainder after the division of the given numbers.","-1266992960":"Math Number Description","-77191651":"{{ number }} is {{ type }}","-817881230":"even","-142319891":"odd","-1000789681":"whole","-1735674752":"Test a number","-1017805068":"This block tests a given number according to the selection and it returns a value of “True” or “False”. Available options: Even, Odd, Prime, Whole, Positive, Negative, Divisible","-1858332062":"Number","-1053492479":"Enter an integer or fractional number into this block. Please use `.` as a decimal separator for fractional numbers.","-927097011":"sum","-1653202295":"max","-1555878023":"average","-1748351061":"mode","-992067330":"Aggregate operations","-1691561447":"This block gives you a random fraction between 0.0 to 1.0","-523625686":"Random fraction number","-933024508":"Rounds a given number to an integer","-1656927862":"This block rounds a given number according to the selection: round, round up, round down.","-1495304618":"absolute","-61210477":"Operations on a given number","-181644914":"This block performs the selected operations to a given number.","-840732999":"to {{ variable }} append text {{ input_text }}","-1469497908":"Appends a given text to a variable","-1851366276":"Text Append","-1666316828":"Appends a given text to a variable.","-1902332770":"Transform {{ input_text }} to {{ transform_type }}","-1489004405":"Title Case","-904432685":"Changes text case accordingly","-882381096":"letter #","-1027605069":"letter # from end","-2066990284":"random letter","-337089610":"in text {{ input_text1 }} find {{ first_or_last }} occurence of text {{ input_text2 }}","-1966694141":"Searches through a string of text for a specific occurrence of a given character or word, and returns the position.","-697543841":"Text join","-141160667":"length of {{ input_text }}","-1133072029":"Text String Length","-1109723338":"print {{ input_text }}","-736668830":"Print","-1821552998":"trim spaces from {{ side }} of {{ input_text }}","-801766026":"right side","-474779821":"Trims spaces","-1687036846":"Download block","-1266781295":"Expand","-894560707":"function","-1867119688":"Duplicate","-610728049":"Rearrange Vertically","-2033146714":"Collapse All Blocks","-958601558":"Delete Block","-1193267384":"Detach Block","-1750478127":"New variable name","-1061878051":"Y","-2047029150":"Unable to load the block file.","-1410769167":"Target must be an XML file","-609157479":"This URL is already loaded","-241945454":"Proposals are not ready","-1087890592":"Maximum loss amount reached","-1030545878":"You are rate limited for: {{ message_type }}, retrying in {{ delay }}s (ID: {{ request }})","-490766438":"You are disconnected, retrying in {{ delay }}s","-1389975609":"unknown","-1900515692":"Duration must be a positive integer","-245297595":"Please login","-1445046468":"Given candle is not valid","-1891622945":"{{hourPast}}h ago","-1919680487":"workspace","-1703118772":"The {{block_type}} block is misplaced from {{missing_space}}.","-1785726890":"purchase conditions","-538215347":"Net deposits","-280147477":"All transactions","-137444201":"Buy","-130601012":"Please select duration","-232254547":"Custom","-1577570698":"Start date","-1251526905":"Last 7 days","-1904030160":"Transaction performed by (App ID: {{app_id}})","-513103225":"Transaction time","-2066666313":"Credit/Debit","-1981004241":"Sell time","-600828210":"Indicative profit/loss","-706219815":"Indicative price","-3423966":"Take profit<0 />Stop loss","-2082644096":"Current stake","-1131753095":"The {{trade_type_name}} contract details aren't currently available. We're working on making them available soon.","-360975483":"You've made no transactions of this type during this period.","-1226595254":"Turbos","-922253974":"Rise/Fall","-1361254291":"Higher/Lower","-335816381":"Ends In/Ends Out","-1789807039":"Asian Up/Asian Down","-330437517":"Matches/Differs","-657360193":"Over/Under","-558031309":"High Tick/Low Tick","-123659792":"Vanillas","-113940416":"Current stake:","-1999539705":"Deal cancel. fee:","-155989831":"Decrement value","-1167474366":"Tick ","-2027409966":"Initial stake:","-1525144993":"Payout limit:","-1669418686":"AUD/CAD","-1548588249":"AUD/CHF","-1552890620":"AUD/JPY","-681231560":"AUD/PLN","-64938413":"AUD/USD","-1430522808":"EUR/AUD","-2020477069":"EUR/CAD","-1201853162":"EUR/CHF","-1197505739":"EUR/JPY","-405907358":"EUR/USD","-1536293064":"NZD/JPY","-79700881":"NZD/USD","-642323838":"USD/CAD","-428199705":"USD/CHF","-424108348":"USD/JPY","-548255282":"USD/NOK","-1834131208":"USD/PLN","-524302516":"Silver/USD","-764731776":"Platinum/USD","-853582174":"France 40","-1096386695":"UK 100","-617646862":"Germany 40","-2077690248":"Japan 225","-512194910":"US Tech 100","-381746202":"US 500","-1935463381":"Swiss 20","-1941767726":"Euro 50","-1925264914":"Volatility 25 Index","-708579504":"Volatility 50 Index","-975255670":"Volatility 75 Index","-1736314513":"Crash 300 Index","-342128411":"Crash 500 Index","-9704319":"Crash 1000 Index","-465860988":"Bull Market Index","-390528194":"Step Index","-280323742":"EUR Basket","-563812039":"Volatility 10 (1s) Index","-764111252":"Volatility 100 (1s) Index","-816110209":"Volatility 150 (1s) Index","-1374309449":"Volatility 200 (1s) Index","-1288044380":"Volatility 250 (1s) Index","-1164978320":"Jump 10 Index","-575272887":"BCH/USD","-295406873":"BTC/ETH","-1713556301":"ZMR/USD","-2046638412":"XRP/USD","-1263203461":"BTC/USD","-1112522776":"DSH/USD","-460689370":"LTC/USD","-1715390759":"I want to do this later","-2092611555":"Sorry, this app is unavailable in your current location.","-1488537825":"If you have an account, log in to continue.","-1603581277":"minutes","-1714959941":"This chart display is not ideal for tick contracts","-1254554534":"Please change the chart duration to tick for a better trading experience.","-1658230823":"Contract was sold for <0 />.","-1905867404":"Contract cancelled"} \ No newline at end of file diff --git a/packages/translations/src/translations/ach.json b/packages/translations/src/translations/ach.json index 60d9670d066e..ad6fb3a82781 100644 --- a/packages/translations/src/translations/ach.json +++ b/packages/translations/src/translations/ach.json @@ -24,7 +24,6 @@ "27731356": "crwdns1774585:0crwdne1774585:0", "27830635": "crwdns1258981:0crwdne1258981:0", "28581045": "crwdns1258983:0crwdne1258983:0", - "30801950": "crwdns1258985:0{{legal_entity_name}}crwdne1258985:0", "33433576": "crwdns1258987:0crwdne1258987:0", "35089987": "crwdns1258989:0crwdne1258989:0", "41737927": "crwdns1258993:0crwdne1258993:0", @@ -251,7 +250,6 @@ "284772879": "crwdns1259359:0crwdne1259359:0", "284809500": "crwdns2080539:0crwdne2080539:0", "287934290": "crwdns1259361:0crwdne1259361:0", - "289898640": "crwdns1259363:0crwdne1259363:0", "291744889": "crwdns2101739:0crwdne2101739:0", "291817757": "crwdns1308099:0crwdne1308099:0", "292491635": "crwdns1259365:0crwdne1259365:0", @@ -372,6 +370,7 @@ "427134581": "crwdns1259565:0crwdne1259565:0", "427617266": "crwdns1259567:0crwdne1259567:0", "428709688": "crwdns1259569:0crwdne1259569:0", + "429970999": "crwdns3121242:0{{document_name}}crwdne3121242:0", "431267979": "crwdns2621365:0crwdne2621365:0", "432273174": "crwdns2154493:0crwdne2154493:0", "432508385": "crwdns1259573:0{{ currency }}crwdnd1259573:0{{ take_profit }}crwdne1259573:0", @@ -453,7 +452,6 @@ "518955798": "crwdns1259699:0crwdne1259699:0", "520136698": "crwdns1259701:0crwdne1259701:0", "521872670": "crwdns1259703:0crwdne1259703:0", - "522283618": "crwdns1259705:0crwdne1259705:0", "522703281": "crwdns1259707:0crwdne1259707:0", "523123321": "crwdns1259709:0crwdne1259709:0", "524459540": "crwdns2101753:0crwdne2101753:0", @@ -562,7 +560,6 @@ "642546661": "crwdns1259883:0crwdne1259883:0", "642995056": "crwdns1259885:0crwdne1259885:0", "644150241": "crwdns1259889:0crwdne1259889:0", - "645016681": "crwdns1259891:0crwdne1259891:0", "645902266": "crwdns1259893:0crwdne1259893:0", "647039329": "crwdns1555137:0crwdne1555137:0", "647745382": "crwdns1259897:0{{ input_list }}crwdne1259897:0", @@ -719,6 +716,7 @@ "812430133": "crwdns2301185:0crwdne2301185:0", "812775047": "crwdns2738415:0crwdne2738415:0", "814827314": "crwdns2301187:0crwdne2301187:0", + "814936420": "crwdns3121244:0{{ banner_message }}crwdne3121244:0", "815925952": "crwdns2301439:0crwdne2301439:0", "816580787": "crwdns1260151:0crwdne1260151:0", "816738009": "crwdns1260153:0crwdne1260153:0", @@ -747,7 +745,6 @@ "836097457": "crwdns1335119:0crwdne1335119:0", "837063385": "crwdns2783109:0crwdne2783109:0", "837066896": "crwdns1260189:0crwdne1260189:0", - "839618971": "crwdns1260191:0crwdne1260191:0", "839805709": "crwdns1260193:0crwdne1260193:0", "840672750": "crwdns2694277:0crwdne2694277:0", "841434703": "crwdns1260195:0crwdne1260195:0", @@ -965,6 +962,7 @@ "1061308507": "crwdns1260549:0{{ contract_type }}crwdne1260549:0", "1062423382": "crwdns2925317:0crwdne2925317:0", "1062536855": "crwdns1260553:0crwdne1260553:0", + "1062569830": "crwdns3121246:0crwdne3121246:0", "1065275078": "crwdns3030609:0crwdne3030609:0", "1065353420": "crwdns1260555:0crwdne1260555:0", "1065498209": "crwdns1260557:0crwdne1260557:0", @@ -1066,7 +1064,6 @@ "1174689133": "crwdns3109828:0crwdne3109828:0", "1174748431": "crwdns1260699:0crwdne1260699:0", "1175183064": "crwdns1260701:0crwdne1260701:0", - "1176926166": "crwdns1260703:0crwdne1260703:0", "1177396776": "crwdns1260705:0crwdne1260705:0", "1177723589": "crwdns1260707:0crwdne1260707:0", "1178582280": "crwdns1260709:0crwdne1260709:0", @@ -1150,6 +1147,7 @@ "1255963623": "crwdns1260835:0{{ input_timestamp }}crwdnd1260835:0{{ dummy }}crwdne1260835:0", "1258097139": "crwdns1260837:0crwdne1260837:0", "1258198117": "crwdns1260839:0crwdne1260839:0", + "1259145708": "crwdns3121248:0crwdne3121248:0", "1259598687": "crwdns1260841:0crwdne1260841:0", "1260259925": "crwdns1260843:0crwdne1260843:0", "1263387702": "crwdns1260845:0{{count}}crwdne1260845:0", @@ -1173,7 +1171,6 @@ "1289146554": "crwdns1719397:0crwdne1719397:0", "1289646209": "crwdns1260879:0crwdne1260879:0", "1290525720": "crwdns1260881:0crwdne1260881:0", - "1291887623": "crwdns1260883:0crwdne1260883:0", "1291997417": "crwdns2301199:0crwdne2301199:0", "1292188546": "crwdns1308105:0crwdne1308105:0", "1292891860": "crwdns1260885:0crwdne1260885:0", @@ -1257,7 +1254,6 @@ "1367023655": "crwdns1261027:0crwdne1261027:0", "1367488817": "crwdns1261029:0crwdne1261029:0", "1367990698": "crwdns1261031:0crwdne1261031:0", - "1369709538": "crwdns1261033:0crwdne1261033:0", "1370647009": "crwdns1774613:0crwdne1774613:0", "1371193412": "crwdns1261035:0crwdne1261035:0", "1371555192": "crwdns1261037:0crwdne1261037:0", @@ -1297,6 +1293,7 @@ "1413047745": "crwdns1261099:0crwdne1261099:0", "1413359359": "crwdns1261101:0crwdne1261101:0", "1414205271": "crwdns1261103:0crwdne1261103:0", + "1414918420": "crwdns3121250:0crwdne3121250:0", "1415006332": "crwdns1261105:0crwdne1261105:0", "1415513655": "crwdns2981017:0crwdne2981017:0", "1415974522": "crwdns1261107:0crwdne1261107:0", @@ -1419,7 +1416,6 @@ "1542742708": "crwdns2154505:0crwdne2154505:0", "1544642951": "crwdns1261307:0crwdne1261307:0", "1547148381": "crwdns1445507:0crwdne1445507:0", - "1548765374": "crwdns1261309:0crwdne1261309:0", "1549098835": "crwdns1261311:0crwdne1261311:0", "1551172020": "crwdns1261313:0crwdne1261313:0", "1552162519": "crwdns1361663:0crwdne1361663:0", @@ -1647,6 +1643,7 @@ "1790770969": "crwdns1261681:0crwdne1261681:0", "1791432284": "crwdns1261683:0crwdne1261683:0", "1791971912": "crwdns1261685:0crwdne1261685:0", + "1792037169": "crwdns3121252:0{{document_name}}crwdne3121252:0", "1793913365": "crwdns1261687:0{{currency_symbol}}crwdne1261687:0", "1794815502": "crwdns1261689:0crwdne1261689:0", "1796787905": "crwdns1445515:0crwdne1445515:0", @@ -1792,7 +1789,6 @@ "1924765698": "crwdns1261929:0crwdne1261929:0", "1926987784": "crwdns2694281:0crwdne2694281:0", "1928930389": "crwdns1261935:0crwdne1261935:0", - "1929309951": "crwdns1261937:0crwdne1261937:0", "1929694162": "crwdns1261939:0crwdne1261939:0", "1930899934": "crwdns1261941:0crwdne1261941:0", "1931659123": "crwdns1261943:0crwdne1261943:0", @@ -1966,12 +1962,12 @@ "2115223095": "crwdns69644:0crwdne69644:0", "2117165122": "crwdns85013:0crwdne85013:0", "2117489390": "crwdns117844:0{{ remaining }}crwdne117844:0", - "2118315870": "crwdns80785:0crwdne80785:0", "2119449126": "crwdns85015:0crwdne85015:0", "2119710534": "crwdns2101869:0crwdne2101869:0", "2121227568": "crwdns162642:0crwdne162642:0", "2122152120": "crwdns1719449:0crwdne1719449:0", "2127564856": "crwdns160416:0crwdne160416:0", + "2129807378": "crwdns3121254:0crwdne3121254:0", "2131963005": "crwdns164124:0crwdne164124:0", "2133451414": "crwdns80789:0crwdne80789:0", "2133470627": "crwdns89404:0crwdne89404:0", @@ -1992,8 +1988,6 @@ "2146698770": "crwdns2101871:0crwdne2101871:0", "2146892766": "crwdns124358:0crwdne124358:0", "2147244655": "crwdns2301463:0crwdne2301463:0", - "-1232613003": "crwdns1787773:0crwdne1787773:0", - "-2029508615": "crwdns1787775:0crwdne1787775:0", "-931052769": "crwdns156670:0crwdne156670:0", "-1004605898": "crwdns156678:0crwdne156678:0", "-1938142055": "crwdns156672:0crwdne156672:0", @@ -2141,18 +2135,9 @@ "-179726573": "crwdns1445555:0crwdne1445555:0", "-813779897": "crwdns1445557:0crwdne1445557:0", "-638756912": "crwdns1445559:0crwdne1445559:0", - "-2073934245": "crwdns121006:0crwdne121006:0", - "-1166068675": "crwdns496900:0{{legal_entity_name}}crwdne496900:0", - "-975118358": "crwdns496902:0{{legal_entity_name}}crwdne496902:0", - "-680528873": "crwdns496904:0{{legal_entity_name}}crwdne496904:0", - "-1125193491": "crwdns81393:0crwdne81393:0", - "-2068229627": "crwdns81631:0crwdne81631:0", "-684271315": "crwdns81133:0crwdne81133:0", "-740157281": "crwdns1335213:0crwdne1335213:0", "-1720468017": "crwdns1335195:0crwdne1335195:0", - "-186841084": "crwdns1220177:0crwdne1220177:0", - "-907403572": "crwdns1220179:0{{identifier_title}}crwdne1220179:0", - "-1850792730": "crwdns162088:0{{identifier_title}}crwdne162088:0", "-307865807": "crwdns1335199:0crwdne1335199:0", "-690100729": "crwdns1335201:0crwdne1335201:0", "-2010628430": "crwdns1335203:0crwdne1335203:0", @@ -2206,11 +2191,6 @@ "-1725454783": "crwdns124162:0crwdne124162:0", "-506510414": "crwdns124158:0crwdne124158:0", "-1708927037": "crwdns124160:0crwdne124160:0", - "-619126443": "crwdns2981025:0{{brand_website_name}}crwdnd2981025:0{{platform_name_trader}}crwdne2981025:0", - "-623760979": "crwdns2981027:0{{brand_website_name}}crwdnd2981027:0{{platform_name_trader}}crwdnd2981027:0{{platform_name_go}}crwdne2981027:0", - "-459147994": "crwdns2981029:0{{brand_website_name}}crwdnd2981029:0{{platform_name_go}}crwdnd2981029:0{{platform_name_trader}}crwdnd2981029:0{{platform_name_smarttrader}}crwdnd2981029:0{{platform_name_dbot}}crwdnd2981029:0{{platform_name_ctrader}}crwdne2981029:0", - "-80717068": "crwdns1220181:0crwdne1220181:0", - "-9570380": "crwdns1047718:0{{platform_name_dxtrade}}crwdnd1047718:0{{platform_name_dxtrade}}crwdne1047718:0", "-2131200819": "crwdns1918507:0crwdne1918507:0", "-200487676": "crwdns121240:0crwdne121240:0", "-1840392236": "crwdns121242:0crwdne121242:0", @@ -2240,44 +2220,37 @@ "-378415317": "crwdns123922:0crwdne123922:0", "-1497654315": "crwdns169125:0crwdne169125:0", "-755626951": "crwdns81603:0crwdne81603:0", - "-584911871": "crwdns159390:0crwdne159390:0", "-1461267236": "crwdns81601:0crwdne81601:0", - "-1352330125": "crwdns159392:0crwdne159392:0", "-1027595143": "crwdns80991:0crwdne80991:0", "-40491332": "crwdns80993:0crwdne80993:0", "-1139806939": "crwdns80995:0crwdne80995:0", - "-626752657": "crwdns80933:0crwdne80933:0", - "-532014689": "crwdns80935:0crwdne80935:0", - "-1001024004": "crwdns80937:0crwdne80937:0", - "-790513277": "crwdns123926:0crwdne123926:0", - "-580085300": "crwdns123928:0crwdne123928:0", - "-654781670": "crwdns80987:0crwdne80987:0", - "-1717373258": "crwdns80989:0crwdne80989:0", "-996132458": "crwdns80951:0crwdne80951:0", "-915003867": "crwdns80953:0crwdne80953:0", "-1430012453": "crwdns80955:0crwdne80955:0", "-987824916": "crwdns80957:0crwdne80957:0", "-146630682": "crwdns80959:0crwdne80959:0", "-761306973": "crwdns80961:0crwdne80961:0", - "-739367071": "crwdns80949:0crwdne80949:0", - "-1156937070": "crwdns80997:0crwdne80997:0", - "-315534569": "crwdns80999:0crwdne80999:0", - "-2068544539": "crwdns80939:0crwdne80939:0", - "-531314998": "crwdns80941:0crwdne80941:0", - "-1235114522": "crwdns80943:0crwdne80943:0", - "-1298056749": "crwdns80945:0crwdne80945:0", - "-449943381": "crwdns80947:0crwdne80947:0", "-1631552645": "crwdns80963:0crwdne80963:0", "-474864470": "crwdns80965:0crwdne80965:0", "-1129355784": "crwdns80967:0crwdne80967:0", "-1242914994": "crwdns80969:0crwdne80969:0", "-1317824715": "crwdns80971:0crwdne80971:0", "-1592729751": "crwdns80973:0crwdne80973:0", + "-1030759620": "crwdns80975:0crwdne80975:0", "-2137323480": "crwdns80977:0crwdne80977:0", "-1590574533": "crwdns80979:0crwdne80979:0", "-1667683002": "crwdns80981:0crwdne80981:0", "-1237843731": "crwdns80983:0crwdne80983:0", "-777506574": "crwdns80985:0crwdne80985:0", + "-654781670": "crwdns80987:0crwdne80987:0", + "-1717373258": "crwdns80989:0crwdne80989:0", + "-1156937070": "crwdns80997:0crwdne80997:0", + "-315534569": "crwdns80999:0crwdne80999:0", + "-2068544539": "crwdns80939:0crwdne80939:0", + "-531314998": "crwdns80941:0crwdne80941:0", + "-1235114522": "crwdns80943:0crwdne80943:0", + "-1298056749": "crwdns80945:0crwdne80945:0", + "-449943381": "crwdns80947:0crwdne80947:0", "-1161338910": "crwdns165647:0crwdne165647:0", "-1161818065": "crwdns163606:0crwdne163606:0", "-1281693513": "crwdns165649:0crwdne165649:0", @@ -2287,28 +2260,14 @@ "-212167954": "crwdns2925237:0crwdne2925237:0", "-621555159": "crwdns838630:0crwdne838630:0", "-204765990": "crwdns81607:0crwdne81607:0", - "-231863107": "crwdns70248:0crwdne70248:0", - "-870902742": "crwdns1335155:0crwdne1335155:0", - "-1929477717": "crwdns1335157:0crwdne1335157:0", - "-1540148863": "crwdns1335159:0crwdne1335159:0", - "-922751756": "crwdns1335161:0crwdne1335161:0", - "-542986255": "crwdns1335163:0crwdne1335163:0", - "-1337206552": "crwdns1335165:0crwdne1335165:0", - "-456863190": "crwdns1419857:0crwdne1419857:0", - "-1314683258": "crwdns1335169:0crwdne1335169:0", - "-1546090184": "crwdns1335171:0crwdne1335171:0", - "-1636427115": "crwdns1335173:0crwdne1335173:0", - "-800221491": "crwdns1335175:0crwdne1335175:0", - "-811839563": "crwdns1335177:0crwdne1335177:0", - "-1185193552": "crwdns1335179:0crwdne1335179:0", - "-1046354": "crwdns1335181:0crwdne1335181:0", - "-1842858448": "crwdns1335183:0crwdne1335183:0", - "-860053164": "crwdns1742109:0crwdne1742109:0", - "-1250327770": "crwdns1742111:0crwdne1742111:0", - "-1222388581": "crwdns1742113:0crwdne1742113:0", "-477761028": "crwdns1935221:0crwdne1935221:0", "-1466346630": "crwdns1935223:0crwdne1935223:0", - "-1030759620": "crwdns80975:0crwdne80975:0", + "-739367071": "crwdns80949:0crwdne80949:0", + "-626752657": "crwdns80933:0crwdne80933:0", + "-532014689": "crwdns80935:0crwdne80935:0", + "-1001024004": "crwdns80937:0crwdne80937:0", + "-790513277": "crwdns123926:0crwdne123926:0", + "-580085300": "crwdns123928:0crwdne123928:0", "-612752984": "crwdns157242:0crwdne157242:0", "-1598263601": "crwdns157244:0crwdne157244:0", "-1411635770": "crwdns160222:0crwdne160222:0", @@ -2326,10 +2285,7 @@ "-1500958859": "crwdns160970:0crwdne160970:0", "-1502578110": "crwdns81257:0crwdne81257:0", "-1662154767": "crwdns124010:0crwdne124010:0", - "-190838815": "crwdns159394:0crwdne159394:0", - "-223216785": "crwdns159396:0crwdne159396:0", "-594456225": "crwdns81619:0crwdne81619:0", - "-1940457555": "crwdns159398:0crwdne159398:0", "-1964954030": "crwdns124012:0crwdne124012:0", "-516397235": "crwdns762992:0crwdne762992:0", "-989216986": "crwdns762994:0crwdne762994:0", @@ -2371,8 +2327,6 @@ "-1100235269": "crwdns81193:0crwdne81193:0", "-684388823": "crwdns81195:0crwdne81195:0", "-509054266": "crwdns124014:0crwdne124014:0", - "-601903492": "crwdns124016:0crwdne124016:0", - "-1012699451": "crwdns124018:0crwdne124018:0", "-1588485629": "crwdns3109826:0crwdne3109826:0", "-1117345066": "crwdns167293:0crwdne167293:0", "-651192353": "crwdns167295:0crwdne167295:0", @@ -2393,18 +2347,21 @@ "-1944264183": "crwdns81297:0crwdne81297:0", "-1088324715": "crwdns1092150:0crwdne1092150:0", "-329713179": "crwdns70290:0crwdne70290:0", - "-1176889260": "crwdns167285:0crwdne167285:0", - "-1926456107": "crwdns167299:0crwdne167299:0", - "-555047589": "crwdns167301:0crwdne167301:0", - "-841187054": "crwdns167303:0crwdne167303:0", + "-895884696": "crwdns3121256:0crwdne3121256:0", + "-1792723131": "crwdns3121258:0{{document_name}}crwdne3121258:0", + "-886317740": "crwdns3121260:0crwdne3121260:0", + "-1813671961": "crwdns3121262:0crwdne3121262:0", "-2097808873": "crwdns167305:0crwdne167305:0", - "-228284848": "crwdns167307:0crwdne167307:0", + "-1652371224": "crwdns3121264:0crwdne3121264:0", + "-504784172": "crwdns3121266:0crwdne3121266:0", "-1391934478": "crwdns167313:0crwdne167313:0", "-118547687": "crwdns167315:0crwdne167315:0", "-200989771": "crwdns81301:0crwdne81301:0", "-1358357943": "crwdns160034:0crwdne160034:0", "-1401994581": "crwdns81315:0crwdne81315:0", "-2004327866": "crwdns167279:0crwdne167279:0", + "-1627868670": "crwdns3121268:0crwdne3121268:0", + "-1606307809": "crwdns3121270:0crwdne3121270:0", "-1664159494": "crwdns167281:0crwdne167281:0", "-749870311": "crwdns160032:0crwdne160032:0", "-1084991359": "crwdns157736:0crwdne157736:0", @@ -2464,21 +2421,54 @@ "-142444667": "crwdns1308111:0crwdne1308111:0", "-742748008": "crwdns171204:0crwdne171204:0", "-84068414": "crwdns171206:0crwdne171206:0", + "-975118358": "crwdns496902:0{{legal_entity_name}}crwdne496902:0", + "-2073934245": "crwdns121006:0crwdne121006:0", + "-1125193491": "crwdns81393:0crwdne81393:0", + "-2068229627": "crwdns81631:0crwdne81631:0", + "-186841084": "crwdns1220177:0crwdne1220177:0", + "-907403572": "crwdns1220179:0{{identifier_title}}crwdne1220179:0", + "-1850792730": "crwdns162088:0{{identifier_title}}crwdne162088:0", "-428335668": "crwdns162086:0crwdne162086:0", + "-1232613003": "crwdns1787773:0crwdne1787773:0", + "-2029508615": "crwdns1787775:0crwdne1787775:0", "-818898181": "crwdns2956331:0crwdne2956331:0", "-310316375": "crwdns2956333:0crwdne2956333:0", "-485368404": "crwdns2956335:0crwdne2956335:0", "-367016488": "crwdns2956337:0crwdne2956337:0", "-1957076143": "crwdns2956339:0crwdne2956339:0", + "-1576856758": "crwdns3121272:0crwdne3121272:0", + "-231863107": "crwdns70248:0crwdne70248:0", + "-870902742": "crwdns1335155:0crwdne1335155:0", + "-1929477717": "crwdns1335157:0crwdne1335157:0", + "-1540148863": "crwdns1335159:0crwdne1335159:0", + "-922751756": "crwdns1335161:0crwdne1335161:0", + "-542986255": "crwdns1335163:0crwdne1335163:0", + "-1337206552": "crwdns1335165:0crwdne1335165:0", + "-456863190": "crwdns1419857:0crwdne1419857:0", + "-1314683258": "crwdns1335169:0crwdne1335169:0", + "-1546090184": "crwdns1335171:0crwdne1335171:0", + "-1636427115": "crwdns1335173:0crwdne1335173:0", + "-800221491": "crwdns1335175:0crwdne1335175:0", + "-811839563": "crwdns1335177:0crwdne1335177:0", + "-1185193552": "crwdns1335179:0crwdne1335179:0", + "-1046354": "crwdns1335181:0crwdne1335181:0", + "-1842858448": "crwdns1335183:0crwdne1335183:0", + "-860053164": "crwdns1742109:0crwdne1742109:0", + "-1250327770": "crwdns1742111:0crwdne1742111:0", + "-1222388581": "crwdns1742113:0crwdne1742113:0", "-1515286538": "crwdns167287:0crwdne167287:0", "-1694758788": "crwdns1935225:0crwdne1935225:0", "-1458676679": "crwdns81199:0crwdne81199:0", + "-1176889260": "crwdns167285:0crwdne167285:0", + "-1265050949": "crwdns3121274:0crwdne3121274:0", "-2139303636": "crwdns120688:0crwdne120688:0", "-1448368765": "crwdns164883:0{{error_code}}crwdne164883:0", "-254792921": "crwdns1335197:0crwdne1335197:0", "-1437017790": "crwdns81191:0crwdne81191:0", "-70342544": "crwdns160976:0crwdne160976:0", "-39038029": "crwdns124020:0crwdne124020:0", + "-601903492": "crwdns124016:0crwdne124016:0", + "-1012699451": "crwdns124018:0crwdne124018:0", "-1894668798": "crwdns124406:0crwdne124406:0", "-1026468600": "crwdns124408:0crwdne124408:0", "-1743024217": "crwdns1600241:0crwdne1600241:0", @@ -2489,6 +2479,11 @@ "-536187647": "crwdns124120:0crwdne124120:0", "-1357606534": "crwdns124122:0crwdne124122:0", "-570222048": "crwdns124124:0crwdne124124:0", + "-80717068": "crwdns1220181:0crwdne1220181:0", + "-340060402": "crwdns3121280:0crwdne3121280:0", + "-619126443": "crwdns2981025:0{{brand_website_name}}crwdnd2981025:0{{platform_name_trader}}crwdne2981025:0", + "-623760979": "crwdns2981027:0{{brand_website_name}}crwdnd2981027:0{{platform_name_trader}}crwdnd2981027:0{{platform_name_go}}crwdne2981027:0", + "-459147994": "crwdns2981029:0{{brand_website_name}}crwdnd2981029:0{{platform_name_go}}crwdnd2981029:0{{platform_name_trader}}crwdnd2981029:0{{platform_name_smarttrader}}crwdnd2981029:0{{platform_name_dbot}}crwdnd2981029:0{{platform_name_ctrader}}crwdne2981029:0", "-1526404112": "crwdns2956341:0crwdne2956341:0", "-537552700": "crwdns2956343:0crwdne2956343:0", "-890084320": "crwdns81291:0crwdne81291:0", @@ -2859,6 +2854,30 @@ "-1016171176": "crwdns2620885:0crwdne2620885:0", "-621128676": "crwdns2620887:0crwdne2620887:0", "-447853970": "crwdns2620889:0crwdne2620889:0", + "-155173714": "crwdns2101979:0crwdne2101979:0", + "-1919212468": "crwdns2101983:0crwdne2101983:0", + "-1520558271": "crwdns2101985:0crwdne2101985:0", + "-980360663": "crwdns2101987:0crwdne2101987:0", + "-1493168314": "crwdns2101989:0crwdne2101989:0", + "-1680391945": "crwdns2101993:0crwdne2101993:0", + "-1177914473": "crwdns2101995:0crwdne2101995:0", + "-271986909": "crwdns2101997:0crwdne2101997:0", + "-1149045595": "crwdns2102001:0crwdne2102001:0", + "-288041546": "crwdns2102003:0crwdne2102003:0", + "-2127548288": "crwdns2102005:0crwdne2102005:0", + "-1311297611": "crwdns2102007:0crwdne2102007:0", + "-1549564044": "crwdns2102009:0crwdne2102009:0", + "-1127331928": "crwdns2102011:0crwdne2102011:0", + "-1720444288": "crwdns2301471:0crwdne2301471:0", + "-1142295124": "crwdns2301473:0crwdne2301473:0", + "-986689483": "crwdns2102017:0crwdne2102017:0", + "-269910127": "crwdns2925341:0crwdne2925341:0", + "-1565344891": "crwdns2301475:0crwdne2301475:0", + "-90192474": "crwdns2102029:0crwdne2102029:0", + "-213872712": "crwdns2301477:0crwdne2301477:0", + "-2147346223": "crwdns2301479:0crwdne2301479:0", + "-352345777": "crwdns2102037:0crwdne2102037:0", + "-552392096": "crwdns2301481:0crwdne2301481:0", "-507620484": "crwdns122660:0crwdne122660:0", "-764102808": "crwdns89506:0crwdne89506:0", "-555886064": "crwdns70286:0crwdne70286:0", @@ -2937,30 +2956,6 @@ "-1823621139": "crwdns123896:0crwdne123896:0", "-1778025545": "crwdns2101885:0crwdne2101885:0", "-1519425996": "crwdns2101977:0{{ faq_search_value }}crwdne2101977:0", - "-155173714": "crwdns2101979:0crwdne2101979:0", - "-1919212468": "crwdns2101983:0crwdne2101983:0", - "-1520558271": "crwdns2101985:0crwdne2101985:0", - "-980360663": "crwdns2101987:0crwdne2101987:0", - "-1493168314": "crwdns2101989:0crwdne2101989:0", - "-1680391945": "crwdns2101993:0crwdne2101993:0", - "-1177914473": "crwdns2101995:0crwdne2101995:0", - "-271986909": "crwdns2101997:0crwdne2101997:0", - "-1149045595": "crwdns2102001:0crwdne2102001:0", - "-288041546": "crwdns2102003:0crwdne2102003:0", - "-2127548288": "crwdns2102005:0crwdne2102005:0", - "-1311297611": "crwdns2102007:0crwdne2102007:0", - "-1549564044": "crwdns2102009:0crwdne2102009:0", - "-1127331928": "crwdns2102011:0crwdne2102011:0", - "-1720444288": "crwdns2301471:0crwdne2301471:0", - "-1142295124": "crwdns2301473:0crwdne2301473:0", - "-986689483": "crwdns2102017:0crwdne2102017:0", - "-269910127": "crwdns2925341:0crwdne2925341:0", - "-1565344891": "crwdns2301475:0crwdne2301475:0", - "-90192474": "crwdns2102029:0crwdne2102029:0", - "-213872712": "crwdns2301477:0crwdne2301477:0", - "-2147346223": "crwdns2301479:0crwdne2301479:0", - "-352345777": "crwdns2102037:0crwdne2102037:0", - "-552392096": "crwdns2301481:0crwdne2301481:0", "-418247251": "crwdns125122:0crwdne125122:0", "-2123571162": "crwdns838744:0crwdne838744:0", "-870004399": "crwdns117766:0{{longcode}}crwdnd117766:0{{transaction_id}}crwdne117766:0", @@ -3125,7 +3120,6 @@ "-650505513": "crwdns123978:0crwdne123978:0", "-1823504435": "crwdns81485:0crwdne81485:0", "-1954045170": "crwdns81487:0crwdne81487:0", - "-583559763": "crwdns89670:0crwdne89670:0", "-1591792668": "crwdns1361671:0crwdne1361671:0", "-34495732": "crwdns1361673:0crwdne1361673:0", "-1496158755": "crwdns1361675:0crwdne1361675:0", @@ -3259,6 +3253,7 @@ "-818926350": "crwdns124116:0crwdne124116:0", "-1825471709": "crwdns89660:0crwdne89660:0", "-981017278": "crwdns89662:0crwdne89662:0", + "-583559763": "crwdns89670:0crwdne89670:0", "-778309978": "crwdns2738165:0crwdne2738165:0", "-336222114": "crwdns2694285:0crwdne2694285:0", "-1064116456": "crwdns2694287:0crwdne2694287:0", @@ -3415,22 +3410,6 @@ "-1282933308": "crwdns117860:0{{barrier}}crwdne117860:0", "-968190634": "crwdns117862:0{{barrier}}crwdne117862:0", "-1747377543": "crwdns117864:0{{barrier}}crwdne117864:0", - "-256210543": "crwdns81079:0crwdne81079:0", - "-1150099396": "crwdns1308113:0crwdne1308113:0", - "-28115241": "crwdns496942:0{{platform_name_trader}}crwdne496942:0", - "-453920758": "crwdns496944:0{{platform_name_mt5}}crwdne496944:0", - "-402175529": "crwdns89548:0crwdne89548:0", - "-902712434": "crwdns89522:0crwdne89522:0", - "-988484646": "crwdns89550:0crwdne89550:0", - "-444882676": "crwdns89552:0crwdne89552:0", - "-13423018": "crwdns70594:0crwdne70594:0", - "-2035315547": "crwdns69764:0crwdne69764:0", - "-1551639437": "crwdns89554:0crwdne89554:0", - "-1214703885": "crwdns89556:0crwdne89556:0", - "-504849554": "crwdns160182:0crwdne160182:0", - "-59803288": "crwdns160184:0crwdne160184:0", - "-1278109940": "crwdns160186:0crwdne160186:0", - "-694105443": "crwdns160188:0crwdne160188:0", "-1043795232": "crwdns120656:0crwdne120656:0", "-1511825574": "crwdns70276:0crwdne70276:0", "-726626679": "crwdns70278:0crwdne70278:0", @@ -3455,21 +3434,15 @@ "-1435392215": "crwdns124768:0crwdne124768:0", "-2017825013": "crwdns124770:0crwdne124770:0", "-1192773792": "crwdns89638:0crwdne89638:0", + "-902712434": "crwdns89522:0crwdne89522:0", "-1280319153": "crwdns125212:0crwdne125212:0", "-471757681": "crwdns124772:0crwdne124772:0", "-843831637": "crwdns89524:0crwdne89524:0", "-771725194": "crwdns124776:0crwdne124776:0", "-338707425": "crwdns81109:0crwdne81109:0", "-1003473648": "crwdns117900:0{{duration}}crwdne117900:0", - "-740702998": "crwdns2738433:0{{title}}crwdnd2738433:0{{message}}crwdne2738433:0", - "-1669741470": "crwdns2341237:0crwdne2341237:0", "-1527492178": "crwdns81417:0crwdne81417:0", "-725375562": "crwdns81419:0crwdne81419:0", - "-774638412": "crwdns3031433:0{{min_stake}}crwdnd3031433:0{{currency}}crwdnd3031433:0{{max_stake}}crwdnd3031433:0{{currency}}crwdne3031433:0", - "-1358367903": "crwdns69662:0crwdne69662:0", - "-434270664": "crwdns2080563:0crwdne2080563:0", - "-1956787775": "crwdns2080565:0crwdne2080565:0", - "-1513281069": "crwdns121004:0crwdne121004:0", "-390994177": "crwdns89650:0{{min}}crwdnd89650:0{{max}}crwdne89650:0", "-1804019534": "crwdns2341239:0{{date}}crwdne2341239:0", "-2055106024": "crwdns117292:0crwdne117292:0", @@ -3484,6 +3457,7 @@ "-1763848396": "crwdns1781087:0crwdne1781087:0", "-194424366": "crwdns1781095:0crwdne1781095:0", "-857660728": "crwdns1781103:0crwdne1781103:0", + "-1358367903": "crwdns69662:0crwdne69662:0", "-1386326276": "crwdns81059:0crwdne81059:0", "-1418742026": "crwdns81061:0crwdne81061:0", "-92007689": "crwdns81063:0crwdne81063:0", @@ -3491,6 +3465,21 @@ "-1975910372": "crwdns81067:0crwdne81067:0", "-866277689": "crwdns81069:0crwdne81069:0", "-1455298001": "crwdns81075:0crwdne81075:0", + "-256210543": "crwdns81079:0crwdne81079:0", + "-1150099396": "crwdns1308113:0crwdne1308113:0", + "-28115241": "crwdns496942:0{{platform_name_trader}}crwdne496942:0", + "-453920758": "crwdns496944:0{{platform_name_mt5}}crwdne496944:0", + "-402175529": "crwdns89548:0crwdne89548:0", + "-988484646": "crwdns89550:0crwdne89550:0", + "-444882676": "crwdns89552:0crwdne89552:0", + "-13423018": "crwdns70594:0crwdne70594:0", + "-2035315547": "crwdns69764:0crwdne69764:0", + "-1551639437": "crwdns89554:0crwdne89554:0", + "-1214703885": "crwdns89556:0crwdne89556:0", + "-504849554": "crwdns160182:0crwdne160182:0", + "-59803288": "crwdns160184:0crwdne160184:0", + "-1278109940": "crwdns160186:0crwdne160186:0", + "-694105443": "crwdns160188:0crwdne160188:0", "-439389714": "crwdns120644:0crwdne120644:0", "-770929448": "crwdns496946:0{{platform_name_smarttrader}}crwdne496946:0", "-347156282": "crwdns1807479:0crwdne1807479:0", @@ -3537,6 +3526,8 @@ "-454245976": "crwdns2738439:0crwdne2738439:0", "-351875097": "crwdns1822843:0crwdne1822843:0", "-729830082": "crwdns2363141:0crwdne2363141:0", + "-1669741470": "crwdns2341237:0crwdne2341237:0", + "-740702998": "crwdns2738433:0{{title}}crwdnd2738433:0{{message}}crwdne2738433:0", "-1790089996": "crwdns89532:0crwdne89532:0", "-993480898": "crwdns1822835:0crwdne1822835:0", "-45873457": "crwdns157388:0crwdne157388:0", @@ -3557,6 +3548,10 @@ "-690963898": "crwdns2225585:0crwdne2225585:0", "-511541916": "crwdns2225587:0crwdne2225587:0", "-438655760": "crwdns3030605:0crwdne3030605:0", + "-774638412": "crwdns3031433:0{{min_stake}}crwdnd3031433:0{{currency}}crwdnd3031433:0{{max_stake}}crwdnd3031433:0{{currency}}crwdne3031433:0", + "-434270664": "crwdns2080563:0crwdne2080563:0", + "-1956787775": "crwdns2080565:0crwdne2080565:0", + "-1513281069": "crwdns121004:0crwdne121004:0", "-1683683754": "crwdns2738429:0crwdne2738429:0", "-1046859144": "crwdns2738441:0{{title}}crwdnd2738441:0{{price_position}}crwdne2738441:0", "-1815023694": "crwdns2738443:0crwdne2738443:0", diff --git a/packages/translations/src/translations/ar.json b/packages/translations/src/translations/ar.json index 31c769109be4..2bef7104ed89 100644 --- a/packages/translations/src/translations/ar.json +++ b/packages/translations/src/translations/ar.json @@ -24,7 +24,6 @@ "27731356": "تم تعطيل حسابك مؤقتًا. يرجى الاتصال بنا عبر <0>الدردشة الحية لتمكين عمليات الإيداع والسحب مرة أخرى.", "27830635": "شركة ديريف (V) المحدودة", "28581045": "أضف حساب MT5 حقيقي", - "30801950": "سيتم فتح حسابك لدى {{legal_entity_name}} ، تنظمها هيئة مالطا للألعاب ، وسيخضع لقوانين مالطا.", "33433576": "يرجى استخدام المحفظة الإلكترونية لسحب أموالك.", "35089987": "قم بتحميل الجزء الأمامي والخلفي من رخصة القيادة الخاصة بك.", "41737927": "شكرًا لك", @@ -251,7 +250,6 @@ "284772879": "عقد", "284809500": "حساب مالي تجريبي", "287934290": "هل تريد بالتأكيد إلغاء هذه المعاملة؟", - "289898640": "شروط الاستخدام", "291744889": "<0>1. معايير التجارة: <0>", "291817757": "انتقل إلى مجتمع Deriv الخاص بنا وتعرف على واجهات برمجة التطبيقات ورموز API وطرق استخدام واجهات برمجة تطبيقات Deriv والمزيد.", "292491635": "إذا اخترت «إيقاف الخسارة» وحددت مبلغًا للحد من خسارتك، فسيتم إغلاق مركزك تلقائيًا عندما تكون خسارتك أكثر من أو تساوي هذا المبلغ. قد تكون خسارتك أكثر من المبلغ الذي أدخلته اعتمادًا على سعر السوق عند الإغلاق.", @@ -372,6 +370,7 @@ "427134581": "حاول استخدام نوع ملف آخر.", "427617266": "بيتكوين", "428709688": "الفاصل الزمني المفضل لديك بين كل تقرير:", + "429970999": "To avoid delays, enter your <0>name exactly as it appears on your {{document_name}}.", "431267979": "إليك دليل سريع حول كيفية استخدام Deriv Bot أثناء التنقل.", "432273174": "1:100", "432508385": "جني الأرباح: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. قم بالتشغيل مرة واحدة في البداية", "520136698": "مؤشر بوم 500", "521872670": "عنصر", - "522283618": "تجربة تداول الخيارات الرقمية", "522703281": "قابلة للقسمة على", "523123321": "- 10 إلى قوة الرقم المعطى \n", "524459540": "كيف أقوم بإنشاء متغيرات؟", @@ -562,7 +560,6 @@ "642546661": "قم بتحميل نسخة احتياطية من الترخيص من جهاز الكمبيوتر الخاص بك", "642995056": "البريد الإلكتروني", "644150241": "عدد العقود التي فزت بها منذ آخر مرة قمت فيها بمسح الإحصائيات الخاصة بك.", - "645016681": "تكرار التداول في الأدوات المالية الأخرى", "645902266": "يورو/دولار نيوزيلندي", "647039329": "مطلوب إثبات العنوان ", "647745382": "قائمة الإدخال {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "السعر الفوري على العلامة السابقة.", "812775047": "تحت الحاجز", "814827314": "يشير مستوى الإيقاف على الرسم البياني إلى السعر الذي تساوي فيه خسارتك المحتملة حصتك بالكامل. عندما يصل سعر السوق إلى هذا المستوى، سيتم إغلاق مركزك تلقائيًا. هذا يضمن أن خسارتك لا تتجاوز المبلغ الذي دفعته لشراء العقد.", + "814936420": "{{ banner_message }}", "815925952": "هذه الكتلة إلزامية. يُسمح بنسخة واحدة فقط من هذا الحظر. تتم إضافته إلى اللوحة افتراضيًا عند فتح Deriv Bot.", "816580787": "مرحبًا بك مرة أخرى! تمت استعادة الرسائل الخاصة بك.", "816738009": "<0/><1/>يمكنك أيضًا رفع نزاعك الذي لم يتم حله إلى <2>مكتب المحكم للخدمات المالية.", @@ -747,7 +745,6 @@ "836097457": "أنا مهتم بالتداول ولكن لدي خبرة قليلة جدًا.", "837063385": "لا ترسل عملات أخرى إلى هذا العنوان.", "837066896": "يتم مراجعة المستند الخاص بك، يرجى التحقق مرة أخرى في غضون 1-3 أيام.", - "839618971": "عنوان", "839805709": "للتحقق منك بسلاسة، نحتاج إلى صورة أفضل", "840672750": "إذا لم ينجح ذلك، فقم بإلغاء تثبيت تطبيق MT5 وإعادة تثبيته. ثم أعد الخطوتين <0>2 و <0>3.", "841434703": "تعطيل المكدس", @@ -965,6 +962,7 @@ "1061308507": "شراء {{ contract_type }}", "1062423382": "استكشف أدلة الفيديو والأسئلة الشائعة لإنشاء الروبوت الخاص بك في علامة تبويب البرامج التعليمية.", "1062536855": "يساوي", + "1062569830": "The <0>name on your identity document doesn't match your profile.", "1065275078": "cTrader متاح فقط على سطح المكتب في الوقت الحالي.", "1065353420": "110+", "1065498209": "التكرار (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3. قم بتعيين معايير التداول الخاصة بك واضغط على Run.", "1174748431": "قناة الدفع", "1175183064": "فانواتو/Vanuatu", - "1176926166": "خبرة في تداول الأدوات المالية الأخرى", "1177396776": "إذا اخترت «Asian Fall»، ستربح بالعائد إذا كانت العلامة الأخيرة أقل من متوسط العلامات.", "1177723589": "لا توجد معاملات لعرضها", "1178582280": "عدد العقود التي فقدتها منذ آخر مرة مسحت فيها إحصائياتك.", @@ -1150,6 +1147,7 @@ "1255963623": "حتى التاريخ/الوقت {{ input_timestamp }} {{ dummy }}", "1258097139": "ماذا يمكننا أن نفعل للتحسين؟", "1258198117": "إيجابي", + "1259145708": "Let’s try again. Choose another document and enter the corresponding details.", "1259598687": "جنيه استرليني / ين ياباني", "1260259925": "الهاتف ليس بالترتيب المناسب.", "1263387702": "تستخدم جميع أنواع الحسابات {{count}} تنفيذ السوق. هذا يعني أنك توافق على سعر الوسيط مقدمًا وستضع الطلبات بسعر الوسيط.", @@ -1173,7 +1171,6 @@ "1289146554": "لجنة الخدمات المالية لجزر فيرجن البريطانية", "1289646209": "نداء الهامش", "1290525720": "مثال: ", - "1291887623": "تردد تداول الخيارات الرقمية", "1291997417": "ستنتهي العقود في تمام الساعة 23:59:59 بتوقيت جرينتش في تاريخ انتهاء الصلاحية المحدد.", "1292188546": "إعادة تعيين كلمة مرور مستثمر Deriv MT5", "1292891860": "قم ابلاغ/اشعار تيليجرام", @@ -1257,7 +1254,6 @@ "1367023655": "لضمان عدم تجاوز خسارتك لحصتك، سيتم إغلاق عقدك تلقائيًا عندما تساوي خسارتك<0/>.", "1367488817": "4. شروط إعادة تشغيل التداول", "1367990698": "مؤشر التقلب 10", - "1369709538": "شروط الاستخدام الخاصة بنا", "1370647009": "استمتع بحدود يومية أعلى", "1371193412": "إلغاء", "1371555192": "اختر وكيل الدفع المفضل لديك وأدخل مبلغ السحب. إذا لم يكن وكيل الدفع الخاص بك مدرجًا، <0>فابحث عنه باستخدام رقم حسابه.", @@ -1297,6 +1293,7 @@ "1413047745": "يقوم بتعيين قيمة معينة لمتغير", "1413359359": "قم بإجراء تحويل جديد", "1414205271": "أولي", + "1414918420": "We'll review your proof of identity again and will give you an update as soon as possible.", "1415006332": "احصل على قائمة فرعية من البداية", "1415513655": "قم بتنزيل cTrader على هاتفك للتداول باستخدام حساب Deriv cTrader", "1415974522": "إذا اخترت «تختلف»، فستفوز بالعائد إذا كان الرقم الأخير من العلامة الأخيرة مختلفًا عن توقعاتك.", @@ -1419,7 +1416,6 @@ "1542742708": "المواد التركيبية والفوركس والأسهم ومؤشرات الأسهم والسلع والعملات المشفرة", "1544642951": "إذا اخترت «Only Ups»، فستفوز بالعائد إذا ارتفعت العلامات المتتالية تباعًا بعد نقطة الدخول. لا يتم دفع أي عائد إذا سقطت أي علامة أو كانت مساوية لأي من العلامات السابقة.", "1547148381": "هذا الملف كبير جدًا (يُسمح فقط بما يصل إلى 8 ميغابايت). يرجى تحميل ملف آخر.", - "1548765374": "فشل التحقق من رقم المستند / الوثيقة", "1549098835": "إجمالي عمليات السحب", "1551172020": "سلة الدولار الأسترالي", "1552162519": "عرض عملية الإعداد", @@ -1647,6 +1643,7 @@ "1790770969": "العملات الأجنبية الرئيسية (اللوتات القياسية/الصغيرة)، العملات الأجنبية الثانوية، السلع، العملات المشفرة", "1791432284": "ابحث عن البلد", "1791971912": "حديث", + "1792037169": "To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your {{document_name}}.", "1793913365": "لإيداع الأموال، يرجى التبديل إلى حساب {{currency_symbol}} الخاص بك.", "1794815502": "قم بتنزيل سجل المعاملات الخاص بك.", "1796787905": "يرجى تحميل المستند (المستندات) التالية.", @@ -1792,7 +1789,6 @@ "1924765698": "مكان الولادة*", "1926987784": "- iOS: مرر لليسار على الحساب وانقر فوق <0>حذف.", "1928930389": "جنيه استرليني/كرونة", - "1929309951": "حالة التوظيف", "1929694162": "قارن الحسابات", "1930899934": "تيذر/Tether", "1931659123": "اركض على كل علامة", @@ -1966,12 +1962,12 @@ "2115223095": "خسارة", "2117165122": "1. قم بإنشاء روبوت Telegram واحصل على رمز Telegram API الخاص بك. اقرأ المزيد عن كيفية إنشاء روبوتات في تيليجرام هنا: https://core.telegram.org/bots#6-botfather", "2117489390": "تحديث تلقائي في {{ remaining }} ثانية", - "2118315870": "أين تعيش؟", "2119449126": "سيكون الناتج النموذجي للمثال أدناه:", "2119710534": "التعليمات", "2121227568": "نيو/دولار أمريكي", "2122152120": "الأصول", "2127564856": "عمليات السحب مقفلة", + "2129807378": "Update profile", "2131963005": "يرجى سحب أموالك من حساب (حسابات) Deriv MT5 التالي:", "2133451414": "المدّة", "2133470627": "تقوم هذه الكتلة بإرجاع العائد المحتمل لنوع التجارة المحدد. يمكن استخدام هذه الكتلة فقط في الكتلة الجذرية «شروط الشراء».", @@ -1992,8 +1988,6 @@ "2146698770": "نصيحة احترافية: يمكنك أيضًا النقر فوق الكتلة المطلوبة وسحبها", "2146892766": "تجربة تداول الخيارات الثنائية", "2147244655": "كيف يمكنني استيراد روبوت التداول الخاص بي إلى Deriv Bot؟", - "-1232613003": "<0>فشلت عملية التحقق. <1>لماذا؟", - "-2029508615": "<0>تحتاج إلى التحقق. <1>تحقق الآن", "-931052769": "إرسال التحقق", "-1004605898": "نصائح", "-1938142055": "المستندات التي تم تحميلها", @@ -2141,18 +2135,9 @@ "-179726573": "لقد تلقينا إثبات الملكية الخاص بك.", "-813779897": "تم اجتياز إثبات الملكية.", "-638756912": "قم بإلغاء الأرقام من 7 إلى 12 من رقم البطاقة الذي يظهر على الجزء الأمامي من بطاقة الخصم/الائتمان الخاصة بك.", - "-2073934245": "خدمات التداول المالي المقدمة على هذا الموقع مناسبة فقط للعملاء الذين يقبلون إمكانية خسارة جميع الأموال التي يستثمرونها والذين يفهمون ولديهم خبرة في المخاطر التي ينطوي عليها شراء العقود المالية. تنطوي المعاملات في العقود المالية على درجة عالية من المخاطر. إذا انتهت صلاحية العقود التي اشتريتها باعتبارها عديمة القيمة، فسوف تفقد كل استثماراتك، بما في ذلك علاوة العقد.", - "-1166068675": "سيتم فتح حسابك بـ {{legal_entity_name}}، وتنظمه لجنة الألعاب في المملكة المتحدة (UKGC)، وسيخضع لقوانين جزيرة آيل أوف مان.", - "-975118358": "سيتم فتح حسابك بـ {{legal_entity_name}}، وتنظمه هيئة الخدمات المالية المالطية (MFSA)، وسيخضع لقوانين مالطا.", - "-680528873": "سيتم فتح حسابك بـ {{legal_entity_name}} وسيخضع لقوانين ساموا.", - "-1125193491": "إضافة حساب", - "-2068229627": "أنا لست PEP، ولم أكن PEP في الأشهر الـ 12 الماضية.", "-684271315": "حسنا", "-740157281": "تقييم تجربة التداول", "-1720468017": "عند تقديم خدماتنا لك، يتعين علينا الحصول على معلومات منك لتقييم ما إذا كان منتج أو خدمة معينة مناسبة لك.", - "-186841084": "تغيير البريد الإلكتروني لتسجيل الدخول", - "-907403572": "لتغيير عنوان بريدك الإلكتروني، ستحتاج أولاً إلى إلغاء ربط عنوان بريدك الإلكتروني بحساب {{identifier_title}} الخاص بك.", - "-1850792730": "إلغاء الارتباط من {{identifier_title}}", "-307865807": "تحذير من تحمل المخاطر", "-690100729": "نعم، أنا أفهم المخاطر.", "-2010628430": "تنطوي العقود مقابل الفروقات والأدوات المالية الأخرى على مخاطر عالية لخسارة الأموال بسرعة بسبب الرافعة المالية. يجب عليك التفكير فيما إذا كنت تفهم كيفية عمل العقود مقابل الفروقات والأدوات المالية الأخرى وما إذا كنت قادرًا على تحمل المخاطر العالية لخسارة أموالك.<0/><0/> للمتابعة، يجب أن تؤكد أنك تفهم أن رأس مالك معرض للخطر.", @@ -2206,11 +2191,6 @@ "-1725454783": "فشلت", "-506510414": "التاريخ والوقت", "-1708927037": "عنوان IP", - "-619126443": "استخدم كلمة <0>مرور Deriv لتسجيل الدخول إلى {{brand_website_name}} و {{platform_name_trader}}.", - "-623760979": "استخدم <0>كلمة مرور Deriv لتسجيل الدخول إلى {{brand_website_name}}, {{platform_name_trader}} و. {{platform_name_go}}", - "-459147994": "استخدم <0>كلمة مرور Deriv لتسجيل الدخول إلى {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}} {{platform_name_smarttrader}}, {{platform_name_dbot}} و. {{platform_name_ctrader}}", - "-80717068": "التطبيقات التي ربطتها <0>بكلمة مرور Deriv الخاصة بك:", - "-9570380": "استخدم كلمة المرور {{platform_name_dxtrade}} لتسجيل الدخول إلى حسابات {{platform_name_dxtrade}} الخاصة بك على الويب وتطبيقات الهاتف المحمول.", "-2131200819": "تعطيل", "-200487676": "تفعيل", "-1840392236": "هذا ليس الرمز الصحيح. يرجى المحاولة مرة أخرى.", @@ -2240,44 +2220,37 @@ "-378415317": "الدولة مطلوبة", "-1497654315": "حساباتنا وخدماتنا غير متوفرة للرمز البريدي لجيرسي.", "-755626951": "أكمل تفاصيل عنوانك", - "-584911871": "اختر عملة المحفظة", "-1461267236": "يرجى اختيار عملتك", - "-1352330125": "عملة", "-1027595143": "أقل من 25,000 دولار", "-40491332": "25,000 دولار - 50,000 دولار", "-1139806939": "50,001 دولار - 100,000 دولار", - "-626752657": "0-1 سنة", - "-532014689": "من سنة إلى سنتين", - "-1001024004": "أكثر من 3 سنوات", - "-790513277": "6-10 معاملات في الأشهر الـ 12 الماضية", - "-580085300": "11-39 معاملة في الأشهر الـ 12 الماضية", - "-654781670": "اساسي", - "-1717373258": "ثانوي", "-996132458": "أعمال البناء", "-915003867": "الصحة", "-1430012453": "تقنية المعلومات والاتصالات", "-987824916": "العلوم والهندسة", "-146630682": "الاجتماعية والثقافية", "-761306973": "التصنيع", - "-739367071": "موظف", - "-1156937070": "500,001 دولار - 1,000,000 دولار", - "-315534569": "أكثر من مليون دولار", - "-2068544539": "موظف براتب", - "-531314998": "الاستثمارات وأرباح الأسهم", - "-1235114522": "راتب تقاعد", - "-1298056749": "مزايا الدولة", - "-449943381": "الادخار والميراث", "-1631552645": "المحترفون", "-474864470": "عمال العناية الشخصية والمبيعات والخدمة", "-1129355784": "عمال الزراعة والغابات ومصايد الأسماك", "-1242914994": "عمال الحرف والمعادن والكهرباء والإلكترونيات", "-1317824715": "عمال النظافة والمساعدون", "-1592729751": "عمال التعدين والبناء والتصنيع والنقل", + "-1030759620": "مسؤولون حكوميون", "-2137323480": "ملكية الشركة", "-1590574533": "تسوية الطلاق", "-1667683002": "الميراث", "-1237843731": "دخل الاستثمار", "-777506574": "بيع الممتلكات", + "-654781670": "اساسي", + "-1717373258": "ثانوي", + "-1156937070": "500,001 دولار - 1,000,000 دولار", + "-315534569": "أكثر من مليون دولار", + "-2068544539": "موظف براتب", + "-531314998": "الاستثمارات وأرباح الأسهم", + "-1235114522": "راتب تقاعد", + "-1298056749": "مزايا الدولة", + "-449943381": "الادخار والميراث", "-1161338910": "الاسم الأول مطلوب.", "-1161818065": "يجب أن يكون الاسم الأخير بين 2 و 50 حرفًا.", "-1281693513": "تاريخ الميلاد مطلوب.", @@ -2287,28 +2260,14 @@ "-212167954": "لم يتم تنسيق رقم التعريف الضريبي بشكل صحيح.", "-621555159": "معلومات الهوية", "-204765990": "شروط الاستخدام", - "-231863107": "لا", - "-870902742": "ما مقدار المعرفة والخبرة التي لديك فيما يتعلق بالتداول عبر الإنترنت؟", - "-1929477717": "لديّ درجة أكاديمية وشهادة مهنية و/أو خبرة عمل تتعلق بالخدمات المالية.", - "-1540148863": "لقد حضرت الندوات والتدريب و/أو ورش العمل المتعلقة بالتداول.", - "-922751756": "أقل من عام", - "-542986255": "لا شيء", - "-1337206552": "حسب فهمك، يتيح لك تداول CFD ما يلي:", - "-456863190": "ضع مركزًا على حركة سعر الأصل حيث تكون النتيجة عائدًا ثابتًا أو لا شيء على الإطلاق.", - "-1314683258": "قم باستثمار طويل الأجل لتحقيق ربح مضمون.", - "-1546090184": "كيف تؤثر الرافعة المالية على تداول CFD؟", - "-1636427115": "تساعد الرافعة المالية على تخفيف المخاطر.", - "-800221491": "الرافعة المالية تضمن الأرباح.", - "-811839563": "تتيح لك الرافعة المالية فتح صفقات كبيرة مقابل جزء بسيط من قيمة التداول، مما قد يؤدي إلى زيادة الربح أو الخسارة.", - "-1185193552": "أغلق تداولك تلقائيًا عندما تكون الخسارة مساوية أو أكثر من مبلغ محدد، طالما أن هناك سيولة كافية في السوق.", - "-1046354": "أغلق تداولك تلقائيًا عندما يكون الربح مساويًا أو أكثر من مبلغ محدد، طالما أن هناك سيولة كافية في السوق.", - "-1842858448": "حقق ربحًا مضمونًا من تجارتك.", - "-860053164": "عند تداول المضاعفات.", - "-1250327770": "عند شراء أسهم شركة.", - "-1222388581": "كل ما سبق.", "-477761028": "بطاقة هوية الناخب", "-1466346630": "CPF", - "-1030759620": "مسؤولون حكوميون", + "-739367071": "موظف", + "-626752657": "0-1 سنة", + "-532014689": "من سنة إلى سنتين", + "-1001024004": "أكثر من 3 سنوات", + "-790513277": "6-10 معاملات في الأشهر الـ 12 الماضية", + "-580085300": "11-39 معاملة في الأشهر الـ 12 الماضية", "-612752984": "هذه هي الحدود الافتراضية التي نطبقها على حساباتك.", "-1598263601": "لمعرفة المزيد حول حدود التداول وكيفية تطبيقها، يرجى الانتقال إلى <0>مركز المساعدة.", "-1411635770": "تعرف على المزيد حول حدود الحساب", @@ -2326,10 +2285,7 @@ "-1500958859": "تحقق", "-1502578110": "تم مصادقة حسابك بالكامل وتم رفع حدود السحب الخاصة بك.", "-1662154767": "فاتورة مرافق حديثة (مثل الكهرباء أو الماء أو الغاز أو الهاتف الأرضي أو الإنترنت) أو كشف حساب مصرفي أو خطاب صادر عن جهة حكومية باسمك وهذا العنوان.", - "-190838815": "نحن بحاجة إلى هذا للتحقق. إذا كانت المعلومات التي تقدمها مزيفة أو غير دقيقة، فلن تتمكن من الإيداع والسحب.", - "-223216785": "السطر الثاني من العنوان*", "-594456225": "السطر الثاني من العنوان", - "-1940457555": "الرمز البريدي*", "-1964954030": "الرمز البريدي", "-516397235": "كن حذرًا مع من تشارك هذا الرمز المميز. يمكن لأي شخص لديه هذا الرمز تنفيذ الإجراءات التالية نيابة عن حسابك", "-989216986": "إضافة حسابات", @@ -2371,8 +2327,6 @@ "-1100235269": "صناعة التوظيف", "-684388823": "القيمة الصافية المقدرة", "-509054266": "حجم المبيعات السنوي المتوقع", - "-601903492": "تجربة تداول الفوركس", - "-1012699451": "تجربة تداول CFD", "-1588485629": "مثال", "-1117345066": "اختر نوع المستند", "-651192353": "العينة:", @@ -2393,18 +2347,21 @@ "-1944264183": "لمتابعة التداول، يجب عليك أيضًا تقديم إثبات الهوية.", "-1088324715": "سنراجع مستنداتك ونخطرك بحالتها في غضون 1-3 أيام عمل.", "-329713179": "حسنا", - "-1176889260": "يرجى تحديد نوع المستند.", - "-1926456107": "انتهت صلاحية المعرف الذي أرسلته.", - "-555047589": "يبدو أن وثيقة الهوية الخاصة بك قد انتهت صلاحيتها. يرجى المحاولة مرة أخرى باستخدام مستند صالح.", - "-841187054": "حاول مرة أخرى", + "-895884696": "The <0>name and <0>date of birth on your identity document don't match your profile.", + "-1792723131": "To avoid delays, enter your <0>date of birth exactly as it appears on your {{document_name}}.", + "-886317740": "The <0>date of birth on your identity document doesn't match your profile.", + "-1813671961": "Your identity verification failed because:", "-2097808873": "لم نتمكن من التحقق من هويتك بالتفاصيل التي قدمتها. ", - "-228284848": "لم نتمكن من التحقق من هويتك بالتفاصيل التي قدمتها.", + "-1652371224": "Your profile is updated", + "-504784172": "Your document has been submitted", "-1391934478": "تم التحقق من هويتك. ستحتاج أيضًا إلى تقديم إثبات لعنوانك.", "-118547687": "تم اجتياز التحقق من الهوية", "-200989771": "انتقل إلى التفاصيل الشخصية", "-1358357943": "يرجى التحقق من الرمز البريدي وتحديثه قبل تقديم إثبات الهوية.", "-1401994581": "تفاصيلك الشخصية مفقودة", "-2004327866": "يرجى تحديد بلد صالح لإصدار المستند.", + "-1627868670": "Your identity document has expired.", + "-1606307809": "We were unable to verify the identity document with the details provided.", "-1664159494": "البلد", "-749870311": "يرجى الاتصال بنا عبر <0>الدردشة الحية.", "-1084991359": "إثبات التحقق من الهوية غير مطلوب", @@ -2464,21 +2421,54 @@ "-142444667": "يرجى النقر على الرابط الموجود في البريد الإلكتروني لتغيير كلمة مرور Deriv MT5 الخاصة بك.", "-742748008": "تحقق من بريدك الإلكتروني وانقر فوق الارتباط الموجود في البريد الإلكتروني للمتابعة.", "-84068414": "لم تحصل بعد على البريد الإلكتروني؟ يرجى الاتصال بنا عبر <0>الدردشة الحية.", + "-975118358": "سيتم فتح حسابك بـ {{legal_entity_name}}، وتنظمه هيئة الخدمات المالية المالطية (MFSA)، وسيخضع لقوانين مالطا.", + "-2073934245": "خدمات التداول المالي المقدمة على هذا الموقع مناسبة فقط للعملاء الذين يقبلون إمكانية خسارة جميع الأموال التي يستثمرونها والذين يفهمون ولديهم خبرة في المخاطر التي ينطوي عليها شراء العقود المالية. تنطوي المعاملات في العقود المالية على درجة عالية من المخاطر. إذا انتهت صلاحية العقود التي اشتريتها باعتبارها عديمة القيمة، فسوف تفقد كل استثماراتك، بما في ذلك علاوة العقد.", + "-1125193491": "إضافة حساب", + "-2068229627": "أنا لست PEP، ولم أكن PEP في الأشهر الـ 12 الماضية.", + "-186841084": "تغيير البريد الإلكتروني لتسجيل الدخول", + "-907403572": "لتغيير عنوان بريدك الإلكتروني، ستحتاج أولاً إلى إلغاء ربط عنوان بريدك الإلكتروني بحساب {{identifier_title}} الخاص بك.", + "-1850792730": "إلغاء الارتباط من {{identifier_title}}", "-428335668": "ستحتاج إلى تعيين كلمة مرور لإكمال العملية.", + "-1232613003": "<0>فشلت عملية التحقق. <1>لماذا؟", + "-2029508615": "<0>تحتاج إلى التحقق. <1>تحقق الآن", "-818898181": "لا يتطابق الاسم في المستند مع ملف تعريف Deriv الخاص بك.", "-310316375": "لا يتطابق العنوان في المستند مع العنوان الذي أدخلته أعلاه.", "-485368404": "وثيقة صدرت منذ أكثر من 6 أشهر.", "-367016488": "مستند غير واضح. يجب أن تكون جميع المعلومات واضحة ومرئية.", "-1957076143": "مستند تم اقتصاصه. يجب أن تكون جميع المعلومات واضحة ومرئية.", + "-1576856758": "An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.", + "-231863107": "لا", + "-870902742": "ما مقدار المعرفة والخبرة التي لديك فيما يتعلق بالتداول عبر الإنترنت؟", + "-1929477717": "لديّ درجة أكاديمية وشهادة مهنية و/أو خبرة عمل تتعلق بالخدمات المالية.", + "-1540148863": "لقد حضرت الندوات والتدريب و/أو ورش العمل المتعلقة بالتداول.", + "-922751756": "أقل من عام", + "-542986255": "لا شيء", + "-1337206552": "حسب فهمك، يتيح لك تداول CFD ما يلي:", + "-456863190": "ضع مركزًا على حركة سعر الأصل حيث تكون النتيجة عائدًا ثابتًا أو لا شيء على الإطلاق.", + "-1314683258": "قم باستثمار طويل الأجل لتحقيق ربح مضمون.", + "-1546090184": "كيف تؤثر الرافعة المالية على تداول CFD؟", + "-1636427115": "تساعد الرافعة المالية على تخفيف المخاطر.", + "-800221491": "الرافعة المالية تضمن الأرباح.", + "-811839563": "تتيح لك الرافعة المالية فتح صفقات كبيرة مقابل جزء بسيط من قيمة التداول، مما قد يؤدي إلى زيادة الربح أو الخسارة.", + "-1185193552": "أغلق تداولك تلقائيًا عندما تكون الخسارة مساوية أو أكثر من مبلغ محدد، طالما أن هناك سيولة كافية في السوق.", + "-1046354": "أغلق تداولك تلقائيًا عندما يكون الربح مساويًا أو أكثر من مبلغ محدد، طالما أن هناك سيولة كافية في السوق.", + "-1842858448": "حقق ربحًا مضمونًا من تجارتك.", + "-860053164": "عند تداول المضاعفات.", + "-1250327770": "عند شراء أسهم شركة.", + "-1222388581": "كل ما سبق.", "-1515286538": "يرجى إدخال رقم المستند الخاص بك. ", "-1694758788": "أدخل رقم المستند", "-1458676679": "يجب إدخال 2-50 حرفًا.", + "-1176889260": "يرجى تحديد نوع المستند.", + "-1265050949": "identity document", "-2139303636": "ربما تكون قد اتبعت رابطًا معطلاً، أو انتقلت الصفحة إلى عنوان جديد.", "-1448368765": "رمز الخطأ: لم يتم العثور على صفحة {{error_code}}", "-254792921": "يمكنك فقط إجراء الودائع في الوقت الحالي. لتمكين عمليات السحب، يرجى إكمال التقييم المالي الخاص بك.", "-1437017790": "معلومات مالية", "-70342544": "نحن ملزمون قانونًا بطلب معلوماتك المالية.", "-39038029": "تجربة التداول", + "-601903492": "تجربة تداول الفوركس", + "-1012699451": "تجربة تداول CFD", "-1894668798": "تجربة أدوات التداول الأخرى", "-1026468600": "تردد أدوات التداول الأخرى", "-1743024217": "حدد اللغة", @@ -2489,6 +2479,11 @@ "-536187647": "تأكيد إلغاء الوصول؟", "-1357606534": "الإذن", "-570222048": "إلغاء الوصول", + "-80717068": "التطبيقات التي ربطتها <0>بكلمة مرور Deriv الخاصة بك:", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "استخدم كلمة <0>مرور Deriv لتسجيل الدخول إلى {{brand_website_name}} و {{platform_name_trader}}.", + "-623760979": "استخدم <0>كلمة مرور Deriv لتسجيل الدخول إلى {{brand_website_name}}, {{platform_name_trader}} و. {{platform_name_go}}", + "-459147994": "استخدم <0>كلمة مرور Deriv لتسجيل الدخول إلى {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}} {{platform_name_smarttrader}}, {{platform_name_dbot}} و. {{platform_name_ctrader}}", "-1526404112": "فاتورة المرافق: فاتورة الكهرباء أو الماء أو الغاز أو الهاتف الأرضي.", "-537552700": "اتفاقية تأجير المنزل: اتفاقية سارية وحالية.", "-890084320": "الحفظ والإرسال", @@ -2859,6 +2854,30 @@ "-1016171176": "الأصول", "-621128676": "أنواع التجارة", "-447853970": "عتبة الخسارة", + "-155173714": "دعونا نبني روبوتًا!", + "-1919212468": "3. يمكنك أيضًا البحث عن الكتل التي تريدها باستخدام شريط البحث الموجود أعلى الفئات.", + "-1520558271": "لمزيد من المعلومات، راجع منشور المدونة هذا حول أساسيات بناء روبوت تداول.", + "-980360663": "3. اختر الكتلة التي تريدها واسحبها إلى مساحة العمل.", + "-1493168314": "ماهي الاستراتيجية السريعة؟", + "-1680391945": "استخدام استراتيجية سريعة", + "-1177914473": "كيف يمكنني حفظ استراتيجيتي؟", + "-271986909": "في Bot Builder، اضغط على Save على شريط الأدوات في الأعلى لتنزيل برنامج الروبوت الخاص بك. قم بتسمية البوت الخاص بك، واختر تنزيل البوت الخاص بك على جهازك أو Google Drive. سيتم تنزيل البوت الخاص بك كملف XML.", + "-1149045595": "1. بعد الضغط على استيراد ، حدد محلي وانقر فوق متابعة.", + "-288041546": "2. حدد ملف XML الخاص بك واضغط على افتح.", + "-2127548288": "3. سيتم تحميل الروبوت الخاص بك وفقًا لذلك.", + "-1311297611": "1. بعد الضغط على استيراد، حدد Google Drive وانقر فوق استمر.", + "-1549564044": "كيف يمكنني إعادة تعيين مساحة العمل؟", + "-1127331928": "في Bot Builder، اضغط على Reset على شريط الأدوات في الأعلى. سيؤدي ذلك إلى مسح مساحة العمل. يرجى ملاحظة أنه سيتم فقدان أي تغييرات غير محفوظة.", + "-1720444288": "كيف أتحكم في خسائري باستخدام Deriv Bot؟", + "-1142295124": "هناك عدة طرق للتحكم في خسائرك باستخدام Deriv Bot. فيما يلي مثال بسيط لكيفية تنفيذ التحكم في الخسارة في استراتيجيتك:", + "-986689483": "1. قم بإنشاء المتغيرات التالية:", + "-269910127": "3. قم بتحديث الربح/الخسارة الحالية مع الربح من العقد الأخير. في حالة فقدان العقد الأخير، ستكون قيمة الربح/الخسارة الحالية سلبية.", + "-1565344891": "هل يمكنني تشغيل Deriv Bot على علامات تبويب متعددة في متصفح الويب الخاص بي؟", + "-90192474": "نعم، يمكنك ذلك. ومع ذلك، هناك حدود لحسابك، مثل الحد الأقصى لعدد المراكز المفتوحة والحد الأقصى للدفعات الإجمالية على المراكز المفتوحة. لذلك، ضع هذه الحدود في الاعتبار عند فتح صفقات متعددة. يمكنك العثور على مزيد من المعلومات حول هذه الحدود في إعدادات > حدود الحساب.", + "-213872712": "لا، نحن لا نقدم العملات المشفرة على Deriv Bot.", + "-2147346223": "في أي البلدان يتوفر Deriv Bot؟", + "-352345777": "ما هي الاستراتيجيات الأكثر شيوعًا للتداول الآلي؟", + "-552392096": "ثلاثة من الاستراتيجيات الأكثر استخدامًا في التداول الآلي هي Martingale و D'Alembert و Oscar's Grind - يمكنك العثور عليها جميعًا جاهزة وتنتظرك في Deriv Bot.", "-507620484": "لم يتم حفظها", "-764102808": "جوجل درايف", "-555886064": "فاز", @@ -2937,30 +2956,6 @@ "-1823621139": "إستراتيجية سريعة", "-1778025545": "لقد نجحت في استيراد روبوت.", "-1519425996": "لم يتم العثور على نتائج \"{{ faq_search_value }}»", - "-155173714": "دعونا نبني روبوتًا!", - "-1919212468": "3. يمكنك أيضًا البحث عن الكتل التي تريدها باستخدام شريط البحث الموجود أعلى الفئات.", - "-1520558271": "لمزيد من المعلومات، راجع منشور المدونة هذا حول أساسيات بناء روبوت تداول.", - "-980360663": "3. اختر الكتلة التي تريدها واسحبها إلى مساحة العمل.", - "-1493168314": "ماهي الاستراتيجية السريعة؟", - "-1680391945": "استخدام استراتيجية سريعة", - "-1177914473": "كيف يمكنني حفظ استراتيجيتي؟", - "-271986909": "في Bot Builder، اضغط على Save على شريط الأدوات في الأعلى لتنزيل برنامج الروبوت الخاص بك. قم بتسمية البوت الخاص بك، واختر تنزيل البوت الخاص بك على جهازك أو Google Drive. سيتم تنزيل البوت الخاص بك كملف XML.", - "-1149045595": "1. بعد الضغط على استيراد ، حدد محلي وانقر فوق متابعة.", - "-288041546": "2. حدد ملف XML الخاص بك واضغط على افتح.", - "-2127548288": "3. سيتم تحميل الروبوت الخاص بك وفقًا لذلك.", - "-1311297611": "1. بعد الضغط على استيراد، حدد Google Drive وانقر فوق استمر.", - "-1549564044": "كيف يمكنني إعادة تعيين مساحة العمل؟", - "-1127331928": "في Bot Builder، اضغط على Reset على شريط الأدوات في الأعلى. سيؤدي ذلك إلى مسح مساحة العمل. يرجى ملاحظة أنه سيتم فقدان أي تغييرات غير محفوظة.", - "-1720444288": "كيف أتحكم في خسائري باستخدام Deriv Bot؟", - "-1142295124": "هناك عدة طرق للتحكم في خسائرك باستخدام Deriv Bot. فيما يلي مثال بسيط لكيفية تنفيذ التحكم في الخسارة في استراتيجيتك:", - "-986689483": "1. قم بإنشاء المتغيرات التالية:", - "-269910127": "3. قم بتحديث الربح/الخسارة الحالية مع الربح من العقد الأخير. في حالة فقدان العقد الأخير، ستكون قيمة الربح/الخسارة الحالية سلبية.", - "-1565344891": "هل يمكنني تشغيل Deriv Bot على علامات تبويب متعددة في متصفح الويب الخاص بي؟", - "-90192474": "نعم، يمكنك ذلك. ومع ذلك، هناك حدود لحسابك، مثل الحد الأقصى لعدد المراكز المفتوحة والحد الأقصى للدفعات الإجمالية على المراكز المفتوحة. لذلك، ضع هذه الحدود في الاعتبار عند فتح صفقات متعددة. يمكنك العثور على مزيد من المعلومات حول هذه الحدود في إعدادات > حدود الحساب.", - "-213872712": "لا، نحن لا نقدم العملات المشفرة على Deriv Bot.", - "-2147346223": "في أي البلدان يتوفر Deriv Bot؟", - "-352345777": "ما هي الاستراتيجيات الأكثر شيوعًا للتداول الآلي؟", - "-552392096": "ثلاثة من الاستراتيجيات الأكثر استخدامًا في التداول الآلي هي Martingale و D'Alembert و Oscar's Grind - يمكنك العثور عليها جميعًا جاهزة وتنتظرك في Deriv Bot.", "-418247251": "قم بتنزيل دفتر يومياتك.", "-2123571162": "تنزيل", "-870004399": "<0>تم شراؤها: {{longcode}} (المعرف: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "شاشة كاملة", "-1823504435": "عرض الإشعارات", "-1954045170": "لم يتم تخصيص عملة", - "-583559763": "قائمة طعام", "-1591792668": "حدود الحساب", "-34495732": "معلومات تنظيمية", "-1496158755": "انتقل إلى Deriv.com", @@ -3259,6 +3253,7 @@ "-818926350": "تقبل اللجنة المالية الطعون لمدة 45 يومًا بعد تاريخ الحادث وفقط بعد أن يحاول المتداول حل المشكلة مع الشركة مباشرة.", "-1825471709": "تجربة تداول جديدة بالكامل على منصة قوية وسهلة الاستخدام.", "-981017278": "التداول الآلي في متناول يدك. لا حاجة للترميز.", + "-583559763": "قائمة طعام", "-778309978": "انتهت صلاحية الرابط الذي نقرت عليه. تأكد من النقر فوق الارتباط الموجود في أحدث بريد إلكتروني في صندوق الوارد الخاص بك. بدلاً من ذلك، أدخل بريدك الإلكتروني أدناه وانقر فوق <0>إعادة إرسال البريد الإلكتروني للحصول على رابط جديد.", "-336222114": "اتبع هذه الخطوات البسيطة لإصلاحها:", "-1064116456": "ابحث عن الوسيط <0>Deriv Holdings (غيرنسي) المحدودة وحدده.", @@ -3415,22 +3410,6 @@ "-1282933308": "ملاحظة {{barrier}}", "-968190634": "يساوي {{barrier}}", "-1747377543": "أقل من {{barrier}}", - "-256210543": "التداول غير متاح في الوقت الحالي.", - "-1150099396": "نحن نعمل على توفير هذا لك قريبًا. إذا كان لديك حساب آخر، فانتقل إلى هذا الحساب لمتابعة التداول. يمكنك إضافة مشتق MT5 فاينانشال.", - "-28115241": "{{platform_name_trader}} غير متاح لهذا الحساب", - "-453920758": "انتقل إلى لوحة معلومات {{platform_name_mt5}}", - "-402175529": "التاريخ", - "-902712434": "إلغاء الصفقة", - "-988484646": "إلغاء الصفقة (تم تنفيذه)", - "-444882676": "إلغاء الصفقة (نشط)", - "-13423018": "معرف المرجع", - "-2035315547": "حاجز منخفض", - "-1551639437": "لا يوجد تاريخ", - "-1214703885": "لا يزال يتعين عليك تحديث أمر جني الأرباح أو إيقاف الخسارة", - "-504849554": "سيتم إعادة فتحه في", - "-59803288": "في هذه الأثناء، جرب المؤشرات الاصطناعية الخاصة بنا. إنها تحاكي تقلبات السوق الحقيقية وهي مفتوحة على مدار الساعة طوال أيام الأسبوع.", - "-1278109940": "شاهد الأسواق المفتوحة", - "-694105443": "هذا السوق مغلق", "-1043795232": "المناصب الأخيرة", "-1511825574": "الربح/الخسارة:", "-726626679": "الربح/الخسارة المحتملة:", @@ -3455,21 +3434,15 @@ "-1435392215": "حول إلغاء الصفقة", "-2017825013": "حصلت عليه", "-1192773792": "لا تظهر هذا مرة أخرى", + "-902712434": "إلغاء الصفقة", "-1280319153": "قم بإلغاء تداولك في أي وقت ضمن إطار زمني محدد. يتم تشغيله تلقائيًا إذا وصلت تجارتك إلى مستوى الإيقاف ضمن الإطار الزمني المختار.", "-471757681": "إدارة المخاطر", "-843831637": "إيقاف الخسارة", "-771725194": "إلغاء الصفقة", "-338707425": "الحد الأدنى للمدة هو يوم واحد", "-1003473648": "المدة: {{duration}} يوم", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "العائد عند انتهاء الصلاحية يساوي العائد لكل نقطة مضروبًا بالفرق بين السعر النهائي وسعر التنفيذ.", "-1527492178": "تم تأمين عملية الشراء", "-725375562": "يمكنك قفل/إلغاء قفل زر الشراء من قائمة الإعدادات", - "-774638412": "يجب أن تكون الحصة بين {{min_stake}} {{currency}} و {{max_stake}} {{currency}}", - "-1358367903": "حصة", - "-434270664": "السعر الحالي", - "-1956787775": "سعر الحاجز:", - "-1513281069": "الحاجز 2", "-390994177": "يجب أن تكون بين {{min}} و {{max}}", "-1804019534": "انتهاء الصلاحية: {{date}}", "-2055106024": "التبديل بين إعدادات المدة المتقدمة والبسيطة", @@ -3484,6 +3457,7 @@ "-1763848396": "ضع", "-194424366": "فوق", "-857660728": "أسعار الإضراب", + "-1358367903": "حصة", "-1386326276": "الحاجز هو حقل مطلوب.", "-1418742026": "يجب أن يكون الحاجز الأعلى أعلى من الحاجز السفلي.", "-92007689": "يجب أن يكون الحاجز السفلي أقل من الحاجز الأعلى.", @@ -3491,6 +3465,21 @@ "-1975910372": "يجب أن تكون الدقيقة بين 0 و59.", "-866277689": "لا يمكن أن يكون وقت انتهاء الصلاحية في الماضي.", "-1455298001": "الآن", + "-256210543": "التداول غير متاح في الوقت الحالي.", + "-1150099396": "نحن نعمل على توفير هذا لك قريبًا. إذا كان لديك حساب آخر، فانتقل إلى هذا الحساب لمتابعة التداول. يمكنك إضافة مشتق MT5 فاينانشال.", + "-28115241": "{{platform_name_trader}} غير متاح لهذا الحساب", + "-453920758": "انتقل إلى لوحة معلومات {{platform_name_mt5}}", + "-402175529": "التاريخ", + "-988484646": "إلغاء الصفقة (تم تنفيذه)", + "-444882676": "إلغاء الصفقة (نشط)", + "-13423018": "معرف المرجع", + "-2035315547": "حاجز منخفض", + "-1551639437": "لا يوجد تاريخ", + "-1214703885": "لا يزال يتعين عليك تحديث أمر جني الأرباح أو إيقاف الخسارة", + "-504849554": "سيتم إعادة فتحه في", + "-59803288": "في هذه الأثناء، جرب المؤشرات الاصطناعية الخاصة بنا. إنها تحاكي تقلبات السوق الحقيقية وهي مفتوحة على مدار الساعة طوال أيام الأسبوع.", + "-1278109940": "شاهد الأسواق المفتوحة", + "-694105443": "هذا السوق مغلق", "-439389714": "نحن نعمل على ذلك", "-770929448": "انتقل إلى {{platform_name_smarttrader}}", "-347156282": "إرسال إثبات", @@ -3537,6 +3526,8 @@ "-454245976": "إذا كنت تعتقد أن سعر السوق سينخفض باستمرار لفترة محددة، فاختر <0>البيع. ستحصل على عائد في وقت انتهاء الصلاحية إذا لم يلمس سعر السوق الحاجز أو يتجاوزه. ستنمو عائداتك بشكل متناسب مع المسافة بين سعر السوق والحاجز إذا لم يتم اختراق الحاجز. سوف تبدأ في تحقيق ربح عندما يكون العائد أعلى من حصتك. إذا تجاوز سعر السوق الحاجز في أي وقت، فلن يكون هناك عائد.", "-351875097": "عدد القراد", "-729830082": "عرض أقل", + "-1669741470": "العائد عند انتهاء الصلاحية يساوي العائد لكل نقطة مضروبًا بالفرق بين السعر النهائي وسعر التنفيذ.", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "جديد!", "-993480898": "مراكم", "-45873457": "جديد", @@ -3557,6 +3548,10 @@ "-690963898": "سيتم إغلاق عقدك تلقائيًا عندما يصل العائد إلى هذا المبلغ.", "-511541916": "سيتم إغلاق عقدك تلقائيًا عند الوصول إلى هذا العدد من العلامات.", "-438655760": "<0>ملاحظة: يمكنك إغلاق تداولك في أي وقت. كن على دراية بمخاطر الانزلاق.", + "-774638412": "يجب أن تكون الحصة بين {{min_stake}} {{currency}} و {{max_stake}} {{currency}}", + "-434270664": "السعر الحالي", + "-1956787775": "سعر الحاجز:", + "-1513281069": "الحاجز 2", "-1683683754": "طويل", "-1046859144": "<0>{{title}} ستحصل على عائد إذا بقي سعر السوق {{price_position}} ولم يلمس الحاجز أو يتجاوزه. وإلا، سيكون العائد الخاص بك صفرًا.", "-1815023694": "فوق الحاجز", diff --git a/packages/translations/src/translations/bn.json b/packages/translations/src/translations/bn.json index 39eed6f6501c..1c8fe7d77f42 100644 --- a/packages/translations/src/translations/bn.json +++ b/packages/translations/src/translations/bn.json @@ -24,7 +24,6 @@ "27731356": "আপনার অ্যাকাউন্ট সাময়িকভাবে নিষ্ক্রিয় করা আছে। পুনরায় আমানত এবং উত্তোলন সক্রিয় করতে অনুগ্রহ করে <0>লাইভ চ্যাটের মাধ্যমে আমাদের সাথে যোগাযোগ করুন।", "27830635": "ডেরিভ (ভি) লিমিটেড", "28581045": "একটি রিয়েল MT5 অ্যাকাউন্ট যোগ করুন", - "30801950": "আপনার অ্যাকাউন্ট {{legal_entity_name}}দিয়ে খোলা হবে, মাল্টা গেমিং কর্তৃপক্ষ দ্বারা নিয়ন্ত্রিত, এবং মাল্টা আইন সাপেক্ষে হবে।", "33433576": "আপনার তহবিল উত্তোলনের জন্য একটি ই-ওয়ালেট ব্যবহার করুন।", "35089987": "আপনার ড্রাইভিং লাইসেন্সের সামনে এবং পিছনে আপলোড করুন।", "41737927": "আপনাকে ধন্যবাদ", @@ -251,7 +250,6 @@ "284772879": "কন্ট্রাক্ট", "284809500": "আর্থিক ডেমো", "287934290": "আপনি কি নিশ্চিতরূপে এই লেনদেন বাতিল করতে চান?", - "289898640": "ব্যবহারের শর্তাবলী", "291744889": "<0>1। ট্রেড প্যারামিটার: <0>", "291817757": "আমাদের Deriv সম্প্রদায় যান এবং API গুলি, API টোকেন, Deriv API গুলি ব্যবহার করার উপায় এবং আরও অনেক কিছু সম্পর্কে শিখুন।", "292491635": "আপনি যদি “স্টপ লস” নির্বাচন করেন এবং আপনার ক্ষতি সীমাবদ্ধ করার জন্য একটি পরিমাণ নির্দিষ্ট করেন, আপনার ক্ষতি এই পরিমাণের চেয়ে বেশি বা সমান হলে আপনার অবস্থান স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে। ক্লোজিং এ মার্কেট প্রাইসের উপর নির্ভর করে আপনার ক্ষতি আপনার প্রবেশ করা পরিমাণের চেয়েও বেশি হতে পারে।", @@ -372,6 +370,7 @@ "427134581": "অন্য ফাইল টাইপ ব্যবহার করার চেষ্টা করুন।", "427617266": "বিটকয়েন", "428709688": "প্রতিটি প্রতিবেদনের মধ্যে আপনার পছন্দের সময় ব্যবধান:", + "429970999": "To avoid delays, enter your <0>name exactly as it appears on your {{document_name}}.", "431267979": "এখানে যেতে Deriv বট ব্যবহার কিভাবে একটি দ্রুত গাইড।", "432273174": "1:100", "432508385": "টেক লাভ: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7। আরম্ভে একবার চালান", "520136698": "বুম ৫০০ ইনডেক্স", "521872670": "পদ", - "522283618": "ডিজিটাল অপশন ট্রেডিং অভিজ্ঞতা", "522703281": "দ্বারা বিভাজ্য", "523123321": "- একটি প্রদত্ত নম্বরের ক্ষমতায় 10", "524459540": "কিভাবে ভেরিয়েবল তৈরি করবো?", @@ -562,7 +560,6 @@ "642546661": "আপনার কম্পিউটার থেকে লাইসেন্স ফেরত আপলোড করুন", "642995056": "ই-মেইল", "644150241": "আপনি শেষ আপনার পরিসংখ্যান সাফ করার পরে আপনি কতগুলি চুক্তি জিতেছেন।", - "645016681": "অন্যান্য আর্থিক ইন্সট্রুমেন্টে ট্রেডিং ফ্রিকোয়েন্সি", "645902266": "ইউরো/এনজেডিডি", "647039329": "ঠিকানার প্রমাণ প্রয়োজন", "647745382": "ইনপুট তালিকা {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "আগের টিকটিতে স্পট প্রাইস।", "812775047": "বাধা নীচে", "814827314": "চার্টের স্টপ-আউট লেভেল আপনার সম্ভাব্য ক্ষতি আপনার সম্পূর্ণ অংশীদারির সমান মূল্যের মূল্য নির্দেশ করে। যখন মার্কেট প্রাইস এই স্তরে পৌঁছাবে, আপনার পজিশন স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে। এটি নিশ্চিত করে যে আপনার ক্ষতি চুক্তি ক্রয়ের জন্য প্রদত্ত পরিমাণ অতিক্রম করে না।", + "814936420": "{{ banner_message }}", "815925952": "এই ব্লকটি বাধ্যতামূলক। এই ব্লকের শুধুমাত্র একটি কপি অনুমোদিত। যখন আপনি Deriv Bot খুলবেন তখন এটি ডিফল্টভাবে ক্যানভাসে যোগ করা হয়।", "816580787": "ফিরে স্বাগতম! আপনার বার্তা পুনরুদ্ধার করা হয়েছে।", "816738009": "<0/><1/>আপনি আপনার অমীমাংসিত বিরোধ <2>আর্থিক পরিষেবাগুলির জন্য অরবিটার অফিসে উত্থাপন করতে পারেন।", @@ -747,7 +745,6 @@ "836097457": "আমি ট্রেডিং আগ্রহী কিন্তু খুব সামান্য অভিজ্ঞতা আছে।", "837063385": "এই ঠিকানায় অন্যান্য মুদ্রা পাঠাবেন না।", "837066896": "আপনার নথিটি পর্যালোচনা করা হচ্ছে, দয়া করে 1-3 দিনের মধ্যে আবার চেক করুন।", - "839618971": "ঠিকানা", "839805709": "আপনাকে মসৃণভাবে যাচাই করতে, আমাদের আরও ভাল ফটো দরকার", "840672750": "যদি এটি কাজ না করে, তাহলে MT5 অ্যাপটি আনইনস্টল করুন এবং পুনরায় ইনস্টল করুন। তারপর পদক্ষেপ <0>2 এবং <0>3 পুনরায় করুন", "841434703": "স্ট্যাক নিষ্ক্রিয় করো", @@ -965,6 +962,7 @@ "1061308507": "ক্রয় {{ contract_type }}", "1062423382": "টিউটোরিয়াল ট্যাবে আপনার বট তৈরি করতে ভিডিও গাইড এবং প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী এক্সপ্লোর করুন।", "1062536855": "সমান", + "1062569830": "The <0>name on your identity document doesn't match your profile.", "1065275078": "cTrader এখন শুধুমাত্র ডেস্কটপে উপলব্ধ।", "1065353420": "110+", "1065498209": "পুনরাবৃত্তি (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3। আপনার ট্রেড প্যারামিটার সেট করুন এবং Run হিট করুন।", "1174748431": "পেমেন্ট চ্যানেল", "1175183064": "ভানুয়াতু", - "1176926166": "অন্যান্য আর্থিক ইন্সট্রুমেন্টে ট্রেড করার অভিজ্ঞতা", "1177396776": "আপনি যদি “এশিয়ান পতন” নির্বাচন করেন, তাহলে শেষ টিকটিকগুলির গড় থেকে কম হলে আপনি পেউটি জিতবেন।", "1177723589": "প্রদর্শন করার জন্য কোন লেনদেন নেই", "1178582280": "আপনি শেষ আপনার পরিসংখ্যান সাফ করার পরে আপনি হারিয়ে গেছে চুক্তি সংখ্যা।", @@ -1150,6 +1147,7 @@ "1255963623": "তারিখ/সময় {{ input_timestamp }} {{ dummy }}", "1258097139": "উন্নতির জন্য আমরা কি করতে পারি?", "1258198117": "ধনাত্মক", + "1259145708": "Let’s try again. Choose another document and enter the corresponding details.", "1259598687": "GBP/জাপানি ইয়েন", "1260259925": "ফোনটা সঠিক বিন্যাসে নেই।", "1263387702": "সমস্ত {{count}} অ্যাকাউন্ট প্রকারগুলি বাজার সম্পাদন ব্যবহার করে। এর অর্থ আপনি ব্রোকারের মূল্যের সাথে অগ্রিম সম্মত হন এবং ব্রোকারের মূল্যে অর্ডার দেবেন।.", @@ -1173,7 +1171,6 @@ "1289146554": "ব্রিটিশ ভার্জিন দ্বীপপুঞ্জ আর্থিক সেবা কমিশন", "1289646209": "মার্জিন কল", "1290525720": "উদাহরণ: ", - "1291887623": "ডিজিটাল অপশন ট্রেডিং ফ্রিকোয়েন্সি", "1291997417": "চুক্তির মেয়াদ শেষ হয়ে যাবে ঠিক 23:৫৯:৫৯ জিএমটি তে আপনার নির্বাচিত মেয়াদ শেষ হয়ে যাবে।", "1292188546": "Deriv MT5 বিনিয়োগকারী পাসওয়ার্ড রিসেট করুন", "1292891860": "টেলিগ্রাম অবহিত", @@ -1257,7 +1254,6 @@ "1367023655": "আপনার ক্ষতি আপনার পণ অতিক্রম না নিশ্চিত করার জন্য, আপনার ক্ষতি সমান যখন আপনার চুক্তি স্বয়ংক্রিয়ভাবে বন্ধ করা হবে<0/>।", "1367488817": "4। ট্রেডিং শর্তাবলী পুনরায় চালু করুন", "1367990698": "ভোলাটিলিটি 10 ইনডেক্স", - "1369709538": "আমাদের ব্যবহারের শর্তাবলী", "1370647009": "উচ্চতর দৈনিক সীমা উপভোগ করুন", "1371193412": "বাতিল", "1371555192": "আপনার পছন্দের পেমেন্ট এজেন্ট নির্বাচন করুন এবং আপনার উইথড্রয়াল অ্যামাউন্টটি লিখুন। যদি আপনার পেমেন্ট এজেন্ট তালিকাভুক্ত না হয়, তাহলে <0>তাদের অ্যাকাউন্ট নম্বর ব্যবহার করে তাদের সন্ধান করুন।", @@ -1297,6 +1293,7 @@ "1413047745": "একটি পরিবর্তনশীল একটি প্রদত্ত মান নির্ধারণ করে", "1413359359": "নতুন ট্রান্সফার করুন", "1414205271": "প্রধান", + "1414918420": "We'll review your proof of identity again and will give you an update as soon as possible.", "1415006332": "প্রথম থেকে সাব-লিস্ট পেতে", "1415513655": "Deriv cTrader অ্যাকাউন্টে ট্রেড করতে আপনার ফোনে cTrader ডাউনলোড করুন", "1415974522": "আপনি যদি “পৃথক” নির্বাচন করেন, তাহলে শেষ টিকের শেষ অঙ্কটি আপনার ভবিষ্যদ্বাণীর মতই না হলে আপনি অর্থ প্রদান জিতবেন।", @@ -1419,7 +1416,6 @@ "1542742708": "সিনথেটিক্স, ফরেক্স, স্টক, স্টক সূচক, কমোডিটি এবং ক্রিপ্টোকুয়ার্বিক্স", "1544642951": "আপনি যদি “শুধুমাত্র আপগুলি” নির্বাচন করেন, তাহলে এন্ট্রি স্পটের পরে ধারাবাহিকভাবে টিক বৃদ্ধি পেলে আপনি পেআউট জিতবেন। কোন টিক পড়ে গেলে বা পূর্ববর্তী টিকটিকগুলির সমান না হলে পরিশোধ করা হয় না।", "1547148381": "ফাইলটি খুব বড় (শুধুমাত্র 8 মেগাবাইট পর্যন্ত অনুমোদিত)। অনুগ্রহ করে অন্য ফাইল আপলোড করুন।", - "1548765374": "নথির নম্বর যাচাই করতে ব্যর্থ", "1549098835": "মোট প্রত্যাহার", "1551172020": "অস্ট্রেলিয়ান ডলার বাস্কেট", "1552162519": "অনবোর্ডিং দেখুন", @@ -1647,6 +1643,7 @@ "1790770969": "এফএক্স-মেজর (স্ট্যান্ডার্ড/মাইক্রো লট), এফএক্স-নাবালক, কমোডিটি, ক্রিপ্টোকুয়ার্বিক্স", "1791432284": "দেশের জন্য অনুসন্ধান করুন", "1791971912": "সাম্প্রতিক", + "1792037169": "To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your {{document_name}}.", "1793913365": "অর্থ জমা করতে, অনুগ্রহ করে আপনার {{currency_symbol}} অ্যাকাউন্টে যান।", "1794815502": "আপনার লেনদেনের ইতিহাস ডাউনলোড করুন।", "1796787905": "অনুগ্রহ করে নিম্নোক্ত নথিটি আপলোড করুন।", @@ -1792,7 +1789,6 @@ "1924765698": "জন্মের স্থান*", "1926987784": "- iOS: অ্যাকাউন্টে বাম দিকে সোয়াইপ করুন এবং <0>মুছুন আলতো চাপুন।", "1928930389": "জিপি/এনওকে", - "1929309951": "কর্মসংস্থানের অবস্থা", "1929694162": "অ্যাকাউন্ট তুলনা করুন", "1930899934": "শিকল", "1931659123": "প্রতিটি টিক উপর চালান", @@ -1966,12 +1962,12 @@ "2115223095": "ক্ষতি", "2117165122": "1। একটি টেলিগ্রাম বট তৈরি করুন এবং আপনার টেলিগ্রাম API টোকেন পান। আরও পড়ুন কিভাবে তৈরি করতে বট মধ্যে টেলিগ্রাম এখানে: https://core.telegram.org/bots#6-botfather", "2117489390": "{{ remaining }} সেকেন্ডে স্বয়ংক্রিয় আপডেট", - "2118315870": "তুমি কোথায় থাকো?", "2119449126": "নীচের উদাহরণের উদাহরণ আউটপুট হবে:", "2119710534": "প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী", "2121227568": "নিও-ইউএসডি", "2122152120": "অ্যাসেটস", "2127564856": "উত্তোলন লক করা আছে", + "2129807378": "Update profile", "2131963005": "অনুগ্রহ করে নিম্নলিখিত Deriv MT5 অ্যাকাউন্ট (গুলি) থেকে আপনার অর্থ উত্তোলন করুন:", "2133451414": "স্থিতিকাল", "2133470627": "এই ব্লক নির্বাচিত ট্রেড টাইপের জন্য সম্ভাব্য অর্থ প্রদান প্রদান করে। এই ব্লক শুধুমাত্র “ক্রয় শর্তাবলী” রুট ব্লক ব্যবহার করা যেতে পারে।", @@ -1992,8 +1988,6 @@ "2146698770": "প্রো টিপ: আপনি পছন্দসই ব্লকটি ক্লিক করে টেনে আনতে পারেন", "2146892766": "বাইনারি অপশন ট্রেডিং অভিজ্ঞতা", "2147244655": "আমি কিভাবে ডেরিভ বোটে আমার নিজস্ব ট্রেডিং বট আমদানি করব?", - "-1232613003": "<0>যাচাইকরণ ব্যর্থ হয়েছে, <1>কেন?", - "-2029508615": "<0>যাচাইকরণ প্রয়োজন। এখনই <1>যাচাই করুন", "-931052769": "যাচাইকরণ জমা দিন", "-1004605898": "টিপস", "-1938142055": "ডকুমেন্টস আপলোড করা হয়েছে", @@ -2141,18 +2135,9 @@ "-179726573": "আমরা আপনার মালিকানা প্রমাণ পেয়েছি।", "-813779897": "মালিকানা যাচাইয়ের প্রমাণ পাস", "-638756912": "আপনার ডেবিট/ক্রেডিট কার্ডের সামনে দেখানো কার্ডের নম্বরের 7 থেকে 12 নম্বর ব্ল্যাক আউট করুন।", - "-2073934245": "এই সাইটে প্রদত্ত আর্থিক ট্রেডিং পরিষেবাগুলি কেবলমাত্র গ্রাহকদের জন্য উপযুক্ত, যারা তাদের বিনিয়োগ করা সমস্ত অর্থ হারানোর সম্ভাবনা গ্রহণ করে এবং যারা আর্থিক চুক্তি ক্রয়ের সাথে জড়িত ঝুঁকির অভিজ্ঞতা অর্জন করে। আর্থিক চুক্তির লেনদেন উচ্চ মাত্রার ঝুঁকি বহন করে। যদি আপনি যে চুক্তিগুলি ক্রয় করেন সেগুলি মূল্যহীন হিসাবে মেয়াদ শেষ হয়ে যায়, তাহলে আপনি আপনার সমস্ত বিনিয়োগ হারাবেন, যার মধ্যে রয়েছে চুক্তি প্রিমিয়াম।", - "-1166068675": "আপনার অ্যাকাউন্ট {{legal_entity_name}}দিয়ে খোলা হবে, যা ইউকে গেমিং কমিশন (ইউকেজিসি) দ্বারা নিয়ন্ত্রিত হবে এবং আইল অফ ম্যানের আইন সাপেক্ষে থাকবে।", - "-975118358": "আপনার অ্যাকাউন্ট {{legal_entity_name}}দিয়ে খোলা হবে, মাল্টা ফাইন্যান্সিয়াল সার্ভিসেস অথরিটি (এমএফএসএ) দ্বারা নিয়ন্ত্রিত হবে এবং মাল্টা আইন সাপেক্ষে হবে।", - "-680528873": "আপনার অ্যাকাউন্ট {{legal_entity_name}} দিয়ে খোলা হবে এবং সামোয়ার আইন সাপেক্ষে হবে।", - "-1125193491": "অ্যাকাউন্ট যোগ করুন", - "-2068229627": "আমি একটি PEP নই, এবং আমি গত 12 মাসে একটি PEP হয়েছে না।", "-684271315": "ঠিক আছে", "-740157281": "ট্রেডিং অভিজ্ঞতার মূল্যায়ন", "-1720468017": "আপনাকে আমাদের পরিষেবা প্রদানের ক্ষেত্রে, প্রদত্ত পণ্য বা পরিষেবা আপনার জন্য উপযুক্ত কিনা তা মূল্যায়ন করার জন্য আমাদের আপনার কাছ থেকে তথ্য সংগ্রহ করতে হবে।", - "-186841084": "আপনার লগইন ইমেইল পরিবর্তন করুন", - "-907403572": "আপনার ইমেল ঠিকানা পরিবর্তন করতে, আপনাকে প্রথমে আপনার {{identifier_title}} অ্যাকাউন্ট থেকে আপনার ইমেল ঠিকানা আনলিঙ্ক করতে হবে।", - "-1850792730": "{{identifier_title}}থেকে আনলিংক করুন", "-307865807": "ঝুঁকি সহনশীলতা সতর্কবার্তা", "-690100729": "হ্যাঁ, আমি ঝুঁকি বুঝতে।", "-2010628430": "CFD এবং অন্যান্য আর্থিক ইন্সট্রুমেন্টগুলি লিভারেজের কারণে দ্রুত অর্থ হারানোর একটি উচ্চ ঝুঁকি নিয়ে আসে। সিএফডি এবং অন্যান্য আর্থিক ইন্সট্রুমেন্টগুলি কীভাবে কাজ করে তা আপনি বুঝতে পারেন কি না এবং আপনার অর্থ হারানোর উচ্চ ঝুঁকি নিতে পারেন কিনা তা বিবেচনা করা উচিত৷ চালিয়ে যেতে, আপনাকে অবশ্যই নিশ্চিত<0/><0/> করতে হবে যে আপনি বুঝতে পারেন যে আপনার মূলধন ঝুঁকিতে রয়েছে।", @@ -2206,11 +2191,6 @@ "-1725454783": "ব্যর্থ", "-506510414": "তারিখ এবং সময়", "-1708927037": "আইপি ঠিকানা", - "-619126443": "{{brand_website_name}} এবং {{platform_name_trader}} এ লগ ইন করতে <0>Deriv পাসওয়ার্ড ব্যবহার করুন", - "-623760979": "লগ ইন করতে <0>Deriv পাসওয়ার্ড ব্যবহার করুন {{brand_website_name}}, {{platform_name_trader}} এবং {{platform_name_go}}।", - "-459147994": "{{brand_website_name}},,, {{platform_name_go}}, {{platform_name_trader}} {{platform_name_dbot}} এবং {{platform_name_ctrader}}লগ ইন করতে <0>Deriv পাসওয়ার্ড ব্যবহার {{platform_name_smarttrader}}করুন।", - "-80717068": "আপনি আপনার <0>Deriv পাসওয়ার্ড লিঙ্ক করেছেন এমন অ্যাপ্লিকেশনগুলি:", - "-9570380": "ওয়েব এবং মোবাইল অ্যাপে আপনার {{platform_name_dxtrade}} টি অ্যাকাউন্টে লগ ইন করতে {{platform_name_dxtrade}} পাসওয়ার্ড ব্যবহার করুন।", "-2131200819": "নিষ্ক্রিয় করো", "-200487676": "সক্রিয় করো", "-1840392236": "এটা ঠিক কোড না। অনুগ্রহ করে আবার চেষ্টা করুন।", @@ -2240,44 +2220,37 @@ "-378415317": "রাষ্ট্রের প্রয়োজন", "-1497654315": "জার্সি পোস্টাল কোডের জন্য আমাদের অ্যাকাউন্ট এবং পরিষেবাগুলি অনুপলব্ধ।", "-755626951": "আপনার ঠিকানার বিস্তারিত বিবরণ পূরণ করুন", - "-584911871": "ওয়ালেট মুদ্রা নির্বাচন করুন", "-1461267236": "অনুগ্রহ করে আপনার মুদ্রা নির্বাচন করুন", - "-1352330125": "মুদ্রা", "-1027595143": "২৫,০০০ ডলারেরও কম", "-40491332": "$২৫,০০০ - ৫০,০০০ ডলার", "-1139806939": "৫০,০০১ - ১০০,০০০ ডলার", - "-626752657": "0-1 বছর", - "-532014689": "1-2 বছর", - "-1001024004": "3 বছর ধরে", - "-790513277": "গত 12 মাসে 6-10 লেনদেন", - "-580085300": "গত 12 মাসে 11-39 লেনদেন", - "-654781670": "প্রাথমিক", - "-1717373258": "মাধ্যমিক", "-996132458": "নির্মাণ", "-915003867": "স্বাস্থ্য", "-1430012453": "তথ্য ও যোগাযোগ প্রযুক্তি", "-987824916": "বিজ্ঞান ও প্রকৌশল", "-146630682": "সামাজিক ও সাংস্কৃতিক", "-761306973": "ম্যানুফ্যাকচারিং", - "-739367071": "নিযুক্ত", - "-1156937070": "$৫০০০১ - $১,০০,০০০", - "-315534569": "$১,০০,০০০ এরও বেশি", - "-2068544539": "বেতনভোগী কর্মচারী", - "-531314998": "বিনিয়োগ ও লভ্যাংশ", - "-1235114522": "পেনশন", - "-1298056749": "রাষ্ট্রীয় সুবিধাসমূহ", - "-449943381": "সঞ্চয় ও উত্তরাধিকার", "-1631552645": "প্রফেশনাল", "-474864470": "পার্সোনাল কেয়ার, সেলস অ্যান্ড সার্ভিস ওয়ার্কার্স", "-1129355784": "কৃষি, বনজ ও মৎস্য শ্রমিক", "-1242914994": "ক্র্যাফট, মেটাল, বৈদ্যুতিক ও ইলেকট্রনিক্স ওয়ার্কার্স", "-1317824715": "ক্লিনার এবং হেল্পার", "-1592729751": "খনি, নির্মাণ, উত্পাদন ও পরিবহন শ্রমিক", + "-1030759620": "সরকারি কর্মকর্তা", "-2137323480": "কোম্পানির মালিকানা", "-1590574533": "বিবাহবিচ্ছেদ নিষ্পত্তি", "-1667683002": "উত্তরাধিকার", "-1237843731": "বিনিয়োগের আয়", "-777506574": "সম্পত্তি বিক্রয়", + "-654781670": "প্রাথমিক", + "-1717373258": "মাধ্যমিক", + "-1156937070": "$৫০০০১ - $১,০০,০০০", + "-315534569": "$১,০০,০০০ এরও বেশি", + "-2068544539": "বেতনভোগী কর্মচারী", + "-531314998": "বিনিয়োগ ও লভ্যাংশ", + "-1235114522": "পেনশন", + "-1298056749": "রাষ্ট্রীয় সুবিধাসমূহ", + "-449943381": "সঞ্চয় ও উত্তরাধিকার", "-1161338910": "প্রথম নাম প্রয়োজন।", "-1161818065": "শেষ নাম 2 এবং 50 অক্ষরের মধ্যে হওয়া উচিত।", "-1281693513": "জন্ম তারিখ প্রয়োজন।", @@ -2287,28 +2260,14 @@ "-212167954": "কর সনাক্তকরণ নম্বর সঠিকভাবে ফরম্যাট করা হয় না।", "-621555159": "পরিচয় সংক্রান্ত তথ্য", "-204765990": "ব্যবহারের শর্তাবলী", - "-231863107": "না", - "-870902742": "অনলাইন ট্রেডিং সম্পর্কিত আপনার কত জ্ঞান এবং অভিজ্ঞতা আছে?", - "-1929477717": "আমি একটি একাডেমিক ডিগ্রী, পেশাদারী সার্টিফিকেশন, এবং/অথবা আর্থিক সেবা সম্পর্কিত কাজের অভিজ্ঞতা আছে।", - "-1540148863": "আমি ট্রেডিং সম্পর্কিত সেমিনার, প্রশিক্ষণ, এবং/অথবা কর্মশালায় অংশগ্রহণ করেছি।", - "-922751756": "এক বছরেরও কম", - "-542986255": "কোনোটিই না", - "-1337206552": "আপনার বোঝার ক্ষেত্রে, CFD ট্রেডিং আপনাকে", - "-456863190": "একটি অ্যাসেটের মূল্য চলাচলের উপর একটি পজিশন রাখুন যেখানে ফলাফলটি একটি নির্দিষ্ট রিটার্ন বা কিছুই না।", - "-1314683258": "একটি নিশ্চিত মুনাফা জন্য একটি দীর্ঘমেয়াদী বিনিয়োগ করুন।", - "-1546090184": "লিভারেজ CFD ট্রেডিং কিভাবে প্রভাবিত করে?", - "-1636427115": "লিভারেজ ঝুঁকি কমানোর জন্য সাহায্য করে।", - "-800221491": "লিভারেজ লাভের নিশ্চয়তা দেয়।", - "-811839563": "লিভারেজ আপনাকে ট্রেড মূল্যের একটি ভগ্নাংশের জন্য বড় পজিশন খুলতে দেয়, যার ফলে মুনাফা বা ক্ষতি বৃদ্ধি হতে পারে।", - "-1185193552": "আপনার ট্রেড স্বয়ংক্রিয়ভাবে বন্ধ করুন যখন ক্ষতির পরিমাণ নির্দিষ্ট পরিমাণের সমান বা তার বেশি হয়, যতক্ষণ মার্কেট পর্যাপ্ত লিকুইডিটি থাকে।", - "-1046354": "যখন মুনাফা নির্দিষ্ট পরিমাণের সমান বা তার বেশি হয়, ততক্ষণ পর্যন্ত পর্যাপ্ত মার্কেট লিকুইডিটি থাকে তখন স্বয়ংক্রিয়ভাবে আপনার ট্রেড বন্ধ করুন।", - "-1842858448": "আপনার ট্রেডের উপর নিশ্চিত মুনাফা করুন।", - "-860053164": "যখন মাল্টিপ্লেয়ার ট্রেডিং।", - "-1250327770": "একটি কোম্পানির শেয়ার ক্রয় করার সময়", - "-1222388581": "উপরের সবগুলো।", "-477761028": "ভোটার আইডি", "-1466346630": "সিপিএফ", - "-1030759620": "সরকারি কর্মকর্তা", + "-739367071": "নিযুক্ত", + "-626752657": "0-1 বছর", + "-532014689": "1-2 বছর", + "-1001024004": "3 বছর ধরে", + "-790513277": "গত 12 মাসে 6-10 লেনদেন", + "-580085300": "গত 12 মাসে 11-39 লেনদেন", "-612752984": "এগুলি ডিফল্ট সীমা যা আমরা আপনার অ্যাকাউন্টে প্রযোজ্য।", "-1598263601": "ট্রেডিং লিমিট এবং সেগুলো কিভাবে প্রয়োগ করে সে সম্পর্কে আরও জানতে অনুগ্রহ করে হেল্প <0>সেন্টারে যান।", "-1411635770": "অ্যাকাউন্ট সীমা সম্পর্কে আরও জানুন", @@ -2326,10 +2285,7 @@ "-1500958859": "যাচাই", "-1502578110": "আপনার অ্যাকাউন্ট পুরোপুরি প্রমাণীকৃত এবং আপনার উইথড্রয়াল লিমিট উঠিয়ে নেওয়া হয়েছে।", "-1662154767": "একটি সাম্প্রতিক ইউটিলিটি বিল (যেমন বিদ্যুৎ, পানি, গ্যাস, ল্যান্ডলাইন, বা ইন্টারনেট), ব্যাংক স্টেটমেন্ট, বা আপনার নাম এবং এই ঠিকানা সহ সরকার কর্তৃক প্রদত্ত চিঠি।", - "-190838815": "যাচাইয়ের জন্য আমাদের এই প্রয়োজন। আপনার প্রদত্ত তথ্য যদি নকল বা ভুল হয়, তাহলে আপনি জমা ও উত্তোলন করতে পারবেন না।", - "-223216785": "ঠিকানার দ্বিতীয় লাইন*", "-594456225": "ঠিকানার দ্বিতীয় লাইন", - "-1940457555": "ডাক/জিপ কোড*", "-1964954030": "ডাক/জিপ কোড", "-516397235": "আপনি এই টোকেন ভাগ যারা সতর্ক থাকুন। এই টোকেন সহ যে কেউ আপনার অ্যাকাউন্টের পক্ষ থেকে নিম্নলিখিত কর্ম সঞ্চালন করতে পারেন:", "-989216986": "অ্যাকাউন্ট যোগ করুন", @@ -2371,8 +2327,6 @@ "-1100235269": "কর্মসংস্থান শিল্প", "-684388823": "আনুমানিক নিট মূল্য", "-509054266": "প্রত্যাশিত বার্ষিক টার্নওভার", - "-601903492": "ফরেক্স ট্রেডিং অভিজ্ঞতা", - "-1012699451": "CFD ট্রেডিং অভিজ্ঞতা", "-1588485629": "উদাহরণ", "-1117345066": "নথির ধরন বেছে নিন", "-651192353": "নমুনা:", @@ -2393,18 +2347,21 @@ "-1944264183": "ট্রেডিং চালিয়ে যেতে, আপনাকে অবশ্যই পরিচয় প্রমাণও জমা দিতে হবে।", "-1088324715": "আমরা আপনার দস্তাবেজগুলি পর্যালোচনা করব এবং 1 - 3 কার্যদিবসের মধ্যে এটির স্থিতি সম্পর্কে আপনাকে অবহিত করব।", "-329713179": "আচ্ছা", - "-1176889260": "অনুগ্রহ করে একটি নথির ধরন নির্বাচন করুন।", - "-1926456107": "আপনার জমা দেওয়া আইডি মেয়াদ শেষ হয়ে গেছে।", - "-555047589": "মনে হচ্ছে আপনার পরিচয় দস্তাবেজের মেয়াদ শেষ হয়ে গেছে। অনুগ্রহ করে একটি বৈধ নথি ব্যবহার করে পুনরায় চেষ্টা করুন।", - "-841187054": "পুনরায় চেষ্টা করুন", + "-895884696": "The <0>name and <0>date of birth on your identity document don't match your profile.", + "-1792723131": "To avoid delays, enter your <0>date of birth exactly as it appears on your {{document_name}}.", + "-886317740": "The <0>date of birth on your identity document doesn't match your profile.", + "-1813671961": "Your identity verification failed because:", "-2097808873": "আপনার প্রদত্ত বিবরণ দিয়ে আমরা আপনার আইডি যাচাই করতে পারছি না। ", - "-228284848": "আপনার প্রদত্ত বিবরণ দিয়ে আমরা আপনার আইডি যাচাই করতে পারছি না।", + "-1652371224": "Your profile is updated", + "-504784172": "Your document has been submitted", "-1391934478": "আপনার আইডি যাচাই করা হয়েছে। আপনাকে আপনার ঠিকানা প্রমাণও জমা দিতে হবে।", "-118547687": "আইডি যাচাইকরণ পাস", "-200989771": "ব্যক্তিগত বিবরণ যান", "-1358357943": "পরিচয়ের প্রমাণ জমা দেওয়ার আগে অনুগ্রহ করে আপনার পোস্টাল কোড চেক করুন এবং আপডেট করুন।", "-1401994581": "আপনার ব্যক্তিগত বিবরণ অনুপস্থিত", "-2004327866": "দয়া করে ডকুমেন্ট ইস্যু করার একটি বৈধ দেশ নির্বাচন করুন।", + "-1627868670": "Your identity document has expired.", + "-1606307809": "We were unable to verify the identity document with the details provided.", "-1664159494": "দেশ", "-749870311": "<0>লাইভ চ্যাটের মাধ্যমে আমাদের সাথে যোগাযোগ করুন।", "-1084991359": "পরিচয় যাচাইয়ের প্রমাণ প্রয়োজন নেই", @@ -2464,21 +2421,54 @@ "-142444667": "আপনার Deriv MT5 পাসওয়ার্ড পরিবর্তন করতে ইমেলের লিঙ্কে ক্লিক করুন।", "-742748008": "আপনার ইমেইল চেক করুন এবং এগিয়ে যাওয়ার জন্য ইমেলের লিঙ্কটি ক্লিক করুন।", "-84068414": "এখনো ইমেইল পাওয়া যায়নি? <0>লাইভ চ্যাটের মাধ্যমে আমাদের সাথে যোগাযোগ করুন।", + "-975118358": "আপনার অ্যাকাউন্ট {{legal_entity_name}}দিয়ে খোলা হবে, মাল্টা ফাইন্যান্সিয়াল সার্ভিসেস অথরিটি (এমএফএসএ) দ্বারা নিয়ন্ত্রিত হবে এবং মাল্টা আইন সাপেক্ষে হবে।", + "-2073934245": "এই সাইটে প্রদত্ত আর্থিক ট্রেডিং পরিষেবাগুলি কেবলমাত্র গ্রাহকদের জন্য উপযুক্ত, যারা তাদের বিনিয়োগ করা সমস্ত অর্থ হারানোর সম্ভাবনা গ্রহণ করে এবং যারা আর্থিক চুক্তি ক্রয়ের সাথে জড়িত ঝুঁকির অভিজ্ঞতা অর্জন করে। আর্থিক চুক্তির লেনদেন উচ্চ মাত্রার ঝুঁকি বহন করে। যদি আপনি যে চুক্তিগুলি ক্রয় করেন সেগুলি মূল্যহীন হিসাবে মেয়াদ শেষ হয়ে যায়, তাহলে আপনি আপনার সমস্ত বিনিয়োগ হারাবেন, যার মধ্যে রয়েছে চুক্তি প্রিমিয়াম।", + "-1125193491": "অ্যাকাউন্ট যোগ করুন", + "-2068229627": "আমি একটি PEP নই, এবং আমি গত 12 মাসে একটি PEP হয়েছে না।", + "-186841084": "আপনার লগইন ইমেইল পরিবর্তন করুন", + "-907403572": "আপনার ইমেল ঠিকানা পরিবর্তন করতে, আপনাকে প্রথমে আপনার {{identifier_title}} অ্যাকাউন্ট থেকে আপনার ইমেল ঠিকানা আনলিঙ্ক করতে হবে।", + "-1850792730": "{{identifier_title}}থেকে আনলিংক করুন", "-428335668": "প্রক্রিয়াটি সম্পূর্ণ করার জন্য আপনাকে একটি পাসওয়ার্ড সেট করতে হবে।", + "-1232613003": "<0>যাচাইকরণ ব্যর্থ হয়েছে, <1>কেন?", + "-2029508615": "<0>যাচাইকরণ প্রয়োজন। এখনই <1>যাচাই করুন", "-818898181": "নথিতে থাকা নামের সাথে আপনার ডেরিভ প্রোফাইলের সাথে মিল নেই।", "-310316375": "ডকুমেন্টের ঠিকানার সাথে আপনি উপরে প্রবেশ করানো ঠিকানার সাথে মিলবে না।", "-485368404": "ডকুমেন্টটি 6 মাস আগে জারি করা হয়েছে।", "-367016488": "ঝাপসা ডকুমেন্ট। সমস্ত তথ্য স্পষ্ট এবং দৃশ্যমান হতে হবে।", "-1957076143": "ক্রপ করা ডকুমেন্ট। সমস্ত তথ্য স্পষ্ট এবং দৃশ্যমান হতে হবে।", + "-1576856758": "An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.", + "-231863107": "না", + "-870902742": "অনলাইন ট্রেডিং সম্পর্কিত আপনার কত জ্ঞান এবং অভিজ্ঞতা আছে?", + "-1929477717": "আমি একটি একাডেমিক ডিগ্রী, পেশাদারী সার্টিফিকেশন, এবং/অথবা আর্থিক সেবা সম্পর্কিত কাজের অভিজ্ঞতা আছে।", + "-1540148863": "আমি ট্রেডিং সম্পর্কিত সেমিনার, প্রশিক্ষণ, এবং/অথবা কর্মশালায় অংশগ্রহণ করেছি।", + "-922751756": "এক বছরেরও কম", + "-542986255": "কোনোটিই না", + "-1337206552": "আপনার বোঝার ক্ষেত্রে, CFD ট্রেডিং আপনাকে", + "-456863190": "একটি অ্যাসেটের মূল্য চলাচলের উপর একটি পজিশন রাখুন যেখানে ফলাফলটি একটি নির্দিষ্ট রিটার্ন বা কিছুই না।", + "-1314683258": "একটি নিশ্চিত মুনাফা জন্য একটি দীর্ঘমেয়াদী বিনিয়োগ করুন।", + "-1546090184": "লিভারেজ CFD ট্রেডিং কিভাবে প্রভাবিত করে?", + "-1636427115": "লিভারেজ ঝুঁকি কমানোর জন্য সাহায্য করে।", + "-800221491": "লিভারেজ লাভের নিশ্চয়তা দেয়।", + "-811839563": "লিভারেজ আপনাকে ট্রেড মূল্যের একটি ভগ্নাংশের জন্য বড় পজিশন খুলতে দেয়, যার ফলে মুনাফা বা ক্ষতি বৃদ্ধি হতে পারে।", + "-1185193552": "আপনার ট্রেড স্বয়ংক্রিয়ভাবে বন্ধ করুন যখন ক্ষতির পরিমাণ নির্দিষ্ট পরিমাণের সমান বা তার বেশি হয়, যতক্ষণ মার্কেট পর্যাপ্ত লিকুইডিটি থাকে।", + "-1046354": "যখন মুনাফা নির্দিষ্ট পরিমাণের সমান বা তার বেশি হয়, ততক্ষণ পর্যন্ত পর্যাপ্ত মার্কেট লিকুইডিটি থাকে তখন স্বয়ংক্রিয়ভাবে আপনার ট্রেড বন্ধ করুন।", + "-1842858448": "আপনার ট্রেডের উপর নিশ্চিত মুনাফা করুন।", + "-860053164": "যখন মাল্টিপ্লেয়ার ট্রেডিং।", + "-1250327770": "একটি কোম্পানির শেয়ার ক্রয় করার সময়", + "-1222388581": "উপরের সবগুলো।", "-1515286538": "দয়া করে আপনার ডকুমেন্ট নাম্বার দিন। ", "-1694758788": "আপনার ডকুমেন্ট নম্বর লিখুন", "-1458676679": "আপনি 2-50 অক্ষর লিখতে হবে।", + "-1176889260": "অনুগ্রহ করে একটি নথির ধরন নির্বাচন করুন।", + "-1265050949": "identity document", "-2139303636": "আপনি সম্ভবত একটি ভাঙা লিঙ্ক অনুসরণ করেছেন, অথবা পৃষ্ঠাটি একটি নতুন ঠিকানায় স্থানান্তরিত হয়েছে।", "-1448368765": "ত্রুটি কোড: {{error_code}} পৃষ্ঠা পাওয়া যায়নি", "-254792921": "আপনি শুধুমাত্র মুহূর্তে আমানত করতে পারেন। উইথড্রয়াল সক্রিয় করতে, অনুগ্রহ করে আপনার আর্থিক মূল্যায়ন সম্পূর্ণ করুন।", "-1437017790": "আর্থিক তথ্য", "-70342544": "আমরা আপনার আর্থিক তথ্য জানতে আইনত বাধ্য।", "-39038029": "ট্রেডিং অভিজ্ঞতা", + "-601903492": "ফরেক্স ট্রেডিং অভিজ্ঞতা", + "-1012699451": "CFD ট্রেডিং অভিজ্ঞতা", "-1894668798": "অন্যান্য ট্রেডিং ইন্সট্রুমেন্টের অভিজ্ঞতা", "-1026468600": "অন্যান্য ট্রেডিং ইন্সট্রুমেন্ট ফ্রিকোয়েন্সি", "-1743024217": "ভাষা নির্বাচন করুন", @@ -2489,6 +2479,11 @@ "-536187647": "প্রবেশাধিকার প্রত্যাহার নিশ্চিত করা হবে?", "-1357606534": "অনুমতি", "-570222048": "অ্যাক্সেস প্রত্যাহার করা হবে", + "-80717068": "আপনি আপনার <0>Deriv পাসওয়ার্ড লিঙ্ক করেছেন এমন অ্যাপ্লিকেশনগুলি:", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "{{brand_website_name}} এবং {{platform_name_trader}} এ লগ ইন করতে <0>Deriv পাসওয়ার্ড ব্যবহার করুন", + "-623760979": "লগ ইন করতে <0>Deriv পাসওয়ার্ড ব্যবহার করুন {{brand_website_name}}, {{platform_name_trader}} এবং {{platform_name_go}}।", + "-459147994": "{{brand_website_name}},,, {{platform_name_go}}, {{platform_name_trader}} {{platform_name_dbot}} এবং {{platform_name_ctrader}}লগ ইন করতে <0>Deriv পাসওয়ার্ড ব্যবহার {{platform_name_smarttrader}}করুন।", "-1526404112": "ইউটিলিটি বিল: বিদ্যুৎ, পানি, গ্যাস বা ল্যান্ডলাইন ফোন বিল।", "-537552700": "হোম ভাড়া চুক্তি: বৈধ এবং বর্তমান চুক্তি।", "-890084320": "সংরক্ষণ করুন এবং জমা দিন", @@ -2859,6 +2854,30 @@ "-1016171176": "অ্যাসেট", "-621128676": "ট্রেডের ধরণ", "-447853970": "ক্ষতি থ্রেশহোল্ড", + "-155173714": "চলুন শুরু করা যাক একটি বট নির্মাণ!", + "-1919212468": "3। আপনি বিভাগগুলির উপরে অনুসন্ধান বার ব্যবহার করে আপনি যে ব্লকগুলি চান সেগুলিও অনুসন্ধান করতে পারেন।", + "-1520558271": "আরো তথ্যের জন্য, একটি ট্রেডিং বট নির্মাণের মূলসূত্র উপর এই ব্লগ পোস্ট দেখুন।", + "-980360663": "3। আপনি চান ব্লক চয়ন করুন এবং কর্মক্ষেত্রে এটি টেনে আনুন।", + "-1493168314": "একটি দ্রুত কৌশল কি?", + "-1680391945": "একটি দ্রুত কৌশল ব্যবহার করে", + "-1177914473": "কিভাবে আমার কৌশল সংরক্ষণ করবো?", + "-271986909": "Bot বিল্ডারএ, আপনার বট ডাউনলোড করতে উপরের টুলবারে Save হিট করুন। আপনার বট একটি নাম দিন, এবং আপনার ডিভাইস বা Google ড্রাইভে আপনার বট ডাউনলোড করার জন্য চয়ন করুন। আপনার বট একটি এক্সএমএল ফাইল হিসাবে ডাউনলোড করা হবে।", + "-1149045595": "1। আমদানিআঘাত করার পরে, স্থানীয় নির্বাচন করুন এবং চালিয়ে যানক্লিক করুন।", + "-288041546": "2. আপনার XML ফাইলটি নির্বাচন করুন এবং ওপেন টিপুন।", + "-2127548288": "3। আপনার বট সেই অনুযায়ী লোড করা হবে।", + "-1311297611": "1। আঘাত করার পরে আমদানি, Google ড্রাইভ নির্বাচন করুন এবং চালিয়ে যানক্লিক করুন।", + "-1549564044": "আমি কিভাবে কর্মক্ষেত্র পুনরায় সেট করবো?", + "-1127331928": "বট বিল্ডারএ, উপরের টুলবারে রিসেট হিট করুন। এটি কর্মক্ষেত্র পরিষ্কার করবে। অনুগ্রহ করে মনে রাখবেন যে কোন অসংরক্ষিত পরিবর্তন হারিয়ে যাবে।", + "-1720444288": "আমি কিভাবে Deriv বট সঙ্গে আমার ক্ষতি নিয়ন্ত্রণ করতে পারি?", + "-1142295124": "Deriv বট সঙ্গে আপনার ক্ষতি নিয়ন্ত্রণ করার বিভিন্ন উপায় আছে। এখানে একটি সহজ উদাহরণ আছে কিভাবে আপনি আপনার কৌশল ক্ষতি নিয়ন্ত্রণ বাস্তবায়ন করতে পারেন:", + "-986689483": "1। নিম্নলিখিত ভেরিয়েবলগুলি তৈরি করুন:", + "-269910127": "3। সর্বশেষ চুক্তি থেকে মুনাফা সহ বর্তমান মুনাফা/ক্ষতি আপডেট করুন। যদি শেষ চুক্তি হারিয়ে যায়, তবে বর্তমান মুনাফা/ক্ষতির মান নেতিবাচক হবে।", + "-1565344891": "আমি কি আমার ওয়েব ব্রাউজারে একাধিক ট্যাবে Deriv Bot চালাতে পারি?", + "-90192474": "হ্যাঁ, তুমি পারবে। যাইহোক, আপনার অ্যাকাউন্টে সীমা আছে, যেমন সর্বাধিক সংখ্যক ওপেন পজিশন এবং ওপেন পজিশনগুলিতে সর্বাধিক সমষ্টিগত অর্থ প্রদান। সুতরাং, একাধিক পজিশন খোলার সময় এই সীমাগুলি মনে রাখবেন। আপনি এই সীমা সম্পর্কে আরও তথ্য সেটিংস > অ্যাকাউন্ট সীমাএ পেতে পারেন।", + "-213872712": "না, আমরা Deriv Bot এ ক্রিপ্টোকুয়ার্বিক্স অফার করি না।", + "-2147346223": "কোন দেশে ডেরিভ বট পাওয়া যায়?", + "-352345777": "অটোমেটেড ট্রেডিংয়ের জন্য সবচেয়ে জনপ্রিয় কৌশল কি?", + "-552392096": "স্বয়ংক্রিয় ট্রেডিংয়ের সবচেয়ে বেশি ব্যবহৃত কৌশলগুলির মধ্যে তিনটি হল মার্টিংগেল, ডি'আলেমবার্ট, এবং অস্কারের গ্রিন্ড - আপনি ডেরিভ বোটে তাদের জন্য প্রস্তুত এবং আপনার জন্য অপেক্ষা করতে পারেন।", "-507620484": "অসংরক্ষিত", "-764102808": "গুগল ড্রাইভ", "-555886064": "ওন", @@ -2937,30 +2956,6 @@ "-1823621139": "দ্রুত কৌশল", "-1778025545": "আপনি সফলভাবে একটি বট আমদানি করেছেন।", "-1519425996": "কোনো ফলাফল পাওয়া যায়নি \"{{ faq_search_value }}”", - "-155173714": "চলুন শুরু করা যাক একটি বট নির্মাণ!", - "-1919212468": "3। আপনি বিভাগগুলির উপরে অনুসন্ধান বার ব্যবহার করে আপনি যে ব্লকগুলি চান সেগুলিও অনুসন্ধান করতে পারেন।", - "-1520558271": "আরো তথ্যের জন্য, একটি ট্রেডিং বট নির্মাণের মূলসূত্র উপর এই ব্লগ পোস্ট দেখুন।", - "-980360663": "3। আপনি চান ব্লক চয়ন করুন এবং কর্মক্ষেত্রে এটি টেনে আনুন।", - "-1493168314": "একটি দ্রুত কৌশল কি?", - "-1680391945": "একটি দ্রুত কৌশল ব্যবহার করে", - "-1177914473": "কিভাবে আমার কৌশল সংরক্ষণ করবো?", - "-271986909": "Bot বিল্ডারএ, আপনার বট ডাউনলোড করতে উপরের টুলবারে Save হিট করুন। আপনার বট একটি নাম দিন, এবং আপনার ডিভাইস বা Google ড্রাইভে আপনার বট ডাউনলোড করার জন্য চয়ন করুন। আপনার বট একটি এক্সএমএল ফাইল হিসাবে ডাউনলোড করা হবে।", - "-1149045595": "1। আমদানিআঘাত করার পরে, স্থানীয় নির্বাচন করুন এবং চালিয়ে যানক্লিক করুন।", - "-288041546": "2. আপনার XML ফাইলটি নির্বাচন করুন এবং ওপেন টিপুন।", - "-2127548288": "3। আপনার বট সেই অনুযায়ী লোড করা হবে।", - "-1311297611": "1। আঘাত করার পরে আমদানি, Google ড্রাইভ নির্বাচন করুন এবং চালিয়ে যানক্লিক করুন।", - "-1549564044": "আমি কিভাবে কর্মক্ষেত্র পুনরায় সেট করবো?", - "-1127331928": "বট বিল্ডারএ, উপরের টুলবারে রিসেট হিট করুন। এটি কর্মক্ষেত্র পরিষ্কার করবে। অনুগ্রহ করে মনে রাখবেন যে কোন অসংরক্ষিত পরিবর্তন হারিয়ে যাবে।", - "-1720444288": "আমি কিভাবে Deriv বট সঙ্গে আমার ক্ষতি নিয়ন্ত্রণ করতে পারি?", - "-1142295124": "Deriv বট সঙ্গে আপনার ক্ষতি নিয়ন্ত্রণ করার বিভিন্ন উপায় আছে। এখানে একটি সহজ উদাহরণ আছে কিভাবে আপনি আপনার কৌশল ক্ষতি নিয়ন্ত্রণ বাস্তবায়ন করতে পারেন:", - "-986689483": "1। নিম্নলিখিত ভেরিয়েবলগুলি তৈরি করুন:", - "-269910127": "3। সর্বশেষ চুক্তি থেকে মুনাফা সহ বর্তমান মুনাফা/ক্ষতি আপডেট করুন। যদি শেষ চুক্তি হারিয়ে যায়, তবে বর্তমান মুনাফা/ক্ষতির মান নেতিবাচক হবে।", - "-1565344891": "আমি কি আমার ওয়েব ব্রাউজারে একাধিক ট্যাবে Deriv Bot চালাতে পারি?", - "-90192474": "হ্যাঁ, তুমি পারবে। যাইহোক, আপনার অ্যাকাউন্টে সীমা আছে, যেমন সর্বাধিক সংখ্যক ওপেন পজিশন এবং ওপেন পজিশনগুলিতে সর্বাধিক সমষ্টিগত অর্থ প্রদান। সুতরাং, একাধিক পজিশন খোলার সময় এই সীমাগুলি মনে রাখবেন। আপনি এই সীমা সম্পর্কে আরও তথ্য সেটিংস > অ্যাকাউন্ট সীমাএ পেতে পারেন।", - "-213872712": "না, আমরা Deriv Bot এ ক্রিপ্টোকুয়ার্বিক্স অফার করি না।", - "-2147346223": "কোন দেশে ডেরিভ বট পাওয়া যায়?", - "-352345777": "অটোমেটেড ট্রেডিংয়ের জন্য সবচেয়ে জনপ্রিয় কৌশল কি?", - "-552392096": "স্বয়ংক্রিয় ট্রেডিংয়ের সবচেয়ে বেশি ব্যবহৃত কৌশলগুলির মধ্যে তিনটি হল মার্টিংগেল, ডি'আলেমবার্ট, এবং অস্কারের গ্রিন্ড - আপনি ডেরিভ বোটে তাদের জন্য প্রস্তুত এবং আপনার জন্য অপেক্ষা করতে পারেন।", "-418247251": "আপনার জার্নাল ডাউনলোড করুন।", "-2123571162": "ডাউনলোড", "-870004399": "<0>কেনা: {{longcode}} (আইডি: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "ফুল স্ক্রীণ", "-1823504435": "বিজ্ঞপ্তি দেখুন", "-1954045170": "কোন কারেন্সি বরাদ্দ করা হয়নি", - "-583559763": "মেনু", "-1591792668": "অ্যাকাউন্ট লিমিট", "-34495732": "রেগুলেটরি তথ্য", "-1496158755": "ডেরিভেটিভ ডটকম এ যান", @@ -3259,6 +3253,7 @@ "-818926350": "আর্থিক কমিশন ঘটনার তারিখের 45 দিনের জন্য আপিল গ্রহণ করে এবং ব্যবসায়ী সরাসরি কোম্পানির সাথে সমস্যা সমাধানের চেষ্টা করার পরেই।", "-1825471709": "একটি শক্তিশালী কিন্তু সহজে ব্যবহার করা প্ল্যাটফর্মের উপর একটি সম্পূর্ণ নতুন ট্রেডিং অভিজ্ঞতা।", "-981017278": "আপনার নখদর্পণে অটোমেটেড ট্রেডিং। কোন কোডিং প্রয়োজন নেই।", + "-583559763": "মেনু", "-778309978": "আপনার ক্লিক করা লিঙ্কটি মেয়াদ শেষ হয়ে গেছে। আপনার ইনবক্সে থাকা সর্বশেষ ইমেইলের লিঙ্কটি ক্লিক করুন। বিকল্পভাবে, নীচের আপনার ইমেল লিখুন এবং একটি নতুন <0>লিঙ্কের জন্য ইমেল পুনরায় পাঠান ক্লিক করুন।", "-336222114": "এটি ঠিক করতে এই সহজ পদক্ষেপগুলি অনুসরণ করুন:", "-1064116456": "ব্রোকার <0>ডেরিভ হোল্ডিংস (গুয়ের্নসি) লিমিটেডের জন্য অনুসন্ধান করুন এবং এটি নির্বাচন করুন।", @@ -3415,22 +3410,6 @@ "-1282933308": "{{barrier}}না", "-968190634": "{{barrier}}এর সমান", "-1747377543": "{{barrier}}এর নিচে", - "-256210543": "এই সময়ে ট্রেডিং অনুপলব্ধ।", - "-1150099396": "আমরা শীঘ্রই আপনার জন্য এই উপলব্ধ আছে কাজ করছি। যদি আপনার অন্য অ্যাকাউন্ট থাকে, তাহলে ট্রেডিং চালিয়ে যেতে সেই অ্যাকাউন্টে যান। আপনি একটি Deriv MT5 আর্থিক যোগ করতে পারেন।", - "-28115241": "{{platform_name_trader}} এই অ্যাকাউন্টের জন্য উপলব্ধ নয়", - "-453920758": "{{platform_name_mt5}} ড্যাশবোর্ডে যান", - "-402175529": "ইতিহাস", - "-902712434": "চুক্তি বাতিল", - "-988484646": "চুক্তি বাতিল (মৃত্যুদন্ড কার্যকর)", - "-444882676": "চুক্তি বাতিল (সক্রিয়)", - "-13423018": "রেফারেন্স আইডি", - "-2035315547": "নিম্ন বাধা", - "-1551639437": "কোন ইতিহাস নেই", - "-1214703885": "আপনি এখনও আপডেট করতে পারেন মুনাফা বা স্টপ লস", - "-504849554": "এটি পুনরায় খোলা হবে", - "-59803288": "ইতিমধ্যে, আমাদের সিন্থেটিক সূচকগুলি চেষ্টা করুন। তারা বাস্তব-বাজারের অস্থিতিশীলতার অনুকরণ করে এবং 24/7 খোলা থাকে।", - "-1278109940": "ওপেন মার্কেট দেখুন", - "-694105443": "এই মার্কেট বন্ধ", "-1043795232": "সাম্প্রতিক অবস্থান", "-1511825574": "মুনাফা/ক্ষতি:", "-726626679": "সম্ভাব্য মুনাফা/ক্ষতি:", @@ -3455,21 +3434,15 @@ "-1435392215": "চুক্তি বাতিল সম্পর্কে", "-2017825013": "পেয়েছি এটা।", "-1192773792": "এটা আবার দেখাবে না", + "-902712434": "চুক্তি বাতিল", "-1280319153": "নির্বাচিত সময়সীমার মধ্যে যে কোন সময় আপনার ট্রেড বাতিল করুন। আপনার ট্রেড নির্বাচিত টাইম-ফ্রেমের মধ্যে স্টপ আউট লেভেলে পৌঁছালে স্বয়ংক্রিয়ভাবে ট্রিগার হয়।", "-471757681": "ঝুঁকি ব্যবস্থাপনা", "-843831637": "স্টপ লস", "-771725194": "চুক্তি বাতিলকরণ", "-338707425": "ন্যূনতম সময়কাল 1 দিন", "-1003473648": "স্থিতিকাল: {{duration}} দিন", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "মেয়াদ শেষ হওয়ার সময়ে পরিশোধ চূড়ান্ত মূল্য এবং স্ট্রাইক মূল্যের মধ্যে পার্থক্য দ্বারা গুণিত প্রতি পয়েন্ট পরিশোধের সমান।", "-1527492178": "ক্রয় লকড", "-725375562": "আপনি সেটিংস মেনু থেকে ক্রয় বোতামটি লক/আনলক করতে পারেন", - "-774638412": "স্টেক {{min_stake}} {{currency}} এবং মধ্যে হতে হবে {{max_stake}} {{currency}}", - "-1358367903": "পণ", - "-434270664": "বর্তমান মূল্য", - "-1956787775": "ব্যারিয়ার মূল্য:", - "-1513281069": "ব্যারিয়ার ২", "-390994177": "{{min}} এবং {{max}}এর মধ্যে হওয়া উচিত", "-1804019534": "মেয়াদ উত্তীর্ন: {{date}}", "-2055106024": "উন্নত এবং সহজ সময়কাল সেটিংসের মধ্যে টগল করুন", @@ -3484,6 +3457,7 @@ "-1763848396": "রাখুন", "-194424366": "উপরে", "-857660728": "স্ট্রাইক দাম", + "-1358367903": "পণ", "-1386326276": "ব্যারিয়ার একটি প্রয়োজনীয় ক্ষেত্র।", "-1418742026": "উচ্চ বাধা কম বাধা বেশী হতে হবে।", "-92007689": "নিম্ন বাধা উচ্চ বাধা থেকে কম হতে হবে।", @@ -3491,6 +3465,21 @@ "-1975910372": "মিনিট ০ থেকে ৫৯ এর মধ্যে হতে হবে।", "-866277689": "মেয়াদ শেষের সময় অতীতে হতে পারে না।", "-1455298001": "এখনই", + "-256210543": "এই সময়ে ট্রেডিং অনুপলব্ধ।", + "-1150099396": "আমরা শীঘ্রই আপনার জন্য এই উপলব্ধ আছে কাজ করছি। যদি আপনার অন্য অ্যাকাউন্ট থাকে, তাহলে ট্রেডিং চালিয়ে যেতে সেই অ্যাকাউন্টে যান। আপনি একটি Deriv MT5 আর্থিক যোগ করতে পারেন।", + "-28115241": "{{platform_name_trader}} এই অ্যাকাউন্টের জন্য উপলব্ধ নয়", + "-453920758": "{{platform_name_mt5}} ড্যাশবোর্ডে যান", + "-402175529": "ইতিহাস", + "-988484646": "চুক্তি বাতিল (মৃত্যুদন্ড কার্যকর)", + "-444882676": "চুক্তি বাতিল (সক্রিয়)", + "-13423018": "রেফারেন্স আইডি", + "-2035315547": "নিম্ন বাধা", + "-1551639437": "কোন ইতিহাস নেই", + "-1214703885": "আপনি এখনও আপডেট করতে পারেন মুনাফা বা স্টপ লস", + "-504849554": "এটি পুনরায় খোলা হবে", + "-59803288": "ইতিমধ্যে, আমাদের সিন্থেটিক সূচকগুলি চেষ্টা করুন। তারা বাস্তব-বাজারের অস্থিতিশীলতার অনুকরণ করে এবং 24/7 খোলা থাকে।", + "-1278109940": "ওপেন মার্কেট দেখুন", + "-694105443": "এই মার্কেট বন্ধ", "-439389714": "আমরা এটা কাজ করছি", "-770929448": "{{platform_name_smarttrader}}এ যান", "-347156282": "প্রমাণ জমা দিন", @@ -3537,6 +3526,8 @@ "-454245976": "যদি আপনি মনে করেন যে বাজারের দাম নির্দিষ্ট সময়ের জন্য ক্রমাগত কমে যাবে, তাহলে <0>শর্ট বেছে নিন। যদি বাজার মূল্য বাধা অতিক্রম না করে বা অতিক্রম না করে তবে মেয়াদ শেষ হওয়ার সময় আপনি একটি অর্থ প্রদান পাবেন। আপনার পরিশোধ বাজার মূল্য এবং বাধা মধ্যে দূরত্ব আনুপাতিকভাবে বৃদ্ধি হবে যদি বাধা লঙ্ঘন না হয়। আপনি একটি মুনাফা উপার্জন শুরু হবে যখন পেআউট আপনার পণ বেশী হয়। যদি বাজার মূল্য কখনও বাধা অতিক্রম করে, তাহলে একটি অর্থ প্রদান করা হবে না।", "-351875097": "টিকটিকি সংখ্যা", "-729830082": "কম দেখুন", + "-1669741470": "মেয়াদ শেষ হওয়ার সময়ে পরিশোধ চূড়ান্ত মূল্য এবং স্ট্রাইক মূল্যের মধ্যে পার্থক্য দ্বারা গুণিত প্রতি পয়েন্ট পরিশোধের সমান।", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "নতুন!", "-993480898": "অ্যাকুমিলেটর", "-45873457": "নতুন", @@ -3557,6 +3548,10 @@ "-690963898": "আপনার পেমেন্ট এই পরিমাণ পৌঁছে যখন আপনার চুক্তি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।", "-511541916": "আপনার চুক্তি স্বয়ংক্রিয়ভাবে ticks এই সংখ্যা পৌঁছানোর পরে বন্ধ করা হবে।", "-438655760": "<0>দ্রষ্টব্য: আপনি যে কোন সময় আপনার ট্রেড বন্ধ করতে পারবেন। স্লিপেজ ঝুঁকি সম্পর্কে সচেতন থাকুন।", + "-774638412": "স্টেক {{min_stake}} {{currency}} এবং মধ্যে হতে হবে {{max_stake}} {{currency}}", + "-434270664": "বর্তমান মূল্য", + "-1956787775": "ব্যারিয়ার মূল্য:", + "-1513281069": "ব্যারিয়ার ২", "-1683683754": "লং", "-1046859144": "<0>{{title}} বাজার মূল্য {{price_position}} থাকে এবং বাধা স্পর্শ বা অতিক্রম না করলে আপনি একটি অর্থ প্রদান পাবেন। অন্যথায়, আপনার পরিশোধ শূন্য হবে।", "-1815023694": "বাধা উপরে", diff --git a/packages/translations/src/translations/de.json b/packages/translations/src/translations/de.json index 58cca7aab89a..6a494634784f 100644 --- a/packages/translations/src/translations/de.json +++ b/packages/translations/src/translations/de.json @@ -24,7 +24,6 @@ "27731356": "Ihr Konto ist vorübergehend deaktiviert. Bitte kontaktieren Sie uns per <0>Live-Chat, um wieder Ein- und Auszahlungen zu ermöglichen.", "27830635": "Deriv (V) Ltd.", "28581045": "Fügen Sie ein echtes MT5-Konto hinzu", - "30801950": "Ihr Konto wird mit {{legal_entity_name}}eröffnet, wird von der Malta Gaming Authority reguliert und unterliegt den maltesischen Gesetzen.", "33433576": "Bitte verwenden Sie ein E-Wallet, um Ihr Geld abzuheben.", "35089987": "Laden Sie die Vorder- und Rückseite Ihres Führerscheins hoch.", "41737927": "Danke", @@ -251,7 +250,6 @@ "284772879": "Vertrag", "284809500": "Finanzielle Demo", "287934290": "Möchten Sie diese Transaktion wirklich stornieren?", - "289898640": "NUTZUNGSBEDINGUNGEN", "291744889": "<0>1. Handelsparameter: <0>", "291817757": "Besuchen Sie unsere Deriv-Community und erfahren Sie mehr über APIs, API-Token, Möglichkeiten zur Verwendung von Deriv-APIs und mehr.", "292491635": "Wenn Sie „Stop Loss“ wählen und einen Betrag angeben, um Ihren Verlust zu begrenzen, wird Ihre Position automatisch geschlossen, wenn Ihr Verlust diesen Betrag übersteigt oder diesem Betrag entspricht. Ihr Verlust kann je nach Marktpreis bei Handelsschluss höher sein als der Betrag, den Sie eingegeben haben.", @@ -372,6 +370,7 @@ "427134581": "Versuchen Sie, einen anderen Dateityp zu verwenden.", "427617266": "Bitcoins", "428709688": "Ihr bevorzugtes Zeitintervall zwischen den einzelnen Berichten:", + "429970999": "To avoid delays, enter your <0>name exactly as it appears on your {{document_name}}.", "431267979": "Hier finden Sie eine kurze Anleitung, wie Sie Deriv Bot unterwegs verwenden können.", "432273174": "1:100", "432508385": "Gewinnmitnahme: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. Beim Start einmal ausführen", "520136698": "Boom 500 Index", "521872670": "Artikel", - "522283618": "Erfahrung im Handel mit digitalen Optionen", "522703281": "teilbar durch", "523123321": "- 10 hoch mit einer bestimmten Zahl", "524459540": "Wie erstelle ich Variablen?", @@ -562,7 +560,6 @@ "642546661": "Laden Sie die Rückseite der Lizenz von Ihrem Computer hoch", "642995056": "E-Mail", "644150241": "Die Anzahl der Verträge, die du gewonnen hast, seit du deine Statistiken das letzte Mal gelöscht hast.", - "645016681": "Handelshäufigkeit mit anderen Finanzinstrumenten", "645902266": "EUR/NZD", "647039329": "Adressnachweis erforderlich", "647745382": "Eingabeliste {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "Kassakurs des vorherigen Ticks.", "812775047": "unterhalb der Barriere", "814827314": "Das Stop-Out-Level im Chart zeigt den Kurs an, bei dem Ihr potenzieller Verlust Ihrem gesamten Einsatz entspricht. Wenn der Marktpreis dieses Niveau erreicht, wird Ihre Position automatisch geschlossen. Dadurch wird sichergestellt, dass Ihr Verlust den Betrag, den Sie für den Kauf des Kontrakts bezahlt haben, nicht übersteigt.", + "814936420": "{{ banner_message }}", "815925952": "Dieser Block ist obligatorisch. Es ist nur eine Kopie dieses Blocks erlaubt. Er wird dem Canvas standardmäßig hinzugefügt, wenn Sie Deriv Bot öffnen.", "816580787": "Willkommen zurück! Ihre Nachrichten wurden wiederhergestellt.", "816738009": "<0/><1/>Sie können Ihre ungelöste Streitigkeit auch dem <2>Büro des Schiedsrichters für Finanzdienstleistungen vorlegen.", @@ -747,7 +745,6 @@ "836097457": "Ich interessiere mich für den Handel, habe aber sehr wenig Erfahrung.", "837063385": "Senden Sie keine anderen Währungen an diese Adresse.", "837066896": "Ihr Dokument wird überprüft. Bitte versuchen Sie es in 1-3 Tagen erneut.", - "839618971": "ADRESSE", "839805709": "Um Sie reibungslos verifizieren zu können, benötigen wir ein besseres Foto", "840672750": "Wenn dies nicht funktioniert, deinstallieren Sie die MT5-App und installieren Sie sie erneut. Wiederholen Sie dann die Schritte <0>2 und <0>3.", "841434703": "Stapel deaktivieren", @@ -965,6 +962,7 @@ "1061308507": "Kauf {{ contract_type }}", "1062423382": "Erkunden Sie die Videoanleitungen und FAQs zum Erstellen Ihres Bots auf der Registerkarte „Tutorials“.", "1062536855": "Entspricht", + "1062569830": "The <0>name on your identity document doesn't match your profile.", "1065275078": "cTrader ist vorerst nur auf dem Desktop verfügbar.", "1065353420": "110+", "1065498209": "Iterieren (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3. Legen Sie Ihre Handelsparameter fest und klicken Sie auf Run.", "1174748431": "Zahlungskanal", "1175183064": "Vanuatu", - "1176926166": "Erfahrung mit dem Handel mit anderen Finanzinstrumenten", "1177396776": "Wenn Sie „Asian Fall“ wählen, gewinnen Sie die Auszahlung, wenn das letzte Häkchen unter dem Durchschnitt der Zecken liegt.", "1177723589": "Es gibt keine anzuzeigenden Transaktionen", "1178582280": "Die Anzahl der Verträge, die Sie seit dem letzten Löschen Ihrer Statistiken verloren haben.", @@ -1150,6 +1147,7 @@ "1255963623": "Bis Datum/Uhrzeit {{ input_timestamp }} {{ dummy }}", "1258097139": "Was könnten wir tun, um uns zu verbessern?", "1258198117": "positiv", + "1259145708": "Let’s try again. Choose another document and enter the corresponding details.", "1259598687": "GBP/JPY", "1260259925": "Das Telefon hat kein richtiges Format.", "1263387702": "Alle {{count}} Kontotypen verwenden Market Execution. Das bedeutet, dass Sie den Preis des Brokers im Voraus vereinbaren und Bestellungen zum Preis des Brokers aufgeben.", @@ -1173,7 +1171,6 @@ "1289146554": "Finanzdienstleistungskommission der Britischen Jungferninseln", "1289646209": "Margin Call", "1290525720": "Beispiel: ", - "1291887623": "Häufigkeit des Handels mit digitalen Optionen", "1291997417": "Die Kontrakte laufen genau um 23:59:59 GMT an dem von Ihnen gewählten Verfallsdatum aus.", "1292188546": "Setzen Sie das Deriv MT5-Investorenpasswort zurück", "1292891860": "Telegram benachrichtigen", @@ -1257,7 +1254,6 @@ "1367023655": "Um sicherzustellen, dass Ihr Verlust Ihren Einsatz nicht übersteigt, wird Ihr Kontrakt automatisch geschlossen, wenn Ihr Verlust gleich ist<0/>.", "1367488817": "4. Starten Sie die Handelsbedingungen neu", "1367990698": "Volatilitätsindex 10", - "1369709538": "Unsere Nutzungsbedingungen", "1370647009": "Genießen Sie höhere Tageslimits", "1371193412": "Stornieren", "1371555192": "Wählen Sie Ihre bevorzugte Zahlungsstelle und geben Sie Ihren Auszahlungsbetrag ein. Wenn Ihr Zahlungsagent nicht aufgeführt ist, <0>suchen Sie anhand seiner Kontonummer nach ihm.", @@ -1297,6 +1293,7 @@ "1413047745": "Weist einer Variablen einen bestimmten Wert zu", "1413359359": "Eine neue Überweisung tätigen", "1414205271": "Primzahl", + "1414918420": "We'll review your proof of identity again and will give you an update as soon as possible.", "1415006332": "Unterliste von Anfang an abrufen", "1415513655": "Laden Sie cTrader auf Ihr Handy herunter, um mit dem Deriv cTrader-Konto zu handeln", "1415974522": "Wenn Sie „Anders“ wählen, gewinnen Sie die Auszahlung, wenn die letzte Ziffer des letzten Häkchens nicht mit Ihrer Vorhersage übereinstimmt.", @@ -1419,7 +1416,6 @@ "1542742708": "Kunststoffe, Devisen, Aktien, Aktienindizes, Rohstoffe und Kryptowährungen", "1544642951": "Wenn Sie „Nur Ups“ wählen, gewinnen Sie die Auszahlung, wenn aufeinanderfolgende Ticks nach dem Startpunkt nacheinander steigen. Keine Auszahlung, wenn ein Tick fällt oder einem der vorherigen Ticks entspricht.", "1547148381": "Diese Datei ist zu groß (nur bis zu 8 MB erlaubt). Bitte laden Sie eine weitere Datei hoch.", - "1548765374": "Überprüfung der Dokumentennummer ist fehlgeschlagen", "1549098835": "Insgesamt zurückgezogen", "1551172020": "AUD Korb", "1552162519": "Onboarding ansehen", @@ -1647,6 +1643,7 @@ "1790770969": "FX-Majors (Standard-/Micro-Lots), FX-Minors, Rohstoffe, Kryptowährungen", "1791432284": "Suche nach Land", "1791971912": "Kürzlich", + "1792037169": "To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your {{document_name}}.", "1793913365": "Um Geld einzuzahlen, wechseln Sie bitte zu Ihrem {{currency_symbol}} Konto.", "1794815502": "Laden Sie Ihren Transaktionsverlauf herunter.", "1796787905": "Bitte laden Sie die folgenden Dokumente hoch.", @@ -1792,7 +1789,6 @@ "1924765698": "Geburtsort*", "1926987784": "- iOS: Wischen Sie auf dem Konto nach links und tippen Sie auf <0>Löschen.", "1928930389": "GBP/NOK", - "1929309951": "Beschäftigungsstatus", "1929694162": "Konten vergleichen", "1930899934": "Leine", "1931659123": "Lauf bei jeder Zecke", @@ -1966,12 +1962,12 @@ "2115223095": "Verlust", "2117165122": "1. Erstelle einen Telegramm-Bot und erhalte dein Telegram-API-Token. Lesen Sie hier mehr darüber, wie Sie Bots in Telegram erstellen: https://core.telegram.org/bots#6-botfather", "2117489390": "Automatisches Update in {{ remaining }} Sekunden", - "2118315870": "Wo wohnst du?", "2119449126": "Die Beispielausgabe des folgenden Beispiels wird wie folgt aussehen:", "2119710534": "FAQ", "2121227568": "NEO/USD", "2122152120": "Aktiva", "2127564856": "Auszahlungen sind gesperrt", + "2129807378": "Update profile", "2131963005": "Bitte heben Sie Ihr Geld von den folgenden Deriv MT5-Konten ab:", "2133451414": "Dauer", "2133470627": "Dieser Block gibt die potenzielle Auszahlung für den ausgewählten Handelstyp zurück. Dieser Block kann nur im Stammblock „Einkaufsbedingungen“ verwendet werden.", @@ -1992,8 +1988,6 @@ "2146698770": "Profi-Tipp: Sie können den gewünschten Block auch anklicken und herausziehen", "2146892766": "Erfahrung im Handel mit binären Optionen", "2147244655": "Wie importiere ich meinen eigenen Handelsbot in Deriv Bot?", - "-1232613003": "Die <0>Überprüfung ist fehlgeschlagen. <1>Warum?", - "-2029508615": "<0>Bestätigung erforderlich. <1>Jetzt verifizieren", "-931052769": "Überprüfung einreichen", "-1004605898": "Tipps", "-1938142055": "Hochgeladene Dokumente", @@ -2141,18 +2135,9 @@ "-179726573": "Wir haben Ihren Eigentumsnachweis erhalten.", "-813779897": "Die Überprüfung des Eigentumsnachweises wurde bestanden.", "-638756912": "Schwärzen Sie die Ziffern 7 bis 12 der Kartennummer auf der Vorderseite Ihrer Debit-/Kreditkarte aus.", - "-2073934245": "Die auf dieser Website angebotenen Finanzhandelsdienstleistungen sind nur für Kunden geeignet, die die Möglichkeit akzeptieren, das gesamte von ihnen investierte Geld zu verlieren, und die das mit dem Kauf von Finanzkontrakten verbundene Risiko verstehen und Erfahrung damit haben. Transaktionen in Finanzkontrakten sind mit einem hohen Risiko verbunden. Wenn die von Ihnen gekauften Verträge als wertlos ablaufen, verlieren Sie Ihre gesamte Investition, einschließlich der Vertragsprämie.", - "-1166068675": "Ihr Konto wird mit {{legal_entity_name}}eröffnet, wird von der UK Gaming Commission (UKGC) reguliert und unterliegt den Gesetzen der Isle of Man.", - "-975118358": "Ihr Konto wird bei {{legal_entity_name}} eröffnet, das von der Malta Financial Services Authority (MFSA) reguliert wird und den Gesetzen Maltas unterliegt.", - "-680528873": "Ihr Konto wird mit {{legal_entity_name}} eröffnet und unterliegt den Gesetzen von Samoa.", - "-1125193491": "Konto hinzufügen", - "-2068229627": "Ich bin kein PEP und ich war in den letzten 12 Monaten kein PEP.", "-684271315": "OK", "-740157281": "Bewertung der Handelserfahrung", "-1720468017": "Um Ihnen unsere Dienstleistungen anbieten zu können, müssen wir Informationen von Ihnen einholen, um beurteilen zu können, ob ein bestimmtes Produkt oder eine bestimmte Dienstleistung für Sie geeignet ist.", - "-186841084": "Ändere deine Login-E-Mail", - "-907403572": "Um Ihre E-Mail-Adresse zu ändern, müssen Sie zunächst die Verknüpfung Ihrer E-Mail-Adresse mit Ihrem {{identifier_title}}-Konto aufheben.", - "-1850792730": "Unlink von {{identifier_title}}", "-307865807": "Warnung zur Risikotoleranz", "-690100729": "Ja, ich verstehe das Risiko.", "-2010628430": "CFDs und andere Finanzinstrumente bergen aufgrund der Hebelwirkung ein hohes Risiko, schnell Geld zu verlieren. Sie sollten sich überlegen, ob Sie verstehen, wie CFDs und andere Finanzinstrumente funktionieren, und ob Sie es sich leisten können, das hohe Risiko einzugehen, Ihr Geld zu verlieren.<0/><0/> Um fortzufahren, müssen Sie bestätigen, dass Sie verstehen, dass Ihr Kapital gefährdet ist.", @@ -2206,11 +2191,6 @@ "-1725454783": "Gescheitert", "-506510414": "Datum und Uhrzeit", "-1708927037": "IP-Adresse", - "-619126443": "Verwenden Sie das <0>Deriv-Passwort, um sich bei {{brand_website_name}} und {{platform_name_trader}}anzumelden.", - "-623760979": "Verwenden Sie das <0>Deriv-Passwort, um sich bei {{brand_website_name}}, {{platform_name_trader}} und {{platform_name_go}}anzumelden.", - "-459147994": "Verwenden Sie das <0>Deriv-Passwort, um sich bei {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} und {{platform_name_ctrader}}anzumelden.", - "-80717068": "Apps, die Sie mit Ihrem <0>Deriv-Passwort verknüpft haben:", - "-9570380": "Verwenden Sie das {{platform_name_dxtrade}}-Passwort, um sich bei Ihren {{platform_name_dxtrade}}-Konten im Web und in den mobilen Apps anzumelden.", "-2131200819": "Deaktivieren", "-200487676": "Aktiviere", "-1840392236": "Das ist nicht der richtige Code. Bitte versuchen Sie es erneut.", @@ -2240,44 +2220,37 @@ "-378415317": "Staat ist erforderlich", "-1497654315": "Unsere Konten und Dienste sind für die Postleitzahl von Jersey nicht verfügbar.", "-755626951": "Vervollständigen Sie Ihre Adressdaten", - "-584911871": "Wählen Sie die Wallet-Währung", "-1461267236": "Bitte wählen Sie Ihre Währung", - "-1352330125": "WÄHRUNG", "-1027595143": "Weniger als 25.000$", "-40491332": "25.000$ bis 50.000$", "-1139806939": "$50.001 - $100.000", - "-626752657": "0-1 Jahr", - "-532014689": "1—2 Jahre", - "-1001024004": "Über 3 Jahre", - "-790513277": "6-10 Transaktionen in den letzten 12 Monaten", - "-580085300": "11-39 Transaktionen in den letzten 12 Monaten", - "-654781670": "Primär", - "-1717373258": "Sekundär", "-996132458": "Konstruktion", "-915003867": "Gesundheit", "-1430012453": "Informations- und Kommunikationstechnologie", "-987824916": "Wissenschaft und Technik", "-146630682": "Sozial und Kulturell", "-761306973": "Herstellung", - "-739367071": "Angestellt", - "-1156937070": "500,001$ — 1.000.000$", - "-315534569": "Über 1.000.000$", - "-2068544539": "Festangestellter Mitarbeiter", - "-531314998": "Investitionen und Dividenden", - "-1235114522": "Altersvorsorge", - "-1298056749": "Staatliche Leistungen", - "-449943381": "Ersparnisse und Erbschaft", "-1631552645": "Berufstätige", "-474864470": "Personal Care-, Vertriebs- und Servicemitarbeiter", "-1129355784": "Arbeiter in der Land-, Forst- und Fischereiwirtschaft", "-1242914994": "Handwerks-, Metall-, Elektro- und Elektronikarbeiter", "-1317824715": "Reinigungskräfte und Helfer", "-1592729751": "Bergbau-, Bau-, Produktions- und Transportarbeiter", + "-1030759620": "Regierungsbeamte", "-2137323480": "Eigentum des Unternehmens", "-1590574533": "Scheidungsvereinbarung", "-1667683002": "Erbschaft", "-1237843731": "Erträge aus Kapitalanlagen", "-777506574": "Verkauf von Immobilien", + "-654781670": "Primär", + "-1717373258": "Sekundär", + "-1156937070": "500,001$ — 1.000.000$", + "-315534569": "Über 1.000.000$", + "-2068544539": "Festangestellter Mitarbeiter", + "-531314998": "Investitionen und Dividenden", + "-1235114522": "Altersvorsorge", + "-1298056749": "Staatliche Leistungen", + "-449943381": "Ersparnisse und Erbschaft", "-1161338910": "Vorname ist erforderlich.", "-1161818065": "Der Nachname sollte zwischen 2 und 50 Zeichen lang sein.", "-1281693513": "Geburtsdatum ist erforderlich.", @@ -2287,28 +2260,14 @@ "-212167954": "Die Steueridentifikationsnummer ist nicht richtig formatiert.", "-621555159": "Informationen zur Identität", "-204765990": "Nutzungsbedingungen", - "-231863107": "Nein", - "-870902742": "Wie viel Wissen und Erfahrung haben Sie in Bezug auf den Online-Handel?", - "-1929477717": "Ich habe einen akademischen Abschluss, eine Berufszertifizierung und/oder Berufserfahrung im Bereich Finanzdienstleistungen.", - "-1540148863": "Ich habe Seminare, Schulungen und/oder Workshops zum Thema Handel besucht.", - "-922751756": "Weniger als ein Jahr", - "-542986255": "Keine", - "-1337206552": "Nach Ihrem Verständnis ermöglicht Ihnen der CFD-Handel:", - "-456863190": "Platzieren Sie eine Position in der Preisbewegung eines Vermögenswerts, bei der das Ergebnis eine feste Rendite oder gar nichts ist.", - "-1314683258": "Tätigen Sie eine langfristige Investition mit einem garantierten Gewinn.", - "-1546090184": "Wie wirkt sich die Hebelwirkung auf den CFD-Handel aus?", - "-1636427115": "Hebelwirkung hilft, Risiken zu mindern.", - "-800221491": "Leverage garantiert Gewinne.", - "-811839563": "Mit der Hebelwirkung können Sie große Positionen für einen Bruchteil des Handelswerts eröffnen, was zu einem höheren Gewinn oder Verlust führen kann.", - "-1185193552": "Schließen Sie Ihren Handel automatisch, wenn der Verlust einem bestimmten Betrag entspricht oder diesen übersteigt, sofern eine ausreichende Marktliquidität vorhanden ist.", - "-1046354": "Schließen Sie Ihren Handel automatisch, wenn der Gewinn einem bestimmten Betrag entspricht oder diesen übersteigt, sofern eine ausreichende Marktliquidität vorhanden ist.", - "-1842858448": "Erzielen Sie mit Ihrem Handel einen garantierten Gewinn.", - "-860053164": "Beim Handel mit Multiplikatoren.", - "-1250327770": "Beim Kauf von Aktien eines Unternehmens.", - "-1222388581": "All das oben Genannte.", "-477761028": "Wählerausweis", "-1466346630": "CPF", - "-1030759620": "Regierungsbeamte", + "-739367071": "Angestellt", + "-626752657": "0-1 Jahr", + "-532014689": "1—2 Jahre", + "-1001024004": "Über 3 Jahre", + "-790513277": "6-10 Transaktionen in den letzten 12 Monaten", + "-580085300": "11-39 Transaktionen in den letzten 12 Monaten", "-612752984": "Dies sind Standardlimits, die wir für Ihre Konten anwenden.", "-1598263601": "Um mehr über Handelslimits und deren Anwendung zu erfahren, besuchen Sie bitte das <0>Hilfecenter.", "-1411635770": "Erfahren Sie mehr über Kontolimits", @@ -2326,10 +2285,7 @@ "-1500958859": "verifizieren", "-1502578110": "Ihr Konto ist vollständig authentifiziert und Ihre Auszahlungslimits wurden aufgehoben.", "-1662154767": "eine aktuelle Stromrechnung (z. B. Strom, Wasser, Gas, Festnetz oder Internet), ein Kontoauszug oder ein von der Regierung ausgestelltes Schreiben mit Ihrem Namen und dieser Adresse.", - "-190838815": "Wir benötigen das zur Überprüfung. Wenn die von Ihnen angegebenen Informationen falsch oder ungenau sind, können Sie keine Ein- und Auszahlungen vornehmen.", - "-223216785": "Zweite Adresszeile*", "-594456225": "Zweite Adresszeile", - "-1940457555": "Post-/PLZ*", "-1964954030": "Post-/PLZ", "-516397235": "Sei vorsichtig, mit wem du dieses Token teilst. Jeder mit diesem Token kann die folgenden Aktionen in Ihrem Konto ausführen", "-989216986": "Konten hinzufügen", @@ -2371,8 +2327,6 @@ "-1100235269": "Branche der Beschäftigung", "-684388823": "Geschätztes Nettovermögen", "-509054266": "Erwarteter Jahresumsatz", - "-601903492": "Erfahrung im Forex-Handel", - "-1012699451": "Erfahrung im CFD-Handel", "-1588485629": "Beispiel", "-1117345066": "Wählen Sie den Dokumenttyp", "-651192353": "Beispiel:", @@ -2393,18 +2347,21 @@ "-1944264183": "Um den Handel fortzusetzen, müssen Sie außerdem einen Identitätsnachweis vorlegen.", "-1088324715": "Wir werden Ihre Dokumente überprüfen und Sie innerhalb von 1 bis 3 Arbeitstagen über den Status informieren.", "-329713179": "Okay", - "-1176889260": "Bitte wählen Sie einen Dokumenttyp aus.", - "-1926456107": "Die von Ihnen angegebene ID ist abgelaufen.", - "-555047589": "Es sieht so aus, als ob Ihr Ausweis abgelaufen ist. Bitte versuchen Sie es erneut mit einem gültigen Dokument.", - "-841187054": "Versuchen Sie es erneut", + "-895884696": "The <0>name and <0>date of birth on your identity document don't match your profile.", + "-1792723131": "To avoid delays, enter your <0>date of birth exactly as it appears on your {{document_name}}.", + "-886317740": "The <0>date of birth on your identity document doesn't match your profile.", + "-1813671961": "Your identity verification failed because:", "-2097808873": "Wir konnten Ihre ID mit den von Ihnen angegebenen Daten nicht überprüfen. ", - "-228284848": "Wir konnten Ihre ID mit den von Ihnen angegebenen Daten nicht überprüfen.", + "-1652371224": "Your profile is updated", + "-504784172": "Your document has been submitted", "-1391934478": "Ihre ID ist verifiziert. Sie müssen auch einen Adressnachweis vorlegen.", "-118547687": "Ausweisüberprüfung bestanden", "-200989771": "Gehe zu den persönlichen Daten", "-1358357943": "Bitte überprüfen und aktualisieren Sie Ihre Postleitzahl, bevor Sie einen Identitätsnachweis einreichen.", "-1401994581": "Ihre persönlichen Daten fehlen", "-2004327866": "Bitte wählen Sie ein gültiges Land aus, in dem das Dokument ausgestellt wurde.", + "-1627868670": "Your identity document has expired.", + "-1606307809": "We were unable to verify the identity document with the details provided.", "-1664159494": "Land", "-749870311": "Bitte kontaktieren Sie uns per <0>Live-Chat.", "-1084991359": "Ein Identitätsnachweis ist nicht erforderlich", @@ -2464,21 +2421,54 @@ "-142444667": "Bitte klicken Sie auf den Link in der E-Mail, um Ihr Deriv MT5-Passwort zu ändern.", "-742748008": "Überprüfe deine E-Mail und klicke auf den Link in der E-Mail, um fortzufahren.", "-84068414": "Hast du die E-Mail immer noch nicht bekommen? Bitte kontaktieren Sie uns per <0>Live-Chat.", + "-975118358": "Ihr Konto wird bei {{legal_entity_name}} eröffnet, das von der Malta Financial Services Authority (MFSA) reguliert wird und den Gesetzen Maltas unterliegt.", + "-2073934245": "Die auf dieser Website angebotenen Finanzhandelsdienstleistungen sind nur für Kunden geeignet, die die Möglichkeit akzeptieren, das gesamte von ihnen investierte Geld zu verlieren, und die das mit dem Kauf von Finanzkontrakten verbundene Risiko verstehen und Erfahrung damit haben. Transaktionen in Finanzkontrakten sind mit einem hohen Risiko verbunden. Wenn die von Ihnen gekauften Verträge als wertlos ablaufen, verlieren Sie Ihre gesamte Investition, einschließlich der Vertragsprämie.", + "-1125193491": "Konto hinzufügen", + "-2068229627": "Ich bin kein PEP und ich war in den letzten 12 Monaten kein PEP.", + "-186841084": "Ändere deine Login-E-Mail", + "-907403572": "Um Ihre E-Mail-Adresse zu ändern, müssen Sie zunächst die Verknüpfung Ihrer E-Mail-Adresse mit Ihrem {{identifier_title}}-Konto aufheben.", + "-1850792730": "Unlink von {{identifier_title}}", "-428335668": "Sie müssen ein Passwort festlegen, um den Vorgang abzuschließen.", + "-1232613003": "Die <0>Überprüfung ist fehlgeschlagen. <1>Warum?", + "-2029508615": "<0>Bestätigung erforderlich. <1>Jetzt verifizieren", "-818898181": "Der Name im Dokument stimmt nicht mit Ihrem Deriv-Profil überein.", "-310316375": "Die Adresse im Dokument stimmt nicht mit der Adresse überein, die Sie oben eingegeben haben.", "-485368404": "Das Dokument wurde vor mehr als 6 Monaten ausgestellt.", "-367016488": "Unscharfes Dokument. Alle Informationen müssen klar und deutlich sichtbar sein.", "-1957076143": "Beschnittenes Dokument. Alle Informationen müssen klar und deutlich sichtbar sein.", + "-1576856758": "An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.", + "-231863107": "Nein", + "-870902742": "Wie viel Wissen und Erfahrung haben Sie in Bezug auf den Online-Handel?", + "-1929477717": "Ich habe einen akademischen Abschluss, eine Berufszertifizierung und/oder Berufserfahrung im Bereich Finanzdienstleistungen.", + "-1540148863": "Ich habe Seminare, Schulungen und/oder Workshops zum Thema Handel besucht.", + "-922751756": "Weniger als ein Jahr", + "-542986255": "Keine", + "-1337206552": "Nach Ihrem Verständnis ermöglicht Ihnen der CFD-Handel:", + "-456863190": "Platzieren Sie eine Position in der Preisbewegung eines Vermögenswerts, bei der das Ergebnis eine feste Rendite oder gar nichts ist.", + "-1314683258": "Tätigen Sie eine langfristige Investition mit einem garantierten Gewinn.", + "-1546090184": "Wie wirkt sich die Hebelwirkung auf den CFD-Handel aus?", + "-1636427115": "Hebelwirkung hilft, Risiken zu mindern.", + "-800221491": "Leverage garantiert Gewinne.", + "-811839563": "Mit der Hebelwirkung können Sie große Positionen für einen Bruchteil des Handelswerts eröffnen, was zu einem höheren Gewinn oder Verlust führen kann.", + "-1185193552": "Schließen Sie Ihren Handel automatisch, wenn der Verlust einem bestimmten Betrag entspricht oder diesen übersteigt, sofern eine ausreichende Marktliquidität vorhanden ist.", + "-1046354": "Schließen Sie Ihren Handel automatisch, wenn der Gewinn einem bestimmten Betrag entspricht oder diesen übersteigt, sofern eine ausreichende Marktliquidität vorhanden ist.", + "-1842858448": "Erzielen Sie mit Ihrem Handel einen garantierten Gewinn.", + "-860053164": "Beim Handel mit Multiplikatoren.", + "-1250327770": "Beim Kauf von Aktien eines Unternehmens.", + "-1222388581": "All das oben Genannte.", "-1515286538": "Bitte geben Sie Ihre Dokumentennummer ein. ", "-1694758788": "Geben Sie Ihre Dokumentennummer ein", "-1458676679": "Sie sollten 2-50 Zeichen eingeben.", + "-1176889260": "Bitte wählen Sie einen Dokumenttyp aus.", + "-1265050949": "identity document", "-2139303636": "Möglicherweise sind Sie einem defekten Link gefolgt, oder die Seite wurde an eine neue Adresse verschoben.", "-1448368765": "Fehlercode: {{error_code}} Seite nicht gefunden", "-254792921": "Sie können derzeit nur Einzahlungen tätigen. Um Auszahlungen zu ermöglichen, vervollständigen Sie bitte Ihre finanzielle Bewertung.", "-1437017790": "Finanzielle Informationen", "-70342544": "Wir sind gesetzlich verpflichtet, Sie nach Ihren Finanzinformationen zu fragen.", "-39038029": "Handelserfahrung", + "-601903492": "Erfahrung im Forex-Handel", + "-1012699451": "Erfahrung im CFD-Handel", "-1894668798": "Erfahrung mit anderen Handelsinstrumenten", "-1026468600": "Häufigkeit anderer Handelsinstrumente", "-1743024217": "Sprache wählen", @@ -2489,6 +2479,11 @@ "-536187647": "Zugriff bestätigen?", "-1357606534": "Erlaubnis", "-570222048": "Zugriff entziehen", + "-80717068": "Apps, die Sie mit Ihrem <0>Deriv-Passwort verknüpft haben:", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "Verwenden Sie das <0>Deriv-Passwort, um sich bei {{brand_website_name}} und {{platform_name_trader}}anzumelden.", + "-623760979": "Verwenden Sie das <0>Deriv-Passwort, um sich bei {{brand_website_name}}, {{platform_name_trader}} und {{platform_name_go}}anzumelden.", + "-459147994": "Verwenden Sie das <0>Deriv-Passwort, um sich bei {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} und {{platform_name_ctrader}}anzumelden.", "-1526404112": "Rechnung eines Versorgungsunternehmens: Strom-, Wasser-, Gas- oder Festnetztelefonrechnung.", "-537552700": "Wohnungsmietvertrag: gültiger und aktueller Vertrag.", "-890084320": "Speichern und abschicken", @@ -2859,6 +2854,30 @@ "-1016171176": "Vermögenswert", "-621128676": "Handelsart", "-447853970": "Verlustschwelle", + "-155173714": "Lass uns einen Bot bauen!", + "-1919212468": "3. Sie können auch über die Suchleiste über den Kategorien nach den gewünschten Blöcken suchen.", + "-1520558271": "Weitere Informationen finden Sie in diesem Blogbeitrag über die Grundlagen des Aufbaus eines Trading-Bots.", + "-980360663": "3. Wählen Sie den gewünschten Block aus und ziehen Sie ihn in den Arbeitsbereich.", + "-1493168314": "Was ist eine schnelle Strategie?", + "-1680391945": "Mit einer schnellen Strategie", + "-1177914473": "Wie speichere ich meine Strategie?", + "-271986909": "In Bot Builderklicken Sie oben in der Werkzeugleiste auf Speichern , um Ihren Bot herunterzuladen. Geben Sie Ihrem Bot einen Namen und wählen Sie aus, ob Sie Ihren Bot auf Ihr Gerät oder Google Drive herunterladen möchten. Ihr Bot wird als XML-Datei heruntergeladen.", + "-1149045595": "1. Nachdem Sie auf Importieren geklickt haben, wählen Sie Lokal und klicken Sie auf Weiter.\n", + "-288041546": "2. Wählen Sie Ihre XML-Datei und klicken Sie auf Auswählen .", + "-2127548288": "3. Ihr Bot wird entsprechend geladen.", + "-1311297611": "1. Nachdem Sie auf Importieren geklickt haben, wählen Sie Google Drive aus und klicken Sie auf Weiter.", + "-1549564044": "Wie setze ich den Workspace zurück?", + "-1127331928": "Klicken Sie im Bot Builder oben in der Symbolleiste auf Zurücksetzen. Dadurch wird der Arbeitsbereich geleert. Bitte beachten Sie, dass alle nicht gespeicherten Änderungen verloren gehen.", + "-1720444288": "Wie kann ich meine Verluste mit Deriv Bot kontrollieren?", + "-1142295124": "Es gibt mehrere Möglichkeiten, Ihre Verluste mit Deriv Bot zu kontrollieren. Hier ein einfaches Beispiel dafür, wie Sie die Verlustkontrolle in Ihre Strategie integrieren können:", + "-986689483": "1. Erstellen Sie die folgenden Variablen:", + "-269910127": "3. Aktualisieren Sie den current profit/loss mit dem Gewinn aus dem letzten Vertrag. Wenn der letzte Kontrakt verloren ging, ist der Wert des current profit/loss Negativ.", + "-1565344891": "Kann ich Deriv Bot auf mehreren Registerkarten in meinem Webbrowser ausführen?", + "-90192474": "Ja, Sie können. Allerdings gibt es für Ihr Konto Beschränkungen, wie z. B. die maximale Anzahl offener Positionen und maximale Gesamtauszahlungen für offene Positionen. Beachten Sie also diese Limits, wenn Sie mehrere Positionen eröffnen. Weitere Informationen zu diesen Limits finden Sie unter Einstellungen > Kontolimits.\n", + "-213872712": "Nein, wir bieten keine Kryptowährungen auf Deriv Bot an.", + "-2147346223": "In welchen Ländern ist Deriv Bot verfügbar?", + "-352345777": "Was sind die beliebtesten Strategien für den automatisierten Handel?", + "-552392096": "Drei der am häufigsten verwendeten Strategien im automatisierten Handel sind Martingale, D'Alembert und Oscar's Grind - Sie finden sie alle fertig und warten auf Sie in Deriv Bot.", "-507620484": "Nicht gespeichert", "-764102808": "Google Drive", "-555886064": "Gewonnen", @@ -2937,30 +2956,6 @@ "-1823621139": "Schnelle Strategie", "-1778025545": "Sie haben erfolgreich einen Bot importiert.", "-1519425996": "Keine Ergebnisse gefunden \"{{ faq_search_value }}“", - "-155173714": "Lass uns einen Bot bauen!", - "-1919212468": "3. Sie können auch über die Suchleiste über den Kategorien nach den gewünschten Blöcken suchen.", - "-1520558271": "Weitere Informationen finden Sie in diesem Blogbeitrag über die Grundlagen des Aufbaus eines Trading-Bots.", - "-980360663": "3. Wählen Sie den gewünschten Block aus und ziehen Sie ihn in den Arbeitsbereich.", - "-1493168314": "Was ist eine schnelle Strategie?", - "-1680391945": "Mit einer schnellen Strategie", - "-1177914473": "Wie speichere ich meine Strategie?", - "-271986909": "In Bot Builderklicken Sie oben in der Werkzeugleiste auf Speichern , um Ihren Bot herunterzuladen. Geben Sie Ihrem Bot einen Namen und wählen Sie aus, ob Sie Ihren Bot auf Ihr Gerät oder Google Drive herunterladen möchten. Ihr Bot wird als XML-Datei heruntergeladen.", - "-1149045595": "1. Nachdem Sie auf Importieren geklickt haben, wählen Sie Lokal und klicken Sie auf Weiter.\n", - "-288041546": "2. Wählen Sie Ihre XML-Datei und klicken Sie auf Auswählen .", - "-2127548288": "3. Ihr Bot wird entsprechend geladen.", - "-1311297611": "1. Nachdem Sie auf Importieren geklickt haben, wählen Sie Google Drive aus und klicken Sie auf Weiter.", - "-1549564044": "Wie setze ich den Workspace zurück?", - "-1127331928": "Klicken Sie im Bot Builder oben in der Symbolleiste auf Zurücksetzen. Dadurch wird der Arbeitsbereich geleert. Bitte beachten Sie, dass alle nicht gespeicherten Änderungen verloren gehen.", - "-1720444288": "Wie kann ich meine Verluste mit Deriv Bot kontrollieren?", - "-1142295124": "Es gibt mehrere Möglichkeiten, Ihre Verluste mit Deriv Bot zu kontrollieren. Hier ein einfaches Beispiel dafür, wie Sie die Verlustkontrolle in Ihre Strategie integrieren können:", - "-986689483": "1. Erstellen Sie die folgenden Variablen:", - "-269910127": "3. Aktualisieren Sie den current profit/loss mit dem Gewinn aus dem letzten Vertrag. Wenn der letzte Kontrakt verloren ging, ist der Wert des current profit/loss Negativ.", - "-1565344891": "Kann ich Deriv Bot auf mehreren Registerkarten in meinem Webbrowser ausführen?", - "-90192474": "Ja, Sie können. Allerdings gibt es für Ihr Konto Beschränkungen, wie z. B. die maximale Anzahl offener Positionen und maximale Gesamtauszahlungen für offene Positionen. Beachten Sie also diese Limits, wenn Sie mehrere Positionen eröffnen. Weitere Informationen zu diesen Limits finden Sie unter Einstellungen > Kontolimits.\n", - "-213872712": "Nein, wir bieten keine Kryptowährungen auf Deriv Bot an.", - "-2147346223": "In welchen Ländern ist Deriv Bot verfügbar?", - "-352345777": "Was sind die beliebtesten Strategien für den automatisierten Handel?", - "-552392096": "Drei der am häufigsten verwendeten Strategien im automatisierten Handel sind Martingale, D'Alembert und Oscar's Grind - Sie finden sie alle fertig und warten auf Sie in Deriv Bot.", "-418247251": "Laden Sie Ihr Journal herunter.", "-2123571162": "Herunterladen", "-870004399": "<0>Gekauft: {{longcode}} (ID: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "Vollbild", "-1823504435": "Benachrichtigungen anzeigen", "-1954045170": "Keine Währung zugewiesen", - "-583559763": "Menu", "-1591792668": "Konto-Limits", "-34495732": "Regulatorische Informationen", "-1496158755": "Gehe zu Deriv.com", @@ -3259,6 +3253,7 @@ "-818926350": "Die Finanzkommission akzeptiert Einsprüche innerhalb von 45 Tagen nach dem Datum des Vorfalls und erst, nachdem der Händler versucht hat, das Problem direkt mit dem Unternehmen zu lösen.", "-1825471709": "Ein völlig neues Handelserlebnis auf einer leistungsstarken und dennoch benutzerfreundlichen Plattform.", "-981017278": "Automatisierter Handel an Ihren Fingerspitzen. Keine Codierung erforderlich.", + "-583559763": "Menu", "-778309978": "Der Link, auf den Sie geklickt haben, ist abgelaufen. Stellen Sie sicher, dass Sie den Link in der neuesten E-Mail in Ihrem Posteingang anklicken. Alternativ können Sie Ihre E-Mail unten eingeben und auf <0>E-Mail senden klicken, um einen neuen Link zu erhalten.", "-336222114": "Folgen Sie diesen einfachen Schritten, um das Problem zu beheben:", "-1064116456": "Suchen Sie nach dem Broker <0>Deriv Holdings (Guernsey) Limited und wählen Sie ihn aus.", @@ -3415,22 +3410,6 @@ "-1282933308": "Nicht {{barrier}}", "-968190634": "Entspricht {{barrier}}", "-1747377543": "Unter {{barrier}}", - "-256210543": "Der Handel ist derzeit nicht verfügbar.", - "-1150099396": "Wir arbeiten daran, dies bald für Sie verfügbar zu haben. Wenn Sie ein anderes Konto haben, wechseln Sie zu diesem Konto, um den Handel fortzusetzen. Sie können einen Deriv MT5 Financial hinzufügen.", - "-28115241": "{{platform_name_trader}} ist für dieses Konto nicht verfügbar", - "-453920758": "Gehe zum Dashboard {{platform_name_mt5}}", - "-402175529": "Geschichte", - "-902712434": "Stornierung des Deals", - "-988484646": "Stornierung des Deals (ausgeführt)", - "-444882676": "Stornierung des Deals (aktiv)", - "-13423018": "Referenz-ID", - "-2035315547": "Niedrige Barriere", - "-1551639437": "Keine Geschichte", - "-1214703885": "Sie müssen noch entweder Take Profit oder Stop Loss aktualisieren", - "-504849554": "Es wird am wiedereröffnet", - "-59803288": "In der Zwischenzeit probieren Sie unsere synthetischen Indizes aus. Sie simulieren die reale Marktvolatilität und sind rund um die Uhr geöffnet.", - "-1278109940": "Offene Märkte ansehen", - "-694105443": "Dieser Markt ist geschlossen", "-1043795232": "Aktuelle Positionen", "-1511825574": "Gewinn/Verlust:", "-726626679": "Potenzieller Gewinn/Verlust:", @@ -3455,21 +3434,15 @@ "-1435392215": "Über die Stornierung des Deals", "-2017825013": "Ich hab's", "-1192773792": "Zeig das nicht noch einmal", + "-902712434": "Stornierung des Deals", "-1280319153": "Stornieren Sie Ihren Handel jederzeit innerhalb eines ausgewählten Zeitrahmens. Wird automatisch ausgelöst, wenn Ihr Trade innerhalb des gewählten Zeitrahmens das Stop-Out-Level erreicht.", "-471757681": "Risikomanagement", "-843831637": "Stoppen Sie den Verlust", "-771725194": "Stornierung des Deals", "-338707425": "Die Mindestdauer beträgt 1 Tag", "-1003473648": "Dauer: {{duration}} Tage", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "Die Auszahlung bei Fälligkeit entspricht der Auszahlung pro Punkt multipliziert mit der Differenz zwischen dem Endpreis und dem Ausübungspreis.", "-1527492178": "Kauf gesperrt", "-725375562": "Sie können die Kaufschaltfläche im Einstellungsmenü sperren/entsperren", - "-774638412": "Die Einsätze müssen zwischen {{min_stake}} {{currency}} und {{max_stake}} {{currency}}liegen.", - "-1358367903": "Pfahl", - "-434270664": "Aktueller Preis", - "-1956787775": "Barrierepreis:", - "-1513281069": "Barriere 2", "-390994177": "Sollte zwischen {{min}} und {{max}}liegen", "-1804019534": "Verfalldatum: {{date}}", "-2055106024": "Zwischen erweiterten und einfachen Dauer-Einstellungen umschalten", @@ -3484,6 +3457,7 @@ "-1763848396": "Stellen", "-194424366": "über", "-857660728": "Basispreise", + "-1358367903": "Pfahl", "-1386326276": "Barriere ist ein Pflichtfeld.", "-1418742026": "Eine höhere Barriere muss höher sein als eine niedrigere Barriere.", "-92007689": "Die untere Barriere muss niedriger als die höhere Barriere sein.", @@ -3491,6 +3465,21 @@ "-1975910372": "Die Minute muss zwischen 0 und 59 liegen.", "-866277689": "Die Ablaufzeit kann nicht in der Vergangenheit liegen.", "-1455298001": "Jetzt", + "-256210543": "Der Handel ist derzeit nicht verfügbar.", + "-1150099396": "Wir arbeiten daran, dies bald für Sie verfügbar zu haben. Wenn Sie ein anderes Konto haben, wechseln Sie zu diesem Konto, um den Handel fortzusetzen. Sie können einen Deriv MT5 Financial hinzufügen.", + "-28115241": "{{platform_name_trader}} ist für dieses Konto nicht verfügbar", + "-453920758": "Gehe zum Dashboard {{platform_name_mt5}}", + "-402175529": "Geschichte", + "-988484646": "Stornierung des Deals (ausgeführt)", + "-444882676": "Stornierung des Deals (aktiv)", + "-13423018": "Referenz-ID", + "-2035315547": "Niedrige Barriere", + "-1551639437": "Keine Geschichte", + "-1214703885": "Sie müssen noch entweder Take Profit oder Stop Loss aktualisieren", + "-504849554": "Es wird am wiedereröffnet", + "-59803288": "In der Zwischenzeit probieren Sie unsere synthetischen Indizes aus. Sie simulieren die reale Marktvolatilität und sind rund um die Uhr geöffnet.", + "-1278109940": "Offene Märkte ansehen", + "-694105443": "Dieser Markt ist geschlossen", "-439389714": "Wir arbeiten daran", "-770929448": "Gehe zu {{platform_name_smarttrader}}", "-347156282": "Nachweis einreichen", @@ -3537,6 +3526,8 @@ "-454245976": "Wenn Sie glauben, dass der Marktpreis für einen bestimmten Zeitraum kontinuierlich fallen wird, wählen Sie <0>Short. Sie erhalten eine Auszahlung zum Verfallszeitpunkt, wenn der Marktpreis die Barriere nicht berührt oder überschreitet. Ihre Auszahlung wächst proportional zum Abstand zwischen dem Marktpreis und der Barriere, wenn die Barriere nicht durchbrochen wird. Sie machen einen Gewinn, wenn die Auszahlung höher ist als Ihr Einsatz. Wenn der Marktpreis die Barriere jemals überschreitet, gibt es keine Auszahlung.", "-351875097": "Anzahl der Zecken", "-729830082": "Weniger ansehen", + "-1669741470": "Die Auszahlung bei Fälligkeit entspricht der Auszahlung pro Punkt multipliziert mit der Differenz zwischen dem Endpreis und dem Ausübungspreis.", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "NEU!", "-993480898": "Akkumulatoren", "-45873457": "NEU", @@ -3557,6 +3548,10 @@ "-690963898": "Ihr Vertrag wird automatisch geschlossen, wenn Ihre Auszahlung diesen Betrag erreicht.", "-511541916": "Ihr Vertrag wird automatisch geschlossen, sobald diese Anzahl von Ticks erreicht ist.", "-438655760": "<0>Hinweis: Sie können Ihren Handel jederzeit schließen. Seien Sie sich des Slippage-Risikos bewusst.", + "-774638412": "Die Einsätze müssen zwischen {{min_stake}} {{currency}} und {{max_stake}} {{currency}}liegen.", + "-434270664": "Aktueller Preis", + "-1956787775": "Barrierepreis:", + "-1513281069": "Barriere 2", "-1683683754": "Lang", "-1046859144": "<0>{{title}} Sie erhalten eine Auszahlung, wenn der Marktpreis {{price_position}} bleibt und die Barriere nicht berührt oder überschreitet. Andernfalls ist Ihre Auszahlung gleich null.", "-1815023694": "über der Barriere", diff --git a/packages/translations/src/translations/es.json b/packages/translations/src/translations/es.json index 1bff0da6416a..ea74666f1432 100644 --- a/packages/translations/src/translations/es.json +++ b/packages/translations/src/translations/es.json @@ -24,7 +24,6 @@ "27731356": "Su cuenta está desactivada temporalmente. Contáctenos a través del <0>live chat para volver a habilitar los depósitos y retiros.", "27830635": "Deriv (V) Ltd", "28581045": "Añadir una cuenta MT5 real", - "30801950": "Su cuenta se abrirá con {{legal_entity_name}}, regulada por la Autoridad de Juegos de Malta, y estará sujeta a las leyes de Malta.", "33433576": "Por favor, utilice una billetera electrónica para retirar sus fondos.", "35089987": "Suba el anverso y el reverso de su carné de conducir.", "41737927": "Gracias", @@ -251,7 +250,6 @@ "284772879": "Contrato", "284809500": "Demo financiera", "287934290": "¿Está seguro de que quiere cancelar esta transacción?", - "289898640": "TÉRMINOS DE USO", "291744889": "<0>1. Parámetros de operación:<0>", "291817757": "Visite nuestra comunidad Deriv y obtenga información sobre las API, los tokens de API, las formas de usar las API de Deriv y mucho más.", "292491635": "Si selecciona \"Stop loss\" y especifica una cantidad para limitar su pérdida, su posición se cerrará automáticamente cuando su pérdida sea mayor o igual a esta cantidad. Su pérdida puede ser mayor que la cantidad que ingresó dependiendo del precio de mercado al cierre.", @@ -372,6 +370,7 @@ "427134581": "Intente utilizar otro tipo de archivo.", "427617266": "Bitcoin", "428709688": "Su intervalo de tiempo preferido entre cada informe:", + "429970999": "To avoid delays, enter your <0>name exactly as it appears on your {{document_name}}.", "431267979": "Aquí tiene una guía rápida sobre cómo usar Deriv Bot portátil.", "432273174": "1:100", "432508385": "Take Profit: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. Ejecutar una vez al iniciar", "520136698": "Índice Boom 500", "521872670": "item", - "522283618": "Experiencia en trading con opciones digitales", "522703281": "divisible por", "523123321": "- 10 a la potencia de un número dado", "524459540": "¿Cómo creo variables?", @@ -562,7 +560,6 @@ "642546661": "Suba la parte trasera de la licencia de conducir desde su computadora", "642995056": "Correo electrónico", "644150241": "La cantidad de contratos que ha ganado desde la última vez que borró sus estadísticas.", - "645016681": "Frecuencia de trading en otros instrumentos financieros", "645902266": "EUR/NZD", "647039329": "Se requiere prueba de domicilio", "647745382": "Lista de entrada {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "Precio spot en el tick anterior.", "812775047": "debajo de la barrera", "814827314": "El nivel de stop-out del gráfico indica el precio al que su pérdida potencial equivale a la totalidad de su inversión. Cuando el precio de mercado alcance este nivel, su posición se cerrará automáticamente. Esto garantiza que su pérdida no supere la cantidad que pagó para comprar el contrato.", + "814936420": "{{ banner_message }}", "815925952": "Este bloque es obligatorio. Solo se permite una copia de este bloque. Se añade al lienzo por defecto al abrir Deriv Bot.", "816580787": "¡Bienvenido/a de nuevo! Sus mensajes han sido restaurados.", "816738009": "<0/><1/>También puede presentar su disputa no resuelta a la <2>Oficina del Árbitro de Servicios Financieros.", @@ -747,7 +745,6 @@ "836097457": "Estoy interesado en el trading, pero tengo muy poca experiencia.", "837063385": "No envíe otras divisas a esta dirección.", "837066896": "Su documento se está revisado, vuelva a consultarnos en 1-3 días.", - "839618971": "DIRECCIÓN", "839805709": "Para verificarlo sin problemas, necesitamos una mejor foto", "840672750": "Si esto no funciona, desinstale y vuelva a instalar la aplicación MT5. A continuación, vuelva a realizar los pasos <0>2 y <0>3.", "841434703": "Deshabilitar stack", @@ -965,6 +962,7 @@ "1061308507": "Compre {{ contract_type }}", "1062423382": "Consulta las videoguías y las preguntas frecuentes para crear tu bot en la pestaña de tutoriales.", "1062536855": "Iguales", + "1062569830": "The <0>name on your identity document doesn't match your profile.", "1065275078": "Por ahora, cTrader sólo está disponible en el escritorio.", "1065353420": "+110", "1065498209": "Iterar (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3. Establezca los parámetros de su operación y pulse Ejecutar.", "1174748431": "Canal de pago", "1175183064": "Vanuatu", - "1176926166": "Experiencia en operación con otros instrumentos financieros", "1177396776": "Si selecciona \"Asiáticas - Baja\", ganará el pago si el último tick es inferior a la media de los ticks.", "1177723589": "No hay transacciones para mostrar", "1178582280": "La cantidad de contratos que ha perdido desde la última vez que borró sus estadísticas.", @@ -1150,6 +1147,7 @@ "1255963623": "Hasta la fecha/hora {{ input_timestamp }} {{ dummy }}", "1258097139": "¿Qué podemos hacer para mejorar?", "1258198117": "positivo", + "1259145708": "Let’s try again. Choose another document and enter the corresponding details.", "1259598687": "GBP/JPY", "1260259925": "El teléfono no tiene el formato adecuado.", "1263387702": "Los {{count}} tipos de cuenta utilizan la ejecución del mercado. Esto significa que está de acuerdo con el precio del bróker de antemano y realizará las órdenes al precio del bróker.", @@ -1173,7 +1171,6 @@ "1289146554": "British Virgin Islands Financial Services Commission", "1289646209": "Llamada de margen", "1290525720": "Ejemplo: ", - "1291887623": "Frecuencia de trading con opciones digitales", "1291997417": "Los contratos vencerán exactamente a las 23:59:59 GMT de la fecha de vencimiento seleccionada.", "1292188546": "Restablecer la contraseña de inversor de Deriv MT5", "1292891860": "Notificar a Telegram", @@ -1257,7 +1254,6 @@ "1367023655": "Para garantizar que su pérdida no exceda su inversión, su contrato se cerrará automáticamente cuando su pérdida sea igual a <0/>.", "1367488817": "4. Restablecer las condiciones del contrato", "1367990698": "Índice de volatilidad 10", - "1369709538": "Nuestros Términos de uso", "1370647009": "Disfrute de límites diarios más altos", "1371193412": "Cancelar", "1371555192": "Elija su agente de pago preferido e introduzca el importe del retiro. Si su agente de pagos no aparece en la lista, <0>búsquelo con su número de cuenta.", @@ -1297,6 +1293,7 @@ "1413047745": "Asigna un valor dado a una variable", "1413359359": "Realizar nueva transferencia", "1414205271": "primo", + "1414918420": "We'll review your proof of identity again and will give you an update as soon as possible.", "1415006332": "obtener sublista desde el primero", "1415513655": "Descargue cTrader en su teléfono para operar con la cuenta Deriv cTrader", "1415974522": "Si selecciona \"Diferentes\", ganará el pago si el último dígito del último tick no coincide con su predicción.", @@ -1419,7 +1416,6 @@ "1542742708": "Sintéticos, Forex, Acciones, Índices bursátiles, Materias primas y Criptomonedas", "1544642951": "Si selecciona \"Solo Abajo\", usted gana el pago si los ticks consecutivos suben sucesivamente después del precio de entrada. No se gana el pago si algún tick cae o es igual a cualquiera de los ticks anteriores.", "1547148381": "El archivo es demasiado grande (solo se permiten hasta 8MB). Suba otro archivo.", - "1548765374": "Verificación del número de documento fallida", "1549098835": "Retiros totales", "1551172020": "Cesta de AUD", "1552162519": "Ver incorporación", @@ -1647,6 +1643,7 @@ "1790770969": "FX-mayores (lotes estándar / micro), FX-menores, Materias primas, Criptomonedas", "1791432284": "Buscar por país", "1791971912": "Reciente", + "1792037169": "To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your {{document_name}}.", "1793913365": "Para depositar dinero, cambie a su cuenta de {{currency_symbol}}.", "1794815502": "Descargar su historial de transacciones.", "1796787905": "Cargue los siguientes documentos.", @@ -1792,7 +1789,6 @@ "1924765698": "Lugar de nacimiento*", "1926987784": "- iOS: Deslice el dedo hacia la izquierda sobre la cuenta y pulse <0>Eliminar.", "1928930389": "GBP/NOK", - "1929309951": "Situación laboral", "1929694162": "Comparar cuentas", "1930899934": "Tether", "1931659123": "Corre en cada tick", @@ -1966,12 +1962,12 @@ "2115223095": "Pérdida", "2117165122": "1. Cree un bot de Telegram y obtenga su token API de Telegram. Lea más sobre cómo crear bots en Telegram aquí: https://core.telegram.org/bots#6-botfather", "2117489390": "Actualización automática en {{ remaining }} segundos", - "2118315870": "¿Dónde vive?", "2119449126": "Un posible resultado del siguiente ejemplo será:", "2119710534": "Preguntas Frecuentes", "2121227568": "NEO/USD", "2122152120": "Activos", "2127564856": "Los retiros están bloqueados", + "2129807378": "Update profile", "2131963005": "Retire sus fondos de las siguientes cuentas de Deriv MT5:", "2133451414": "Duración", "2133470627": "Este bloque devuelve el pago potencial para el tipo de operación seleccionada. Este bloque solo se puede utilizar en el bloque raíz \"Condiciones de compra\".", @@ -1992,8 +1988,6 @@ "2146698770": "Consejo profesional: también puedes hacer clic en el bloque deseado y arrastrarlo hacia afuera", "2146892766": "Experiencia en trading con opciones binarias", "2147244655": "¿Cómo puedo importar mi propio bot de trading en Deriv Bot?", - "-1232613003": "<0>Verificación fallida. <1>¿Por qué?", - "-2029508615": "<0>Necesita verificación. <1>Verificar ahora", "-931052769": "Enviar verificación", "-1004605898": "Consejos", "-1938142055": "Documentos subidos", @@ -2141,18 +2135,9 @@ "-179726573": "Hemos recibido su prueba de titularidad.", "-813779897": "Se ha superado la verificación de la prueba de titularidad.", "-638756912": "Oculte los dígitos del 7 al 12 del número de la tarjeta que aparece en la parte frontal de su tarjeta de débito/crédito.", - "-2073934245": "Los servicios del trading financiero ofrecidos en este sitio solo son adecuados para clientes que aceptan la posibilidad de perder todo el dinero que invierten y que entienden y tienen experiencia del riesgo involucrado en la compra de contratos financieros. Las transacciones en contratos financieros conllevan un alto grado de riesgo. Si los contratos que compró expiran sin valor, perderá toda su inversión, que incluye la prima del contrato.", - "-1166068675": "Su cuenta se abrirá con {{legal_entity_name}}, regulada por la Comisión de Juego del Reino Unido (UKGC), y estará sujeta a las leyes de la Isla de Man.", - "-975118358": "Su cuenta se abrirá con {{legal_entity_name}}, regulada por la Autoridad de Servicios Financieros de Malta, y estará sujeta a las leyes de Malta.", - "-680528873": "Se abrirá tu cuenta con {{legal_entity_name}} y estará sujeta a la jurisdicción y a las leyes de Samoa.", - "-1125193491": "Añadir cuenta", - "-2068229627": "No soy una PEP, y no he sido una PEP en los últimos 12 meses.", "-684271315": "OK", "-740157281": "Evaluación de la experiencia de trading", "-1720468017": "Al proporcionarle nuestros servicios, debemos obtener información sobre usted para evaluar si un producto o servicio determinado es apropiado para usted.", - "-186841084": "Cambie su correo de inicio de sesión", - "-907403572": "Para cambiar su dirección de correo electrónico, primero tendrá que desvincular su dirección de correo electrónico de su cuenta {{identifier_title}}.", - "-1850792730": "Desvincular de {{identifier_title}}", "-307865807": "Advertencia de tolerancia al riesgo", "-690100729": "Sí, entiendo el riesgo.", "-2010628430": "Los CFD y otros instrumentos financieros conllevan un alto riesgo de perder dinero rápidamente debido al apalancamiento. Debe considerar si comprende cómo funcionan los CFD y otros instrumentos financieros y si puede darse el lujo de correr el elevado riesgo de perder su dinero.<0/><0/> Para continuar, debe confirmar que comprende que su capital está en riesgo.", @@ -2206,11 +2191,6 @@ "-1725454783": "Fallado", "-506510414": "Fecha y hora", "-1708927037": "Dirección IP", - "-619126443": "Utilice su <0>contraseña Deriv para iniciar sesión en {{brand_website_name}} y {{platform_name_trader}}.", - "-623760979": "Utilice la <0>contraseña Deriv para acceder a {{brand_website_name}}, {{platform_name_trader}} y {{platform_name_go}}.", - "-459147994": "Utilice la <0>contraseña Deriv para acceder a {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} y {{platform_name_ctrader}}.", - "-80717068": "Aplicaciones que ha vinculado a su <0>contraseña de Deriv:", - "-9570380": "Use la contraseña {{platform_name_dxtrade}} para iniciar sesión en sus cuentas {{platform_name_dxtrade}} en la web y en aplicaciones móviles.", "-2131200819": "Desactivar", "-200487676": "Activar", "-1840392236": "Ese no es el código correcto. Inténtelo de nuevo.", @@ -2240,44 +2220,37 @@ "-378415317": "Se requiere el estado", "-1497654315": "Nuestras cuentas y servicios no están disponibles para el código postal de Jersey.", "-755626951": "Complete sus datos personales", - "-584911871": "Seleccionar la moneda de la billetera", "-1461267236": "Por favor elija su moneda", - "-1352330125": "MONEDA", "-1027595143": "Menos de 25.000 $", "-40491332": "25.000 $ - 50.000 $", "-1139806939": "50.001 $ - 100.000 $", - "-626752657": "0-1 año", - "-532014689": "1-2 años", - "-1001024004": "Más de 3 años", - "-790513277": "6-10 transacciones en los úlitmos 12 meses", - "-580085300": "11-39 transacciones en los úlitmos 12 meses", - "-654781670": "Primario", - "-1717373258": "Secundario", "-996132458": "Construcción", "-915003867": "Salud", "-1430012453": "Tecnología de la Información y Comunicaciones", "-987824916": "Ciencia e Ingeniería", "-146630682": "Social y Cultural", "-761306973": "Producción", - "-739367071": "Empleado", - "-1156937070": "500.001 $ - 1.000.000 $", - "-315534569": "Más de 1.000.000 $", - "-2068544539": "Empleado asalariado", - "-531314998": "Inversiones y dividendos", - "-1235114522": "Pensión", - "-1298056749": "Beneficios de Estado", - "-449943381": "Ahorros y herencias", "-1631552645": "Profesionales", "-474864470": "Trabajadores de cuidado personal, ventas y servicios", "-1129355784": "Trabajadores agrícolas, forestales y pesqueros", "-1242914994": "Trabajadores de artesanía, industria metalúrgica, eléctrica y electrónica", "-1317824715": "Personal de limpieza y asistentes", "-1592729751": "Trabajadores de la minería, construcción, manufactura y transporte", + "-1030759620": "Funcionarios de gobierno", "-2137323480": "Propiedad de la empresa", "-1590574533": "Acuerdo de divorcio", "-1667683002": "Herencia", "-1237843731": "Ingreso de inversión", "-777506574": "Venta de propiedad", + "-654781670": "Primario", + "-1717373258": "Secundario", + "-1156937070": "500.001 $ - 1.000.000 $", + "-315534569": "Más de 1.000.000 $", + "-2068544539": "Empleado asalariado", + "-531314998": "Inversiones y dividendos", + "-1235114522": "Pensión", + "-1298056749": "Beneficios de Estado", + "-449943381": "Ahorros y herencias", "-1161338910": "Se requiere el nombre.", "-1161818065": "El apellido debe tener entre 2 y 50 caracteres.", "-1281693513": "Se requiere fecha de nacimiento.", @@ -2287,28 +2260,14 @@ "-212167954": "El número de identificación fiscal no tiene el formato correcto.", "-621555159": "Información de identidad", "-204765990": "Términos de uso", - "-231863107": "No", - "-870902742": "¿Cuántos conocimientos y experiencia tiene en relación al trading en línea?", - "-1929477717": "Tengo un título académico, una certificación profesional y/o experiencia laboral relacionada con los servicios financieros.", - "-1540148863": "He asistido a seminarios, capacitaciones y/o talleres relacionados con el trading.", - "-922751756": "Menos de un año", - "-542986255": "Ninguna", - "-1337206552": "En su opinión, el trading con CFD le permite", - "-456863190": "Coloque una posición sobre el movimiento del precio de un activo en la que el resultado sea una rentabilidad fija o nada en absoluto.", - "-1314683258": "Realizar una inversión a largo plazo para obtener beneficios garantizados.", - "-1546090184": "¿Cómo afecta el apalancamiento al trading con CFD?", - "-1636427115": "El apalancamiento le ayuda a mitigar el riesgo.", - "-800221491": "El apalancamiento garantiza las ganancias.", - "-811839563": "El apalancamiento le permite abrir posiciones grandes por una fracción del valor de la operación, lo que puede resultar en un aumento de las ganancias o pérdidas.", - "-1185193552": "Cerrar su operación automáticamente cuando la pérdida sea igual o superior a una cantidad específica, siempre que haya una liquidez de mercado adecuada.", - "-1046354": "Cerrar su operación automáticamente cuando el beneficio sea igual o superior a una cantidad específica, siempre que haya una liquidez de mercado adecuada.", - "-1842858448": "Obtener un beneficio garantizado en su operación.", - "-860053164": "Al operar con multiplicadores.", - "-1250327770": "Al comprar acciones de una empresa.", - "-1222388581": "Todas las anteriores.", "-477761028": "ID de votante", "-1466346630": "CPF", - "-1030759620": "Funcionarios de gobierno", + "-739367071": "Empleado", + "-626752657": "0-1 año", + "-532014689": "1-2 años", + "-1001024004": "Más de 3 años", + "-790513277": "6-10 transacciones en los úlitmos 12 meses", + "-580085300": "11-39 transacciones en los úlitmos 12 meses", "-612752984": "Estos son límites predeterminados que aplicamos a sus cuentas.", "-1598263601": "Para obtener más información sobre los límites comerciales y cómo se aplican, visite el <0>Centro de ayuda.", "-1411635770": "Aprenda más sobre los límites de cuenta", @@ -2326,10 +2285,7 @@ "-1500958859": "Verificar", "-1502578110": "Su cuenta está totalmente autenticada y su límite de retiro ha sido aumentado.", "-1662154767": "una factura reciente de servicios públicos (por ejemplo, electricidad, agua, gas, teléfono fijo o internet), extracto bancario o carta emitida por el gobierno con su nombre y esta dirección.", - "-190838815": "Necesitamos esto para la verificación. Si la información que proporciona es falsa o inexacta, no podrá depositar ni retirar.", - "-223216785": "Segunda línea de dirección*", "-594456225": "Segunda línea de dirección", - "-1940457555": "Código postal*", "-1964954030": "Código postal", "-516397235": "Tenga cuidado de con quién comparte este token. Cualquier persona con este token puede realizar las siguientes acciones en nombre de su cuenta", "-989216986": "Añadir cuentas", @@ -2371,8 +2327,6 @@ "-1100235269": "Sector laboral", "-684388823": "Valor neto estimado", "-509054266": "Volumen de negocios anual anticipado", - "-601903492": "Experiencia en operación con Forex", - "-1012699451": "Experiencia de operación con CFD", "-1588485629": "Ejemplo", "-1117345066": "Elija el tipo de documento", "-651192353": "Ejemplo:", @@ -2393,18 +2347,21 @@ "-1944264183": "Para continuar operando, también debe presentar una prueba de identidad.", "-1088324715": "Revisaremos sus documentos y le avisaremos de su estado en un plazo de 1 a 3 días laborables.", "-329713179": "Ok", - "-1176889260": "Seleccione un tipo de documento.", - "-1926456107": "La identificación que envió caducó.", - "-555047589": "Parece que su documento de identidad ha caducado. Vuelva a intentarlo con un documento válido.", - "-841187054": "Intentar de nuevo", + "-895884696": "The <0>name and <0>date of birth on your identity document don't match your profile.", + "-1792723131": "To avoid delays, enter your <0>date of birth exactly as it appears on your {{document_name}}.", + "-886317740": "The <0>date of birth on your identity document doesn't match your profile.", + "-1813671961": "Your identity verification failed because:", "-2097808873": "No pudimos verificar su identidad con los detalles que proporcionó. ", - "-228284848": "No pudimos verificar su identidad con los detalles que proporcionó.", + "-1652371224": "Your profile is updated", + "-504784172": "Your document has been submitted", "-1391934478": "Su identidad está verificada. También deberá presentar una prueba de su domicilio.", "-118547687": "Verificación de identidad aprobada", "-200989771": "Ir a detalles personales", "-1358357943": "Verifique y actualice su código postal antes de enviar una prueba de identidad.", "-1401994581": "Faltan sus datos personales", "-2004327866": "Seleccione un país válido de emisión del documento.", + "-1627868670": "Your identity document has expired.", + "-1606307809": "We were unable to verify the identity document with the details provided.", "-1664159494": "País", "-749870311": "Contáctenos a través del <0>chat en vivo.", "-1084991359": "No se requiere verificación de la prueba de identidad", @@ -2464,21 +2421,54 @@ "-142444667": "Haga clic en el enlace del correo electrónico para cambiar su contraseña Deriv MT5.", "-742748008": "Compruebe su correo electrónico y haga clic en el enlace del mismo para continuar.", "-84068414": "¿Todavía no ha recibido el correo electrónico? Contáctenos a través del <0>chat en vivo.", + "-975118358": "Su cuenta se abrirá con {{legal_entity_name}}, regulada por la Autoridad de Servicios Financieros de Malta, y estará sujeta a las leyes de Malta.", + "-2073934245": "Los servicios del trading financiero ofrecidos en este sitio solo son adecuados para clientes que aceptan la posibilidad de perder todo el dinero que invierten y que entienden y tienen experiencia del riesgo involucrado en la compra de contratos financieros. Las transacciones en contratos financieros conllevan un alto grado de riesgo. Si los contratos que compró expiran sin valor, perderá toda su inversión, que incluye la prima del contrato.", + "-1125193491": "Añadir cuenta", + "-2068229627": "No soy una PEP, y no he sido una PEP en los últimos 12 meses.", + "-186841084": "Cambie su correo de inicio de sesión", + "-907403572": "Para cambiar su dirección de correo electrónico, primero tendrá que desvincular su dirección de correo electrónico de su cuenta {{identifier_title}}.", + "-1850792730": "Desvincular de {{identifier_title}}", "-428335668": "Deberá establecer una contraseña para completar el proceso.", + "-1232613003": "<0>Verificación fallida. <1>¿Por qué?", + "-2029508615": "<0>Necesita verificación. <1>Verificar ahora", "-818898181": "El nombre en el documento no coincide con su perfil Deriv.", "-310316375": "La dirección del documento no coincide con la dirección que introdujo anteriormente.", "-485368404": "Documento expedido hace más de 6 meses.", "-367016488": "Documento borroso. Toda la información debe ser clara y visible.", "-1957076143": "Documento recortado. Toda la información debe ser clara y visible.", + "-1576856758": "An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.", + "-231863107": "No", + "-870902742": "¿Cuántos conocimientos y experiencia tiene en relación al trading en línea?", + "-1929477717": "Tengo un título académico, una certificación profesional y/o experiencia laboral relacionada con los servicios financieros.", + "-1540148863": "He asistido a seminarios, capacitaciones y/o talleres relacionados con el trading.", + "-922751756": "Menos de un año", + "-542986255": "Ninguna", + "-1337206552": "En su opinión, el trading con CFD le permite", + "-456863190": "Coloque una posición sobre el movimiento del precio de un activo en la que el resultado sea una rentabilidad fija o nada en absoluto.", + "-1314683258": "Realizar una inversión a largo plazo para obtener beneficios garantizados.", + "-1546090184": "¿Cómo afecta el apalancamiento al trading con CFD?", + "-1636427115": "El apalancamiento le ayuda a mitigar el riesgo.", + "-800221491": "El apalancamiento garantiza las ganancias.", + "-811839563": "El apalancamiento le permite abrir posiciones grandes por una fracción del valor de la operación, lo que puede resultar en un aumento de las ganancias o pérdidas.", + "-1185193552": "Cerrar su operación automáticamente cuando la pérdida sea igual o superior a una cantidad específica, siempre que haya una liquidez de mercado adecuada.", + "-1046354": "Cerrar su operación automáticamente cuando el beneficio sea igual o superior a una cantidad específica, siempre que haya una liquidez de mercado adecuada.", + "-1842858448": "Obtener un beneficio garantizado en su operación.", + "-860053164": "Al operar con multiplicadores.", + "-1250327770": "Al comprar acciones de una empresa.", + "-1222388581": "Todas las anteriores.", "-1515286538": "Ingrese su número de documento. ", "-1694758788": "Ingrese su número de documento", "-1458676679": "Debería ingresar de 2 a 50 caracteres.", + "-1176889260": "Seleccione un tipo de documento.", + "-1265050949": "identity document", "-2139303636": "Es posible que haya seguido un enlace roto o que la página se haya movido a una nueva dirección.", "-1448368765": "Código del error: {{error_code}} página no encontrada", "-254792921": "Por ahora solo puede hacer depósitos. Para permitir los retiros, complete su evaluación financiera.", "-1437017790": "Información financiera", "-70342544": "Estamos legalmente obligados a solicitar su información financiera.", "-39038029": "Experiencia de operación", + "-601903492": "Experiencia en operación con Forex", + "-1012699451": "Experiencia de operación con CFD", "-1894668798": "Experiencia en otros instrumentos comerciales", "-1026468600": "Frecuencia de otros instrumentos comerciales", "-1743024217": "Seleccionar idioma", @@ -2489,6 +2479,11 @@ "-536187647": "¿Confirmar la suspención de acceso?", "-1357606534": "Permiso", "-570222048": "Revocar el acceso", + "-80717068": "Aplicaciones que ha vinculado a su <0>contraseña de Deriv:", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "Utilice su <0>contraseña Deriv para iniciar sesión en {{brand_website_name}} y {{platform_name_trader}}.", + "-623760979": "Utilice la <0>contraseña Deriv para acceder a {{brand_website_name}}, {{platform_name_trader}} y {{platform_name_go}}.", + "-459147994": "Utilice la <0>contraseña Deriv para acceder a {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} y {{platform_name_ctrader}}.", "-1526404112": "Factura de servicios públicos: factura de electricidad, agua, gas o teléfono fijo.", "-537552700": "Contrato de alquiler de vivienda: contrato válido y vigente.", "-890084320": "Guardar y enviar", @@ -2859,6 +2854,30 @@ "-1016171176": "Activo", "-621128676": "Tipo de operación", "-447853970": "Umbral de pérdida", + "-155173714": "¡Construyamos un bot!", + "-1919212468": "3. También puede buscar los bloques que desee utilizando la barra de búsqueda situada encima de las categorías.", + "-1520558271": "Para más información, revise este artículo del blog sobre los fundamentos de la construcción de un bot de trading.", + "-980360663": "3. Elija el bloque que desee y arrástrelo al espacio de trabajo.", + "-1493168314": "¿Qué es una estrategia rápida?", + "-1680391945": "Usar una estrategia rápida", + "-1177914473": "¿Cómo puedo guardar mi estrategia?", + "-271986909": "En Bot Builder, haga clic en Guardar en la barra de herramientas de la parte superior para descargar su bot. Dele un nombre a su bot y elija descargarlo en su dispositivo o en Google Drive. El bot se descargará como un archivo XML.", + "-1149045595": "1. Tras pulsar Importar, seleccione Local y haga clic en Continuar.", + "-288041546": "2. Seleccione su archivo XML y pulse Abrir.", + "-2127548288": "3. Su bot se cargará consecuentemente.", + "-1311297611": "1. Después de pulsar Importar, seleccione Google Drive y haga clic en Continuar.", + "-1549564044": "¿Cómo reinicio el espacio de trabajo?", + "-1127331928": "En Bot Builder, pulse Reiniciar en la parte superior de la barra de herramientas. Esto despejará el espacio de trabajo. Tenga en cuenta que los cambios que no se hayan guardado se perderán.", + "-1720444288": "¿Cómo controlo mis pérdidas con Deriv Bot?", + "-1142295124": "Hay varias formas de controlar sus pérdidas con Deriv Bot. He aquí un ejemplo sencillo de cómo puede implementar el control de pérdidas en su estrategia:", + "-986689483": "1. Cree las siguientes variables:", + "-269910127": "3. Actualice la ganancia/pérdida actual con la ganancia del último contrato. Si se perdió el último contrato, el valor de la ganancia/pérdida actual será negativo.", + "-1565344891": "¿Puedo ejecutar Deriv Bot en varias pestañas de mi navegador web?", + "-90192474": "Sí, puede. Sin embargo, su cuenta tiene límites, como el número máximo de posiciones abiertas y los pagos totales máximos de las posiciones abiertas. Por lo tanto, tenga en cuenta estos límites al abrir varias posiciones. Puede encontrar más información sobre estos límites en Ajustes > Límites de cuenta.", + "-213872712": "No, no ofrecemos criptomonedas en Deriv Bot.", + "-2147346223": "¿En qué países está disponible Deriv Bot?", + "-352345777": "¿Cuáles son las estrategias más populares para las operaciones automatizadas?", + "-552392096": "Tres de las estrategias más utilizadas en el trading automatizado son Martingale, D'Alembert y Oscar's Grind - puede encontrarlas todas listas y esperándole en Deriv Bot.", "-507620484": "No guardado", "-764102808": "Google Drive", "-555886064": "Ganado", @@ -2937,30 +2956,6 @@ "-1823621139": "Estrategia rápida", "-1778025545": "Ha importado correctamente un bot.", "-1519425996": "No se han encontrado resultados \"{{ faq_search_value }}\"", - "-155173714": "¡Construyamos un bot!", - "-1919212468": "3. También puede buscar los bloques que desee utilizando la barra de búsqueda situada encima de las categorías.", - "-1520558271": "Para más información, revise este artículo del blog sobre los fundamentos de la construcción de un bot de trading.", - "-980360663": "3. Elija el bloque que desee y arrástrelo al espacio de trabajo.", - "-1493168314": "¿Qué es una estrategia rápida?", - "-1680391945": "Usar una estrategia rápida", - "-1177914473": "¿Cómo puedo guardar mi estrategia?", - "-271986909": "En Bot Builder, haga clic en Guardar en la barra de herramientas de la parte superior para descargar su bot. Dele un nombre a su bot y elija descargarlo en su dispositivo o en Google Drive. El bot se descargará como un archivo XML.", - "-1149045595": "1. Tras pulsar Importar, seleccione Local y haga clic en Continuar.", - "-288041546": "2. Seleccione su archivo XML y pulse Abrir.", - "-2127548288": "3. Su bot se cargará consecuentemente.", - "-1311297611": "1. Después de pulsar Importar, seleccione Google Drive y haga clic en Continuar.", - "-1549564044": "¿Cómo reinicio el espacio de trabajo?", - "-1127331928": "En Bot Builder, pulse Reiniciar en la parte superior de la barra de herramientas. Esto despejará el espacio de trabajo. Tenga en cuenta que los cambios que no se hayan guardado se perderán.", - "-1720444288": "¿Cómo controlo mis pérdidas con Deriv Bot?", - "-1142295124": "Hay varias formas de controlar sus pérdidas con Deriv Bot. He aquí un ejemplo sencillo de cómo puede implementar el control de pérdidas en su estrategia:", - "-986689483": "1. Cree las siguientes variables:", - "-269910127": "3. Actualice la ganancia/pérdida actual con la ganancia del último contrato. Si se perdió el último contrato, el valor de la ganancia/pérdida actual será negativo.", - "-1565344891": "¿Puedo ejecutar Deriv Bot en varias pestañas de mi navegador web?", - "-90192474": "Sí, puede. Sin embargo, su cuenta tiene límites, como el número máximo de posiciones abiertas y los pagos totales máximos de las posiciones abiertas. Por lo tanto, tenga en cuenta estos límites al abrir varias posiciones. Puede encontrar más información sobre estos límites en Ajustes > Límites de cuenta.", - "-213872712": "No, no ofrecemos criptomonedas en Deriv Bot.", - "-2147346223": "¿En qué países está disponible Deriv Bot?", - "-352345777": "¿Cuáles son las estrategias más populares para las operaciones automatizadas?", - "-552392096": "Tres de las estrategias más utilizadas en el trading automatizado son Martingale, D'Alembert y Oscar's Grind - puede encontrarlas todas listas y esperándole en Deriv Bot.", "-418247251": "Descargar su diario.", "-2123571162": "Descargar", "-870004399": "<0>Comprado: {{longcode}} (ID: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "Pantalla completa", "-1823504435": "Ver notificaciones", "-1954045170": "Ninguna moneda seleccionada", - "-583559763": "Menú", "-1591792668": "Límites de la cuenta", "-34495732": "Información reglamentaria", "-1496158755": "Ir a Deriv.com", @@ -3259,6 +3253,7 @@ "-818926350": "La Comisión Financiera acepta apelaciones durante los 45 días posteriores a la fecha del incidente y solo después de que el trader haya tratado de resolver el problema directamente con la empresa.", "-1825471709": "Una experiencia de operaciones completamente nueva en una plataforma potente pero fácil de usar.", "-981017278": "Operaciones automatizadas a tu alcance. No se necesita conocimiento de codificación.", + "-583559763": "Menú", "-778309978": "El enlace que ha pulsado ha expirado. Asegúrese de hacer clic en el enlace del último correo electrónico que haya recibido. Como alternativa, introduzca su correo electrónico a continuación y haga clic en <0>Reenviar correo electrónico para obtener un nuevo enlace.", "-336222114": "Siga estos sencillos pasos para solucionarlo:", "-1064116456": "Busque el bróker <0>Deriv Holdings (Guernsey) Limited y selecciónelo.", @@ -3415,22 +3410,6 @@ "-1282933308": "No {{barrier}}", "-968190634": "Iguales a {{barrier}}", "-1747377543": "Debajo de {{barrier}}", - "-256210543": "No se puede operar en este momento.", - "-1150099396": "Estamos trabajando para tenerlo disponible pronto. Si tiene otra cuenta, cambie a esa cuenta para continuar operando. Puede agregar una Financiera Deriv MT5.", - "-28115241": "{{platform_name_trader}} no está disponible para esta cuenta", - "-453920758": "Ir al panel de control de {{platform_name_mt5}}", - "-402175529": "Historial", - "-902712434": "Cancelación del contrato", - "-988484646": "Cancelación del contrato (ejecutado)", - "-444882676": "Cancelación del contrato (activo)", - "-13423018": "ID de Referencia", - "-2035315547": "Barrera inferior", - "-1551639437": "Sin historial", - "-1214703885": "Aún tiene que actualizar el take profit o el stop loss", - "-504849554": "Se volverá a abrir a las", - "-59803288": "Mientras tanto, pruebe nuestros índices sintéticos que simulan la volatilidad del mercado real y están abiertos las 24 horas del día, los 7 días de la semana.", - "-1278109940": "Ver mercados abiertos", - "-694105443": "Este mercado está cerrado", "-1043795232": "Posiciones recientes", "-1511825574": "Ganancia/Pérdida:", "-726626679": "Ganancia/pérdida potencial:", @@ -3455,21 +3434,15 @@ "-1435392215": "Acerca de la cancelación del contrato", "-2017825013": "Entendido", "-1192773792": "No volver a mostrar esto", + "-902712434": "Cancelación del contrato", "-1280319153": "Cancela sus operaciones en cualquier momento dentro de un período de tiempo dado. Se ejecuta automáticamente si su operación alcanza el nivel de stop out durante un período determinado.", "-471757681": "Gestión de riesgos", "-843831637": "Stop loss", "-771725194": "Cancelación del contrato", "-338707425": "La duración mínima es de 1 día", "-1003473648": "Duración: {{duration}} día", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "El pago al vencimiento es igual al pago por punto multiplicado por la diferencia entre el precio final y el precio de ejercicio.", "-1527492178": "Compra bloqueada", "-725375562": "Puede bloquear / desbloquear el botón de compra desde el menú Configuración", - "-774638412": "La apuesta debe estar entre {{min_stake}} {{currency}} y {{max_stake}} {{currency}}", - "-1358367903": "Inversión", - "-434270664": "Precio actual", - "-1956787775": "Precio de Barrera:", - "-1513281069": "Barrera 2", "-390994177": "Debe estar entre {{min}} y {{max}}", "-1804019534": "Expiración: {{date}}", "-2055106024": "Alternar entre la configuración de duración avanzada y simple", @@ -3484,6 +3457,7 @@ "-1763848396": "Put", "-194424366": "por encima", "-857660728": "Precio de ejecución", + "-1358367903": "Inversión", "-1386326276": "La barrera es un campo obligatorio.", "-1418742026": "La barrera superior debe ser superior a la barrera inferior.", "-92007689": "La barrera inferior debe ser inferior a la barrera superior.", @@ -3491,6 +3465,21 @@ "-1975910372": "Los minutos deben ser entre 0 y 59.", "-866277689": "La hora de expiración no puede estar en el pasado.", "-1455298001": "Ahora", + "-256210543": "No se puede operar en este momento.", + "-1150099396": "Estamos trabajando para tenerlo disponible pronto. Si tiene otra cuenta, cambie a esa cuenta para continuar operando. Puede agregar una Financiera Deriv MT5.", + "-28115241": "{{platform_name_trader}} no está disponible para esta cuenta", + "-453920758": "Ir al panel de control de {{platform_name_mt5}}", + "-402175529": "Historial", + "-988484646": "Cancelación del contrato (ejecutado)", + "-444882676": "Cancelación del contrato (activo)", + "-13423018": "ID de Referencia", + "-2035315547": "Barrera inferior", + "-1551639437": "Sin historial", + "-1214703885": "Aún tiene que actualizar el take profit o el stop loss", + "-504849554": "Se volverá a abrir a las", + "-59803288": "Mientras tanto, pruebe nuestros índices sintéticos que simulan la volatilidad del mercado real y están abiertos las 24 horas del día, los 7 días de la semana.", + "-1278109940": "Ver mercados abiertos", + "-694105443": "Este mercado está cerrado", "-439389714": "Estamos trabajando en ello", "-770929448": "Ir a {{platform_name_smarttrader}}", "-347156282": "Enviar prueba", @@ -3537,6 +3526,8 @@ "-454245976": "Si cree que el precio de mercado caerá continuamente durante un período específico, elija <0>Short. Recibirás un pago en el momento de vencimiento si el precio de mercado no toca o cruza la barrera. Su pago aumentará proporcionalmente a la distancia entre el precio de mercado y la barrera si no se supera la barrera. Comenzará a obtener ganancias cuando el pago sea superior a su inversión. Si el precio de mercado alguna vez cruza la barrera, no habrá ningún pago.", "-351875097": "Número de ticks", "-729830082": "Ver menos", + "-1669741470": "El pago al vencimiento es igual al pago por punto multiplicado por la diferencia entre el precio final y el precio de ejercicio.", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "NUEVO!", "-993480898": "Acumuladores", "-45873457": "NUEVO", @@ -3557,6 +3548,10 @@ "-690963898": "Su contrato se cerrará automáticamente cuando su pago alcance esta cantidad.", "-511541916": "Su contrato se cerrará automáticamente al alcanzar este número de ticks.", "-438655760": "<0>Nota: Puede cerrar su operación en cualquier momento. Sea consciente del riesgo de deslizamiento.", + "-774638412": "La apuesta debe estar entre {{min_stake}} {{currency}} y {{max_stake}} {{currency}}", + "-434270664": "Precio actual", + "-1956787775": "Precio de Barrera:", + "-1513281069": "Barrera 2", "-1683683754": "Larga", "-1046859144": "<0>{{title}} Recibirá un pago si el precio de mercado se mantiene en {{price_position}} y no toca ni cruza la barrera. De lo contrario, el pago será cero.", "-1815023694": "encima de la barrera", diff --git a/packages/translations/src/translations/fr.json b/packages/translations/src/translations/fr.json index a6e0b0030d85..1e905592b079 100644 --- a/packages/translations/src/translations/fr.json +++ b/packages/translations/src/translations/fr.json @@ -24,7 +24,6 @@ "27731356": "Votre compte est temporairement désactivé. Veuillez nous contacter via <0>le chat en direct pour réactiver les dépôts et les retraits.", "27830635": "Deriv (V) Ltd", "28581045": "Ajouter un compte réel MT5", - "30801950": "Votre compte sera ouvert auprès de {{legal_entity_name}}, réglementé par la Malta Gaming Authority, et sera soumis aux lois de Malte.", "33433576": "Veuillez utiliser un portefeuille électronique pour retirer vos fonds.", "35089987": "Téléchargez le recto et le verso de votre permis de conduire.", "41737927": "Merci", @@ -251,7 +250,6 @@ "284772879": "Contrat", "284809500": "Démo financière", "287934290": "Êtes-vous certain de vouloir annuler cette transaction ?", - "289898640": "CONDITIONS D'UTILISATION", "291744889": "<0>1. Paramètres de trading : <0>", "291817757": "Visitez notre communauté Deriv et découvrez les API, les jetons d'API, les façons d'utiliser les API Deriv, et bien plus encore.", "292491635": "Si vous sélectionnez «Stop loss» et spécifiez un montant pour limiter votre perte, votre position sera clôturée automatiquement lorsque votre perte est supérieure ou égale à ce montant. Votre perte peut être supérieure au montant que vous avez entré en fonction du prix du marché à la clôture.", @@ -372,6 +370,7 @@ "427134581": "Essayez d'utiliser un autre type de fichier.", "427617266": "Bitcoin", "428709688": "Votre intervalle de temps préféré entre chaque rapport:", + "429970999": "To avoid delays, enter your <0>name exactly as it appears on your {{document_name}}.", "431267979": "Voici un guide rapide sur comment utiliser Deriv Bot lorsque vous êtes en déplacement.", "432273174": "1:100", "432508385": "Take Profit: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. Exécuter une fois au démarrage", "520136698": "Indice Boom 500", "521872670": "élément", - "522283618": "Expérience de trading d’options numériques", "522703281": "divisible par", "523123321": "- 10 à la puissance d'un nombre donné", "524459540": "Comment créer des variables ?", @@ -562,7 +560,6 @@ "642546661": "Télécharger le dos du permis de conduire depuis votre ordinateur", "642995056": "Email", "644150241": "Le nombre de contrats que vous avez gagnés depuis la dernière fois que vous avez effacé vos statistiques.", - "645016681": "Fréquence de négociation d'autres instruments financiers", "645902266": "EUR/NZD", "647039329": "Justificatif d'adresse requis", "647745382": "Liste d'entrée {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "Prix au comptant sur le tick précédent.", "812775047": "en dessous de la barrière", "814827314": "Le niveau de stop-out sur le graphique indique le prix auquel votre perte potentielle est égale à la totalité de votre mise. Lorsque le prix du marché atteint ce niveau, votre position est automatiquement clôturée. Vous vous assurez ainsi que votre perte ne dépasse pas le montant que vous avez payé pour acheter le contrat.", + "814936420": "{{ banner_message }}", "815925952": "Ce bloc est obligatoire. Une seule copie de ce bloc est autorisée. Il est ajouté au canevas par défaut lorsque vous ouvrez Deriv Bot.", "816580787": "Bienvenue ! Vos messages ont été restaurés.", "816738009": "<0/><1/>Vous pouvez également soumettre votre litige non résolu au <2>Bureau de l’arbitre des services financiers.", @@ -747,7 +745,6 @@ "836097457": "Je suis intéressé par le trading mais j'ai très peu d'expérience.", "837063385": "N'envoyez pas d'autres devises à cette adresse.", "837066896": "Votre document est en cours de revue, merci de vérifier de nouveau dans 1 à 3 jours.", - "839618971": "ADRESSE", "839805709": "Pour vérifier votre compte, nous avons besoin d'une meilleure photo", "840672750": "Si cela ne fonctionne pas, désinstallez et réinstallez l'application MT5. Recommencez ensuite les étapes <0>2 et <0>3.", "841434703": "Désactiver la pile", @@ -824,7 +821,7 @@ "920125517": "Ajouter un compte démo", "921901739": "- les coordonnées du compte bancaire lié à votre compte", "922313275": "Vous êtes de nouveau en ligne", - "924046954": "Téléchargez un document indiquant votre nom et votre numéro de compte bancaire ou les détails de votre compte.", + "924046954": "Partagez un document où figurent votre nom et votre numéro de compte bancaire ou les coordonnées de votre compte.", "926813068": "Fixe/Variable", "929608744": "Vous ne pouvez pas effectuer de retraits", "930346117": "La capitalisation n'aide pas beaucoup", @@ -852,7 +849,7 @@ "947758334": "Ville/Village est requis", "947914894": "Recharger  <0>", "948156236": "Créer le mot de passe {{type}}", - "948176566": "Nouveau !", + "948176566": "Nouveautés !", "948545552": "150+", "949859957": "Envoyer", "952927527": "Réglementée par la Malta Financial Services Authority (MFSA) (licence nº IS/70156)", @@ -862,7 +859,7 @@ "958430760": "Zone In/Out", "959031082": "définir {{ variable }} sur MACD Array {{ dropdown }} {{ dummy }}", "960201789": "3. Conditions de vente", - "961266215": "140+", + "961266215": "+140", "961327418": "Mon ordinateur", "961692401": "Bot", "966457287": "définir {{ variable }} sur la moyenne mobile exponentielle {{ dummy }}", @@ -873,7 +870,7 @@ "975950139": "Pays de résidence", "977929335": "Allez aux paramètres de mon compte", "981138557": "Rediriger", - "981568830": "Vous avez choisi de vous exclure du trading sur notre site jusqu'à {{exclude_until}}. Si vous ne parvenez pas à effectuer une opération ou à effectuer un dépôt après votre période d'auto-exclusion, veuillez nous contacter via <0>le chat en direct.", + "981568830": "Vous avez choisi de vous exclure du trading sur notre site jusqu'à {{exclude_until}}. Si vous ne parvenez pas à effectuer une transaction ou à effectuer un dépôt après votre période d'auto-exclusion, veuillez nous contacter via <0>le chat en direct.", "981965437": "Scannez le QR code ci-dessous avec votre application 2FA. Nous recommandons <0>Authy ou <1>Google Authenticator.", "982146443": "WhatsApp", "982402892": "Première ligne de l’adresse", @@ -965,6 +962,7 @@ "1061308507": "Acheter {{ contract_type }}", "1062423382": "Explorez les guides vidéo et les FAQ pour créer votre bot dans l'onglet Tutoriels.", "1062536855": "Égaux", + "1062569830": "The <0>name on your identity document doesn't match your profile.", "1065275078": "Pour l'instant, cTrader n'est disponible que sur ordinateur.", "1065353420": "110 et +", "1065498209": "Itérer (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3. Définissez les paramètres de votre transaction et cliquez sur Lancer.", "1174748431": "Canal de paiement", "1175183064": "Vanuatu", - "1176926166": "Expérience de trading avec d'autres instruments financiers", "1177396776": "Si vous sélectionnez \"Asiatique Baisse\", vous gagnerez le paiement si le dernier tick est inférieur à la moyenne des ticks.", "1177723589": "Il n'y a aucune transaction à afficher", "1178582280": "Le nombre de contrats que vous avez perdus depuis la dernière fois que vous avez effacé vos statistiques.", @@ -1150,6 +1147,7 @@ "1255963623": "À date/heure {{ input_timestamp }} {{ dummy }}", "1258097139": "Que pourrions-nous faire pour nous améliorer?", "1258198117": "positif", + "1259145708": "Let’s try again. Choose another document and enter the corresponding details.", "1259598687": "GBP/JPY", "1260259925": "Le téléphone n'est pas dans un format approprié.", "1263387702": "Les {{count}} types de compte utilisent l'exécution de marché. Cela signifie que vous acceptez le prix du courtier à l'avance et que vous passerez des ordres au prix du courtier.", @@ -1173,7 +1171,6 @@ "1289146554": "Commission des services financiers des îles Vierges britanniques", "1289646209": "Appel de marge", "1290525720": "Exemple : ", - "1291887623": "Fréquence de trading des options numériques", "1291997417": "Les contrats expireront exactement à 23:59:59 GMT à la date d'expiration que vous avez choisie.", "1292188546": "Réinitialiser le mot de passe investisseur de Deriv MT5", "1292891860": "Notifier Telegram", @@ -1257,7 +1254,6 @@ "1367023655": "Pour vous assurer que votre perte ne dépasse pas votre mise, votre contrat sera automatiquement clôturé lorsque votre perte sera égale à <0/>.", "1367488817": "4. Redémarrez les conditions de trading", "1367990698": "Indice de Volatilité 10", - "1369709538": "Nos conditions générales d'utilisation", "1370647009": "Bénéficier de limites journalières plus élevées", "1371193412": "Annuler", "1371555192": "Choisissez votre agent de paiement préféré et saisissez le montant de votre retrait. Si votre agent de paiement ne figure pas dans la liste, <0>recherchez-le à l'aide de son numéro de compte.", @@ -1297,6 +1293,7 @@ "1413047745": "Attribue une valeur donnée à une variable", "1413359359": "Effectuer un nouveau transfert", "1414205271": "nombre premier", + "1414918420": "We'll review your proof of identity again and will give you an update as soon as possible.", "1415006332": "obtenir la sous-liste du premier", "1415513655": "Téléchargez cTrader sur votre téléphone pour trader avec le compte Deriv cTrader", "1415974522": "Si vous sélectionnez « Différent », vous gagnez si le dernier chiffre du dernier tick n'est pas égal à votre prédiction.", @@ -1419,7 +1416,6 @@ "1542742708": "Synthétiques, Forex, Stocks, Indices boursiers, Matières premières et Cryptomonnaies", "1544642951": "Si vous sélectionnez \"Only Ups\", vous gagnez le paiement si des ticks consécutifs augmentent successivement après le point d'entrée. Aucun paiement si un tick tombe ou est égal à l'un des ticks précédents.", "1547148381": "Ce fichier est trop volumineux (seuls 8 Mb sont autorisés). Chargez un autre fichier.", - "1548765374": "La vérification du numéro du document a échoué", "1549098835": "Total retiré", "1551172020": "Panier AUD", "1552162519": "Afficher l'intégration", @@ -1647,6 +1643,7 @@ "1790770969": "Majeures FX (lots standard/micro), Mineures FX, Matières premières, Cryptodevises", "1791432284": "Rechercher un pays", "1791971912": "Récent", + "1792037169": "To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your {{document_name}}.", "1793913365": "Pour déposer de l'argent, veuillez passer à votre compte {{currency_symbol}}.", "1794815502": "Téléchargez l'historique de vos transactions.", "1796787905": "Veuillez télécharger le ou les documents suivants.", @@ -1680,7 +1677,7 @@ "1821818748": "Entrez le numéro de référence du permis de conduire", "1823177196": "Le plus populaire", "1824193700": "Ce bloc vous donne le dernier chiffre de la dernière valeur de tick.", - "1824292864": "D'achat", + "1824292864": "Call", "1827607208": "Fichier non téléchargé.", "1828370654": "Intégration", "1830520348": "Mot de passe {{platform_name_dxtrade}}", @@ -1792,7 +1789,6 @@ "1924765698": "Lieu de naissance*", "1926987784": "- iOS : Glissez vers la gauche sur le compte et touchez <0>Supprimer.", "1928930389": "GBP/NOK", - "1929309951": "Statut d’emploi", "1929694162": "Comparez les comptes", "1930899934": "Tether", "1931659123": "Exécuter à chaque tick", @@ -1966,12 +1962,12 @@ "2115223095": "Perte", "2117165122": "1. Créez un bot Telegram et obtenez votre jeton d'API Telegram. En savoir plus sur la façon de créer des bots dans Telegram ici: https://core.telegram.org/bots#6-botfather", "2117489390": "Mise à jour automatique dans {{ remaining }} secondes", - "2118315870": "Où habitez-vous?", "2119449126": "Un exemple de sortie de l'exemple ci-dessous sera:", "2119710534": "FAQ", "2121227568": "NEO/USD", "2122152120": "Actifs", "2127564856": "Les retraits sont verrouillés", + "2129807378": "Update profile", "2131963005": "Veuillez retirer vos fonds depuis le compte Deriv MT5 suivant :", "2133451414": "Durée", "2133470627": "Ce bloc renvoie le paiement potentiel pour le type de transaction sélectionné. Ce bloc ne peut être utilisé que dans le bloc racine \"Conditions d'achat\".", @@ -1992,8 +1988,6 @@ "2146698770": "Conseil de pro : vous pouvez également cliquer et faire glisser le bloc souhaité", "2146892766": "Expérience de trading d’options binaires", "2147244655": "Comment puis-je importer mon propre robot de trading dans Deriv Bot ?", - "-1232613003": "<0>La vérification a échou. <1>Pourquoi?", - "-2029508615": "<0>Besoin de vérification.<1>Vérifier maintenant", "-931052769": "Soumettre la demande de vérification", "-1004605898": "Conseils", "-1938142055": "Documents téléchargés", @@ -2141,18 +2135,9 @@ "-179726573": "Nous avons reçu votre preuve de propriété.", "-813779897": "La vérification de la preuve de propriété a été réussie.", "-638756912": "Cache les chiffres 7 à 12 du numéro de carte qui apparaît au recto de votre carte de débit/crédit.", - "-2073934245": "Les services de trading financier proposés sur ce site ne conviennent qu'aux clients qui acceptent la possibilité de perdre tout l'argent qu'ils investissent et qui comprennent et ont une expérience du risque lié à l'achat de contrats financiers. Les transactions sur contrats financiers comportent un degré de risque élevé. Si les contrats que vous avez achetés expirent comme sans valeur, vous perdrez tout votre investissement, qui comprend la prime du contrat.", - "-1166068675": "Votre compte sera ouvert auprès de {{legal_entity_name}}, réglementé par la UK Gaming Commission (UKGC), et sera soumis aux lois de l'île de Man.", - "-975118358": "Votre compte sera ouvert auprès de {{legal_entity_name}}, réglementé par la Malta Financial Services Authority (MFSA), et sera soumis aux lois de Malte.", - "-680528873": "Votre compte sera ouvert avec {{legal_entity_name}}, et sera soumis aux lois de Samoa.", - "-1125193491": "Ajouter un compte", - "-2068229627": "Je ne suis pas un PEP et je n'ai pas été un PEP au cours des 12 derniers mois.", "-684271315": "OK", "-740157281": "Évaluation de l'expérience commerciale", "-1720468017": "Lorsque nous vous fournissons nos services, nous sommes tenus d'obtenir des informations vous concernant afin d'évaluer si un produit ou un service donné vous convient.", - "-186841084": "Modifier votre adresse e-mail de connexion", - "-907403572": "Pour modifier votre adresse e-mail, vous devez d'abord dissocier votre adresse e-mail de votre compte {{identifier_title}} .", - "-1850792730": "Se déconnecter de {{identifier_title}}", "-307865807": "Avertissement de tolérance au risque", "-690100729": "Oui, je comprends le risque.", "-2010628430": "Les CFD et autres instruments financiers présentent un risque élevé de perdre de l'argent rapidement en raison de l'effet de levier. Vous devez vous demander si vous comprenez le fonctionnement des CFD et autres instruments financiers et si vous pouvez vous permettre de prendre le risque élevé de perdre votre argent.<0/><0/> Pour continuer, vous devez confirmer que vous comprenez que votre capital est en danger.", @@ -2206,11 +2191,6 @@ "-1725454783": "Échec", "-506510414": "Date et heure", "-1708927037": "Adresse IP", - "-619126443": "Utilisez le <0>Mot de passe Deriv pour vous connecter à {{brand_website_name}} et {{platform_name_trader}}.", - "-623760979": "Utilisez le <0>mot de passe Deriv pour vous connecter à {{brand_website_name}}, {{platform_name_trader}} et {{platform_name_go}}.", - "-459147994": "Utilisez le <0>mot de passe Deriv pour vous connecter à {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} et {{platform_name_ctrader}}.", - "-80717068": "Applications que vous avez associées à votre mot de <0>passe Deriv :", - "-9570380": "Utilisez le mot de passe {{platform_name_dxtrade}} pour vous connecter à votre compte {{platform_name_dxtrade}} sur le web et l'application mobile.", "-2131200819": "Désactiver", "-200487676": "Activé", "-1840392236": "Ce n'est pas le bon code. Veuillez réessayer.", @@ -2240,44 +2220,37 @@ "-378415317": "Pays est requis", "-1497654315": "Nos comptes et services ne sont pas disponibles pour le code postal de Jersey.", "-755626951": "Complétez vos coordonnées", - "-584911871": "Sélectionnez la devise du portefeuille", "-1461267236": "Veuillez choisir votre devise", - "-1352330125": "DEVISE", "-1027595143": "Moins de 25 000 $", "-40491332": "$25 000 - $50 000", "-1139806939": "50,000 $ - 100,000 $", - "-626752657": "0-1 an", - "-532014689": "1-2 ans", - "-1001024004": "Plus de 3 ans", - "-790513277": "6 à 10 transactions au cours des 12 derniers mois", - "-580085300": "11 à 39 transactions au cours des 12 derniers mois", - "-654781670": "Primaire", - "-1717373258": "Secondaire", "-996132458": "Construction", "-915003867": "Santé", "-1430012453": "Technologie de l'Information et de la communication", "-987824916": "Science et Ingénierie", "-146630682": "Social et Culture", "-761306973": "Fabrication", - "-739367071": "Employé", - "-1156937070": "500 001 $ - 1 000 000 $", - "-315534569": "Plus de 1 000 000 $", - "-2068544539": "Employé salarié", - "-531314998": "Investissements et dividendes", - "-1235114522": "Pension", - "-1298056749": "Allocations Gouvernementales", - "-449943381": "Épargne & héritage", "-1631552645": "Professionnels", "-474864470": "Employés de l'aide aux personnes âgées, vente et service", "-1129355784": "Agriculture, foresterie et pêche", "-1242914994": "Artisanat, métallurgie, électricité, électronique", "-1317824715": "Ménage et aide à la personne", "-1592729751": "Employés des mines, de la construction, de l'industrie manufacturière et du Transport", + "-1030759620": "Agents de l’État", "-2137323480": "Propriété de la société", "-1590574533": "Règlement de divorce", "-1667683002": "Héritage", "-1237843731": "Revenus de placements", "-777506574": "Vente d’un bien", + "-654781670": "Primaire", + "-1717373258": "Secondaire", + "-1156937070": "500 001 $ - 1 000 000 $", + "-315534569": "Plus de 1 000 000 $", + "-2068544539": "Employé salarié", + "-531314998": "Investissements et dividendes", + "-1235114522": "Pension", + "-1298056749": "Allocations Gouvernementales", + "-449943381": "Épargne & héritage", "-1161338910": "Le prénom est requis.", "-1161818065": "Le nom de famille doit comprendre entre 2 et 50 caractères.", "-1281693513": "La date de naissance est requise.", @@ -2287,28 +2260,14 @@ "-212167954": "Le numéro d'identification fiscale n'est pas correctement formaté.", "-621555159": "Informations d'identité", "-204765990": "Conditions d'utilisation", - "-231863107": "Non", - "-870902742": "Quelles sont vos connaissances et votre expérience en matière de trading en ligne ?", - "-1929477717": "J'ai un diplôme universitaire, une certification professionnelle et/ou une expérience professionnelle liée aux services financiers.", - "-1540148863": "J'ai participé à des séminaires, des formations et/ou des ateliers liés au trading.", - "-922751756": "Moins d'un an", - "-542986255": "Aucun", - "-1337206552": "Selon vous, le trading de CFD vous permet de", - "-456863190": "Placez une position sur le mouvement du prix d'un actif dont le résultat est un rendement fixe ou rien du tout.", - "-1314683258": "Faites un investissement à long terme pour un bénéfice garanti.", - "-1546090184": "Comment l'effet de levier affecte-t-il le trading de CFD ?", - "-1636427115": "Levier contribue à atténuer les risques.", - "-800221491": "Levier garantit les bénéfices.", - "-811839563": "Levier vous permet d'ouvrir des positions importantes pour une fraction de la valeur de la transaction, ce qui peut entraîner une augmentation des profits ou des pertes.", - "-1185193552": "Clôturez automatiquement votre transaction lorsque la perte est égale ou supérieure à un montant spécifié, à condition que la liquidité du marché soit suffisante.", - "-1046354": "Clôturez automatiquement votre transaction lorsque le bénéfice est égal ou supérieur à un montant spécifié, à condition que la liquidité du marché soit suffisante.", - "-1842858448": "Réalisez un bénéfice garanti sur votre transaction.", - "-860053164": "Lorsque vous tradez des multiplicateurs.", - "-1250327770": "Lors de l'achat d'actions d'une entreprise.", - "-1222388581": "Tout ce qui précède.", "-477761028": "Identification de l'électeur", "-1466346630": "CPF", - "-1030759620": "Agents de l’État", + "-739367071": "Employé", + "-626752657": "0-1 an", + "-532014689": "1-2 ans", + "-1001024004": "Plus de 3 ans", + "-790513277": "6 à 10 transactions au cours des 12 derniers mois", + "-580085300": "11 à 39 transactions au cours des 12 derniers mois", "-612752984": "Ce sont des limites par défaut que nous appliquons à vos comptes.", "-1598263601": "Pour en savoir plus sur les limites de trading et leur application, veuillez consulter le <0>Centre d'aide.", "-1411635770": "En savoir plus sur les limites de compte", @@ -2326,10 +2285,7 @@ "-1500958859": "Vérifier", "-1502578110": "Votre compte est entièrement authentifié et vos limites de retrait ont été levées.", "-1662154767": "une facture de services publics récente (par exemple, électricité, eau, gaz, ligne fixe ou Internet), relevé bancaire ou lettre du gouvernement avec votre nom et cette adresse.", - "-190838815": "Nous en avons besoin pour vérification. Si les informations que vous fournissez sont fausses ou inexactes, vous ne pourrez pas effectuer de dépôt ni de retrait.", - "-223216785": "Deuxième ligne d'adresse*", "-594456225": "Deuxième ligne d'adresse", - "-1940457555": "Code postal*", "-1964954030": "Code postal", "-516397235": "Faites attention avec qui vous partagez ce jeton. Toute personne possédant ce jeton peut effectuer les actions suivantes au titre de votre compte", "-989216986": "Ajouter des comptes", @@ -2371,8 +2327,6 @@ "-1100235269": "Secteur d’emploi", "-684388823": "Valeur nette estimée", "-509054266": "Chiffre d'affaire anticipé annuel", - "-601903492": "Expérience du trading sur le Forex", - "-1012699451": "Expérience de trading CFD", "-1588485629": "Exemple ", "-1117345066": "Choisissez le type de document", "-651192353": "Exemple:", @@ -2393,18 +2347,21 @@ "-1944264183": "Pour continuer le trading, vous devez également soumettre une preuve d'identité.", "-1088324715": "Nous examinerons vos documents et vous informerons de leur statut dans un délai de 1 à 3 jours ouvrés.", "-329713179": "Ok", - "-1176889260": "Veuillez sélectionner un type de document.", - "-1926456107": "Le document que vous avez soumis a expiré.", - "-555047589": "Il semble que votre document d'identité ait expiré. Veuillez réessayer avec un document valide.", - "-841187054": "Réessayez", + "-895884696": "The <0>name and <0>date of birth on your identity document don't match your profile.", + "-1792723131": "To avoid delays, enter your <0>date of birth exactly as it appears on your {{document_name}}.", + "-886317740": "The <0>date of birth on your identity document doesn't match your profile.", + "-1813671961": "Your identity verification failed because:", "-2097808873": "Nous n'avons pas été en mesure de vérifier votre identité d'après les détails saisis. ", - "-228284848": "Nous n'avons pas été en mesure de vérifier votre identité d'après les détails saisis.", + "-1652371224": "Your profile is updated", + "-504784172": "Your document has been submitted", "-1391934478": "Votre identité est vérifiée. Vous devrez également fournir un justificatif de domicile.", "-118547687": "La vérification de l'identité a échoué", "-200989771": "Aller aux détails personnels", "-1358357943": "Veuillez vérifier et mettre à jour votre code postal avant de soumettre une preuve d'identité.", "-1401994581": "Vos informations personnelles sont manquantes", "-2004327866": "Veuillez sélectionner un pays valide de délivrance du document.", + "-1627868670": "Your identity document has expired.", + "-1606307809": "We were unable to verify the identity document with the details provided.", "-1664159494": "Pays", "-749870311": "Veuillez nous contacter via <0>le chat en direct.", "-1084991359": "Preuve de vérification d'identité non requise", @@ -2464,21 +2421,54 @@ "-142444667": "Veuillez cliquer sur le lien reçu par email afin de modifier votre mot de passe Deriv MT5.", "-742748008": "Vérifiez vos emails et cliquez sur le lien dans l'email afin de continuer.", "-84068414": "Vous n'avez toujours pas reçu l'email ? Veuillez nous contacter via <0>le chat en direct.", + "-975118358": "Votre compte sera ouvert auprès de {{legal_entity_name}}, réglementé par la Malta Financial Services Authority (MFSA), et sera soumis aux lois de Malte.", + "-2073934245": "Les services de trading financier proposés sur ce site ne conviennent qu'aux clients qui acceptent la possibilité de perdre tout l'argent qu'ils investissent et qui comprennent et ont une expérience du risque lié à l'achat de contrats financiers. Les transactions sur contrats financiers comportent un degré de risque élevé. Si les contrats que vous avez achetés expirent comme sans valeur, vous perdrez tout votre investissement, qui comprend la prime du contrat.", + "-1125193491": "Ajouter un compte", + "-2068229627": "Je ne suis pas un PEP et je n'ai pas été un PEP au cours des 12 derniers mois.", + "-186841084": "Modifier votre adresse e-mail de connexion", + "-907403572": "Pour modifier votre adresse e-mail, vous devez d'abord dissocier votre adresse e-mail de votre compte {{identifier_title}} .", + "-1850792730": "Se déconnecter de {{identifier_title}}", "-428335668": "Vous allez devoir créer un mot de passe afin de compléter le processus.", + "-1232613003": "<0>La vérification a échou. <1>Pourquoi?", + "-2029508615": "<0>Besoin de vérification.<1>Vérifier maintenant", "-818898181": "Le nom figurant dans le document ne correspond pas à votre profil Deriv.", "-310316375": "L'adresse du document ne correspond pas à l'adresse que vous avez indiquée ci-dessus.", "-485368404": "Document délivré il y a plus de 6 mois.", "-367016488": "Document flou. Toutes les informations doivent être claires et visibles.", "-1957076143": "Document recadré. Toutes les informations doivent être claires et visibles.", + "-1576856758": "An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.", + "-231863107": "Non", + "-870902742": "Quelles sont vos connaissances et votre expérience en matière de trading en ligne ?", + "-1929477717": "J'ai un diplôme universitaire, une certification professionnelle et/ou une expérience professionnelle liée aux services financiers.", + "-1540148863": "J'ai participé à des séminaires, des formations et/ou des ateliers liés au trading.", + "-922751756": "Moins d'un an", + "-542986255": "Aucun", + "-1337206552": "Selon vous, le trading de CFD vous permet de", + "-456863190": "Placez une position sur le mouvement du prix d'un actif dont le résultat est un rendement fixe ou rien du tout.", + "-1314683258": "Faites un investissement à long terme pour un bénéfice garanti.", + "-1546090184": "Comment l'effet de levier affecte-t-il le trading de CFD ?", + "-1636427115": "Levier contribue à atténuer les risques.", + "-800221491": "Levier garantit les bénéfices.", + "-811839563": "Levier vous permet d'ouvrir des positions importantes pour une fraction de la valeur de la transaction, ce qui peut entraîner une augmentation des profits ou des pertes.", + "-1185193552": "Clôturez automatiquement votre transaction lorsque la perte est égale ou supérieure à un montant spécifié, à condition que la liquidité du marché soit suffisante.", + "-1046354": "Clôturez automatiquement votre transaction lorsque le bénéfice est égal ou supérieur à un montant spécifié, à condition que la liquidité du marché soit suffisante.", + "-1842858448": "Réalisez un bénéfice garanti sur votre transaction.", + "-860053164": "Lorsque vous tradez des multiplicateurs.", + "-1250327770": "Lors de l'achat d'actions d'une entreprise.", + "-1222388581": "Tout ce qui précède.", "-1515286538": "Veuillez entrer le numéro de votre document. ", "-1694758788": "Entrez votre numéro de document", "-1458676679": "Vous devez saisir 2 à 50 caractères.", + "-1176889260": "Veuillez sélectionner un type de document.", + "-1265050949": "identity document", "-2139303636": "Vous avez peut-être suivi un lien brisé ou la page s'est redirigée vers une nouvelle adresse.", "-1448368765": "Code d'erreur: page {{error_code}} introuvable", "-254792921": "Vous ne pouvez effectuer que des dépôts pour le moment. Pour autoriser les retraits, veuillez compléter votre évaluation financière.", "-1437017790": "Informations financières", "-70342544": "Nous sommes légalement tenus de vous demander vos informations financières.", "-39038029": "Expérience de trading", + "-601903492": "Expérience du trading sur le Forex", + "-1012699451": "Expérience de trading CFD", "-1894668798": "Expérience d'autres instruments de trading", "-1026468600": "Fréquence des autres instruments de trading", "-1743024217": "Sélectionnez la langue", @@ -2489,6 +2479,11 @@ "-536187647": "Confirmer la révocation de l'accès?", "-1357606534": "Permission", "-570222048": "Révoquer l'accès", + "-80717068": "Applications que vous avez associées à votre mot de <0>passe Deriv :", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "Utilisez le <0>Mot de passe Deriv pour vous connecter à {{brand_website_name}} et {{platform_name_trader}}.", + "-623760979": "Utilisez le <0>mot de passe Deriv pour vous connecter à {{brand_website_name}}, {{platform_name_trader}} et {{platform_name_go}}.", + "-459147994": "Utilisez le <0>mot de passe Deriv pour vous connecter à {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} et {{platform_name_ctrader}}.", "-1526404112": "Factures de services: électricité, eau, gaz ou téléphone fixe.", "-537552700": "Contrat de location : contrat valide et en vigueur.", "-890084320": "Sauvegarder et soumettre", @@ -2859,6 +2854,30 @@ "-1016171176": "Actif", "-621128676": "Type de trade", "-447853970": "Seuil de perte", + "-155173714": "Construisons un bot !", + "-1919212468": "3. Vous pouvez également rechercher les blocs que vous souhaitez à l'aide de la barre de recherche située au-dessus des catégories.", + "-1520558271": "Pour plus d’informations, consultez cet article de blog sur les bases de la création d’un bot de trading.", + "-980360663": "3. Choisissez le bloc de votre choix et faites-le glisser vers l'espace de travail.", + "-1493168314": "Qu'est-ce qu'une stratégie rapide ?", + "-1680391945": "Utiliser une stratégie rapide", + "-1177914473": "Comment enregistrer ma stratégie?", + "-271986909": "Dans Bot Builder, cliquez sur Enregistrer dans la barre d'outils en haut pour télécharger votre bot. Donnez un nom à votre robot et choisissez de le télécharger sur votre appareil ou sur Google Drive. Votre bot sera téléchargé sous forme de fichier XML.", + "-1149045595": "1. Après avoir cliqué sur Importer, sélectionnez Local et cliquez sur Continuer.", + "-288041546": "2. Sélectionnez votre fichier XML et appuyez sur Ouvrir.", + "-2127548288": "3. Votre bot sera chargé en conséquence.", + "-1311297611": "1. Après avoir cliqué sur Importer, sélectionnez Google Drive et cliquez sur Continuer.", + "-1549564044": "Comment réinitialiser l'espace de travail?", + "-1127331928": "Dans Bot Builder, cliquez sur Reset dans la barre d'outils en haut. Cela effacera l'espace de travail. Veuillez noter que toutes les modifications non enregistrées seront perdues.", + "-1720444288": "Comment puis-je contrôler mes pertes avec Deriv Bot ?", + "-1142295124": "Il y a plusieurs façons de contrôler vos pertes avec Deriv Bot. Voici un exemple simple de la façon dont vous pouvez mettre en œuvre le contrôle des pertes dans votre stratégie :", + "-986689483": "1. Créez les variables suivantes:", + "-269910127": "3. Mettez à jour le profit/perte actuel avec le profit du dernier contrat. Si le dernier contrat a été perdu, la valeur du profit/perte actuel sera négative.", + "-1565344891": "Puis-je faire fonctionner Deriv Bot sur plusieurs onglets dans mon navigateur web ?", + "-90192474": "Oui, tu peux. Cependant, votre compte est soumis à des limites, telles que le nombre maximum de positions ouvertes et le maximum de paiements cumulés sur les positions ouvertes. Gardez donc ces limites à l'esprit lorsque vous ouvrez plusieurs positions. Vous trouverez plus d'informations sur ces limites dans Paramètres > Limites du compte.", + "-213872712": "Non, nous ne proposons pas de crypto-monnaies sur Deriv Bot.", + "-2147346223": "Dans quels pays Deriv Bot est-il disponible ?", + "-352345777": "Quelles sont les stratégies les plus populaires pour le trading automatisé ?", + "-552392096": "Trois des stratégies les plus utilisées dans le trading automatisé sont Martingale, D'Alembert, et Oscar's Grind - vous pouvez les trouver toutes prêtes dans Deriv Bot.", "-507620484": "Non enregistré", "-764102808": "Google Drive", "-555886064": "Gagné", @@ -2937,30 +2956,6 @@ "-1823621139": "Stratégie rapide", "-1778025545": "Vous avez importé un bot avec succès.", "-1519425996": "Aucun résultat trouvé « {{ faq_search_value }} »", - "-155173714": "Construisons un bot !", - "-1919212468": "3. Vous pouvez également rechercher les blocs que vous souhaitez à l'aide de la barre de recherche située au-dessus des catégories.", - "-1520558271": "Pour plus d’informations, consultez cet article de blog sur les bases de la création d’un bot de trading.", - "-980360663": "3. Choisissez le bloc de votre choix et faites-le glisser vers l'espace de travail.", - "-1493168314": "Qu'est-ce qu'une stratégie rapide ?", - "-1680391945": "Utiliser une stratégie rapide", - "-1177914473": "Comment enregistrer ma stratégie?", - "-271986909": "Dans Bot Builder, cliquez sur Enregistrer dans la barre d'outils en haut pour télécharger votre bot. Donnez un nom à votre robot et choisissez de le télécharger sur votre appareil ou sur Google Drive. Votre bot sera téléchargé sous forme de fichier XML.", - "-1149045595": "1. Après avoir cliqué sur Importer, sélectionnez Local et cliquez sur Continuer.", - "-288041546": "2. Sélectionnez votre fichier XML et appuyez sur Ouvrir.", - "-2127548288": "3. Votre bot sera chargé en conséquence.", - "-1311297611": "1. Après avoir cliqué sur Importer, sélectionnez Google Drive et cliquez sur Continuer.", - "-1549564044": "Comment réinitialiser l'espace de travail?", - "-1127331928": "Dans Bot Builder, cliquez sur Reset dans la barre d'outils en haut. Cela effacera l'espace de travail. Veuillez noter que toutes les modifications non enregistrées seront perdues.", - "-1720444288": "Comment puis-je contrôler mes pertes avec Deriv Bot ?", - "-1142295124": "Il y a plusieurs façons de contrôler vos pertes avec Deriv Bot. Voici un exemple simple de la façon dont vous pouvez mettre en œuvre le contrôle des pertes dans votre stratégie :", - "-986689483": "1. Créez les variables suivantes:", - "-269910127": "3. Mettez à jour le profit/perte actuel avec le profit du dernier contrat. Si le dernier contrat a été perdu, la valeur du profit/perte actuel sera négative.", - "-1565344891": "Puis-je faire fonctionner Deriv Bot sur plusieurs onglets dans mon navigateur web ?", - "-90192474": "Oui, tu peux. Cependant, votre compte est soumis à des limites, telles que le nombre maximum de positions ouvertes et le maximum de paiements cumulés sur les positions ouvertes. Gardez donc ces limites à l'esprit lorsque vous ouvrez plusieurs positions. Vous trouverez plus d'informations sur ces limites dans Paramètres > Limites du compte.", - "-213872712": "Non, nous ne proposons pas de crypto-monnaies sur Deriv Bot.", - "-2147346223": "Dans quels pays Deriv Bot est-il disponible ?", - "-352345777": "Quelles sont les stratégies les plus populaires pour le trading automatisé ?", - "-552392096": "Trois des stratégies les plus utilisées dans le trading automatisé sont Martingale, D'Alembert, et Oscar's Grind - vous pouvez les trouver toutes prêtes dans Deriv Bot.", "-418247251": "Téléchargez votre journal.", "-2123571162": "Télécharger", "-870004399": "<0>Acheté: {{longcode}} (ID: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "Plein écran", "-1823504435": "Afficher les notifications", "-1954045170": "Pas de devise attribuée", - "-583559763": "Menu", "-1591792668": "Limites du Compte", "-34495732": "Informations réglementaires", "-1496158755": "Allez sur Deriv.com", @@ -3259,6 +3253,7 @@ "-818926350": "La Commission financière accepte les appels pendant 45 jours après la date de l'incident et seulement après que le commerçant a essayé de résoudre le problème directement avec l'entreprise.", "-1825471709": "Une toute nouvelle expérience de trading sur une plateforme puissante mais facile à utiliser.", "-981017278": "Trading automatisé à portée de main. Aucun codage nécessaire.", + "-583559763": "Menu", "-778309978": "Le lien sur lequel vous avez cliqué a expiré. Assurez-vous de cliquer sur le lien figurant dans le dernier e-mail de votre boîte de réception. Vous pouvez également saisir votre adresse e-mail ci-dessous et cliquer sur <0>Renvoyer l'e-mail pour obtenir un nouveau lien.", "-336222114": "Suivez ces étapes simples pour y remédier :", "-1064116456": "Recherchez le courtier <0>Deriv Holdings (Guernsey) Limited et sélectionnez-le.", @@ -3415,22 +3410,6 @@ "-1282933308": "Pas {{barrier}}", "-968190634": "Egal {{barrier}}", "-1747377543": "Sous {{barrier}}", - "-256210543": "Le Trading n’est pas disponible en ce moment.", - "-1150099396": "Nous travaillons pour que cela soit disponible pour vous bientôt. Si vous avez un autre compte, passez à ce compte pour continuer à trader. Vous pouvez ajouter un Deriv MT5 Financial.", - "-28115241": "{{platform_name_trader}} n'est pas disponible pour ce compte", - "-453920758": "Aller sur le tableau de bord {{platform_name_mt5}}", - "-402175529": "Historique", - "-902712434": "Offre annulation", - "-988484646": "Offre annulation (réalisée)", - "-444882676": "Offre annulation (active)", - "-13423018": "ID de référence", - "-2035315547": "Barrière inférieure", - "-1551639437": "Pas d'historique", - "-1214703885": "Vous n'avez pas encore mis à jour soit le take profit, soit le stop loss", - "-504849554": "Il sera rouvert à", - "-59803288": "En attendant, essayez nos indices synthétiques. Elles simulent les movements du marché réel et sont ouvertes 24 heures sur 24, 7 jours sur 7.", - "-1278109940": "Voir les marchés ouverts", - "-694105443": "Ce marché est fermé", "-1043795232": "Positions récentes", "-1511825574": "Profits/pertes:", "-726626679": "Bénéfice/Perte Potentielle:", @@ -3455,21 +3434,15 @@ "-1435392215": "A propos de l'offre annulation", "-2017825013": "C'est compris", "-1192773792": "Ne plus jamais afficher ça", + "-902712434": "Offre annulation", "-1280319153": "Annulez votre transaction à tout moment dans un laps de temps choisi. Déclenché automatiquement si votre transaction atteint le niveau d'arrêt dans le laps de temps choisi.", "-471757681": "Gestion des risques", "-843831637": "Stop loss", "-771725194": "Offre annulation", "-338707425": "La durée minimale est de 1 jour", "-1003473648": "Durée: {{duration}} jour", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "Le paiement à l'échéance est égal au paiement par point multiplié par la différence entre le prix final et le prix d'exercice.", "-1527492178": "Achat bloqué", "-725375562": "Vous pouvez verrouiller/déverrouiller le bouton d'achat à partir du menu Paramètres", - "-774638412": "L'enjeu doit être compris entre {{min_stake}} {{currency}} et {{max_stake}} {{currency}}", - "-1358367903": "Mise", - "-434270664": "Prix actuel", - "-1956787775": "Prix de Barrière :", - "-1513281069": "Barrière 2", "-390994177": "Doit être compris entre {{min}} et {{max}}", "-1804019534": "Expiration : {{date}}", "-2055106024": "Basculer entre les paramètres de durée avancés et simples", @@ -3481,9 +3454,10 @@ "-1043117679": "Lorsque votre perte actuelle est égale ou supérieure à {{stop_out_percentage}}% de votre Equité, votre contrat sera clôturé au prix d'actif disponible le plus proche.", "-339236213": "Multiplicateur", "-2131851017": "Taux de croissance", - "-1763848396": "De vente", + "-1763848396": "Put", "-194424366": "au-dessus", "-857660728": "Le prix d'exercice", + "-1358367903": "Mise", "-1386326276": "La barrière est un champ obligatoire.", "-1418742026": "La barrière supérieure doit être plus élevée que la barrière inférieure.", "-92007689": "La barrière inférieure doit être inférieure à la barrière supérieure.", @@ -3491,6 +3465,21 @@ "-1975910372": "Minute doit se situer entre 0 et 59.", "-866277689": "La période d'expiration ne peut être antérieure.", "-1455298001": "Maintenant", + "-256210543": "Le Trading n’est pas disponible en ce moment.", + "-1150099396": "Nous travaillons pour que cela soit disponible pour vous bientôt. Si vous avez un autre compte, passez à ce compte pour continuer à trader. Vous pouvez ajouter un Deriv MT5 Financial.", + "-28115241": "{{platform_name_trader}} n'est pas disponible pour ce compte", + "-453920758": "Aller sur le tableau de bord {{platform_name_mt5}}", + "-402175529": "Historique", + "-988484646": "Offre annulation (réalisée)", + "-444882676": "Offre annulation (active)", + "-13423018": "ID de référence", + "-2035315547": "Barrière inférieure", + "-1551639437": "Pas d'historique", + "-1214703885": "Vous n'avez pas encore mis à jour soit le take profit, soit le stop loss", + "-504849554": "Il sera rouvert à", + "-59803288": "En attendant, essayez nos indices synthétiques. Elles simulent les movements du marché réel et sont ouvertes 24 heures sur 24, 7 jours sur 7.", + "-1278109940": "Voir les marchés ouverts", + "-694105443": "Ce marché est fermé", "-439389714": "Nous y travaillons", "-770929448": "Aller sur {{platform_name_smarttrader}}", "-347156282": "Soumettre une preuve", @@ -3537,6 +3526,8 @@ "-454245976": "Si vous pensez que le prix du marché baissera continuellement pendant une période donnée, choisissez <0>Short. Vous recevrez un paiement à la date d'expiration si le prix du marché ne franchit pas ou ne franchit pas la barrière. Votre paiement augmentera proportionnellement à la distance entre le prix du marché et la barrière si celle-ci n'est pas franchie. Vous commencerez à réaliser des bénéfices lorsque le paiement sera supérieur à votre mise. Si jamais le prix du marché franchit la barrière, il n'y aura aucun paiement.", "-351875097": "Nombre de ticks", "-729830082": "Voir moins", + "-1669741470": "Le paiement à l'échéance est égal au paiement par point multiplié par la différence entre le prix final et le prix d'exercice.", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "NOUVEAU!", "-993480898": "Accumulateurs", "-45873457": "NOUVEAU", @@ -3557,6 +3548,10 @@ "-690963898": "Votre contrat sera automatiquement clôturé lorsque votre versement atteindra ce montant.", "-511541916": "Votre contrat sera automatiquement clôturé lorsque ce nombre de ticks sera atteint.", "-438655760": "<0>Remarque : vous pouvez clôturer votre transaction à tout moment. Soyez conscient du risque de slippage.", + "-774638412": "L'enjeu doit être compris entre {{min_stake}} {{currency}} et {{max_stake}} {{currency}}", + "-434270664": "Prix actuel", + "-1956787775": "Prix de Barrière :", + "-1513281069": "Barrière 2", "-1683683754": "Long", "-1046859144": "<0>{{title}} Vous recevrez un paiement si le prix du marché reste à {{price_position}} sans toucher ni franchir la barrière. Sinon, votre paiement sera nul.", "-1815023694": "au-dessus de la barrière", diff --git a/packages/translations/src/translations/it.json b/packages/translations/src/translations/it.json index a6f59d7bccaf..b8697bcff119 100644 --- a/packages/translations/src/translations/it.json +++ b/packages/translations/src/translations/it.json @@ -24,7 +24,6 @@ "27731356": "Il tuo account è temporaneamente disabilitato. Contattaci tramite <0>chat live per abilitare nuovamente depositi e prelievi.", "27830635": "Deriv (V) Ltd", "28581045": "Aggiungi un conto reale MT5", - "30801950": "Il tuo conto sarà aperto con {{legal_entity_name}}, regolamentata dalla Malta Gaming Authority, e sarà sottoposto alla legge di Malta.", "33433576": "Per favore, usa un portafoglio elettronico per prelevare i tuoi fondi.", "35089987": "Carica la parte anteriore e posteriore della tua patente di guida.", "41737927": "Grazie", @@ -251,7 +250,6 @@ "284772879": "Contratto", "284809500": "Demo finanziaria", "287934290": "Sei sicuro di voler annullare l'operazione?", - "289898640": "TERMINI D'USO", "291744889": "<0>1. Parametri Trade: <0>", "291817757": "Accedi alla community di Deriv per scopire le API, i token API, i modi per usare le API Deriv e altro ancora.", "292491635": "Se selezioni \"Stop Loss\" specificando l'importo del limite sulle perdite, la posizione verrà chiusa automaticamente quando la perdita raggiunge un valore pari o superiore a tale importo. Le perdite potrebbero superare l'importo selezionato in base al prezzo di chiusura del mercato.", @@ -372,6 +370,7 @@ "427134581": "Usa un altro tipo di file.", "427617266": "Bitcoin", "428709688": "Intervallo di tempo preferito tra un report e l'altro:", + "429970999": "To avoid delays, enter your <0>name exactly as it appears on your {{document_name}}.", "431267979": "Ecco una guida rapida su come utilizzare Deriv Bot in viaggio.", "432273174": "1:100", "432508385": "Take Profit: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. Esegui una volta all'inizio", "520136698": "Indice Boom 500", "521872670": "elemento", - "522283618": "Esperienza di trading di opzioni digitali", "522703281": "divisibile per", "523123321": "-10 alla potenza di un dato numero", "524459540": "Come si creano le variabili?", @@ -562,7 +560,6 @@ "642546661": "Carica il retro della patente dal tuo computer", "642995056": "E-mail", "644150241": "Il numero di contratti ottenuti dall'ultima volta che hai cancellato le statistiche.", - "645016681": "Frequenza di trading con altri strumenti finanziari", "645902266": "EUR/NZD", "647039329": "È richiesto un documento a verifica dell'indirizzo", "647745382": "Elenco degli input {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "Prezzo spot sul tick precedente.", "812775047": "al di sotto della barriera", "814827314": "Il livello di stop-out sul grafico indica il prezzo al quale la sua perdita potenziale equivale all'intera puntata. Quando il prezzo di mercato raggiunge questo livello, la sua posizione verrà chiusa automaticamente. Questo assicura che la sua perdita non superi l'importo pagato per acquistare il contratto.", + "814936420": "{{ banner_message }}", "815925952": "Questo blocco è obbligatorio. È consentita una sola copia di questo blocco. Viene aggiunto all'area di disegno per impostazione predefinita quando apre Deriv Bot.", "816580787": "Bentornato! I messaggi sono stati ripristinati.", "816738009": "<0/><1/>Puoi anche presentare eventuali controversi irrisolte all'<2>Ufficio dell'Arbitro per i Servizi Finanziari.", @@ -747,7 +745,6 @@ "836097457": "Sono interessato al trading ma ho pochissima esperienza.", "837063385": "Non invii altre valute a questo indirizzo.", "837066896": "Stiamo esaminando il documento, riceverai risposta entro 1-3 giorni.", - "839618971": "INDIRIZZO", "839805709": "Per verificare facilmente la tua identità occorre una foto più nitida", "840672750": "Se questo non funziona, disinstalli e reinstalli l'applicazione MT5. Poi rifaccia i passaggi <0>2 e <0>3.", "841434703": "Disabilita raggruppamento", @@ -965,6 +962,7 @@ "1061308507": "Acquista {{ contract_type }}", "1062423382": "Esplora le guide video e le domande frequenti per creare il tuo bot nella scheda dei tutorial.", "1062536855": "Equivale a", + "1062569830": "The <0>name on your identity document doesn't match your profile.", "1065275078": "Per ora cTrader è disponibile solo su desktop.", "1065353420": "+110", "1065498209": "Esegui iterazione (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3. Impostate i vostri parametri di trading e cliccate su Esegui.", "1174748431": "Mezzo di pagamento", "1175183064": "Vanuatu", - "1176926166": "Esperienza nel trading di altri strumenti finanziari", "1177396776": "Selezionando \"Ribasso asiatiche\", vincerai il payout se l'ultimo tick è inferiore alla media dei tick.", "1177723589": "Nessuna operazione da mostrare", "1178582280": "Il numero di contratti persi dall'ultima volta che hai cancellato le statistiche.", @@ -1150,6 +1147,7 @@ "1255963623": "Data/ora {{ input_timestamp }} {{ dummy }}", "1258097139": "Hai consigli per migliorare i nostri servizi?", "1258198117": "positivo", + "1259145708": "Let’s try again. Choose another document and enter the corresponding details.", "1259598687": "GBP/JPY", "1260259925": "Il telefono non è in un formato corretto.", "1263387702": "Tutte e {{count}} le tipologie di conto utilizzano l'esecuzione al mercato. Dovrai pertanto accettare i prezzi del broker in anticipo e realizzerai gli ordini a tale prezzo.", @@ -1173,7 +1171,6 @@ "1289146554": "British Virgin Islands Financial Services Commission", "1289646209": "Chiamata a margine", "1290525720": "Esempio: ", - "1291887623": "Frequenza del trading di opzioni digitali", "1291997417": "I contratti scadranno esattamente alle 23:59:59 GMT della data di scadenza selezionata.", "1292188546": "Reimposta la password dell'investitore Deriv MT5", "1292891860": "Notifica Telegram", @@ -1257,7 +1254,6 @@ "1367023655": "Per assicurarti che la perdita non superi la puntata, il contratto verrà chiuso automaticamente quando la perdita raggiunge <0/>.", "1367488817": "4. Condizioni per il riavvio dei trade", "1367990698": "Indice di volatilità 10", - "1369709538": "I nostri termini d'uso", "1370647009": "Goditi limiti giornalieri più elevati", "1371193412": "Annulla", "1371555192": "Scegli il tuo agente di pagamento preferito e inserisci l'importo del prelievo. Se il tuo agente di pagamento non è presente nell'elenco, <0>cercalo utilizzando il suo numero di conto.", @@ -1297,6 +1293,7 @@ "1413047745": "Assegna un valore determinato a una variabile", "1413359359": "Esegui un nuovo trasferimento", "1414205271": "primo", + "1414918420": "We'll review your proof of identity again and will give you an update as soon as possible.", "1415006332": "ottieni sotto elenco dai primi", "1415513655": "Scarichi cTrader sul suo telefono per fare trading con il conto Deriv cTrader", "1415974522": "Selezionando \"Differisce\", vincerai il payout se l'ultima cifra dell'ultimo tick non è quella della tua previsione.", @@ -1419,7 +1416,6 @@ "1542742708": "Sintetici, Forex, Azioni, Indizi azionari azionari, materie prime e Criptovalute", "1544642951": "Selezionando \"Solo ascendente\", ottieni il payout se tick consecutivi superano successivamente il punto di entrata. Non ottieni alcun payout se qualsiasi tick è minore o uguale a uno dei tick precedenti.", "1547148381": "Le dimensioni del file sono troppo grandi (consentiti solo fino a 8MB). Carica un altro file.", - "1548765374": "La verifica del numero di documento non è andata a buon fine", "1549098835": "Totale prelievo", "1551172020": "Paniere AUD", "1552162519": "Visualizza l'onboarding", @@ -1647,6 +1643,7 @@ "1790770969": "Maggiori FX (standard/micro-lotti), minori FX, materie prime, criptovalute", "1791432284": "Ricerca per Paese", "1791971912": "Recente", + "1792037169": "To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your {{document_name}}.", "1793913365": "Per depositare denaro, passa al conto {{currency_symbol}}.", "1794815502": "Scarica la cronologia delle tue operazioni.", "1796787905": "Carica il/i seguente/i documento/i.", @@ -1792,7 +1789,6 @@ "1924765698": "Luogo di nascita*", "1926987784": "- iOS: Scorra il dito verso sinistra sull'account e tocchi <0>Elimina.", "1928930389": "GBP/NOK", - "1929309951": "Occupazione", "1929694162": "Confronta conti", "1930899934": "Tether", "1931659123": "Esegui a ogni tick", @@ -1966,12 +1962,12 @@ "2115223095": "Perdita", "2117165122": "1. Crea il tuo bot Telegram e ricevi il token dell'API Telegram. Scopri di più su come creare bot di Telegram su questa pagina: https://core.telegram.org/bots#6-botfather", "2117489390": "Aggiornamento automatico tra {{ remaining }} secondi", - "2118315870": "Dove vivi?", "2119449126": "Possibile risultato dell'esempio sottostante:", "2119710534": "FAQ", "2121227568": "NEO/USD", "2122152120": "Asset", "2127564856": "I prelievi sono bloccati", + "2129807378": "Update profile", "2131963005": "Preleva i fondi dai seguenti conti Deriv MT5:", "2133451414": "Durata", "2133470627": "Questo blocco restituisce il payout potenziale per il tipo di trade selezionato; può essere usato solo nel blocco principale \"Condizioni di acquisto\".", @@ -1992,8 +1988,6 @@ "2146698770": "Suggerimento: puoi anche fare clic e trascinare fuori il blocco desiderato", "2146892766": "Esperienza di trading di opzioni binarie", "2147244655": "Come posso importare il mio trading bot in Deriv Bot?", - "-1232613003": "<0>Autenticazione fallita. <1>Perché?", - "-2029508615": "<0>Necessaria autenticazione. <1>Verifica ora", "-931052769": "Invia verifica", "-1004605898": "Suggerimenti", "-1938142055": "Documenti caricati", @@ -2141,18 +2135,9 @@ "-179726573": "Abbiamo ricevuto il tuo documento a verifica della proprietà.", "-813779897": "La verifica della proprietà è andata a buon fine.", "-638756912": "Oscura le cifre da 7 a 12 del numero della carta riportato sulla parte anteriore della carta di debito/credito.", - "-2073934245": "I servizi di trading finanziario offerti su questo sito sono disponibili esclusivamente per i clienti che accettano la possibilità di perdere tutto il denaro investito e comprendono a fondo il rischio legato all'acqusito di contratti finanziari. Le operazioni relative a tali contratti comportano un elevato livello di rischio; se il contratto acquistato termina con valore nullo, perdererai tutto il denaro investito, compresso il premio contrattuale.", - "-1166068675": "Il conto sarà aperto con {{legal_entity_name}}, regolamentata dalla UK Gaming Commission (UKGC), e soggetta alla legge dell'Isola di Man.", - "-975118358": "Il tuo conto sarà aperto con {{legal_entity_name}}, regolamentata dalla Malta Financial Services Authority (MFSA), e sarà sottoposto alla legge di Malta.", - "-680528873": "Il conto verrà aperto con {{legal_entity_name}}, e sarà soggetto alle leggi di Samoa.", - "-1125193491": "Aggiungi conto", - "-2068229627": "Non sono un soggetto PEP e non lo sono stato negli ultimi 12 mesi.", "-684271315": "OK", "-740157281": "Valutazione dell'esperienza di trading", "-1720468017": "Al fine di fornirti i nostri servizi, siamo tenuti a richiederti informazioni per valutare se un determinato prodotto o servizio è appropriato per te.", - "-186841084": "Modifica la tua email di accesso", - "-907403572": "Per modificare il tuo indirizzo email, devi prima scollegare il tuo indirizzo email dal tuo conto {{identifier_title}}.", - "-1850792730": "Scollegato da {{identifier_title}}", "-307865807": "Avviso di tolleranza al rischio", "-690100729": "Sì, comprendo il rischio.", "-2010628430": "I CFD e altri strumenti finanziari comportano un rischio elevato di perdere rapidamente denaro a causa della leva finanziaria. Dovresti valutare se comprendi come funzionano i CFD e altri strumenti finanziari e se puoi permetterti di correre l'elevato rischio di perdere il tuo denaro.<0/><0/> Per continuare, devi confermare di aver compreso che il tuo capitale è a rischio.", @@ -2206,11 +2191,6 @@ "-1725454783": "Non riuscito", "-506510414": "Data e ora", "-1708927037": "Indirizzo IP", - "-619126443": "Usa la <0>password Deriv per accedere a {{brand_website_name}} e {{platform_name_trader}}.", - "-623760979": "Utilizzi la <0>password Deriv per accedere a {{brand_website_name}}, {{platform_name_trader}} e {{platform_name_go}}.", - "-459147994": "Utilizzi la <0>password Deriv per accedere a {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} e {{platform_name_ctrader}}.", - "-80717068": "App che hai collegato alla tua <0>password di Deriv:", - "-9570380": "Usa la password di {{platform_name_dxtrade}} per accedere ai tuoi conti {{platform_name_dxtrade}} sul web e sulle app mobili.", "-2131200819": "Disabilita", "-200487676": "Abilita", "-1840392236": "Quello non è il codice giusto. Prova di nuovo.", @@ -2240,44 +2220,37 @@ "-378415317": "Stato obbligatorio", "-1497654315": "I nostri conti e servizi non sono disponibili per il CAP del Jersey.", "-755626951": "Complete le informazioni sul tuo indirizzo", - "-584911871": "Seleziona valuta portafoglio", "-1461267236": "Scegli una valuta", - "-1352330125": "VALUTA", "-1027595143": "Meno di 25.000 $", "-40491332": "25.000 $ - 50.000 $", "-1139806939": "50.001 $ - 100.000 $", - "-626752657": "0-1 anno", - "-532014689": "1-2 anni", - "-1001024004": "Oltre 3 anni", - "-790513277": "6-10 operazioni negli ultimi 12 mesi", - "-580085300": "11-39 operazioni negli ultimi 12 mesi", - "-654781670": "Primario", - "-1717373258": "Secondario", "-996132458": "Edilizia", "-915003867": "Salute", "-1430012453": "Tecnologia dell'informazione e della comunicazione", "-987824916": "Scienza e ingegneria", "-146630682": "Sociale e culturale", "-761306973": "Produzione", - "-739367071": "Impiegato", - "-1156937070": "500.001 $ - 1.000.000 $", - "-315534569": "Oltre 1.000.000 $", - "-2068544539": "Lavoratore dipendente", - "-531314998": "Investimenti e dividendi", - "-1235114522": "Pensione", - "-1298056749": "Sussidi statali", - "-449943381": "Risparmi ed eredità", "-1631552645": "Professionisti", "-474864470": "Lavoratori addetti alla cura della persona, alle vendite e ai servizi", "-1129355784": "Lavoratori addetti all'agricoltura, alla foresteria e al settore ittico", "-1242914994": "Lavoratori nei settori elettronico, elettrico, metallurgico e dell'artigianato", "-1317824715": "Addetti alle pulizie e aiutanti", "-1592729751": "Lavoratori per attività estrattive, edilizia, produzione e trasporti", + "-1030759620": "Funzionari governativi", "-2137323480": "Proprietà della società", "-1590574533": "Accordo di divorzio", "-1667683002": "Eredità", "-1237843731": "Redditi da capitale", "-777506574": "Vendita dei beni", + "-654781670": "Primario", + "-1717373258": "Secondario", + "-1156937070": "500.001 $ - 1.000.000 $", + "-315534569": "Oltre 1.000.000 $", + "-2068544539": "Lavoratore dipendente", + "-531314998": "Investimenti e dividendi", + "-1235114522": "Pensione", + "-1298056749": "Sussidi statali", + "-449943381": "Risparmi ed eredità", "-1161338910": "Nome obbligatorio.", "-1161818065": "Il cognome deve essere compreso tra i 2 e i 50 caratteri.", "-1281693513": "Data di nascita obbligatoria.", @@ -2287,28 +2260,14 @@ "-212167954": "Il codice di identificazione fiscale non è formattato correttamente.", "-621555159": "Informazioni sull'identità", "-204765990": "Termini di utilizzo", - "-231863107": "No", - "-870902742": "Quanta conoscenza ed esperienza hai sul trading online?", - "-1929477717": "Ho un titolo accademico, una certificazione professionale e/o un'esperienza lavorativa relativa ai servizi finanziari.", - "-1540148863": "Ho partecipato a seminari, corsi di formazione e/o workshop relativi al trading.", - "-922751756": "Meno di un anno", - "-542986255": "Nessuna", - "-1337206552": "Secondo le tue conoscenze, il trading con i CFD ti consente di", - "-456863190": "Metti una posizione sul movimento del prezzo di un asset il cui risultato è un rendimento fisso o nullo.", - "-1314683258": "Effettuare un investimento a lungo termine per un profitto garantito.", - "-1546090184": "Come influisce la leva sul trading di CFD?", - "-1636427115": "La leva finanziaria ti aiuta a mitigare il rischio.", - "-800221491": "La leva finanziaria garantisce profitti.", - "-811839563": "La leva finanziaria consente di aprire posizioni di grandi dimensioni per una frazione del valore della transazione, portando ad un possibile aumento dei profitti o delle perdite.", - "-1185193552": "Chiudere il trade automaticamente quando la perdita è pari o superiore a un importo specificato, purché vi sia un'adeguata liquidità di mercato.", - "-1046354": "Chiudere il trade automaticamente quando il profitto è pari o superiore a un importo specificato, purché vi sia un'adeguata liquidità di mercato.", - "-1842858448": "Ottenere un profitto garantito sull'operazione.", - "-860053164": "Quando si fa trading con moltiplicatori.", - "-1250327770": "Quando si acquistano azioni di una società.", - "-1222388581": "Tutte le precedenti.", "-477761028": "ID del votante", "-1466346630": "CPF", - "-1030759620": "Funzionari governativi", + "-739367071": "Impiegato", + "-626752657": "0-1 anno", + "-532014689": "1-2 anni", + "-1001024004": "Oltre 3 anni", + "-790513277": "6-10 operazioni negli ultimi 12 mesi", + "-580085300": "11-39 operazioni negli ultimi 12 mesi", "-612752984": "Questi sono i limiti standard applicati al tuo conto.", "-1598263601": "Per maggiori informazioni sui limiti ai trade e sulla loro modalità di applicazione, vai su <0>Assistenza clienti.", "-1411635770": "Scopri di più sui limiti relativi ai conti", @@ -2326,10 +2285,7 @@ "-1500958859": "Verifica", "-1502578110": "Il conto è stato completamente autenticato e i limiti di prelievo sono stati rimossi.", "-1662154767": "una bolletta di utenza (per esempio di elettricità, acqua, gas, internet o telefonica), estratto conto bancario o documento emesso dal governo con il tuo nome e il tuo indirizzo.", - "-190838815": "Ne abbiamo bisogno ai fini della verifica: se le informazioni sono false o imprecise, non ti sarà possibile prelevare o depositare fondi.", - "-223216785": "Seconda riga dell'indirizzo*", "-594456225": "Seconda riga dell'indirizzo", - "-1940457555": "Codice postale/CAP*", "-1964954030": "Codice postale/CAP", "-516397235": "Fai attenzione alle persone con cui condividi questo token. Chiunque ne sia in possesso può eseguire le seguenti azioni a nome del tuo conto", "-989216986": "Aggiungi conti", @@ -2371,8 +2327,6 @@ "-1100235269": "Settore di occupazione", "-684388823": "Patrimonio netto stimato", "-509054266": "Fatturato annuale previsto", - "-601903492": "Esperienza di trading su Forex", - "-1012699451": "Esperienza di trading su CFD", "-1588485629": "Esempio", "-1117345066": "Scegli il tipo di documento", "-651192353": "Modello:", @@ -2393,18 +2347,21 @@ "-1944264183": "Per continuare l'attività di trading, è necessario inviare anche un documento a verifica dell'identità.", "-1088324715": "Analizzeremo i documenti e ti aggiorneremo sullo stato dell'operazione entro 1-3 giorni lavorativi.", "-329713179": "Ok", - "-1176889260": "Seleziona un tipo di documento.", - "-1926456107": "L'ID inviato è scaduto.", - "-555047589": "Sembra che il tuo documento d'identità sia scaduto. Riprova con un documento valido.", - "-841187054": "Riprova", + "-895884696": "The <0>name and <0>date of birth on your identity document don't match your profile.", + "-1792723131": "To avoid delays, enter your <0>date of birth exactly as it appears on your {{document_name}}.", + "-886317740": "The <0>date of birth on your identity document doesn't match your profile.", + "-1813671961": "Your identity verification failed because:", "-2097808873": "Non è stato possibile verificare l'ID sulla base dei dettagli inseriti. ", - "-228284848": "Non è stato possibile verificare l'ID sulla base dei dettagli inseriti.", + "-1652371224": "Your profile is updated", + "-504784172": "Your document has been submitted", "-1391934478": "L'ID è stato verificato. Occorre inoltre inviare la prova per la verifica dell'indirizzo.", "-118547687": "Verifica dell'ID superata", "-200989771": "Vai ai dati personali", "-1358357943": "Verifica e aggiorna il CAP prima di inviare il documento per la verifica dell'identità.", "-1401994581": "Non sono presenti i dati personali", "-2004327866": "Seleziona un Paese valido in cui è stato emesso il documento.", + "-1627868670": "Your identity document has expired.", + "-1606307809": "We were unable to verify the identity document with the details provided.", "-1664159494": "Paese", "-749870311": "Contattaci tramite <0>chat live.", "-1084991359": "La verifica dell'identità non è necessaria", @@ -2464,21 +2421,54 @@ "-142444667": "Per modificare la password di Deriv MT5, fai clic sul link presente nell'e-mail.", "-742748008": "Apri la posta elettronica e clicca sul link ricevuto per continuare.", "-84068414": "Non hai ricevuto ancora l'e-mail? Contattaci tramite <0>chat live.", + "-975118358": "Il tuo conto sarà aperto con {{legal_entity_name}}, regolamentata dalla Malta Financial Services Authority (MFSA), e sarà sottoposto alla legge di Malta.", + "-2073934245": "I servizi di trading finanziario offerti su questo sito sono disponibili esclusivamente per i clienti che accettano la possibilità di perdere tutto il denaro investito e comprendono a fondo il rischio legato all'acqusito di contratti finanziari. Le operazioni relative a tali contratti comportano un elevato livello di rischio; se il contratto acquistato termina con valore nullo, perdererai tutto il denaro investito, compresso il premio contrattuale.", + "-1125193491": "Aggiungi conto", + "-2068229627": "Non sono un soggetto PEP e non lo sono stato negli ultimi 12 mesi.", + "-186841084": "Modifica la tua email di accesso", + "-907403572": "Per modificare il tuo indirizzo email, devi prima scollegare il tuo indirizzo email dal tuo conto {{identifier_title}}.", + "-1850792730": "Scollegato da {{identifier_title}}", "-428335668": "Per completare la procedura, dovrai impostare una password.", + "-1232613003": "<0>Autenticazione fallita. <1>Perché?", + "-2029508615": "<0>Necessaria autenticazione. <1>Verifica ora", "-818898181": "Il nome nel documento non corrisponde al suo profilo Deriv.", "-310316375": "L'indirizzo nel documento non corrisponde all'indirizzo inserito in precedenza.", "-485368404": "Documento emesso più di 6 mesi fa.", "-367016488": "Documento sfocato. Tutte le informazioni devono essere chiare e visibili.", "-1957076143": "Documento ritagliato. Tutte le informazioni devono essere chiare e visibili.", + "-1576856758": "An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.", + "-231863107": "No", + "-870902742": "Quanta conoscenza ed esperienza hai sul trading online?", + "-1929477717": "Ho un titolo accademico, una certificazione professionale e/o un'esperienza lavorativa relativa ai servizi finanziari.", + "-1540148863": "Ho partecipato a seminari, corsi di formazione e/o workshop relativi al trading.", + "-922751756": "Meno di un anno", + "-542986255": "Nessuna", + "-1337206552": "Secondo le tue conoscenze, il trading con i CFD ti consente di", + "-456863190": "Metti una posizione sul movimento del prezzo di un asset il cui risultato è un rendimento fisso o nullo.", + "-1314683258": "Effettuare un investimento a lungo termine per un profitto garantito.", + "-1546090184": "Come influisce la leva sul trading di CFD?", + "-1636427115": "La leva finanziaria ti aiuta a mitigare il rischio.", + "-800221491": "La leva finanziaria garantisce profitti.", + "-811839563": "La leva finanziaria consente di aprire posizioni di grandi dimensioni per una frazione del valore della transazione, portando ad un possibile aumento dei profitti o delle perdite.", + "-1185193552": "Chiudere il trade automaticamente quando la perdita è pari o superiore a un importo specificato, purché vi sia un'adeguata liquidità di mercato.", + "-1046354": "Chiudere il trade automaticamente quando il profitto è pari o superiore a un importo specificato, purché vi sia un'adeguata liquidità di mercato.", + "-1842858448": "Ottenere un profitto garantito sull'operazione.", + "-860053164": "Quando si fa trading con moltiplicatori.", + "-1250327770": "Quando si acquistano azioni di una società.", + "-1222388581": "Tutte le precedenti.", "-1515286538": "Inserisci il numero di documento. ", "-1694758788": "Inserisci il numero di documento", "-1458676679": "È necessario inserire da 2 a 50 caratteri.", + "-1176889260": "Seleziona un tipo di documento.", + "-1265050949": "identity document", "-2139303636": "È possibile che il colegamento si sia interrotto, o che l'indirizzo della pagina sia cambiato.", "-1448368765": "Codice errore: {{error_code}} pagina non trovata", "-254792921": "Al momento puoi solo effettuare depositi. Per abilitare i prelievi, completa la tua valutazione finanziaria.", "-1437017790": "Informazioni finanziarie", "-70342544": "Siamo tenuti legalmente a richiedere le tue informazioni finanziarie.", "-39038029": "Esperienza di trading", + "-601903492": "Esperienza di trading su Forex", + "-1012699451": "Esperienza di trading su CFD", "-1894668798": "Esperienza con altri strumenti di trading", "-1026468600": "Frequenza di utilizzo di altri strumenti di trading", "-1743024217": "Seleziona lingua", @@ -2489,6 +2479,11 @@ "-536187647": "Confermi la revoca dell'accesso?", "-1357606534": "Autorizzazione", "-570222048": "Revoca l'accesso", + "-80717068": "App che hai collegato alla tua <0>password di Deriv:", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "Usa la <0>password Deriv per accedere a {{brand_website_name}} e {{platform_name_trader}}.", + "-623760979": "Utilizzi la <0>password Deriv per accedere a {{brand_website_name}}, {{platform_name_trader}} e {{platform_name_go}}.", + "-459147994": "Utilizzi la <0>password Deriv per accedere a {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} e {{platform_name_ctrader}}.", "-1526404112": "Fatture relative a servizi di uso domestico: elettricità, acqua, gas, o rete fissa.", "-537552700": "Contratto di affitto della casa: contratto valido e attuale.", "-890084320": "Salva e invia", @@ -2859,6 +2854,30 @@ "-1016171176": "Asset", "-621128676": "Tipologia di trade", "-447853970": "Soglia delle perdite", + "-155173714": "Costruiamo un bot!", + "-1919212468": "3. Puoi anche cercare i blocchi utilizzando la barra di ricerca sopra le categorie.", + "-1520558271": "Per ulteriori informazioni, dai un'occhiata a questo post del blog sulle basi della creazione di un bot di trading.", + "-980360663": "3. Scegli il blocco che desideri e trascinalo nell'area di lavoro.", + "-1493168314": "Cos'è una strategia rapida?", + "-1680391945": "Usare una strategia rapida", + "-1177914473": "Come salvo la mia strategia?", + "-271986909": "In Bot Builder, premi Salva nella barra degli strumenti in alto per scaricare il tuo bot. Assegna un nome al bot e scegli di scaricarlo sul tuo dispositivo o su Google Drive. Il bot verrà scaricato come file XML.", + "-1149045595": "1. Dopo aver premuto Importa, seleziona Local e fai clic su Continua.", + "-288041546": "2. Seleziona il tuo file XML e premi Apri.", + "-2127548288": "3. Il tuo bot verrà caricato di conseguenza.", + "-1311297611": "1. Dopo aver premuto Importa, seleziona Google Drive e fai clic su Continua.", + "-1549564044": "Come reimposto l'area di lavoro?", + "-1127331928": "In Bot Builder, premi Reset nella barra degli strumenti in alto. Questo cancellerà l'area di lavoro. Tieni presente che tutte le modifiche non salvate andranno perse.", + "-1720444288": "Come posso controllare le mie perdite con Deriv Bot?", + "-1142295124": "Esistono diversi modi per controllare le perdite con Deriv Bot. Ecco un semplice esempio di come può implementare il controllo delle perdite nella sua strategia:", + "-986689483": "1. Crea le seguenti variabili:", + "-269910127": "3. Aggiorna i profitti/perdite correnti con il profitto dell'ultimo contratto. Se l'ultimo contratto è andato perso, il valore dell'utile/perdita corrente sarà negativo.", + "-1565344891": "Posso eseguire Deriv Bot su più schede del mio browser web?", + "-90192474": "Sì, puoi. Tuttavia, ci sono dei limiti sul tuo account, come il numero massimo di posizioni aperte e il numero massimo di pagamenti aggregati sulle posizioni aperte. Quindi, tieni a mente questi limiti quando apri più posizioni. Puoi trovare maggiori informazioni su questi limiti in Impostazioni > Limiti dell'account.", + "-213872712": "No, non offriamo criptovalute su Deriv Bot.", + "-2147346223": "In quali Paesi è disponibile Deriv Bot?", + "-352345777": "Quali sono le strategie più popolari per il trading automatico?", + "-552392096": "Tre delle strategie più comunemente utilizzate nel trading automatico sono Martingala, D'Alembert e Oscar's Grind - le può trovare tutte pronte e in attesa di essere utilizzate in Deriv Bot.", "-507620484": "Non salvato", "-764102808": "Google Drive", "-555886064": "Vinto", @@ -2937,30 +2956,6 @@ "-1823621139": "Strategia rapida", "-1778025545": "Hai importato con successo un bot.", "-1519425996": "Nessun risultato trovato \"{{ faq_search_value }}»", - "-155173714": "Costruiamo un bot!", - "-1919212468": "3. Puoi anche cercare i blocchi utilizzando la barra di ricerca sopra le categorie.", - "-1520558271": "Per ulteriori informazioni, dai un'occhiata a questo post del blog sulle basi della creazione di un bot di trading.", - "-980360663": "3. Scegli il blocco che desideri e trascinalo nell'area di lavoro.", - "-1493168314": "Cos'è una strategia rapida?", - "-1680391945": "Usare una strategia rapida", - "-1177914473": "Come salvo la mia strategia?", - "-271986909": "In Bot Builder, premi Salva nella barra degli strumenti in alto per scaricare il tuo bot. Assegna un nome al bot e scegli di scaricarlo sul tuo dispositivo o su Google Drive. Il bot verrà scaricato come file XML.", - "-1149045595": "1. Dopo aver premuto Importa, seleziona Local e fai clic su Continua.", - "-288041546": "2. Seleziona il tuo file XML e premi Apri.", - "-2127548288": "3. Il tuo bot verrà caricato di conseguenza.", - "-1311297611": "1. Dopo aver premuto Importa, seleziona Google Drive e fai clic su Continua.", - "-1549564044": "Come reimposto l'area di lavoro?", - "-1127331928": "In Bot Builder, premi Reset nella barra degli strumenti in alto. Questo cancellerà l'area di lavoro. Tieni presente che tutte le modifiche non salvate andranno perse.", - "-1720444288": "Come posso controllare le mie perdite con Deriv Bot?", - "-1142295124": "Esistono diversi modi per controllare le perdite con Deriv Bot. Ecco un semplice esempio di come può implementare il controllo delle perdite nella sua strategia:", - "-986689483": "1. Crea le seguenti variabili:", - "-269910127": "3. Aggiorna i profitti/perdite correnti con il profitto dell'ultimo contratto. Se l'ultimo contratto è andato perso, il valore dell'utile/perdita corrente sarà negativo.", - "-1565344891": "Posso eseguire Deriv Bot su più schede del mio browser web?", - "-90192474": "Sì, puoi. Tuttavia, ci sono dei limiti sul tuo account, come il numero massimo di posizioni aperte e il numero massimo di pagamenti aggregati sulle posizioni aperte. Quindi, tieni a mente questi limiti quando apri più posizioni. Puoi trovare maggiori informazioni su questi limiti in Impostazioni > Limiti dell'account.", - "-213872712": "No, non offriamo criptovalute su Deriv Bot.", - "-2147346223": "In quali Paesi è disponibile Deriv Bot?", - "-352345777": "Quali sono le strategie più popolari per il trading automatico?", - "-552392096": "Tre delle strategie più comunemente utilizzate nel trading automatico sono Martingala, D'Alembert e Oscar's Grind - le può trovare tutte pronte e in attesa di essere utilizzate in Deriv Bot.", "-418247251": "Scarica il tuo registro.", "-2123571162": "Scarica", "-870004399": "<0>Acquistato:{{longcode}} (ID: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "Schermo intero", "-1823504435": "Visualizza notifiche", "-1954045170": "Nessuna valuta assegnata", - "-583559763": "Menu", "-1591792668": "Limiti del conto", "-34495732": "Informazioni sulle normative", "-1496158755": "Vai su Deriv.com", @@ -3259,6 +3253,7 @@ "-818926350": "La commissioni finanziaria accetta appelli per 45 giorni dopo la data dell'incidente e solo dopo che il trader ha provato a risolvere il problema direttamente con la società.", "-1825471709": "Una nuova esperienza di trading su una piattaforma semplice ed efficiente.", "-981017278": "Trading automatizzato e a portata di mano, senza bisogno di codifiche.", + "-583559763": "Menu", "-778309978": "Il link su cui hai fatto clic è scaduto. Assicurati di fare clic sul link nell'ultima e-mail nella tua casella di posta. In alternativa, inserisci la tua email qui sotto e fai clic su <0>Reinvia e-mail per un nuovo link.", "-336222114": "Segua questi semplici passi per risolvere il problema:", "-1064116456": "Cerchi il broker <0>Deriv Holdings (Guernsey) Limited e lo selezioni.", @@ -3415,22 +3410,6 @@ "-1282933308": "Non {{barrier}}", "-968190634": "Uguale a {{barrier}}", "-1747377543": "Inferiore a {{barrier}}", - "-256210543": "Al momento non è possibile avviare il trading.", - "-1150099396": "Stiamo lavorando per rendere questo servizio disponbile a breve. Se lo possiedi, accedi a un altro conto per continuare a fare trading; puoi anche aggiungere un conto finanziario Deriv MT5.", - "-28115241": "{{platform_name_trader}} non è disponibile per questo conto", - "-453920758": "Vai sul dashboard {{platform_name_mt5}}", - "-402175529": "Cronologia", - "-902712434": "Cancellazione", - "-988484646": "Cancellazione (conclusa)", - "-444882676": "Cancellazione (attiva)", - "-13423018": "ID di riferimento", - "-2035315547": "Barriera inferiore", - "-1551639437": "Nessuna cronologia", - "-1214703885": "Non hai ancora aggiornato il take profit o lo stop loss", - "-504849554": "Riapre alle", - "-59803288": "Intanto prova i nostri indici sintetici: simulano la volatilità del mercato reale e sono aperti 24/7.", - "-1278109940": "Vedi i mercati aperti", - "-694105443": "Il mercato è chiuso", "-1043795232": "Posizioni recenti", "-1511825574": "Profitto/Perdita:", "-726626679": "Profitto/perdita potenziale:", @@ -3455,21 +3434,15 @@ "-1435392215": "Cancellazione", "-2017825013": "Capito", "-1192773792": "Non mostrare più questo messaggio", + "-902712434": "Cancellazione", "-1280319153": "Annulla i trade in qualsiasi momento entro un termine stabilito. Si attiva automaticamente se il trade raggiunge il livello di stop out entro il termine stabilito.", "-471757681": "Gestione del rischio", "-843831637": "Stop loss", "-771725194": "Cancellazione", "-338707425": "La durata minima è 1 giorno", "-1003473648": "Durata: {{duration}} giorni", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "Il payout alla scadenza è pari al payout per punto moltiplicato per la differenza tra il prezzo finale e il prezzo d'esercizio.", "-1527492178": "Acquisto bloccato", "-725375562": "Puoi bloccare/sbloccare il pulsante di acquisto dal menu Impostazioni", - "-774638412": "La posta in gioco deve essere compresa tra {{min_stake}} {{currency}} e {{max_stake}} {{currency}}", - "-1358367903": "Puntata", - "-434270664": "Prezzo attuale", - "-1956787775": "Prezzo Barriera:", - "-1513281069": "Barriera 2", "-390994177": "Dovrebbe essere compreso tra {{min}} e {{max}}", "-1804019534": "Scadenza: {{date}}", "-2055106024": "Alterna le impostazioni di durata semplici e avanzate", @@ -3484,6 +3457,7 @@ "-1763848396": "Put", "-194424366": "superiore", "-857660728": "Prezzo della puntata", + "-1358367903": "Puntata", "-1386326276": "È obbligatorio inserire una barriera.", "-1418742026": "La barriera superiore deve essere più alta rispetto a quella inferiore.", "-92007689": "La barriera inferiore deve essere più bassa rispetto a quella superiore.", @@ -3491,6 +3465,21 @@ "-1975910372": "I minuti devono essere inclusi tra 0 e 59.", "-866277689": "L'orario di scadenza non può essere nel passato.", "-1455298001": "Ora", + "-256210543": "Al momento non è possibile avviare il trading.", + "-1150099396": "Stiamo lavorando per rendere questo servizio disponbile a breve. Se lo possiedi, accedi a un altro conto per continuare a fare trading; puoi anche aggiungere un conto finanziario Deriv MT5.", + "-28115241": "{{platform_name_trader}} non è disponibile per questo conto", + "-453920758": "Vai sul dashboard {{platform_name_mt5}}", + "-402175529": "Cronologia", + "-988484646": "Cancellazione (conclusa)", + "-444882676": "Cancellazione (attiva)", + "-13423018": "ID di riferimento", + "-2035315547": "Barriera inferiore", + "-1551639437": "Nessuna cronologia", + "-1214703885": "Non hai ancora aggiornato il take profit o lo stop loss", + "-504849554": "Riapre alle", + "-59803288": "Intanto prova i nostri indici sintetici: simulano la volatilità del mercato reale e sono aperti 24/7.", + "-1278109940": "Vedi i mercati aperti", + "-694105443": "Il mercato è chiuso", "-439389714": "Ci stiamo lavorando", "-770929448": "Vai su {{platform_name_smarttrader}}", "-347156282": "Invia documento di verifica", @@ -3537,6 +3526,8 @@ "-454245976": "Se ritieni che il prezzo di mercato scenderà continuamente per un determinato periodo, scegli <0>Short. Riceverai un pagamento alla scadenza se il prezzo di mercato non tocca o supera la barriera. La tua vincita crescerà proporzionalmente alla distanza tra il prezzo di mercato e la barriera se la barriera non viene superata. Inizierai a realizzare un profitto quando la vincita sarà superiore alla tua puntata. Se il prezzo di mercato dovesse mai superare la barriera, non ci sarà alcun pagamento.", "-351875097": "Numero di tick", "-729830082": "Visualizza meno", + "-1669741470": "Il payout alla scadenza è pari al payout per punto moltiplicato per la differenza tra il prezzo finale e il prezzo d'esercizio.", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "NUOVO!", "-993480898": "Accumulatori", "-45873457": "NUOVO", @@ -3557,6 +3548,10 @@ "-690963898": "Il contratto verrà chiuso automaticamente quando il pagamento raggiunge questo importo.", "-511541916": "Il contratto verrà chiuso automaticamente al raggiungimento di questo numero di segni di spunta.", "-438655760": "<0>Nota: può chiudere l'operazione in qualsiasi momento. Sia consapevole del rischio di slippage.", + "-774638412": "La posta in gioco deve essere compresa tra {{min_stake}} {{currency}} e {{max_stake}} {{currency}}", + "-434270664": "Prezzo attuale", + "-1956787775": "Prezzo Barriera:", + "-1513281069": "Barriera 2", "-1683683754": "A lungo", "-1046859144": "<0>{{title}} Riceverai un pagamento se il prezzo di mercato rimane {{price_position}} e non tocca o supera la barriera. Altrimenti, il tuo pagamento sarà pari a zero.", "-1815023694": "al di sopra della barriera", diff --git a/packages/translations/src/translations/ko.json b/packages/translations/src/translations/ko.json index 4393cd678d7d..b8f2d38582fb 100644 --- a/packages/translations/src/translations/ko.json +++ b/packages/translations/src/translations/ko.json @@ -24,7 +24,6 @@ "27731356": "귀하의 계정이 일시적으로 중지되었습니다. 입금 및 인출을 다시 활성화하기 위해서는 <0>실시간 채팅을 통해 문의하시기 바랍니다.", "27830635": "Deriv (V) Ltd", "28581045": "실제 MT5 계좌 추가", - "30801950": "귀하의 계좌는 {{legal_entity_name}} 을 통해 개설될 것이며, 몰타 게임 규제 당국에 규제되고 몰타의 법률을 따르게 됩니다.", "33433576": "전자지갑을 이용하여 자금을 인출하시기 바랍니다.", "35089987": "귀하의 운전면허증의 앞면과 뒷면을 업로드하세요.", "41737927": "감사합니다", @@ -251,7 +250,6 @@ "284772879": "계약", "284809500": "파이낸셜 데모 (Financial Demo)", "287934290": "정말 이 거래를 취소하시겠습니까?", - "289898640": "이용 약관", "291744889": "<0>1.거래 매개 변수: <0>", "291817757": "Deriv 커뮤니티로 이동하여 API, API 토큰, Deriv API 사용 방법 등에 대해 알아보세요.", "292491635": "귀하께서 \"손절매”를 선택하시고 귀하의 손실을 제한할 금액을 명시하시면, 귀하의 손실이 해당 금액보다 많거나 같을 때 귀하의 포지션이 자동적으로 종료될 것입니다. 귀하의 손실은 종료시의 시장 가격에 따라 귀하께서 입력하신 금액보다 더 클 수 있습니다.", @@ -372,6 +370,7 @@ "427134581": "다른 파일 유형을 사용해 보세요.", "427617266": "비트코인", "428709688": "각 리포트 간에 귀하께서 선호하시는 시간 간격:", + "429970999": "To avoid delays, enter your <0>name exactly as it appears on your {{document_name}}.", "431267979": "다음은 이동 중에 Deriv Bot을 사용하는 방법에 대한 간단한 가이드입니다.", "432273174": "1:100", "432508385": "이익 실현: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. 시작 시 한 번 실행", "520136698": "붐 500 (Boom 500) 지수", "521872670": "항목", - "522283618": "디지털 옵션 거래 경험", "522703281": "다음으로 나눌 수 있습니다", "523123321": "- 10에 주어진 숫자가 지수로 거듭제곱", "524459540": "어떻게 변수를 생성하나요?", @@ -562,7 +560,6 @@ "642546661": "컴퓨터에서 라이선스의 뒷면을 업로드해주세요", "642995056": "이메일", "644150241": "스탯을 마지막으로 삭제한 이후부터 체결한 계약의 수.", - "645016681": "기타 금융 상품의 거래 빈도", "645902266": "EUR/NZD", "647039329": "주소 증명이 필요합니다", "647745382": "입력 목록 {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "이전 틱의 현물 가격입니다.", "812775047": "장벽 아래", "814827314": "차트의 스톱 아웃 레벨은 잠재적 손실이 전체 지분과 같아지는 가격을 나타냅니다. 시장 가격이 이 수준에 도달하면 포지션이 자동으로 청산됩니다. 이렇게 하면 손실이 계약 구매를 위해 지불한 금액을 초과하지 않습니다.", + "814936420": "{{ banner_message }}", "815925952": "이 블록은 필수입니다. 이 블록의 복사본은 하나만 허용됩니다. 파생 봇을 열면 기본적으로 캔버스에 추가됩니다.", "816580787": "다시 오신 것을 환영합니다! 귀하의 메시지들이 다시 복구 되었습니다.", "816738009": "<0/><1/>귀하께서는 해결되지 않은 분쟁에 대해 <2>금융 서비스 조정 오피스로 또한 요청하실 수 있습니다.", @@ -747,7 +745,6 @@ "836097457": "저는 트레이딩에 관심이 있지만 경험이 거의 없습니다.", "837063385": "이 주소로 다른 통화를 보내지 마세요.", "837066896": "귀하의 서류가 검토되고 있습니다 1일에서 3일 이후에 다시 확인바랍니다.", - "839618971": "주소", "839805709": "귀하를 문제없이 인증하기 위해서, 우리는 더 나은 사진이 필요합니다", "840672750": "그래도 문제가 해결되지 않으면 MT5 앱을 삭제했다가 다시 설치하세요. 그런 다음 <0>2단계와 <0>3단계를 다시 실행합니다.", "841434703": "스택 비활성화", @@ -965,6 +962,7 @@ "1061308507": "구매 {{ contract_type }}", "1062423382": "튜토리얼 탭에서 동영상 가이드와 FAQ를 살펴보고 봇을 구축하세요.", "1062536855": "일치", + "1062569830": "The <0>name on your identity document doesn't match your profile.", "1065275078": "cTrader는 현재 데스크톱에서만 사용할 수 있습니다.", "1065353420": "110+", "1065498209": "반복 (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3. 거래 매개변수를 설정하고 실행.", "1174748431": "결제 채널", "1175183064": "바누아투", - "1176926166": "다른 금융상품 거래와 함께 경험하세요", "1177396776": "귀하께서 만약 \"Asian Fall\"을 선택하시면, 만약 틱들의 평균보다 마지막 틱이 낮은 경우에 지불금을 받으시게 됩니다.", "1177723589": "표시할 거래가 없습니다", "1178582280": "귀하께서 스탯을 삭제한 이후로부터 귀하께서 잃은 계약의 수.", @@ -1150,6 +1147,7 @@ "1255963623": "일/시간 {{ input_timestamp }} {{ dummy }}", "1258097139": "더 발전하기 위해 우리가 무엇을 할 수 있을까요?", "1258198117": "양수", + "1259145708": "Let’s try again. Choose another document and enter the corresponding details.", "1259598687": "GBP/JPY", "1260259925": "전화번호가 적절한 형식으로 입력되어 있지 않습니다.", "1263387702": "{{count}} 의 모든 계좌 종류들은 시장 체결을 활용합니다. 이는 귀하께서 브로커의 가격에 사전동의하시고 해당되는 브로커의 가격으로 주문하실 것이라는 의미입니다.", @@ -1173,7 +1171,6 @@ "1289146554": "British Virgin Islands Financial Services Commission", "1289646209": "마진 콜", "1290525720": "예시: ", - "1291887623": "디지털 옵션 거래빈도", "1291997417": "계약은 선택한 만료일에 정확히 23:59:59(GMT)에 만료됩니다.", "1292188546": "Deriv MT5 투자자 비밀번호 재설정", "1292891860": "텔레그램 공지", @@ -1257,7 +1254,6 @@ "1367023655": "귀하의 손실이 귀하의 지분을 초과하지 않도록 확실히 하기 위해, 귀하의 손실이 <0/>와 같아질 경우 귀하의 계약은 자동적으로 종료될 것입니다.", "1367488817": "4. 거래 조건 재시작", "1367990698": "변동성 10 지수", - "1369709538": "우리의 이용약관", "1370647009": "더 높은 일일 한도를 즐기세요", "1371193412": "취소", "1371555192": "선호하시는 결제 에이전트를 선택하시고 인출 금액을 입력하세요. 귀하의 결제 에이전트가 목록에 없다면, <0>이들의 계좌번호를 사용하여 검색하세요.", @@ -1297,6 +1293,7 @@ "1413047745": "주어진 값을 하나의 변수에 할당합니다", "1413359359": "새로 송금하기", "1414205271": "소수", + "1414918420": "We'll review your proof of identity again and will give you an update as soon as possible.", "1415006332": "첫번째로부터 하부 목록 받기", "1415513655": "휴대폰에 cTrader를 다운로드하여 파생 cTrader 계정으로 거래하세요.", "1415974522": "귀하께서 만약 \"다름\"을 선택하시면, 마지막 틱의 마지막 숫자가 귀하의 예측과 같지 않을 때에 귀하께서 지불금을 받습니다.", @@ -1419,7 +1416,6 @@ "1542742708": "합성수지, 외환, 주식, 주가지수, 원자재 및 암호화폐", "1544642951": "만약 귀하께서 \"Only Ups\"를 선택하시면, 연속적인 틱들이 엔트리 스팟 이후 성공적으로 오를 경우 귀하께서 지불금을 받습니다. 만약 그 어떠한 틱이라도 떨어지거나 또는 이전의 틱과 동일하다면 지불금은 없습니다.", "1547148381": "파일이 너무 큽니다 (최대 8MB까지만 허용됩니다). 다른 파일을 업로드하세요.", - "1548765374": "문서 번호의 인증이 실패되었습니다", "1549098835": "인출된 총 금액", "1551172020": "AUD 바스켓", "1552162519": "온보딩 보기", @@ -1593,7 +1589,7 @@ "1740371444": "기초시장이 선택되지 않았습니다", "1742256256": "다음 문서 중 하나를 업로드 해주시기 바랍니다:", "1743448290": "지불 에이전트", - "1743679873": "<0>\"콜\"을 선택하면 <1>만기 시 <1>최종 가격이 <1>행사 가격 보다 높으면 <1>지급금을 받게 됩니다. 그렇지 않으면 지급금을 받지 못합니다.", + "1743679873": "<0>\"Call\" 을 선택한 경우 <1>최종 가격이 <1>행사 가격보다 높으면 <1>지급을 받게 됩니다. <1>만료 시. 그렇지 않으면 판매 대금을 받을 수 없습니다.", "1743902050": "귀하의 금융 평가를 완료해주세요", "1744509610": "컴퓨터에서 작업 영역으로 XML 파일을 끌어오기만 하면 봇이 그에 따라 로드됩니다. 또는 Bot Builder에서 가져오기를 누르고 컴퓨터 또는 Google 드라이브에서 봇을 가져오도록 선택할 수 있습니다.", "1745523557": "- 제곱근", @@ -1647,6 +1643,7 @@ "1790770969": "FX-메이저 (스탠다드/마이크로 랏), FX-마이너, 원자재, 암호화폐", "1791432284": "국가 검색", "1791971912": "최근", + "1792037169": "To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your {{document_name}}.", "1793913365": "자금을 예금하기 위해서는, 귀하의 {{currency_symbol}} 계좌로 변경해주시기 바랍니다.", "1794815502": "귀하의 거래 내역을 다운로드하세요.", "1796787905": "다음의 문서(들) 을 업로드하시기 바랍니다.", @@ -1680,7 +1677,7 @@ "1821818748": "운전면허증 참조 번호 입력", "1823177196": "최고의 인기", "1824193700": "이 블록은 귀하에게 마지막 틱의 값에 대한 마지막 숫자를 제공합니다.", - "1824292864": "콜 (Call)", + "1824292864": "Call", "1827607208": "파일이 업로드되지 않았습니다.", "1828370654": "온보딩", "1830520348": "{{platform_name_dxtrade}} 비밀번호", @@ -1792,7 +1789,6 @@ "1924765698": "출생지*", "1926987784": "- iOS: 계정을 왼쪽으로 스와이프하고 <0>삭제를 탭합니다.", "1928930389": "GBP/NOK", - "1929309951": "고용 상태", "1929694162": "계좌 비교", "1930899934": "테더", "1931659123": "모든 틱에 대해서 실행하세요", @@ -1966,12 +1962,12 @@ "2115223095": "손실", "2117165122": "1. 텔레그램 봇을 생성하시고 귀하의 텔레그램 API 토큰을 가지세요. 텔레그램에서 어떻게 봇을 생성하는지에 대해서는 다음의 링크에서 더 읽어보세요: https://core.telegram.org/bots#6-botfather", "2117489390": "{{ remaining }}초 후에 자동으로 업데이트 됩니다", - "2118315870": "귀하께서는 어디에 사시나요?", "2119449126": "아래 예시의 결과 예는 다음과 같을 것입니다:", "2119710534": "자주 하는 질문들", "2121227568": "NEO/USD", "2122152120": "자산", "2127564856": "인출기능이 잠겨져 있습니다", + "2129807378": "Update profile", "2131963005": "다음의 Deriv MT5 계좌(들)로부터 귀하의 자금을 인출해 주시기 바랍니다:", "2133451414": "기간", "2133470627": "이 블록은 선택된 거래 종류에 대한 잠재적인 지불금을 불러옵니다. 이 블록은 오직 \"구매 조건\" 루트 블록 내에서만 이용될 수 있습니다.", @@ -1992,8 +1988,6 @@ "2146698770": "전문가 팁: 원하는 블록을 클릭하여 드래그할 수도 있습니다.", "2146892766": "바이너리 옵션 거래 경험", "2147244655": "내 트레이딩 봇을 파생 봇으로 가져오려면 어떻게 해야 하나요?", - "-1232613003": "<0>인증이 실패되었습니다. <1>왜 그런가요?", - "-2029508615": "<0>인증이 필요합니다.<1>지금 인증하세요", "-931052769": "인증 제출하기", "-1004605898": "팁", "-1938142055": "문서가 업로드되었습니다", @@ -2141,18 +2135,9 @@ "-179726573": "저희는 귀하의 소유권 증명을 받았습니다.", "-813779897": "소유권 증명 검증이 통과되었습니다.", "-638756912": "귀하의 직불/신용 카드 앞면에 표시되어 있는 카드 번호의 7 ~ 12자리 숫자를 검게 가리세요.", - "-2073934245": "이 사이트에서 제공되는 금융 거래 서비스는 투자한 금액을 모두 잃을 수 있는 가능성을 받아들이고 금융 계약의 구매에 연루되어 있는 위험에 대한 경험을 보유하신 고개분들만을 위한 것입니다. 금융 계약에서의 거래는 높은 수준의 위험을 수반합니다. 만약 귀하께서 구매하신 계약이 아무 가치가 없는 것으로 만기되면, 귀하께서는 해당되는 계약 프리미엄을 포함하는 투자하신 모든 부분을 잃게 될 것입니다.", - "-1166068675": "귀하의 계좌는 영국 도박 위원회 (UKGC) 에 의해 규제되는 {{legal_entity_name}} 를 통해 개설될 것이며, 맨섬의 법률을 따를 것입니다.", - "-975118358": "귀하의 계좌는 몰타 금융 서비스 당국 (MFSA) 에 의해 규제되는 {{legal_entity_name}} 을 통해 개설될 것이며, 몰타의 법률을 따를 것입니다.", - "-680528873": "귀하의 계좌는 {{legal_entity_name}} 을 통해 개설될 것이며 사모아의 법률에 따를 것입니다.", - "-1125193491": "계좌 추가", - "-2068229627": "저는 PEP가 아니며 지난 12개월간 PEP가 된 적이 없습니다.", "-684271315": "확인", "-740157281": "트레이딩 경험 평가", "-1720468017": "당사는 귀하에게 서비스를 제공할 때, 해당 상품 또는 서비스가 귀하에게 적합한지 여부를 평가하기 위해 귀하로부터 정보를 수집해야 합니다.", - "-186841084": "귀하의 로그인 이메일을 변경하세요", - "-907403572": "귀하의 이메일 주소를 변경하기 위해서는, 먼저 귀하의 {{identifier_title}} 계정과 이메일 주소의 연결을 해제해야 합니다.", - "-1850792730": "{{identifier_title}}로부터 연결해제", "-307865807": "위험 허용 경고", "-690100729": "네, 위험을 이해합니다.", "-2010628430": "CFD 및 기타 금융 상품은 레버리지로 인해 빠르게 자금을 잃을 위험이 높습니다. CFD 및 기타 금융 상품의 원리를 이해하시고 있는지와 자금을 잃을 수 있는 높은 위험을 감당할 수 있는지를 이해하시고 있는지 여부를 고려해야 합니다. <0/><0/>귀하의 자본이 위험에 처해 있다는 점을 이해하고 있는지를 확인하셔야 합니다.", @@ -2206,11 +2191,6 @@ "-1725454783": "실패되었습니다", "-506510414": "날짜 및 시간", "-1708927037": "IP 주소", - "-619126443": "{{brand_website_name}}, {{platform_name_trader}} 및 {} 에 로그인 하시기 위해 <0>Deriv 비밀번호를 사용하세요.", - "-623760979": "<0>Deriv 비밀번호를 사용하여 {{brand_website_name}}, {{platform_name_trader}} 및 {{platform_name_go}}에 로그인합니다.", - "-459147994": "<0>Deriv 비밀번호를 사용하여 {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} 및 {{platform_name_ctrader}}에 로그인합니다.", - "-80717068": "귀하의 <0>Deriv 비밀번호와 연결되어 있는 앱:", - "-9570380": "웹과 모바일 앱에서 귀하의 {{platform_name_dxtrade}} 계정들에 로그인 하시기 위해 {{platform_name_dxtrade}} 비밀번호를 이용하세요.", "-2131200819": "비활성화", "-200487676": "활성화", "-1840392236": "올바른 코드가 아닙니다. 다시 시작해주세요.", @@ -2240,44 +2220,37 @@ "-378415317": "주의 입력이 요구됩니다", "-1497654315": "저지섬의 우편번호에 대해서는 저희의 계좌들과 서비스들을 이용하실 수 없습니다.", "-755626951": "귀하의 주소 상세정보를 완료하세요", - "-584911871": "지갑의 통화를 선택하세요", "-1461267236": "귀하의 통화를 선택해주세요", - "-1352330125": "통화", "-1027595143": "$25,000 이하", "-40491332": "$25,000 - $50,000", "-1139806939": "$50,001 - $100,000", - "-626752657": "0-1 년", - "-532014689": "1-2 년", - "-1001024004": "3년에 걸쳐", - "-790513277": "지난 12월간에 걸친 6건에서 10건의 거래량", - "-580085300": "지난 12개월간에 걸친 11건에서 39건의 거래량", - "-654781670": "주요의", - "-1717373258": "이차의", "-996132458": "건설", "-915003867": "건강", "-1430012453": "정보 & 통신 기술", "-987824916": "과학 & 공학", "-146630682": "사회적 & 문화적", "-761306973": "제조", - "-739367071": "취업되어 있는 상태", - "-1156937070": "$500,001 - $1,000,000", - "-315534569": "$1,000,000 이상", - "-2068544539": "정규직 직장인", - "-531314998": "투자금 & 배당금", - "-1235114522": "연금", - "-1298056749": "주 보조금", - "-449943381": "저축 금액 & 상속", "-1631552645": "전문가", "-474864470": "개인 간병, 판매 및 서비스 종사자", "-1129355784": "농업, 삼림업 및 어업 종사자", "-1242914994": "공예, 금속, 전기 및 전자 종사자", "-1317824715": "클리너 및 도우미", "-1592729751": "광산, 건설, 제조 및 운송 종사자", + "-1030759620": "공무원", "-2137323480": "회사 소유권", "-1590574533": "이혼 위자료", "-1667683002": "상속", "-1237843731": "투자 수입", "-777506574": "자산의 판매", + "-654781670": "주요의", + "-1717373258": "이차의", + "-1156937070": "$500,001 - $1,000,000", + "-315534569": "$1,000,000 이상", + "-2068544539": "정규직 직장인", + "-531314998": "투자금 & 배당금", + "-1235114522": "연금", + "-1298056749": "주 보조금", + "-449943381": "저축 금액 & 상속", "-1161338910": "이름은 필수 입력사항입니다", "-1161818065": "성은 2~50자 사이여야 합니다.", "-1281693513": "생일은 필수 입력사항입니다.", @@ -2287,28 +2260,14 @@ "-212167954": "세금 식별 번호의 형식이 올바르지 않습니다.", "-621555159": "신분 정보", "-204765990": "이용약관", - "-231863107": "없습니다", - "-870902742": "온라인 트레이딩에 대한 지식과 경험은 어느 정도인가요?", - "-1929477717": "학업 학위, 전문 자격증, 및/또는 금융 서비스와 관련된 업무 경험이 있습니다.", - "-1540148863": "트레이딩과 관련된 세미나, 교육 및/또는 워크샵에 참석했습니다.", - "-922751756": "1년 미만", - "-542986255": "없음", - "-1337206552": "이해하시겠지만, CFD 거래를 통해 다음을 수행하실 수 있습니다", - "-456863190": "결과가 고정수익이거나 또는 수익이 전혀 없는 자산 가격 변동에 포지션을 설정하세요.", - "-1314683258": "수익 보장을 위해 장기 투자를 하세요.", - "-1546090184": "레버리지는 CFD 거래에 어떤 영향이 있나요?", - "-1636427115": "레버리지는 위험을 완화하는 데 도움이 됩니다.", - "-800221491": "레버리지는 수익을 보장합니다.", - "-811839563": "레버리지를 활용하면 거래 가치의 일부만으로 큰 포지션을 개설할 수 있으며, 이로 인해 수익 또는 손실이 증가할 수 있습니다.", - "-1185193552": "시장 유동성이 충분하다면 손실이 지정된 금액 이상일 때 자동으로 귀하의 거래를 종료하세요.", - "-1046354": "시장 유동성이 충분하다면 수익이 지정된 금액 이상일 때 귀하의 거래를 자동으로 마감하세요.", - "-1842858448": "거래에서 수익을 보장하세요.", - "-860053164": "승수를 거래할 때.", - "-1250327770": "회사의 주식을 살 때.", - "-1222388581": "위 항목 전체.", "-477761028": "유권자 신분증", "-1466346630": "CPF", - "-1030759620": "공무원", + "-739367071": "취업되어 있는 상태", + "-626752657": "0-1 년", + "-532014689": "1-2 년", + "-1001024004": "3년에 걸쳐", + "-790513277": "지난 12월간에 걸친 6건에서 10건의 거래량", + "-580085300": "지난 12개월간에 걸친 11건에서 39건의 거래량", "-612752984": "우리가 귀하의 계좌에 적용하는기본적인 제한이 있습니다.", "-1598263601": "거래 제한과 거래 제한이 어떻게 적용되는지 더 알고싶으시면, <0>헬프센터로 가시기 바랍니다.", "-1411635770": "계좌 한도에 대해 더 배워보세요", @@ -2326,10 +2285,7 @@ "-1500958859": "인증", "-1502578110": "귀하의 계좌가 인증 완료되었으며 인출한도가 풀렸습니다.", "-1662154767": "최근의 공과금 (예 전기세, 수도세, 가스세, 통신비, 또는 인터넷 요금), 은행 잔고증명서, 또는 귀하의 이름과 해당 주소가 표시되어 있는 정부에서 발급된 레터.", - "-190838815": "검증을 위해 우리는 이것을 필요로 합니다. 만약 귀하께서 제공하시는 정보가 가짜이거나 부정확한 경우, 귀하께서는 입금 및 인출을 하실 수 없게 됩니다.", - "-223216785": "주소의 둘째 줄*", "-594456225": "주소의 둘째 줄", - "-1940457555": "우편번호*", "-1964954030": "우편번호", "-516397235": "이 토큰을 누구와 공유하는지에 대해 주의하시기 바랍니다. 이 토큰을 가진 사람들은 귀하의 계좌를 대신하여 누구나 다음의 작업을 수행할 수 있습니다.", "-989216986": "계좌 추가", @@ -2371,8 +2327,6 @@ "-1100235269": "고용산업부문", "-684388823": "예상되는 순수 가치", "-509054266": "예상되는 연간 턴오버", - "-601903492": "외환 거래 경험", - "-1012699451": "CFD 거래 경험", "-1588485629": "예", "-1117345066": "문서 종류를 선택하세요", "-651192353": "샘플:", @@ -2393,18 +2347,21 @@ "-1944264183": "거래를 계속 진행하기 위해서, 귀하께서는 반드시 신분증명을 제출하셔야 합니다.", "-1088324715": "저희는 귀하의 문서를 검토한 후 해당 상태를 영업일 기준으로 1~3일 이내로 공지해 드리겠습니다.", "-329713179": "예", - "-1176889260": "문서의 종류를 선택해 주시기 바랍니다.", - "-1926456107": "귀하꼐서 제출하신 신분증은 만료되었습니다.", - "-555047589": "귀하의 신분증이 만료된 것으로 보입니다. 유효한 문서로 재시도 해주시기 바랍니다.", - "-841187054": "재시도하기", + "-895884696": "The <0>name and <0>date of birth on your identity document don't match your profile.", + "-1792723131": "To avoid delays, enter your <0>date of birth exactly as it appears on your {{document_name}}.", + "-886317740": "The <0>date of birth on your identity document doesn't match your profile.", + "-1813671961": "Your identity verification failed because:", "-2097808873": "우리는 귀하께서 제공하신 세부정보로 귀하의 ID를 검증할 수 없었습니다. ", - "-228284848": "우리는 귀하께서 제공하신 세부정보와 함께 귀하의 ID를 검증할 수 없었습니다.", + "-1652371224": "Your profile is updated", + "-504784172": "Your document has been submitted", "-1391934478": "귀하의 ID는 검증되었습니다. 귀하께서는 귀하의 주소증명 또한 제출하셔야 합니다.", "-118547687": "ID가 검증되었습니다", "-200989771": "세부 인적사항으로 가기", "-1358357943": "신분증명을 제출하기시 이전에 귀하의 우편번호를 확인 및 업데이트 해주시기 바랍니다.", "-1401994581": "귀하의 세부인적사항이 빠졌습니다", "-2004327866": "문서가 발급된 유효한 국가를 선택해 주시기 바랍니다.", + "-1627868670": "Your identity document has expired.", + "-1606307809": "We were unable to verify the identity document with the details provided.", "-1664159494": "국가", "-749870311": "<0>라이브 챗을 통해 우리에게 연락해주시기 바랍니다.", "-1084991359": "신분인증 증명이 필요하지 않습니다", @@ -2464,21 +2421,54 @@ "-142444667": "귀하의 Deriv MT5 비밀번호를 변경하기 위해 이메일에 있는 링크를 클릭하시기 바랍니다.", "-742748008": "진행하시기 위해 귀하의 이메일을 확인하시고 이메일에 있는 링크를 클릭하세요.", "-84068414": "이메일을 아직 받지 못하셨나요? <0>라이브 챗.을 통해 저희에게 연락해 주시기 바랍니다", + "-975118358": "귀하의 계좌는 몰타 금융 서비스 당국 (MFSA) 에 의해 규제되는 {{legal_entity_name}} 을 통해 개설될 것이며, 몰타의 법률을 따를 것입니다.", + "-2073934245": "이 사이트에서 제공되는 금융 거래 서비스는 투자한 금액을 모두 잃을 수 있는 가능성을 받아들이고 금융 계약의 구매에 연루되어 있는 위험에 대한 경험을 보유하신 고개분들만을 위한 것입니다. 금융 계약에서의 거래는 높은 수준의 위험을 수반합니다. 만약 귀하께서 구매하신 계약이 아무 가치가 없는 것으로 만기되면, 귀하께서는 해당되는 계약 프리미엄을 포함하는 투자하신 모든 부분을 잃게 될 것입니다.", + "-1125193491": "계좌 추가", + "-2068229627": "저는 PEP가 아니며 지난 12개월간 PEP가 된 적이 없습니다.", + "-186841084": "귀하의 로그인 이메일을 변경하세요", + "-907403572": "귀하의 이메일 주소를 변경하기 위해서는, 먼저 귀하의 {{identifier_title}} 계정과 이메일 주소의 연결을 해제해야 합니다.", + "-1850792730": "{{identifier_title}}로부터 연결해제", "-428335668": "귀하께서는 이 절차를 완료하시기 위해 비밀번호를 설정하셔야 합니다.", + "-1232613003": "<0>인증이 실패되었습니다. <1>왜 그런가요?", + "-2029508615": "<0>인증이 필요합니다.<1>지금 인증하세요", "-818898181": "문서의 이름이 파생 프로필과 일치하지 않습니다.", "-310316375": "문서의 주소가 위에 입력한 주소와 일치하지 않습니다.", "-485368404": "6개월 이상 전에 발급된 문서.", "-367016488": "흐릿한 문서. 모든 정보는 명확하고 눈에 잘 띄어야 합니다.", "-1957076143": "자른 문서. 모든 정보는 명확하고 눈에 띄어야 합니다.", + "-1576856758": "An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.", + "-231863107": "없습니다", + "-870902742": "온라인 트레이딩에 대한 지식과 경험은 어느 정도인가요?", + "-1929477717": "학업 학위, 전문 자격증, 및/또는 금융 서비스와 관련된 업무 경험이 있습니다.", + "-1540148863": "트레이딩과 관련된 세미나, 교육 및/또는 워크샵에 참석했습니다.", + "-922751756": "1년 미만", + "-542986255": "없음", + "-1337206552": "이해하시겠지만, CFD 거래를 통해 다음을 수행하실 수 있습니다", + "-456863190": "결과가 고정수익이거나 또는 수익이 전혀 없는 자산 가격 변동에 포지션을 설정하세요.", + "-1314683258": "수익 보장을 위해 장기 투자를 하세요.", + "-1546090184": "레버리지는 CFD 거래에 어떤 영향이 있나요?", + "-1636427115": "레버리지는 위험을 완화하는 데 도움이 됩니다.", + "-800221491": "레버리지는 수익을 보장합니다.", + "-811839563": "레버리지를 활용하면 거래 가치의 일부만으로 큰 포지션을 개설할 수 있으며, 이로 인해 수익 또는 손실이 증가할 수 있습니다.", + "-1185193552": "시장 유동성이 충분하다면 손실이 지정된 금액 이상일 때 자동으로 귀하의 거래를 종료하세요.", + "-1046354": "시장 유동성이 충분하다면 수익이 지정된 금액 이상일 때 귀하의 거래를 자동으로 마감하세요.", + "-1842858448": "거래에서 수익을 보장하세요.", + "-860053164": "승수를 거래할 때.", + "-1250327770": "회사의 주식을 살 때.", + "-1222388581": "위 항목 전체.", "-1515286538": "귀하의 문서 번호를 입력해 주시기 바랍니다. ", "-1694758788": "문서 번호 입력", "-1458676679": "문자수는 2개에서 50개 사이로 입력하셔야 합니다.", + "-1176889260": "문서의 종류를 선택해 주시기 바랍니다.", + "-1265050949": "identity document", "-2139303636": "귀하께서는 깨진 링크를 따라가셨거나 또는 해당 페이지는 새로운 주소로 이동 되었습니다.", "-1448368765": "에러 코드: {{error_code}} 페이지가 발견되지 않았습니다", "-254792921": "현재는 입금만 가능합니다. 인출을 활성화하시려면 재무 평가를 완료해 주시기 바랍니다.", "-1437017790": "재무 정보", "-70342544": "우리는 귀하의 금융 정보를 요청해야 할 법적 의무가 있습니다.", "-39038029": "거래 경험", + "-601903492": "외환 거래 경험", + "-1012699451": "CFD 거래 경험", "-1894668798": "기타 다른 트레이딩 상품 경험", "-1026468600": "기타 다른 트레이딩 상품 빈도", "-1743024217": "언어 선택", @@ -2489,6 +2479,11 @@ "-536187647": "접근 철회가 확실합니까?", "-1357606534": "허가", "-570222048": "접근 철회", + "-80717068": "귀하의 <0>Deriv 비밀번호와 연결되어 있는 앱:", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "{{brand_website_name}}, {{platform_name_trader}} 및 {} 에 로그인 하시기 위해 <0>Deriv 비밀번호를 사용하세요.", + "-623760979": "<0>Deriv 비밀번호를 사용하여 {{brand_website_name}}, {{platform_name_trader}} 및 {{platform_name_go}}에 로그인합니다.", + "-459147994": "<0>Deriv 비밀번호를 사용하여 {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} 및 {{platform_name_ctrader}}에 로그인합니다.", "-1526404112": "공공요금: 전기, 수도, 가스 또는 유선 전화 요금.", "-537552700": "주택 임대차 계약: 유효한 최신 계약입니다.", "-890084320": "저장 및 제출", @@ -2859,6 +2854,30 @@ "-1016171176": "자산", "-621128676": "거래 종류", "-447853970": "손실 특정수준", + "-155173714": "봇을 만들어 봅시다!", + "-1919212468": "3. 카테고리 위의 검색 창을 사용하여 원하시는 블록을 검색하실 수도 있습니다.", + "-1520558271": "자세한 내용은 거래 봇 구축의 기본 사항에 대한 이 블로그 게시물을 확인하세요.", + "-980360663": "3.원하는 블록을 선택하고 작업 공간으로 드래그합니다.", + "-1493168314": "빠른 전략이란 무엇인가요?", + "-1680391945": "빠른 전략 사용", + "-1177914473": "제 전략을 어떻게 저장할 수 있나요?", + "-271986909": "Bot Builder에서 상단의 도구 모음에서 저장을 눌러 봇을 다운로드합니다. 봇에 이름을 지정하고 봇을 디바이스 또는 Google 드라이브에 다운로드하도록 선택합니다. 봇이 XML 파일로 다운로드됩니다.", + "-1149045595": "1. 가져오기를 누른 후 로컬을 선택하고 계속을 클릭합니다.", + "-288041546": "2. XML 파일을 선택하고 열기를 누르십시오.", + "-2127548288": "3.그에 따라 봇이 로드됩니다.", + "-1311297611": "1. 가져오기를 누른 후 Google 드라이브를 선택하고 계속을 클릭합니다.", + "-1549564044": "작업공간을 어떻게 리셋할 수 있나요?", + "-1127331928": "Bot Builder의 맨 위에 있는 도구 모음에서 재설정을 누릅니다. 이렇게 하면 작업 공간이 지워집니다. 저장하지 않은 변경 사항은 손실됩니다.", + "-1720444288": "파생 봇으로 손실을 관리하려면 어떻게 해야 하나요?", + "-1142295124": "파생 봇으로 손실을 제어하는 방법에는 여러 가지가 있습니다. 다음은 전략에서 손실 통제를 구현하는 방법에 대한 간단한 예입니다:", + "-986689483": "1. 다음의 변수를 생성하세요:", + "-269910127": "3. 현재 손익을 마지막 계약의 수익으로 업데이트하십시오.마지막 계약이 손실된 경우 현재 손익의 가치는 마이너스가 됩니다.", + "-1565344891": "웹 브라우저의 여러 탭에서 파생 봇을 실행할 수 있나요?", + "-90192474": "예, 가능합니다. 그러나 계좌에는 최대 오픈 포지션 수와 오픈 포지션에 대한 최대 총 지급금 등의 제한이 있습니다. 따라서 여러 포지션을 개설할 때는 이러한 한도를 염두에 두시기 바랍니다. 이러한 한도에 대한 자세한 정보는 다음에서 확인할 수 있습니다설정 > 계정 한도.", + "-213872712": "아니요, 파생 봇에서는 암호화폐를 제공하지 않습니다.", + "-2147346223": "파생 봇은 어느 국가에서 사용할 수 있나요?", + "-352345777": "자동거래를 위한 가장 인기있는 전략은 무엇인가요?", + "-552392096": "자동매매에서 가장 많이 사용되는 세 가지 전략은 마틴게일, 달렘버트, 오스카스 그라인드이며, 파생 봇에서 모두 기성품으로 제공되어 기다리고 있습니다.", "-507620484": "저장안됨", "-764102808": "구글 드라이브", "-555886064": "획득", @@ -2937,30 +2956,6 @@ "-1823621139": "빠른 전략", "-1778025545": "봇을 성공적으로 가져왔습니다.", "-1519425996": "검색된 결과 없음 \"{{ faq_search_value }}”", - "-155173714": "봇을 만들어 봅시다!", - "-1919212468": "3. 카테고리 위의 검색 창을 사용하여 원하시는 블록을 검색하실 수도 있습니다.", - "-1520558271": "자세한 내용은 거래 봇 구축의 기본 사항에 대한 이 블로그 게시물을 확인하세요.", - "-980360663": "3.원하는 블록을 선택하고 작업 공간으로 드래그합니다.", - "-1493168314": "빠른 전략이란 무엇인가요?", - "-1680391945": "빠른 전략 사용", - "-1177914473": "제 전략을 어떻게 저장할 수 있나요?", - "-271986909": "Bot Builder에서 상단의 도구 모음에서 저장을 눌러 봇을 다운로드합니다. 봇에 이름을 지정하고 봇을 디바이스 또는 Google 드라이브에 다운로드하도록 선택합니다. 봇이 XML 파일로 다운로드됩니다.", - "-1149045595": "1. 가져오기를 누른 후 로컬을 선택하고 계속을 클릭합니다.", - "-288041546": "2. XML 파일을 선택하고 열기를 누르십시오.", - "-2127548288": "3.그에 따라 봇이 로드됩니다.", - "-1311297611": "1. 가져오기를 누른 후 Google 드라이브를 선택하고 계속을 클릭합니다.", - "-1549564044": "작업공간을 어떻게 리셋할 수 있나요?", - "-1127331928": "Bot Builder의 맨 위에 있는 도구 모음에서 재설정을 누릅니다. 이렇게 하면 작업 공간이 지워집니다. 저장하지 않은 변경 사항은 손실됩니다.", - "-1720444288": "파생 봇으로 손실을 관리하려면 어떻게 해야 하나요?", - "-1142295124": "파생 봇으로 손실을 제어하는 방법에는 여러 가지가 있습니다. 다음은 전략에서 손실 통제를 구현하는 방법에 대한 간단한 예입니다:", - "-986689483": "1. 다음의 변수를 생성하세요:", - "-269910127": "3. 현재 손익을 마지막 계약의 수익으로 업데이트하십시오.마지막 계약이 손실된 경우 현재 손익의 가치는 마이너스가 됩니다.", - "-1565344891": "웹 브라우저의 여러 탭에서 파생 봇을 실행할 수 있나요?", - "-90192474": "예, 가능합니다. 그러나 계좌에는 최대 오픈 포지션 수와 오픈 포지션에 대한 최대 총 지급금 등의 제한이 있습니다. 따라서 여러 포지션을 개설할 때는 이러한 한도를 염두에 두시기 바랍니다. 이러한 한도에 대한 자세한 정보는 다음에서 확인할 수 있습니다설정 > 계정 한도.", - "-213872712": "아니요, 파생 봇에서는 암호화폐를 제공하지 않습니다.", - "-2147346223": "파생 봇은 어느 국가에서 사용할 수 있나요?", - "-352345777": "자동거래를 위한 가장 인기있는 전략은 무엇인가요?", - "-552392096": "자동매매에서 가장 많이 사용되는 세 가지 전략은 마틴게일, 달렘버트, 오스카스 그라인드이며, 파생 봇에서 모두 기성품으로 제공되어 기다리고 있습니다.", "-418247251": "귀하의 저널을 다운로드하세요.", "-2123571162": "다운로드", "-870004399": "<0>매입완료: {{longcode}} (ID: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "전체 화면", "-1823504435": "공지 확인", "-1954045170": "할당된 통화가 없습니다", - "-583559763": "메뉴", "-1591792668": "계정 한도", "-34495732": "규제 정보", "-1496158755": "Deriv.com으로 이동", @@ -3259,6 +3253,7 @@ "-818926350": "금융 위원회는 사건 발생일로부터 45일간만 항소를 받아들이며 해당 트레이더가 해당 문제를 해당 회사와 직접적으로 통해 해결하려고 한 이후에만 받아들여집니다.", "-1825471709": "강력하지만 이용하기 쉬운 플랫폼에서의 완전히 새로운 트레이딩 경험.", "-981017278": "귀하의 손가락 끝에서 진행되는 자동화된 거래입니다. 코팅이 필요하지 않습니다.", + "-583559763": "메뉴", "-778309978": "클릭하신 링크는 만료되었습니다. 받은 편지함에서 최신 이메일 내의 링크를 클릭해야 합니다. 대안적으로는, 아래에 있는 귀하의 이메일을 입력하고 <0>이메일 재전송을 클릭하여 새 링크를 받을 수도 있습니다.", "-336222114": "이 문제를 해결하려면 다음의 간단한 단계를 따르세요:", "-1064116456": "브로커 <0>Deriv Holdings (Guernsey) Limited를 검색하여 선택합니다.", @@ -3415,22 +3410,6 @@ "-1282933308": "{{barrier}} 아님", "-968190634": "{{barrier}} 일치", "-1747377543": "{{barrier}} 아래", - "-256210543": "이 시간에는 트레이딩을 할 수 없습니다.", - "-1150099396": "이 기능을 곧 사용할 수 있도록 작업 중입니다. 다른 계좌를 가지고 계신다면, 그 계좌로 전환하여 거래를 진행하세요. Deriv MT5 파이낸셜을 추가하실 수 있습니다.", - "-28115241": "이 계정에서는 {{platform_name_trader}} 를 이용하실 수 없습니다", - "-453920758": "{{platform_name_mt5}} 대시보드로 이동", - "-402175529": "내역", - "-902712434": "거래 취소", - "-988484646": "거래 취소 (실행됨)", - "-444882676": "거래 취소 (활성화됨)", - "-13423018": "참조 ID", - "-2035315547": "낮은 장벽", - "-1551639437": "내역이 없습니다", - "-1214703885": "귀하께서는 이익실현 또는 손절매와 관련하여 아직 업데이트를 하지 않으셨습니다", - "-504849554": "다음의 때에 다시 열릴 것입니다", - "-59803288": "그동안에, 우리의 종합 지수를 이용해보세요. 이들은 실제시장 변동성을 모방하며 24시간 7일 내내 접근가능합니다.", - "-1278109940": "공개시장 보기", - "-694105443": "이 시장은 종료되었습니다", "-1043795232": "최근 포지션", "-1511825574": "이윤/손실:", "-726626679": "잠재적인 이윤/손실:", @@ -3455,21 +3434,15 @@ "-1435392215": "거래 취소에 관하여", "-2017825013": "알겠습니다", "-1192773792": "다시 보지않기", + "-902712434": "거래 취소", "-1280319153": "선택된 기간 이내에 언제든지 귀하의 거래를 취소하세요. 귀하의 거래가 선택된 기간 이내에스탑아웃 레벨에 도달하는 경우 자동으로 됩니다.", "-471757681": "위험 관리", "-843831637": "손실 제한", "-771725194": "거래 취소", "-338707425": "최소한의 기간은 1일입니다", "-1003473648": "기간: {{duration}} 일", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "만기 시 지급금은 포인트당 지급금에 최종 가격과 행사 가격의 차이를 곱한 금액입니다.", "-1527492178": "구매가 차단되었습니다", "-725375562": "귀하께서는 설정 메뉴에서 구매 버튼을 잠금/잠금해제 하실 수 있습니다", - "-774638412": "지분은 반드시 {{min_stake}} {{currency}}와 {{max_stake}} {{currency}} 사이여야 합니다", - "-1358367903": "지분", - "-434270664": "현재 가격", - "-1956787775": "배리어 가격:", - "-1513281069": "장벽 2", "-390994177": "{{min}} 과 {{max}} 사이여야 합니다", "-1804019534": "만료: {{date}}", "-2055106024": "고급 및 단순 기간 설정 사이를 왕래하세요", @@ -3481,9 +3454,10 @@ "-1043117679": "귀하의 현재 손실이 귀하의 지분의 {{stop_out_percentage}}%과 같거나 또는 이를 초과하면, 귀하의 계약은 가능한 가장 근접한 자산 가격으로 종료될 것입니다.", "-339236213": "승수", "-2131851017": "성장률", - "-1763848396": "풋 (Put)", + "-1763848396": "Put", "-194424366": "이상", "-857660728": "행사 가격", + "-1358367903": "지분", "-1386326276": "장벽은 필수입력사항입니다.", "-1418742026": "높은 장벽은 낮은 장벽보다 반드시 높아야 합니다.", "-92007689": "낮은 장벽은 높은 장벽보다 반드시 낮아야 합니다.", @@ -3491,6 +3465,21 @@ "-1975910372": "분은 반드시 0과 59 사이여야 합니다.", "-866277689": "만기 시간은 과거일 수 없습니다.", "-1455298001": "지금", + "-256210543": "이 시간에는 트레이딩을 할 수 없습니다.", + "-1150099396": "이 기능을 곧 사용할 수 있도록 작업 중입니다. 다른 계좌를 가지고 계신다면, 그 계좌로 전환하여 거래를 진행하세요. Deriv MT5 파이낸셜을 추가하실 수 있습니다.", + "-28115241": "이 계정에서는 {{platform_name_trader}} 를 이용하실 수 없습니다", + "-453920758": "{{platform_name_mt5}} 대시보드로 이동", + "-402175529": "내역", + "-988484646": "거래 취소 (실행됨)", + "-444882676": "거래 취소 (활성화됨)", + "-13423018": "참조 ID", + "-2035315547": "낮은 장벽", + "-1551639437": "내역이 없습니다", + "-1214703885": "귀하께서는 이익실현 또는 손절매와 관련하여 아직 업데이트를 하지 않으셨습니다", + "-504849554": "다음의 때에 다시 열릴 것입니다", + "-59803288": "그동안에, 우리의 종합 지수를 이용해보세요. 이들은 실제시장 변동성을 모방하며 24시간 7일 내내 접근가능합니다.", + "-1278109940": "공개시장 보기", + "-694105443": "이 시장은 종료되었습니다", "-439389714": "아직 작업중에 있습니다", "-770929448": "{{platform_name_smarttrader}} 으로 이동", "-347156282": "증명 제출", @@ -3537,6 +3526,8 @@ "-454245976": "특정 기간 동안 시장 가격이 계속 하락할 것으로 생각되면 <0>Short를 선택하십시오.시장 가격이 장벽에 닿거나 장벽을 넘지 않으면 만기 시점에 지불금을 받게 됩니다.장벽을 뚫지 않으면 시장 가격과 장벽 사이의 거리에 비례하여 지급액이 커집니다.지급액이 지분보다 높을 때 수익을 올리기 시작합니다.시장 가격이 장벽을 넘으면 지불금이 없을 것입니다.", "-351875097": "틱 수", "-729830082": "적게 보기", + "-1669741470": "만기 시 지급금은 포인트당 지급금에 최종 가격과 행사 가격의 차이를 곱한 금액입니다.", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "새롭습니다!", "-993480898": "어큐뮬레이터", "-45873457": "새롭습니다", @@ -3557,6 +3548,10 @@ "-690963898": "지급액이 이 금액에 도달하면 계약이 자동으로 종료됩니다.", "-511541916": "이 틱 수에 도달하면 계약이 자동으로 종료됩니다.", "-438655760": "<0>참고: 언제든지 거래를 청산할 수 있습니다. 슬리피지 위험에 유의하세요.", + "-774638412": "지분은 반드시 {{min_stake}} {{currency}}와 {{max_stake}} {{currency}} 사이여야 합니다", + "-434270664": "현재 가격", + "-1956787775": "배리어 가격:", + "-1513281069": "장벽 2", "-1683683754": "롱", "-1046859144": "<0>{{title}} 시장 가격이 {{price_position}} 에 머무르며 장벽에 닿지 않을 경우 또는 넘지 않을 경우에 지급금을 받습니다. 만약 그렇지 못한 경우에는 귀하의 지급금은 없습니다.", "-1815023694": "장벽을 넘어서", diff --git a/packages/translations/src/translations/pl.json b/packages/translations/src/translations/pl.json index 9a45ab06eb9d..8c1325782911 100644 --- a/packages/translations/src/translations/pl.json +++ b/packages/translations/src/translations/pl.json @@ -24,7 +24,6 @@ "27731356": "Twoje konto jest tymczasowo wyłączone. Skontaktuj się z nami za pośrednictwem <0>czatu na żywo, aby ponownie włączyć wpłaty i wypłaty.", "27830635": "Deriv (V) Ltd", "28581045": "Dodaj prawdziwe konto MT5", - "30801950": "Twoje konto zostanie otwarte przez {{legal_entity_name}}, regulowaną przez Urząd ds. Gier Hazardowych: Malta Gaming Authority na Malcie, i będzie podlegać prawu Malty.", "33433576": "Skorzytaj z e-portfela, aby wypłacić swoje środki.", "35089987": "Prześlij przednią i tylną stronę swojego prawa jazdy.", "41737927": "Dziękujemy", @@ -251,7 +250,6 @@ "284772879": "Kontrakt", "284809500": "Demo finansowe", "287934290": "Czy na pewno chcesz anulować tę transakcję?", - "289898640": "WARUNKI UŻYTKOWANIA", "291744889": "<0>1. Parametry handlowe: <0>", "291817757": "Przejdź do naszej społeczności Deriv i dowiedz się więcej m.in. o interfejsach API, tokenach API, sposobach korzystania z interfejsów API Deriv.", "292491635": "Jeśli wybierzesz „Stop stratom” i określisz kwotę, aby ograniczyć Twoją stratę, Twoja pozycja zostanie automatycznie zamknięta, gdy Twoja strata jest większa lub równa tej kwocie. Twoja strata może wynieść więcej niż wprowadzona kwota w zależności od ceny rynkowej przy zamknięciu.", @@ -372,6 +370,7 @@ "427134581": "Spróbuj użyć innego rodzaju pliku.", "427617266": "Bitcoin", "428709688": "Preferowany odstęp czasu między raportami:", + "429970999": "To avoid delays, enter your <0>name exactly as it appears on your {{document_name}}.", "431267979": "Oto krótki przewodnik po tym, jak korzystać z Deriv Bot w podróży.", "432273174": "1:100", "432508385": "Uzyskaj Zysk: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. Uruchom raz przy starcie", "520136698": "Indeks Boom 500", "521872670": "element", - "522283618": "Doświadczenie w handlowaniu opcjami cyfrowymi", "522703281": "podzielna przez", "523123321": "- 10 do siły określonej liczby", "524459540": "W jaki sposób tworzyć zmienne?", @@ -562,7 +560,6 @@ "642546661": "Prześlij tylną część prawa jazdy ze swojego komputera", "642995056": "Adres e-mail", "644150241": "Liczba wygranych kontraktów od ostatniego zerowania statystyk.", - "645016681": "Częstotliwość handlowania innymi instrumentami finansowymi", "645902266": "EUR/NZD", "647039329": "Wymagane jest potwierdzenie adresu", "647745382": "Lista wejściowa {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "Cena spot w poprzednim ticku.", "812775047": "poniżej bariery", "814827314": "Poziom stop-out na wykresie wskazuje cenę, przy której potencjalna strata jest równa całej Państwa stawce. Gdy cena rynkowa osiągnie ten poziom, Państwa pozycja zostanie automatycznie zamknięta. Gwarantuje to, że Państwa strata nie przekroczy kwoty zapłaconej za zakup kontraktu.", + "814936420": "{{ banner_message }}", "815925952": "Ten blok jest obowiązkowy. Dozwolona jest tylko jedna kopia tego bloku. Jest on domyślnie dodawany do kanwy po otwarciu Deriv Bot.", "816580787": "Witamy z powrotem! Twoja wiadomość została przywrócona.", "816738009": "<0/><1/>Możesz również zgłosić nierozwiązany spór do <2>Biura arbitrażowego ds. usług finansowych.", @@ -747,7 +745,6 @@ "836097457": "Interesuje mnie inwestowanie, ale mam bardzo małe doświadczenie.", "837063385": "Proszę nie wysyłać innych walut na ten adres.", "837066896": "Twój dokument jest weryfikowany, sprawdź ponownie za 1-3 dni.", - "839618971": "ADRES", "839805709": "Aby zweryfikować Twoją tożsamość, potrzebujemy lepszego zdjęcia", "840672750": "Jeśli to nie zadziała, proszę odinstalować i ponownie zainstalować aplikację MT5. Następnie proszę powtórzyć kroki <0>2 i <0>3.", "841434703": "Wyłącz stos", @@ -965,6 +962,7 @@ "1061308507": "Kup {{ contract_type }}", "1062423382": "Zapoznaj się z przewodnikami wideo i często zadawanymi pytaniami, aby zbudować swojego bota w zakładce samouczków.", "1062536855": "Równa", + "1062569830": "The <0>name on your identity document doesn't match your profile.", "1065275078": "cTrader jest na razie dostępny tylko na komputerach stacjonarnych.", "1065353420": "Ponad 110", "1065498209": "Iteracja (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3. Proszę ustawić parametry transakcji i nacisnąć przycisk Uruchom.", "1174748431": "Kanał płatności", "1175183064": "Vanuatu", - "1176926166": "Doświadczenie w handlowaniu innymi instrumentami finansowymi", "1177396776": "Jeśli wybierzesz zakład „Azjatycki - spadnie”, zdobędziesz wypłatę, gdy ostatni najmniejszy przyrost ceny będzie niższy niż średnia najmniejszych przyrostów ceny.", "1177723589": "Nie ma transakcji do wyświetlenia", "1178582280": "Liczba przegranych kontraktów od ostatniego zerowania statystyk.", @@ -1150,6 +1147,7 @@ "1255963623": "Do daty/czasu {{ input_timestamp }} {{ dummy }}", "1258097139": "Co możemy usprawnić?", "1258198117": "dodatni", + "1259145708": "Let’s try again. Choose another document and enter the corresponding details.", "1259598687": "GBP/JPY", "1260259925": "Numer telefonu jest w niewłaściwym formacie.", "1263387702": "Wszystkie {{count}} kont(a) korzystają z realizacji rynkowej. Oznacza to, że z góry akceptujesz cenę brokera i że zlecenia będą złożone po cenie brokera.", @@ -1173,7 +1171,6 @@ "1289146554": "Brytyjskie Wyspy Dziewicze Usługi Finansowe Komisja", "1289646209": "Wezwanie do uzupełnienia depozytu", "1290525720": "Przykład: ", - "1291887623": "Częstotliwość handlowania opcjami cyfrowymi", "1291997417": "Kontrakty wygasną dokładnie o 23:59:59 GMT w wybranej przez Państwa dacie wygaśnięcia.", "1292188546": "Zresetuj hasło inwestora Deriv MT5", "1292891860": "Powiadom Telegram", @@ -1257,7 +1254,6 @@ "1367023655": "Aby zapewnić, że Twoje straty nie przekroczą Twojej stawki, Twój kontrakt zostanie zamknięty automatycznie, kiedy Twoja strata wyniesie <0/>.", "1367488817": "4. Warunki zrestartowania handlowania", "1367990698": "Wskaźnik zmienności 10", - "1369709538": "Nasze warunki użytkowania", "1370647009": "Korzystaj z wyższych limitów dziennych", "1371193412": "Anuluj", "1371555192": "Wybierz preferowanego agenta płatności i wprowadź kwotę wypłaty. Jeśli Twojego agenta płatniczego nie ma na liście, <0>wyszukaj go, używając numeru konta.", @@ -1297,6 +1293,7 @@ "1413047745": "Przypisz określoną wartość zmiennej", "1413359359": "Wykonaj nowy przelew", "1414205271": "pierwsza", + "1414918420": "We'll review your proof of identity again and will give you an update as soon as possible.", "1415006332": "uzyskaj listę podrzędną z pierwszej", "1415513655": "Proszę pobrać cTrader na swój telefon, aby handlować na rachunku Deriv cTrader", "1415974522": "Jeśli wybierzesz „Różni się”, zdobędziesz wypłatę, gdy ostatnia cyfra ostatniego najmniejszego przyrostu ceny jest inna niż Twoje przewidywania.", @@ -1419,7 +1416,6 @@ "1542742708": "Syntetyki, Forex, Akcje, Indeksy giełdowe, Towary i Kryptowaluty", "1544642951": "Jeśli wybierzesz Tylko wzrosty, zyskasz wygraną, gdy następujące po sobie zmiany ceny są zmianami w górę po punkcie wejściowym. Wypłata nie przysługuje, jeśli cena spada lub jest równa dowolnej poprzedniej zmianie ceny.", "1547148381": "Ten plik jest zbyt duży (dozwolona wielkość pliku do 8 MB). Prześlij inny plik.", - "1548765374": "Nie udało się zweryfikować numeru dokumentu", "1549098835": "Wypłaty ogółem", "1551172020": "Koszyk AUD", "1552162519": "Zobacz wdrażanie", @@ -1647,6 +1643,7 @@ "1790770969": "Główne-FX (standardowe/mikro partie), Drugorzędne-FX, Towary, Kryptowaluty", "1791432284": "Szukaj kraju", "1791971912": "Ostatnie", + "1792037169": "To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your {{document_name}}.", "1793913365": "Aby wpłacić pieniądze, przejdź na swoje konto {{currency_symbol}}.", "1794815502": "Pobierz historię swoich transakcji.", "1796787905": "Prosimy o przesłanie następującego dokumentu/dokumentów.", @@ -1792,7 +1789,6 @@ "1924765698": "Miejsce urodzenia*", "1926987784": "- iOS: Przesunąć palcem w lewo na koncie i dotknąć <0>Usuń.", "1928930389": "GBP/NOK", - "1929309951": "Status zatrudnienia", "1929694162": "Porównaj konta", "1930899934": "Tether", "1931659123": "Uruchom przy każdym ticku", @@ -1966,12 +1962,12 @@ "2115223095": "Strata", "2117165122": "1. Utwórz bot Telegram i pobierz swój token Telegram API. Przeczytaj, aby dowiedzieć się, jak utworzyć boty w Telegram: https://core.telegram.org/bots#6-botfather", "2117489390": "Automatyczna aktualizacja za {{ remaining }} sek.", - "2118315870": "Gdzie mieszkasz?", "2119449126": "Przykładowy wynik dla poniższego przykładu to:", "2119710534": "FAQ", "2121227568": "NEO/USD", "2122152120": "Aktywa", "2127564856": "Wypłaty są zablokowane", + "2129807378": "Update profile", "2131963005": "Wypłać swoje środki z następujących kont Deriv MT5:", "2133451414": "Czas trwania", "2133470627": "Ten blok zwraca potencjalną wypłatę dla wybranego rodzaju zakładu. Ten blok można użyć tylko w przypadku bloku źródłowego „Warunki zakupu”.", @@ -1992,8 +1988,6 @@ "2146698770": "Wskazówka dla profesjonalistów: Możesz także kliknąć i przeciągnąć żądany blok", "2146892766": "Doświadczenie w handlowaniu opcjami binarnymi", "2147244655": "Jak zaimportować własnego bota handlowego do Deriv Bot?", - "-1232613003": "<0>Weryfikacja nie powiodła <1>się.", - "-2029508615": "<0>Potrzebujesz weryfikacji. <1>Zweryfikuj teraz", "-931052769": "Prześlij weryfikację", "-1004605898": "Porady", "-1938142055": "Przesłano dokumenty", @@ -2141,18 +2135,9 @@ "-179726573": "Otrzymaliśmy twój dowód własności.", "-813779897": "Dowód własności przeszedł weryfikację pozytywnie.", "-638756912": "Zakryj cyfry numeru karty od 7 do 12, znajdujące się na przedniej stronie karty debetowej/kredytowej.", - "-2073934245": "Usługi zawierania transakcji finansowych oferowane na niniejszym portalu są odpowiednie tylko dla klientów, którzy akceptują możliwość straty wszystkich zainwestowanych pieniędzy i którzy rozumieją ryzyko związane z zakupem kontraktów finansowych i mają doświadczenie w tym zakresie. Takie transakcje finansowe niosą ze sobą wysokie ryzyko. Jeśli zakupione przez Ciebie kontrakty zakończą się bez wartości, stracisz całą zainwestowaną sumę, która obejmuje premię z kontraktu.", - "-1166068675": "Twoje konto zostanie otwarte przez {{legal_entity_name}}, podlegającej regulacjom Komisji ds. Gier Hazardowych w Zjednoczonym Królestwie - UK Gaming Commission (UKGC) i prawom Wyspy Man.", - "-975118358": "Twoje konto zostanie otwarte przez {{legal_entity_name}}, regulowaną przez Malta Financial Services Authority (MFSA) i będzie podlegać prawu Malty.", - "-680528873": "Twoje konto zostanie otwarte przez {{legal_entity_name}}, i będzie podlegać przepisom prawa terytorium Samoa.", - "-1125193491": "Dodaj konto", - "-2068229627": "Nie jestem osobą zajmującą eksponowane stanowiska polityczne i nie byłem/am taką osobą w ciągu ostatnich 12 miesięcy.", "-684271315": "OK", "-740157281": "Ocena doświadczenia inwestycyjnego", "-1720468017": "Świadcząc nasze usługi, jesteśmy zobowiązani do uzyskania od użytkowników informacji w celu oceny, czy dany produkt lub usługa są dla nich odpowiednie.", - "-186841084": "Zmień swój adres e-mail", - "-907403572": "Aby zmienić swój adres e-mail, najpierw musisz usunąć swój obecny adres e-mail z konta {{identifier_title}}.", - "-1850792730": "Zakończ powiązanie z {{identifier_title}}", "-307865807": "Ostrzeżenie o tolerancji ryzyka", "-690100729": "Tak, rozumiem ryzyko.", "-2010628430": "Kontrakty CFD i inne instrumenty finansowe wiążą się z wysokim ryzykiem szybkiej utraty pieniędzy z powodu dźwigni finansowej. Zastanów się, czy rozumiesz, jak działają kontrakty CFD i inne instrumenty finansowe i czy możesz sobie pozwolić na podjęcie wysokiego ryzyka utraty pieniędzy.<0/><0/> Aby kontynuować, musisz potwierdzić, że zdajesz sobie sprawę, że Twój kapitał jest zagrożony.", @@ -2206,11 +2191,6 @@ "-1725454783": "Zakończone niepowodzeniem", "-506510414": "Data i czas", "-1708927037": "Adres IP", - "-619126443": "Użyj <0>hasła Deriv, aby zalogować się do {{brand_website_name}} i {{platform_name_trader}}.", - "-623760979": "Proszę użyć <0>hasła Deriv, aby zalogować się na {{brand_website_name}}, {{platform_name_trader}} i {{platform_name_go}}.", - "-459147994": "Proszę użyć <0>hasła Deriv, aby zalogować się na {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} i {{platform_name_ctrader}}.", - "-80717068": "Aplikacje, połączone z <0>hasłem Deriv:", - "-9570380": "Użyj hasła {{platform_name_dxtrade}} do logowania na swoje konta {{platform_name_dxtrade}} w aplikacji internetowej i na urządzenia mobilne.", "-2131200819": "Wyłącz", "-200487676": "Włącz", "-1840392236": "Kod jest nieprawidłowy. Spróbuj jeszcze raz.", @@ -2240,44 +2220,37 @@ "-378415317": "Wymagane jest podanie województwa", "-1497654315": "Nasze konta i usługi nie są dostępne dla adresów z kodem pocztowym Jersey.", "-755626951": "Uzupełnij swoje dane adresowe", - "-584911871": "Wybierz walutę portfela", "-1461267236": "Wybierz swoją walutę", - "-1352330125": "WALUTA", "-1027595143": "Mniej niż 25 000 $", "-40491332": "25 000 $ - 50 000 $", "-1139806939": "50 001 $ - 100 000 $", - "-626752657": "0-1 rok", - "-532014689": "1-2 lata", - "-1001024004": "Ponad 3 lata", - "-790513277": "6-10 transakcji w ciągu ostatnich 12 miesięcy", - "-580085300": "11-39 transakcji w ciągu ostatnich 12 miesięcy", - "-654781670": "Podstawowe", - "-1717373258": "Drugorzędne", "-996132458": "Budownictwo", "-915003867": "Opieka zdrowotna", "-1430012453": "Technologie informacyjno-komunikacyjne", "-987824916": "Nauka i technika", "-146630682": "Społeczeństwo i kultura", "-761306973": "Produkcja", - "-739367071": "Osoba zatrudniona", - "-1156937070": "500 001 $ - 1 000 000 $", - "-315534569": "Ponad 1 000 000 $", - "-2068544539": "Pracownik etatowy", - "-531314998": "Inwestycje i dywidenda", - "-1235114522": "Emerytura", - "-1298056749": "Zasiłki państwowe", - "-449943381": "Oszczędności i spadek", "-1631552645": "Specjaliści", "-474864470": "Pracownicy sektora opieki zdrowotnej, sprzedaży i sektora publicznego", "-1129355784": "Rolnicy, robotnicy leśni i rybacy", "-1242914994": "Pracownicy sektora rzemieślniczego, metalurgicznego, elektrycznego i elektronicznego", "-1317824715": "Pracownicy sprzątający i pomoc domowa", "-1592729751": "Pracownicy sektora wydobywczego, produkcyjnego i transportowego", + "-1030759620": "Urzędnicy państwowi", "-2137323480": "Właściciel firmy", "-1590574533": "Orzeczenie rozwodowe", "-1667683002": "Spadek", "-1237843731": "Dochód z inwestycji", "-777506574": "Sprzedaż mienia", + "-654781670": "Podstawowe", + "-1717373258": "Drugorzędne", + "-1156937070": "500 001 $ - 1 000 000 $", + "-315534569": "Ponad 1 000 000 $", + "-2068544539": "Pracownik etatowy", + "-531314998": "Inwestycje i dywidenda", + "-1235114522": "Emerytura", + "-1298056749": "Zasiłki państwowe", + "-449943381": "Oszczędności i spadek", "-1161338910": "Wymagany jest podanie imienia.", "-1161818065": "Nazwisko powinno składać się z 2-50 znaków.", "-1281693513": "Data urodzenia jest wymagana.", @@ -2287,28 +2260,14 @@ "-212167954": "Numer identyfikacji podatkowej nie jest poprawnie sformatowany.", "-621555159": "Dane tożsamości", "-204765990": "Warunki użycia", - "-231863107": "Nie", - "-870902742": "Ile posiadasz wiedzy i doświadczenia w zakresie inwestowania online?", - "-1929477717": "Posiadam dyplom akademicki, certyfikat zawodowy i/lub doświadczenie zawodowe związane z usługami finansowymi.", - "-1540148863": "Brałem/brałam udział w seminariach, szkoleniach i/lub warsztatach związanych z inwestowaniem.", - "-922751756": "Mniej niż rok", - "-542986255": "Brak", - "-1337206552": "W twoim rozumieniu handel kontraktami CFD pozwala", - "-456863190": "Umieść pozycję na ruchu cenowy składnika aktywów, w przypadku którego wynikiem jest stały zwrot lub nic.", - "-1314683258": "Dokonaj długoterminowej inwestycji, aby uzyskać gwarantowany zysk.", - "-1546090184": "Jak dźwignia wpływa na handel kontraktami CFD?", - "-1636427115": "Dźwignia finansowa pomaga ograniczyć ryzyko.", - "-800221491": "Dźwignia gwarantuje zyski.", - "-811839563": "Dźwignia pozwala otwierać duże pozycje za ułamek wartości handlowej, co może skutkować zwiększonym zyskiem lub stratą.", - "-1185193552": "Zamknij transakcję automatycznie, gdy strata jest równa lub większa niż określona kwota, o ile istnieje odpowiednia płynność rynku.", - "-1046354": "Zamknij transakcję automatycznie, gdy zysk jest równy lub większy niż określona kwota, o ile istnieje odpowiednia płynność rynku.", - "-1842858448": "Osiągnij gwarantowany zysk na swojej transakcji.", - "-860053164": "Przy inwestowaniu w mnożniki.", - "-1250327770": "Przy zakupie akcji spółki.", - "-1222388581": "Wszystkie powyższe.", "-477761028": "Identyfikator wyborcy", "-1466346630": "CPF", - "-1030759620": "Urzędnicy państwowi", + "-739367071": "Osoba zatrudniona", + "-626752657": "0-1 rok", + "-532014689": "1-2 lata", + "-1001024004": "Ponad 3 lata", + "-790513277": "6-10 transakcji w ciągu ostatnich 12 miesięcy", + "-580085300": "11-39 transakcji w ciągu ostatnich 12 miesięcy", "-612752984": "To są domyślne limity stosowane w odniesieniu do Twoich kont.", "-1598263601": "Aby dowiedzieć się więcej na temat limitów i ich stosowania, przejdź do <0>Centrum pomocy.", "-1411635770": "Dowiedz się więcej o limitach dla kont", @@ -2326,10 +2285,7 @@ "-1500958859": "Zweryfikuj", "-1502578110": "Twoje konto jest w pełni zweryfikowane, a Twój limit wypłat został zwiększony.", "-1662154767": "niedawny rachunek za media (np. prąd, wodę, gaz, linię telefoniczną lub internet), wyciąg z rachunku bankowego lub dokument wydany przez władze rządowe z Twoim imieniem i nazwiskiem i tym adresem.", - "-190838815": "Te dane potrzebne są w celu weryfikacji. Jeśli podane przez Ciebie informacji są nieprawdziwe lub niedokładne, nie będziesz mieć możliwości dokonywania wpłat i wypłat.", - "-223216785": "Druga część adresu*", "-594456225": "Druga część adresu", - "-1940457555": "Kod pocztowy*", "-1964954030": "Kod pocztowy", "-516397235": "Zwracaj uwagę na to, komu udostępniasz ten token. Osoba posiadająca ten token może wykonać następujące działania na Twoim koncie w Twoim imieniu", "-989216986": "Dodaj konta", @@ -2371,8 +2327,6 @@ "-1100235269": "Sektor zatrudnienia", "-684388823": "Szacowana wartość netto", "-509054266": "Przewidywany obrót roczny", - "-601903492": "Doświadczenie w handlowaniu walutami", - "-1012699451": "Doświadczenie w handlowaniu kontraktami na różnice kursowe (CFD)", "-1588485629": "Przykład", "-1117345066": "Wybierz rodzaj dokumentu", "-651192353": "Przykład:", @@ -2393,18 +2347,21 @@ "-1944264183": "Aby kontynuować handlowanie, musisz przesłać również potwierdzenie tożsamości.", "-1088324715": "Sprawdzimy Twoje dokumenty i powiadomimy Cię o statusie w ciągu 1-3 dni roboczych.", "-329713179": "OK", - "-1176889260": "Wybierz rodzaj dokumentu.", - "-1926456107": "Przesłany dokument tożsamości stracił ważność.", - "-555047589": "Wygląda na to, że dokument tożsamości stracił ważność. Spróbuj jeszcze raz, przesyłając ważny dokument.", - "-841187054": "Spróbuj ponownie", + "-895884696": "The <0>name and <0>date of birth on your identity document don't match your profile.", + "-1792723131": "To avoid delays, enter your <0>date of birth exactly as it appears on your {{document_name}}.", + "-886317740": "The <0>date of birth on your identity document doesn't match your profile.", + "-1813671961": "Your identity verification failed because:", "-2097808873": "Nie udało się zweryfikować Twojego numeru identyfikacyjnego na podstawie przekazanych danych. ", - "-228284848": "Nie udało się zweryfikować Twojego numeru identyfikacyjnego na podstawie przekazanych danych.", + "-1652371224": "Your profile is updated", + "-504784172": "Your document has been submitted", "-1391934478": "Twój dowód tożsamości został zweryfikowany. Musisz też przesłać dowód adresu.", "-118547687": "Zweryfikowano numer identyfikacyjny", "-200989771": "Przejdź do danych osobowych", "-1358357943": "Sprawdź i zaktualizuj swój kod pocztowy zanim prześlesz potwierdzenie tożsamości.", "-1401994581": "Brakuje Twoich danych osobowych", "-2004327866": "Wybierz ważny kraj wydania dokumentu.", + "-1627868670": "Your identity document has expired.", + "-1606307809": "We were unable to verify the identity document with the details provided.", "-1664159494": "Kraj", "-749870311": "Skontaktuj się z nami za pośrednictwem <0>czatu na żywo.", "-1084991359": "Weryfikacja tożsamości nie jest wymagana", @@ -2464,21 +2421,54 @@ "-142444667": "Kliknij link z wiadomości e-mail, aby zmienić swoje hasło Deriv MT5.", "-742748008": "Sprawdź swoją skrzynkę e-mail i kliknij link w wiadomości e-mail, aby kontynuować.", "-84068414": "Wciąż nie masz wiadomości e-mail? Skontaktuj się z nami przez <0>czat na żywo.", + "-975118358": "Twoje konto zostanie otwarte przez {{legal_entity_name}}, regulowaną przez Malta Financial Services Authority (MFSA) i będzie podlegać prawu Malty.", + "-2073934245": "Usługi zawierania transakcji finansowych oferowane na niniejszym portalu są odpowiednie tylko dla klientów, którzy akceptują możliwość straty wszystkich zainwestowanych pieniędzy i którzy rozumieją ryzyko związane z zakupem kontraktów finansowych i mają doświadczenie w tym zakresie. Takie transakcje finansowe niosą ze sobą wysokie ryzyko. Jeśli zakupione przez Ciebie kontrakty zakończą się bez wartości, stracisz całą zainwestowaną sumę, która obejmuje premię z kontraktu.", + "-1125193491": "Dodaj konto", + "-2068229627": "Nie jestem osobą zajmującą eksponowane stanowiska polityczne i nie byłem/am taką osobą w ciągu ostatnich 12 miesięcy.", + "-186841084": "Zmień swój adres e-mail", + "-907403572": "Aby zmienić swój adres e-mail, najpierw musisz usunąć swój obecny adres e-mail z konta {{identifier_title}}.", + "-1850792730": "Zakończ powiązanie z {{identifier_title}}", "-428335668": "Będzie konieczne ustawienie hasła, aby ukończyć proces.", + "-1232613003": "<0>Weryfikacja nie powiodła <1>się.", + "-2029508615": "<0>Potrzebujesz weryfikacji. <1>Zweryfikuj teraz", "-818898181": "Nazwa w dokumencie nie pasuje do Państwa profilu Deriv.", "-310316375": "Adres w dokumencie nie zgadza się z adresem podanym powyżej.", "-485368404": "Dokument wydany ponad 6 miesięcy temu.", "-367016488": "Niewyraźny dokument. Wszystkie informacje muszą być wyraźne i widoczne.", "-1957076143": "Przycięty dokument. Wszystkie informacje muszą być wyraźne i widoczne.", + "-1576856758": "An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.", + "-231863107": "Nie", + "-870902742": "Ile posiadasz wiedzy i doświadczenia w zakresie inwestowania online?", + "-1929477717": "Posiadam dyplom akademicki, certyfikat zawodowy i/lub doświadczenie zawodowe związane z usługami finansowymi.", + "-1540148863": "Brałem/brałam udział w seminariach, szkoleniach i/lub warsztatach związanych z inwestowaniem.", + "-922751756": "Mniej niż rok", + "-542986255": "Brak", + "-1337206552": "W twoim rozumieniu handel kontraktami CFD pozwala", + "-456863190": "Umieść pozycję na ruchu cenowy składnika aktywów, w przypadku którego wynikiem jest stały zwrot lub nic.", + "-1314683258": "Dokonaj długoterminowej inwestycji, aby uzyskać gwarantowany zysk.", + "-1546090184": "Jak dźwignia wpływa na handel kontraktami CFD?", + "-1636427115": "Dźwignia finansowa pomaga ograniczyć ryzyko.", + "-800221491": "Dźwignia gwarantuje zyski.", + "-811839563": "Dźwignia pozwala otwierać duże pozycje za ułamek wartości handlowej, co może skutkować zwiększonym zyskiem lub stratą.", + "-1185193552": "Zamknij transakcję automatycznie, gdy strata jest równa lub większa niż określona kwota, o ile istnieje odpowiednia płynność rynku.", + "-1046354": "Zamknij transakcję automatycznie, gdy zysk jest równy lub większy niż określona kwota, o ile istnieje odpowiednia płynność rynku.", + "-1842858448": "Osiągnij gwarantowany zysk na swojej transakcji.", + "-860053164": "Przy inwestowaniu w mnożniki.", + "-1250327770": "Przy zakupie akcji spółki.", + "-1222388581": "Wszystkie powyższe.", "-1515286538": "Wprowadź numer swojego dokumentu. ", "-1694758788": "Wprowadź numer dokumentu", "-1458676679": "Wprowadź od 2 do 50 znaków.", + "-1176889260": "Wybierz rodzaj dokumentu.", + "-1265050949": "identity document", "-2139303636": "Być może kliknąłeś/kliknęłaś błędny link lub strona została przeniesiona pod nowy adres.", "-1448368765": "Kod błędu: {{error_code}} nie znaleziono strony", "-254792921": "W tej chwili możesz dokonywać tylko wpłat. Aby aktywować możliwość dokonywania wypłat, wypełnij swoją ocenę finansową.", "-1437017790": "Informacje finansowe", "-70342544": "Jesteśmy zobowiązani prawnie do pozyskania Twoich informacji finansowych.", "-39038029": "Doświadczenie w handlowaniu", + "-601903492": "Doświadczenie w handlowaniu walutami", + "-1012699451": "Doświadczenie w handlowaniu kontraktami na różnice kursowe (CFD)", "-1894668798": "Doświadczenie w handlowaniu innymi instrumentami", "-1026468600": "Doświadczenie w handlowaniu innymi instrumentami finansowymi", "-1743024217": "Wybierz język", @@ -2489,6 +2479,11 @@ "-536187647": "Potwierdzić wycofanie dostępu?", "-1357606534": "Pozwolenia", "-570222048": "Wycofaj dostęp", + "-80717068": "Aplikacje, połączone z <0>hasłem Deriv:", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "Użyj <0>hasła Deriv, aby zalogować się do {{brand_website_name}} i {{platform_name_trader}}.", + "-623760979": "Proszę użyć <0>hasła Deriv, aby zalogować się na {{brand_website_name}}, {{platform_name_trader}} i {{platform_name_go}}.", + "-459147994": "Proszę użyć <0>hasła Deriv, aby zalogować się na {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} i {{platform_name_ctrader}}.", "-1526404112": "Rachunek za media: rachunek za prąd, wodę, gaz lub telefon stacjonarny.", "-537552700": "Umowa najmu domu: ważna i aktualna umowa.", "-890084320": "Zapisz i prześlij", @@ -2859,6 +2854,30 @@ "-1016171176": "Aktywa", "-621128676": "Rodzaj zakładu", "-447853970": "Próg straty", + "-155173714": "Zbudujmy bota!", + "-1919212468": "3. Możesz także wyszukiwać bloki, korzystając z paska wyszukiwania nad kategoriami.", + "-1520558271": "Aby uzyskać więcej informacji, sprawdź ten post na blogu na temat podstaw budowania bota handlowego.", + "-980360663": "3. Wybierz żądany blok i przeciągnij go do obszaru roboczego.", + "-1493168314": "Czym jest szybka strategia?", + "-1680391945": "Korzystanie z szybkiej strategii", + "-1177914473": "Jak mogę zapisać moją strategię?", + "-271986909": "W Bot Buildernaciśnij Zapisz na pasku narzędzi u góry, aby pobrać bota. Nadaj swojemu botowi nazwę i wybierz pobranie bota na urządzenie lub Dysk Google. Twój bot zostanie pobrany jako plik XML.", + "-1149045595": "1. Po naciśnięciu Importujwybierz Lokalne i kliknij Kontynuuj.", + "-288041546": "2. Wybierz plik XML i naciśnij Otwórz.", + "-2127548288": "3. Twój bot zostanie odpowiednio załadowany.", + "-1311297611": "1. Po naciśnięciu Importujwybierz Dysk Google i kliknij Kontynuuj.", + "-1549564044": "Jak mogę zresetować obszar roboczy?", + "-1127331928": "W Bot Buildernaciśnij Reset na pasku narzędzi u góry. Spowoduje to oczyszczenie obszaru roboczego. Należy pamiętać, że wszelkie niezapisane zmiany zostaną utracone.", + "-1720444288": "Jak mogę kontrolować swoje straty za pomocą Deriv Bot?", + "-1142295124": "Istnieje kilka sposobów kontrolowania strat za pomocą Deriv Bot. Oto prosty przykład tego, jak można wdrożyć kontrolę strat w swojej strategii:", + "-986689483": "1. Utwórz następujące zmienne:", + "-269910127": "3. Zaktualizuj bieżący zysk/stratę zyskiem z ostatniego kontraktu. Jeśli ostatni kontrakt został utracony, wartość bieżącego zysku/straty będzie ujemna.", + "-1565344891": "Czy mogę uruchomić Deriv Bot na wielu kartach w przeglądarce internetowej?", + "-90192474": "Tak, możesz. Istnieją jednak limity na Twoim koncie, takie jak maksymalna liczba otwartych pozycji i maksymalne zagregowane wypłaty na otwartych pozycjach. Dlatego pamiętaj o tych ograniczeniach podczas otwierania wielu pozycji. Więcej informacji na temat tych limitów można znaleźć w Ustawienia> Limity konta.", + "-213872712": "Nie, nie oferujemy kryptowalut w Deriv Bot.", + "-2147346223": "W jakich krajach dostępny jest Deriv Bot?", + "-352345777": "Jakie są najpopularniejsze strategie automatycznego inwestowania?", + "-552392096": "Trzy z najczęściej stosowanych strategii w handlu automatycznym to Martingale, D'Alembert i Oscar's Grind - wszystkie one są gotowe i czekają na Państwa w Deriv Bot.", "-507620484": "Nie zapisano", "-764102808": "Google Drive", "-555886064": "Wygrał", @@ -2937,30 +2956,6 @@ "-1823621139": "Szybka strategia", "-1778025545": "Pomyślnie zaimportowałeś bota.", "-1519425996": "Brak wyników \"{{ faq_search_value }}”", - "-155173714": "Zbudujmy bota!", - "-1919212468": "3. Możesz także wyszukiwać bloki, korzystając z paska wyszukiwania nad kategoriami.", - "-1520558271": "Aby uzyskać więcej informacji, sprawdź ten post na blogu na temat podstaw budowania bota handlowego.", - "-980360663": "3. Wybierz żądany blok i przeciągnij go do obszaru roboczego.", - "-1493168314": "Czym jest szybka strategia?", - "-1680391945": "Korzystanie z szybkiej strategii", - "-1177914473": "Jak mogę zapisać moją strategię?", - "-271986909": "W Bot Buildernaciśnij Zapisz na pasku narzędzi u góry, aby pobrać bota. Nadaj swojemu botowi nazwę i wybierz pobranie bota na urządzenie lub Dysk Google. Twój bot zostanie pobrany jako plik XML.", - "-1149045595": "1. Po naciśnięciu Importujwybierz Lokalne i kliknij Kontynuuj.", - "-288041546": "2. Wybierz plik XML i naciśnij Otwórz.", - "-2127548288": "3. Twój bot zostanie odpowiednio załadowany.", - "-1311297611": "1. Po naciśnięciu Importujwybierz Dysk Google i kliknij Kontynuuj.", - "-1549564044": "Jak mogę zresetować obszar roboczy?", - "-1127331928": "W Bot Buildernaciśnij Reset na pasku narzędzi u góry. Spowoduje to oczyszczenie obszaru roboczego. Należy pamiętać, że wszelkie niezapisane zmiany zostaną utracone.", - "-1720444288": "Jak mogę kontrolować swoje straty za pomocą Deriv Bot?", - "-1142295124": "Istnieje kilka sposobów kontrolowania strat za pomocą Deriv Bot. Oto prosty przykład tego, jak można wdrożyć kontrolę strat w swojej strategii:", - "-986689483": "1. Utwórz następujące zmienne:", - "-269910127": "3. Zaktualizuj bieżący zysk/stratę zyskiem z ostatniego kontraktu. Jeśli ostatni kontrakt został utracony, wartość bieżącego zysku/straty będzie ujemna.", - "-1565344891": "Czy mogę uruchomić Deriv Bot na wielu kartach w przeglądarce internetowej?", - "-90192474": "Tak, możesz. Istnieją jednak limity na Twoim koncie, takie jak maksymalna liczba otwartych pozycji i maksymalne zagregowane wypłaty na otwartych pozycjach. Dlatego pamiętaj o tych ograniczeniach podczas otwierania wielu pozycji. Więcej informacji na temat tych limitów można znaleźć w Ustawienia> Limity konta.", - "-213872712": "Nie, nie oferujemy kryptowalut w Deriv Bot.", - "-2147346223": "W jakich krajach dostępny jest Deriv Bot?", - "-352345777": "Jakie są najpopularniejsze strategie automatycznego inwestowania?", - "-552392096": "Trzy z najczęściej stosowanych strategii w handlu automatycznym to Martingale, D'Alembert i Oscar's Grind - wszystkie one są gotowe i czekają na Państwa w Deriv Bot.", "-418247251": "Pobierz rejestr.", "-2123571162": "Pobierz", "-870004399": "<0>Kupiono: {{longcode}} (ID: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "Pełny ekran", "-1823504435": "Pokaż powiadomienia", "-1954045170": "Nie przypisano żadnej waluty", - "-583559763": "Menu", "-1591792668": "Limity na koncie", "-34495732": "Informacje o przepisach prawnych", "-1496158755": "Przejdź do Deriv.com", @@ -3259,6 +3253,7 @@ "-818926350": "Komisja Finansowa akceptuje odwołania w ciągu 45 dni od daty zdarzenia i wyłącznie do uprzedniej próbie inwestora rozwiązania sprawy bezpośrednio z firmą.", "-1825471709": "Zupełnie nowy rodzaj handlowania na zaawansowanej, ale prostej w obsłudze platformie.", "-981017278": "Zautomatyzowane handlowanie na wyciągnięcie ręki. Bez umiejętności handlowania.", + "-583559763": "Menu", "-778309978": "Kliknięty link wygasł. Upewnij się, że klikniesz łącze w najnowszej wiadomości e-mail w skrzynce odbiorczej. Alternatywnie, wpisz poniżej swój adres e-mail i kliknij Wyślij <0>ponownie e-mail, aby uzyskać nowy link.", "-336222114": "Proszę wykonać te proste kroki, aby to naprawić:", "-1064116456": "Proszę wyszukać brokera <0>Deriv Holdings (Guernsey) Limited i wybrać go.", @@ -3415,22 +3410,6 @@ "-1282933308": "Nie {{barrier}}", "-968190634": "Równa się {{barrier}}", "-1747377543": "Poniżej {{barrier}}", - "-256210543": "Handlowanie nie jest dostępne w tym czasie.", - "-1150099396": "Opcja wkrótce będzie dostępna. Jeśli masz inne konto, przejdź na nie, aby kontynuować inwestowanie. Możesz dodać konto finansowe Deriv MT5.", - "-28115241": "Platforma {{platform_name_trader}} nie jest dostępna dla tego konta", - "-453920758": "Przejdź do pulpitu {{platform_name_mt5}}", - "-402175529": "Historia", - "-902712434": "Anulowanie transakcji", - "-988484646": "Anulowanie transakcji (wykonano)", - "-444882676": "Anulowanie transakcji (aktywne)", - "-13423018": "Identyfikator referencyjny", - "-2035315547": "Dolny limit", - "-1551639437": "Brak historii", - "-1214703885": "Musisz zaktualizować albo uzyskaj zysk albo stop stratom", - "-504849554": "Zostanie ponownie otwarty o", - "-59803288": "W międzyczasie możesz inwestować we wskaźniki syntetyczne, które symulują rzeczywistą sytuację rynkową i są dostępne 24 godz. na dobę 7 dni w tygodniu.", - "-1278109940": "Zobacz otwarte rynki", - "-694105443": "Ten rynek jest zamknięty", "-1043795232": "Ostatnie pozycje", "-1511825574": "Zysk/strata:", "-726626679": "Potencjalny zysk/strata:", @@ -3455,21 +3434,15 @@ "-1435392215": "O anulowaniu transakcji", "-2017825013": "Rozumiem", "-1192773792": "Nie pokazuj tego ponownie", + "-902712434": "Anulowanie transakcji", "-1280319153": "Anuluj swój zakład w dowolnej chwili w wybranym zakresie czasowym. Będzie to następować automatycznie, gdy Twój zakład osiągnie poziom Stop stratom w wybranym zakresie czasowym.", "-471757681": "Zarządzanie ryzykiem", "-843831637": "Stop stratom", "-771725194": "Anulowanie transakcji", "-338707425": "Minimalny czas trwania to 1 dzień", "-1003473648": "Czas trwania: {{duration}} dzień", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "Wypłata w momencie wygaśnięcia jest równa wypłacie za punkt pomnożonej przez różnicę między ceną końcową a ceną wykonania.", "-1527492178": "Zablokowano zakup", "-725375562": "Możesz zablokować/odblokować przycisk zakupu w menu Ustawienia", - "-774638412": "Stawka musi mieścić się w przedziale od {{min_stake}} {{currency}} do {{max_stake}} {{currency}}.", - "-1358367903": "Stawka", - "-434270664": "Aktualna cena", - "-1956787775": "Bariera Cena:", - "-1513281069": "Limit 2", "-390994177": "Powinna być pomiędzy {{min}} a {{max}}", "-1804019534": "Data ważności: {{date}}", "-2055106024": "Przełącz między zaawansowanymi i prostymi ustawieniami czasu trwania", @@ -3484,6 +3457,7 @@ "-1763848396": "Umieścić", "-194424366": "powyżej", "-857660728": "Ceny wykonania", + "-1358367903": "Stawka", "-1386326276": "Limit to pole wymagane.", "-1418742026": "Wyższy limit musi być większy niż niższy limit.", "-92007689": "Niższy limit musi być mniejszy niż wyższy limit.", @@ -3491,6 +3465,21 @@ "-1975910372": "Minuta musi być wartością od 0 do 59.", "-866277689": "Czas wygaśnięcia nie może być w przeszłości.", "-1455298001": "Teraz", + "-256210543": "Handlowanie nie jest dostępne w tym czasie.", + "-1150099396": "Opcja wkrótce będzie dostępna. Jeśli masz inne konto, przejdź na nie, aby kontynuować inwestowanie. Możesz dodać konto finansowe Deriv MT5.", + "-28115241": "Platforma {{platform_name_trader}} nie jest dostępna dla tego konta", + "-453920758": "Przejdź do pulpitu {{platform_name_mt5}}", + "-402175529": "Historia", + "-988484646": "Anulowanie transakcji (wykonano)", + "-444882676": "Anulowanie transakcji (aktywne)", + "-13423018": "Identyfikator referencyjny", + "-2035315547": "Dolny limit", + "-1551639437": "Brak historii", + "-1214703885": "Musisz zaktualizować albo uzyskaj zysk albo stop stratom", + "-504849554": "Zostanie ponownie otwarty o", + "-59803288": "W międzyczasie możesz inwestować we wskaźniki syntetyczne, które symulują rzeczywistą sytuację rynkową i są dostępne 24 godz. na dobę 7 dni w tygodniu.", + "-1278109940": "Zobacz otwarte rynki", + "-694105443": "Ten rynek jest zamknięty", "-439389714": "Pracujemy nad tym", "-770929448": "Przejdź do {{platform_name_smarttrader}}", "-347156282": "Prześlij dowód", @@ -3537,6 +3526,8 @@ "-454245976": "Jeśli uważasz, że cena rynkowa będzie spadać w sposób ciągły przez określony czas, wybierz <0>Krótki. Otrzymasz wypłatę w momencie wygaśnięcia, jeśli cena rynkowa nie dotknie lub nie przekroczy bariery. Twoja wypłata wzrośnie proporcjonalnie do odległości między ceną rynkową a barierą, jeśli bariera nie zostanie przekroczona. Zaczniesz zarabiać, gdy wypłata będzie wyższa niż Twoja stawka. Jeśli cena rynkowa kiedykolwiek przekroczy barierę, nie będzie wypłaty.", "-351875097": "Liczba kleszczy", "-729830082": "Wyświetl mniej", + "-1669741470": "Wypłata w momencie wygaśnięcia jest równa wypłacie za punkt pomnożonej przez różnicę między ceną końcową a ceną wykonania.", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "NOWOŚĆ!", "-993480898": "Akumulatory", "-45873457": "NOWOŚĆ", @@ -3557,6 +3548,10 @@ "-690963898": "Twoja umowa zostanie automatycznie zamknięta, gdy Twoja wypłata osiągnie tę kwotę.", "-511541916": "Twoja umowa zostanie automatycznie zamknięta po osiągnięciu tej liczby kleszczy.", "-438655760": "<0>Uwaga: Mogą Państwo zamknąć transakcję w dowolnym momencie. Proszę pamiętać o ryzyku poślizgu.", + "-774638412": "Stawka musi mieścić się w przedziale od {{min_stake}} {{currency}} do {{max_stake}} {{currency}}.", + "-434270664": "Aktualna cena", + "-1956787775": "Bariera Cena:", + "-1513281069": "Limit 2", "-1683683754": "Długie", "-1046859144": "<0>{{title}} Otrzymasz wypłatę, jeśli cena rynkowa pozostanie {{price_position}} i nie dotknie ani nie przekroczy bariery. W przeciwnym razie Twoja wypłata wyniesie zero.", "-1815023694": "powyżej bariery", diff --git a/packages/translations/src/translations/pt.json b/packages/translations/src/translations/pt.json index a07fc94626de..80653f31762e 100644 --- a/packages/translations/src/translations/pt.json +++ b/packages/translations/src/translations/pt.json @@ -24,7 +24,6 @@ "27731356": "A sua conta está temporariamente desativada. Por favor, contacte-nos através do <0>live chat para ativar novamente os depósitos e levantamentos.", "27830635": "Deriv (V) Ltd", "28581045": "Adicione uma real MT5 account", - "30801950": "Sua conta será aberta com {{legal_entity_name}}, regulamentada pela Autoridade de Jogos de Malta, e estará sujeita às leis de Malta.", "33433576": "Use uma carteira eletrônica para sacar seus fundos.", "35089987": "Carregue a frente e o verso da sua carteira de habilitação.", "41737927": "Obrigado", @@ -251,7 +250,6 @@ "284772879": "Contrato", "284809500": "Demo Financeira", "287934290": "Tem a certeza de que pretende cancelar esta transação?", - "289898640": "TERMOS DE UTILIZAÇÃO", "291744889": "<0>1. Parâmetros de negociação:<0>", "291817757": "Aceda à nossa comunidade Deriv e saiba mais sobre APIs, tokens de API, formas de utilizar APIs Deriv e muito mais.", "292491635": "Se selecionar \"Stop loss\" e especificar um valor para limitar as suas perdas, a sua posição será fechada automaticamente quando as suas perdas forem superiores ou iguais a este valor. A sua perda pode ser superior ao valor introduzido, dependendo do preço de mercado no fechamento.", @@ -372,6 +370,7 @@ "427134581": "Tente usar outro tipo de arquivo.", "427617266": "Bitcoin", "428709688": "O seu intervalo de tempo preferido entre cada relatório:", + "429970999": "To avoid delays, enter your <0>name exactly as it appears on your {{document_name}}.", "431267979": "Aqui está um guia rápido sobre como utilizar a Deriv Bot em qualquer lugar.", "432273174": "1:100", "432508385": "Take Profit: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. Execute uma vez no início", "520136698": "Índice Boom 500", "521872670": "item", - "522283618": "Experiência de negociação de opções digitais", "522703281": "divisível por", "523123321": "- 10 elevado à potência de um determinado número", "524459540": "Como faço para criar variáveis?", @@ -562,7 +560,6 @@ "642546661": "Faça o upload da licença do seu computador", "642995056": "E-mail", "644150241": "O número de contratos que ganhou desde a última vez que limpou as suas estatísticas.", - "645016681": "Frequência de negociação em outros instrumentos financeiros", "645902266": "EURO/NZD", "647039329": "É necessário comprovativo de morada", "647745382": "Lista de entrada {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "Preço à vista no tick anterior.", "812775047": "abaixo da barreira", "814827314": "O nível de stop out no gráfico indica o preço a que a sua perda potencial é igual à sua entrada total. Quando o preço de mercado atingir este nível, a sua posição será fechada automaticamente. Isto assegura que a sua perda não excede o valor que pagou para comprar o contrato.", + "814936420": "{{ banner_message }}", "815925952": "Este bloco é obrigatório. Só é permitida uma cópia deste bloco. Ele é adicionado ao canvas por padrão quando se abre o Deriv Bot.", "816580787": "Bem-vindo de volta! As suas mensagens foram restauradas.", "816738009": "<0/><1/>Também pode levar o seu litígio não resolvido ao <2>Escritório do Árbitro de Serviços Financeiros.", @@ -747,7 +745,6 @@ "836097457": "Tenho interesse em negociar, mas tenho pouca experiência.", "837063385": "Não enviar outras divisas para este endereço.", "837066896": "A sua documentação está a ser analisada. Verifique novamente em 1 a 3 dias.", - "839618971": "ENDEREÇO", "839805709": "Para verificarmos com facilidade, precisaremos de uma foto melhor", "840672750": "Se isto não funcionar, desinstale e volte a instalar a aplicação MT5. Em seguida, repita os passos <0>2 e <0>3.", "841434703": "Desativar pilha", @@ -965,6 +962,7 @@ "1061308507": "Comprar {{ contract_type }}", "1062423382": "Explore os guias de vídeo e as perguntas frequentes para construir o seu bot no separador tutoriais.", "1062536855": "Igual", + "1062569830": "The <0>name on your identity document doesn't match your profile.", "1065275078": "Para já, a cTrader só está disponível no ambiente de trabalho.", "1065353420": "+110", "1065498209": "Iterar (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3. Defina os seus parâmetros comerciais e prima Run.", "1174748431": "Canal de pagamento", "1175183064": "Vanuatu", - "1176926166": "Experiência com negociação de outros instrumentos financeiros", "1177396776": "Se você selecionar “Asiático Desce”, ganhará o pagamento se o último tick for menor que a média dos ticks.", "1177723589": "Não há transações para exibir", "1178582280": "O número de contratos que perdeu desde a última vez que limpou as suas estatísticas.", @@ -1150,6 +1147,7 @@ "1255963623": "Até à data/hora {{ input_timestamp }} {{ dummy }}", "1258097139": "O que poderíamos fazer para melhorar?", "1258198117": "positivo", + "1259145708": "Let’s try again. Choose another document and enter the corresponding details.", "1259598687": "GBP/JPY", "1260259925": "O telemóvel não está num formato adequado.", "1263387702": "Todos os tipos de conta {{count}} utilizam a execução de mercado. Isto significa que concorda com o preço do corretor antecipadamente e colocará ordens ao preço do corretor.", @@ -1173,7 +1171,6 @@ "1289146554": "British Virgin Islands Financial Services Commission", "1289646209": "Chamada de margem", "1290525720": "Exemplo: ", - "1291887623": "Frequência de negociação de opções digitais", "1291997417": "Os contratos expiram exatamente às 23:59:59 GMT na data de expiração selecionada.", "1292188546": "Redefinir a senha do investidor da Deriv MT5", "1292891860": "Notifique o Telegram", @@ -1257,7 +1254,6 @@ "1367023655": "Para garantir que a sua perda não excede a sua entrada, o seu contrato será fechado automaticamente quando a sua perda for igual a <0/>.", "1367488817": "4. Reiniciar as condições comerciais", "1367990698": "Índice Volatilidade 10", - "1369709538": "Nossos termos de uso", "1370647009": "Desfrute de limites diários mais altos", "1371193412": "Cancelar", "1371555192": "Escolha o seu agente de pagamentos preferido e introduza o valor do levantamento. Se o seu agente de pagamentos não constar da lista, <0>procure-o utilizando o número da conta.", @@ -1297,6 +1293,7 @@ "1413047745": "Atribui um determinado valor a uma variável", "1413359359": "Efetuar uma nova transferência", "1414205271": "principal", + "1414918420": "We'll review your proof of identity again and will give you an update as soon as possible.", "1415006332": "obtenha uma sublista a partir do primeiro", "1415513655": "Descarregue a cTrader no seu telemóvel para negociar com a conta Deriv cTrader", "1415974522": "Se selecionar \"Difere\", ganhará o pagamento se o último dígito do último tick não for igual à sua previsão.", @@ -1419,7 +1416,6 @@ "1542742708": "Sintéticos, Forex, Ações, Índices de Ações, Matérias-primas e Criptomoedas", "1544642951": "Se selecionar \"Sempre Acima\", ganha o pagamento se os ticks consecutivos subirem sucessivamente após o ponto de entrada. Não há pagamento se qualquer tick descer ou for igual a qualquer um dos ticks anteriores.", "1547148381": "Esse ficheiro é demasiado grande (só é permitido um máximo de 8MB). Por favor, carregue outro ficheiro.", - "1548765374": "Falha na Verificação do número do documento", "1549098835": "Total retirado", "1551172020": "Cesta de AUD", "1552162519": "Ver a integração", @@ -1647,6 +1643,7 @@ "1790770969": "FX-Majors (lotes padrão/micro), FX-Minors, Matérias primas, Criptomoedas", "1791432284": "Pesquisar por país", "1791971912": "Recentes", + "1792037169": "To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your {{document_name}}.", "1793913365": "Para depositar dinheiro, mude para a sua conta {{currency_symbol}}.", "1794815502": "Descarregue o seu histórico de transações.", "1796787905": "Carregue o(s) seguinte(s) documento(s).", @@ -1792,7 +1789,6 @@ "1924765698": "Local de nascimento*", "1926987784": "- iOS: Deslize para a esquerda na conta e pressione <0>Eliminar.", "1928930389": "GBP/NOK", - "1929309951": "Situação profissional", "1929694162": "Comparar contas", "1930899934": "Tether", "1931659123": "Executar em cada tick", @@ -1966,12 +1962,12 @@ "2115223095": "Perda", "2117165122": "1. Crie um bot do Telegram e obtenha o seu token da API do Telegram. Leia mais sobre como criar bots no Telegram aqui: https://core.telegram.org/bots#6-botfather", "2117489390": "Atualização automática em {{ remaining }} segundos", - "2118315870": "Onde é que vive?", "2119449126": "O exemplo de saída do exemplo abaixo será:", "2119710534": "PERGUNTAS FREQUENTES", "2121227568": "NEO/USD", "2122152120": "Ativos", "2127564856": "As retiradas estão bloqueadas", + "2129807378": "Update profile", "2131963005": "Por favor, retire os seus fundos da(s) seguinte(s) conta(s) Deriv MT5:", "2133451414": "Duração", "2133470627": "Esse bloco retorna o pagamento potencial para o tipo de negociação selecionado. Esse bloco só pode ser usado no bloco raiz “Condições de compra”.", @@ -1992,8 +1988,6 @@ "2146698770": "Sugestão profissional: também pode clicar e arrastar o bloco pretendido", "2146892766": "Experiência de negociação de opções binárias", "2147244655": "Como faço para importar meu próprio bot de negociação para o Deriv Bot?", - "-1232613003": "<0>Falha na Verificação. <1>Por quê?", - "-2029508615": "<0>Precisa de verificação. <1>Verifique agora", "-931052769": "Enviar verificação", "-1004605898": "Dicas", "-1938142055": "Documentos enviados", @@ -2141,18 +2135,9 @@ "-179726573": "Recebemos o seu comprovativo de propriedade.", "-813779897": "A verificação do comprovativo de propriedade foi aprovada.", "-638756912": "Escureça os dígitos 7 a 12 do número do cartão exibido na frente do seu cartão de débito/crédito.", - "-2073934245": "Os serviços de negociação financeira oferecidos neste site são adequados apenas para clientes que aceitam a possibilidade de perder todo o dinheiro que investem e que entendem e têm experiência com o risco envolvido na compra de contratos financeiros. As transações em contratos financeiros apresentam um alto grau de risco. Se os contratos adquiridos expirarem como inúteis, você perderá todo o seu investimento, o que inclui o prêmio do contrato.", - "-1166068675": "A sua conta será aberta com {{legal_entity_name}}, regulada pela UK Gaming Commission (UKGC) e estará sujeita às leis da Ilha de Man.", - "-975118358": "A sua conta será aberta com {{legal_entity_name}}, regulada pela Autoridade de Serviços Financeiros de Malta (MFSA) e estará sujeita às leis de Malta.", - "-680528873": "A sua conta será aberta com {{legal_entity_name}} e estará sujeita às leis de Samoa.", - "-1125193491": "Adicionar conta", - "-2068229627": "Eu não sou um PEP e não fui um PEP nos últimos 12 meses.", "-684271315": "OK", "-740157281": "Avaliação da experiência de negociação", "-1720468017": "Ao fornecer nossos serviços a você, somos obrigados a obter informações de você para avaliar se um determinado produto ou serviço é apropriado para você.", - "-186841084": "Alterar seu e-mail de login", - "-907403572": "Para alterar o seu e-mail, primeiro tem de desvincular o seu e-mail da sua conta {{identifier_title}}.", - "-1850792730": "Desligar de {{identifier_title}}", "-307865807": "Aviso de tolerância ao risco", "-690100729": "Sim, eu entendo o risco.", "-2010628430": "CFDs e outros instrumentos financeiros apresentam um alto risco de perder dinheiro rapidamente devido à alavancagem. Você deve considerar se entende como os CFDs e outros instrumentos financeiros funcionam e se pode correr o alto risco de perder seu dinheiro. <0/> <0/> Para continuar, você deve confirmar que entende que seu capital está em risco.", @@ -2206,11 +2191,6 @@ "-1725454783": "Falhou", "-506510414": "Data e hora", "-1708927037": "Endereço IP", - "-619126443": "Use a senha <0>Deriv fazer login para {{brand_website_name}} e {{platform_name_trader}}.", - "-623760979": "Utilize a <0>palavra-passe Deriv para iniciar sessão em {{brand_website_name}}, {{platform_name_trader}} e {{platform_name_go}}.", - "-459147994": "Utilize a <0>palavra-passe Deriv para iniciar sessão em {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} e {{platform_name_ctrader}}.", - "-80717068": "Aplicações que associou à sua <0>palavra-passe Deriv:", - "-9570380": "Utilize a palavra-passe {{platform_name_dxtrade}} para iniciar sessão nas suas contas {{platform_name_dxtrade}} na Web e nas ", "-2131200819": "Desativar", "-200487676": "Ativar", "-1840392236": "Este não é o código correto. Por favor, tente novamente.", @@ -2240,44 +2220,37 @@ "-378415317": "O estado é obrigatório", "-1497654315": "Nossas contas e serviços não estão disponíveis para o código postal de Jersey.", "-755626951": "Preencha os detalhes do seu endereço", - "-584911871": "Selecione a moeda da carteira", "-1461267236": "Escolha sua moeda", - "-1352330125": "MOEDA", "-1027595143": "Menos de $25.000", "-40491332": "$25.000 - $50.000", "-1139806939": "$50.001 - $100.000", - "-626752657": "0-1 ano", - "-532014689": "1-2 anos", - "-1001024004": "Mais de 3 anos", - "-790513277": "6 a 10 transações nos últimos 12 meses", - "-580085300": "11-39 transações nos últimos 12 meses", - "-654781670": "Primária", - "-1717373258": "Secundário", "-996132458": "Construção", "-915003867": "Saúde", "-1430012453": "Tecnologia da Informação e Comunicação", "-987824916": "Ciência e Engenharia", "-146630682": "Social e cultural", "-761306973": "Fabricação", - "-739367071": "Empregado", - "-1156937070": "$500.001 - $1.000.000", - "-315534569": "Mais de $1.000.000", - "-2068544539": "Empregado assalariado", - "-531314998": "Investimentos e dividendos", - "-1235114522": "Pensão", - "-1298056749": "Benefícios estaduais", - "-449943381": "Poupança e herança", "-1631552645": "Profissionais", "-474864470": "Trabalhadores de cuidados pessoais, vendas e serviços", "-1129355784": "Trabalhadores da agricultura, silvicultura e pesca", "-1242914994": "Trabalhadores artesanais, metalúrgicos, elétricos e eletrônicos", "-1317824715": "Limpadores e ajudantes", "-1592729751": "Trabalhadores de mineração, construção, manufatura e transporte", + "-1030759620": "Oficiais do governo", "-2137323480": "Propriedade da empresa", "-1590574533": "Acordo de divórcio", "-1667683002": "Herança", "-1237843731": "Renda de investimento", "-777506574": "Venda de propriedade", + "-654781670": "Primária", + "-1717373258": "Secundário", + "-1156937070": "$500.001 - $1.000.000", + "-315534569": "Mais de $1.000.000", + "-2068544539": "Empregado assalariado", + "-531314998": "Investimentos e dividendos", + "-1235114522": "Pensão", + "-1298056749": "Benefícios estaduais", + "-449943381": "Poupança e herança", "-1161338910": "O primeiro nome é obrigatório.", "-1161818065": "O último nome deve ter entre 2 e 50 caracteres.", "-1281693513": "A data de nascimento é obrigatória.", @@ -2287,28 +2260,14 @@ "-212167954": "O número de identificação fiscal não está formatado corretamente.", "-621555159": "Informações de identidade", "-204765990": "Termos de uso", - "-231863107": "Não", - "-870902742": "Quanto conhecimento e experiência você tem em relação ao comércio on-line?", - "-1929477717": "Tenho um diploma acadêmico, certificação profissional e/ou experiência profissional relacionada a serviços financeiros.", - "-1540148863": "Participei de seminários, treinamentos e/ou workshops relacionados à negociação.", - "-922751756": "Menos de um ano", - "-542986255": "Nenhum", - "-1337206552": "Em seu entendimento, a negociação de CFD permite que você", - "-456863190": "Coloque uma posição no movimento do preço de um ativo em que o resultado seja um retorno fixo ou nada.", - "-1314683258": "Faça um investimento de longo prazo para obter lucro garantido.", - "-1546090184": "Como a alavancagem afeta a negociação de CFD?", - "-1636427115": "A Alavancagem ajuda a mitigar os riscos.", - "-800221491": "Alavancagem garante lucros.", - "-811839563": "Alavancagem permite que você abra grandes posições por uma fração do valor comercial, o que pode resultar em aumento de lucros ou perdas.", - "-1185193552": "Feche sua negociação automaticamente quando a perda for igual ou superior a um valor especificado, desde que haja liquidez de mercado adequada.", - "-1046354": "Feche sua negociação automaticamente quando o lucro for igual ou superior a um valor especificado, desde que haja liquidez de mercado adequada.", - "-1842858448": "Obtenha um lucro garantido em sua negociação.", - "-860053164": "Ao negociar multiplicadores.", - "-1250327770": "Ao comprar ações de uma empresa.", - "-1222388581": "Todas as anteriores.", "-477761028": "ID de eleitor", "-1466346630": "CPF", - "-1030759620": "Oficiais do governo", + "-739367071": "Empregado", + "-626752657": "0-1 ano", + "-532014689": "1-2 anos", + "-1001024004": "Mais de 3 anos", + "-790513277": "6 a 10 transações nos últimos 12 meses", + "-580085300": "11-39 transações nos últimos 12 meses", "-612752984": "Esses são os limites padrão que aplicamos às suas contas.", "-1598263601": "Para saber mais sobre os limites de negociação e como eles se aplicam, acesse a Central de <0>Ajuda.", "-1411635770": "Saiba mais sobre os limites da conta", @@ -2326,10 +2285,7 @@ "-1500958859": "Verificar", "-1502578110": "Sua conta está totalmente autenticada e seus limites de saque foram suspensos.", "-1662154767": "uma fatura recente (por exemplo, eletricidade, água, gás, telefone fixo ou Internet), um extrato bancário ou uma carta emitida pelo governo com o seu nome e esta morada.", - "-190838815": "Precisamos disso para verificação. Se as informações fornecidas forem falsas ou imprecisas, você não poderá depositar e sacar.", - "-223216785": "Segunda linha de endereço*", "-594456225": "Segunda linha de endereço", - "-1940457555": "Código postal/CEP*", "-1964954030": "Código postal", "-516397235": "Tenha cuidado com quem partilha este token. Qualquer pessoa com este token pode realizar as seguintes ações em nome da sua conta", "-989216986": "Adicionar contas", @@ -2371,8 +2327,6 @@ "-1100235269": "Indústria do emprego", "-684388823": "Patrimônio líquido estimado", "-509054266": "Volume de negócios anual previsto", - "-601903492": "Experiência de negociação em Forex", - "-1012699451": "Experiência em negociação de CFDs", "-1588485629": "Exemplo", "-1117345066": "Escolha o tipo de documento", "-651192353": "Amostra:", @@ -2393,18 +2347,21 @@ "-1944264183": "Para continuar a negociar, deve também apresentar um comprovativo de identidade.", "-1088324715": "Analisaremos seus documentos e notificaremos você sobre seu status dentro de 1 a 3 dias úteis.", "-329713179": "Ok", - "-1176889260": "Selecione um tipo de documento.", - "-1926456107": "O ID que você enviou expirou.", - "-555047589": "Parece que seu documento de identidade expirou. Tente novamente com um documento válido.", - "-841187054": "Tente novamente", + "-895884696": "The <0>name and <0>date of birth on your identity document don't match your profile.", + "-1792723131": "To avoid delays, enter your <0>date of birth exactly as it appears on your {{document_name}}.", + "-886317740": "The <0>date of birth on your identity document doesn't match your profile.", + "-1813671961": "Your identity verification failed because:", "-2097808873": "Não foi possível verificar sua identidade com os detalhes que você forneceu. ", - "-228284848": "Não foi possível verificar sua identidade com os detalhes que você forneceu.", + "-1652371224": "Your profile is updated", + "-504784172": "Your document has been submitted", "-1391934478": "A sua identificação foi verificada. Terá também de apresentar um comprovativo de morada.", "-118547687": "Verificação de identidade aprovada", "-200989771": "Vá para detalhes pessoais", "-1358357943": "Verifique e atualize seu código postal antes de enviar a prova de identidade.", "-1401994581": "Seus dados pessoais estão faltando", "-2004327866": "Selecione um país válido para a emissão do documento.", + "-1627868670": "Your identity document has expired.", + "-1606307809": "We were unable to verify the identity document with the details provided.", "-1664159494": "País", "-749870311": "Contacte-nos através do <0>chat em direto.", "-1084991359": "Prova de verificação de identidade não necessária", @@ -2464,21 +2421,54 @@ "-142444667": "Clique no link do e-mail para alterar sua senha do Deriv MT5.", "-742748008": "Verifique seu e-mail e clique no link do e-mail para continuar.", "-84068414": "Ainda não recebeu o e-mail? Entre em contato conosco via <0>chat ao vivo.", + "-975118358": "A sua conta será aberta com {{legal_entity_name}}, regulada pela Autoridade de Serviços Financeiros de Malta (MFSA) e estará sujeita às leis de Malta.", + "-2073934245": "Os serviços de negociação financeira oferecidos neste site são adequados apenas para clientes que aceitam a possibilidade de perder todo o dinheiro que investem e que entendem e têm experiência com o risco envolvido na compra de contratos financeiros. As transações em contratos financeiros apresentam um alto grau de risco. Se os contratos adquiridos expirarem como inúteis, você perderá todo o seu investimento, o que inclui o prêmio do contrato.", + "-1125193491": "Adicionar conta", + "-2068229627": "Eu não sou um PEP e não fui um PEP nos últimos 12 meses.", + "-186841084": "Alterar seu e-mail de login", + "-907403572": "Para alterar o seu e-mail, primeiro tem de desvincular o seu e-mail da sua conta {{identifier_title}}.", + "-1850792730": "Desligar de {{identifier_title}}", "-428335668": "Você precisará definir uma senha para concluir o processo.", + "-1232613003": "<0>Falha na Verificação. <1>Por quê?", + "-2029508615": "<0>Precisa de verificação. <1>Verifique agora", "-818898181": "O nome no documento não corresponde ao seu perfil Deriv.", "-310316375": "O endereço no documento não coincide com o endereço que você inseriu acima.", "-485368404": "Documento emitido há mais de 6 meses.", "-367016488": "Documento desfocado. Todas as informações devem ser claras e visíveis.", "-1957076143": "Documento recortado. Todas as informações devem estar nítidas e visíveis.", + "-1576856758": "An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.", + "-231863107": "Não", + "-870902742": "Quanto conhecimento e experiência você tem em relação ao comércio on-line?", + "-1929477717": "Tenho um diploma acadêmico, certificação profissional e/ou experiência profissional relacionada a serviços financeiros.", + "-1540148863": "Participei de seminários, treinamentos e/ou workshops relacionados à negociação.", + "-922751756": "Menos de um ano", + "-542986255": "Nenhum", + "-1337206552": "Em seu entendimento, a negociação de CFD permite que você", + "-456863190": "Coloque uma posição no movimento do preço de um ativo em que o resultado seja um retorno fixo ou nada.", + "-1314683258": "Faça um investimento de longo prazo para obter lucro garantido.", + "-1546090184": "Como a alavancagem afeta a negociação de CFD?", + "-1636427115": "A Alavancagem ajuda a mitigar os riscos.", + "-800221491": "Alavancagem garante lucros.", + "-811839563": "Alavancagem permite que você abra grandes posições por uma fração do valor comercial, o que pode resultar em aumento de lucros ou perdas.", + "-1185193552": "Feche sua negociação automaticamente quando a perda for igual ou superior a um valor especificado, desde que haja liquidez de mercado adequada.", + "-1046354": "Feche sua negociação automaticamente quando o lucro for igual ou superior a um valor especificado, desde que haja liquidez de mercado adequada.", + "-1842858448": "Obtenha um lucro garantido em sua negociação.", + "-860053164": "Ao negociar multiplicadores.", + "-1250327770": "Ao comprar ações de uma empresa.", + "-1222388581": "Todas as anteriores.", "-1515286538": "Por favor, insira o número do seu documento. ", "-1694758788": "Insira o número do seu documento", "-1458676679": "Você deve inserir de 2 a 50 caracteres.", + "-1176889260": "Selecione um tipo de documento.", + "-1265050949": "identity document", "-2139303636": "Você pode ter seguido um link quebrado ou a página foi movida para um novo endereço.", "-1448368765": "Código de erro: {{error_code}} página não encontrada", "-254792921": "Você só pode fazer depósitos no momento. Para permitir saques, conclua sua avaliação financeira.", "-1437017790": "Informações financeiras", "-70342544": "Somos legalmente obrigados a solicitar suas informações financeiras.", "-39038029": "Experiência de negociação", + "-601903492": "Experiência de negociação em Forex", + "-1012699451": "Experiência em negociação de CFDs", "-1894668798": "Experiência com outros instrumentos de negociação", "-1026468600": "Frequência de outros instrumentos de negociação", "-1743024217": "Selecione o idioma", @@ -2489,6 +2479,11 @@ "-536187647": "Confirmar a revogação do acesso?", "-1357606534": "Permissão", "-570222048": "Revogar acesso", + "-80717068": "Aplicações que associou à sua <0>palavra-passe Deriv:", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "Use a senha <0>Deriv fazer login para {{brand_website_name}} e {{platform_name_trader}}.", + "-623760979": "Utilize a <0>palavra-passe Deriv para iniciar sessão em {{brand_website_name}}, {{platform_name_trader}} e {{platform_name_go}}.", + "-459147994": "Utilize a <0>palavra-passe Deriv para iniciar sessão em {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} e {{platform_name_ctrader}}.", "-1526404112": "Conta de serviços públicos: conta de eletricidade, água, gás ou telefone fixo.", "-537552700": "Contrato de arrendamento de casa: contrato válido e atual.", "-890084320": "Salvar e enviar", @@ -2859,6 +2854,30 @@ "-1016171176": "Ativo", "-621128676": "Tipo de negociação", "-447853970": "Limite de perda", + "-155173714": "Vamos criar um bot!", + "-1919212468": "3. Você também pode pesquisar os blocos desejados usando a barra de pesquisa acima das categorias.", + "-1520558271": "Para mais informações, consulte este post do blogue sobre os princípios básicos da construção de um bot de negociação.", + "-980360663": "3. Escolha o bloco desejado e arraste-o para a área de trabalho.", + "-1493168314": "O que é uma estratégia rápida?", + "-1680391945": "Usando uma estratégia rápida", + "-1177914473": "Como faço para salvar minha estratégia?", + "-271986909": "No <0>Bot Builder, clique em <0>Salvar na barra de ferramentas na parte superior para baixar O seu bot. Dê um nome ao seu bot e escolha transferir para o seu dispositivo ou para o Google Drive. O seu bot será transferido como um arquivo XML.", + "-1149045595": "1. Depois de pressionar Importar, selecione Local e clique em Continuar.", + "-288041546": "2. Selecione seu arquivo XML e pressione Abrir.", + "-2127548288": "3. Seu bot será carregado adequadamente.", + "-1311297611": "1. Depois de pressionar Importar, selecione Google Drive e clique em Continuar.", + "-1549564044": "Como faço para redefinir o espaço de trabalho?", + "-1127331928": "Em Bot Builder, pressione Reset na barra de ferramentas na parte superior. Isso limpará o espaço de trabalho. Observe que todas as alterações não salvas serão perdidas.", + "-1720444288": "Como é que eu controlo as minhas perdas com o Deriv Bot?", + "-1142295124": "Existem várias maneiras de controlar suas perdas com o Deriv Bot. Aqui está um exemplo simples de como você pode implementar o controle de perdas em sua estratégia:", + "-986689483": "1. Crie as seguintes variáveis:", + "-269910127": "3. Atualize o lucro/perda atual com o lucro do último contrato. Se o último contrato foi perdido, o valor do lucro/prejuízo atual será negativo.", + "-1565344891": "Posso executar o Deriv Bot em vários separadores no meu navegador?", + "-90192474": "Sim, você pode. No entanto, há limites em sua conta, como número máximo de posições abertas e pagamentos agregados máximos em posições abertas. Portanto, lembre-se desses limites ao abrir várias posições. Você pode encontrar mais informações sobre esses limites em Configurações > Limites da conta.", + "-213872712": "Não, nós não oferecemos criptomoedas no Deriv Bot.", + "-2147346223": "Em que países está disponível o Deriv Bot?", + "-352345777": "Quais são as estratégias mais populares para negociação automatizada?", + "-552392096": "Três das estratégias mais usadas na negociação automatizada são Martingale, D'Alembert e Oscar's Grind - pode encontrá-las prontas e esperando por si na Deriv Bot.", "-507620484": "Não salvo", "-764102808": "Google Drive", "-555886064": "Ganhou", @@ -2937,30 +2956,6 @@ "-1823621139": "Estratégia rápida", "-1778025545": "Você importou um bot com sucesso.", "-1519425996": "Nenhum resultado encontrado \"{{ faq_search_value }}”", - "-155173714": "Vamos criar um bot!", - "-1919212468": "3. Você também pode pesquisar os blocos desejados usando a barra de pesquisa acima das categorias.", - "-1520558271": "Para mais informações, consulte este post do blogue sobre os princípios básicos da construção de um bot de negociação.", - "-980360663": "3. Escolha o bloco desejado e arraste-o para a área de trabalho.", - "-1493168314": "O que é uma estratégia rápida?", - "-1680391945": "Usando uma estratégia rápida", - "-1177914473": "Como faço para salvar minha estratégia?", - "-271986909": "No <0>Bot Builder, clique em <0>Salvar na barra de ferramentas na parte superior para baixar O seu bot. Dê um nome ao seu bot e escolha transferir para o seu dispositivo ou para o Google Drive. O seu bot será transferido como um arquivo XML.", - "-1149045595": "1. Depois de pressionar Importar, selecione Local e clique em Continuar.", - "-288041546": "2. Selecione seu arquivo XML e pressione Abrir.", - "-2127548288": "3. Seu bot será carregado adequadamente.", - "-1311297611": "1. Depois de pressionar Importar, selecione Google Drive e clique em Continuar.", - "-1549564044": "Como faço para redefinir o espaço de trabalho?", - "-1127331928": "Em Bot Builder, pressione Reset na barra de ferramentas na parte superior. Isso limpará o espaço de trabalho. Observe que todas as alterações não salvas serão perdidas.", - "-1720444288": "Como é que eu controlo as minhas perdas com o Deriv Bot?", - "-1142295124": "Existem várias maneiras de controlar suas perdas com o Deriv Bot. Aqui está um exemplo simples de como você pode implementar o controle de perdas em sua estratégia:", - "-986689483": "1. Crie as seguintes variáveis:", - "-269910127": "3. Atualize o lucro/perda atual com o lucro do último contrato. Se o último contrato foi perdido, o valor do lucro/prejuízo atual será negativo.", - "-1565344891": "Posso executar o Deriv Bot em vários separadores no meu navegador?", - "-90192474": "Sim, você pode. No entanto, há limites em sua conta, como número máximo de posições abertas e pagamentos agregados máximos em posições abertas. Portanto, lembre-se desses limites ao abrir várias posições. Você pode encontrar mais informações sobre esses limites em Configurações > Limites da conta.", - "-213872712": "Não, nós não oferecemos criptomoedas no Deriv Bot.", - "-2147346223": "Em que países está disponível o Deriv Bot?", - "-352345777": "Quais são as estratégias mais populares para negociação automatizada?", - "-552392096": "Três das estratégias mais usadas na negociação automatizada são Martingale, D'Alembert e Oscar's Grind - pode encontrá-las prontas e esperando por si na Deriv Bot.", "-418247251": "Descarregue o seu diário.", "-2123571162": "Descarregar", "-870004399": "<0>Comprado: {{longcode}} (ID: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "Ecrã inteiro", "-1823504435": "Exibir notificações", "-1954045170": "Nenhuma moeda atribuída", - "-583559763": "Menu", "-1591792668": "Limites da conta", "-34495732": "Informações regulamentares", "-1496158755": "Aceder a Deriv.com", @@ -3259,6 +3253,7 @@ "-818926350": "A Comissão Financeira aceita recursos durante 45 dias a contar da data do incidente e apenas após o trader ter tentado resolver o problema diretamente com a empresa.", "-1825471709": "Uma experiência de negociação totalmente nova numa plataforma poderosa e fácil de utilizar.", "-981017278": "Negociação automatizada na ponta dos dedos. Não é necessário codificar.", + "-583559763": "Menu", "-778309978": "O link em que você clicou expirou. Certifique-se de clicar no link do e-mail mais recente em sua caixa de entrada. Como alternativa, insira seu e-mail abaixo e clique em <0>Reenviar e-mail para obter um novo link.", "-336222114": "Siga estes passos simples para o resolver:", "-1064116456": "Procurar o corretor <0>Deriv Holdings (Guernsey) Limited e seleccioná-lo.", @@ -3415,22 +3410,6 @@ "-1282933308": "Não {{barrier}}", "-968190634": "Igual a {{barrier}}", "-1747377543": "Abaixo de {{barrier}}", - "-256210543": "De momento, a negociação não está disponível.", - "-1150099396": "Estamos trabalhando para disponibilizá-lo para você em breve. Se você tiver outra conta, mude para essa conta para continuar negociando. Você pode adicionar um Deriv MT5 Financial.", - "-28115241": "{{platform_name_trader}} não está disponível para esta conta", - "-453920758": "Vá para o painel {{platform_name_mt5}}", - "-402175529": "Histórico", - "-902712434": "Cancelamento da transação", - "-988484646": "Cancelamento da transação (executado)", - "-444882676": "Cancelamento da transação (ativo)", - "-13423018": "ID de referência", - "-2035315547": "Baixa barreira", - "-1551639437": "Sem histórico", - "-1214703885": "Ainda não atualizou o take profit ou o stop loss", - "-504849554": "Reabrirá em", - "-59803288": "Entretanto, experimente os nossos índices sintéticos. Estes simulam a volatilidade do mercado real e estão abertos 24 horas por dia, 7 dias por semana.", - "-1278109940": "Veja mercados abertos", - "-694105443": "Este mercado está fechado", "-1043795232": "Posições recentes", "-1511825574": "Lucro/perda:", "-726626679": "Lucro/perda potencial:", @@ -3455,21 +3434,15 @@ "-1435392215": "Sobre o cancelamento da transação", "-2017825013": "Entendi", "-1192773792": "Não mostre isso novamente", + "-902712434": "Cancelamento da transação", "-1280319153": "Cancele a sua negociação a qualquer momento dentro de um prazo escolhido. Acionada automaticamente se a sua negociação atingir o nível de stop out no prazo escolhido.", "-471757681": "Gestão do risco", "-843831637": "Stop loss", "-771725194": "Cancelamento da transação", "-338707425": "A duração mínima é de 1 dia", "-1003473648": "Duração: {{duration}} dia", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "O pagamento no vencimento é igual ao pagamento por ponto multiplicado pela diferença entre o preço final e o preço de exercício.", "-1527492178": "Compra bloqueada", "-725375562": "Pode bloquear/desbloquear o botão de compra no menu Definições", - "-774638412": "A aposta deve situar-se entre {{min_stake}} {{currency}} e {{max_stake}} {{currency}}", - "-1358367903": "Entrada", - "-434270664": "Preço atual", - "-1956787775": "Preço de Barreira:", - "-1513281069": "Barreira 2", "-390994177": "Deve estar entre {{min}} e {{max}}", "-1804019534": "Prazo de validade: {{date}}", "-2055106024": "Alternar entre definições de duração avançadas e simples", @@ -3484,6 +3457,7 @@ "-1763848396": "Put", "-194424366": "acima", "-857660728": "Preços de Exercício", + "-1358367903": "Entrada", "-1386326276": "A Barreira é um campo obrigatório.", "-1418742026": "A barreira superior deve ser superior à barreira inferior.", "-92007689": "A barreira inferior deve ser menor que a barreira superior.", @@ -3491,6 +3465,21 @@ "-1975910372": "O minuto deve estar entre 0 e 59.", "-866277689": "O horário de expiração não pode estar no passado.", "-1455298001": "Agora", + "-256210543": "De momento, a negociação não está disponível.", + "-1150099396": "Estamos trabalhando para disponibilizá-lo para você em breve. Se você tiver outra conta, mude para essa conta para continuar negociando. Você pode adicionar um Deriv MT5 Financial.", + "-28115241": "{{platform_name_trader}} não está disponível para esta conta", + "-453920758": "Vá para o painel {{platform_name_mt5}}", + "-402175529": "Histórico", + "-988484646": "Cancelamento da transação (executado)", + "-444882676": "Cancelamento da transação (ativo)", + "-13423018": "ID de referência", + "-2035315547": "Baixa barreira", + "-1551639437": "Sem histórico", + "-1214703885": "Ainda não atualizou o take profit ou o stop loss", + "-504849554": "Reabrirá em", + "-59803288": "Entretanto, experimente os nossos índices sintéticos. Estes simulam a volatilidade do mercado real e estão abertos 24 horas por dia, 7 dias por semana.", + "-1278109940": "Veja mercados abertos", + "-694105443": "Este mercado está fechado", "-439389714": "Estamos a trabalhar nisso", "-770929448": "Aceder a {{platform_name_smarttrader}}", "-347156282": "Enviar Comprovativo", @@ -3537,6 +3526,8 @@ "-454245976": "Se você acha que o preço de mercado cairá continuamente por um período específico, escolha <0>Curto. Você receberá um pagamento no prazo de validade se o preço de mercado não tocar ou ultrapassar a barreira. Seu pagamento aumentará proporcionalmente à distância entre o preço de mercado e a barreira se a barreira não for violada. Você começará a lucrar quando o pagamento for maior do que sua aposta. Se o preço de mercado ultrapassar a barreira, não haverá pagamento.", "-351875097": "Número de ticks", "-729830082": "Exibir menos", + "-1669741470": "O pagamento no vencimento é igual ao pagamento por ponto multiplicado pela diferença entre o preço final e o preço de exercício.", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "NOVO!", "-993480898": "Acumuladores", "-45873457": "NOVO", @@ -3557,6 +3548,10 @@ "-690963898": "O seu contrato será encerrado automaticamente quando o seu pagamento atingir esse valor.", "-511541916": "O seu contrato será automaticamente encerrado ao atingir esse número de ticks.", "-438655760": "<0>Nota: Pode fechar a sua transação em qualquer altura. Esteja ciente do risco de derrapagem.", + "-774638412": "A aposta deve situar-se entre {{min_stake}} {{currency}} e {{max_stake}} {{currency}}", + "-434270664": "Preço atual", + "-1956787775": "Preço de Barreira:", + "-1513281069": "Barreira 2", "-1683683754": "Longo", "-1046859144": "<0>{{title}} Você receberá um pagamento se o preço de mercado permanecer igual a {{price_position}} e não tocar ou cruzar a barreira. Caso contrário, seu pagamento será zero.", "-1815023694": "acima da barreira", diff --git a/packages/translations/src/translations/ru.json b/packages/translations/src/translations/ru.json index 21edf40270f5..625e6fab8979 100644 --- a/packages/translations/src/translations/ru.json +++ b/packages/translations/src/translations/ru.json @@ -24,7 +24,6 @@ "27731356": "Ваш счет временно отключен. Свяжитесь с нами через <0>чат, чтобы активировать пополнение и вывод средств.", "27830635": "Deriv (V) Ltd", "28581045": "Добавить реальный счет MT5", - "30801950": "Ваш счет будет открыт в компании {{legal_entity_name}}, компания регулируется мальтийским управлением по азартным играм и подчиняется законодательству Мальты.", "33433576": "Используйте электронный кошелек для вывода средств.", "35089987": "Загрузите лицевую и оборотную сторону водительских прав.", "41737927": "Спасибо", @@ -251,7 +250,6 @@ "284772879": "Контракт", "284809500": "Финансовый демо", "287934290": "Вы уверены, что хотите отменить эту транзакцию?", - "289898640": "УСЛОВИЯ ИСПОЛЬЗОВАНИЯ", "291744889": "<0>1. Параметры контракта:<0>", "291817757": "Посетите сообщество Deriv и узнайте об API, токенах API, способах использования API Deriv и многом другом.", "292491635": "Если вы выберете «Стоп лосс» и зададите сумму, ограничивающую ваш убыток, позиция будет закрыта автоматически, если убыток больше или равен этой сумме. Ваш убыток может оказаться больше, чем сумма, которую вы ввели, в зависимости от рыночной цены при закрытии.", @@ -299,7 +297,7 @@ "344418897": "Эти торговые лимиты и самоисключение помогают вам контролировать количество денег и времени, которые вы тратите на {{brand_website_name}}, и практиковать <0>ответственную торговлю.", "345320063": "Неверная временная метка", "345818851": "Извините, произошла внутренняя ошибка. Нажмите флажок выше, чтобы повторить попытку.", - "347029309": "Forex: стандартные/микро", + "347029309": "Форекс: стандартные/микро", "347039138": "Повторить (2)", "347217485": "Проблемы с доступом к Deriv MT5 с мобильного телефона?", "348951052": "Ваша касса заблокирована", @@ -372,6 +370,7 @@ "427134581": "Попробуйте использовать другой тип файла.", "427617266": "Bitcoin", "428709688": "Предпочтительный интервал времени между отчетами:", + "429970999": "Чтобы избежать задержек, введите <0>имя точно так, как оно указано в {{document_name}}.", "431267979": "Вот краткое руководство по использованию Deriv Bot.", "432273174": "1:100", "432508385": "Тейк профит: {{ currency }} {{ take_profit }}", @@ -412,7 +411,7 @@ "465993338": "Оскар Грайнд", "466369320": "Ваша валовая прибыль - это процентное изменение рыночной цены, умноженное на вашу ставку и выбранный мультипликатор.", "466837068": "Да, увеличить лимиты", - "467839232": "Я регулярно торгую CFD на forex и другими сложными финансовыми инструментами на других платформах.", + "467839232": "Я регулярно торгую CFD на форекс и другими сложными финансовыми инструментами на других платформах.", "473154195": "Настройки", "474306498": "Жаль, что вы уходите. Ваш счет закрыт.", "475492878": "Попробуйте Синтетические индексы", @@ -453,7 +452,6 @@ "518955798": "7. Запустить один раз в начале", "520136698": "Индекс Boom 500", "521872670": "описание", - "522283618": "Опыт торговли цифровыми опционами", "522703281": "делится на", "523123321": "- 10 к степени заданного числа", "524459540": "Как создавать переменные?", @@ -470,7 +468,7 @@ "542038694": "Для {{label}} разрешены только буквы, цифры, пробел, нижнее подчёркивание, и дефис.", "542305026": "Вам также необходимо предоставить подтверждение личности.", "543413346": "У вас нет открытых позиций по этому активу. Чтобы просмотреть другие открытые вакансии, нажмите Перейти к отчетам.", - "543915570": "Forex, акции, криптовалюты, фондовые и синтетические индексы", + "543915570": "Форекс, акции, криптовалюты, фондовые и синтетические индексы", "545476424": "Общая сумма вывода", "549479175": "Мультипликаторы Deriv", "550589723": "Ваша ставка будет расти на {{growth_rate}}% за тик до тех пор, пока текущая спот-цена остается в пределах ±{{{tick_size_barrier}} от предыдущей спот-цены.", @@ -562,7 +560,6 @@ "642546661": "Загрузите оборотную сторону прав со своего компьютера", "642995056": "Email", "644150241": "Количество успешных контрактов с момента последней очистки статистики.", - "645016681": "Частота торговли другими финансовыми инструментами", "645902266": "EUR/NZD", "647039329": "Необходимо подтверждение адреса", "647745382": "Список ввода {{ input_list }}", @@ -656,7 +653,7 @@ "734390964": "Недостаточно средств на счете", "734881840": "неверно", "742469109": "Сбросить баланс", - "742676532": "Торгуйте CFD с высоким кредитным плечом на forex, индексах Derived, криптовалютах и сырьевых товарах.", + "742676532": "Торгуйте CFD с высоким кредитным плечом на форекс, индексах Derived, криптовалютах и сырьевых товарах.", "743623600": "Номер", "744110277": "Массив полос Боллинджера (BBA)", "745656178": "Используйте этот блок, чтобы продать контракт по рыночной цене.", @@ -719,6 +716,7 @@ "812430133": "Спотовая цена на предыдущем тике.", "812775047": "ниже барьера", "814827314": "Уровень стоп аут на графике показывает цену, при которой потенциальный убыток равен всей вашей ставке. Когда рыночная цена достигнет этого уровня, ваша позиция будет закрыта автоматически. Это гарантирует, что убыток не превысит сумму, которую вы заплатили за покупку контракта.", + "814936420": "{{ banner_message }}", "815925952": "Это обязательный блок. Допускается только одна копия этого блока. Он добавляется на холст по умолчанию при открытии Deriv Bot.", "816580787": "С возвращением! Ваши сообщения восстановлены.", "816738009": "<0/><1/>Вы также можете передать свой неурегулированный спор в <2>Офис арбитра в сфере финансовых услуг.", @@ -747,7 +745,6 @@ "836097457": "Я интересуюсь торговлей, но у меня очень мало опыта.", "837063385": "Не отправляйте на этот адрес другие валюты.", "837066896": "Ваши документы проходят проверку. Пожалуйста, подождите от 1 до 3 дней.", - "839618971": "АДРЕС", "839805709": "Нам нужно фото более высокого качества, чтобы верифицировать вас", "840672750": "Если это не сработает, удалите и заново установите приложение МТ5. Затем повторно выполните шаги <0>2 и <0>3.", "841434703": "Отключить стек", @@ -965,6 +962,7 @@ "1061308507": "Купить {{ contract_type }}", "1062423382": "Изучите видеоинструкции и ответы на часто задаваемые вопросы по созданию своего бота на вкладке «Учебные пособия».", "1062536855": "Равно", + "1062569830": "<0>Имя в документе не соответствует вашему профилю.", "1065275078": "Пока что cTrader доступен только на настольном компьютере.", "1065353420": "110+", "1065498209": "Повторить (1)", @@ -1034,7 +1032,7 @@ "1130791706": "Нет", "1133651559": "Чат", "1134879544": "Пример документа с бликами", - "1138126442": "Forex: стандартные", + "1138126442": "Форекс: стандартные", "1139483178": "Включить стек", "1143730031": "Направление - {{ direction_type }}", "1144028300": "Массив индексов относительной силы (RSIA)", @@ -1066,7 +1064,6 @@ "1174689133": "3. Установите параметры контракта и нажмите Запустить.", "1174748431": "Платежный канал", "1175183064": "Вануату", - "1176926166": "Опыт торговли другими финансовыми инструментами", "1177396776": "Если вы выбираете \"Азиатские – Падение\", вы выигрываете, если последняя котировка окажется ниже, чем общее среднее значение котировок.", "1177723589": "Нет транзакций для отображения", "1178582280": "Количество убыточных контрактов с момента последней очистки статистики.", @@ -1150,6 +1147,7 @@ "1255963623": "В дату/время {{ input_timestamp }} {{ dummy }}", "1258097139": "Как мы можем стать лучше?", "1258198117": "положительный", + "1259145708": "Давайте попробуем еще раз. Выберите другой документ и введите соответствующие данные.", "1259598687": "GBP/JPY", "1260259925": "Номер телефона в неправильном формате.", "1263387702": "Все типы счетов используют рыночное исполнение. Это означает, что вы заранее соглашаетесь с ценой брокера и размещаете ордеры по цене брокера.", @@ -1173,7 +1171,6 @@ "1289146554": "British Virgin Islands Financial Services Commission", "1289646209": "Маржин колл", "1290525720": "Пример: ", - "1291887623": "Частота торговли цифровыми опционами", "1291997417": "Срок действия контрактов истекает ровно в 23:59:59 GMT в выбранную дату истечения.", "1292188546": "Сбросить инвесторский пароль Deriv MT5", "1292891860": "Уведомить в Telegram", @@ -1257,7 +1254,6 @@ "1367023655": "Чтобы ваши потери не превышали размер ставки, контракт будет автоматически закрыт, если потери станут равны <0/>.", "1367488817": "4. Перезапустить торговые условия", "1367990698": "Индекс волатильн. 10", - "1369709538": "Наши условия использования", "1370647009": "Доступно повышение лимитов", "1371193412": "Отменить", "1371555192": "Выберите платежного агента и введите сумму вывода. Если вашего платежного агента нет в списке, <0>найдите его по номеру счета.", @@ -1297,6 +1293,7 @@ "1413047745": "Присваивает заданное значение переменной", "1413359359": "Сделать новый перевод", "1414205271": "простое", + "1414918420": "Мы еще раз проверим ваше удостоверение личности и предоставим обновленную информацию как можно скорее.", "1415006332": "получить подсписок из", "1415513655": "Загрузите cTrader на телефон, чтобы торговать со счета Deriv cTrader", "1415974522": "Если вы выбираете \"Отличается\", вы выигрываете, если последняя десятичная последней котировки не соответствует вашему прогнозу.", @@ -1419,7 +1416,6 @@ "1542742708": "Синтетические активы, форекс, акции, фондовые индексы, сырьевые товары и криптовалюты", "1544642951": "Выбрав \"Только вверх\", вы получите выплату, если несколько тиков подряд будут расти по отношению к котировке на входе. Если любой тик покажет снижение или будет равен одному из предыдущих тиков, вы не получите выплату.", "1547148381": "Файл слишком большой (разрешено не более 8 МБ). Попробуйте другой файл.", - "1548765374": "Не удалось верифицировать номер документа", "1549098835": "Общая сумма вывода", "1551172020": "Индекс AUD", "1552162519": "Смотреть адаптацию", @@ -1530,7 +1526,7 @@ "1675030608": "Чтобы открыть этот счет, нужно повторно отправить подтверждение адреса.", "1675289747": "Перешли на реальный счет", "1676549796": "Динамическое кред. плечо", - "1677027187": "Forex", + "1677027187": "Форекс", "1677990284": "Мои приложения", "1679743486": "1. Перейдите в меню Быстрая стратегия и выберите нужную стратегию.", "1680666439": "Загрузите банковскую выписку с указанием вашего имени, номера счета и истории транзакций.", @@ -1647,6 +1643,7 @@ "1790770969": "Основные валютные пары (стандартные/микро лоты), минорные валютные пары, сырьевые товары, криптовалюты", "1791432284": "Искать страну", "1791971912": "Недавние", + "1792037169": "Чтобы избежать задержек, введите <0>имя и <0>дату рождения точно так, как они указаны в {{document_name}}.", "1793913365": "Чтобы внести средства, перейдите на свой счет {{currency_symbol}}.", "1794815502": "Загрузить историю транзакций.", "1796787905": "Загрузите следующие документы.", @@ -1718,7 +1715,7 @@ "1858251701": "минут(ы)", "1859308030": "Оставить отзыв", "1863053247": "Загрузите документ, удостоверяющий личность.", - "1863694618": "Торгуйте CFD на MT5 на forex, акциях, фондовых индексах, сырьевых товарах и криптовалютах.", + "1863694618": "Торгуйте CFD на MT5 на форекс, акциях, фондовых индексах, сырьевых товарах и криптовалютах.", "1863731653": "Чтобы получить средства, свяжитесь с платежным агентом", "1865525612": "Недавних транзакций нет.", "1866811212": "Пополняйте счет в местной валюте через авторизованного независимого платежного агента в вашей стране.", @@ -1792,7 +1789,6 @@ "1924765698": "Место рождения*", "1926987784": "- iOS: Проведите пальцем влево на счете и нажмите <0>Удалить.", "1928930389": "GBP/NOK", - "1929309951": "Статус занятости", "1929694162": "Сравнить счета", "1930899934": "Tether", "1931659123": "Запускать на каждый тик", @@ -1966,16 +1962,16 @@ "2115223095": "Проигрыш", "2117165122": "1. Создайте бота Telegram и получите свой токен Telegram API. Узнайте больше о том, как создавать ботов в Telegram здесь: https://core.telegram.org/bots#6-botfather", "2117489390": "Автоматическое обновление через {{ remaining }} сек.", - "2118315870": "Где вы живете?", "2119449126": "Ниже приведен пример двух вариантов вывода данных:", "2119710534": "FAQ", "2121227568": "NEO/USD", "2122152120": "Активы", "2127564856": "Вывод средств заблокирован", + "2129807378": "Обновить профиль", "2131963005": "Пожалуйста, выведите средства со следующих счетов Deriv MT5:", "2133451414": "Длительность", "2133470627": "Этот блок возвращает потенциальную выплату для выбранного типа контракта. Этот блок можно использовать только в корневом блоке \"Условия покупки\".", - "2135563258": "Частота торговли на Forex", + "2135563258": "Частота торговли на Форекс", "2136246996": "Селфи загружено.", "2137901996": "Это очистит все данные в сводке, транзакциях и журнале. Все счетчики будут сброшены на ноль.", "2137993569": "Этот блок сравнивает два значения и используется для построения условной структуры.", @@ -1992,8 +1988,6 @@ "2146698770": "Совет: вы можете нажать и перетащить нужный блок", "2146892766": "Опыт торговли бинарными опционами", "2147244655": "Как импортировать своего бота в Deriv Bot?", - "-1232613003": "<0>Ошибка верификации. <1>Причины", - "-2029508615": "<0>Нужна верификация.<1>Пройти", "-931052769": "Отправить подтверждение", "-1004605898": "Советы", "-1938142055": "Документы загружены.", @@ -2141,18 +2135,9 @@ "-179726573": "Мы получили ваше подтверждение права собственности.", "-813779897": "Подтверждение права собственности пройдено.", "-638756912": "Зачеркните/закройте с 7-й по 12-ю цифры номера вашей дебетовой/кредитной карты.", - "-2073934245": "Финансовые услуги, предоставляемые на этом сайте, подходят только для клиентов, готовых нести ответственность за возможную потерю всех инвестированных средств, а также осознающих все риски и имеющих опыт покупки финансовых контрактов. Заключение сделок на финансовых контрактах предполагает высокий уровень риска. Если приобретённые контракты истекут, не принеся прибыли, вы потеряете всю инвестированную сумму.", - "-1166068675": "Ваш счет будет открыт в {{legal_entity_name}}. Компания регулируется комиссией по азартным играм Великобритании (UKGC) и подчиняется законам острова Мэн.", - "-975118358": "Ваш счет будет открыт в {{legal_entity_name}}. Компания регулируется мальтийским управлением финансовых услуг (MFSA) и подчиняется законодательству Мальты.", - "-680528873": "Ваш счет будет открыт в компании {{legal_entity_name}} и будет регулироваться законами Самоа.", - "-1125193491": "Добавить счёт", - "-2068229627": "Я не являюсь ПЗЛ и не являлся ПЗЛ в течение последних 12 месяцев.", "-684271315": "OK", "-740157281": "Оценка торгового опыта", "-1720468017": "Нам необходимо получить от вас некоторую информацию с целью оценить, подходит ли вам определенный продукт или услуга.", - "-186841084": "Изменить логин", - "-907403572": "Чтобы изменить адрес электронной почты, сначала нужно отвязать старый адрес от счета {{identifier_title}} .", - "-1850792730": "Отвязать {{identifier_title}}", "-307865807": "Предупреждение о допустимости рисков", "-690100729": "Да, я понимаю риск.", "-2010628430": "CFD и другие финансовые инструменты сопряжены с высоким риском быстрой потери денег из-за кредитного плеча. Вам следует подумать, понимаете ли вы, как работают CFD и другие финансовые инструменты, и можете ли вы позволить себе рисковать. <0/><0/> Чтобы продолжить, подтвердите, что осознаете риски для вашего капитала.", @@ -2206,11 +2191,6 @@ "-1725454783": "Ошибка", "-506510414": "Дата и время", "-1708927037": "IP-адрес", - "-619126443": "Используйте <0>пароль Deriv для входа в {{brand_website_name}} и {{platform_name_trader}}.", - "-623760979": "Используйте <0>пароль Deriv для входа на {{brand_website_name}}, {{platform_name_trader}} и {{platform_name_go}}.", - "-459147994": "Используйте <0>пароль Deriv для входа на {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} и {{platform_name_ctrader}}.", - "-80717068": "Приложения, которые связаны с <0>паролем Deriv:", - "-9570380": "Используйте пароль {{platform_name_dxtrade}} для входа на {{platform_name_dxtrade}} с веб-браузеров и мобильных приложений.", "-2131200819": "Отключить", "-200487676": "Включить", "-1840392236": "Неправильный код. Пожалуйста, попробуйте еще раз.", @@ -2240,44 +2220,37 @@ "-378415317": "Необходимо указать Регион/Штат", "-1497654315": "Наши счета и услуги недоступны для почтового индекса Джерси.", "-755626951": "Заполните ваши адресные данные", - "-584911871": "Выберите валюту кошелька", "-1461267236": "Пожалуйста, выберите валюту", - "-1352330125": "ВАЛЮТА", "-1027595143": "Менее $25 000", "-40491332": "$25 000 - $50 000", "-1139806939": "$50 001 - $100 000", - "-626752657": "0-1 год", - "-532014689": "1-2 года", - "-1001024004": "Более 3 лет", - "-790513277": "6-10 транзакций за последние 12 месяцев", - "-580085300": "11-39 транзакций за последние 12 месяцев", - "-654781670": "Начальное", - "-1717373258": "Среднее", "-996132458": "Строительство", "-915003867": "Здравоохранение", "-1430012453": "Информационные технологии и коммуникации", "-987824916": "Наука и проектирование", "-146630682": "Социально-культурная сфера", "-761306973": "Производство", - "-739367071": "Работающий", - "-1156937070": "$500 001 - $1 000 000", - "-315534569": "Более $1 000 000", - "-2068544539": "Наёмный работник", - "-531314998": "Инвестиции и дивиденды", - "-1235114522": "Пенсия", - "-1298056749": "Государственные пособия", - "-449943381": "Сбережения и наследство", "-1631552645": "Специалисты", "-474864470": "Работники в сфере продаж и обслуживания", "-1129355784": "Работники сельского, лесного и рыбного хозяйства", "-1242914994": "Ремесленники, рабочие по металлу, электрике и электронике", "-1317824715": "Уборщики и обслуживающий персонал", "-1592729751": "Работники горнодобывающей промышленности, строительства, производства и транспорта", + "-1030759620": "Гос. служащие", "-2137323480": "Доля компании", "-1590574533": "Раздел имущества", "-1667683002": "Наследование", "-1237843731": "Доход от инвестиций", "-777506574": "Продажа имущества", + "-654781670": "Начальное", + "-1717373258": "Среднее", + "-1156937070": "$500 001 - $1 000 000", + "-315534569": "Более $1 000 000", + "-2068544539": "Наёмный работник", + "-531314998": "Инвестиции и дивиденды", + "-1235114522": "Пенсия", + "-1298056749": "Государственные пособия", + "-449943381": "Сбережения и наследство", "-1161338910": "Необходимо указать имя.", "-1161818065": "Фамилия должна содержать от 2 до 50 знаков.", "-1281693513": "Необходимо указать дату рождения.", @@ -2287,28 +2260,14 @@ "-212167954": "Неправильный формат ИНН.", "-621555159": "Идентификационная информация", "-204765990": "Условия пользования", - "-231863107": "Нет", - "-870902742": "Какими знаниями и опытом вы обладаете в сфере онлайн-трейдинга?", - "-1929477717": "У меня есть образование, профессиональный сертификат и/или опыт работы в сфере финансовых услуг.", - "-1540148863": "Семинары, тренинги и/или мастер-классы о трейдинге.", - "-922751756": "Менее года", - "-542986255": "Нет", - "-1337206552": "В вашем понимании, торговля CFD позволяет", - "-456863190": "Открыть позицию на движение цены актива, результатом которой будет фиксированная доходность или вообще ничего.", - "-1314683258": "Открывать долгосрочные инвестиции и получать гарантированный доход.", - "-1546090184": "Как кредитное плечо влияет на торговлю CFD?", - "-1636427115": "Кредитное плечо помогает снизить риск.", - "-800221491": "Кредитное плечо гарантирует прибыль.", - "-811839563": "Кредитное плечо позволяет открывать крупные позиции на небольшую часть стоимости сделки, что может привести к увеличению прибыли или убытков.", - "-1185193552": "Автоматически закроет контракт, если убыток равен или превышает указанную сумму, при условии достаточной рыночной ликвидности.", - "-1046354": "Автоматически закроет контракт, если прибыль равна или превышает указанную сумму, при условии достаточной рыночной ликвидности.", - "-1842858448": "Получить гарантированную прибыль от контракта.", - "-860053164": "При торговле мультипликаторами.", - "-1250327770": "При покупке акций компании.", - "-1222388581": "Все вышеперечисленное.", "-477761028": "Удостоверение избирателя", "-1466346630": "CPF", - "-1030759620": "Гос. служащие", + "-739367071": "Работающий", + "-626752657": "0-1 год", + "-532014689": "1-2 года", + "-1001024004": "Более 3 лет", + "-790513277": "6-10 транзакций за последние 12 месяцев", + "-580085300": "11-39 транзакций за последние 12 месяцев", "-612752984": "Это лимиты по умолчанию, которые мы применяем к вашим счетам.", "-1598263601": "Чтобы узнать больше о торговых лимитах и о том, как они применяются, перейдите в <0>Центр поддержки.", "-1411635770": "Узнайте больше о лимитах счета", @@ -2326,10 +2285,7 @@ "-1500958859": "Подтвердить", "-1502578110": "Ваш счет полностью авторизован, и лимит на вывод был снят.", "-1662154767": "недавний счет за коммунальные услуги (электричество, вода, газ, стационарный телефон или интернет), банковская выписка или государственное/муниципальное письмо с вашим именем и этим адресом.", - "-190838815": "Это нужно нам для проверки. Если предоставленная вами информация окажется поддельной или неточной, вы не сможете вносить и снимать средства.", - "-223216785": "Вторая строка адреса*", "-594456225": "Вторая строка адреса", - "-1940457555": "Почтовый код/индекс*", "-1964954030": "Почтовый код/индекс", "-516397235": "Будьте осторожны с теми, кому вы передаете этот токен. Любой, у кого есть к нему доступ, сможет выполнять следующие действия от имени вашего счета:", "-989216986": "Добавить счета", @@ -2371,8 +2327,6 @@ "-1100235269": "Сфера занятости", "-684388823": "Собственный капитал", "-509054266": "Ожидаемый годовой оборот", - "-601903492": "Опыт торговли на Forex", - "-1012699451": "Опыт торговли CFD", "-1588485629": "Пример", "-1117345066": "Выберите тип документа", "-651192353": "Образец:", @@ -2393,18 +2347,21 @@ "-1944264183": "Чтобы возобновить торговлю, вам необходимо предоставить подтверждение личности.", "-1088324715": "Мы проверим ваши документы и сообщим об их статусе в течение 1-3 рабочих дней.", "-329713179": "Ok", - "-1176889260": "Выберите тип документа.", - "-1926456107": "Срок действия отправленного удостоверения личности истек.", - "-555047589": "Похоже, срок действия вашего удостоверения личности истек. Пожалуйста, попробуйте еще раз с действующим документом.", - "-841187054": "Повторить", + "-895884696": "<0>Имя и <0>дата рождения в документе не соответствует вашему профилю.", + "-1792723131": "Чтобы избежать задержек, введите <0>дату рождения точно так, как она указана в {{document_name}}.", + "-886317740": "<0>Дата рождения в документе не соответствует вашему профилю.", + "-1813671961": "Подтверждение личности не удалось по следующим причинам:", "-2097808873": "Нам не удалось подтвердить вашу личность по предоставленным вами данным. ", - "-228284848": "Нам не удалось подтвердить вашу личность по предоставленным вами данным.", + "-1652371224": "Ваш профиль обновлен", + "-504784172": "Ваш документ отправлен", "-1391934478": "Ваша личность подтверждена. Вам также необходимо будет предоставить подтверждение адреса.", "-118547687": "Подтверждение личности успешно", "-200989771": "Перейдите в Личные данные", "-1358357943": "Пожалуйста, проверьте и обновите свой почтовый индекс перед отправкой документа, удостоверяющего личность.", "-1401994581": "Ваши личные данные отсутствуют", "-2004327866": "Выберите действительную страну выдачи документа.", + "-1627868670": "Истек срок действия удостоверения личности.", + "-1606307809": "Нам не удалось верифицировать удостоверение личности по предоставленным данным.", "-1664159494": "Страна", "-749870311": "Свяжитесь с нами через <0>чат.", "-1084991359": "Верификация подтверждения личности не требуется", @@ -2464,21 +2421,54 @@ "-142444667": "Нажмите на ссылку в письме, чтобы сбросить пароль Deriv MT5.", "-742748008": "Проверьте электронную почту и нажмите на ссылку в письме, чтобы продолжить.", "-84068414": "Не получили письмо? Свяжитесь с нами через <0>чат.", + "-975118358": "Ваш счет будет открыт в {{legal_entity_name}}. Компания регулируется мальтийским управлением финансовых услуг (MFSA) и подчиняется законодательству Мальты.", + "-2073934245": "Финансовые услуги, предоставляемые на этом сайте, подходят только для клиентов, готовых нести ответственность за возможную потерю всех инвестированных средств, а также осознающих все риски и имеющих опыт покупки финансовых контрактов. Заключение сделок на финансовых контрактах предполагает высокий уровень риска. Если приобретённые контракты истекут, не принеся прибыли, вы потеряете всю инвестированную сумму.", + "-1125193491": "Добавить счёт", + "-2068229627": "Я не являюсь ПЗЛ и не являлся ПЗЛ в течение последних 12 месяцев.", + "-186841084": "Изменить логин", + "-907403572": "Чтобы изменить адрес электронной почты, сначала нужно отвязать старый адрес от счета {{identifier_title}} .", + "-1850792730": "Отвязать {{identifier_title}}", "-428335668": "Вам нужно будет установить пароль, чтобы завершить процесс.", + "-1232613003": "<0>Ошибка верификации. <1>Причины", + "-2029508615": "<0>Нужна верификация.<1>Пройти", "-818898181": "Имя в документе не соответствует вашему профилю Deriv.", "-310316375": "Адрес в документе не совпадает с адресом, указанным выше.", "-485368404": "Документ выдан более 6 месяцев назад.", "-367016488": "Размытый документ. Вся информация должна быть четкой и видимой.", "-1957076143": "Обрезанный документ. Вся информация должна быть четкой и видимой.", + "-1576856758": "An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.", + "-231863107": "Нет", + "-870902742": "Какими знаниями и опытом вы обладаете в сфере онлайн-трейдинга?", + "-1929477717": "У меня есть образование, профессиональный сертификат и/или опыт работы в сфере финансовых услуг.", + "-1540148863": "Семинары, тренинги и/или мастер-классы о трейдинге.", + "-922751756": "Менее года", + "-542986255": "Нет", + "-1337206552": "В вашем понимании, торговля CFD позволяет", + "-456863190": "Открыть позицию на движение цены актива, результатом которой будет фиксированная доходность или вообще ничего.", + "-1314683258": "Открывать долгосрочные инвестиции и получать гарантированный доход.", + "-1546090184": "Как кредитное плечо влияет на торговлю CFD?", + "-1636427115": "Кредитное плечо помогает снизить риск.", + "-800221491": "Кредитное плечо гарантирует прибыль.", + "-811839563": "Кредитное плечо позволяет открывать крупные позиции на небольшую часть стоимости сделки, что может привести к увеличению прибыли или убытков.", + "-1185193552": "Автоматически закроет контракт, если убыток равен или превышает указанную сумму, при условии достаточной рыночной ликвидности.", + "-1046354": "Автоматически закроет контракт, если прибыль равна или превышает указанную сумму, при условии достаточной рыночной ликвидности.", + "-1842858448": "Получить гарантированную прибыль от контракта.", + "-860053164": "При торговле мультипликаторами.", + "-1250327770": "При покупке акций компании.", + "-1222388581": "Все вышеперечисленное.", "-1515286538": "Введите номер документа. ", "-1694758788": "Введите номер документа", "-1458676679": "Вы должны ввести 2-50 символов.", + "-1176889260": "Выберите тип документа.", + "-1265050949": "identity document", "-2139303636": "Возможно, вы перешли по нерабочей ссылке или у страницы изменился адрес.", "-1448368765": "Код ошибки: {{error_code}} страница не найдена", "-254792921": "Сейчас вы можете только пополнять счет. Завершите финансовую оценку, чтобы разблокировать вывод средств.", "-1437017790": "Финансовая информация", "-70342544": "По закону мы обязаны запросить вашу финансовую информацию.", "-39038029": "Опыт торговли", + "-601903492": "Опыт торговли на Форекс", + "-1012699451": "Опыт торговли CFD", "-1894668798": "Опыт торговли на других инструментах", "-1026468600": "Частота торговли на других инструментах", "-1743024217": "Выберите язык", @@ -2489,6 +2479,11 @@ "-536187647": "Подтвердить отмену доступа?", "-1357606534": "Разрешение", "-570222048": "Отмена доступа", + "-80717068": "Приложения, которые связаны с <0>паролем Deriv:", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "Используйте <0>пароль Deriv для входа в {{brand_website_name}} и {{platform_name_trader}}.", + "-623760979": "Используйте <0>пароль Deriv для входа на {{brand_website_name}}, {{platform_name_trader}} и {{platform_name_go}}.", + "-459147994": "Используйте <0>пароль Deriv для входа на {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} и {{platform_name_ctrader}}.", "-1526404112": "Счет за коммунальные услуги: счет за электричество, воду, газ или стационарный телефон.", "-537552700": "Договор аренды жилья: действующий и актуальный договор.", "-890084320": "Сохранить и отправить", @@ -2518,7 +2513,7 @@ "-1308346982": "Derived", "-1145604233": "Торгуйте CFD на MT5 на индексах Derived, имитирующих движения реальных рынков.", "-328128497": "Финансовый", - "-1484404784": "Торгуйте CFD на MT5 на forex, фондовых индексах, сырьевых товарах и криптовалютах.", + "-1484404784": "Торгуйте CFD на MT5 на форекс, фондовых индексах, сырьевых товарах и криптовалютах.", "-659955365": "Без свопов", "-674118045": "Торгуйте CFD без свопов на MT5 на синтетических активах, форекс, акциях, фондовых индексах, криптовалютах, ETF.", "-1210359945": "Переведите средства на свои счета", @@ -2541,7 +2536,7 @@ "-749129977": "Откройте реальный счет Deriv, начните торговать и управлять своими средствами.", "-1814994113": "CFD <0>{{compare_accounts_title}}", "-318106501": "Торгуйте CFD на MT5 на синтетических активах, валютных индексах и Derived FX.", - "-1328701106": "Торгуйте CFD на MT5 на forex, акциях, криптовалютах, сырьевых товарах, фондовых и синтетических индексах.", + "-1328701106": "Торгуйте CFD на MT5 на форекс, акциях, криптовалютах, сырьевых товарах, фондовых и синтетических индексах.", "-1173266642": "Этот счет предлагает CFD на многофункциональной торговой платформе.", "-1290112064": "Deriv EZ", "-1453519913": "Торгуйте CFD на простой платформе со всеми любимыми активами.", @@ -2823,7 +2818,7 @@ "-1765276625": "Щелкните раскрывающееся меню мультипликаторов и выберите тот, который хотите применить.", "-1872233077": "Ваша потенциальная прибыль будет умножена на выбранный мультипликатор.", "-614454953": "Более подробную информацию об этом типе контрактов можно найти на странице <0>Мультипликаторы.", - "-2078588404": "Выберите нужный рынок и актив. Например, Forex > Основные пары > AUD/JPY", + "-2078588404": "Выберите нужный рынок и актив. Например, Форекс > Основные пары > AUD/JPY", "-2037446013": "2. Тип контракта", "-533927844": "Выберите нужный тип контракта. Например, Вверх/Вниз > Повышение/Падение", "-1192411640": "4. Интервал свечи по умолчанию", @@ -2859,6 +2854,30 @@ "-1016171176": "Актив", "-621128676": "Тип контракта", "-447853970": "Предельный убыток", + "-155173714": "Давайте создадим бота!", + "-1919212468": "3. Вы также можете найти нужные блоки, используя строку поиска над категориями.", + "-1520558271": "Для получения дополнительной информации ознакомьтесь с этим сообщением в блоге об основах создания торгового бота.", + "-980360663": "3. Выберите нужный блок и перетащите его на рабочее пространство.", + "-1493168314": "Что такое быстрая стратегия?", + "-1680391945": "Использование быстрой стратегии", + "-1177914473": "Как сохранить стратегию?", + "-271986909": "В Конструкторе ботов нажмите Сохранить на панели инструментов вверху, чтобы выгрузить бота. Дайте боту имя и выберите загрузку бота на свое устройство или Google Drive. Бот будет загружен в виде XML-файла.", + "-1149045595": "1. После нажатия кнопки Импортировать выберите Локальные и нажмите Продолжить.", + "-288041546": "2. Выберите XML-файл и нажмите Открыть.", + "-2127548288": "3. Ваш бот будет загружен соответствующим образом.", + "-1311297611": "1. После нажатия кнопки Импортировать выберите Google Drive и нажмите Продолжить.", + "-1549564044": "Как очистить рабочее пространство?", + "-1127331928": "В Конструкторе ботов нажмите Сбросить на панели инструментов вверху. Это очистит рабочее пространство. Все несохраненные изменения будут потеряны.", + "-1720444288": "Можно ли как-то контролировать убыток в Deriv Bot?", + "-1142295124": "Есть несколько способов контролировать убытки на Deriv Bot. Вот пример того, как можно реализовать один из них в вашей стратегии:", + "-986689483": "1. Создайте следующие переменные:", + "-269910127": "3. Обновите текущую прибыль/убыток прибылью по последнему контракту. Если последний контракт был потерян, значение текущей прибыли/убытка будет отрицательным.", + "-1565344891": "Можно ли запустить Deriv Bot на нескольких вкладках браузера?", + "-90192474": "Да. Но на вашем счете есть ограничения, такие как максимальное количество открытых позиций и максимальные совокупные выплаты по открытым позициям. Учитывайте эти ограничения при открытии нескольких позиций. Дополнительную информацию об этих лимитах можно найти в разделе Настройки > Лимиты счета.", + "-213872712": "Нет, мы не предлагаем криптовалюты на Deriv Bot.", + "-2147346223": "В каких странах доступен Deriv Bot?", + "-352345777": "Какие стратегии наиболее популярны для автоматической торговли?", + "-552392096": "Три часто используемые стратегии в автоматической торговле — это Мартингейл, Д'Аламбер и Оскар Грайнд. Все они готовы и ждут вас в Deriv Bot.", "-507620484": "Не сохранен", "-764102808": "Google Диск", "-555886064": "Выиграл", @@ -2937,30 +2956,6 @@ "-1823621139": "Быстрая стратегия", "-1778025545": "Вы успешно импортировали бота.", "-1519425996": "Нет результатов с \"{{ faq_search_value }}\"", - "-155173714": "Давайте создадим бота!", - "-1919212468": "3. Вы также можете найти нужные блоки, используя строку поиска над категориями.", - "-1520558271": "Для получения дополнительной информации ознакомьтесь с этим сообщением в блоге об основах создания торгового бота.", - "-980360663": "3. Выберите нужный блок и перетащите его на рабочее пространство.", - "-1493168314": "Что такое быстрая стратегия?", - "-1680391945": "Использование быстрой стратегии", - "-1177914473": "Как сохранить стратегию?", - "-271986909": "В Конструкторе ботов нажмите Сохранить на панели инструментов вверху, чтобы выгрузить бота. Дайте боту имя и выберите загрузку бота на свое устройство или Google Drive. Бот будет загружен в виде XML-файла.", - "-1149045595": "1. После нажатия кнопки Импортировать выберите Локальные и нажмите Продолжить.", - "-288041546": "2. Выберите XML-файл и нажмите Открыть.", - "-2127548288": "3. Ваш бот будет загружен соответствующим образом.", - "-1311297611": "1. После нажатия кнопки Импортировать выберите Google Drive и нажмите Продолжить.", - "-1549564044": "Как очистить рабочее пространство?", - "-1127331928": "В Конструкторе ботов нажмите Сбросить на панели инструментов вверху. Это очистит рабочее пространство. Все несохраненные изменения будут потеряны.", - "-1720444288": "Можно ли как-то контролировать убыток в Deriv Bot?", - "-1142295124": "Есть несколько способов контролировать убытки на Deriv Bot. Вот пример того, как можно реализовать один из них в вашей стратегии:", - "-986689483": "1. Создайте следующие переменные:", - "-269910127": "3. Обновите текущую прибыль/убыток прибылью по последнему контракту. Если последний контракт был потерян, значение текущей прибыли/убытка будет отрицательным.", - "-1565344891": "Можно ли запустить Deriv Bot на нескольких вкладках браузера?", - "-90192474": "Да. Но на вашем счете есть ограничения, такие как максимальное количество открытых позиций и максимальные совокупные выплаты по открытым позициям. Учитывайте эти ограничения при открытии нескольких позиций. Дополнительную информацию об этих лимитах можно найти в разделе Настройки > Лимиты счета.", - "-213872712": "Нет, мы не предлагаем криптовалюты на Deriv Bot.", - "-2147346223": "В каких странах доступен Deriv Bot?", - "-352345777": "Какие стратегии наиболее популярны для автоматической торговли?", - "-552392096": "Три часто используемые стратегии в автоматической торговле — это Мартингейл, Д'Аламбер и Оскар Грайнд. Все они готовы и ждут вас в Deriv Bot.", "-418247251": "Загрузить журнал.", "-2123571162": "Загрузить", "-870004399": "<0>Куплено: {{longcode}} (ID: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "На весь экран", "-1823504435": "Открыть уведомления", "-1954045170": "Валюта не выбрана", - "-583559763": "Меню", "-1591792668": "Лимиты счета", "-34495732": "Нормативная информация", "-1496158755": "Перейти на Deriv.com", @@ -3259,6 +3253,7 @@ "-818926350": "Финансовая комиссия принимает жалобы в течение 45 дней с даты инцидента и только после того, как трейдер попытается решить проблему напрямую с компанией.", "-1825471709": "Совершенно новый опыт трейдинга на мощной, но простой в использовании платформе.", "-981017278": "Автоматизированная торговля, доступная каждому. Не требует навыков кодинга.", + "-583559763": "Меню", "-778309978": "Срок действия ссылки истек. Попробуйте нажать на ссылку в последнем письме в папке Входящие. Или введите свой адрес электронной почты ниже и нажмите <0>Отправить письмо повторно, чтобы получить новую ссылку.", "-336222114": "Выполните эти простые шаги, чтобы исправить ситуацию:", "-1064116456": "Найдите брокера <0>Deriv Holdings (Guernsey) Limited и выберите его.", @@ -3271,9 +3266,9 @@ "-939154994": "Добро пожаловать на панель управления Deriv MT5", "-1667427537": "Запустите Deriv X в своем браузере или скачайте мобильное приложение", "-305915794": "Работайте на MT5 с браузера или загрузите приложение MT5 для своих устройств", - "-404375367": "Торгуйте с высоким кредитным плечом на forex, валютных индексах, сырьевых товарах и криптовалютах.", - "-243985555": "Торгуйте CFD с кредитным плечом на forex, акциях, криптовалютах сырьевых товарах, фондовых и синтетических индексах.", - "-2030107144": "Торгуйте CFD на forex, акциях, фондовых индексах, сырьевых товарах и криптовалютах.", + "-404375367": "Торгуйте с высоким кредитным плечом на форекс, валютных индексах, сырьевых товарах и криптовалютах.", + "-243985555": "Торгуйте CFD с кредитным плечом на форекс, акциях, криптовалютах сырьевых товарах, фондовых и синтетических индексах.", + "-2030107144": "Торгуйте CFD на форекс, акциях, фондовых индексах, сырьевых товарах и криптовалютах.", "-705682181": "Мальта", "-409563066": "Регулятор", "-1302404116": "Макс. кредитный рычаг", @@ -3338,8 +3333,8 @@ "-1727991510": "Отсканируйте QR-код, чтобы скачать мобильное приложение Deriv X", "-1769852749": "Н/Д", "-511301450": "Обозначает наличие контрактов на криптовалютах на определенном счете.", - "-1647569139": "Синтетические активы, Derived FX, Forex: стандартные/микро лоты, акции, фондовые индексы, сырьевые товары, криптовалюты", - "-2102641225": "В конца банковского торгового дня ликвидность на рынке forex понижена, в результате чего спреды и время обработки клиентских ордеров могут увеличиться. Это происходит около 21:00 по Гринвичу в летнее время и, соответственно, в 22:00 зимнее время.", + "-1647569139": "Синтетические активы, Derived FX, Форекс: стандартные/микро лоты, акции, фондовые индексы, сырьевые товары, криптовалюты", + "-2102641225": "В конца банковского торгового дня ликвидность на рынке форекс понижена, в результате чего спреды и время обработки клиентских ордеров могут увеличиться. Это происходит около 21:00 по Гринвичу в летнее время и, соответственно, в 22:00 зимнее время.", "-495364248": "Уровень маржинального требования и стоп аута будет время от времени меняться в зависимости от состояния рынка.", "-536189739": "Чтобы защитить ваш портфель от неблагоприятных скачков из-за разрыва при открытии рынка, мы оставляем за собой право уменьшить кредитное плечо по всем предлагаемым символам для финансовых счетов до закрытия рынка и снова увеличить его после открытия. Пожалуйста, убедитесь, что на вашем счете {{platform}} всегда находится достаточно средств для поддержки ваших позиций.", "-712681566": "Одноранговый (P2P) обмен", @@ -3372,7 +3367,7 @@ "-1211122723": "{{ account_title }} счет {{ platform }}", "-78895143": "Текущий баланс", "-149993085": "Новый текущий баланс", - "-490244964": "Forex, акции, криптовалюты, фондовые и", + "-490244964": "Форекс, акции, криптовалюты, фондовые и", "-1368041210": "синтетические индексы", "-877064208": "EUR", "-1284221303": "Вы получите предупреждение, известное как маржин колл, если баланс вашего счета упадет до уровня стоп аут.", @@ -3415,22 +3410,6 @@ "-1282933308": "Не {{barrier}}", "-968190634": "Равно {{barrier}}", "-1747377543": "Под {{barrier}}", - "-256210543": "В настоящее время торговля недоступна.", - "-1150099396": "Мы работаем над тем, чтобы сделать этот функционал доступным. Если у вас есть другой счет, переключитесь на него, чтобы продолжить торговлю. Вы можете добавить Финансовый счет Deriv MT5.", - "-28115241": "{{platform_name_trader}} недоступен для этого счета", - "-453920758": "Перейти на панель {{platform_name_mt5}}", - "-402175529": "История", - "-902712434": "Отмена сделки", - "-988484646": "Отмена сделки (выполнена)", - "-444882676": "Отмена сделки (активна)", - "-13423018": "Номер", - "-2035315547": "Нижний барьер", - "-1551639437": "Нет истории", - "-1214703885": "Вы еще не обновляли тейк профит или стоп лосс", - "-504849554": "Он откроется в", - "-59803288": "А пока попробуйте наши синтетические индексы. Они имитируют волатильность реального рынка и открыты 24/7.", - "-1278109940": "См. открытые рынки", - "-694105443": "Этот рынок закрыт", "-1043795232": "Недавние позиции", "-1511825574": "Прибыль/убыток:", "-726626679": "Потенциальная прибыль/убыток:", @@ -3455,21 +3434,15 @@ "-1435392215": "Об отмене сделки", "-2017825013": "Понятно", "-1192773792": "Больше не показывать", + "-902712434": "Отмена сделки", "-1280319153": "Отмените контракт в течение выбранного периода времени. Срабатывает автоматически, если ваш контракт достигает уровня стоп аут в течение указанного периода.", "-471757681": "Управление рисками", "-843831637": "Стоп лосс", "-771725194": "Отмена сделки", "-338707425": "Минимальная длительность - 1 день", "-1003473648": "Длительность: {{duration}} дн.", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "Выплата по истечении срока действия равна выплате за пункт, умноженной на разницу между конечной ценой и ценой исполнения.", "-1527492178": "Покупка заблокирована", "-725375562": "Вы можете заблокировать/разблокировать кнопку покупки в меню настроек", - "-774638412": "Ставка должна быть между {{min_stake}} {{currency}} и {{max_stake}} {{currency}}", - "-1358367903": "Ставка", - "-434270664": "Текущая цена", - "-1956787775": "Барьерная цена:", - "-1513281069": "Барьер 2", "-390994177": "Должно быть между {{min}} и {{max}}", "-1804019534": "Срок действия: {{date}}", "-2055106024": "Переключение между расширенными и простыми настройками длительности", @@ -3484,6 +3457,7 @@ "-1763848396": "Put", "-194424366": "выше", "-857660728": "Цены исполнения", + "-1358367903": "Ставка", "-1386326276": "Поле \"Барьер\" является обязательным для заполнения.", "-1418742026": "Верхний барьер должен быть выше нижнего барьера.", "-92007689": "Нижний барьер должен быть ниже верхнего барьера.", @@ -3491,6 +3465,21 @@ "-1975910372": "\"Минуты\" должны быть от 0 до 59.", "-866277689": "Время истечения не может быть в прошлом.", "-1455298001": "Сейчас", + "-256210543": "В настоящее время торговля недоступна.", + "-1150099396": "Мы работаем над тем, чтобы сделать этот функционал доступным. Если у вас есть другой счет, переключитесь на него, чтобы продолжить торговлю. Вы можете добавить Финансовый счет Deriv MT5.", + "-28115241": "{{platform_name_trader}} недоступен для этого счета", + "-453920758": "Перейти на панель {{platform_name_mt5}}", + "-402175529": "История", + "-988484646": "Отмена сделки (выполнена)", + "-444882676": "Отмена сделки (активна)", + "-13423018": "Номер", + "-2035315547": "Нижний барьер", + "-1551639437": "Нет истории", + "-1214703885": "Вы еще не обновляли тейк профит или стоп лосс", + "-504849554": "Он откроется в", + "-59803288": "А пока попробуйте наши синтетические индексы. Они имитируют волатильность реального рынка и открыты 24/7.", + "-1278109940": "См. открытые рынки", + "-694105443": "Этот рынок закрыт", "-439389714": "Мы работаем над этим", "-770929448": "Перейти на {{platform_name_smarttrader}}", "-347156282": "Отправить подтверждение", @@ -3537,6 +3526,8 @@ "-454245976": "Если вы считаете, что рыночная цена будет постоянно падать в течение определенного периода, выберите <0>короткую позицию. Вы получите выплату по истечении срока действия, если рыночная цена не достигнет барьера или не превысит его. Если барьер не будет преодолен, размер выплаты будет расти пропорционально расстоянию между рыночной ценой и барьером. Вы начнете получать прибыль, когда выплата превысит ставку. Выплаты не будет, если рыночная цена пересечет барьер.", "-351875097": "Кол-во тиков", "-729830082": "Меньше", + "-1669741470": "Выплата по истечении срока действия равна выплате за пункт, умноженной на разницу между конечной ценой и ценой исполнения.", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "НОВИНКА!", "-993480898": "Аккумуляторы", "-45873457": "НОВИНКА", @@ -3557,6 +3548,10 @@ "-690963898": "Ваш контракт будет автоматически закрыт, когда выплата достигнет этой суммы.", "-511541916": "По достижении этого количества тиков ваш контракт будет автоматически закрыт.", "-438655760": "<0>Примечание: Вы можете закрыть контракт в любое время. Помните о риске проскальзывания.", + "-774638412": "Ставка должна быть между {{min_stake}} {{currency}} и {{max_stake}} {{currency}}", + "-434270664": "Текущая цена", + "-1956787775": "Барьерная цена:", + "-1513281069": "Барьер 2", "-1683683754": "Длинная позиция", "-1046859144": "<0>{{title}} Вы получите выплату, если рыночная цена останется на уровне {{price_position}} и не пересечет барьер. В противном случае ваша выплата будет равна нулю.", "-1815023694": "над барьером", diff --git a/packages/translations/src/translations/si.json b/packages/translations/src/translations/si.json index 81b8efbca7d8..d2a7a4c1f55d 100644 --- a/packages/translations/src/translations/si.json +++ b/packages/translations/src/translations/si.json @@ -24,7 +24,6 @@ "27731356": "ඔබේ ගිණුම තාවකාලිකව අක්‍රීය කර ඇත. තැන්පතු සහ මුදල් ආපසු ගැනීම නැවත සක්‍රීය​ කිරීම සඳහා කරුණාකර <0>සජීවී කථාබස් හරහා අප හා සම්බන්ධ වන්න.", "27830635": "Deriv (V) Ltd", "28581045": "සැබෑ MT5 ගිණුමක් එක් කරන්න", - "30801950": "ඔබේ ගිණුම {{legal_entity_name}} නාමයෙන් විවෘත කර, Malta Gaming Authority විසින් නියාමනය කරනු ලබන අතර එය මෝල්ටාවේ නීතිවලට යටත් වනු ඇත.", "33433576": "කරුණාකර ඔබේ මුදල් ආපසු ගැනීමට ඊ-පසුම්බියක් භාවිතා කරන්න.", "35089987": "ඔබගේ රියදුරු බලපත්‍ර​යේ ඉදිරිපස සහ පිටුපස උඩුගත කරන්න.", "41737927": "ඔබට ස්තුතියි", @@ -54,7 +53,7 @@ "68885999": "දෝෂයක් ඇති වූ විට පෙර ගනුදෙනුව නැවත සිදු කරයි.", "69005593": "පහත උදාහරණය 1 මිනිත්තුවක candle ආරම්භ කර තත්පර 30කට හෝ ඊට වැඩි කාලයකට පසුව යළි ගනුදෙනු ආරම්භ කරයි.", "71016232": "OMG/USD", - "71445658": "විවෘත", + "71445658": "විවෘත කරන්න", "71563326": "වේගවත් සහ ආරක්ෂිත ෆියට් සිට ක්‍රිප්ටෝ ගෙවීම් සේවාවකි. ඔබගේ ණය/හර​ කාඩ්පත් සහ බැංකු හුවමාරු කිරීම් භාවිතයෙන් ලොව ඕනෑම තැනක සිට ක්‍රිප්ටෝ මුදල් තැන්පත් කරන්න.", "71853457": "$100,001 - $500,000", "72500774": "කරුණාකර බදු පදිංචිය පුරවන්න.", @@ -177,7 +176,7 @@ "211461880": "පොදු නම් සහ වාසගම අනුමාන කිරීම පහසුය", "211847965": "ඔබේ <0>පුද්ගලික විස්තර අසම්පූර්ණයි. මුදල් ආපසු ගැනීම සබල කිරීමට කරුණාකර ඔබේ ගිණුම් සැකසීම් වෙත ගොස් ඔබේ පුද්ගලික තොරතුරු සම්පූර්ණ කරන්න.", "212871086": "ළඟදීම ජංගම දුරකථනයෙන් ලබා ගත හැක", - "216650710": "ඔබ ආදර්ශන ගිණුමක් භාවිතා කරයි", + "216650710": "ඔබ ආදර්ශන ගිණුමක් භාවිත කරයි", "217403651": "St. Vincent & Grenadines", "217504255": "මූල්‍ය තක්සේරුව සාර්ථකව ඉදිරිපත් කර ඇත", "218441288": "හැදුනුම්පත් අංකය", @@ -251,7 +250,6 @@ "284772879": "ගිවිසුම", "284809500": "Financial ආදර්ශනය", "287934290": "ඔබට මෙම ගනුදෙනුව අවලංගු කිරීමට අවශ්‍ය බව ඔබට විශ්වාස ද?", - "289898640": "භාවිත නියම", "291744889": "<0>1. ගනුදෙනු පරාමිතීන්:<0>", "291817757": "අපගේ Deriv ප්‍රජාව වෙත ගොස් API, API ටෝකන, Deriv API භාවිතා කළ හැකි ක්‍රම සහ තවත් බොහෝ දේ ගැන ඉගෙන ගන්න.", "292491635": "ඔබ \"Stop loss\" තෝරා ගෙන ඔබේ පාඩුව සීමා කර ගැනීමට මුදලක් සඳහන් කළහොත්, ඔබේ පාඩුව මෙම මුදලට වඩා වැඩි හෝ සමාන වූ විට ඔබේ ස්ථානය ස්වයංක්‍රීයව වසා දමනු ඇත. ගිවිසුම වසා දැමීමේදී ඇති වෙළඳපල මිල අනුව ඔබේ පාඩුව ඔබ ඇතුළත් කළ මුදලට වඩා වැඩි විය හැක.", @@ -372,6 +370,7 @@ "427134581": "වෙනත් ගොනු වර්ගයක් භාවිතා කිරීමට උත්සාහ කරන්න.", "427617266": "Bitcoin", "428709688": "එක් එක් වාර්තාව අතර ඔබ කැමති කාල පරතරය:", + "429970999": "ප්‍රමාදයන් වළක්වා ගැනීමට, ඔබේ {{document_name}} හි දිස්වන ආකාරයටම ඔබේ <0>නම ඇතුළු කරන්න.", "431267979": "යන එන අතරතුර දී Deriv බොට් භාවිත කරන ආකරය පිළිබඳ ඉක්මන් මාර්ගෝපදේශයක් මෙන්න.", "432273174": "1:100", "432508385": "Take Profit: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. ආරම්භයේදී එක් වරක් ධාවනය කරන්න", "520136698": "Boom 500 දර්ශකය", "521872670": "අයිතමය", - "522283618": "ඩිජිටල් විකල්ප ගනුදෙනු පළපුරුද්ද", "522703281": "විසින් බෙදිය හැකි", "523123321": "- දී ඇති අංකයක 10යේ බලය", "524459540": "මම විචල්‍යයන් නිර්මාණය කරන්නේ කෙසේද?", @@ -562,7 +560,6 @@ "642546661": "ඔබේ පරිගණකයෙන් බලපත්‍රය නැවත උඩුගත කරන්න", "642995056": "ඊ-තැපෑල", "644150241": "ඔබ අවසන් වරට ඔබේ සංඛ්‍යාලේඛන ඉවත් කළ දා සිට ඔබ දිනාගත් ගිවිසුම් ගණන.", - "645016681": "වෙනත් මූල්‍ය උපකරණවල ගනුදෙනු සංඛ්‍යාතය", "645902266": "EUR/NZD", "647039329": "ලිපිනය සනාථ කිරීම අවශ්‍ය වේ", "647745382": "ආදාන ලැයිස්තුව {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "පෙර සලකුණ මත ස්ථාන මිල.", "812775047": "බාධකයට පහළින්", "814827314": "ප්‍රස්ථාර​යේ ඇති නැවතුම් මට්ටම පෙන්නුම් කරන්නේ ඔබේ විභව අලාභය ඔබේ මුළු කොටුවට සමාන වන මිලයි. වෙළඳපල මිල මෙම මට්ටමට ළඟා වූ විට, ඔබේ ස්ථානය ස්වයංක්‍රීයව වසා දමනු ඇත. ඔබේ අලාභය ගිවිසුම මිලදී ගැනීම සඳහා ඔබ ගෙවූ මුදල ඉක්මවා නොයන බවට මෙය සහතික කරයි.", + "814936420": "{{ banner_message }}", "815925952": "මෙම කොටස අනිවාර්ය වේ. මෙම කොටසෙහි එක් පිටපතකට පමණක් අවසර ඇත. ඔබ Deriv බොට් විවෘත කරන විට එය පෙරනිමියෙන් කැන්වසයට එක් වේ.", "816580787": "ආපසු සාදරයෙන් පිළිගනිමු! ඔබේ පණිවුඩ ප්‍රතිසාධනය කර ඇත.", "816738009": "<0/><1/>ඔබට ඔබේ නොවිසඳුණු මත භේදය <2>Office of the Arbiter for Financial Services වෙත ඉදිරිපත් කළ හැකිය.", @@ -747,7 +745,6 @@ "836097457": "මම ගනුදෙනු කිරීමට දැඩි උනන්දුවක් දක්වන නමුත් මට එතරම් අත්දැකීම් නැත.", "837063385": "මෙම ලිපිනයට වෙනත් මුදල් ඒකක යවන්න එපා.", "837066896": "ඔබේ ලේඛනය සමාලෝචනය වෙමින් පවතී., කරුණාකර දින 1-3 කින් නැවත පරීක්ෂා කරන්න.", - "839618971": "ලිපිනය", "839805709": "ඔබව සුමටව සත්‍යාපනය කිරීමට, අපට වඩා හොඳ ඡායාරූපයක් අවශ්‍ය වේ", "840672750": "මෙය ක්‍රියා නොකරන්නේ නම්, MT5 යෙදුම අස්ථාපනය කර නැවත ස්ථාපනය කරන්න. ඉන්පසු <0>2 සහ <0>3 පියවර නැවත කරන්න.", "841434703": "ඇසිරීම අක්‍රිය කරන්න", @@ -820,7 +817,7 @@ "912406629": "මෙම පියවර අනුගමනය කරන්න:", "912967164": "ඔබේ පරිගණකයෙන් ආයාත කරන්න", "915735109": "{{platform_name}} වෙත ආපසු", - "918447723": "සැබෑ", + "918447723": "සැබෑ ගිණුම", "920125517": "ආදර්ශන ගිණුම එක් කරන්න", "921901739": "- ඔබගේ ගිණුමට සම්බන්ධ බැංකුවේ ඔබගේ ගිණුම් විස්තර", "922313275": "ඔබ නැවත මාර්ගගතව සිටී", @@ -934,7 +931,7 @@ "1040472990": "1. Bot Builder වෙත යන්න.", "1040677897": "ගනුදෙනු දිගටම කරගෙන යාමට, ඔබ ලිපිනය පිළිබඳ සාක්ෂියක් ද ඉදිරිපත් කළ යුතුය.", "1041001318": "මෙම කොටස ලබා දී ඇති ලැයිස්තුවක් මත පහත මෙහෙයුම් සිදු කරයි: එකතුව, අවම, උපරිම, සාමාන්‍යය, මධ්‍ය, ප්‍රකාරය, ප්‍රතිමාතය, සම්මත අපගමනය, අහඹු අංකය.", - "1041620447": "ඔබට QR කේතය පරිලෝකනය කිරීමට නොහැකි නම්, ඒ වෙනුවට ඔබට මෙම කේතය අතින් ඇතුල් කළ හැක:", + "1041620447": "ඔබට QR කේතය ස්කෑන් කිරීමට නොහැකි නම්, ඒ වෙනුවට ඔබට මෙම කේතය හස්තීයව ඇතුළත් කළ හැකිය:", "1042659819": "ඔබට ක්‍රියා කළ යුතු ගිණුමක් ඇත", "1043790274": "දෝෂයක් තිබුණි", "1044540155": "100+", @@ -965,6 +962,7 @@ "1061308507": "{{ contract_type }} මිලදී ගැනීම", "1062423382": "නිබන්ධන ටැබය තුළ ඔබේ බොට් තැනීමට වීඩියෝ මාර්ගෝපදේශ සහ නිතර අසන පැන ගවේෂණය කරන්න.", "1062536855": "සමාන", + "1062569830": "ඔබගේ හැඳුනුම් ලේඛනයේ ඇති <0>නම ඔබගේ පැතිකඩට නොගැලපේ.", "1065275078": "CTrader දැනට ඩෙස්ක්ටොප් එකේ පමණක් ලබා ගත හැකිය.", "1065353420": "110+", "1065498209": "පුනරුච්චාරණය කරන්න (1)", @@ -979,7 +977,7 @@ "1078221772": "උත්තෝලනය මඟින් විශාල තනතුරු විවෘත කිරීමෙන් වළක්වයි.", "1080068516": "ක්‍රියාව", "1080990424": "තහවුරු කරන්න", - "1082158368": "*උපරිම ගිණුම් මුදල් ශේෂය", + "1082158368": "*ගිණුමේ උපරිම මුදල් ශේෂය", "1082406746": "කරුණාකර අවම වශයෙන් {{min_stake}} ක් වත් කොටස් ප්‍රමාණයක් ඇතුළත් කරන්න.", "1083781009": "බදු හඳුනාගැනීමේ අංකය*", "1083826534": "කොටස සක්‍රීය කරන්න", @@ -1066,7 +1064,6 @@ "1174689133": "3. ඔබේ වෙළඳ පරාමිතීන් සකසා ධාවනය කරන්න.", "1174748431": "ගෙවීම් නාලිකාව", "1175183064": "Vanuatu", - "1176926166": "වෙනත් මූල්‍ය උපකරණ ගනුදෙනු කිරීමේ පළපුරුද්ද", "1177396776": "ඔබ \"Asian Fall\", තෝරා ගන්නේ නම්, අවසාන සලකුණ අනෙක්​ සලකුණුවල සාමාන්‍යයට වඩා අඩු නම් ඔබ විසින් ගෙවීම දිනා ගනු ඇත.", "1177723589": "සංදර්ශන කිරීමට ගනුදෙනු නොමැත", "1178582280": "ඔබ අවසන් වරට ඔබේ සංඛ්‍යාලේඛන ඉවත් කළ දා සිට ඔබට අහිමි වූ ගිවිසුම් ගණන.", @@ -1116,7 +1113,7 @@ "1227240509": "අවකාශයන් කපා දමන්න", "1228534821": "සමහර මුදල් ඔබගේ රටේ ගෙවීම් නියෝජිතයින්ගේ සහාය නොලැබෙනු ඇත.", "1229883366": "බදු හඳුනාගැනීමේ අංකය", - "1230884443": "රජයේ/පළාත (විකල්ප)", + "1230884443": "රජය/පළාත (අත්‍යවශ්‍ය නොවේ)", "1231282282": "පහත සඳහන් විශේෂ අක්ෂර පමණක් භාවිතා කරන්න: {{permitted_characters}}", "1232291311": "ඉතිරිව ඇති උපරිම මුදල් ආපසු ගැනීම", "1232353969": "පසුගිය මාස 12 තුළ ගනුදෙනු 0-5", @@ -1136,7 +1133,7 @@ "1242994921": "ඔබගේ Deriv බොට් ගොඩනැගීම ආරම්භ කිරීමට මෙතන ක්ලික් කරන්න.", "1243064300": "දේශීය", "1243287470": "ගනුදෙනු තත්ත්වය", - "1246207976": "ඔබගේ 2FA යෙදුම මගින් ජනනය කරන ලද සත්‍යාපන කේතය ඇතුලත් කරන්න:", + "1246207976": "ඔබේ 2FA යෙදුම මඟින් ජනනය කරන ලද සත්‍යාපන කේතය ඇතුළත් කරන්න:", "1246880072": "නිකුත් කරන රට තෝරන්න", "1247280835": "පද්ධති නඩත්තුව හේතුවෙන් අපගේ ක්‍රිප්ටෝ මුදල් අයකැමි තාවකාලිකව පහත බැස ඇත. නඩත්තු කටයුතු අවසන් වූ විට ඔබට මිනිත්තු කිහිපයකින් ක්‍රිප්ටෝ මුදල් තැන්පතු සහ මුදල් ආපසු ලබා ගත හැකිය.", "1248018350": "ආදායම් මාර්ගය", @@ -1150,6 +1147,7 @@ "1255963623": "{{ input_timestamp }} {{ dummy }} දිනය/වේලාව සඳහා", "1258097139": "වැඩිදියුණු කිරීමට අපට කුමක් කළ හැකිද?", "1258198117": "ධනාත්මක", + "1259145708": "නැවත උත්සහ කරමු. වෙනත් ලේඛනයක් තෝරා අදාළ විස්තර ඇතුළත් කරන්න.", "1259598687": "GBP/JPY", "1260259925": "දුරකථනය නිසි ආකෘතියකින් නොවේ.", "1263387702": "සියලුම {{count}} ගිණුම් වර්ග වෙළඳපල ක්‍රියාත්මක කිරීම භාවිතා කරයි. මෙයින් අදහස් කරන්නේ ඔබ තැරැව්කරුගේ මිල සමඟ කල්තියා එකඟ වන අතර තැරැව්කරුගේ මිලට ඇණවුම් කරන බවයි.", @@ -1173,7 +1171,6 @@ "1289146554": "British Virgin Islands Financial Services Commission", "1289646209": "ආන්තික ඇමතුම", "1290525720": "උදාහරණය: ", - "1291887623": "ඩිජිටල් විකල්ප ගනුදෙනු සංඛ්‍යාතය", "1291997417": "ඔබ තෝරාගත් කල් ඉකුත් වීමේ දිනයේ ගිවිසුම් හරියටම 23:59:59 GMT හි කල් ඉකුත් වේ.", "1292188546": "Deriv MT5 ආයෝජක මුරපදය නැවත සකසන්න", "1292891860": "ටෙලිග්‍රෑම් වෙත දැනුම් දෙන්න", @@ -1257,7 +1254,6 @@ "1367023655": "ඔබේ අලාභය ඔබේ කොටස ඉක්මවා නොයන බව සහතික කිරීම සඳහා, ඔබේ අලාභය සමාන වන විට ඔබේ කොන්ත්රාත්තුව ස්වයංක්රීයව වසා දැමෙනු ඇත<0/>.", "1367488817": "4. වෙළඳ කොන්දේසි නැවත ආරම්භ කරන්න", "1367990698": "10 අස්ථායීතා දර්ශකය", - "1369709538": "අපගේ භාවිත නියමයන්", "1370647009": "ඉහළ දෛනික සීමාවන් භුක්ති විඳින්න", "1371193412": "අවලංගු කරන්න", "1371555192": "ඔබ කැමති ගෙවීම් නියෝජිතයා තෝරාගෙන ඔබේ මුදල් ආපසු ගැනීමේ මුදල ඇතුළත් කරන්න. ඔබේ ගෙවීම් නියෝජිතයා ලැයිස්තුගත කර නොමැති නම්, <0>ඔවුන්ගේ ගිණුම් අංකය භාවිතා කර ඒවා සොයන්න.", @@ -1297,6 +1293,7 @@ "1413047745": "විචල්යයකට දී ඇති අගය පවරයි", "1413359359": "නව මාරුවක් කරන්න", "1414205271": "අගමැති", + "1414918420": "අපි ඔබේ අනන්‍යතා සාක්ෂි නැවත සමාලෝචනය කර හැකි ඉක්මනින් ඔබට යාවත්කාලීනයක් ලබා දෙන්නෙමු.", "1415006332": "පළමු සිට උප ලැයිස්තුව ලබා ගන්න", "1415513655": "ඩෙරිව් cTrader ගිණුම සමඟ වෙළඳාම් කිරීම සඳහා ඔබේ දුරකථනයෙන් cTrader බාගත කරන්න", "1415974522": "ඔබ “වෙනස්” තෝරා ගන්නේ නම්, අවසාන ටික්හි අවසාන ඉලක්කම් ඔබේ අනාවැකියට සමාන නොවේ නම්, ඔබ ගෙවීම දිනා ගනු ඇත.", @@ -1314,7 +1311,7 @@ "1430396558": "5. දෝෂය මත මිලදී ගැනීම/විකිණීම නැවත ආරම්භ කරන්න", "1430632931": "වෙළඳාම ලබා ගැනීම සඳහා, කරුණාකර ඔබ කවුරුන්ද යන්න සහ ඔබ ජීවත් වන්නේ කොතැනද යන්න තහවුරු කරන්න.", "1433367863": "කණගාටුයි, ඔබගේ ඉල්ලීම සැකසීමේදී දෝෂයක් ඇතිවිය.", - "1433468641": "අපගේ නියමයන් සහ කොන්දේසි වල සඳහන් ඒවා හැරුණු විට අපි සියලුම රටවල අපගේ සේවාවන් ලබා දෙන්නෙමු.", + "1433468641": "අපි අපගේ නියම සහ කොන්දේසිවල සඳහන් රටවල හැර, සියලුම රටවල අපගේ සේවා පිරිනමන්නෙමු", "1434382099": "පණිවිඩයක් සහිත සංවාද කවුළුවක් පෙන්වයි", "1434767075": "ඩෙරිව් බොට් මත ආරම්භ කරන්න", "1434976996": "නිවේදනය", @@ -1390,7 +1387,7 @@ "1505898522": "අඩුක්කුව බාගත", "1505927599": "අපේ සේවාදායක තද පහරකට ලක් විය. ඉදිරියට යාමට නැවුම් කරමු.", "1509559328": "CTrader", - "1509570124": "{{buy_value}} (මිලදී ගන්න)", + "1509570124": "{{buy_value}} (ගැනුම්)", "1509678193": "අධ්යාපන", "1510075920": "රන්/USD", "1510357015": "බදු පදිංචිය අවශ්ය වේ.", @@ -1411,7 +1408,7 @@ "1527906715": "මෙම කොටස තෝරාගත් විචල්යයට ලබා දී ඇති අංකය එකතු කරයි.", "1531017969": "එක් එක් අමුණා ඇති අයිතමයේ පෙළ අගය ඒකාබද්ධ කිරීමෙන් තනි පෙළ නූලක් නිර්මාණය කරයි. අයිතම ගණන ඒ අනුව එකතු කළ හැකිය.", "1533177906": "Fall", - "1534796105": "විචල්ය අගය ලබා ගනී", + "1534796105": "විචල්‍ය අගයක් ලැබේ", "1537711064": "ඔබට මුදල් අයකැමි වෙත පිවිසීමට පෙර ඉක්මන් අනන්යතා සත්යාපනය කළ යුතුය. ඔබගේ අනන්යතාවය පිළිබඳ සාක්ෂි ඉදිරිපත් කිරීමට කරුණාකර ඔබගේ ගිණුම් සැකසුම් වෙත යන්න.", "1540585098": "පරිහානිය", "1541508606": "CFDs සොයනවාද? වෙළෙන්දාගේ කේන්ද්රය වෙත යන්න", @@ -1419,8 +1416,7 @@ "1542742708": "කෘත්‍රිම​ දර්ශක, Forex, කොටස්, කොටස් දර්ශක, වෙළඳ භාණ්ඩ සහ ක්‍රිප්ටෝ මුදල්", "1544642951": "ඔබ “Ups පමණක්” තෝරා ගන්නේ නම්, පිවිසුම් ස්ථානයෙන් පසු අඛණ්ඩව කිනිතුල්ලන් අනුක්රමයෙන් ඉහළ ගියහොත් ඔබ ගෙවීම දිනා ගනී. කිසියම් ටික් එකක් වැටුණහොත් හෝ පෙර කිනිතුල්ලන්ට සමාන නම් ගෙවීමක් නොමැත.", "1547148381": "එම ගොනුව ඉතා විශාලය (8MB දක්වා පමණක් අවසර දී ඇත). කරුණාකර වෙනත් ගොනුවක් උඩුගත කරන්න.", - "1548765374": "ලේඛන අංකය සත්යාපනය කිරීම අසාර්ථකයි", - "1549098835": "මුළු ඉවත්", + "1549098835": "මුළු ආපසු ගැනීම්", "1551172020": "AUD කූඩය", "1552162519": "දැක්ම onboarding", "1555345325": "පරිශීලක මාර්ගෝපදේශය", @@ -1470,8 +1466,8 @@ "1602894348": "මුරපදයක් සාදන්න", "1604916224": "නිරපේක්ෂ", "1605222432": "මට වෙළඳාම පිළිබඳ දැනුමක් හා පළපුරුද්දක් නොමැත.", - "1605292429": "මැක්ස්. මුළු අලාභය", - "1612105450": "සබ්ස්ට්රිං ලබා ගන්න", + "1605292429": "උපරිම මුළු අලාභය", + "1612105450": "උපපෙළ ලබා ගන්න", "1612638396": "නිශ්චිත කාල රාමුවක් තුළ ඕනෑම වේලාවක ඔබේ වෙළඳාම අවලංගු කරන්න.", "1613633732": "පරතරය විනාඩි 10-60 අතර විය යුතුය", "1615897837": "සංඥා EMA කාල සීමාව {{ input_number }}", @@ -1499,7 +1495,7 @@ "1641635657": "අනන්යතා ලේඛනයේ නව සාක්ෂි අවශ්යයි", "1641980662": "ආචාර කිරීම අවශ්ය වේ.", "1644636153": "ගනුදෙනු hash: <0>{{value}}", - "1644703962": "CFD ගිණුම් සොයනවාද? වෙළෙන්දාගේ කේන්ද්රය වෙත යන්න", + "1644703962": "CFD ගිණුම් සොයනවාද? Trader's Hub වෙත යන්න", "1644864436": "වෘත්තීය සේවාදායකයෙකු වීමට ඉල්ලා සිටීමට පෙර ඔබේ ගිණුම <0>සත්යාපනය කිරීමට ඔබට අවශ්ය වනු ඇත.", "1644908559": "ඉලක්කම් කේතය අවශ්ය වේ.", "1647186767": "ධාවනය වන විට බොට් දෝෂයකට මුහුණ දුන්නේය.", @@ -1509,7 +1505,7 @@ "1651951220": "“abcabcabc” වැනි පුනරාවර්තන “abc” වලට වඩා අනුමාන කිරීමට තරමක් අපහසු වේ", "1652366857": "ලබා ගන්න සහ ඉවත් කරන්න", "1652968048": "ගුණකය සහ කොටස් වැනි ඔබේ වෙළඳ විකල්ප නිර්වචනය කරන්න.", - "1652976865": "මෙම උදාහරණයේ දී, ඉටිපන්දම් ලැයිස්තුවකින් විවෘත මිල ගණන් ලබා ගැනීම සඳහා මෙම කොටස තවත් බ්ලොක් එකක් සමඟ භාවිතා කරයි. විවෘත මිල ගණන් “cl” යනුවෙන් හැඳින්වෙන විචල්යයට පවරනු ලැබේ.", + "1652976865": "මෙම උදාහරණයේ දී, candle ලැයිස්තුවකින් විවෘත මිල ගණන් ලබා ගැනීම සඳහා මෙම බ්ලොක් එක වෙනත් බ්ලොක් එකක් සමඟ භාවිත කරයි. පසුව විවෘත මිල ගණන් \"cl\" නම් විචල්‍යයට පවරනු ලැබේ.", "1653136377": "පිටපත් කර ඇත!", "1653180917": "ඔබගේ කැමරාව භාවිතා නොකර අපට ඔබව සත්යාපනය කළ නොහැක", "1654365787": "නොදන්නා", @@ -1620,7 +1616,7 @@ "1766993323": "අවසර ඇත්තේ අකුරු, අංක සහ යටි ලකුණු පමණි.", "1767429330": "ව්යුත්පන්න ගිණුමක් එක් කරන්න", "1768293340": "ගිවිසුමේ වටිනාකම", - "1768861315": "විනාඩිය", + "1768861315": "විනාඩි", "1768918213": "අකුරු, අවකාශය, හයිෆන්, කාල පරිච්ඡේදය සහ අපෝට්රොප් පමණක් අවසර ඇත.", "1769068935": "ක්‍රිප්ටෝ මුදල් මිලදී ගැනීම සඳහා මෙම හුවමාරුවලින් එකක් තෝරන්න:", "1771037549": "Deriv සැබෑ ගිණුමක් එක් කරන්න", @@ -1647,11 +1643,12 @@ "1790770969": "ප්‍රධාන FX (සම්මත/ක්ෂුද්‍ර​ කොටස්), සුළු FX, වෙළඳ භාණ්ඩ, ක්‍රිප්ටෝ මුදල්", "1791432284": "රට සොයන්න", "1791971912": "මෑත", + "1792037169": "ප්‍රමාදයන් වළක්වා ගැනීමට, ඔබේ {{document_name}} හි දිස්වන ආකාරයටම ඔබේ <0>නම සහ <0>උපන් දිනය ඇතුළත් කරන්න.", "1793913365": "මුදල් තැන්පත් කිරීමට කරුණාකර ඔබගේ {{currency_symbol}} ගිණුමට මාරු වන්න.", "1794815502": "ඔබගේ ගනුදෙනු ඉතිහාසය බාගන්න.", "1796787905": "කරුණාකර පහත ලේඛනය (ය) උඩුගත කරන්න.", "1798943788": "ඔබට කළ හැක්කේ තැන්පතු පමණි.", - "1801093206": "ඉටිපන්දම් ලැයිස්තුව ලබා ගන්න", + "1801093206": "Candle ලැයිස්තුව ලබා ගන්න", "1801270786": "කිසිදු කේතයක් ලිවීමකින් තොරව ඔබේ වෙළඳ උපායමාර්ගය ස්වයංක්රීය කිරීමට සූදානම්ද? ඔබ නියම ස්ථානයට පැමිණ ඇත.", "1801927731": "{{platform_name_dxtrade}} ගිණුම්", "1803338729": "ඔබට වෙළඳාම් කිරීමට අවශ්ය කුමන ආකාරයේ කොන්ත්රාත්තුවක් තෝරන්න. උදාහරණයක් ලෙස, නැගී සිටීම/වැටීම වෙළඳ වර්ගය සඳහා ඔබට විකල්ප තුනෙන් එකක් තෝරා ගත හැකිය: නැගීම, වැටීම හෝ දෙකම. තෝරාගත් විකල්පය මිලදී ගැනීමේ කොටස සඳහා පවතින විකල්ප තීරණය කරනු ඇත.", @@ -1792,7 +1789,6 @@ "1924765698": "උපන් ස්ථානය*", "1926987784": "- iOS: ගිණුමේ වමට ස්වයිප් කර <0>මකන්න තට්ටු කරන්න.", "1928930389": "GBP/NOK", - "1929309951": "රැකියා තත්ත්වය", "1929694162": "ගිණුම් සසඳන්න", "1930899934": "ටෙතර්", "1931659123": "සෑම ටික් එකකම ධාවනය කරන්න", @@ -1830,7 +1826,7 @@ "1973536221": "ඔබට තවමත් විවෘත ස්ථාන නොමැත.", "1973564194": "ඔබ එක් ෆියට් ගිණුමකට සීමා වේ. ඔබ දැනටමත් ඔබේ පළමු තැන්පතුව සිදු කර ඇත්නම් හෝ සැබෑ {{dmt5_label}} හෝ {{platform_name_dxtrade}} ගිණුමක් සාදා ඇත්නම් ඔබට ඔබේ ගිණුමේ මුදල් ඒකකය වෙනස් කිරීමට නොහැකි වනු ඇත.", "1973910243": "ඔබේ ගිණුම් කළමනාකරණය කරන්න", - "1974273865": "මෙම විෂය පථය තෙවන පාර්ශවීය යෙදුම් වලට ඔබගේ ගිණුම් ක්රියාකාරකම්, සැකසුම්, සීමාවන්, ශේෂ පත්ර, වෙළඳ මිලදී ගැනීමේ ඉතිහාසය සහ තවත් බොහෝ දේ බැලීමට ඉඩ ලබා දේ.", + "1974273865": "මෙම විෂය පථය තෙවන පාර්ශවීය යෙදුම්වලට ඔබේ ගිණුම් ක්‍රියාකාරකම්, සැකසීම්, සීමා, ශේෂ පත්‍ර, ගනුදෙනු මිලදී ගැනීමේ ඉතිහාසය, සහ තවත් දේ බැලීමට ඉඩ දෙනු ඇත.", "1974903951": "ඔබ ඔව් ක්ලික් කළහොත්, ඔබ ඇතුළත් කළ තොරතුරු නැති වී යයි.", "1981940238": "වරින් වර වෙනස් විය හැකි මෙම පැමිණිලි ප්රතිපත්තිය {{legal_entity_name_svg}} සහ {{legal_entity_name_v}}සමඟ ලියාපදිංචි කර ඇති ඔබගේ ගිණුමට අදාළ වේ.", "1982912252": "සාපේක්ෂ ශක්තිය දර්ශකය (සියළු කොටස්) කාල පරිච්ඡේදයක් සමග ලැයිස්තුවෙන්", @@ -1904,7 +1900,7 @@ "2046577663": "ඔබේ බොට් ආයාත කරන්න හෝ තෝරන්න", "2048110615": "ඊ-තැපැල් ලිපිනය*", "2048134463": "ගොනු ප්රමාණය ඉක්මවා ඇත.", - "2049386104": "මෙම ගිණුම ලබා ගැනීම සඳහා ඔබට මේවා ඉදිරිපත් කිරීමට අපට අවශ්යය:", + "2049386104": "මෙම ගිණුම ලබා ගැනීම සඳහා අපට ඔබ පහත සඳහන් දේවල් ඉදිරිපත් කළ යුතුය:", "2050170533": "සලකුණු ලැයිස්තුව", "2051558666": "ගනුදෙනු ඉතිහාසය බලන්න", "2054889300": "“%1” සාදන්න", @@ -1937,7 +1933,7 @@ "2085602195": "- ඇතුළත් කිරීමේ අගය: කොන්ත්රාත්තුවේ පළමු ටික් එකේ වටිනාකම", "2086742952": "ඔබ සැබෑ විකල්ප ගිණුමක් එකතු කර ඇත. වෙළඳාම ආරම්භ කිරීම සඳහා දැන්ම තැන්පතුවක්<0/> කරන්න.", "2086792088": "බාධක දෙකම සාපේක්ෂ හෝ නිරපේක්ෂ විය යුතුය", - "2088735355": "ඔබගේ සැසිය සහ පිවිසුම් සීමාවන්", + "2088735355": "ඔබේ සැසිය හා පිවිසුම් සීමා", "2089581483": "කල් ඉකුත් වේ", "2090650973": "ඔබගේ ඇණවුම අපගේ සේවාදායකයන් වෙත ළඟා වන විට ස්ථානීය මිල වෙනස් විය හැකිය. මෙය සිදු වූ විට, ඔබගේ ගෙවීම බලපානු ඇත.", "2091671594": "තත්ත්වය", @@ -1964,14 +1960,14 @@ "2112175277": "ඩෙලමිටර් සමඟ", "2113321581": "ඩෙරිව් සූදු ගිණුමක් එක් කරන්න", "2115223095": "පාඩුව", - "2117165122": "1. ටෙලිග්‍රෑම් බොට් එකක් සාදා ඔබේ ටෙලිග්‍රෑම් API ටෝකනය ලබා ගන්න. ටෙලිග්‍රෑම් හි බොට්ස් නිර්මාණය කරන්නේ කෙසේද යන්න පිළිබඳ වැඩිදුර කියවන්න: https://core.telegram.org/bots#6-botfather", + "2117165122": "1. ටෙලිග්‍රෑම් බොට් එකක් සාදා ඔබේ ටෙලිග්‍රෑම් API ටෝකනය ලබා ගන්න. ටෙලිග්‍රෑම්හි බොට් නිර්මානය කරන ආකරය පිළිබඳ වැඩිදුර කියවන්න: https://core.telegram.org/bots#6-botfather", "2117489390": "තත්පර {{ remaining }} කින් ස්වයංක්‍රීයව යාවත්කාලීන කිරීම", - "2118315870": "ඔබ ජීවත් වන්නේ කොහේද?", "2119449126": "පහත උදාහරණයේ නිදර්ශන ප්රතිදානය වනුයේ:", "2119710534": "FAQ", "2121227568": "NEO/USD", "2122152120": "වත්කම්", "2127564856": "මුදල් ආපසු ගැනීම අගුළු දමා ඇත", + "2129807378": "පැතිකඩ යාවත්කාලීන කරන්න", "2131963005": "කරුණාකර පහත දැක්වෙන ඩෙරිව් එම්ටී 5 ගිණුමෙන් ඔබේ අරමුදල් ආපසු ගන්න:", "2133451414": "කාල සීමාව", "2133470627": "මෙම කොටස තෝරාගත් වෙළඳ වර්ගය සඳහා විභව ගෙවීම ආපසු ලබා දෙයි. මෙම කොටස “මිලදී ගැනීමේ කොන්දේසි” මූල කොටසෙහි පමණක් භාවිතා කළ හැකිය.", @@ -1983,7 +1979,7 @@ "2139171480": "නැවත සකසන්න/පහළට යළි පිහිටුවන්න", "2139362660": "වම් පැත්ත", "2141055709": "නව {{type}} මුරපදය", - "2141873796": "<0>CFDs, <1>ගුණකය සහ <2>විකල්ප පිළිබඳ වැඩි විස්තර ලබා ගන්න.", + "2141873796": "<0>CFD, <1>ගුණක, සහ <2>විකල්ප පිළිබඳ වැඩිදුර තොරතුරු ලබා ගන්න.", "2143803283": "ගැනුම් දෝෂය", "2144609616": "ඔබ “Reset-Down” තෝරා ගන්නේ නම්, නැවත පිහිටුවීමේ වේලාවේදී පිටවීමේ ස්ථානය පිවිසුම් ස්ථානයට හෝ ස්ථානයට වඩා තදින් අඩු නම් ඔබ ගෙවීම දිනා ගනී.", "2145690912": "ආදායම් ඉපැයීම", @@ -1992,15 +1988,13 @@ "2146698770": "ප්රෝ ඉඟිය: ඔබට අපේක්ෂිත බ්ලොක් එක ක්ලික් කර ඇදගෙන යා හැකිය", "2146892766": "ද්විමය විකල්ප වෙළඳ අත්දැකීම්", "2147244655": "මගේම වෙළඳ බොට් ඩෙරිව් බොට් වෙත ආනයනය කරන්නේ කෙසේද?", - "-1232613003": "<0>සත්යාපනය අසාර්ථකයි <1>ඇයි?", - "-2029508615": "<0>සත්යාපනය අවශ්යයි <1>දැන් සත්යාපනය කරන්න", "-931052769": "සත්යාපනය ඉදිරිපත් කරන්න", "-1004605898": "ඉඟි", "-1938142055": "උඩුගත කරන ලද ලේඛන", "-448090287": "සබැඳිය ක්රියාත්මක වන්නේ ජංගම උපාංගවල පමණි", "-1244287721": "යමක් වැරදී ඇත", "-241258681": "ඔබේ පරිගණකයේ සත්යාපනය නැවත ආරම්භ කිරීමට ඔබට අවශ්ය වනු ඇත", - "-929254273": "ආරක්ෂිත සබැඳියක් ලබා ගන්න", + "-929254273": "ආරක්ෂිත සබැඳිය ලබා ගන්න", "-2021867851": "ඉදිරිපත් කිරීම අවසන් කිරීමට මෙහි නැවත පරීක්ෂා කරන්න", "-1547069149": "සබැඳිය විවෘත කර කාර්යයන් සම්පූර්ණ කරන්න", "-1767652006": "මෙන්න එය කරන්නේ කෙසේද:", @@ -2047,7 +2041,7 @@ "-1667839246": "ජංගම දුරකථන අංකය ඇතුළත් කරන්න", "-1533172567": "ඔබගේ ජංගම දුරකථන අංකය ඇතුලත් කරන්න:", "-1352094380": "මෙම එක් වරක් සබැඳිය ඔබගේ දුරකථනයට යවන්න", - "-28974899": "ඔබගේ ආරක්ෂිත සබැඳිය ලබා ගන්න", + "-28974899": "ඔබේ ආරක්ෂිත සබැඳිය ලබා ගන්න", "-359315319": "දිගටම කරගෙන යන්න", "-1279080293": "2. ඔබගේ ඩෙස්ක්ටොප් කවුළුව විවෘතව පවතී", "-102776692": "සත්යාපනය සමඟ ඉදිරියට යන්න", @@ -2120,7 +2114,7 @@ "-1282749116": "අවසාන නම", "-1485480657": "වෙනත් විස්තර", "-1784741577": "උපන් දිනය", - "-1702919018": "ලිපිනයේ දෙවන පේළිය (අත්යවශ්ය නොවේ)", + "-1702919018": "ලිපිනයේ දෙවන පේළිය (අත්‍යවශ්‍ය නොවේ)", "-1315410953": "ප්‍රාන්තය/පළාත", "-2040322967": "පුරවැසිභාවය", "-344715612": "රැකියා තත්වය*", @@ -2141,18 +2135,9 @@ "-179726573": "හිමිකාරිත්වය පිළිබඳ ඔබේ සාක්ෂි අපට ලැබී ඇත.", "-813779897": "හිමිකාරිත්ව සත්යාපනය පිළිබඳ සාධනය සම්මත විය.", "-638756912": "ඔබේ හර/ක්රෙඩිට් කාඩ්පතේ ඉදිරිපස පෙන්වා ඇති කාඩ්පත් අංකයේ 7 සිට 12 දක්වා ඉලක්කම් කළු කරන්න.", - "-2073934245": "මෙම වෙබ් අඩවියේ පිරිනමනු ලබන මූල්‍ය ගනුදෙනු සේවා සුදුසු වන්නේ ආයෝජනය කරන සියලුම මුදල් අහිමි වීමේ හැකියාව පිළිගන්නා සහ මූල්‍ය ගිවිසුම් මිලදී ගැනීමේදී ඇති අවදානම තේරුම් ගත් සහ ඒ පිළිබඳ අත්දැකීම් ඇති ගනුදෙනුකරුවන්ට පමණි. මූල්‍ය ගිවිසුම්වල ගනුදෙනු ඉහළ අවදානමක් දරයි. ඔබ මිල දී ගත් ගිවිසුම් නිෂ්ඵල ලෙස කල් ඉකුත් වුවහොත්, ගිවිසුම් වාරිකය ඇතුළු ඔබේ සියලුම ආයෝජන ඔබට අහිමි වනු ඇත.", - "-1166068675": "ඔබගේ ගිණුම එක්සත් රාජධානියේ සූදු කොමිෂන් සභාව (UKGC) විසින් නියාමනය කරනු ලබන {{legal_entity_name}}සමඟ විවෘත කරනු ලබන අතර අයිල් ඔෆ් මෑන් හි නීතිවලට යටත් වේ.", - "-975118358": "ඔබේ ගිණුම මෝල්ටා මූල්ය සේවා අධිකාරිය (MFSA) විසින් නියාමනය කරනු ලබන {{legal_entity_name}}සමඟ විවෘත වන අතර මෝල්ටාවේ නීතිවලට යටත් වේ.", - "-680528873": "ඔබගේ ගිණුම {{legal_entity_name}} සමඟ විවෘත වන අතර එය සැමෝවා හි නීතිවලට යටත් වේ.", - "-1125193491": "ගිණුම එක් කරන්න", - "-2068229627": "මම PEP නොවේ, පසුගිය මාස 12 ඇතුළත මම PEP නොවුණෙමි.", "-684271315": "හරි", "-740157281": "වෙළඳ පළපුරුද්ද ඇගයීම", "-1720468017": "ඔබට අපගේ සේවාවන් සැපයීමේදී, ලබා දී ඇති නිෂ්පාදනයක් හෝ සේවාවක් ඔබට සුදුසු දැයි තක්සේරු කිරීම සඳහා අපි ඔබෙන් තොරතුරු ලබා ගත යුතුය.", - "-186841084": "ඔබගේ පිවිසුම් ඊ-තැපෑල වෙනස් කරන්න", - "-907403572": "ඔබේ ඊ-තැපැල් ලිපිනය වෙනස් කිරීමට, ප්‍රථමයෙන් ඔබ ඔබේ ඊ-තැපැල් ලිපිනය ඔබේ {{identifier_title}} ගිණුමෙන් විසන්ධි කළ යුතුය.", - "-1850792730": "{{identifier_title}}වෙතින් ඉවත් වන්න", "-307865807": "අවදානම් ඉවසීම අවවාදයයි", "-690100729": "ඔව්, මට අවදානම තේරෙනවා.", "-2010628430": "සීඑෆ්ඩී සහ වෙනත් මූල්ය උපකරණ ලීවරය හේතුවෙන් වේගයෙන් මුදල් අහිමි වීමේ ඉහළ අවදානමක් ඇත. CFDs සහ අනෙකුත් මූල්ය උපකරණ ක්රියා කරන ආකාරය සහ ඔබේ මුදල් අහිමි වීමේ ඉහළ අවදානමක් ගැනීමට ඔබට හැකිද යන්න ඔබ තේරුම් ගෙන තිබේද යන්න ඔබ සලකා බැලිය යුතුය.<0/><0/>", @@ -2180,7 +2165,7 @@ "-1958764604": "ඊ-තැපැල් අභිරුචිය", "-2121071263": "ඊ-තැපෑල හරහා යාවත්කාලීන ලබා ගැනීමට මෙම කොටුව සලකුණු කරන්න.", "-2068064150": "Deriv නිෂ්පාදන, සේවා සහ සිදුවීම් පිළිබඳ යාවත්කාලීන ලබා ගන්න.", - "-1558679249": "කරුණාකර ඔබේ තොරතුරු නිවැරදි බවට වග බලා ගන්න, නැතහොත් එය ඔබේ වෙළඳ අත්දැකීමට බලපායි.", + "-1558679249": "කරුණාකර ඔබේ තොරතුරු නිවැරදි බවට වග බලා ගන්න, නැතහොත් එය ඔබේ ගනුදෙනු අත්දැකීමට බලපෑ හැකිය.", "-179005984": "සුරකින්න", "-2116332353": "කරුණාකර පහත ඩෙරිව් ගිණුමේ ඔබගේ තනතුරු වසා දමන්න (ය):", "-2048005267": "{{number_of_positions}} තත්ත්වය (ය)", @@ -2206,19 +2191,14 @@ "-1725454783": "අසාර්ථකයි", "-506510414": "දිනය සහ වේලාව", "-1708927037": "IP ලිපිනය", - "-619126443": "{{brand_website_name}} සහ {{platform_name_trader}} වෙත පුරනය වීමට <0>Deriv මුරපදය භාවිත කරන්න.", - "-623760979": "{{brand_website_name}}, {{platform_name_trader}} සහ {{platform_name_go}} වෙත පුරනය වීමට <0>Deriv මුරපදය භාවිත කරන්න.", - "-459147994": "{{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} සහ {{platform_name_ctrader}} වෙත පුරනය වීමට <0>Deriv මුරපදය භාවිත කරන්න.", - "-80717068": "ඔබ ඔබේ <0>Deriv මුරපදය වෙත සම්බන්ධ කර ඇති යෙදුම්:", - "-9570380": "වෙබ් සහ ජංගම යෙදුම්වල ඔබේ {{platform_name_dxtrade}} ගිණුම් වෙත පුරනය වීමට {{platform_name_dxtrade}} මුරපදය භාවිත කරන්න.", "-2131200819": "අක්‍රමවත් කරන්න", "-200487676": "සක්රීය කරන්න", "-1840392236": "එය නිවැරදි කේතය නොවේ. කරුණාකර නැවත උත්සාහ කරන්න.", - "-2067796458": "සත්යාපන කේතය", + "-2067796458": "සත්‍යාපන කේතය", "-790444493": "2FA සමඟ ඔබේ ගිණුම ආරක්ෂා කර ගන්න. ඔබ ඔබේ ගිණුමට පුරනය වන සෑම අවස්ථාවකම, ඔබේ ස්මාර්ට් ජංගම දුරකතනයේ 2FA යෙදුමක් මඟින් උත්පාදනය කරන ලද ඔබේ මුරපදය සහ සත්‍යාපන කේතය ඇතුළත් කිරීමට ඔබට සිදු වේ.", "-368010540": "ඔබගේ ඩෙරිව් ගිණුම සඳහා ඔබ 2FA සක්රීය කර ඇත.", "-403552929": "2FA අක්රීය කිරීමට, කරුණාකර පහත ඔබගේ 2FA යෙදුම මගින් ජනනය කරන ලද ඉලක්කම් හයක සත්යාපන කේතය ඇතුළත් කරන්න:", - "-752939584": "ඔබගේ ඩෙරිව් ගිණුම සඳහා 2FA සකසන්නේ කෙසේද", + "-752939584": "ඔබේ Deriv ගිණුම සඳහා 2FA සකසන ආකරය", "-90649785": "යතුර පිටපත් කිරීමට මෙහි ක්ලික් කරන්න", "-206376148": "යතුර පිටපත් කර ඇත!", "-1592318047": "උදාහරණයක් බලන්න", @@ -2240,44 +2220,37 @@ "-378415317": "රාජ්ය අවශ්ය වේ", "-1497654315": "ජර්සි තැපැල් කේතය සඳහා අපගේ ගිණුම් සහ සේවාවන් නොමැත.", "-755626951": "ඔබේ ලිපින විස්තර සම්පූර්ණ කරන්න", - "-584911871": "පසුම්බි මුදල් තෝරන්න", "-1461267236": "කරුණාකර ඔබේ මුදල් ඒකකය තෝරන්න", - "-1352330125": "ව්යවහාර මුදල්", "-1027595143": "$25,000 ට වඩා අඩුය", "-40491332": "$25,000 - $50,000", "-1139806939": "$50,001 - $100,000", - "-626752657": "වසර 0-1", - "-532014689": "අවුරුදු 1 - 2", - "-1001024004": "අවුරුදු 3 ට වැඩි", - "-790513277": "පසුගිය මාස 6-10 තුළ ගනුදෙනු 12", - "-580085300": "පසුගිය මාස 11-39 තුළ ගනුදෙනු 12", - "-654781670": "ප්රාථමික", - "-1717373258": "ද්විතියික", "-996132458": "ගොඩනැගීම", "-915003867": "සෞඛ්‍ය", "-1430012453": "තොරතුරු සහ සන්නිවේදන තාක්ෂණය", "-987824916": "විද්‍යාව සහ ඉංජීනේරු ශිල්පය", "-146630682": "සමාජ සහ සංස්කෘතික", "-761306973": "නිෂ්පාදනය", - "-739367071": "සේවා නියුක්ත", - "-1156937070": "$500,001 - $1,000,000", - "-315534569": "$1,000,000 කට වඩා", - "-2068544539": "වැටුප් ලබන සේවකයා", - "-531314998": "ආයෝජන සහ ලාභාංශ", - "-1235114522": "විශ්‍රාම වැටුප", - "-1298056749": "රාජ්‍ය ප්‍රතිලාභ", - "-449943381": "ඉතුරුම් සහ උරුමය", "-1631552645": "වෘත්තිකයින්", "-474864470": "පුද්ගලික සත්කාර, විකුණුම් සහ සේවා සේවකයින්", "-1129355784": "කෘෂිකාර්මික, වන හා ධීවර කම්කරුවන්", "-1242914994": "අත්කම්, ලෝහ, විදුලි හා ඉලෙක්ට්රොනික කම්කරුවන්", "-1317824715": "පිරිසිදු කරන්නන් සහ සහයකයින්", "-1592729751": "පතල් කැණීම, ඉදිකිරීම්, නිෂ්පාදන හා ප්රවාහන සේවකයින්", + "-1030759620": "රජයේ නිලධාරීන්", "-2137323480": "සමාගම් හිමිකාරිත්වය", "-1590574533": "දික්කසාද බේරුම්කරණය", "-1667683002": "උරුමය", "-1237843731": "ආයෝජන ආදායම", "-777506574": "ඉඩකඩම් විකිණීම", + "-654781670": "ප්රාථමික", + "-1717373258": "ද්විතියික", + "-1156937070": "$500,001 - $1,000,000", + "-315534569": "$1,000,000 කට වඩා", + "-2068544539": "වැටුප් ලබන සේවකයා", + "-531314998": "ආයෝජන සහ ලාභාංශ", + "-1235114522": "විශ්‍රාම වැටුප", + "-1298056749": "රාජ්‍ය ප්‍රතිලාභ", + "-449943381": "ඉතුරුම් සහ උරුමය", "-1161338910": "පළමු නම අවශ්ය වේ.", "-1161818065": "අවසාන නම අක්ෂර 2 ත් 50 ත් අතර විය යුතුය.", "-1281693513": "උපන් දිනය අවශ්‍ය වේ.", @@ -2287,29 +2260,15 @@ "-212167954": "බදු හඳුනාගැනීමේ අංකය නිසි ලෙස හැඩගස්වා නොමැත.", "-621555159": "අනන්යතා තොරතුරු", "-204765990": "භාවිත නියම", - "-231863107": "නැත", - "-870902742": "සබැඳි වෙළඳාම සම්බන්ධයෙන් ඔබට කොපමණ දැනුමක් හා පළපුරුද්දක් තිබේද?", - "-1929477717": "මට අධ්යයන උපාධියක්, වෘත්තීය සහතිකයක් සහ/හෝ මූල්ය සේවාවන්ට අදාළ සේවා පළපුරුද්ද ඇත.", - "-1540148863": "මම වෙළඳාමට අදාළ සම්මන්ත්රණ, පුහුණුව සහ/හෝ වැඩමුළු වලට සහභාගී වී ඇත්තෙමි.", - "-922751756": "වසරකට අඩු", - "-542986255": "කිසිවක් නැත", - "-1337206552": "ඔබේ අවබෝධය අනුව, CFD වෙළඳාම ඔබට ඉඩ සලසයි", - "-456863190": "ප්‍රතිඵලය ස්ථාවර ප්‍රතිලාභයක් හෝ කිසිවක් නොමැති වත්කමක මිල චලනය මත ස්ථානයක් තබන්න.", - "-1314683258": "සහතික කළ ලාභයක් සඳහා දිගුකාලීන ආයෝජනයක් කරන්න.", - "-1546090184": "උත්තෝලනය CFD ගනුදෙනුවට බලපාන්නේ කෙසේද?", - "-1636427115": "උත්තෝලනය අවදානම අවම කිරීමට උපකාරී වේ.", - "-800221491": "උත්තෝලනය ලාභ සහතික කරයි.", - "-811839563": "ගනුදෙනු වටිනාකමෙන් කොටසක් සඳහා විශාල තනතුරු විවෘත කිරීමට උත්තෝලනය ඔබට ඉඩ සලසයි, එමඟින් ලාභය හෝ අලාභය වැඩි විය හැකිය.", - "-1185193552": "ප්‍රමාණවත් වෙළඳපල ද්‍රවශීලතාවයක් පවතින තාක් කල් අලාභය නිශ්චිත මුදලකට සමාන හෝ වැඩි වූ විට ඔබේ ගනුදෙනුව ස්වක්‍රීයව වසා දමන්න.", - "-1046354": "ප්‍රමාණවත් වෙළඳපල ද්‍රවශීලතාවයක් පවතින තාක් කල් ලාභය නිශ්චිත මුදලකට සමාන හෝ වැඩි වූ විට ඔබේ ගනුදෙනුව ස්වක්‍රීයව වසා දමන්න.", - "-1842858448": "ඔබේ ගනුදෙනුවෙන් සහතික කළ ලාභයක් ලබා ගන්න.", - "-860053164": "ගුණකයන් ගනුදෙනු කරන විට.", - "-1250327770": "සමාගමක කොටස් මිලදී ගැනීමේදී.", - "-1222388581": "ඉහත සියල්ල.", "-477761028": "ඡන්ද හැඳුනුම්පත", "-1466346630": "CPF", - "-1030759620": "රජයේ නිලධාරීන්", - "-612752984": "මේවා අපි ඔබගේ ගිණුම් වලට යොදන පෙරනිමි සීමාවන් වේ.", + "-739367071": "සේවා නියුක්ත", + "-626752657": "වසර 0-1", + "-532014689": "අවුරුදු 1 - 2", + "-1001024004": "අවුරුදු 3 ට වැඩි", + "-790513277": "පසුගිය මාස 6-10 තුළ ගනුදෙනු 12", + "-580085300": "පසුගිය මාස 11-39 තුළ ගනුදෙනු 12", + "-612752984": "මේවා අපි ඔබගේ ගිණුම් සඳහා යොදන පෙරනිමි සීමාවන් වේ.", "-1598263601": "ගනුදෙනු සීමාවන් සහ ඒවා අදාළ වන ආකාරය පිළිබඳ වැඩිදුර දැන ගැනීමට කරුණාකර <0>උපකාරක මධ්‍යස්ථානය වෙත යන්න.", "-1411635770": "ගිණුම් සීමාවන් ගැන තව දැනගන්න", "-1340125291": "සිදු කළා", @@ -2317,19 +2276,16 @@ "-858297154": "ඔබගේ ගිණුමේ තබා ගත හැකි උපරිම මුදල් ප්‍රමාණය නියෝජනය කරයි. උපරිමය ළඟා වුවහොත්, මුදල් ආපසු ගැනීමට ඔබෙන් අසනු ඇත.", "-976258774": "සකසා නැත", "-1182362640": "ඔබේ කළඹේ කැපී පෙනෙන ගිවිසුම් සඳහා උපරිම සමස්ත ගෙවීම් නියෝජනය කරයි. උපරිමය ළඟා කර ගන්නේ නම්, දැනට පවතින තනතුරු මුලින් වසා දැමීමකින් තොරව ඔබට අමතර ගිවිසුම් මිලදී නොගත හැකිය.", - "-1781293089": "විවෘත තනතුරු මත උපරිම සමස්ත ගෙවීම්", - "-1412690135": "*ඔබගේ ස්වයං-බැහැර සැකසුම් වල ඇති ඕනෑම සීමාවන් මෙම පෙරනිමි සීමාවන් අභිබවා යනු ඇත.", + "-1781293089": "විවෘත ස්ථාන මත උපරිම සමස්ථ ගෙවීම්", + "-1412690135": "*ඔබේ ස්වයං ව්‍යවර්තන සැකසීම්වල ඕනෑම සීමාවක් මෙම පෙරනිමි සීමාවන් අභිබවා යයි.", "-1598751496": "ඕනෑම ගනුදෙනු කිරීමේ දිනයකදී ඔබට මිලදී ගත හැකි උපරිම ගිවිසුම් ප්‍රමාණය නියෝජනය කරයි.", "-173346300": "උපරිම දෛනික පිරිවැටුම", - "-138380129": "මුළු මුදල් ආපසු ගැනීමට අවසර ඇත", + "-138380129": "සම්පූර්ණ මුදල් ආපසු ගැනීමේ සීමාව", "-854023608": "සීමාව වැඩි කිරීමට කරුණාකර ඔබේ අනන්‍යතාවය තහවුරු කරන්න", "-1500958859": "සත්‍යාපනය කරන්න", "-1502578110": "ඔබගේ ගිණුම සම්පූර්ණයෙන්ම සත්‍යාපනය කර ඇති අතර ඔබගේ මුදල් ආපසු ගැනීමේ සීමාවන් ඉවත් කර ඇත.", "-1662154767": "මෑත කාලීන උපයෝගිතා බිල්පතක් (උදා: විදුලිය, ජලය, ගෑස්, ස්ථාවර දුරකථන හෝ අන්තර්ජාල), බැංකු ප්‍රකාශය හෝ ඔබේ නම සහ මෙම ලිපිනය සහිත රජය විසින් නිකුත් කරන ලද ලිපියක්.", - "-190838815": "සත්යාපනය සඳහා අපට මෙය අවශ්යයි. ඔබ සපයන තොරතුරු ව්යාජ හෝ සාවද්ය නම්, ඔබට තැන්පත් කර ආපසු ගැනීමට නොහැකි වනු ඇත.", - "-223216785": "ලිපිනයේ දෙවන පේළිය*", "-594456225": "ලිපිනයේ දෙවන පේළිය", - "-1940457555": "තැපැල්/ZIP කේතය*", "-1964954030": "තැපැල්/ZIP කේතය", "-516397235": "ඔබ මෙම ටෝකනය බෙදා ගන්නේ කවුරුන්දැයි ප්‍රවේශම් වන්න. මෙම ටෝකනය ඇති ඕනෑම කෙනෙකුට ඔබගේ ගිණුම වෙනුවෙන් පහත සඳහන් ක්‍රියා සිදු කළ හැකිය", "-989216986": "ගිණුම් එක් කරන්න", @@ -2371,8 +2327,6 @@ "-1100235269": "රැකියා කර්මාන්තය", "-684388823": "ඇස්තමේන්තුගත ශුද්ධ වටිනාකම", "-509054266": "අපේක්ෂිත වාර්ෂික පිරිවැටුම", - "-601903492": "Forex ගනුදෙනු අත්දැකීම​", - "-1012699451": "CFD ගනුදෙනු අත්දැකීම", "-1588485629": "උදාහරණය", "-1117345066": "ලේඛන වර්ගය තෝරන්න", "-651192353": "නියැදිය:", @@ -2393,18 +2347,21 @@ "-1944264183": "ගනුදෙනු දිගටම කරගෙන යාමට, ඔබ අනන්‍යතාවය පිළිබඳ සාක්ෂියක් ද ඉදිරිපත් කළ යුතුය.", "-1088324715": "අපි ඔබේ ලේඛන සමාලෝචනය කර වැඩ කරන දින 1 - 3 ක් ඇතුළත එහි තත්ත්වය ඔබට දන්වන්නෙමු.", "-329713179": "හරි", - "-1176889260": "කරුණාකර ලේඛන වර්ගයක් තෝරන්න.", - "-1926456107": "ඔබ ඉදිරිපත් කළ හැඳුනුම්පත කල් ඉකුත් වී ඇත.", - "-555047589": "ඔබගේ අනන්‍යතා ලේඛනය කල් ඉකුත් වී ඇති බව පෙනේ. කරුණාකර වලංගු ලේඛනයක් සමඟ නැවත උත්සාහ කරන්න.", - "-841187054": "නැවත උත්සාහ කරන්න", + "-895884696": "ඔබගේ හැඳුනුම් ලේඛනයේ ඇති <0>නම සහ <0>උපන් දිනය ඔබගේ පැතිකඩට නොගැලපේ.", + "-1792723131": "ප්‍රමාදයන් වළක්වා ගැනීමට, ඔබේ {{document_name}} හි දිස්වන ආකාරයටම ඔබේ <0>උපන්දිනය ඇතුළු කරන්න.", + "-886317740": "ඔබගේ හැඳුනුම් ලේඛනයේ ඇති <0>උපන්දිනය ඔබගේ පැතිකඩට නොගැලපේ.", + "-1813671961": "ඔබගේ අනන්‍යතා සත්‍යාපනය අසාර්ථක වූයේ:", "-2097808873": "ඔබ ලබා දුන් විස්තර සමඟ ඔබගේ හැඳුනුම්පත සත්යාපනය කිරීමට අපට නොහැකි විය. ", - "-228284848": "ඔබ ලබා දුන් විස්තර සමඟ ඔබගේ හැඳුනුම්පත සත්යාපනය කිරීමට අපට නොහැකි විය.", + "-1652371224": "ඔබේ පැතිකඩ යාවත්කාලීන කරන ලදී", + "-504784172": "ඔබගේ ලේඛනය ඉදිරිපත් කර ඇත", "-1391934478": "ඔබගේ හැඳුනුම්පත සත්යාපනය කර ඇත. ඔබේ ලිපිනය පිළිබඳ සාක්ෂි ඉදිරිපත් කිරීමටද ඔබට අවශ්ය වනු ඇත.", "-118547687": "හැඳුනුම්පත් සත්යාපනය සම්මත විය", "-200989771": "පුද්ගලික තොරතුරු වෙත යන්න", "-1358357943": "අනන්යතාවය සනාථ කිරීමට පෙර කරුණාකර ඔබගේ තැපැල් කේතය පරීක්ෂා කර යාවත්කාලීන කරන්න.", "-1401994581": "ඔබගේ පෞද්ගලික තොරතුරු අස්ථානගත වී ඇත", "-2004327866": "කරුණාකර ලේඛන නිකුත් කිරීමේ වලංගු රටක් තෝරන්න.", + "-1627868670": "ඔබගේ හැඳුනුම්පත කල් ඉකුත් වී ඇත.", + "-1606307809": "සපයා ඇති විස්තර සහිත අනන්‍යතා ලේඛනය සත්‍යාපනය කිරීමට අපට නොහැකි විය.", "-1664159494": "රට", "-749870311": "කරුණාකර <0>සජීවී කථාබස් හරහා අප හා සම්බන්ධ වන්න.", "-1084991359": "අනන්‍යතා සත්‍යාපනය පිළිබඳ සාධනය අවශ්‍ය නොවේ", @@ -2428,26 +2385,26 @@ "-848721396": "මෙම වෙළඳ සීමාවන් අත්‍යවශ්‍ය නොවන අතර ඔබට ඕනෑම වේලාවක ඒවා ශක්තිමත් කළ හැකිය. ඔබ නිශ්චිත සීමාවක් නියම කිරීමට අකමැති නම්, ක්ෂේත්‍රය හිස්ව තබන්න. ඔබ එක්සත් රාජධානියේ ජීවත් වන්නේ නම්, පාරිභෝගික සහාය ඉල්ලීම ලැබීමෙන් පැය 24 කට පසු ඔබේ ගනුදෙනු සීමාවන් ඉවත් කිරීමට හෝ දුර්වල කිරීමට හැකිය. ඔබ Isle of Man හි ජීවත් වන්නේ නම්, පාරිභෝගික සහාය ඔබේ ගනුදෙනු සීමාවන් ඉවත් කිරීම හෝ දුර්වල කිරීම කළ හැක්කේ ඔබේ ගනුදෙනු සීමාවන් කල් ඉකුත් වූ පසු පමණි.", "-469096390": "මෙම වෙළඳ සීමාවන් අත්යවශ්ය නොවන අතර ඔබට ඕනෑම වේලාවක ඒවා ශක්තිමත් කළ හැකිය. ඔබ නිශ්චිත සීමාවක් නියම කිරීමට අකමැති නම්, ක්ෂේත්රය හිස්ව තබන්න. පාරිභෝගික සහාය ඉල්ලීම ලැබීමෙන් පැය 24 කට පසු ඔබේ වෙළඳ සීමාවන් ඉවත් කිරීමට හෝ දුර්වල කිරීමට හැකිය.", "-42808954": "නිශ්චිත කාල සීමාවක් සඳහා ඔබට සම්පූර්ණයෙන්ම බැහැර කළ හැකිය. මෙය ඉවත් කළ හැක්කේ ඔබේ ස්වයං බැහැර කිරීම කල් ඉකුත් වූ පසු පමණි. ඔබේ ස්වයං බැහැර කිරීමේ කාලය ඉකුත් වූ පසු වෙළඳාම දිගටම කරගෙන යාමට ඔබ කැමති නම්, මෙම ස්වයං බැහැර කිරීම ඉවත් කිරීම සඳහා <0>+447723580049 අමතා පාරිභෝගික සහාය අමතන්න. චැට් හෝ විද්යුත් තැපෑලෙන් ඉල්ලීම් ලබා නොගත යුතුය. ඔබට වෙළඳාම නැවත ආරම්භ කිරීමට පෙර පැය 24 ක සිසිල් කිරීමේ කාලයක් ඇත.", - "-1088698009": "මෙම ස්වයං-බැහැර කිරීමේ සීමාවන් Deriv හි {{platform_name_trader}}, {{platform_name_dbot}}, {{platform_name_smarttrader}} සහ {{platform_name_bbot}} මත ගනුදෙනු කිරීමට ඔබ වැය කරන මුදල් හා කාලය පාලනය කිරීමට උපකාරී වේ. ඔබ මෙහි නියම කර ඇති සීමාවන් <0>වගකිවයුතු ගනුදෙනුවක් කිරීමට ඔබට උපකාරී වනු ඇත.", + "-1088698009": "මෙම ස්වයං ව්‍යවර්තන සීමා ඔබට Deriv හි {{platform_name_trader}}, {{platform_name_dbot}}, {{platform_name_smarttrader}} සහ {{platform_name_bbot}} මත ගනුදෙනු කිරීමට වැය කරන මුදල් ප්‍රමාණය සහ කාලය පාලනය කිරීමට උදවු කරයි. ඔබ මෙහි සකසන සීමා ඔබට <0>වගකීම් සහිතව ගනුදෙනු කිරීමට උපකාරී වනු ඇත.", "-1702324712": "මෙම සීමාවන් අත්යවශ්ය නොවන අතර ඔබට ඕනෑම වේලාවක ඒවා සකස් කළ හැකිය. ඔබ කොපමණ ප්රමාණයක් සහ කොපමණ කාලයක් වෙළඳාම් කිරීමට කැමතිද යන්න ඔබ තීරණය කරයි. ඔබ නිශ්චිත සීමාවක් නියම කිරීමට අකමැති නම්, ක්ෂේත්රය හිස්ව තබන්න.", "-1819875658": "නිශ්චිත කාල සීමාවක් සඳහා ඔබට සම්පූර්ණයෙන්ම බැහැර කළ හැකිය. ස්වයං බැහැර කිරීමේ කාලය අවසන් වූ පසු, ඔබට එය තවදුරටත් දීර් extend කළ හැකිය, නැතහොත් වහාම වෙළඳාම නැවත ආරම්භ කළ හැකිය. ස්වයං බැහැර කිරීමේ කාලය අඩු කිරීමට හෝ ඉවත් කිරීමට ඔබට අවශ්ය නම්, අපගේ <0>පාරිභෝගික සහාය අමතන්න.", "-1031814119": "වෙළඳ සීමාවන් සහ ස්වයං-බැහැර කිරීම ගැන", - "-183468698": "වෙළඳ සීමාවන් සහ ස්වයං-බැහැර කිරීම", + "-183468698": "ගනුදෙනු සීමා සහ ස්වයං ව්‍යවර්තන", "-933963283": "නැත, මගේ සීමාවන් සමාලෝචනය කරන්න", "-1759860126": "ඔව්, මාව වහාම ඉවත් කරන්න", "-572347855": "මිනිත්තු {{value}}", "-313333548": "ඔබට ඕනෑම වේලාවක මෙම සීමාවන් සකස් කළ හැකිය. <0>ස්වයං-බැහැර කිරීමේ පිටුවෙන් ඔබේ සීමාවන් අඩු කර ගත හැකිය. ඔබේ සීමාවන් වැඩි කිරීමට හෝ ඉවත් කිරීමට කරුණාකර අපගේ <1>පාරිභෝගික සහාය කණ්ඩායම අමතන්න.", "-1265833982": "පිළිගන්න", - "-2123139671": "ඔබේ කොටස් සහ පාඩු සීමාවන්", + "-2123139671": "ඔබේ කොටස් සහ අලාභ සීමා", "-1250802290": "පැය 24", - "-2070080356": "මැක්ස්. මුළු කොටස්", + "-2070080356": "උපරිම මුළු කොටස්", "-1545823544": "දින 7", - "-180147209": "මෙම කාල සීමාව පසු ඔබ ස්වයංක්රීයව එක් එක් සැසිය සිට ලොගින් වී ඇත.", - "-374553538": "මෙම දිනය දක්වා ඔබගේ ගිණුම වෙබ් අඩවියෙන් බැහැර කරනු ලැබේ (අවම වශයෙන් 6 මාස, 5 වසර දක්වා).", + "-180147209": "මෙම කාල සීමාවෙන් පසු ඔබ එක් එක් සැසියෙන් ස්වයංක්‍රීයව ඉවත් වනු ඇත.", + "-374553538": "මෙම දිනය දක්වා ඔබේ ගිණුම වෙබ් අඩවියෙන් බැහැර කරනු ලැබේ (අවම වශයෙන් මාස 6 සිට අවුරුදු 5 දක්වා).", "-2121421686": "මහා බ්රිතාන්යයේ බලපත්ර ලබා ඇති සියලුම මාර්ගගත සූදු සමාගම් වලින් ස්වයං බැහැර කිරීමට, යන්න <0>www.gamstop.co.uk.", - "-2105708790": "ඔබගේ උපරිම ගිණුමේ ශේෂය සහ විවෘත තනතුරු", - "-1960600163": "ඔබගේ ගිණුමේ ශේෂය මෙම මුදල කරා ළඟා වූ පසු, ඔබට ඔබේ ගිණුමට මුදල් තැන්පත් කිරීමට නොහැකි වනු ඇත.", - "-1073845224": "විවෘත ස්ථාන ගණන (ය)", + "-2105708790": "ඔබේ උපරිම ගිණුම් ශේෂය සහ විවෘත ස්ථාන", + "-1960600163": "ඔබේ ගිණුමේ ශේෂය මෙම මුදලට ළඟා වූ පසු, ඔබට ඔබේ ගිණුමට මුදල් තැන්පත් කිරීමට නොහැකි වනු ඇත.", + "-1073845224": "විවෘත ස්ථාන ගණන", "-288196326": "ඔබේ උපරිම තැන්පතු සීමාව", "-568749373": "උපරිම. තැන්පතු සීමාව", "-1884902844": "උපරිම. දිනකට තැන්පතු සීමාව", @@ -2464,21 +2421,54 @@ "-142444667": "ඔබේ Deriv MT5 මුරපදය වෙනස් කිරීමට කරුණාකර ඊ-තැපෑලෙහි ඇති සබැඳිය ක්ලික් කරන්න.", "-742748008": "ඔබේ ඊ-තැපෑල පරීක්ෂා කර ඉදිරියට යාම සඳහා ඊ-තැපෑලෙහි ඇති සබැඳිය ක්ලික් කරන්න.", "-84068414": "තවම ඊ-තැපෑල ලැබුණේ නැද්ද? කරුණාකර <0>සජීවී කථාබස් හරහා අප හා සම්බන්ධ වන්න", + "-975118358": "ඔබේ ගිණුම මෝල්ටා මූල්ය සේවා අධිකාරිය (MFSA) විසින් නියාමනය කරනු ලබන {{legal_entity_name}}සමඟ විවෘත වන අතර මෝල්ටාවේ නීතිවලට යටත් වේ.", + "-2073934245": "මෙම වෙබ් අඩවියේ පිරිනමනු ලබන මූල්‍ය ගනුදෙනු සේවා සුදුසු වන්නේ ආයෝජනය කරන සියලුම මුදල් අහිමි වීමේ හැකියාව පිළිගන්නා සහ මූල්‍ය ගිවිසුම් මිලදී ගැනීමේදී ඇති අවදානම තේරුම් ගත් සහ ඒ පිළිබඳ අත්දැකීම් ඇති ගනුදෙනුකරුවන්ට පමණි. මූල්‍ය ගිවිසුම්වල ගනුදෙනු ඉහළ අවදානමක් දරයි. ඔබ මිල දී ගත් ගිවිසුම් නිෂ්ඵල ලෙස කල් ඉකුත් වුවහොත්, ගිවිසුම් වාරිකය ඇතුළු ඔබේ සියලුම ආයෝජන ඔබට අහිමි වනු ඇත.", + "-1125193491": "ගිණුම එක් කරන්න", + "-2068229627": "මම PEP නොවේ, පසුගිය මාස 12 ඇතුළත මම PEP නොවුණෙමි.", + "-186841084": "ඔබගේ පිවිසුම් ඊ-තැපෑල වෙනස් කරන්න", + "-907403572": "ඔබේ ඊ-තැපැල් ලිපිනය වෙනස් කිරීමට, ප්‍රථමයෙන් ඔබ ඔබේ ඊ-තැපැල් ලිපිනය ඔබේ {{identifier_title}} ගිණුමෙන් විසන්ධි කළ යුතුය.", + "-1850792730": "{{identifier_title}}වෙතින් ඉවත් වන්න", "-428335668": "ක්‍රියාවලිය සම්පූර්ණ කිරීම සඳහා ඔබ විසින් මුරපදයක් සැකසිය යුතු වේ.", + "-1232613003": "<0>සත්යාපනය අසාර්ථකයි <1>ඇයි?", + "-2029508615": "<0>සත්යාපනය අවශ්යයි <1>දැන් සත්යාපනය කරන්න", "-818898181": "ලේඛනයේ නම ඔබේ Deriv පැතිකඩට නොගැළපේ.", "-310316375": "ලේඛනයේ ඇති ලිපිනය ඔබ ඉහත ඇතුළත් කළ ලිපිනයට නොගැලපේ.", "-485368404": "ලේඛනය මාස 6 කට පෙර නිකුත් කරන ලදී.", "-367016488": "නොපැහැදිලි ලේඛනය. සියලුම තොරතුරු පැහැදිලි සහ දෘශ්‍යමාන විය යුතුය.", "-1957076143": "කපන ලද ලේඛනය. සියලුම තොරතුරු පැහැදිලි සහ දෘශ්‍යමාන විය යුතුය.", + "-1576856758": "මෙම විස්තර සහිත ගිණුමක් දැනටමත් පවතී. එක් සේවාදායකයකුට එක් සැබෑ ගිණුමකට පමණක් අවසර දී ඇති බැවින් කරුණාකර ඔබ ඇතුළත් කළ විස්තර නිවැරදි බවට වග බලා ගන්න. මෙය වැරදීමක් නම්, <0>සජීවී කතාබස් හරහා අප හා සම්බන්ධ වන්න.", + "-231863107": "නැත", + "-870902742": "සබැඳි වෙළඳාම සම්බන්ධයෙන් ඔබට කොපමණ දැනුමක් හා පළපුරුද්දක් තිබේද?", + "-1929477717": "මට අධ්යයන උපාධියක්, වෘත්තීය සහතිකයක් සහ/හෝ මූල්ය සේවාවන්ට අදාළ සේවා පළපුරුද්ද ඇත.", + "-1540148863": "මම වෙළඳාමට අදාළ සම්මන්ත්රණ, පුහුණුව සහ/හෝ වැඩමුළු වලට සහභාගී වී ඇත්තෙමි.", + "-922751756": "වසරකට අඩු", + "-542986255": "කිසිවක් නැත", + "-1337206552": "ඔබේ අවබෝධය අනුව, CFD වෙළඳාම ඔබට ඉඩ සලසයි", + "-456863190": "ප්‍රතිඵලය ස්ථාවර ප්‍රතිලාභයක් හෝ කිසිවක් නොමැති වත්කමක මිල චලනය මත ස්ථානයක් තබන්න.", + "-1314683258": "සහතික කළ ලාභයක් සඳහා දිගුකාලීන ආයෝජනයක් කරන්න.", + "-1546090184": "උත්තෝලනය CFD ගනුදෙනුවට බලපාන්නේ කෙසේද?", + "-1636427115": "උත්තෝලනය අවදානම අවම කිරීමට උපකාරී වේ.", + "-800221491": "උත්තෝලනය ලාභ සහතික කරයි.", + "-811839563": "ගනුදෙනු වටිනාකමෙන් කොටසක් සඳහා විශාල තනතුරු විවෘත කිරීමට උත්තෝලනය ඔබට ඉඩ සලසයි, එමඟින් ලාභය හෝ අලාභය වැඩි විය හැකිය.", + "-1185193552": "ප්‍රමාණවත් වෙළඳපල ද්‍රවශීලතාවයක් පවතින තාක් කල් අලාභය නිශ්චිත මුදලකට සමාන හෝ වැඩි වූ විට ඔබේ ගනුදෙනුව ස්වක්‍රීයව වසා දමන්න.", + "-1046354": "ප්‍රමාණවත් වෙළඳපල ද්‍රවශීලතාවයක් පවතින තාක් කල් ලාභය නිශ්චිත මුදලකට සමාන හෝ වැඩි වූ විට ඔබේ ගනුදෙනුව ස්වක්‍රීයව වසා දමන්න.", + "-1842858448": "ඔබේ ගනුදෙනුවෙන් සහතික කළ ලාභයක් ලබා ගන්න.", + "-860053164": "ගුණකයන් ගනුදෙනු කරන විට.", + "-1250327770": "සමාගමක කොටස් මිලදී ගැනීමේදී.", + "-1222388581": "ඉහත සියල්ල.", "-1515286538": "කරුණාකර ඔබේ ලේඛන අංකය ඇතුළත් කරන්න. ", "-1694758788": "ඔබේ ලේඛන අංකය ඇතුළත් කරන්න", "-1458676679": "ඔබ 2-50 අක්ෂර ඇතුළත් කළ යුතුය.", + "-1176889260": "කරුණාකර ලේඛන වර්ගයක් තෝරන්න.", + "-1265050949": "අනන්‍යතා ලේඛනය", "-2139303636": "ඔබ කැඩුණු සබැඳියක් අනුගමනය කර ඇති හෝ පිටුව නව ලිපිනයකට ගෙන ගොස් ඇත.", "-1448368765": "දෝෂ කේතය: {{error_code}} පිටුව සොයාගත නොහැක", "-254792921": "ඔබට මේ මොහොතේ පමණක් තැන්පතු කළ හැකිය. මුදල් ආපසු සක්රීය කිරීම සඳහා, කරුණාකර ඔබේ මූල්ය තක්සේරුව සම්පූර්ණ කරන්න.", "-1437017790": "මූල්‍ය තොරතුරු", "-70342544": "ඔබේ මූල්ය තොරතුරු ඉල්ලීමට අපි නීත්යානුකූලව බැඳී සිටිමු.", "-39038029": "වෙළඳ පළපුරුද්ද", + "-601903492": "Forex ගනුදෙනු අත්දැකීම​", + "-1012699451": "CFD ගනුදෙනු අත්දැකීම", "-1894668798": "වෙනත් වෙළඳ උපකරණ අත්දැකීම්", "-1026468600": "වෙනත් වෙළඳ උපකරණ සංඛ්යාතය", "-1743024217": "භාෂාව තෝරන්න", @@ -2489,6 +2479,11 @@ "-536187647": "ප්රවේශය අවලංගු කිරීම තහවුරු කරන්න?", "-1357606534": "අවසරය", "-570222048": "ප්රවේශ අවලංගු", + "-80717068": "ඔබ ඔබේ <0>Deriv මුරපදය වෙත සම්බන්ධ කර ඇති යෙදුම්:", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "{{brand_website_name}} සහ {{platform_name_trader}} වෙත පුරනය වීමට <0>Deriv මුරපදය භාවිත කරන්න.", + "-623760979": "{{brand_website_name}}, {{platform_name_trader}} සහ {{platform_name_go}} වෙත පුරනය වීමට <0>Deriv මුරපදය භාවිත කරන්න.", + "-459147994": "{{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} සහ {{platform_name_ctrader}} වෙත පුරනය වීමට <0>Deriv මුරපදය භාවිත කරන්න.", "-1526404112": "උපයෝගිතා බිල්පත: විදුලිය, ජලය, ගෑස් හෝ ස්ථාවර දුරකථන බිල්පත්.", "-537552700": "නිවාස කුලියට දීමේ ගිවිසුම: වලංගු සහ වත්මන් ගිවිසුම.", "-890084320": "සුරකින්න සහ ඉදිරිපත් කරන්න", @@ -2524,7 +2519,7 @@ "-1210359945": "ඔබගේ ගිණුම් වලට අරමුදල් මාරු කරන්න", "-81256466": "CFD ගිණුමක් සෑදීමට ඔබට Deriv ගිණුමක් අවශ්‍ය වේ.", "-699372497": "සාර්ථක ගනුදෙනු සඳහා වඩා හොඳ ප්‍රතිලාභ ලබා ගැනීමට උත්තෝලනය සහ තද ව්‍යාප්ති සමඟ ගනුදෙනු කරන්න. <0>තව දැන ගන්න", - "-1884966862": "විවිධ වර්ගයේ සහ අධිකරණ බලය සහිත තවත් ඩෙරිව් එම්ටී 5 ගිණුමක් ලබා ගන්න.", + "-1884966862": "විවිධ වර්ගයේ සහ විවිධ අධිකරණ බලය සහිත තවත් Deriv MT5 ගිණුම් ලබා ගන්න.", "-145462920": "Deriv cTrader", "-982095728": "ලබා ගන්න", "-1277942366": "මුළු වත්කම්", @@ -2537,14 +2532,14 @@ "-172898036": "CR5236585", "-1665192032": "ගුණකයන් ගිණුම", "-744999940": "Deriv ගිණුම", - "-1638358352": "<0>ගුණකය සමඟ ඔබේ ආරම්භක කොටස් වලට වඩා අවදානමකින් තොරව සීඑෆ්ඩී වල උඩු යටිකුරු කරන්න.", + "-1638358352": "<0>ගුණක සමඟ ඔබේ මූලික කොටස්වලට වඩා වැඩි යමක් අවදානමට ලක් නොකර CFD හි වාසිය ලබා ගන්න.", "-749129977": "සැබෑ Deriv ගිණුමක් ලබා ගන්න, ගනුදෙනු ආරම්භ කර ඔබේ අරමුදල් කළමනාකරණය කරන්න.", "-1814994113": "CFD <0>{{compare_accounts_title}}", "-318106501": "කෘත්‍රිම​ දර්ශක, බාස්කට් සහ ව්‍යුත්පන්න FX සමඟ MT5 මත CFD ගනුදෙනු කරන්න.", "-1328701106": "Forex, කොටස්, කොටස් දර්ශක, කෘත්‍රිම​ දර්ශක, ක්‍රිප්ටෝ මුදල්, සහ වෙළඳ භාණ්ඩ​ සමඟ MT5 මත CFD ගනුදෙනු කරන්න.", "-1173266642": "මෙම ගිණුම විශේෂාංගවලින් පොහොසත් ගනුදෙනු වේදිකාවක් මත CFD පිරිනමයි.", "-1290112064": "EZ", - "-1453519913": "ඔබගේ සියලු ප්රියතම වත්කම් සමඟ පහසුවෙන් ආරම්භ කළ හැකි වේදිකාවක් මත CFDs වෙළඳාම් කරන්න.", + "-1453519913": "ඔබේ සියලු ප්‍රියතම වත්කම් සමඟ, ආරම්භ කිරීමට පහසු වේදිකාවක් මත CFD ගනුදෙනු කරන්න.", "-2051096382": "<0>විකල්ප සමඟ වෙළඳපල චලනයන් නිවැරදිව පුරෝකථනය කිරීමෙන් ගෙවීම් පරාසයක් උපයා ගන්න, නැතහොත්\n <1>ගුණක සමඟ ඔබේ ආරම්භක කොටස්වලට වඩා අවදානමකින් තොරව CFD වල ප්‍රතිලාභ ලබා ගන්න.", "-2146691203": "නියාමනය තෝරා ගැනීම", "-249184528": "ඔබට යුරෝපා සංගම් හෝ යුරෝපා සංගම් නොවන නියාමනය යටතේ සැබෑ ගිණුම් නිර්මාණය කළ හැකිය. <0>මෙම ගිණුම් පිළිබඳ වැඩිදුර දැන ගැනීමට<0/> අයිකනය ක්ලික් කරන්න.", @@ -2644,7 +2639,7 @@ "-275902914": "Ethereum හි Tether (eUSDT)", "-1188009792": "ඔම්නි ස්ථරය මත ටෙතර් (USDT)", "-1239329687": "ටෙතර් මුලින් නිර්මාණය කරන ලද්දේ බිට්කොයින් ජාලය එහි ප්රවාහන ප්රොටෝකෝලය ලෙස භාවිතා කිරීම සඳහා වන අතර විශේෂයෙන් ඔම්නි ස්ථරය සාම්ප්රදායික මුදල් ගනුදෙනු කිරීමට ඉඩ දීම සඳහා ය.", - "-314177745": "අවාසනාවකට මෙන්, අපගේ සේවාදායකය පහළ වූ බැවින් අපට ලිපිනය ලබා ගත නොහැක. කරුණාකර ලිපිනය නැවත පූරණය කිරීමට Refresh ක්ලික් කරන්න හෝ පසුව නැවත උත්සාහ කරන්න.", + "-314177745": "අවාසනාවකට, අපගේ සේවාදායකය ක්‍රියා විරහිත වූ බැවින් අපට ලිපිනය ලබා ගැනීමට නොහැකි විය. කරුණාකර ලිපිනය නැවත පූරණය කිරීමට 'නැවුම් කරන්න' ක්ලික් කරන්න හෝ පසුව නැවත උත්සාහ කරන්න.", "-1068036170": "ඔබගේ ඩෙරිව් ෆියට් සහ {{platform_name_mt5}} ගිණුම් අතර සහ ඔබේ ඩෙරිව් ෆියට් සහ ගිණුම් {{platform_name_dxtrade}} ක් අතර එකම මුදලකින් මාරුවීම් සඳහා හුවමාරු ගාස්තුවක් අය නොකරමු.", "-2056016338": "ඔබගේ ඩෙරිව් ෆියට් සහ {{platform_name_mt5}} ගිණුම් අතර එකම මුදලකින් මාරුවීම් සඳහා හුවමාරු ගාස්තුවක් අය නොකෙරේ.", "-599632330": "ඔබගේ ඩෙරිව් ෆියට් සහ {{platform_name_mt5}} ගිණුම් අතර සහ ඔබේ ඩෙරිව් ෆියට් සහ ගිණුම් {{platform_name_dxtrade}} ක් අතර විවිධ මුදල් වල මාරුවීම් සඳහා අපි 1% හුවමාරු ගාස්තුවක් අය කරන්නෙමු.", @@ -2658,7 +2653,7 @@ "-1747571263": "සමහර මාරුවීම් කළ නොහැකි බව කරුණාකර මතක තබා ගන්න.", "-757062699": "ඉහළ අස්ථායීතාව හෝ තාක්ෂණික ගැටලු සහ හුවමාරුව වෙළඳපල වසා ඇති විට ස්ථාන මාරු ලබා ගත නොහැක.", "-1866405488": "CTrader ගිණුම් ලබා ගැනීම", - "-1344870129": "ගිණුම් ලබා", + "-1344870129": "Deriv ගිණුම්", "-1156059326": "ඔබට ඇත {{number}} හුවමාරුව අද සඳහා ඉතිරිව ඇත.", "-1109729546": "ඔබගේ ලිපිනය සත්යාපනය කළ පසු MT5 ගිණුම් සහ වෙනත් ගිණුම් අතර අරමුදල් මාරු කිරීමට ඔබට හැකි වේ.", "-1593609508": "ඩෙරිව් හි ඔබගේ ගිණුම් අතර මාරු කරන්න", @@ -2859,6 +2854,30 @@ "-1016171176": "වත්කම", "-621128676": "ගනුදෙනු වර්ගය", "-447853970": "පාඩු සීමාව", + "-155173714": "අපි බොට් එකක් හදමු!", + "-1919212468": "3. ඔබට කාණ්ඩවලට ඉහළින් ඇති සෙවුම් තීරුව භාවිතා කර ඔබට අවශ්‍ය කොටස් සෙවිය හැකිය.", + "-1520558271": "වැඩි විස්තර සඳහා, ගනුදෙනු බොට් එකක් තැනීමේ මූලික කරුණු පිළිබඳ මෙම බ්ලොග් සටහන බලන්න.", + "-980360663": "ඔබට අවශ්‍ය කොටස තෝරා එය වැඩබිමට ඇද දමන්න.", + "-1493168314": "ඉක්මන් උපාය මාර්ගයක් යනු කුමක්ද?", + "-1680391945": "ඉක්මන් උපාය මාර්ගයක් භාවිතා කිරීම", + "-1177914473": "මම​ මගේ උපාය මාර්ගය සුරකින්නේ කෙසේද?", + "-271986909": "බොට් ගොඩනඟන්නා තුළ, ඔබේ බොට් එක​ බා ගත කර ගැනීමට​ ඉහළින් ඇති මෙවලම් තීරුවේ සුරකින්න ඔබන්න. ඔබේ බොට් හට​ නමක් ලබා දී, ඔබේ උපාංගයට හෝ Google Drive වෙත ඔබේ බොට් එක​ බා ගත කර ගැනීම තෝරන්න. ඔබේ බොට් XML ගොනුවක් ලෙස බාගත​ වනු ඇත​.", + "-1149045595": "1. පහර පසු ආයාත, තෝරා පළාත් ක්ලික් කරන්න ඉදිරියට.", + "-288041546": "2. ඔබගේ XML ගොනුව තෝරාගෙන විවෘත කරන්න.", + "-2127548288": "3. ඔබේ බොට් එක ඒ අනුව පටවනු ලැබේ.", + "-1311297611": "1. ආයාතපහර පසු, තෝරා Google Drive ක්ලික් කරන්න ඉදිරියට.", + "-1549564044": "වැඩබිම නැවත සකසන්නේ කෙසේද?", + "-1127331928": "තුළ Bot Builder, ඉහළින් ඇති මෙවලම් තීරුවේ යළි පිහිටුවන්න පහර දෙන්න. මෙය වැඩබිම ඉවත් කරනු ඇත. නොගැලවූ ඕනෑම වෙනස්කම් නැති වනු ඇති බව කරුණාවෙන් සලකන්න.", + "-1720444288": "Deriv බොට් සමඟ මගේ පාඩු පාලනය කරන්නේ කෙසේද?", + "-1142295124": "Deriv බොට් සමඟ ඔබේ අලාභය​ පාලනය කිරීමට ක්‍රම කිහිපයක් තිබේ. ඔබේ උපාය මාර්ගය තුළ ඔබට අලාභ පාලනය ක්‍රියාත්මක කළ හැකි ආකාරය පිළිබඳ සරල උදාහරණයක් මෙන්න:", + "-986689483": "1. පහත සඳහන් විචල්‍යය සාදන්න:", + "-269910127": "3. පසුගිය ගිවිසුමේ ලාභය සමඟින් වත්මන් ලාභය/අලාභය යාවත්කාලීන කරන්න. අවසාන ගිවිසුම දිනා ගැනීමට නොහැකි වුවහොත්, වත්මන් ලාභය/අලාභය හි අගය සෘණ වනු ඇත.", + "-1565344891": "මගේ වෙබ් බ්රව්සරයේ බහු ටැබ් මත ඩෙරිව් බොට් ධාවනය කළ හැකිද?", + "-90192474": "ඔව්, ඔබට පුළුවන්. කෙසේ වෙතත්, ඔබගේ ගිණුමේ සීමාවන් තිබේ, එනම් උපරිම විවෘත තනතුරු ගණන සහ විවෘත තනතුරු සඳහා උපරිම සමස්ත ගෙවීම් වැනි. එබැවින්, විවිධ තනතුරු විවෘත කිරීමේදී මෙම සීමාවන් මතකයේ තබා ගන්න. ඔබට මෙම සීමාවන් පිළිබඳ වැඩි විස්තර සොයාගත හැකිය සැකසීම්> ගිණුම් සීමාවන්.", + "-213872712": "නැත, අපි ඩෙරිව් බොට් හි ගුප්තකේතන මුදල් ලබා නොදෙන්නෙමු.", + "-2147346223": "Deriv බොට් තිබෙන්නේ කුමන රටවලද?", + "-352345777": "ස්වයංක්‍රීය ගනුදෙනු සඳහා වඩාත් ජනප්‍රිය උපාය මාර්ග මොනවාද?", + "-552392096": "ස්වයංක්රීය වෙළඳාමේ බහුලව භාවිතා වන උපාය මාර්ග තුනක් වන්නේ මාටින්ගේල්, ඩි ඇලෙම්බර්ට් සහ ඔස්කාර්ගේ ග්රින්ඩ් ය - ඔබට ඒවා සියල්ලම සූදානම් කර ඩෙරිව් බොට් හි ඔබ එනතුරු බලා සිටිය හැකිය.", "-507620484": "නොගැලවීම", "-764102808": "ගූගල් ඩ්රයිව්", "-555886064": "දිනයි", @@ -2937,30 +2956,6 @@ "-1823621139": "ඉක්මන් උපාය", "-1778025545": "ඔබ සාර්ථකව බොට් එකක් ආනයනය කර ඇත.", "-1519425996": "ප්‍රතිඵල සොයාගත නොහැකි විය \"{{ faq_search_value }}”", - "-155173714": "අපි බොට් එකක් හදමු!", - "-1919212468": "3. ඔබට කාණ්ඩවලට ඉහළින් ඇති සෙවුම් තීරුව භාවිතා කර ඔබට අවශ්‍ය කොටස් සෙවිය හැකිය.", - "-1520558271": "වැඩි විස්තර සඳහා, ගනුදෙනු බොට් එකක් තැනීමේ මූලික කරුණු පිළිබඳ මෙම බ්ලොග් සටහන බලන්න.", - "-980360663": "ඔබට අවශ්‍ය කොටස තෝරා එය වැඩබිමට ඇද දමන්න.", - "-1493168314": "ඉක්මන් උපාය මාර්ගයක් යනු කුමක්ද?", - "-1680391945": "ඉක්මන් උපාය මාර්ගයක් භාවිතා කිරීම", - "-1177914473": "මම​ මගේ උපාය මාර්ගය සුරකින්නේ කෙසේද?", - "-271986909": "බොට් ගොඩනඟන්නා තුළ, ඔබේ බොට් එක​ බා ගත කර ගැනීමට​ ඉහළින් ඇති මෙවලම් තීරුවේ සුරකින්න ඔබන්න. ඔබේ බොට් හට​ නමක් ලබා දී, ඔබේ උපාංගයට හෝ Google Drive වෙත ඔබේ බොට් එක​ බා ගත කර ගැනීම තෝරන්න. ඔබේ බොට් XML ගොනුවක් ලෙස බාගත​ වනු ඇත​.", - "-1149045595": "1. පහර පසු ආයාත, තෝරා පළාත් ක්ලික් කරන්න ඉදිරියට.", - "-288041546": "2. ඔබගේ XML ගොනුව තෝරාගෙන විවෘත කරන්න.", - "-2127548288": "3. ඔබේ බොට් එක ඒ අනුව පටවනු ලැබේ.", - "-1311297611": "1. ආයාතපහර පසු, තෝරා Google Drive ක්ලික් කරන්න ඉදිරියට.", - "-1549564044": "වැඩබිම නැවත සකසන්නේ කෙසේද?", - "-1127331928": "තුළ Bot Builder, ඉහළින් ඇති මෙවලම් තීරුවේ යළි පිහිටුවන්න පහර දෙන්න. මෙය වැඩබිම ඉවත් කරනු ඇත. නොගැලවූ ඕනෑම වෙනස්කම් නැති වනු ඇති බව කරුණාවෙන් සලකන්න.", - "-1720444288": "Deriv බොට් සමඟ මගේ පාඩු පාලනය කරන්නේ කෙසේද?", - "-1142295124": "Deriv බොට් සමඟ ඔබේ අලාභය​ පාලනය කිරීමට ක්‍රම කිහිපයක් තිබේ. ඔබේ උපාය මාර්ගය තුළ ඔබට අලාභ පාලනය ක්‍රියාත්මක කළ හැකි ආකාරය පිළිබඳ සරල උදාහරණයක් මෙන්න:", - "-986689483": "1. පහත සඳහන් විචල්‍යය සාදන්න:", - "-269910127": "3. පසුගිය ගිවිසුමේ ලාභය සමඟින් වත්මන් ලාභය/අලාභය යාවත්කාලීන කරන්න. අවසාන ගිවිසුම දිනා ගැනීමට නොහැකි වුවහොත්, වත්මන් ලාභය/අලාභය හි අගය සෘණ වනු ඇත.", - "-1565344891": "මගේ වෙබ් බ්රව්සරයේ බහු ටැබ් මත ඩෙරිව් බොට් ධාවනය කළ හැකිද?", - "-90192474": "ඔව්, ඔබට පුළුවන්. කෙසේ වෙතත්, ඔබගේ ගිණුමේ සීමාවන් තිබේ, එනම් උපරිම විවෘත තනතුරු ගණන සහ විවෘත තනතුරු සඳහා උපරිම සමස්ත ගෙවීම් වැනි. එබැවින්, විවිධ තනතුරු විවෘත කිරීමේදී මෙම සීමාවන් මතකයේ තබා ගන්න. ඔබට මෙම සීමාවන් පිළිබඳ වැඩි විස්තර සොයාගත හැකිය සැකසීම්> ගිණුම් සීමාවන්.", - "-213872712": "නැත, අපි ඩෙරිව් බොට් හි ගුප්තකේතන මුදල් ලබා නොදෙන්නෙමු.", - "-2147346223": "Deriv බොට් තිබෙන්නේ කුමන රටවලද?", - "-352345777": "ස්වයංක්‍රීය ගනුදෙනු සඳහා වඩාත් ජනප්‍රිය උපාය මාර්ග මොනවාද?", - "-552392096": "ස්වයංක්රීය වෙළඳාමේ බහුලව භාවිතා වන උපාය මාර්ග තුනක් වන්නේ මාටින්ගේල්, ඩි ඇලෙම්බර්ට් සහ ඔස්කාර්ගේ ග්රින්ඩ් ය - ඔබට ඒවා සියල්ලම සූදානම් කර ඩෙරිව් බොට් හි ඔබ එනතුරු බලා සිටිය හැකිය.", "-418247251": "ඔබේ ජර්නලය බාගන්න.", "-2123571162": "බාගත", "-870004399": "<0>මිලදී ගත්: {{longcode}} (ID: {{transaction_id}})", @@ -3055,7 +3050,7 @@ "-823349637": "ට්රස්ට්නියමු වෙත යන්න", "-1204063440": "මගේ ගිණුම් මුදල් සකසන්න", "-1601813176": "ඔබේ දෛනික සීමාවන් {{max_daily_buy}} {{currency}} (මිලදී ගැනීම) සහ {{max_daily_sell}} {{currency}} (විකිණීම) දක්වා වැඩි කිරීමට ඔබ කැමතිද?", - "-1751632759": "<0>{{platform_name_go}} යෙදුම සමඟ වේගවත් ජංගම වෙළඳ අත්දැකීමක් ලබා ගන්න!", + "-1751632759": "<0>{{platform_name_go}} යෙදුම සමඟ වේගවත් ජංගම ගනුදෙනු අත්දැකීමක් ලබා ගන්න!", "-1164554246": "ඔබ කල් ඉකුත් වූ හඳුනාගැනීමේ ලේඛන ඉදිරිපත් කළා", "-219846634": "ඔබගේ හැඳුනුම්පත සත්යාපනය කරමු", "-529038107": "ස්ථාපනය", @@ -3125,7 +3120,6 @@ "-650505513": "සම්පූර්ණ තිරය", "-1823504435": "දැනුම්දීම් බලන්න", "-1954045170": "මුදල් පවරා නැත", - "-583559763": "මෙනු", "-1591792668": "ගිණුම් සීමාවන්", "-34495732": "නියාමන තොරතුරු", "-1496158755": "Deriv.com වෙත යන්න", @@ -3161,8 +3155,8 @@ "-1041852744": "අපි ඔබේ පුද්ගලික තොරතුරු සකසනවා", "-1775006840": "වෙළඳාම ආරම්භ කිරීම සඳහා දැන් තැන්පතුවක් කරන්න.", "-983734304": "ඔබට වෙළඳාම ආරම්භ කිරීමට පෙර ඔබගේ අනන්යතාවය සහ ලිපිනය පිළිබඳ සාක්ෂි අපට අවශ්ය වේ.", - "-917733293": "වෙළඳාම ලබා ගැනීම සඳහා කරුණාකර ඔබ ජීවත් වන ස්ථානය තහවුරු කරන්න.", - "-1282628163": "සත්යාපනය සම්පූර්ණ වූ වහාම ඔබට වෙළඳාම ලබා ගත හැකිය.", + "-917733293": "ගනුදෙනු ආරම්භ කිරීම සඳහා කරුණාකර ඔබ ජීවත් වන ස්ථානය තහවුරු කරන්න.", + "-1282628163": "සත්‍යාපනය සම්පූර්ණ වූ වහාම ඔබට ගනුදෙනු කිරීමට හැකි වනු ඇත.", "-952649119": "පුරනය වන්න", "-3815578": "ලියාපදිංචි වන්න", "-1456176427": "ඔබගේ සැබෑ ගිණුම සඳහා මුදල් සකසන්න", @@ -3257,13 +3251,14 @@ "-1500907666": "<0>ඈ. තීරණය අපගේ පක්ෂව ලබා දී තිබේ නම්, ඔබ තීරණය කරන විට දින 7 ක් ඇතුළත අප වෙනුවෙන් නිදහස් ලබා දිය යුතු අතර, පැමිණිල්ල වසා සලකා බලනු ලැබේ.", "-429248139": "5. වගකීමෙන් යුතුව ඔබ එවන", "-818926350": "මූල්ය කොමිෂන් සභාව සිද්ධිය වූ දිනට පසු දින 45 ක් සඳහා අභියාචනා භාර ගන්නා අතර වෙළෙන්දා සමාගම සමඟ ගැටළුව කෙලින්ම විසඳීමට උත්සාහ කිරීමෙන් පසුව පමණි.", - "-1825471709": "බලවත් නමුත් භාවිතයට පහසු වේදිකාවක් මත නව ගනුදෙනු අත්දැකීමක්.", - "-981017278": "ඔබේ ඇඟිලි තුඩුවල ස්වයංක්‍රීය ගනුදෙනු. කේතීකරණ අවශ්‍ය නොවේ.", + "-1825471709": "බලවත් එහෙත් භාවිතයට පහසු වේදිකාවක් මත නව ගනුදෙනු අත්දැකීමක්.", + "-981017278": "ස්වයංක්‍රීය ගනුදෙනු ඔබේ අත ළඟටම. කේතීකරණ අවශ්‍ය නොවේ.", + "-583559763": "මෙනු", "-778309978": "ඔබ ක්ලික් කළ සබැඳිය කල් ඉකුත් වී ඇත. ඔබේ එන ලිපි තුළ ඇති නවතම ඊ-තැපෑලෙහි ඇති සබැඳිය ක්ලික් කළ බවට සහතික වන්න. විකල්පයක් ලෙස, ඔබේ ඊ-තැපෑල පහතින් ඇතුළු කර නව සබැඳියක් සඳහා <0>යළි ඊ-තැපෑලක් එවන්න ක්ලික් කරන්න.", "-336222114": "එය නිවැරදි කිරීමට මෙම සරල පියවර අනුගමනය කරන්න:", "-1064116456": "<0>ඩෙරිව් හෝල්ඩින්ග්ස් (ගුවර්න්සි) ලිමිටඩ් තැරැව්කරු සඳහා සොයන්න එය තෝරන්න.", "-941870889": "මුදල් අයකැමි සැබෑ ගිණුම් සඳහා පමණි", - "-352838513": "ඔබට සැබෑ {{regulation}} ගිණුමක් නොමැති බව පෙනේ. මුදල් අයකැමි භාවිතා කිරීම සඳහා, ඔබගේ {{active_real_regulation}} සැබෑ ගිණුමට මාරු වන්න, නැතහොත් {{regulation}} සැබෑ ගිණුමක් ලබා ගන්න.", + "-352838513": "ඔබට සැබෑ {{regulation}} ගිණුමක් නොමැති බව පෙනේ. අයකැමි භාවිත කිරීමට, ඔබේ {{active_real_regulation}} සැබෑ ගිණුමට මාරු වන්න, නැතහොත් සැබෑ {{regulation}} ගිණුමක් ලබා ගන්න.", "-1858915164": "සැබෑ ලෙස තැන්පත් කිරීමට සහ ගනුදෙනු කිරීමට සූදානම් ද?", "-162753510": "සැබෑ ගිණුමක් එක් කරන්න", "-1208519001": "අයකැමි වෙත ප්‍රවේශ වීමට ඔබට සැබෑ Deriv ගිණුමක් අවශ්‍ය වේ.", @@ -3349,7 +3344,7 @@ "-1385484963": "ඔබේ {{platform}} මුරපදය වෙනස් කිරීමට තහවුරු කරන්න", "-1990902270": "මෙය ඔබේ සියලුම {{platform}} ගිණුම් සඳහා මුරපදය වෙනස් කරනු ඇත.", "-1922462747": "Trader's Hub", - "-700260448": "නිරූපණය", + "-700260448": "ආදර්ශන​ ගිණුම", "-1769158315": "සැබෑ", "-2015785957": "CFD {{demo_title}} ගිණුම් සසඳන්න", "-673424733": "ආදර්ශන ගිණුම", @@ -3375,7 +3370,7 @@ "-490244964": "Forex, කොටස්, කොටස් දර්ශක, ක්‍රිප්ටෝ මුදල්", "-1368041210": ", කෘත්‍රිම​ දර්ශක", "-877064208": "EUR", - "-1284221303": "ඔබගේ ගිණුමේ ශේෂය නැවතුම් මට්ටමට ආසන්නව පහත වැටේ නම්, ආන්තික ඇමතුම් ලෙස හැඳින්වෙන අනතුරු ඇඟවීමක් ඔබට ලැබෙනු ඇත.", + "-1284221303": "ඔබේ ගිණුමේ ශේෂය stop out මට්ටමට ආසන්න වුවහොත්, ඔබට ආන්තික ඇමතුමක් ලෙසින් හැඳින්වෙන අනතුරු ඇඟවීමක් ලැබෙනු ඇත.", "-1848799829": "තේරුම් ගැනීමට සිදු නතර, පළමු ඔබ ඔබේ කොටස් අනුපාතය වන ආන්තිකය මට්ටම ගැන ඉගෙන ගැනීමට අවශ්‍ය (ඔබ එම මොහොතේ දී ඔබගේ සියලු තනතුරු වසා නම් ඔබට ඇති මුළු ශේෂය) ඔබ මේ මොහොතේ භාවිතා කරන්නේ ආන්තිකය කිරීමට. ඔබගේ ආන්තික මට්ටම අපගේ නැවතුම් මට්ටමට වඩා පහත වැටුණහොත්, තවදුරටත් පාඩු වලින් ඔබව ආරක්ෂා කිරීම සඳහා ඔබේ ස්ථාන ස්වයංක්‍රීය වසා දැමිය හැකිය.", "-224051432": "24/7", "-1318070255": "EUR/GBP", @@ -3415,28 +3410,12 @@ "-1282933308": "{{barrier}}නොවේ", "-968190634": "සමාන {{barrier}}", "-1747377543": "{{barrier}}යටතේ", - "-256210543": "මෙම අවස්ථාවේදී ගනුදෙනු ලබා ගත නොහැක.", - "-1150099396": "අපි ඉක්මනින් ඔබ වෙනුවෙන් මෙම ලබා ගත හැකි කිරීමට කටයුතු කරනවා. ඔබට වෙනත් ගිණුමක් තිබේ නම්, ගනුදෙනු දිගටම කරගෙන යාමට එම ගිණුමට මාරු වන්න. ඔබට Deriv MT5 මූල්‍ය එකතු කළ හැකිය.", - "-28115241": "{{platform_name_trader}} මෙම ගිණුම සඳහා ලබා ගත නොහැක", - "-453920758": "{{platform_name_mt5}} උපකරණ පුවරුව වෙත යන්න", - "-402175529": "ඉතිහාසය", - "-902712434": "ගනුදෙනුව අවලංගු කිරීම", - "-988484646": "ගනුදෙනුව අවලංගු කිරීම (ක්‍රියාත්මක කරන ලද)", - "-444882676": "ගනුදෙනුව අවලංගු කිරීම (ක්‍රියාකාරී)", - "-13423018": "යොමු හැඳුනුම්පත", - "-2035315547": "පහළ බාධකය", - "-1551639437": "ඉතිහාසයක් නැත", - "-1214703885": "ඔබ තවමත් යාවත්කාලීන කර ඇත්තේ ලාභය ලබා ගැනීම හෝ පාඩුව නැවැත්වීම", - "-504849554": "එය නැවත විවෘත වේ", - "-59803288": "මේ අතරතුර, අපගේ කෘත්‍රිම​ දර්ශක උත්සාහ කරන්න. ඒවා සැබෑ වෙළඳපල අස්ථාවරත්වය අනුකරණය කරන අතර සතියේ දින 7ම, පැය 24 පුරා විවෘතව පවතී.", - "-1278109940": "විවෘත වෙළඳපොලවල් බලන්න", - "-694105443": "මෙම වෙළඳපොළ වසා ඇත", - "-1043795232": "මෑත කාලීන තනතුරු", - "-1511825574": "ලාභය/අඞු කිරීමට:", + "-1043795232": "මෑත කාලීන ස්ථාන", + "-1511825574": "ලාභය/අලාභය:", "-726626679": "විභව ලාභය/අලාභය:", - "-338379841": "දර්ශක මිල:", + "-338379841": "ප්‍රතීයමාන මිල:", "-1572796316": "මිලදී ගැනීමේ මිල:", - "-447037544": "මිල:", + "-447037544": "ගැනුම් මිල:", "-1694314813": "ගිවිසුම් වටිනාකම:", "-153220091": "{{display_value}} ටික්", "-802374032": "පැය", @@ -3455,21 +3434,15 @@ "-1435392215": "ගනුදෙනු අවලංගු කිරීම ගැන", "-2017825013": "තේරුම් ගත්තා", "-1192773792": "මෙය නැවත පෙන්වන්න එපා", + "-902712434": "ගනුදෙනුව අවලංගු කිරීම", "-1280319153": "තෝරාගත් කාල රාමුවක් තුළ ඕනෑම වේලාවක ඔබේ ගනුදෙනුව ස්වයංක්‍රීය අවලංගු කරන්න. තෝරාගත් කාල රාමුව තුළ ඔබේ ගනුදෙනුව නැවතුම් මට්ටමට ළඟා වුවහොත් ස්වයංක්‍රීයව ක්‍රියාරම්භ වේ.", "-471757681": "අවදානම් කළමනාකරණය", "-843831637": "පාඩුව නවත්වන්න", "-771725194": "ගනුදෙනුව අවලංගු කිරීම", "-338707425": "අවම කාලය දින 1 කි", "-1003473648": "කාල සීමාව: දින {{duration}}", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "කල් ඉකුත් වීමේ දී ගෙවීම අවසාන මිල සහ වැඩ වර්ජන මිල අතර වෙනස මගින් ගුණ කරන ලක්ෂ්‍යයකට ගෙවීමකට සමාන වේ.", "-1527492178": "අගුලු දමා මිලදී", "-725375562": "සැකසුම් මෙනුවෙන් ඔබට මිලදී ගැනීමේ බොත්තම අගුළු ඇරීමට/අගුළු ඇරීමට හැකිය", - "-774638412": "කොටස් {{min_stake}} {{currency}} සහ {{max_stake}} {{currency}} අතර විය යුතුය", - "-1358367903": "කොටස", - "-434270664": "වත්මන් මිල", - "-1956787775": "බාධක මිල:", - "-1513281069": "2 වන බාධකය", "-390994177": "{{min}} සහ {{max}} අතර විය යුතුය", "-1804019534": "කල් ඉකුත්වන දිනය: {{date}}", "-2055106024": "උසස් සහ සරල කාලසීමා සැකසුම් අතර ටොගල් කරන්න", @@ -3484,6 +3457,7 @@ "-1763848396": "Put", "-194424366": "ඉහළින්", "-857660728": "වර්ජන මිල", + "-1358367903": "කොටස", "-1386326276": "බාධකය යනු අවශ්‍ය ක්ෂේත්‍රයකි.", "-1418742026": "ඉහළ බාධකයක් පහළ බාධකයට වඩා වැඩි විය යුතුය.", "-92007689": "පහළ බාධකය ඉහළ බාධකයට වඩා අඩු විය යුතුය.", @@ -3491,6 +3465,21 @@ "-1975910372": "මිනිත්තු 0 ත් 59 ත් අතර විය යුතුය.", "-866277689": "කල් ඉකුත්වන කාලය අතීතයේ විය නොහැක.", "-1455298001": "දැන්", + "-256210543": "මෙම අවස්ථාවේදී ගනුදෙනු ලබා ගත නොහැක.", + "-1150099396": "අපි ඉක්මනින් ඔබ වෙනුවෙන් මෙම ලබා ගත හැකි කිරීමට කටයුතු කරනවා. ඔබට වෙනත් ගිණුමක් තිබේ නම්, ගනුදෙනු දිගටම කරගෙන යාමට එම ගිණුමට මාරු වන්න. ඔබට Deriv MT5 මූල්‍ය එකතු කළ හැකිය.", + "-28115241": "{{platform_name_trader}} මෙම ගිණුම සඳහා ලබා ගත නොහැක", + "-453920758": "{{platform_name_mt5}} උපකරණ පුවරුව වෙත යන්න", + "-402175529": "ඉතිහාසය", + "-988484646": "ගනුදෙනුව අවලංගු කිරීම (ක්‍රියාත්මක කරන ලද)", + "-444882676": "ගනුදෙනුව අවලංගු කිරීම (ක්‍රියාකාරී)", + "-13423018": "යොමු හැඳුනුම්පත", + "-2035315547": "පහළ බාධකය", + "-1551639437": "ඉතිහාසයක් නැත", + "-1214703885": "ඔබ තවමත් යාවත්කාලීන කර ඇත්තේ ලාභය ලබා ගැනීම හෝ පාඩුව නැවැත්වීම", + "-504849554": "එය නැවත විවෘත වේ", + "-59803288": "මේ අතරතුර, අපගේ කෘත්‍රිම​ දර්ශක උත්සාහ කරන්න. ඒවා සැබෑ වෙළඳපල අස්ථාවරත්වය අනුකරණය කරන අතර සතියේ දින 7ම, පැය 24 පුරා විවෘතව පවතී.", + "-1278109940": "විවෘත වෙළඳපොලවල් බලන්න", + "-694105443": "මෙම වෙළඳපොළ වසා ඇත", "-439389714": "අපි එය මත වැඩ කරනවා", "-770929448": "{{platform_name_smarttrader}} වෙත යන්න", "-347156282": "සාක්ෂය ඉදිරිපත් කරන්න", @@ -3537,9 +3526,11 @@ "-454245976": "නිශ්චිත කාලයක් සඳහා වෙළඳපල මිල අඛණ්ඩව පහත වැටෙනු ඇතැයි ඔබ සිතන්නේ නම්, <0>කෙටි තෝරන්න. වෙළඳපල මිල බාධකයට ඉහළින් හෝ හරස් නොවන්නේ නම් කල් ඉකුත් වන විට ඔබට ගෙවීමක් ලැබෙනු ඇත. බාධකය උල්ලං is නය නොකළහොත් ඔබේ ගෙවීම වෙළඳපල මිල සහ බාධකය අතර දුරට සමානුපාතිකව වර්ධනය වේ. ගෙවීම ඔබේ කොටුවට වඩා වැඩි වූ විට ඔබ ලාභයක් ලබා ගැනීමට පටන් ගනී. වෙළඳපල මිල කවදා හෝ බාධකය තරණය කරන්නේ නම්, ගෙවීමක් සිදු නොවේ.", "-351875097": "සලකුණු ගණන", "-729830082": "අඩු බලන්න", + "-1669741470": "කල් ඉකුත් වීමේ දී ගෙවීම අවසාන මිල සහ වැඩ වර්ජන මිල අතර වෙනස මගින් ගුණ කරන ලක්ෂ්‍යයකට ගෙවීමකට සමාන වේ.", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "අලුත්!", "-993480898": "ඇකියුමිලේටර", - "-45873457": "නව", + "-45873457": "අලුත්", "-1422269966": "ඔබට 1%, 2%, 3%, 4% සහ 5% අගයන් සහිත වර්ධන වේගයක් තෝරාගත හැක.", "-1186791513": "ගෙවීම යනු ඔබේ මූලික කොටස් සහ ලාභයේ එකතුවයි.", "-1682624802": "එය පෙර ස්ථාන මිලෙහි ප්‍රතිශතයකි. ප්‍රතිශත අනුපාතය පදනම් වන්නේ ඔබේ තේරීමේ දර්ශකය සහ වර්ධන වේගය මතය.", @@ -3557,8 +3548,12 @@ "-690963898": "ඔබගේ ගෙවීම මෙම මුදල කරා ළඟා වූ විට ඔබේ ගිවිසුම ස්වයංක්‍රීයව වසා දැමෙනු ඇත.", "-511541916": "මෙම සලකුණු ගණනට ළඟා වූ පසු ඔබේ ගිවිසුම ස්වයංක්‍රීයව වසා දමනු ඇත.", "-438655760": "<0>සටහන: ඔබට ඕනෑම වේලාවක ඔබේ වෙළඳාම වසා දැමිය හැකිය. ලිස්සා යාමේ අවදානම ගැන සැලකිලිමත් වන්න.", + "-774638412": "කොටස් {{min_stake}} {{currency}} සහ {{max_stake}} {{currency}} අතර විය යුතුය", + "-434270664": "වත්මන් මිල", + "-1956787775": "බාධක මිල:", + "-1513281069": "2 වන බාධකය", "-1683683754": "දිග", - "-1046859144": "<0>{{title}} වෙළඳපල මිල {{price_position}} ක් පවතින්නේ නම් සහ බාධකය ස්පර්ශ නොකරන්නේ නම් ඔබට ගෙවීමක් ලැබෙනු ඇත. එසේ නොමැතිනම්, ඔබගේ ගෙවීම ශුන්ය වනු ඇත.", + "-1046859144": "<0>{{title}} වෙළඳපල මිල {{price_position}} මට්ටමක පවතී නම් සහ බාධකය ස්පර්ශ නොකළහොත් හෝ තරණය නොකරන්නේ නම් ඔබට ගෙවීමක් ලැබෙනු ඇත. එසේ නොමැතිනම්, ඔබේ ගෙවීම ශුන්‍ය වනු ඇත.", "-1815023694": "බාධකයට ඉහළින්", "-243332856": "නවතම 1000 කිනිතුල්ලන් සඳහා {{ underlying_name }}සඳහා අවසාන ඉලක්කම් සංඛ්යාන", "-1572548510": "Ups සහ Downs", diff --git a/packages/translations/src/translations/th.json b/packages/translations/src/translations/th.json index be8fd912162c..92365ca72d0e 100644 --- a/packages/translations/src/translations/th.json +++ b/packages/translations/src/translations/th.json @@ -24,7 +24,6 @@ "27731356": "บัญชีของคุณถูกปิดใช้งานชั่วคราว โปรดติดต่อเราผ่านทาง <0>แชทสด เพื่อเปิดใช้งานการฝากและถอนเงินได้อีกครั้ง", "27830635": "บริษัท Deriv (V) Ltd", "28581045": "เพิ่มบัญชี MT5 จริง", - "30801950": "บัญชีของคุณจะถูกเปิดโดย {{legal_entity_name}} ซึ่งได้รับการควบคุมโดย Malta Gaming Authority และจะอยู่ภายใต้กฎหมายของประเทศมอลตา", "33433576": "กรุณาใช้อีวอลเล็ทเพื่อถอนเงินของคุณ", "35089987": "โปรดอัพโหลดใบขับขี่ของคุณทั้งด้านหน้าและด้านหลัง", "41737927": "ขอบคุณ", @@ -251,7 +250,6 @@ "284772879": "สัญญา", "284809500": "บัญชีทดลอง Financial", "287934290": "คุณแน่ใจหรือว่าต้องการยกเลิกธุรกรรมนี้?", - "289898640": "ข้อตกลงในการใช้งาน", "291744889": "<0>1. พารามิเตอร์การซื้อขาย:<0>", "291817757": "ไปที่ชุมชน Deriv ของเราและเรียนรู้เกี่ยวกับ APIs, API tokens, วิธีการใช้ Deriv API และอื่นๆ", "292491635": "หากคุณเลือก “ตัวหยุดการขาดทุนหรือ Stop Loss” และระบุจำนวนเงินเพื่อจำกัดการสูญเสียของคุณ ตำแหน่งการค้าของคุณจะถูกปิดโดยอัตโนมัติเมื่อการขาดทุนของคุณมีค่ามากกว่าหรือเท่ากับจำนวนที่ระบุนี้ ทั้งนี้ การขาดทุนของคุณอาจมากกว่าจำนวนเงินที่ระบุไว้โดยขึ้นอยู่กับราคาตลาด ณ เวลาที่ปิดสัญญา", @@ -372,6 +370,7 @@ "427134581": "ให้ลองใช้ไฟล์ประเภทอื่น", "427617266": "Bitcoin", "428709688": "ระยะห่างเวลาในระหว่างแต่ละรายงานตามที่คุณต้องการ:", + "429970999": "To avoid delays, enter your <0>name exactly as it appears on your {{document_name}}.", "431267979": "นี่คือคำแนะนำฉบับย่อสำหรับการใช้ Deriv Bot ในระหว่างการเดินทาง", "432273174": "1:100", "432508385": "ตัวปิดเทรดเอากำไร: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. คลิกคำสั่ง Run เมื่อเริ่มใช้งาน", "520136698": "ดัชนี Boom 500", "521872670": "รายการ", - "522283618": "ประสบการณ์การซื้อขายตราสารสิทธิดิจิทัล", "522703281": "แบ่งออกได้โดย", "523123321": "- 10 ยกกำลังของตัวเลขที่กำหนดให้มา", "524459540": "สร้างตัวแปรระบบได้อย่างไร?", @@ -562,7 +560,6 @@ "642546661": "อัปโหลดด้านหลังใบขับขี่จากคอมพิวเตอร์ของคุณ", "642995056": "อีเมล์", "644150241": "จำนวนสัญญาที่คุณทำกำไรได้มาตั้งแต่การล้างสถิติครั้งล่าสุดของคุณ", - "645016681": "ความถี่ในการซื้อขายในตราสารทางการเงินอื่นๆ", "645902266": "EUR/NZD", "647039329": "โปรดส่งเอกสารหลักฐานยืนยันที่อยู่ของคุณ", "647745382": "ลิสต์รายการข้อมูลที่นำเข้า {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "ราคาสปอต ณ จุด Tick อันก่อนหน้า", "812775047": "อยู่ต่ำกว่าเส้นระดับราคาเป้าหมาย", "814827314": "ระดับตัวยุติการซื้อขายบนกราฟนั้นแสดงราคาในจุดที่มูลค่าการขาดทุนที่อาจจะเกิดขึ้นของคุณนั้นเท่ากับเงินทุนทรัพย์ทั้งหมดของคุณ ดังนั้นเมื่อราคาตลาดมาถึงระดับนี้ ตำแหน่งการค้าของคุณจะถูกปิดอัตโนมัติ ซึ่งนี่ช่วยให้มั่นใจได้ว่า การขาดทุนของคุณจะไม่เกินจำนวนเงินที่คุณจ่ายไปเพื่อซื้อสัญญา", + "814936420": "{{ banner_message }}", "815925952": "บล็อกนี้ต้องมีอยู่ตามข้อบังคับ อนุญาตให้คัดลอกบล็อกนี้ได้หนึ่งชุดเท่านั้น โดยจะวางไว้บนพื้นที่ทำงานตามค่าเริ่มต้นเมื่อคุณเปิด Deriv Bot", "816580787": "ยินดีต้อนรับการกลับมา! ข้อความของคุณได้รับการกู้คืนแล้ว", "816738009": "<0/><1/> คุณสามารถแจ้งข้อพิพาทที่ยังไม่ถูกแก้ไขของคุณได้ที่ <2>Office of the Arbiter for Financial Services", @@ -747,7 +745,6 @@ "836097457": "ฉันสนใจในการเทรดแต่ฉันมีประสบการณ์น้อยมาก", "837063385": "โปรดอย่าส่งสกุลเงินอื่นๆ ไปยังที่อยู่นี้", "837066896": "เอกสารของคุณกำลังอยู่ระหว่างการพิจารณา โปรดตรวจสอบอีกครั้งใน 1-3 วัน", - "839618971": "ที่อยู่", "839805709": "เราต้องได้ภาพถ่ายที่ดีกว่านี้ของคุณเพื่อการยืนยันตัวตนที่ราบรื่น", "840672750": "หากวิธีนี้ไม่ได้ผล ให้ถอนการติดตั้งแล้วทำการติดตั้งแอป MT5 ใหม่อีกครั้ง จากนั้นให้ทำซ้ำขั้นตอนที่ <0>2 และ <0>3", "841434703": "ปิดการใช้งาน stack", @@ -965,6 +962,7 @@ "1061308507": "ซื้อ {{ contract_type }}", "1062423382": "ดูวิดีโอแนะนำและคำถามที่พบบ่อยเพื่อสร้างบอทของคุณได้ในแท็บบทช่วยสอน", "1062536855": "ให้เท่ากัน", + "1062569830": "The <0>name on your identity document doesn't match your profile.", "1065275078": "cTrader มีให้บริการบนเดสก์ท็อปสำหรับตอนนี้เท่านั้น", "1065353420": "110+", "1065498209": "กระบวนการทำซ้ำ (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3. ตั้งค่าพารามิเตอร์การซื้อขายของคุณและกด เรียกใช้", "1174748431": "ช่องทางชำระเงิน", "1175183064": "วานูอาตู", - "1176926166": "ประสบการณ์ในการซื้อขายตราสารทางการเงินอื่นๆ", "1177396776": "หากคุณเลือก \"Asian Fall\" คุณจะได้รับเงินผลตอบแทนต่อเมื่อมูลค่าของจุด Tick สุดท้ายนั้นต่ำกว่าค่าเฉลี่ยของจุด Tick ทั้งหมดในช่วงเวลาสัญญา", "1177723589": "ไม่มีธุรกรรมที่จะแสดง", "1178582280": "จำนวนสัญญาที่คุณขาดทุนนับตั้งแต่การล้างสถิติครั้งล่าสุดของคุณ", @@ -1150,6 +1147,7 @@ "1255963623": "ถึงวันที่/เวลา {{ input_timestamp }} {{ dummy }}", "1258097139": "เราจะปรับปรุงพัฒนาอะไรได้บ้าง?", "1258198117": "เชิงบวก", + "1259145708": "Let’s try again. Choose another document and enter the corresponding details.", "1259598687": "GBP/JPY", "1260259925": "โทรศัพท์ไม่ได้อยู่ในรูปแบบที่ถูกต้อง", "1263387702": "บัญชีทั้ง {{count}} ประเภทใช้การดำเนินการด้วยราคาตลาด (market execution) ซึ่งหมายความว่า คุณเห็นด้วยล่วงหน้ากับราคาของโบรกเกอร์และจะยื่นคําสั่งซื้อขายตามราคาของโบรกเกอร์", @@ -1173,7 +1171,6 @@ "1289146554": "องค์กร British Virgin Islands Financial Services Commission", "1289646209": "การเรียกหลักประกัน", "1290525720": "ตัวอย่าง: ", - "1291887623": "ความถี่ในการซื้อขายตราสารสิทธิดิจิทัล", "1291997417": "สัญญาจะหมดอายุในเวลา 23:59:59 GMT ของวันหมดอายุที่คุณได้เลือกไว้", "1292188546": "ตั้งรหัสผ่านนักลงทุน Deriv MT5 ใหม่", "1292891860": "ส่งข้อความแจ้ง Telegram", @@ -1257,7 +1254,6 @@ "1367023655": "เพื่อให้แน่ใจว่าการขาดทุนจะไม่เกินจำนวนเงินทุนทรัพย์ของคุณ สัญญาการเทรดของคุณจะถูกปิดอัตโนมัติเมื่อการขาดทุนของคุณเท่ากับ <0/>", "1367488817": "4. เริ่มเงื่อนไขการซื้อขายใหม่อีกครั้ง", "1367990698": "ดัชนีความผันผวน 10", - "1369709538": "ข้อกําหนดการใช้งานของเรา", "1370647009": "เพลิดเพลินไปกับขีดจำกัดรายวันที่สูงขึ้น", "1371193412": "ยกเลิก", "1371555192": "เลือกตัวแทนรับชำระเงินที่คุณต้องการแล้วป้อนจำนวนเงินที่คุณจะถอน หากว่าตัวแทนชำระเงินของคุณไม่อยู่ในลิสต์รายการ <0>ให้ค้นหาตัวแทนดังกล่าวโดยใช้หมายเลขบัญชีของพวกเขา", @@ -1297,6 +1293,7 @@ "1413047745": "กำหนดค่าที่ให้มาให้กับตัวแปร", "1413359359": "ทำการโอนครั้งใหม่", "1414205271": "เลขเฉพาะ", + "1414918420": "We'll review your proof of identity again and will give you an update as soon as possible.", "1415006332": "รับลิสต์รายการย่อยจาก", "1415513655": "ดาวน์โหลด cTrader ไว้ในโทรศัพท์ของคุณเพื่อทำการเทรดด้วยบัญชี Deriv cTrader", "1415974522": "หากคุณเลือก \"ต่างกันหรือ Differs\" คุณจะได้รับเงินผลตอบแทนก็ต่อเมื่อตัวเลขหลักสุดท้ายของค่าจุด Tick ตัวสุดท้ายนั้นมีค่าต่างไปจากค่าที่คุณคาดการณ์ไว้", @@ -1419,7 +1416,6 @@ "1542742708": "สินทรัพย์สังเคราะห์ Forex หุ้น ดัชนีหุ้น สินค้าโภคภัณฑ์ และคริปโตเคอเรนซี่", "1544642951": "หากคุณเลือก \"ขึ้นเท่านั้นหรือ Only Ups\" คุณจะได้รับเงินผลตอบแทนก็ต่อเมื่อช่วงค่า Tick ที่อยู่ติดๆ กันขยับสูงขึ้นอย่างต่อเนื่องหลังจากจุดเข้า แต่คุณจะไม่ได้รับเงินผลตอบแทนหากว่าค่า Tick อันหนึ่งอันใดมีค่าลดลงจากหรือเท่ากับค่า Tick ตัวก่อนหน้านั้น", "1547148381": "ไฟล์นั้นใหญ่เกินไป (อนุญาตได้ไม่เกิน 8MB) กรุณาอัปโหลดไฟล์อื่น", - "1548765374": "การตรวจสอบยืนยันหมายเลขเอกสารล้มเหลว", "1549098835": "ยอดถอนเงินทั้งหมด", "1551172020": "ตะกร้า AUD", "1552162519": "ดูการสอนเริ่มต้นใช้งาน", @@ -1647,6 +1643,7 @@ "1790770969": "สกุลเงินหลัก (ล็อตมาตรฐาน/ไมโครล็อต) สกุลเงินรอง หุ้นโภคภัณฑ์ คริปโตเคอเรนซี่", "1791432284": "ค้นหาประเทศ", "1791971912": "ล่าสุด", + "1792037169": "To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your {{document_name}}.", "1793913365": "เพื่อทำการฝากเงิน โปรดสลับไปยังบัญชี {{currency_symbol}} ของคุณ", "1794815502": "ดาวน์โหลดประวัติการทำธุรกรรมของคุณ", "1796787905": "กรุณาอัปโหลดเอกสารดังต่อไปนี้", @@ -1792,7 +1789,6 @@ "1924765698": "สถานที่เกิด*", "1926987784": "- iOS: ปัดไปทางซ้ายบนบัญชีและแตะ <0>ลบ", "1928930389": "GBP/NOK", - "1929309951": "สถานะการจ้างงาน", "1929694162": "เปรียบเทียบบัญชี", "1930899934": "เงินดิจิทัล Tether", "1931659123": "ใช้กับทุกจุด Tick", @@ -1966,12 +1962,12 @@ "2115223095": "ขาดทุน", "2117165122": "1. สร้างบอทเทเลแกรมและรับโทเคน API เทเลแกรมของคุณ อ่านเพิ่มเติมเกี่ยวกับวิธีการสร้างบอทในเทเลแกรมได้ที่นี่: https://core.telegram.org/bots#6-botfather", "2117489390": "อัปเดตอัตโนมัติภายใน {{ remaining }} วินาที", - "2118315870": "คุณอาศัยอยู่ที่ไหน?", "2119449126": "ตัวอย่างผลลัพธ์ของตัวอย่างด้านล่างจะเป็น:", "2119710534": "คำถามที่พบบ่อย", "2121227568": "NEO/USD", "2122152120": "สินทรัพย์", "2127564856": "การถอนเงินถูกล็อค", + "2129807378": "Update profile", "2131963005": "โปรดถอนเงินของคุณจากบัญชี Deriv MT5 (เดี่ยวหรือหลายบัญชี) ดังต่อไปนี้:", "2133451414": "ระยะเวลา", "2133470627": "บล็อกนี้คืนค่าเป็นเงินผลตอบแทนประมาณการสำหรับประเภทการเทรดที่เลือกไว้ และสามารถใช้ได้เฉพาะในรูทบล็อก \"เงื่อนไขการซื้อ\"", @@ -1992,8 +1988,6 @@ "2146698770": "เคล็ดลับมือโปร: คุณยังคลิกและลากบล็อกที่ต้องการออกมาได้", "2146892766": "ประสบการณ์การซื้อขายไบนารีออปชัน", "2147244655": "ฉันจะนำเข้าบอทเทรดของฉันเองลงใน Deriv Bot ได้อย่างไร?", - "-1232613003": "<0>การตรวจสอบยืนยันล้มเหลว <1>เพราะอะไร?", - "-2029508615": "<0>ต้องมีการตรวจสอบยืนยัน<1>ตรวจสอบยืนยันตอนนี้", "-931052769": "ส่งการตรวจสอบยืนยัน", "-1004605898": "เคล็ดลับ", "-1938142055": "เอกสารถูกอัปโหลดแล้ว", @@ -2141,18 +2135,9 @@ "-179726573": "เราได้รับหลักฐานการเป็นเจ้าของของคุณแล้ว", "-813779897": "ผ่านการตรวจสอบยืนยันการเป็นเจ้าของแล้ว", "-638756912": "ขีดทับตัวเลขหลักที่ 7 ถึง 12 ของหมายเลขบัตรที่แสดงอยู่ด้านหน้าบัตรเดบิต/เครดิตของคุณ⁤", - "-2073934245": "บริการซื้อขายทางการเงินที่นำเสนอในเว็บไซต์นี้เหมาะเฉพาะสำหรับลูกค้าที่ยอมรับความเป็นไปได้ของการขาดทุนเงินทั้งหมดที่พวกเขาลงทุนไปและผู้ที่มีความเข้าใจและมีประสบการณ์เกี่ยวกับความเสี่ยงที่เกี่ยวข้องกับการซื้อสัญญาทางการเงินเท่านั้น การทำธุรกรรมในสัญญาทางการเงินมีความเสี่ยงสูง หากสัญญาที่คุณซื้อหมดอายุคุณก็จะสูญเสียเงินลงทุนทั้งหมดซึ่งรวมถึงค่าธรรมเนียมของสัญญาดังกล่าวด้วย", - "-1166068675": "บัญชีของคุณจะถูกเปิดกับ {{legal_entity_name}} ซึ่งถูกควบคุมดูแลโดยคณะกรรมการการพนันแห่งสหราชอาณาจักรหรือ UK Gaming Commission (UKGC) และจะอยู่ภายใต้กฎหมายของเกาะไอล์ออฟแมน", - "-975118358": "บัญชีของคุณจะเปิดขึ้นกับ {{legal_entity_name}} ซึ่งถูกควบคุมดูแลโดยองค์กร Malta Financial Services Authority (MFSA) และจะอยู่ภายใต้กฎหมายของมอลตา", - "-680528873": "บัญชีของคุณจะถูกเปิดขึ้นกับ {{legal_entity_name}} และจะอยู่ภายใต้กฎหมายของรัฐเอกราชซามัว", - "-1125193491": "เพิ่มบัญชี", - "-2068229627": "ฉันไม่ใช่บุคคลที่มีสถานภาพทางการเมืองหรือ PEP และฉันไม่ได้เป็น PEP ในช่วง 12 เดือนที่ผ่านมา", "-684271315": "OK", "-740157281": "การประเมินประสบการณ์การเทรด", "-1720468017": "ในการให้บริการของเราแก่คุณ เราจำเป็นต้องได้รับข้อมูลจากคุณเพื่อประเมินว่าผลิตภัณฑ์หรือบริการนั้นเหมาะสมกับคุณหรือไม่", - "-186841084": "เปลี่ยนอีเมล์ที่ใช้เข้าสู่ระบบของคุณ", - "-907403572": "หากคุณต้องการเปลี่ยนที่อยู่อีเมล์ ประการแรกคุณจะต้องยกเลิกการเชื่อมโยงที่อยู่อีเมล์ของคุณจากบัญชี {{identifier_title}} เสียก่อน", - "-1850792730": "ยกเลิกการเชื่อมโยงจาก {{identifier_title}}", "-307865807": "การเตือนถึงความเสี่ยงที่ยอมรับได้", "-690100729": "ใช่ ฉันเข้าใจถึงความเสี่ยง", "-2010628430": "CFDs และตราสารทางการเงินอื่นๆ มีความเสี่ยงสูงที่จะสูญเสียเงินอย่างรวดเร็วเนื่องจากเลเวอเรจคุณควรพิจารณาว่าคุณเข้าใจวิธีการทำงานของ CFDs และตราสารทางการเงินอื่นๆ หรือไม่และคุณจะรับความเสี่ยงสูงในการสูญเสียเงินของคุณได้หรือไม่<0/><0/> เพื่อดำเนินการต่อ คุณต้องยืนยันว่าคุณเข้าใจว่าเงินทุนของคุณมีความเสี่ยง", @@ -2206,11 +2191,6 @@ "-1725454783": "ล้มเหลว", "-506510414": "วันที่และเวลา", "-1708927037": "หมายเลขประจำเครื่องคอมพิวเตอร์", - "-619126443": "ใช้ <0>รหัสผ่าน Deriv เพื่อเข้าสู่ระบบ {{brand_website_name}} และ {{platform_name_trader}}", - "-623760979": "ใช้ <0>รหัสผ่าน Deriv เพื่อเข้าสู่ระบบ {{brand_website_name}}, {{platform_name_trader}} และ {{platform_name_go}}", - "-459147994": "ใช้ <0>รหัสผ่าน Deriv เพื่อเข้าสู่ระบบ {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} และ {{platform_name_ctrader}}.", - "-80717068": "แอปพลิเคชั่นที่คุณเชื่อมโยงเข้ากับ <0>รหัสผ่าน Deriv: ของคุณ", - "-9570380": "ให้ใช้รหัสผ่าน {{platform_name_dxtrade}} เพื่อเข้าใช้บัญชี {{platform_name_dxtrade}} ของคุณบนเว็บและแอปมือถือ", "-2131200819": "ปิดใช้งาน", "-200487676": "เปิดใช้งาน", "-1840392236": "นั่นไม่ใช่รหัสที่ถูกต้อง โปรดลองอีกครั้ง", @@ -2240,44 +2220,37 @@ "-378415317": "โปรดระบุรัฐ", "-1497654315": "บัญชีและบริการของเราไม่สามารถใช้ได้สำหรับรหัสไปรษณีย์ Jersey", "-755626951": "กรอกรายละเอียดที่อยู่ของคุณ", - "-584911871": "เลือกสกุลเงินในกระเป๋าเงินอิเล็กทรอนิกส์", "-1461267236": "โปรดเลือกสกุลเงินของคุณ", - "-1352330125": "สกุลเงิน", "-1027595143": "น้อยกว่า $25,000", "-40491332": "$25,000 - $50,000", "-1139806939": "$50,001 - $100,000", - "-626752657": "0-1 ปี", - "-532014689": "1-2 ปี", - "-1001024004": "มากกว่า 3 ปี", - "-790513277": "มี 6-10 ธุรกรรมใน 12 เดือนที่ผ่านมา", - "-580085300": "มี 11-39 ธุรกรรมใน 12 เดือนที่ผ่านมา", - "-654781670": "ระดับประถมศึกษา", - "-1717373258": "ระดับมัธยมศึกษา", "-996132458": "การก่อสร้าง", "-915003867": "สุขภาพ", "-1430012453": "เทคโนโลยีสารสนเทศและการสื่อสาร", "-987824916": "วิทยาศาสตร์และวิศวกรรม", "-146630682": "สังคมและวัฒนธรรม", "-761306973": "อุตสาหกรรมการผลิต", - "-739367071": "มีการประกอบอาชีพ", - "-1156937070": "$500,001 - $1,000,000", - "-315534569": "มากกว่า $1,000,000", - "-2068544539": "พนักงานที่ได้รับเงินเดือน", - "-531314998": "เงินลงทุนและเงินปันผล", - "-1235114522": "บำนาญ", - "-1298056749": "ผลประโยชน์ของรัฐ", - "-449943381": "เงินออม & มรดกตกทอด", "-1631552645": "ผู้เชี่ยวชาญ", "-474864470": "พนักงานดูแลด้านสุขภาพ พนักงานขาย และผู้ให้บริการต่างๆ", "-1129355784": "คนงานภาคเกษตรกรรม การป่าไม้ และการประมง", "-1242914994": "คนทำงานช่างฝีมือ งานโลหะ ไฟฟ้าและอิเล็กทรอนิกส์", "-1317824715": "พนักงานทำความสะอาดและผู้ช่วยทำงานบ้าน", "-1592729751": "คนงานเหมือง ก่อสร้าง อุตสาหกรรม และการขนส่ง", + "-1030759620": "ข้าราชการ", "-2137323480": "เจ้าของกิจการ", "-1590574533": "ข้อตกลงการหย่า", "-1667683002": "มรดกตกทอด", "-1237843731": "รายได้จากการลงทุน", "-777506574": "การขายทรัพย์สิน", + "-654781670": "ระดับประถมศึกษา", + "-1717373258": "ระดับมัธยมศึกษา", + "-1156937070": "$500,001 - $1,000,000", + "-315534569": "มากกว่า $1,000,000", + "-2068544539": "พนักงานที่ได้รับเงินเดือน", + "-531314998": "เงินลงทุนและเงินปันผล", + "-1235114522": "บำนาญ", + "-1298056749": "ผลประโยชน์ของรัฐ", + "-449943381": "เงินออม & มรดกตกทอด", "-1161338910": "โปรดระบุชื่อแรก", "-1161818065": "นามสกุลควรมีความยาวระหว่าง 2 ถึง 50 ตัวอักษร", "-1281693513": "โปรดระบุวันเกิด", @@ -2287,28 +2260,14 @@ "-212167954": "หมายเลขประจำตัวผู้เสียภาษีนั้นไม่อยู่ในรูปแบบที่ถูกต้อง", "-621555159": "ข้อมูลประจำตัว", "-204765990": "ข้อตกลงในการใช้งาน", - "-231863107": "ไม่ใช่", - "-870902742": "คุณมีความรู้และประสบการณ์เกี่ยวกับการซื้อขายออนไลน์มากน้อยเพียงใด", - "-1929477717": "ฉันมีวุฒิการศึกษา ประกาศนียบัตรวิชาชีพ และ/หรือประสบการณ์การทำงานที่เกี่ยวข้องกับบริการทางการเงิน", - "-1540148863": "ฉันได้เข้าร่วมการสัมนา ฝึกอบรม และ/หรือเวิร์กซ็อปที่เกี่ยวข้องกับการเทรด", - "-922751756": "น้อยกว่า 1 ปี", - "-542986255": "ไม่มี", - "-1337206552": "ตามความเข้าใจของคุณ การเทรด CFD ช่วยให้คุณ", - "-456863190": "วางตำแหน่งการค้าอิงการเคลื่อนไหวราคาสินทรัพย์ซึ่งจะให้ผลลัพธ์เป็นการที่จะได้ผลตอบแทนอันคงที่หรือการที่จะไม่ได้อะไรเลย", - "-1314683258": "ลงทุนระยะยาวเพื่อรับประกันผลกำไร", - "-1546090184": "เลเวเรจมีผลต่อการเทรด CFD อย่างไร", - "-1636427115": "เลเวเรจช่วยลดความเสี่ยง", - "-800221491": "เลเวเรจรับประกันผลกำไร", - "-811839563": "เลเวเรจช่วยให้คุณเปิดตำแหน่งการค้าขนาดใหญ่โดยใช้เพียงเศษเสี้ยวของมูลค่าการเทรดแท้จริง ซึ่งนี่ก็อาจส่งผลให้เกิดผลกำไรที่เพิ่มพูนหรือการขาดทุนที่เพิ่มขึ้น", - "-1185193552": "ปิดการซื้อขายของคุณโดยอัตโนมัติเมื่อการขาดทุนนั้นเท่ากับหรือมากกว่าจำนวนที่กำหนด ตราบใดที่มีสภาพคล่องในตลาดเพียงพอ", - "-1046354": "ปิดการซื้อขายของคุณโดยอัตโนมัติเมื่อผลกำไรนั้นเท่ากับหรือมากกว่าจำนวนที่กำหนด ตราบใดที่มีสภาพคล่องในตลาดเพียงพอ", - "-1842858448": "ทำผลกำไรที่รับประกันจากการเทรดของคุณ", - "-860053164": "เมื่อทำการเทรดตัวคูณต่างๆ", - "-1250327770": "เมื่อซื้อหุ้นต่างๆ ของบริษัท", - "-1222388581": "ทั้งหมดทุกข้อข้างต้น", "-477761028": "บัตรประจำตัวผู้มีสิทธิเลือกตั้ง", "-1466346630": "หมายเลขประจำตัวประชาชน CPF", - "-1030759620": "ข้าราชการ", + "-739367071": "มีการประกอบอาชีพ", + "-626752657": "0-1 ปี", + "-532014689": "1-2 ปี", + "-1001024004": "มากกว่า 3 ปี", + "-790513277": "มี 6-10 ธุรกรรมใน 12 เดือนที่ผ่านมา", + "-580085300": "มี 11-39 ธุรกรรมใน 12 เดือนที่ผ่านมา", "-612752984": "นี่คือข้อจำกัดตั้งต้นที่ใช้กับบัญชีของคุณ", "-1598263601": "หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับข้อจำกัดการซื้อขายและวิธีการใช้งาน โปรดไปที่ <0>ศูนย์ช่วยเหลือ", "-1411635770": "เรียนรู้เพิ่มเติมเกี่ยวกับขีดจำกัดบัญชี", @@ -2326,10 +2285,7 @@ "-1500958859": "ยืนยัน", "-1502578110": "บัญชีของคุณได้รับการยืนยันตัวตนอย่างสมบูรณ์ และวงเงินการถอนเงินของคุณได้ถูกยกเลิกแล้ว", "-1662154767": "ใบแจ้งหนี้ค่าสาธารณูปโภคล่าสุด (เช่น ไฟฟ้า น้ำ แก๊ส โทรศัพท์หรืออินเทอร์เน็ต) ใบแจ้งยอดบัญชีธนาคาร หรือจดหมายที่ออกโดยรัฐบาลที่แสดงชื่อของคุณและที่อยู่นี้", - "-190838815": "เราต้องการสิ่งนี้สำหรับการตรวจสอบยืนยัน หากข้อมูลที่คุณให้นั้นเป็นข้อมูลปลอมหรือไม่ถูกต้อง คุณจะไม่สามารถทำการฝากและถอนได้", - "-223216785": "บรรทัดที่สองของที่อยู่*", "-594456225": "บรรทัดที่สองของที่อยู่", - "-1940457555": "รหัสไปรษณีย์*", "-1964954030": "รหัสไปรษณีย์", "-516397235": "ระวังคนที่คุณแบ่งปันโทเคนนี้ด้วย เพราะใครก็ตามที่มีโทเคนนี้สามารถดำเนินการต่อไปนี้ในนามบัญชีของคุณได้", "-989216986": "เพิ่มบัญชี", @@ -2371,8 +2327,6 @@ "-1100235269": "อุตสาหกรรมการจ้างงาน", "-684388823": "ประมาณการรายได้สุทธิ", "-509054266": "ผลประกอบการประจําปีที่คาดการณ์เอาไว้", - "-601903492": "ประสบการณ์การซื้อขาย Forex", - "-1012699451": "ประสบการณ์การซื้อขาย CFD", "-1588485629": "ตัวอย่าง", "-1117345066": "เลือกประเภทเอกสาร", "-651192353": "ตัวอย่าง:", @@ -2393,18 +2347,21 @@ "-1944264183": "เพื่อดำเนินการซื้อขายต่อ คุณต้องส่งหลักฐานยืนยันตัวตน", "-1088324715": "เราจะตรวจสอบเอกสารของคุณและแจ้งให้ทราบถึงสถานะของเอกสารภายใน 1-3 วันทำการ", "-329713179": "ตกลง", - "-1176889260": "กรุณาเลือกประเภทเอกสาร", - "-1926456107": "ID ที่คุณส่งมานั้นหมดอายุแล้ว", - "-555047589": "ดูเหมือนว่าเอกสารระบุตัวตนของคุณหมดอายุแล้ว โปรดลองอีกครั้งด้วยเอกสารที่ถูกต้อง", - "-841187054": "ลองอีกครั้ง", + "-895884696": "The <0>name and <0>date of birth on your identity document don't match your profile.", + "-1792723131": "To avoid delays, enter your <0>date of birth exactly as it appears on your {{document_name}}.", + "-886317740": "The <0>date of birth on your identity document doesn't match your profile.", + "-1813671961": "Your identity verification failed because:", "-2097808873": "เราไม่สามารถตรวจสอบยืนยัน ID ของคุณด้วยรายละเอียดที่คุณให้มา ", - "-228284848": "เราไม่สามารถตรวจสอบยืนยัน ID ของคุณด้วยรายละเอียดที่คุณให้มา", + "-1652371224": "Your profile is updated", + "-504784172": "Your document has been submitted", "-1391934478": "ID ของคุณได้รับการยืนยันแล้ว คุณจะต้องส่งหลักฐานยืนยันที่อยู่ของคุณด้วย", "-118547687": "ผ่านการยืนยันตัวตนแล้ว", "-200989771": "ไปที่รายละเอียดส่วนบุคคล", "-1358357943": "โปรดตรวจสอบและอัปเดตรหัสไปรษณีย์ของคุณก่อนที่จะส่งหลักฐานแสดงตัวตน", "-1401994581": "รายละเอียดส่วนบุคคลของคุณหายไป", "-2004327866": "โปรดเลือกประเทศที่ออกเอกสารที่ถูกต้อง", + "-1627868670": "Your identity document has expired.", + "-1606307809": "We were unable to verify the identity document with the details provided.", "-1664159494": "ประเทศ", "-749870311": "กรุณาติดต่อเราผ่านทาง <0>แชทสด", "-1084991359": "ไม่จำเป็นต้องใช้หลักฐานยืนยันตัวตน", @@ -2464,21 +2421,54 @@ "-142444667": "โปรดกดที่ลิงก์ในอีเมล์เพื่อเปลี่ยนรหัส Deriv MT5 ของคุณ", "-742748008": "ตรวจสอบอีเมล์ของคุณและคลิกลิงก์ในอีเมล์เพื่อดำเนินการต่อ", "-84068414": "หากยังไม่ได้รับอีเมล์ โปรดติดต่อเราทาง <0>แชทสด", + "-975118358": "บัญชีของคุณจะเปิดขึ้นกับ {{legal_entity_name}} ซึ่งถูกควบคุมดูแลโดยองค์กร Malta Financial Services Authority (MFSA) และจะอยู่ภายใต้กฎหมายของมอลตา", + "-2073934245": "บริการซื้อขายทางการเงินที่นำเสนอในเว็บไซต์นี้เหมาะเฉพาะสำหรับลูกค้าที่ยอมรับความเป็นไปได้ของการขาดทุนเงินทั้งหมดที่พวกเขาลงทุนไปและผู้ที่มีความเข้าใจและมีประสบการณ์เกี่ยวกับความเสี่ยงที่เกี่ยวข้องกับการซื้อสัญญาทางการเงินเท่านั้น การทำธุรกรรมในสัญญาทางการเงินมีความเสี่ยงสูง หากสัญญาที่คุณซื้อหมดอายุคุณก็จะสูญเสียเงินลงทุนทั้งหมดซึ่งรวมถึงค่าธรรมเนียมของสัญญาดังกล่าวด้วย", + "-1125193491": "เพิ่มบัญชี", + "-2068229627": "ฉันไม่ใช่บุคคลที่มีสถานภาพทางการเมืองหรือ PEP และฉันไม่ได้เป็น PEP ในช่วง 12 เดือนที่ผ่านมา", + "-186841084": "เปลี่ยนอีเมล์ที่ใช้เข้าสู่ระบบของคุณ", + "-907403572": "หากคุณต้องการเปลี่ยนที่อยู่อีเมล์ ประการแรกคุณจะต้องยกเลิกการเชื่อมโยงที่อยู่อีเมล์ของคุณจากบัญชี {{identifier_title}} เสียก่อน", + "-1850792730": "ยกเลิกการเชื่อมโยงจาก {{identifier_title}}", "-428335668": "คุณจะต้องตั้งรหัสผ่านเพื่อให้กระบวนการเสร็จสมบูรณ์", + "-1232613003": "<0>การตรวจสอบยืนยันล้มเหลว <1>เพราะอะไร?", + "-2029508615": "<0>ต้องมีการตรวจสอบยืนยัน<1>ตรวจสอบยืนยันตอนนี้", "-818898181": "ชื่อในเอกสารไม่ตรงกับในโปรไฟล์ Deriv ของคุณ", "-310316375": "ที่อยู่ในเอกสารไม่ตรงกับที่อยู่ที่คุณป้อนข้างต้น", "-485368404": "เอกสารที่ออกมานานมากกว่า 6 เดือนที่ผ่านมา", "-367016488": "เอกสารเบลอ ข้อมูลทั้งหมดต้องมีความชัดเจนและมองเห็นได้ชัด", "-1957076143": "เอกสารที่ถูกครอปตัดบางส่วน ข้อมูลทั้งหมดต้องมีความชัดเจนและมองเห็นได้ชัด", + "-1576856758": "An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.", + "-231863107": "ไม่ใช่", + "-870902742": "คุณมีความรู้และประสบการณ์เกี่ยวกับการซื้อขายออนไลน์มากน้อยเพียงใด", + "-1929477717": "ฉันมีวุฒิการศึกษา ประกาศนียบัตรวิชาชีพ และ/หรือประสบการณ์การทำงานที่เกี่ยวข้องกับบริการทางการเงิน", + "-1540148863": "ฉันได้เข้าร่วมการสัมนา ฝึกอบรม และ/หรือเวิร์กซ็อปที่เกี่ยวข้องกับการเทรด", + "-922751756": "น้อยกว่า 1 ปี", + "-542986255": "ไม่มี", + "-1337206552": "ตามความเข้าใจของคุณ การเทรด CFD ช่วยให้คุณ", + "-456863190": "วางตำแหน่งการค้าอิงการเคลื่อนไหวราคาสินทรัพย์ซึ่งจะให้ผลลัพธ์เป็นการที่จะได้ผลตอบแทนอันคงที่หรือการที่จะไม่ได้อะไรเลย", + "-1314683258": "ลงทุนระยะยาวเพื่อรับประกันผลกำไร", + "-1546090184": "เลเวเรจมีผลต่อการเทรด CFD อย่างไร", + "-1636427115": "เลเวเรจช่วยลดความเสี่ยง", + "-800221491": "เลเวเรจรับประกันผลกำไร", + "-811839563": "เลเวเรจช่วยให้คุณเปิดตำแหน่งการค้าขนาดใหญ่โดยใช้เพียงเศษเสี้ยวของมูลค่าการเทรดแท้จริง ซึ่งนี่ก็อาจส่งผลให้เกิดผลกำไรที่เพิ่มพูนหรือการขาดทุนที่เพิ่มขึ้น", + "-1185193552": "ปิดการซื้อขายของคุณโดยอัตโนมัติเมื่อการขาดทุนนั้นเท่ากับหรือมากกว่าจำนวนที่กำหนด ตราบใดที่มีสภาพคล่องในตลาดเพียงพอ", + "-1046354": "ปิดการซื้อขายของคุณโดยอัตโนมัติเมื่อผลกำไรนั้นเท่ากับหรือมากกว่าจำนวนที่กำหนด ตราบใดที่มีสภาพคล่องในตลาดเพียงพอ", + "-1842858448": "ทำผลกำไรที่รับประกันจากการเทรดของคุณ", + "-860053164": "เมื่อทำการเทรดตัวคูณต่างๆ", + "-1250327770": "เมื่อซื้อหุ้นต่างๆ ของบริษัท", + "-1222388581": "ทั้งหมดทุกข้อข้างต้น", "-1515286538": "กรุณาใส่หมายเลขเอกสารของคุณ ", "-1694758788": "ป้อนหมายเลขเอกสารของคุณ", "-1458676679": "คุณควรป้อน 2-50 อักขระ", + "-1176889260": "กรุณาเลือกประเภทเอกสาร", + "-1265050949": "identity document", "-2139303636": "คุณอาจทำตามขั้นตอนลิงค์ที่ใช้งานไม่ได้ หรือเพจได้ย้ายไปยังที่อยู่ใหม่", "-1448368765": "รหัสข้อผิดพลาด {{error_code}} ไม่พบหน้าเว็บไซต์ที่คุณต้องการ", "-254792921": "คุณสามารถฝากเงินได้เท่านั้นในขณะนี้ หากต้องการเปิดใช้งานการถอนเงิน กรุณากรอกการประเมินทางการเงินของคุณให้เสร็จสมบูรณ์", "-1437017790": "ข้อมูลทางการเงิน", "-70342544": "เรามีหน้าที่ตามกฎหมายที่จะต้องขอข้อมูลทางการเงินของคุณ", "-39038029": "ประสบการณ์การซื้อขาย", + "-601903492": "ประสบการณ์การซื้อขาย Forex", + "-1012699451": "ประสบการณ์การซื้อขาย CFD", "-1894668798": "ประสบการณ์ซื้อขายตราสารทางการเงินอื่นๆ", "-1026468600": "ความถี่ในการซื้อขายตราสารทางการเงินอื่นๆ", "-1743024217": "เลือกภาษา", @@ -2489,6 +2479,11 @@ "-536187647": "ยืนยันการยกเลิกการเข้าถึง?", "-1357606534": "สิทธิ์", "-570222048": "การเพิกถอนการเข้าถึง", + "-80717068": "แอปพลิเคชั่นที่คุณเชื่อมโยงเข้ากับ <0>รหัสผ่าน Deriv: ของคุณ", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "ใช้ <0>รหัสผ่าน Deriv เพื่อเข้าสู่ระบบ {{brand_website_name}} และ {{platform_name_trader}}", + "-623760979": "ใช้ <0>รหัสผ่าน Deriv เพื่อเข้าสู่ระบบ {{brand_website_name}}, {{platform_name_trader}} และ {{platform_name_go}}", + "-459147994": "ใช้ <0>รหัสผ่าน Deriv เพื่อเข้าสู่ระบบ {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} และ {{platform_name_ctrader}}.", "-1526404112": "ใบแจ้งหนี้ค่าสาธารณูปโภค: ค่าไฟฟ้า ค่าน้ำ ค่าก๊าซ ค่าโทรศัพท์พื้นฐาน", "-537552700": "สัญญาเช่าบ้าน: ข้อตกลงที่ถูกต้องและเป็นปัจจุบัน", "-890084320": "บันทึกและส่ง", @@ -2859,6 +2854,30 @@ "-1016171176": "สินทรัพย์", "-621128676": "ประเภทการซื้อขาย", "-447853970": "เกณฑ์การขาดทุน", + "-155173714": "มาสร้างบอทกันเถอะ!", + "-1919212468": "3. คุณสามารถค้นหาบล็อกต่างๆ ที่ต้องการโดยการใช้แถบคำสั่งค้นหาที่อยู่ข้างบนหมวดหมู่ ", + "-1520558271": "สำหรับข้อมูลเพิ่มเติม เข้าดูบล็อกโพสต์นี้ ซึ่งเกี่ยวกับพื้นฐานการสร้างบอทซื้อขาย", + "-980360663": "3. เลือกบล็อกที่คุณต้องการแล้วลากไปยังพื้นที่ทำงาน", + "-1493168314": "กลยุทธ์ด่วนคืออะไร?", + "-1680391945": "การใช้กลยุทธ์ด่วน", + "-1177914473": "ฉันจะบันทึกกลยุทธ์ของฉันได้อย่างไร?", + "-271986909": "จากใน ตัวสร้างบอท ให้กดปุ่ม บันทึก บนแถบเครื่องมือที่ด้านบนเพื่อดาวน์โหลดบอทของคุณ ตั้งชื่อบอทนั้น แล้วเลือกดาวน์โหลดบอทนั้นลงในอุปกรณ์ของคุณหรือ Google Drive ทั้งนี้ บอทของคุณจะถูกดาวน์โหลดเป็นไฟล์ XML", + "-1149045595": "1. หลังจากกดปุ่ม นำเข้า เลือก ในเครื่อง แล้วคลิก ดำเนินการต่อ", + "-288041546": "2. เลือกไฟล์ XML ของคุณและกด เปิด", + "-2127548288": "3. บอทของคุณจะถูกโหลดตามนั้น", + "-1311297611": "1. หลังจากกดปุ่ม นำเข้า เลือก Google Drive แล้วคลิก ดำเนินการต่อ", + "-1549564044": "ทำการตั้งค่าพื้นที่ทำงานได้อย่างไร?", + "-1127331928": "ใน ตัวสร้างบอท กด รีเซ็ต บนแถบเครื่องมือที่ด้านบนเพื่อลบล้างพื้นที่ทำงาน โปรดทราบว่า การเปลี่ยนแปลงใดๆ ที่ไม่ได้บันทึกไว้จะหายไป", + "-1720444288": "ฉันจะควบคุมการขาดทุนด้วย Deriv Bot ได้อย่างไร?", + "-1142295124": "มีหลายวิธีที่จะควบคุมการขาดทุนของคุณด้วย Deriv Bot และต่อไปนี้คือตัวอย่างง่ายๆ ของวิธีที่คุณใช้การควบคุมการขาดทุนในกลยุทธ์ของคุณ:", + "-986689483": "1. สร้างตัวแปรดังต่อไปนี้:", + "-269910127": "3. อัปเดต กำไร/ขาดทุนปัจจุบัน ด้วยกำไรจากสัญญาครั้งล่าสุด หากสัญญานั้นขาดทุน ค่าของ กำไร/ขาดทุนปัจจุบัน จะเป็นค่าลบ", + "-1565344891": "ฉันสามารถเรียกใช้ Deriv Bot บนหลายๆ แท็บในเว็บเบราว์เซอร์ของฉันได้หรือไม่?", + "-90192474": "ใช่ คุณสามารถทำได้ แต่จะมีข้อจำกัดบางอย่างในบัญชีของคุณ เช่น จำนวนตำแหน่งการค้าที่เปิดได้สูงสุด และการจ่ายเงินรวมสูงสุดสำหรับตำแหน่งการค้าที่เปิดอยู่ ดังนั้นคุณเพียงต้องตระหนักถึงข้อจำกัดเหล่านี้ไว้ในใจเมื่อเปิดหลายตำแหน่งการค้าไว้ คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับข้อจำกัดเหล่านี้ได้ที่ การตั้งค่า > ขีดจำกัดของบัญชี", + "-213872712": "ไม่ เราไม่นำเสนอคริปโตเคอร์เรนซี่บน Deriv Bot", + "-2147346223": "Deriv Bot มีให้บริการในประเทศใดบ้าง?", + "-352345777": "กลยุทธ์ที่นิยมมากที่สุดสำหรับการซื้อขายอัตโนมัติคืออะไร?", + "-552392096": "สามกลยุทธ์ที่ใช้กันมากที่สุดในการซื้อขายแบบอัตโนมัติคือ กลยุทธ์มาติงเกล (Martingale) กลยุทธ์ดาล็องแบร์ (D'Alembert) และกลยุทธ์ออสการ์ กรินด์ (Oscar's Grind) ซึ่งคุณจะเจอสามกลยุทธ์รอคุณอยู่แล้วใน Deriv Bot", "-507620484": "ยังไม่ได้บันทึก", "-764102808": "Google Drive", "-555886064": "ชนะ", @@ -2937,30 +2956,6 @@ "-1823621139": "กลยุทธ์ด่วน", "-1778025545": "คุณนำเข้าบอทสำเร็จแล้ว", "-1519425996": "ไม่พบผลการค้นหา \"{{ faq_search_value }}”", - "-155173714": "มาสร้างบอทกันเถอะ!", - "-1919212468": "3. คุณสามารถค้นหาบล็อกต่างๆ ที่ต้องการโดยการใช้แถบคำสั่งค้นหาที่อยู่ข้างบนหมวดหมู่ ", - "-1520558271": "สำหรับข้อมูลเพิ่มเติม เข้าดูบล็อกโพสต์นี้ ซึ่งเกี่ยวกับพื้นฐานการสร้างบอทซื้อขาย", - "-980360663": "3. เลือกบล็อกที่คุณต้องการแล้วลากไปยังพื้นที่ทำงาน", - "-1493168314": "กลยุทธ์ด่วนคืออะไร?", - "-1680391945": "การใช้กลยุทธ์ด่วน", - "-1177914473": "ฉันจะบันทึกกลยุทธ์ของฉันได้อย่างไร?", - "-271986909": "จากใน ตัวสร้างบอท ให้กดปุ่ม บันทึก บนแถบเครื่องมือที่ด้านบนเพื่อดาวน์โหลดบอทของคุณ ตั้งชื่อบอทนั้น แล้วเลือกดาวน์โหลดบอทนั้นลงในอุปกรณ์ของคุณหรือ Google Drive ทั้งนี้ บอทของคุณจะถูกดาวน์โหลดเป็นไฟล์ XML", - "-1149045595": "1. หลังจากกดปุ่ม นำเข้า เลือก ในเครื่อง แล้วคลิก ดำเนินการต่อ", - "-288041546": "2. เลือกไฟล์ XML ของคุณและกด เปิด", - "-2127548288": "3. บอทของคุณจะถูกโหลดตามนั้น", - "-1311297611": "1. หลังจากกดปุ่ม นำเข้า เลือก Google Drive แล้วคลิก ดำเนินการต่อ", - "-1549564044": "ทำการตั้งค่าพื้นที่ทำงานได้อย่างไร?", - "-1127331928": "ใน ตัวสร้างบอท กด รีเซ็ต บนแถบเครื่องมือที่ด้านบนเพื่อลบล้างพื้นที่ทำงาน โปรดทราบว่า การเปลี่ยนแปลงใดๆ ที่ไม่ได้บันทึกไว้จะหายไป", - "-1720444288": "ฉันจะควบคุมการขาดทุนด้วย Deriv Bot ได้อย่างไร?", - "-1142295124": "มีหลายวิธีที่จะควบคุมการขาดทุนของคุณด้วย Deriv Bot และต่อไปนี้คือตัวอย่างง่ายๆ ของวิธีที่คุณใช้การควบคุมการขาดทุนในกลยุทธ์ของคุณ:", - "-986689483": "1. สร้างตัวแปรดังต่อไปนี้:", - "-269910127": "3. อัปเดต กำไร/ขาดทุนปัจจุบัน ด้วยกำไรจากสัญญาครั้งล่าสุด หากสัญญานั้นขาดทุน ค่าของ กำไร/ขาดทุนปัจจุบัน จะเป็นค่าลบ", - "-1565344891": "ฉันสามารถเรียกใช้ Deriv Bot บนหลายๆ แท็บในเว็บเบราว์เซอร์ของฉันได้หรือไม่?", - "-90192474": "ใช่ คุณสามารถทำได้ แต่จะมีข้อจำกัดบางอย่างในบัญชีของคุณ เช่น จำนวนตำแหน่งการค้าที่เปิดได้สูงสุด และการจ่ายเงินรวมสูงสุดสำหรับตำแหน่งการค้าที่เปิดอยู่ ดังนั้นคุณเพียงต้องตระหนักถึงข้อจำกัดเหล่านี้ไว้ในใจเมื่อเปิดหลายตำแหน่งการค้าไว้ คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับข้อจำกัดเหล่านี้ได้ที่ การตั้งค่า > ขีดจำกัดของบัญชี", - "-213872712": "ไม่ เราไม่นำเสนอคริปโตเคอร์เรนซี่บน Deriv Bot", - "-2147346223": "Deriv Bot มีให้บริการในประเทศใดบ้าง?", - "-352345777": "กลยุทธ์ที่นิยมมากที่สุดสำหรับการซื้อขายอัตโนมัติคืออะไร?", - "-552392096": "สามกลยุทธ์ที่ใช้กันมากที่สุดในการซื้อขายแบบอัตโนมัติคือ กลยุทธ์มาติงเกล (Martingale) กลยุทธ์ดาล็องแบร์ (D'Alembert) และกลยุทธ์ออสการ์ กรินด์ (Oscar's Grind) ซึ่งคุณจะเจอสามกลยุทธ์รอคุณอยู่แล้วใน Deriv Bot", "-418247251": "ดาวน์โหลดบันทึกรายละเอียดการเทรดของคุณ", "-2123571162": "ดาวน์โหลด", "-870004399": "<0>ซื้อ: {{longcode}} (ID: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "เต็มหน้าจอ", "-1823504435": "ดูการแจ้งเตือน", "-1954045170": "ไม่ได้กำหนดสกุลเงิน", - "-583559763": "เมนู", "-1591792668": "วงเงินในบัญชี", "-34495732": "ข้อมูลเกี่ยวกับกฎระเบียบ", "-1496158755": "ไปที่ Deriv.com", @@ -3259,6 +3253,7 @@ "-818926350": "คณะกรรมการทางการเงินยอมรับการอุทธรณ์ภายในเวลา 45 วันหลังจากวันที่เกิดเหตุการณ์ และต่อเมื่อภายหลังจากที่เทรดเดอร์ได้พยายามแก้ไขปัญหากับบริษัทโดยตรงแล้วเท่านั้น", "-1825471709": "ประสบการณ์แปลกใหม่ในการซื้อขายบนแพลตฟอร์มที่มีประสิทธิภาพสูงแต่ก็ยังใช้งานได้ง่าย", "-981017278": "ทำการซื้อขายอัตโนมัติเพียงปลายนิ้วสัมผัส โดยไม่ต้องเขียนชุดคำสั่งเอง", + "-583559763": "เมนู", "-778309978": "ลิงก์ที่คุณคลิกได้หมดอายุแล้ว โปรดตรวจดูให้แน่ใจว่าได้คลิกลิงก์ในอีเมล์อันล่าสุดในกล่องจดหมายของคุณหรือป้อนอีเมล์ของคุณที่ด้านล่างและคลิก <0>ส่งอีเมล์อีกครั้ง เพื่อขอลิงก์อันใหม่", "-336222114": "ปฏิบัติตามขั้นตอนง่ายๆ เหล่านี้เพื่อทำการแก้ไข:", "-1064116456": "ค้นหาโบรกเกอร์ <0>Deriv Holdings (Guernsey) Limited แล้วกดเลือกบริษัทนั้น", @@ -3415,22 +3410,6 @@ "-1282933308": "ไม่ใช่ {{barrier}}", "-968190634": "ให้เท่ากัน {{barrier}}", "-1747377543": "น้อยกว่า {{barrier}}", - "-256210543": "ไม่สามารถทำการซื้อขายได้ในขณะนี้", - "-1150099396": "เรากำลังดำเนินการเพื่อให้คุณใช้งานสิ่งนี้ได้เร็วๆ นี้ หากคุณมีบัญชีอื่นให้เปลี่ยนเป็นบัญชีนั้นเพื่อดำเนินการซื้อขายต่อไป คุณสามารถเพิ่มบัญชี Deriv MT5 Financial", - "-28115241": "{{platform_name_trader}} ไม่พร้อมใช้งานสำหรับบัญชีนี้", - "-453920758": "ไปที่หน้ากระดานของ {{platform_name_mt5}}", - "-402175529": "ประวัติ", - "-902712434": "การยกเลิกดีลข้อตกลง", - "-988484646": "การยกเลิกข้อตกลง (ดำเนินการแล้ว)", - "-444882676": "การยกเลิกดีลข้อตกลง (ใช้งานอยู่)", - "-13423018": "หมายเลขอ้างอิง", - "-2035315547": "เส้นระดับราคาเป้าหมายอันล่าง", - "-1551639437": "ไม่มีประวัติ", - "-1214703885": "คุณยังไม่ได้อัพเดตตัวปิดเทรดเอากำไรหรือตัวหยุดการขาดทุน", - "-504849554": "จะเปิดอีกครั้งเมื่อ", - "-59803288": "ในระหว่างนี้ มาลองใช้ดัชนีสังเคราะห์ของเราซึ่งจำลองความผันผวนของตลาดจริงและเปิดให้บริการตลอด 24 ชั่วโมงทุกวัน", - "-1278109940": "ดูตลาดที่เปิด", - "-694105443": "ตลาดนี้ปิดแล้ว", "-1043795232": "ตำแหน่งล่าสุด", "-1511825574": "กำไร/ขาดทุน:", "-726626679": "กำไร/ขาดทุนที่ถูกประมาณการ:", @@ -3455,21 +3434,15 @@ "-1435392215": "เกี่ยวกับการยกเลิกดีลข้อตกลง", "-2017825013": "รับทราบ", "-1192773792": "ไม่ต้องแสดงข้อความนี้อีก", + "-902712434": "การยกเลิกดีลข้อตกลง", "-1280319153": "ยกเลิกการซื้อขายของคุณได้ตลอดเวลาภายในกรอบเวลาที่เลือกไว้ โดยระบบจะทำงานอัตโนมัติหากการซื้อขายของคุณถึงระดับจุดยุติการซื้อขายหรือ stop out ภายในกรอบเวลาที่เลือกไว้", "-471757681": "การบริหารความเสี่ยง", "-843831637": "ตัวหยุดการขาดทุน", "-771725194": "การยกเลิกดีลข้อตกลง", "-338707425": "ระยะเวลาขั้นต่ำคือ 1 วัน", "-1003473648": "ระยะเวลา: {{duration}} วัน", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "เงินผลตอบแทน ณ เวลาหมดอายุนั้นจะเท่ากับการเอาเงินได้ต่อจุดพอยท์มาคูณด้วยส่วนต่างระหว่างราคาสุดท้ายและราคาใช้สิทธิ", "-1527492178": "ล็อกการซื้อ", "-725375562": "คุณสามารถล็อก/ปลดล็อกปุ่มซื้อได้จากเมนูการตั้งค่า", - "-774638412": "เงินทุนทรัพย์ต้องอยู่ระหว่าง {{min_stake}} {{currency}} และ {{max_stake}} {{currency}}", - "-1358367903": "ทุนทรัพย์", - "-434270664": "ราคาปัจจุบัน", - "-1956787775": "ราคาเส้นระดับเป้าหมาย:", - "-1513281069": "เส้นระดับราคาเป้าหมาย 2", "-390994177": "ควรอยู่ระหว่าง {{min}} ถึง {{max}}", "-1804019534": "เวลาหมดอายุ: {{date}}", "-2055106024": "สลับระหว่างการตั้งค่าระยะเวลาขั้นสูงและการตั้งค่าระยะเวลาแบบง่าย", @@ -3484,6 +3457,7 @@ "-1763848396": "Put", "-194424366": "ด้านบน", "-857660728": "ราคาใช้สิทธิ", + "-1358367903": "ทุนทรัพย์", "-1386326276": "โปรดระบุค่าเส้นระดับราคาเป้าหมายในช่อง", "-1418742026": "เส้นระดับราคาเป้าหมายอันบนต้องมีค่าสูงกว่าเส้นระดับราคาอันล่าง", "-92007689": "เส้นระดับราคาเป้าหมายอันล่างต้องมีค่าต่ำกว่าเส้นระดับราคาอันบน", @@ -3491,6 +3465,21 @@ "-1975910372": "นาทีต้องอยู่ระหว่าง 0 ถึง 59", "-866277689": "เวลาหมดอายุไม่สามารถเป็นช่วงเวลาในอดีตได้", "-1455298001": "ขณะนี้", + "-256210543": "ไม่สามารถทำการซื้อขายได้ในขณะนี้", + "-1150099396": "เรากำลังดำเนินการเพื่อให้คุณใช้งานสิ่งนี้ได้เร็วๆ นี้ หากคุณมีบัญชีอื่นให้เปลี่ยนเป็นบัญชีนั้นเพื่อดำเนินการซื้อขายต่อไป คุณสามารถเพิ่มบัญชี Deriv MT5 Financial", + "-28115241": "{{platform_name_trader}} ไม่พร้อมใช้งานสำหรับบัญชีนี้", + "-453920758": "ไปที่หน้ากระดานของ {{platform_name_mt5}}", + "-402175529": "ประวัติ", + "-988484646": "การยกเลิกข้อตกลง (ดำเนินการแล้ว)", + "-444882676": "การยกเลิกดีลข้อตกลง (ใช้งานอยู่)", + "-13423018": "หมายเลขอ้างอิง", + "-2035315547": "เส้นระดับราคาเป้าหมายอันล่าง", + "-1551639437": "ไม่มีประวัติ", + "-1214703885": "คุณยังไม่ได้อัพเดตตัวปิดเทรดเอากำไรหรือตัวหยุดการขาดทุน", + "-504849554": "จะเปิดอีกครั้งเมื่อ", + "-59803288": "ในระหว่างนี้ มาลองใช้ดัชนีสังเคราะห์ของเราซึ่งจำลองความผันผวนของตลาดจริงและเปิดให้บริการตลอด 24 ชั่วโมงทุกวัน", + "-1278109940": "ดูตลาดที่เปิด", + "-694105443": "ตลาดนี้ปิดแล้ว", "-439389714": "เรากำลังดำเนินการอยู่", "-770929448": "ไปที่ {{platform_name_smarttrader}}", "-347156282": "โปรดส่งหลักฐาน", @@ -3537,6 +3526,8 @@ "-454245976": "หากคุณคิดว่าราคาตลาดจะลดลงอย่างต่อเนื่องในช่วงเวลาหนึ่งๆ ให้เลือก <0>ขาย คุณจะได้รับเงินผลตอบแทนเมื่อสัญญาหมดอายุถ้าราคาตลาดไม่แตะหรือข้ามไปอยู่สูงกว่าเส้นระดับราคาเป้าหมาย เงินผลตอบแทนของคุณจะเติบโตตามสัดส่วนไปตามระยะห่างระหว่างราคาตลาดและเส้นระดับราคาเป้าหมายตราบที่เส้นนั้นไม่ถูกฝ่าออกไป ทั้งนี้คุณจะเริ่มทำกำไรเมื่อเงินผลตอบแทนมีจำนวนสูงกว่าเงินทุนทรัพย์ที่ลงไปของคุณ แต่ถ้าราคาตลาดฝ่าเส้นระดับราคาเป้าหมายก็จะไม่มีเงินผลตอบแทน", "-351875097": "จำนวนจุด Tick", "-729830082": "ดูน้อยลง", + "-1669741470": "เงินผลตอบแทน ณ เวลาหมดอายุนั้นจะเท่ากับการเอาเงินได้ต่อจุดพอยท์มาคูณด้วยส่วนต่างระหว่างราคาสุดท้ายและราคาใช้สิทธิ", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "ใหม่!", "-993480898": "แอกคิวมูเลเตอร์", "-45873457": "ใหม่", @@ -3553,10 +3544,14 @@ "-127118348": "เลือก {{contract_type}}", "-543478618": "ลองตรวจสอบการสะกดของคุณหรือใช้คำอื่น", "-700280380": "ค่าธรรมเนียมการยกเลิกดีลข้อตกลง", - "-542594338": "ยอดเงินที่ได้รับสูงสุด", + "-542594338": "เงินผลตอบแทนขั้นสูงสุด", "-690963898": "สัญญาของคุณจะถูกปิดโดยอัตโนมัติหากว่าจำนวนเงินผลตอบแทนของคุณได้มาถึงจำนวนนี้", "-511541916": "สัญญาของคุณจะถูกปิดโดยอัตโนมัติเมื่อถึงจำนวนจุด Tick นี้", "-438655760": "<0>หมายเหตุ: คุณสามารถปิดการซื้อขายของคุณได้ตลอดเวลา โปรดตระหนักถึงความเสี่ยงการคลาดเคลื่อนราคา", + "-774638412": "เงินทุนทรัพย์ต้องอยู่ระหว่าง {{min_stake}} {{currency}} และ {{max_stake}} {{currency}}", + "-434270664": "ราคาปัจจุบัน", + "-1956787775": "ราคาเส้นระดับเป้าหมาย:", + "-1513281069": "เส้นระดับราคาเป้าหมาย 2", "-1683683754": "ซื้อ", "-1046859144": "<0>{{title}} คุณจะได้รับเงินผลตอบแทนถ้าราคาตลาดอยู่ที่ {{price_position}} และไม่แตะหรือข้ามเส้นระดับราคาเป้าหมาย มิฉะนั้นเงินผลตอบแทนของคุณจะเป็นศูนย์", "-1815023694": "อยู่เหนือกว่าเส้นระดับราคาเป้าหมาย", diff --git a/packages/translations/src/translations/tr.json b/packages/translations/src/translations/tr.json index bfdf6b3dda21..9086c6cbbee4 100644 --- a/packages/translations/src/translations/tr.json +++ b/packages/translations/src/translations/tr.json @@ -24,7 +24,6 @@ "27731356": "Hesabınız geçici olarak devre dışı bırakıldı. Para yatırma ve çekme işlemlerini tekrar etkinleştirmek için lütfen <0>canlı sohbet yoluyla bizimle iletişime geçin.", "27830635": "Deriv (V) Ltd", "28581045": "Gerçek bir MT5 hesabı ekleyin", - "30801950": "Hesabınız, Malta Oyun Otoritesi tarafından düzenlenen {{legal_entity_name}} ile açılacak ve Malta yasalarına tabi olacaktır.", "33433576": "Lütfen paranızı çekmek için bir e-cüzdan kullanın.", "35089987": "Ehliyetinizin ön ve arka tarafını yükleyin.", "41737927": "Teşekkür ederim", @@ -251,7 +250,6 @@ "284772879": "Sözleşme", "284809500": "Finansal Demo", "287934290": "Bu işlemi iptal etmek istediğinizden emin misiniz?", - "289898640": "KULLANIM KOŞULLARI", "291744889": "<0>1. Ticaret parametreleri: <0>", "291817757": "Deriv topluluğumuza gidin ve API'ler, API belirteçleri, Deriv API'lerini kullanma yolları ve daha fazlası hakkında bilgi edinin.", "292491635": "“Zarar Durdur”u seçerseniz ve kaybınızı sınırlamak için bir miktar belirtirseniz, kaybınız bu miktardan fazla veya bu miktara eşit olduğunda pozisyonunuz otomatik olarak kapatılır. Kaybınız, kapanıştaki piyasa fiyatına bağlı olarak girdiğiniz tutardan fazla olabilir.", @@ -372,6 +370,7 @@ "427134581": "Başka bir dosya türü kullanmayı deneyin.", "427617266": "Bitcoin", "428709688": "Her rapor arasında tercih ettiğiniz zaman aralığı:", + "429970999": "To avoid delays, enter your <0>name exactly as it appears on your {{document_name}}.", "431267979": "İşte Deriv Bot'u hareket halindeyken nasıl kullanacağınıza dair hızlı bir kılavuz.", "432273174": "1:100", "432508385": "Kar Al: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. Başlangıçta bir kez çalıştır", "520136698": "Boom 500 Endeksi", "521872670": "öge", - "522283618": "Dijital opsiyon ticareti deneyimi", "522703281": "ile bölünebilen", "523123321": "- Belirli bir sayının gücüne 10", "524459540": "Değişkenleri nasıl oluşturabilirim?", @@ -562,7 +560,6 @@ "642546661": "Ehliyetinizin arkasını bilgisayarınızdan yükleyin", "642995056": "Email", "644150241": "İstatistiklerinizi en son temizledikten sonra kazandığınız sözleşme sayısı.", - "645016681": "Diğer finansal araçlarda alım satım sıklığı", "645902266": "EUR/NZD", "647039329": "Adres kanıtı gerekli", "647745382": "Giriş Listesi {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "Bir önceki tikteki spot fiyat.", "812775047": "bariyerin altında", "814827314": "Grafikteki stop-out seviyesi, potansiyel kaybınızın tüm hissenize eşit olduğu fiyatı gösterir. Piyasa fiyatı bu seviyeye ulaştığında, pozisyonunuz otomatik olarak kapatılacaktır. Bu, kaybınızın sözleşmeyi satın almak için ödediğiniz tutarı aşmamasını sağlar.", + "814936420": "{{ banner_message }}", "815925952": "Bu blok zorunludur. Bu bloğun yalnızca bir kopyasına izin verilir. Deriv Bot'u açtığınızda varsayılan olarak kanvasa eklenir.", "816580787": "Tekrar hoş geldiniz! Mesajlarınız geri yüklendi.", "816738009": "<0/><1/>Çözümlenemeyen anlaşmazlığı <2>Finansal Hizmetler için Arabulucu Ofisi'ne de iletebilirsiniz.", @@ -747,7 +745,6 @@ "836097457": "Ticaretle ilgileniyorum ama çok az deneyimim var.", "837063385": "Bu adrese başka para birimleri göndermeyin.", "837066896": "Belgeniz inceleniyor, lütfen 1-3 gün sonra tekrar kontrol edin.", - "839618971": "ADRES", "839805709": "Sizi sorunsuz bir şekilde doğrulamak için daha iyi bir fotoğrafa ihtiyacımız var", "840672750": "Bu işe yaramazsa, MT5 uygulamasını kaldırın ve yeniden yükleyin. Ardından <0>2. ve <0>3. adımları tekrarlayın.", "841434703": "Yığını devre dışı bırak", @@ -965,6 +962,7 @@ "1061308507": "{{ contract_type }} satın al", "1062423382": "Eğiticiler sekmesinde botunuzu oluşturmak için video kılavuzlarını ve SSS'leri keşfedin.", "1062536855": "Equals", + "1062569830": "The <0>name on your identity document doesn't match your profile.", "1065275078": "cTrader şimdilik yalnızca masaüstünde mevcuttur.", "1065353420": "110+", "1065498209": "Yineleme (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3. Set your trade parameters and hit Run.", "1174748431": "Ödeme kanalı", "1175183064": "Vanuatu", - "1176926166": "Diğer finansal araçlarla ilgili deneyim", "1177396776": "\"Asian Fall\"ı seçerseniz son tik, tiklerin ortalamasından düşükse ödemeyi kazanırsınız.", "1177723589": "Görüntülenecek işlem yok", "1178582280": "İstatistiklerinizi en son temizledikten sonra kaybettiğiniz sözleşme sayısı.", @@ -1150,6 +1147,7 @@ "1255963623": "{{ input_timestamp }} {{ dummy }} tarihine/saatine kadar", "1258097139": "Geliştirmek için ne yapabiliriz?", "1258198117": "pozitif", + "1259145708": "Let’s try again. Choose another document and enter the corresponding details.", "1259598687": "GBP/JPY", "1260259925": "Telefon numarası doğru formatta değil.", "1263387702": "Tüm {{count}} hesap türleri piyasa emri kullanır. Bu, broker'ın fiyatını önceden kabul ettiğiniz ve broker'ın fiyatından emir vereceğiniz anlamına gelir.", @@ -1173,7 +1171,6 @@ "1289146554": "British Virgin Islands Financial Services Commission", "1289646209": "Marjin call", "1290525720": "Örnek: ", - "1291887623": "Dijital opsiyonlar işlem frekansı", "1291997417": "Sözleşmeler, seçtiğiniz vade tarihinde GMT saatiyle tam olarak 23:59:59'da sona erecektir.", "1292188546": "Deriv MT5 yatırımcı şifresini sıfırla", "1292891860": "Telegram'a Bildir", @@ -1257,7 +1254,6 @@ "1367023655": "Kaybınızın bahisinizi aşmamasını sağlamak için, kaybınız <0/> değerine eşitlendiğinde sözleşmeniz otomatik olarak kapatılacaktır.", "1367488817": "4. İşlem koşullarını yeniden başlatın", "1367990698": "Volatilite 10 Endeksi", - "1369709538": "Kullanım Koşullarımız", "1370647009": "Daha yüksek günlük limitlerin tadını çıkarın", "1371193412": "İptal et", "1371555192": "Choose your preferred payment agent and enter your withdrawal amount. If your payment agent is not listed, <0>search for them using their account number.", @@ -1297,6 +1293,7 @@ "1413047745": "Bir değişkene belirli bir değer atar", "1413359359": "Yeni bir transfer yapın", "1414205271": "asal", + "1414918420": "We'll review your proof of identity again and will give you an update as soon as possible.", "1415006332": "birinciden alt liste al", "1415513655": "Deriv cTrader hesabı ile işlem yapmak için cTrader'ı telefonunuza indirin", "1415974522": "\"Differs\" seçeneğini seçerseniz, son tikin son basamağı tahmininizle aynı değilse ödemeyi kazanırsınız.", @@ -1419,7 +1416,6 @@ "1542742708": "Sentetikler, Forex, Hisse Senetleri, Hisse senedi endeksleri, Emtialar ve Kripto Para Birimleri", "1544642951": "\"Only Ups\"ı seçerseniz, giriş noktasından sonra ardışık tikler art arda yükselirse ödemeyi kazanırsınız. Herhangi bir tik düşerse veya önceki tiklerden herhangi birine eşitse ödeme yapılmaz.", "1547148381": "Bu dosya çok büyük (sadece 8MB'a kadar izin verilir). Lütfen başka bir dosya yükleyin.", - "1548765374": "Belge numarası doğrulanamadı", "1549098835": "Çekilen toplam", "1551172020": "AUD Sepeti", "1552162519": "Onboardingi görüntüle", @@ -1647,6 +1643,7 @@ "1790770969": "FX - majörler (standart/mikro lotlar), FX - minörler, Emtia, Kripto para birimleri", "1791432284": "Ülke ara", "1791971912": "Geçmiş", + "1792037169": "To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your {{document_name}}.", "1793913365": "Depositk için lütfen {{currency_symbol}} hesabınıza geçin.", "1794815502": "İşlem geçmişinizi indirin.", "1796787905": "Lütfen aşağıdaki belgeleri yükleyin.", @@ -1792,7 +1789,6 @@ "1924765698": "Doğum yeri*", "1926987784": "- iOS: Hesap üzerinde sola kaydırın ve <0>Sil öğesine dokunun.", "1928930389": "GBP/NOK", - "1929309951": "İstihdam Durumu", "1929694162": "Hesapları karşılaştır", "1930899934": "Tether", "1931659123": "Her tik'de çalıştır", @@ -1966,12 +1962,12 @@ "2115223095": "Zarar", "2117165122": "1. Bir Telegram botu oluşturun ve Telegram API token'inizi alın. Telegram'da bot oluşturma hakkında daha fazla bilgi için: https://core.telegram.org/bots#6-botfather", "2117489390": "{{ remaining }} saniye içinde otomatik güncelleme", - "2118315870": "Nerede yaşıyorsunuz?", "2119449126": "Aşağıdaki örneğin çıktı örneği:", "2119710534": "SSS", "2121227568": "NEO/USD", "2122152120": "Varlıklar", "2127564856": "Para çekme işlemleri kilitlendi", + "2129807378": "Update profile", "2131963005": "Lütfen aşağıdaki Deriv MT5 hesaplarından paranızı çekin:", "2133451414": "Süre", "2133470627": "Bu blok, seçilen ticaret türü için potansiyel ödeme verir. Bu blok yalnızca \"Satın alma koşulları\" kök bloğunda kullanılabilir.", @@ -1992,8 +1988,6 @@ "2146698770": "Pro ipucu: İstediğiniz bloğu tıklayıp dışarı sürükleyebilirsiniz", "2146892766": "Binary seçenekli ticaret deneyimi", "2147244655": "Kendi ticaret botumu Deriv Bot'a nasıl aktarabilirim?", - "-1232613003": "<0>Doğrulama başarısız. <1>Neden?", - "-2029508615": "<0>Doğrulama gerekli. <1>Şimdi doğrulayın", "-931052769": "Doğrulama gönder", "-1004605898": "İpuçları", "-1938142055": "Belgeler yüklendi", @@ -2141,18 +2135,9 @@ "-179726573": "Sahiplik kanıtınızı aldık.", "-813779897": "Sahiplik doğrulaması kanıtı geçti.", "-638756912": "Banka/kredi kartınızın ön tarafında gösterilen kart numarasının 7-12'ini karartın.", - "-2073934245": "Bu sitede sunulan finansal ticaret hizmetleri, yalnızca yatırım yaptıkları tüm parayı kaybetme olasılığını kabul eden ve finansal sözleşmelerin satın alınmasıyla ilgili riskleri anlayan ve deneyimleyen müşteriler için uygundur. Finansal sözleşmelerdeki işlemler yüksek derecede risk taşır. Satın aldığınız sözleşmeler değersiz olarak sona ererse, sözleşme primi dahil tüm yatırımınızı kaybedersiniz.", - "-1166068675": "Hesabınız, Birleşik Krallık Oyun Komisyonu (UKGC) tarafından düzenlenen {{legal_entity_name}} ile açılacak ve Man Adası yasalarına tabi olacaktır.", - "-975118358": "Hesabınız, Malta Financial Services Authority (MFSA) tarafından düzenlenen {{legal_entity_name}} ile açılacak ve Malta yasalarına tabi olacaktır.", - "-680528873": "Hesabınız {{legal_entity_name}} ile açılacak ve Samoa yasalarına tabi olacaktır.", - "-1125193491": "Hesap ekle", - "-2068229627": "PEP değilim ve son 12 ay içinde PEP olmadım.", "-684271315": "TAMAM", "-740157281": "Ticaret Deneyimi Değerlendirmesi", "-1720468017": "Size hizmetlerimizi sağlarken, belirli bir ürün veya hizmetin sizin için uygun olup olmadığını değerlendirmek için sizden bilgi almamız gerekmektedir.", - "-186841084": "Change your login email", - "-907403572": "To change your email address, you'll first need to unlink your email address from your {{identifier_title}} account.", - "-1850792730": "{{identifier_title}} ile bağlantıyı kaldır", "-307865807": "Risk Tolerans Uyarısı", "-690100729": "Evet, riski anlıyorum.", "-2010628430": "CFD'ler ve diğer finansal araçlar, kaldıraç nedeniyle hızla para kaybetme riski yüksektir. CFD'lerin ve diğer finansal araçların nasıl çalıştığını ve paranızı kaybetme riskinin yüksek olup olmadığını anlayıp anlamayacağınızı düşünmelisiniz. <0/><0/> Devam etmek için, sermayenizin risk altında olduğunu anladığınızı onaylamanız gerekir.", @@ -2206,11 +2191,6 @@ "-1725454783": "Başarısız oldu", "-506510414": "Tarih ve saat", "-1708927037": "IP adresi", - "-619126443": "Giriş yapmak için <0>Deriv şifresini kullanın {{brand_website_name}} ve {{platform_name_trader}}.", - "-623760979": "{{brand_website_name}}, {{platform_name_trader}} ve {{platform_name_go}} adreslerinde oturum açmak için <0>Deriv şifresini kullanın.", - "-459147994": "{{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} ve {{platform_name_ctrader}} adreslerine giriş yapmak için <0>Deriv şifresini kullanın.", - "-80717068": "<0>Deriv şifrenize bağladığınız uygulamalar", - "-9570380": "Kullan {{platform_name_dxtrade}} giriş yapmak için şifre {{platform_name_dxtrade}} web ve mobil uygulamalardaki hesaplar.", "-2131200819": "Devre dışı bırak", "-200487676": "Etkinleştir", "-1840392236": "Bu doğru kod değil. Lütfen tekrar deneyin.", @@ -2240,44 +2220,37 @@ "-378415317": "Eyalet gereklidir", "-1497654315": "Jersey posta kodu için hesaplarımız ve hizmetlerimiz kullanılamıyor.", "-755626951": "Adres bilgilerinizi tamamlayın", - "-584911871": "Cüzdan para birimini seçin", "-1461267236": "Lütfen para biriminizi seçin", - "-1352330125": "PARA PİRİMİ", "-1027595143": "25.000$'dan daha az", "-40491332": "25,000$ - 50,000$", "-1139806939": "50,001$ - 100,000$", - "-626752657": "0-1 yıl", - "-532014689": "1-2 yıl", - "-1001024004": "3 yıl boyunca", - "-790513277": "son 12 ayda 6-10 işlem", - "-580085300": "son 12 ayda 11-39 işlem", - "-654781670": "Birincil", - "-1717373258": "İkincil", "-996132458": "İnşaat", "-915003867": "Sağlık", "-1430012453": "Bilgi ve İletişim Teknolojisi", "-987824916": "Bilim ve Mühendislik", "-146630682": "Sosyal ve Kültürel", "-761306973": "Üretim", - "-739367071": "Çalışan", - "-1156937070": "500,001$ - 1,000,000$", - "-315534569": "1,000,000$ üzerinde", - "-2068544539": "Maaşlı personel", - "-531314998": "Yatırımlar ve Temettüler", - "-1235114522": "Emeklilik", - "-1298056749": "Devlet yardımları", - "-449943381": "Tasarruflar & Miras", "-1631552645": "Profesyoneller", "-474864470": "Kişisel Bakım, Satış ve Servis çalışanları", "-1129355784": "Tarım, Ormancılık ve Balıkçılık Çalışanları", "-1242914994": "El Sanatları, Metal, Elektrikli ve Elektronik Çalışanları", "-1317824715": "Temizleyiciler ve Yardımcılar", "-1592729751": "Madencilik, İnşaat, Üretim ve Taşımacılık Çalışanları", + "-1030759620": "Kamu Çalışanları", "-2137323480": "Şirket Mülkiyeti", "-1590574533": "Boşanma Uzlaşması", "-1667683002": "Miras", "-1237843731": "Yatırım Geliri", "-777506574": "Mülk Satışı", + "-654781670": "Birincil", + "-1717373258": "İkincil", + "-1156937070": "500,001$ - 1,000,000$", + "-315534569": "1,000,000$ üzerinde", + "-2068544539": "Maaşlı personel", + "-531314998": "Yatırımlar ve Temettüler", + "-1235114522": "Emeklilik", + "-1298056749": "Devlet yardımları", + "-449943381": "Tasarruflar & Miras", "-1161338910": "İlk ad gereklidir.", "-1161818065": "Soyadı 2 ile 50 karakter arasında olmalıdır.", "-1281693513": "Doğum tarihi gereklidir.", @@ -2287,28 +2260,14 @@ "-212167954": "Vergi Kimlik Numarası uygun şekilde biçimlendirilmemiş.", "-621555159": "Kimlik bilgisi", "-204765990": "Kullanım Koşulları", - "-231863107": "Hayır", - "-870902742": "Çevrimiçi ticaretle ilgili ne kadar bilgi ve deneyime sahipsiniz?", - "-1929477717": "Finansal hizmetlerle ilgili akademik derecem, mesleki sertifikasyon ve/veya iş deneyimim var.", - "-1540148863": "Ticaretle ilgili seminer, eğitim ve/veya atölye çalışmalarına katıldım.", - "-922751756": "Bir yıldan az", - "-542986255": "Hiçbiri", - "-1337206552": "Anlayışınıza göre, CFD ticareti şunları yapmanızı sağlar", - "-456863190": "Bir varlığın fiyat hareketine sonucun sabit bir getiri veya hiçbir şey olduğu bir pozisyon açın.", - "-1314683258": "Garantili bir kar için uzun vadeli bir yatırım yapın.", - "-1546090184": "Kaldıraç CFD ticaretini nasıl etkiler?", - "-1636427115": "Kaldıraç riski azaltmaya yardımcı olur.", - "-800221491": "Kaldıraç kazancı garanti eder.", - "-811839563": "Kaldıraç, ticari değerin bir kısmı için büyük pozisyonlar açmanıza olanak tanır, bu da kar veya zararın artmasına neden olabilir.", - "-1185193552": "Yeterli piyasa likiditesi olduğu sürece, kayıp belirli bir miktara eşit veya daha fazla olduğunda işleminizi otomatik olarak kapatır.", - "-1046354": "Yeterli piyasa likiditesi olduğu sürece, kâr belirli bir miktara eşit veya daha fazla olduğunda işleminizi otomatik olarak kapatır.", - "-1842858448": "Ticaretinizde garantili bir kar elde edin.", - "-860053164": "Çarpanları ticareti yaparken.", - "-1250327770": "Bir şirketin hisselerini satın alırken.", - "-1222388581": "Yukarıdakilerin tümü.", "-477761028": "Seçmen kimliği", "-1466346630": "CPF", - "-1030759620": "Kamu Çalışanları", + "-739367071": "Çalışan", + "-626752657": "0-1 yıl", + "-532014689": "1-2 yıl", + "-1001024004": "3 yıl boyunca", + "-790513277": "son 12 ayda 6-10 işlem", + "-580085300": "son 12 ayda 11-39 işlem", "-612752984": "Bunlar, hesaplarınıza uyguladığımız varsayılan sınırlardır.", "-1598263601": "Alım satım limitleri ve bunların nasıl uygulandığı hakkında daha fazla bilgi için lütfen <0>Yardım Merkezi'ne gidin", "-1411635770": "Hesap sınırları hakkında daha fazla bilgi edinin", @@ -2326,10 +2285,7 @@ "-1500958859": "Doğrula", "-1502578110": "Hesabınızın kimliği tamamen doğrulandı ve para çekme limitleriniz kaldırıldı.", "-1662154767": "yakın tarihli bir hizmet faturası (örn. elektrik, su, gaz, sabit hat veya internet), banka hesap özeti veya adınızı ve bu adresinizi içeren resmi bir mektup.", - "-190838815": "Doğrulama için buna ihtiyacımız var. Sağladığınız bilgiler sahte veya yanlışsa para yatırıp çekemeyeceksiniz.", - "-223216785": "İkinci adres satırı*", "-594456225": "İkinci adres satırı", - "-1940457555": "Posta Kodu*", "-1964954030": "Posta Kodu", "-516397235": "Bu tokeni kim ile paylaştığınıza dikkat edin. Bu tokeni kullanan herkes hesabınız adına aşağıdaki işlemleri gerçekleştirebilir", "-989216986": "Hesap ekle", @@ -2371,8 +2327,6 @@ "-1100235269": "İstihdam Sanayisi", "-684388823": "Tahmini net değeri", "-509054266": "Tahmini yıllık ciro", - "-601903492": "Forex Ticaret Deneyimi", - "-1012699451": "CFD alım satım deneyimi", "-1588485629": "Örnek", "-1117345066": "Belge türünü seçin", "-651192353": "Örnek:", @@ -2393,18 +2347,21 @@ "-1944264183": "Alım satım işlemine devam etmek için bir kimlik kanıtı da göndermeniz gerekir.", "-1088324715": "We’ll review your documents and notify you of its status within 1 - 3 working days.", "-329713179": "Tamam", - "-1176889260": "Lütfen bir belge türü seçin.", - "-1926456107": "Sunduğunuz kimliğin süresi doldu.", - "-555047589": "Kimlik belgenizin süresi dolmuş gibi görünüyor. Lütfen geçerli bir belgeyle yeniden deneyin.", - "-841187054": "Tekrar Deneyin", + "-895884696": "The <0>name and <0>date of birth on your identity document don't match your profile.", + "-1792723131": "To avoid delays, enter your <0>date of birth exactly as it appears on your {{document_name}}.", + "-886317740": "The <0>date of birth on your identity document doesn't match your profile.", + "-1813671961": "Your identity verification failed because:", "-2097808873": "Verdiğiniz ayrıntılarla kimliğinizi doğrulayamadık. ", - "-228284848": "Kimliğinizi sağladığınız ayrıntılarla doğrulayamadık.", + "-1652371224": "Your profile is updated", + "-504784172": "Your document has been submitted", "-1391934478": "Kimliğiniz doğrulandı. Ayrıca adres kanıtınızı da göndermeniz gerekir.", "-118547687": "Kimlik doğrulamasını geçti", "-200989771": "Kişisel ayrıntılara git", "-1358357943": "Kimlik kanıtı göndermeden önce lütfen posta kodunuzu kontrol edin ve güncelleyin.", "-1401994581": "Kişisel bilgileriniz eksik", "-2004327866": "Lütfen geçerli bir belge düzenleyen ülke seçin.", + "-1627868670": "Your identity document has expired.", + "-1606307809": "We were unable to verify the identity document with the details provided.", "-1664159494": "Ülke", "-749870311": "Lütfen <0>canlı sohbet yoluyla bizimle iletişime geçin.", "-1084991359": "Kimlik doğrulama kanıtı gerekli değil", @@ -2464,21 +2421,54 @@ "-142444667": "Deriv MT5 parolanızı değiştirmek için lütfen e-postadaki bağlantıya tıklayın.", "-742748008": "E-postanızı kontrol edin ve devam etmek için e-postadaki linke tıklayın.", "-84068414": "E-postayı hala almadınız mı? Lütfen <0>canlı sohbet. yoluyla bizimle iletişime geçin", + "-975118358": "Hesabınız, Malta Financial Services Authority (MFSA) tarafından düzenlenen {{legal_entity_name}} ile açılacak ve Malta yasalarına tabi olacaktır.", + "-2073934245": "Bu sitede sunulan finansal ticaret hizmetleri, yalnızca yatırım yaptıkları tüm parayı kaybetme olasılığını kabul eden ve finansal sözleşmelerin satın alınmasıyla ilgili riskleri anlayan ve deneyimleyen müşteriler için uygundur. Finansal sözleşmelerdeki işlemler yüksek derecede risk taşır. Satın aldığınız sözleşmeler değersiz olarak sona ererse, sözleşme primi dahil tüm yatırımınızı kaybedersiniz.", + "-1125193491": "Hesap ekle", + "-2068229627": "PEP değilim ve son 12 ay içinde PEP olmadım.", + "-186841084": "Change your login email", + "-907403572": "To change your email address, you'll first need to unlink your email address from your {{identifier_title}} account.", + "-1850792730": "{{identifier_title}} ile bağlantıyı kaldır", "-428335668": "İşlemi tamamlamak için bir parola belirlemeniz gerekir.", + "-1232613003": "<0>Doğrulama başarısız. <1>Neden?", + "-2029508615": "<0>Doğrulama gerekli. <1>Şimdi doğrulayın", "-818898181": "Belgedeki isim Deriv profilinizle eşleşmiyor.", "-310316375": "Belgedeki adres yukarıda girdiğiniz adresle eşleşmiyor.", "-485368404": "Belge 6 aydan daha uzun bir süre önce düzenlenmiştir.", "-367016488": "Bulanık belge. Tüm bilgiler net ve görünür olmalıdır.", "-1957076143": "Kırpılmış belge. Tüm bilgiler net ve görünür olmalıdır.", + "-1576856758": "An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.", + "-231863107": "Hayır", + "-870902742": "Çevrimiçi ticaretle ilgili ne kadar bilgi ve deneyime sahipsiniz?", + "-1929477717": "Finansal hizmetlerle ilgili akademik derecem, mesleki sertifikasyon ve/veya iş deneyimim var.", + "-1540148863": "Ticaretle ilgili seminer, eğitim ve/veya atölye çalışmalarına katıldım.", + "-922751756": "Bir yıldan az", + "-542986255": "Hiçbiri", + "-1337206552": "Anlayışınıza göre, CFD ticareti şunları yapmanızı sağlar", + "-456863190": "Bir varlığın fiyat hareketine sonucun sabit bir getiri veya hiçbir şey olduğu bir pozisyon açın.", + "-1314683258": "Garantili bir kar için uzun vadeli bir yatırım yapın.", + "-1546090184": "Kaldıraç CFD ticaretini nasıl etkiler?", + "-1636427115": "Kaldıraç riski azaltmaya yardımcı olur.", + "-800221491": "Kaldıraç kazancı garanti eder.", + "-811839563": "Kaldıraç, ticari değerin bir kısmı için büyük pozisyonlar açmanıza olanak tanır, bu da kar veya zararın artmasına neden olabilir.", + "-1185193552": "Yeterli piyasa likiditesi olduğu sürece, kayıp belirli bir miktara eşit veya daha fazla olduğunda işleminizi otomatik olarak kapatır.", + "-1046354": "Yeterli piyasa likiditesi olduğu sürece, kâr belirli bir miktara eşit veya daha fazla olduğunda işleminizi otomatik olarak kapatır.", + "-1842858448": "Ticaretinizde garantili bir kar elde edin.", + "-860053164": "Çarpanları ticareti yaparken.", + "-1250327770": "Bir şirketin hisselerini satın alırken.", + "-1222388581": "Yukarıdakilerin tümü.", "-1515286538": "Lütfen belge numaranızı girin. ", "-1694758788": "Belge numaranızı girin", "-1458676679": "2-50 karakter girmelisiniz.", + "-1176889260": "Lütfen bir belge türü seçin.", + "-1265050949": "identity document", "-2139303636": "Bozuk bir bağlantıyı izlemiş veya sayfa yeni bir adrese taşınmış olabilir.", "-1448368765": "Hata kodu: {{error_code}} sayfa bulunamadı", "-254792921": "Şu anda sadece para yatırabilirsiniz. Para çekme işlemlerini etkinleştirmek için lütfen finansal değerlendirmenizi tamamlayın.", "-1437017790": "Finansal bilgileri", "-70342544": "Mali bilgilerinizi yasal olarak istemek zorundayız.", "-39038029": "Ticaret deneyimi", + "-601903492": "Forex Ticaret Deneyimi", + "-1012699451": "CFD alım satım deneyimi", "-1894668798": "Diğer ticari araçlar deneyimi", "-1026468600": "Diğer ticari araçların sıklığı", "-1743024217": "Dil Seçiniz", @@ -2489,6 +2479,11 @@ "-536187647": "Erişim iptali onaylansın mı?", "-1357606534": "İzin", "-570222048": "Erişimi iptal et", + "-80717068": "<0>Deriv şifrenize bağladığınız uygulamalar", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "Giriş yapmak için <0>Deriv şifresini kullanın {{brand_website_name}} ve {{platform_name_trader}}.", + "-623760979": "{{brand_website_name}}, {{platform_name_trader}} ve {{platform_name_go}} adreslerinde oturum açmak için <0>Deriv şifresini kullanın.", + "-459147994": "{{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} ve {{platform_name_ctrader}} adreslerine giriş yapmak için <0>Deriv şifresini kullanın.", "-1526404112": "Hizmet faturası: elektrik, su, gaz veya sabit telefon faturası.", "-537552700": "Ev kiralama sözleşmesi: geçerli ve güncel sözleşme.", "-890084320": "Kaydet ve gönder", @@ -2859,6 +2854,30 @@ "-1016171176": "Varlık", "-621128676": "Ticaret türü", "-447853970": "Zarar eşiği", + "-155173714": "Hadi bir bot yapalım!", + "-1919212468": "3. Kategorilerin üstündeki arama çubuğunu kullanarak istediğiniz blokları da arayabilirsiniz..", + "-1520558271": "Daha fazla bilgi için, bu blog gönderisine göz atın bir ticaret botu oluşturmanın temelleri hakkında.", + "-980360663": "3. İstediğiniz bloğu seçin ve çalışma alanına sürükleyin.", + "-1493168314": "Hızlı strateji nedir?", + "-1680391945": "Hızlı bir strateji kullanma", + "-1177914473": "Stratejimi nasıl kaydedebilirim?", + "-271986909": "Bot Oluşturucu içerisinde, botunuzu indirmek için üstteki araç çubuğunun üzerinde Kaydet ögesine tıklayın. Botunuza bir isim verin, ve botunuzu cihazınıza veya Google Drive'a indirmeyi seçin. Botunuz bir XML dosyası olarak indirilecek.", + "-1149045595": "1. İçe Aktar ögesini seçtikten sonra, Lokal seçeneğini seçin ve Devam ögesine tıklayın.", + "-288041546": "2. XML dosyanızı seçin ve Open ögesine tıklayın.", + "-2127548288": "3. Botunuz buna göre yüklenecek.", + "-1311297611": "1. İçe Aktar seçildikten sonra, Google Drive ögesini seçin ve Devam ögesine tıklayın.", + "-1549564044": "Çalışma alanını nasıl sıfırlarım?", + "-1127331928": "Bot Oluşturucu içerisinde, üstteki araç çubuğu üzerinde Sıfırla ögesine tıklayın. Bu çalışma alanını temizleyecektir. Kaydedilmemiş değişikliklerin kaybolacağını lütfen unutmayın.", + "-1720444288": "Deriv Bot ile kayıplarımı nasıl kontrol edebilirim?", + "-1142295124": "Deriv Bot ile kayıplarınızı kontrol etmenin birkaç yolu vardır. İşte stratejinizde kayıp kontrolünü nasıl uygulayabileceğinize dair basit bir örnek:", + "-986689483": "1. Aşağıdaki değişkenleri oluşturun:", + "-269910127": "3. Mevcut kar/zararı son sözleşmeden elde edilen karla güncelleyin. Son sözleşme kaybedilirse, mevcut kar/zararın değeri negatif olacaktır.", + "-1565344891": "Deriv Bot'u web tarayıcımda birden fazla sekmede çalıştırabilir miyim?", + "-90192474": "Evet, yapabilirsiniz. Ancak, hesabınızda maksimum açık pozisyon sayısı ve açık pozisyonlarda maksimum toplam ödeme gibi limitler vardır. Yani, birden fazla pozisyon açarken bu sınırları aklınızda bulundurun. Bu sınırlar hakkında daha fazla bilgiyi şu adreste bulabilirsiniz: Ayarlar > Hesap limitleri.", + "-213872712": "Hayır, Deriv Bot'ta kripto para birimleri sunmuyoruz.", + "-2147346223": "Deriv Bot hangi ülkelerde kullanılabilir?", + "-352345777": "Otomatik ticaret için en popüler stratejiler nelerdir?", + "-552392096": "Otomatik ticarette en sık kullanılan stratejilerden üçü Martingale, D'Alembert ve Oscar's Grind'dir - hepsini hazır ve Deriv Bot'ta sizi bekliyor bulabilirsiniz.", "-507620484": "Kaydedilmedi", "-764102808": "Google Drive", "-555886064": "Kazandı", @@ -2937,30 +2956,6 @@ "-1823621139": "Hızlı Strateji", "-1778025545": "Bir botu başarıyla içe aktardınız.", "-1519425996": "Sonuç bulunamadı \"{{ faq_search_value }}”", - "-155173714": "Hadi bir bot yapalım!", - "-1919212468": "3. Kategorilerin üstündeki arama çubuğunu kullanarak istediğiniz blokları da arayabilirsiniz..", - "-1520558271": "Daha fazla bilgi için, bu blog gönderisine göz atın bir ticaret botu oluşturmanın temelleri hakkında.", - "-980360663": "3. İstediğiniz bloğu seçin ve çalışma alanına sürükleyin.", - "-1493168314": "Hızlı strateji nedir?", - "-1680391945": "Hızlı bir strateji kullanma", - "-1177914473": "Stratejimi nasıl kaydedebilirim?", - "-271986909": "Bot Oluşturucu içerisinde, botunuzu indirmek için üstteki araç çubuğunun üzerinde Kaydet ögesine tıklayın. Botunuza bir isim verin, ve botunuzu cihazınıza veya Google Drive'a indirmeyi seçin. Botunuz bir XML dosyası olarak indirilecek.", - "-1149045595": "1. İçe Aktar ögesini seçtikten sonra, Lokal seçeneğini seçin ve Devam ögesine tıklayın.", - "-288041546": "2. XML dosyanızı seçin ve Open ögesine tıklayın.", - "-2127548288": "3. Botunuz buna göre yüklenecek.", - "-1311297611": "1. İçe Aktar seçildikten sonra, Google Drive ögesini seçin ve Devam ögesine tıklayın.", - "-1549564044": "Çalışma alanını nasıl sıfırlarım?", - "-1127331928": "Bot Oluşturucu içerisinde, üstteki araç çubuğu üzerinde Sıfırla ögesine tıklayın. Bu çalışma alanını temizleyecektir. Kaydedilmemiş değişikliklerin kaybolacağını lütfen unutmayın.", - "-1720444288": "Deriv Bot ile kayıplarımı nasıl kontrol edebilirim?", - "-1142295124": "Deriv Bot ile kayıplarınızı kontrol etmenin birkaç yolu vardır. İşte stratejinizde kayıp kontrolünü nasıl uygulayabileceğinize dair basit bir örnek:", - "-986689483": "1. Aşağıdaki değişkenleri oluşturun:", - "-269910127": "3. Mevcut kar/zararı son sözleşmeden elde edilen karla güncelleyin. Son sözleşme kaybedilirse, mevcut kar/zararın değeri negatif olacaktır.", - "-1565344891": "Deriv Bot'u web tarayıcımda birden fazla sekmede çalıştırabilir miyim?", - "-90192474": "Evet, yapabilirsiniz. Ancak, hesabınızda maksimum açık pozisyon sayısı ve açık pozisyonlarda maksimum toplam ödeme gibi limitler vardır. Yani, birden fazla pozisyon açarken bu sınırları aklınızda bulundurun. Bu sınırlar hakkında daha fazla bilgiyi şu adreste bulabilirsiniz: Ayarlar > Hesap limitleri.", - "-213872712": "Hayır, Deriv Bot'ta kripto para birimleri sunmuyoruz.", - "-2147346223": "Deriv Bot hangi ülkelerde kullanılabilir?", - "-352345777": "Otomatik ticaret için en popüler stratejiler nelerdir?", - "-552392096": "Otomatik ticarette en sık kullanılan stratejilerden üçü Martingale, D'Alembert ve Oscar's Grind'dir - hepsini hazır ve Deriv Bot'ta sizi bekliyor bulabilirsiniz.", "-418247251": "Günlüğünüzü indirin.", "-2123571162": "İndir", "-870004399": "<0>Satın alındı: {{longcode}} (KİMLİK: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "Tam ekran", "-1823504435": "Bildirimleri görüntüleyin", "-1954045170": "Atanmış para birimi yok", - "-583559763": "Menü", "-1591792668": "Hesap Limitleri", "-34495732": "Düzenleyici bilgiler", "-1496158755": "Deriv.com'a git", @@ -3259,6 +3253,7 @@ "-818926350": "Mali Komisyon, olayın tarihinden itibaren 45 gün içerisinde ve ancak ticaret yapan kişi sorunu doğrudan şirketle çözmeye çalıştıktan sonra itirazları kabul eder.", "-1825471709": "Güçlü ve kullanımı kolay bir platformda tamamen yeni bir ticari deneyim.", "-981017278": "Otomatik ticaret parmaklarınızın ucunda. Kodlama gerekmez.", + "-583559763": "Menü", "-778309978": "Tıkladığınız bağlantının süresi doldu. Gelen kutunuzdaki en son e-postadaki bağlantıyı tıkladığınızdan emin olun. Alternatif olarak, e-postanızı aşağıya girin ve yeni bir bağlantı için <0>E-postayı yeniden gönder seçeneğine tıklayın.", "-336222114": "Düzeltmek için bu basit adımları izleyin:", "-1064116456": "<0>Deriv Holdings (Guernsey) Limited brokerini arayın ve seçin.", @@ -3415,22 +3410,6 @@ "-1282933308": "{{barrier}} değil", "-968190634": "Equals {{barrier}}", "-1747377543": "{{barrier}} altında", - "-256210543": "Şu anda alım satım işlemi yapılamıyor.", - "-1150099396": "Yakında bunun sizin için hazır olması için çalışıyoruz. Başka bir hesabınız varsa, ticarete devam etmek için o hesaba geçin. Bir Deriv MT5 Financial ekleyebilirsiniz.", - "-28115241": "{{platform_name_trader}} bu hesap için kullanılamaz", - "-453920758": "{{platform_name_mt5}} panosuna gidin", - "-402175529": "Geçmiş", - "-902712434": "Anlaşma iptali", - "-988484646": "Anlaşma iptali (uygulandı)", - "-444882676": "Anlaşma iptali (etkin)", - "-13423018": "Referans Kimliği", - "-2035315547": "Düşük bariyer", - "-1551639437": "Kaydı yok", - "-1214703885": "Kar al veya zarar durdur gibi bilgileri henüz güncellemediniz", - "-504849554": "Yeniden açılacak", - "-59803288": "Bu arada sentetik indekslerimizi deneyin. Gerçek piyasa volatilitesini simüle eder ve 7/24 açıktır.", - "-1278109940": "Açık piyasalara bakın", - "-694105443": "Bu piyasa kapalı", "-1043795232": "Son pozisyonlar", "-1511825574": "Kar/Zarar:", "-726626679": "Potansiyel kar/zarar:", @@ -3455,21 +3434,15 @@ "-1435392215": "Anlaşma iptali hakkında", "-2017825013": "Anlaşıldı", "-1192773792": "Bunu bir daha gösterme", + "-902712434": "Anlaşma iptali", "-1280319153": "İşleminizi istediğiniz zaman seçtiğiniz bir zaman dilimi içinde iptal edin. İşleminiz seçilen zaman dilimi içinde stop out seviyesine ulaşırsa otomatik olarak tetiklenir.", "-471757681": "Risk yönetimi", "-843831637": "Zarar durdur", "-771725194": "Anlaşma iptali", "-338707425": "Minimum süre 1 gündür", "-1003473648": "Süre: {{duration}} gün", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "Süre sonunda ki ödeme, puan başına ödemenin nihai fiyat ile strike fiyatı arasındaki farkla çarpımına eşittir.", "-1527492178": "Satın alma kilitlendi", "-725375562": "Satın alma düğmesini Ayarlar menüsünden kilitleyebilir/kilidini açabilirsiniz", - "-774638412": "Bahis {{min_stake}} {{currency}} ile {{max_stake}} {{currency}} arasında olmalıdır", - "-1358367903": "Bahis", - "-434270664": "Mevcut Fiyat", - "-1956787775": "Bariyer Fiyatı:", - "-1513281069": "Bariyer 2", "-390994177": "{{min}} ile {{max}} arasında olmalıdır", "-1804019534": "Süre sonu: {{date}}", "-2055106024": "Gelişmiş ve basit süre ayarları arasında geçiş", @@ -3484,6 +3457,7 @@ "-1763848396": "Koymak", "-194424366": "üzerinde", "-857660728": "Strike Fiyatları", + "-1358367903": "Bahis", "-1386326276": "Bariyer gerekli bir alandır.", "-1418742026": "Yüksek bariyer alt bariyerden yüksek olmalıdır.", "-92007689": "Düşük bariyer, yüksek bariyere göre daha düşük olmalıdır.", @@ -3491,6 +3465,21 @@ "-1975910372": "Dakika 0 ile 59 arasında olmalıdır.", "-866277689": "Son kullanma zamanı geçmişte olamaz.", "-1455298001": "Şimdi", + "-256210543": "Şu anda alım satım işlemi yapılamıyor.", + "-1150099396": "Yakında bunun sizin için hazır olması için çalışıyoruz. Başka bir hesabınız varsa, ticarete devam etmek için o hesaba geçin. Bir Deriv MT5 Financial ekleyebilirsiniz.", + "-28115241": "{{platform_name_trader}} bu hesap için kullanılamaz", + "-453920758": "{{platform_name_mt5}} panosuna gidin", + "-402175529": "Geçmiş", + "-988484646": "Anlaşma iptali (uygulandı)", + "-444882676": "Anlaşma iptali (etkin)", + "-13423018": "Referans Kimliği", + "-2035315547": "Düşük bariyer", + "-1551639437": "Kaydı yok", + "-1214703885": "Kar al veya zarar durdur gibi bilgileri henüz güncellemediniz", + "-504849554": "Yeniden açılacak", + "-59803288": "Bu arada sentetik indekslerimizi deneyin. Gerçek piyasa volatilitesini simüle eder ve 7/24 açıktır.", + "-1278109940": "Açık piyasalara bakın", + "-694105443": "Bu piyasa kapalı", "-439389714": "Bunun üzerinde çalışıyoruz", "-770929448": "{{platform_name_smarttrader}} platformuna gidin", "-347156282": "Kanıt sunun", @@ -3537,6 +3526,8 @@ "-454245976": "Piyasa fiyatının belirli bir süre boyunca sürekli düşeceğini düşünüyorsanız, <0>Short seçeneğini seçin. Piyasa fiyatı bariyerin üzerine değmez veya aşmazsa, süre sonunda bir ödeme alırsınız. Bariyer ihlal edilmezse ödemeniz piyasa fiyatı ile bariyer arasındaki mesafeyle orantılı olarak artacaktır. Ödeme, bahis tutarınızdan daha yüksek olduğunda kar etmeye başlayacaksınız. Piyasa fiyatı bariyeri aşarsa, bir ödeme olmayacaktır.", "-351875097": "Tiklerin sayısı", "-729830082": "Daha az görüntüle", + "-1669741470": "Süre sonunda ki ödeme, puan başına ödemenin nihai fiyat ile strike fiyatı arasındaki farkla çarpımına eşittir.", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "YENİ!", "-993480898": "Akümülatörler", "-45873457": "YENİ", @@ -3557,6 +3548,10 @@ "-690963898": "Ödemeniz bu tutara ulaştığında sözleşmeniz otomatik olarak kapatılacaktır.", "-511541916": "Bu sayıda tike ulaşıldığında sözleşmeniz otomatik olarak kapatılacaktır.", "-438655760": "<0>Not: İşleminizi istediğiniz zaman kapatabilirsiniz. Kayma riskinin farkında olun.", + "-774638412": "Bahis {{min_stake}} {{currency}} ile {{max_stake}} {{currency}} arasında olmalıdır", + "-434270664": "Mevcut Fiyat", + "-1956787775": "Bariyer Fiyatı:", + "-1513281069": "Bariyer 2", "-1683683754": "Long", "-1046859144": "<0>{{title}} Piyasa fiyatı {{price_position}} kalırsa ve bariyere dokunmaz veya geçmezse bir ödeme alırsınız. Aksi takdirde, ödemeniz sıfır olacaktır.", "-1815023694": "bariyerin üstünde", diff --git a/packages/translations/src/translations/vi.json b/packages/translations/src/translations/vi.json index 548566e038f4..7e56e6d980e9 100644 --- a/packages/translations/src/translations/vi.json +++ b/packages/translations/src/translations/vi.json @@ -24,7 +24,6 @@ "27731356": "Tài khoản của bạn tạm thời bị vô hiệu hóa. Vui lòng liên hệ với chúng tôi qua <0> live chat để được kích hoạt lại tính năng nạp và rút tiền.", "27830635": "Deriv (V) Ltd", "28581045": "Thêm một tài khoản thực MT5", - "30801950": "Tài khoản của bạn sẽ được mở với {{legal_entity_name}}, được quản lý bởi Malta Gaming Authority và sẽ tuân theo luật pháp của Malta.", "33433576": "Vui lòng chọn một ví điện tử để rút tiền.", "35089987": "Tải lên mặt trước và mặt sau bằng lái xe của bạn.", "41737927": "Xin cảm ơn", @@ -64,7 +63,7 @@ "76916358": "Bạn đã đạt giới hạn rút tiền.<0/>Vui lòng tải lên giấy tờ xác thực danh tính và địa chỉ của bạn để được nâng giới hạn và tiếp tục rút tiền.", "76925355": "Kiểm tra hiệu suất bot của bạn", "77945356": "Ứng dụng di động giúp bạn giao dịch mọi lúc mọi nơi.", - "77982950": "Vanilla là giao dịch quyền chọn cho phép bạn dự đoán hướng giá lên (tăng) hoặc giá xuống (giảm) của tài sản cơ sở bằng cách mua một lệnh “Mua” hoặc “Bán”.", + "77982950": "Vanilla là giao dịch quyền chọn cho phép bạn dự đoán hướng giá lên (tăng) hoặc giá xuống (giảm) của tài sản cơ sở bằng cách mua một lệnh “Call” hoặc “Put”.", "81450871": "Chúng tôi không thể tìm thấy trang đó", "82839270": "Tải lên trang có ảnh của bạn trong hộ chiếu.", "83202647": "Thu gọn Khung", @@ -251,7 +250,6 @@ "284772879": "Hợp đồng", "284809500": "Tài chính thử nghiệm", "287934290": "Bạn có chắc chắn bạn muốn hủy giao dịch này không?", - "289898640": "ĐIỀU KHOẢN SỬ DỤNG", "291744889": "<0>1. Các thông số giao dịch: <0>", "291817757": "Đi tới trang cộng đồng Deriv của chúng tôi để tìm hiểu về API, API token, cách sử dụng Deriv API và nhiều nội dung khác.", "292491635": "Nếu bạn chọn \"Cắt lỗ\" và đưa ra một giá trị để giới hạn số lỗ của mình, giao dịch của bạn sẽ tự động đóng khi số lỗ lớn hơn hoặc bằng giá trị này. Số lỗ của bạn có thể sẽ lớn hơn giá trị bạn đặt ra do phụ thuộc vào giá của thị trường tại thời điểm đóng.", @@ -372,6 +370,7 @@ "427134581": "Thử dùng loại tệp khác.", "427617266": "Bitcoin", "428709688": "Khoảng thời gian nghỉ bạn muốn giữa mỗi báo cáo:", + "429970999": "To avoid delays, enter your <0>name exactly as it appears on your {{document_name}}.", "431267979": "Dưới đây là hướng dẫn nhanh về cách sử dụng Deriv Bot khi di chuyển.", "432273174": "1:100", "432508385": "Chốt lời: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. Chạy một lần tại điểm bắt đầu", "520136698": "Chỉ số Boom 500", "521872670": "mục", - "522283618": "Kinh nghiệm giao dịch quyền chọn kỹ thuật số", "522703281": "chia hết cho", "523123321": "- 10 tới lũy thừa của một số cho sẵn", "524459540": "Làm thế nào để tạo biến số?", @@ -562,7 +560,6 @@ "642546661": "Tải lên ảnh mặt sau của giấy phép từ máy tính của bạn", "642995056": "Email", "644150241": "Số hợp đồng đã sinh lời tính từ lần cuối bạn làm mới số liệu thông kê của mình.", - "645016681": "Tần suất giao dịch bằng các công cụ tài chính khác", "645902266": "EUR/NZD", "647039329": "Yêu cầu giấy tờ xác thực địa chỉ", "647745382": "Danh sách Đầu vào {{ input_list }}", @@ -688,7 +685,7 @@ "775679302": "{{pending_withdrawals}} lượt rút tiền đang chờ xử lý", "775706054": "Deriv có bán trading bot không?", "776085955": "Các chiến lược", - "781924436": "Chênh lệch mua/Chênh lệch bán", + "781924436": "Call Spread/Put Spread", "783974693": "Tránh những năm gần đây", "784311461": "Trung bình biến thiên theo cấp số nhân (EMA)", "784583814": "Kết nối với máy tính của bạn", @@ -719,6 +716,7 @@ "812430133": "Giá giao ngay của tick trước đó.", "812775047": "dưới ngưỡng", "814827314": "Mức dừng giao dịch trên biểu đồ cho biết mức giá mà tại đó khoản lỗ tiềm năng sẽ bằng toàn bộ tiền cược của bạn. Khi giá thị trường đạt đến mức này, vị thế của bạn sẽ tự động đóng. Điều này để đảm bảo rằng khoản lỗ của bạn không vượt quá số tiền bạn đã trả để mua hợp đồng.", + "814936420": "{{ banner_message }}", "815925952": "Khung này là bắt buộc. Chỉ được sao chép thêm một bản cho khung này. Khung này được mặc định thêm vào khi bạn mở Deriv Bot.", "816580787": "Chào mừng trở lại! Tin nhắn của bạn đã được khôi phục.", "816738009": "<0/><1/>Bạn cũng có thể gửi tranh chấp chưa được giải quyết của mình đến <2>Văn phòng Trọng tài cho Dịch vụ Tài chính (Office of the Arbiter for Financial Services).", @@ -747,7 +745,6 @@ "836097457": "Tôi quan tâm đến trading nhưng có rất ít kinh nghiệm.", "837063385": "Không gửi các loại tiền tệ khác đến địa chỉ này.", "837066896": "Giấy tờ của bạn đang được xem xét, vui lòng đợi thêm từ 1 đến 3 ngày nữa.", - "839618971": "ĐỊA CHỈ", "839805709": "Để việc xác minh được dễ dàng, chúng tôi cần một bức ảnh có chất lượng tốt hơn", "840672750": "Nếu cách này không hiệu quả, hãy gỡ cài đặt và cài đặt lại ứng dụng MT5. Sau đó làm lại bước <0>2 và <0>3.", "841434703": "Vô hiệu hóa ngăn xếp", @@ -965,6 +962,7 @@ "1061308507": "Mua {{ contract_type }}", "1062423382": "Khám phá video hướng dẫn và các câu hỏi thường gặp để xây dựng bot của bạn trong thẻ hướng dẫn.", "1062536855": "Tương đương", + "1062569830": "The <0>name on your identity document doesn't match your profile.", "1065275078": "cTrader hiện chỉ có mặt trên máy tính để bàn.", "1065353420": "110+", "1065498209": "Phép lặp (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3. Thiết lập các thông số giao dịch của bạn và nhấn Chạy.", "1174748431": "Kênh thanh toán", "1175183064": "Vanuatu", - "1176926166": "Trải nghiệm giao dịch với các công cụ tài chính khác", "1177396776": "Nếu bạn chọn \"Châu Á Tăng\" (Asian Rise), hợp đồng quyền chọn của bạn sẽ sinh lời nếu giá tại tick cuối cùng cao hơn giá trung bình của các tick.", "1177723589": "Không có giao dịch để hiển thị", "1178582280": "Số hợp đồng bạn đã thua lỗ tính từ lần cuối bạn làm mới số liệu thông kê của mình.", @@ -1150,6 +1147,7 @@ "1255963623": "Tới ngày/thời gian {{ input_timestamp }} {{ dummy }}", "1258097139": "Chúng tôi có thể cải thiện những gì?", "1258198117": "dương", + "1259145708": "Let’s try again. Choose another document and enter the corresponding details.", "1259598687": "GBP/JPY", "1260259925": "Số điện thoại không ở định dạng thích hợp.", "1263387702": "Cả {{count}} loại tài khoản đều sử dụng thực thi thị trường. Điều này có nghĩa là bạn đồng ý với giá của nhà môi giới trước và sẽ đặt hàng với giá của nhà môi giới.", @@ -1173,7 +1171,6 @@ "1289146554": "British Virgin Islands Financial Services Commission", "1289646209": "Gọi ký quỹ", "1290525720": "Ví dụ: ", - "1291887623": "Tần suất giao dịch quyền chọn kỹ thuật số", "1291997417": "Hợp đồng sẽ hết hạn lúc 23:59:59 GMT vào ngày hết hạn đã chọn.", "1292188546": "Đặt lại mật khẩu nhà đầu tư Deriv MT5", "1292891860": "Thông báo Telegram", @@ -1257,7 +1254,6 @@ "1367023655": "Để đảm bảo khoản lỗ của bạn không vượt quá số tiền đặt cược, hợp đồng của bạn sẽ tự động đóng khi khoản lỗ của bạn bằng<0/>.", "1367488817": "4. Khởi động lại điều kiện giao dịch", "1367990698": "Chỉ số Biến động 10", - "1369709538": "Điều khoản sử dụng", "1370647009": "Tận hưởng mức giới hạn hàng ngày cao hơn trước", "1371193412": "Hủy", "1371555192": "Chọn đại lý thanh toán yêu thích và nhập số tiền muốn rút. Nếu đại lý thanh toán của bạn không có trong danh sách, <0>hãy tìm bằng số tài khoản của họ.", @@ -1297,6 +1293,7 @@ "1413047745": "Gán một giá trị đã cho vào một biến", "1413359359": "Tạo lệnh chuyển tiền mới", "1414205271": "nguyên tố", + "1414918420": "We'll review your proof of identity again and will give you an update as soon as possible.", "1415006332": "lấy danh sách phụ từ đầu", "1415513655": "Tải cTrader xuống điện thoại của bạn để giao dịch với tài khoản Deriv cTrader", "1415974522": "Nếu bạn chọn \"Khác\" (Differs), hợp đồng quyền chọn của bạn sẽ sinh lời nếu chữ số cuối của tick cuối cùng không giống với dự đoán của bạn.", @@ -1419,7 +1416,6 @@ "1542742708": "Chỉ số tổng hợp, Forex, Cổ phiếu, Chỉ số chứng khoán, Hàng hóa và Tiền điện tử", "1544642951": "Nếu bạn chọn \"Chỉ Tăng\" (Only Ups), hợp đồng quyền chọn của bạn sẽ sinh lời nếu các tick tiếp theo tăng liên tiếp sau giá vào. Hợp đồng không sinh lời nếu giá bất kỳ tick nào thấp hơn hoặc bằng với bất kỳ tick nào trước đó.", "1547148381": "Kích thước tệp quá lớn (chỉ cho phép tối đa 8MB). Vui lòng tải lên một tệp tin khác.", - "1548765374": "Xác minh số giấy tờ thất bại", "1549098835": "Tổng số tiền rút", "1551172020": "Giỏ AUD", "1552162519": "Xem hướng dẫn", @@ -1517,7 +1513,7 @@ "1655627840": "VIẾT HOA", "1656155124": "Gửi lại sau <0 /> giây", "1658954996": "Người vận hành nhà máy và xưởng lắp ráp", - "1659074761": "Đặt lại lệnh bán", + "1659074761": "Reset Put", "1659352235": "Thêm tài khoản Deriv MT5 CFD của bạn, trực thuộc Deriv Investments (Europe) Limited, được quản lý bởi Malta Financial Services Authority (MFSA) (giấy phép số IS/70156).", "1665272539": "Lưu ý: Bạn không thể đăng nhập vào tài khoản của mình cho đến ngày đã chọn.", "1665738338": "Số dư", @@ -1593,7 +1589,7 @@ "1740371444": "Thị trường cơ sở không được chọn", "1742256256": "Vui lòng tải lên một trong các loại giấy tờ sau:", "1743448290": "Đại lý thanh toán", - "1743679873": "Nếu bạn chọn <0>“Mua (Call)”, hợp đồng quyền chọn của bạn sẽ sinh lời một <1>khoản chi trả nếu <1>giá cuối cùng cao hơn <1>giá thực hiện vào <1>thời điểm hết hạn. Nếu không, hợp đồng quyền chọn của bạn sẽ không sinh lời.", + "1743679873": "Nếu bạn chọn <0>\"Call\", hợp đồng quyền chọn của bạn sẽ sinh lời một <1>khoản chi trả nếu <1>giá cuối cùng cao hơn <1>giá thực hiện vào <1>thời điểm hết hạn. Nếu không, hợp đồng quyền chọn của bạn sẽ không sinh lời.", "1743902050": "Hoàn thành đánh giá tài chính của bạn", "1744509610": "Chỉ cần kéo tệp XML từ máy tính của bạn vào không gian làm việc và bot của bạn sẽ được tải lên. Ngoài ra, bạn có thể chọn Nhập trong Tạo Bot, và nhập bot từ máy tính của bạn hoặc từ Google Drive của bạn.", "1745523557": "- Căn bậc hai", @@ -1647,6 +1643,7 @@ "1790770969": "Cặp tiền tệ chính (lô tiêu chuẩn/micro), cặp tiền tệ phụ, hàng hoá, tiền điện tử", "1791432284": "Tìm quốc gia của bạn", "1791971912": "Gần đây", + "1792037169": "To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your {{document_name}}.", "1793913365": "Để nạp tiền, vui lòng chuyển sang tài khoản {{currency_symbol}} của bạn.", "1794815502": "Tải xuống lịch sử giao dịch của bạn.", "1796787905": "Vui lòng tải lên (các) giấy tờ sau đây.", @@ -1680,7 +1677,7 @@ "1821818748": "Nhập số bằng lái xe", "1823177196": "Phổ biến nhất", "1824193700": "Khung này cung cấp cho bạn chữ số cuối cùng của giá trị tick mới nhất.", - "1824292864": "Mua", + "1824292864": "Call", "1827607208": "Tệp chưa được tải lên.", "1828370654": "Onboarding", "1830520348": "Mật khẩu {{platform_name_dxtrade}}", @@ -1792,7 +1789,6 @@ "1924765698": "Nơi sinh*", "1926987784": "- iOS: Vuốt sang trái trên tài khoản và nhấn <0>Xóa.", "1928930389": "GBP/NOK", - "1929309951": "Nghề nghiệp", "1929694162": "So sánh tài khoản", "1930899934": "Tether", "1931659123": "Chạy trên mỗi tick", @@ -1966,12 +1962,12 @@ "2115223095": "Lỗ", "2117165122": "1. Tạo một bot Telegram và nhận mã thông báo Telegram API của bạn. Tìm hiểu thêm về cách tạo bot trong Telegram ở đây: https://core.telegram.org/bots#6-botfather", "2117489390": "Tự động cập nhật trong {{ remaining }} giây", - "2118315870": "Bạn đang sống ở đâu?", "2119449126": "Ví dụ đầu ra của ví dụ dưới đây là:", "2119710534": "Những câu hỏi thường gặp", "2121227568": "NEO/USD", "2122152120": "Tài sản", "2127564856": "Tính năng rút tiền bị khóa", + "2129807378": "Update profile", "2131963005": "Vui lòng rút tiền của bạn khỏi (các) tài khoản Deriv MT5 sau:", "2133451414": "Thời lượng", "2133470627": "Khung này trở về khoản chi trả tiềm năng cho loại giao dịch được chọn. Khung này chỉ được sử dụng cho khối gốc \"Điều kiện mua\".", @@ -1992,8 +1988,6 @@ "2146698770": "Mẹo chuyên nghiệp: Bạn cũng có thể nhấp chọn và kéo khung mong muốn", "2146892766": "Kinh nghiệm giao dịch các quyền chọn nhị phân", "2147244655": "Làm thế nào để nhập bot giao dịch của tôi vào Deriv Bot?", - "-1232613003": "<0>Xác thực thất bại. <1>Tại sao?", - "-2029508615": "<0>Cần xác thực.<1>Xác thực ngay", "-931052769": "Nộp xác minh", "-1004605898": "Mẹo", "-1938142055": "Tài liệu đã được tải lên", @@ -2141,18 +2135,9 @@ "-179726573": "Chúng tôi đã nhận được bằng chứng về quyền sở hữu của bạn.", "-813779897": "Bằng chứng xác thực quyền sở hữu đã được thông qua.", "-638756912": "Che từ số thứ 7 đến số thứ 12 phần số thẻ ở mặt trước thẻ ghi nợ/thẻ tín dụng của bạn.", - "-2073934245": "Các dịch vụ giao dịch tài chính được cung cấp trên trang web này chỉ phù hợp cho những khách hàng chấp nhận khả năng mất tất cả số tiền họ đầu tư cũng như hiểu và có kinh nghiệm về các rủi ro liên quan đến việc mua bán hợp đồng tài chính. Các giao dịch hợp đồng tài chính có mức độ rủi ro cao. Nếu hợp đồng bạn mua khi hết hạn trở nên vô giá trị, bạn sẽ bị mất toàn bộ số tiền đầu tư, bao gồm cả phí bảo hiểm hợp đồng.", - "-1166068675": "Tài khoản của bạn sẽ được mở với {{legal_entity_name}}, được quản lý bởi UK Gaming Commission (UKGC), và sẽ tuân theo luật pháp của Đảo Man.", - "-975118358": "Tài khoản của bạn sẽ được mở với {{legal_entity_name}}, được quản lý bởi Malta Financial Services Authority (MFSA), và sẽ tuân theo luật pháp của Malta.", - "-680528873": "Tài khoản của bạn sẽ được mở với {{legal_entity_name}} và sẽ tuân theo luật pháp của Samoa.", - "-1125193491": "Thêm tài khoản", - "-2068229627": "Tôi hiện tại không phải là PEP, cũng như trong 12 tháng qua.", "-684271315": "OK", "-740157281": "Đánh giá kinh nghiệm trading", "-1720468017": "Để được cung cấp dịch vụ tới bạn, chúng tôi được yêu cầu phải thu thập thông tin từ bạn để đánh giá liệu một sản phẩm hoặc dịch vụ nhất định có phù hợp với bạn hay không.", - "-186841084": "Thay đổi email đăng nhập của bạn", - "-907403572": "Để thay đổi địa chỉ email của bạn, trước tiên bạn cần phải hủy liên kết địa chỉ email của bạn khỏi tài khoản {{identifier_title}} của bạn.", - "-1850792730": "Bỏ liên kết với {{identifier_title}}", "-307865807": "Cảnh báo về Khả năng chịu rủi ro", "-690100729": "Vâng, tôi hiểu rủi ro.", "-2010628430": "CFD và các công cụ tài chính khác gây nguy cơ mất tiền nhanh chóng do đòn bẩy cao. Bạn nên cân nhắc xem liệu bạn có hiểu cách CFD và các công cụ tài chính khác hoạt động và liệu bạn có đủ khả năng chịu rủi ro mất tiền cao hay không.<0/><0/> Để tiếp tục, bạn phải xác nhận rằng bạn hiểu bạn có rủi ro mất tiền.", @@ -2206,11 +2191,6 @@ "-1725454783": "Thất bại", "-506510414": "Ngày và thời gian", "-1708927037": "Địa chỉ IP", - "-619126443": "Sử dụng <0>mật khẩu Deriv để đăng nhập vào {{brand_website_name}} và {{platform_name_trader}}.", - "-623760979": "Sử dụng <0>mật khẩu Deriv để đăng nhập vào {{brand_website_name}}, {{platform_name_trader}} và {{platform_name_go}}.", - "-459147994": "Sử dụng <0>mật khẩu Deriv để đăng nhập vào {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} và {{platform_name_ctrader}}.", - "-80717068": "Ứng dụng bạn đã liên kết với <0>mật khẩu Deriv của bạn:", - "-9570380": "Sử dụng mật khẩu {{platform_name_dxtrade}} để đăng nhập vào tài khoản {{platform_name_dxtrade}} của bạn trên trang web và ứng dụng di động.", "-2131200819": "Vô hiệu hóa", "-200487676": "Kích hoạt", "-1840392236": "Mã không đúng. Vui lòng thử lại.", @@ -2240,44 +2220,37 @@ "-378415317": "Cần có thông tin tỉnh/thành phố", "-1497654315": "Các tài khoản và dịch vụ của chúng tôi không khả dụng cho mã bưu chính Jersey.", "-755626951": "Hoàn thành thông tin địa chỉ của bạn", - "-584911871": "Chọn ví tiền tệ", "-1461267236": "Hãy chọn một loại tiền tệ", - "-1352330125": "TIỀN TỆ", "-1027595143": "Ít hơn $25.000", "-40491332": "$25.000 - $50.000", "-1139806939": "$50.001 - $100.000", - "-626752657": "0 - 1 năm", - "-532014689": "1 - 2 năm", - "-1001024004": "Trên 3 năm", - "-790513277": "6 - 10 giao dịch trong 12 tháng qua", - "-580085300": "11 - 39 giao dịch trong 12 tháng qua", - "-654781670": "Tiểu học", - "-1717373258": "Cấp hai", "-996132458": "Xây dựng", "-915003867": "Sức khỏe", "-1430012453": "Công nghệ thông tin & Truyền thông", "-987824916": "Khoa học & Kỹ Thuật", "-146630682": "Văn Hóa & Xã Hội", "-761306973": "Sản xuất", - "-739367071": "Có việc làm", - "-1156937070": "$500.001 - $1.000.000", - "-315534569": "Hơn $1.000.000", - "-2068544539": "Nhân viên hưởng lương", - "-531314998": "Đầu tư & Cổ tức", - "-1235114522": "Trợ cấp", - "-1298056749": "Phụ cấp chính phủ", - "-449943381": "Tiết kiệm & Thừa kế", "-1631552645": "Chuyên gia", "-474864470": "Nhân viên chăm sóc khách hàng, bán hàng và dịch vụ", "-1129355784": "Nông, Lâm, Ngư nghiệp", "-1242914994": "Thợ thủ công, cơ khí và điện tử", "-1317824715": "Nhân viên vệ sinh và người giúp việc", "-1592729751": "Công nhân khai khoáng, xây dựng, sản xuất và vận chuyển", + "-1030759620": "Nhân viên chính phủ", "-2137323480": "Quyền sở hữu công ty", "-1590574533": "Thỏa thuận ly hôn", "-1667683002": "Thừa kế", "-1237843731": "Thu nhập từ đầu tư", "-777506574": "Bán tài sản", + "-654781670": "Tiểu học", + "-1717373258": "Cấp hai", + "-1156937070": "$500.001 - $1.000.000", + "-315534569": "Hơn $1.000.000", + "-2068544539": "Nhân viên hưởng lương", + "-531314998": "Đầu tư & Cổ tức", + "-1235114522": "Trợ cấp", + "-1298056749": "Phụ cấp chính phủ", + "-449943381": "Tiết kiệm & Thừa kế", "-1161338910": "Cần có tên của bạn.", "-1161818065": "Họ nên từ 2 đến 50 ký tự.", "-1281693513": "Cần có thông tin ngày sinh.", @@ -2287,28 +2260,14 @@ "-212167954": "Mã số thuế không ở định dạng đúng.", "-621555159": "Thông tin nhận dạng", "-204765990": "Điều khoản sử dụng", - "-231863107": "Không", - "-870902742": "Bạn đã trading online bao nhiêu năm?", - "-1929477717": "Tôi có bằng đại học, chứng nhận chuyên môn và/hoặc kinh nghiệm làm việc liên quan đến các dịch vụ tài chính.", - "-1540148863": "Tôi đã tham dự các hội thảo, đào tạo và/hoặc hội thảo liên quan đến trading.", - "-922751756": "Chưa đầy một năm", - "-542986255": "Không có", - "-1337206552": "Theo hiểu biết của bạn, giao dịch CFD cho phép bạn", - "-456863190": "Mở vị thế về biến động giá của một tài sản với kết quả là lợi nhuận cố định hoặc không có gì cả.", - "-1314683258": "Đầu tư dài hạn với lợi nhuận được đảm bảo.", - "-1546090184": "Đòn bẩy ảnh hưởng đến giao dịch CFD như thế nào?", - "-1636427115": "Đòn bẩy giúp giảm thiểu rủi ro.", - "-800221491": "Đòn bẩy giúp đảm bảo lợi nhuận.", - "-811839563": "Đòn bẩy cho phép bạn mở các vị thế lớn chỉ với mức bỏ ra nhỏ và có thể dẫn đến tăng lợi nhuận hoặc lỗ.", - "-1185193552": "Tự động đóng giao dịch của bạn khi số lỗ bằng hoặc nhiều hơn một số tiền quy định, miễn là có đủ thanh khoản thị trường.", - "-1046354": "Tự động đóng giao dịch của bạn khi lợi nhuận bằng hoặc nhiều hơn một số tiền quy định, miễn là có đủ thanh khoản thị trường.", - "-1842858448": "Đảm bảo lợi nhuận cho giao dịch của bạn.", - "-860053164": "Khi giao dịch Cấp số nhân.", - "-1250327770": "Khi mua cổ phần của một công ty.", - "-1222388581": "Tất cả những điều trên.", "-477761028": "Voter ID", "-1466346630": "CPF", - "-1030759620": "Nhân viên chính phủ", + "-739367071": "Có việc làm", + "-626752657": "0 - 1 năm", + "-532014689": "1 - 2 năm", + "-1001024004": "Trên 3 năm", + "-790513277": "6 - 10 giao dịch trong 12 tháng qua", + "-580085300": "11 - 39 giao dịch trong 12 tháng qua", "-612752984": "Đây là những giới hạn mặc định mà chúng tôi áp dụng cho tài khoản của bạn.", "-1598263601": "Để tìm hiểu thêm về giới hạn giao dịch và cách áp dụng, vui lòng đi tới <0>Trung tâm hỗ trợ.", "-1411635770": "Tìm hiểu thêm về các giới hạn tài khoản", @@ -2326,10 +2285,7 @@ "-1500958859": "Xác thực", "-1502578110": "Tài khoản của bạn đã được xác thực đầy đủ và mức giới hạn rút tiền của bạn đã được nâng lên.", "-1662154767": "một hóa đơn tiện ích mới đây (ví dụ: điện, nước, ga, điện thoại cố định, hoặc internet), sao kê ngân hàng, hoặc thư do chính phủ cấp với tên của bạn và địa chỉ này.", - "-190838815": "Chúng tôi cần thông tin này để xác minh. Nếu thông tin bạn cung cấp là giả hoặc không chính xác, bạn sẽ không thể gửi và rút tiền.", - "-223216785": "Dòng thứ hai của địa chỉ nhà*", "-594456225": "Dòng thứ hai của địa chỉ nhà", - "-1940457555": "Mã bưu chính/Mã ZIP*", "-1964954030": "Mã số bưu chính/Mã ZIP", "-516397235": "Hãy cẩn thận với những người bạn chia sẻ mã thông báo này. Bất kỳ ai có mã thông báo này đều có thể thực hiện các thao tác sau trên tài khoản của bạn", "-989216986": "Thêm tài khoản", @@ -2371,8 +2327,6 @@ "-1100235269": "Ngành nghề", "-684388823": "Tổng thu nhập ước tính", "-509054266": "Dự đoán doanh thu lợi nhuận", - "-601903492": "Kinh nghiệm giao dịch forex", - "-1012699451": "Kinh nghiệm giao dịch CFD", "-1588485629": "Ví dụ", "-1117345066": "Chọn loại giấy tờ", "-651192353": "Ví dụ:", @@ -2393,18 +2347,21 @@ "-1944264183": "Để tiếp tục giao dịch, bạn cần gửi giấy tờ xác thực địa chỉ.", "-1088324715": "Chúng tôi sẽ xem xét giấy tờ của bạn và thông báo tình trạng trong vòng 1 - 3 ngày.", "-329713179": "Ok", - "-1176889260": "Vui lòng chọn một loại giấy tờ.", - "-1926456107": "ID mà bạn nhập đã hết hạn.", - "-555047589": "Có vẻ giấy tờ tùy thân của bạn đã hết hạn. Vui lòng gửi lại giấy tờ hợp lệ.", - "-841187054": "Thử lại", + "-895884696": "The <0>name and <0>date of birth on your identity document don't match your profile.", + "-1792723131": "To avoid delays, enter your <0>date of birth exactly as it appears on your {{document_name}}.", + "-886317740": "The <0>date of birth on your identity document doesn't match your profile.", + "-1813671961": "Your identity verification failed because:", "-2097808873": "Chúng tôi không thể xác minh danh tính của bạn với các thông tin bạn đã cung cấp. ", - "-228284848": "Chúng tôi không thể xác minh danh tính của bạn với các thông tin bạn đã cung cấp.", + "-1652371224": "Your profile is updated", + "-504784172": "Your document has been submitted", "-1391934478": "Danh tính của bạn đã được xác minh. Bạn cũng sẽ cần phải gửi giấy tờ xác thực địa chỉ của mình.", "-118547687": "Danh tính đã được xác thực", "-200989771": "Đi đến thông tin cá nhân", "-1358357943": "Vui lòng kiểm tra và cập nhật mã bưu điện trước khi bạn gửi giấy tờ xác thực danh tính của mình.", "-1401994581": "Thông tin cá nhân của bạn bị thiếu", "-2004327866": "Vui lòng chọn quốc gia đã cấp giấy tờ hợp lệ.", + "-1627868670": "Your identity document has expired.", + "-1606307809": "We were unable to verify the identity document with the details provided.", "-1664159494": "Quốc gia", "-749870311": "Vui lòng liên hệ với chúng tôi qua <0>live chat.", "-1084991359": "Không cần giấy tờ xác thực danh tính", @@ -2464,21 +2421,54 @@ "-142444667": "Vui lòng nhấp vào đường dẫn liên kết trong email của bạn để đổi mật khẩu Deriv MT5.", "-742748008": "Kiểm tra email của bạn và nhấp vào liên kết trong email để tiếp tục.", "-84068414": "Bạn vẫn không nhận được email? Vui lòng liên hệ với chúng tôi qua <0>live chat.", + "-975118358": "Tài khoản của bạn sẽ được mở với {{legal_entity_name}}, được quản lý bởi Malta Financial Services Authority (MFSA), và sẽ tuân theo luật pháp của Malta.", + "-2073934245": "Các dịch vụ giao dịch tài chính được cung cấp trên trang web này chỉ phù hợp cho những khách hàng chấp nhận khả năng mất tất cả số tiền họ đầu tư cũng như hiểu và có kinh nghiệm về các rủi ro liên quan đến việc mua bán hợp đồng tài chính. Các giao dịch hợp đồng tài chính có mức độ rủi ro cao. Nếu hợp đồng bạn mua khi hết hạn trở nên vô giá trị, bạn sẽ bị mất toàn bộ số tiền đầu tư, bao gồm cả phí bảo hiểm hợp đồng.", + "-1125193491": "Thêm tài khoản", + "-2068229627": "Tôi hiện tại không phải là PEP, cũng như trong 12 tháng qua.", + "-186841084": "Thay đổi email đăng nhập của bạn", + "-907403572": "Để thay đổi địa chỉ email của bạn, trước tiên bạn cần phải hủy liên kết địa chỉ email của bạn khỏi tài khoản {{identifier_title}} của bạn.", + "-1850792730": "Bỏ liên kết với {{identifier_title}}", "-428335668": "Bạn sẽ cần phải đặt mật khẩu để hoàn tất quy trình.", + "-1232613003": "<0>Xác thực thất bại. <1>Tại sao?", + "-2029508615": "<0>Cần xác thực.<1>Xác thực ngay", "-818898181": "Tên trong giấy tờ không khớp với hồ sơ Deriv của bạn.", "-310316375": "Địa chỉ trong giấy tờ không khớp với địa chỉ bạn đã nhập ở trên.", "-485368404": "Tài liệu được cấp hơn 6 tháng trước.", "-367016488": "Giấy tờ bị mờ. Tất cả thông tin phải rõ ràng và có thể đọc được.", "-1957076143": "Giấy tờ bị cắt. Tất cả thông tin phải rõ ràng và có thể thấy được.", + "-1576856758": "An account with these details already exists. Please make sure the details you entered are correct as only one real account is allowed per client. If this is a mistake, contact us via <0>live chat.", + "-231863107": "Không", + "-870902742": "Bạn đã trading online bao nhiêu năm?", + "-1929477717": "Tôi có bằng đại học, chứng nhận chuyên môn và/hoặc kinh nghiệm làm việc liên quan đến các dịch vụ tài chính.", + "-1540148863": "Tôi đã tham dự các hội thảo, đào tạo và/hoặc hội thảo liên quan đến trading.", + "-922751756": "Chưa đầy một năm", + "-542986255": "Không có", + "-1337206552": "Theo hiểu biết của bạn, giao dịch CFD cho phép bạn", + "-456863190": "Mở vị thế về biến động giá của một tài sản với kết quả là lợi nhuận cố định hoặc không có gì cả.", + "-1314683258": "Đầu tư dài hạn với lợi nhuận được đảm bảo.", + "-1546090184": "Đòn bẩy ảnh hưởng đến giao dịch CFD như thế nào?", + "-1636427115": "Đòn bẩy giúp giảm thiểu rủi ro.", + "-800221491": "Đòn bẩy giúp đảm bảo lợi nhuận.", + "-811839563": "Đòn bẩy cho phép bạn mở các vị thế lớn chỉ với mức bỏ ra nhỏ và có thể dẫn đến tăng lợi nhuận hoặc lỗ.", + "-1185193552": "Tự động đóng giao dịch của bạn khi số lỗ bằng hoặc nhiều hơn một số tiền quy định, miễn là có đủ thanh khoản thị trường.", + "-1046354": "Tự động đóng giao dịch của bạn khi lợi nhuận bằng hoặc nhiều hơn một số tiền quy định, miễn là có đủ thanh khoản thị trường.", + "-1842858448": "Đảm bảo lợi nhuận cho giao dịch của bạn.", + "-860053164": "Khi giao dịch Cấp số nhân.", + "-1250327770": "Khi mua cổ phần của một công ty.", + "-1222388581": "Tất cả những điều trên.", "-1515286538": "Vui lòng nhập số của giấy tờ của bạn. ", "-1694758788": "Nhập số của giấy tờ của bạn", "-1458676679": "Bạn nên nhập từ 2 - 50 ký tự.", + "-1176889260": "Vui lòng chọn một loại giấy tờ.", + "-1265050949": "identity document", "-2139303636": "Bạn có thể đã chọn một liên kết không hoạt động, hoặc trang web đã được chuyển đến một địa chỉ mới.", "-1448368765": "Lỗi: {{error_code}} không tìm thấy trang", "-254792921": "Bạn chỉ có thể nạp tiền tại thời điểm này. Để bật tính năng rút tiền, vui lòng hoàn tất đánh giá tài chính của bạn.", "-1437017790": "Thông tin tài chính", "-70342544": "Nghĩa vụ pháp lý yêu cầu chúng tôi phải thu thập thông tin tài chính của bạn.", "-39038029": "Kinh nghiệm giao dịch", + "-601903492": "Kinh nghiệm giao dịch forex", + "-1012699451": "Kinh nghiệm giao dịch CFD", "-1894668798": "Kinh nghiệm giao dịch các công cụ khác", "-1026468600": "Tần suất giao dịch các công cụ khác", "-1743024217": "Chọn ngôn ngữ", @@ -2489,6 +2479,11 @@ "-536187647": "Xác nhận thu hồi quyền truy cập?", "-1357606534": "Cấp phép", "-570222048": "Hủy bỏ truy cập", + "-80717068": "Ứng dụng bạn đã liên kết với <0>mật khẩu Deriv của bạn:", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "Sử dụng <0>mật khẩu Deriv để đăng nhập vào {{brand_website_name}} và {{platform_name_trader}}.", + "-623760979": "Sử dụng <0>mật khẩu Deriv để đăng nhập vào {{brand_website_name}}, {{platform_name_trader}} và {{platform_name_go}}.", + "-459147994": "Sử dụng <0>mật khẩu Deriv để đăng nhập vào {{brand_website_name}}, {{platform_name_go}}, {{platform_name_trader}}, {{platform_name_smarttrader}}, {{platform_name_dbot}} và {{platform_name_ctrader}}.", "-1526404112": "Hóa đơn tiện ích: hóa đơn điện, nước, gas hoặc điện thoại cố định.", "-537552700": "Hợp đồng thuê nhà: hợp đồng hiện tại hợp lệ.", "-890084320": "Lưu và gửi", @@ -2721,7 +2716,7 @@ "-1127399675": "Xuống", "-768425113": "Không Chạm", "-1163058241": "Ở giữa", - "-1354485738": "Đặt lại quyền mua", + "-1354485738": "Reset Call", "-376148198": "Chỉ Lên", "-1337379177": "Tick cao", "-328036042": "Vui lòng nhập số cắt lỗ cao hơn số lỗ dự kiến tại thời điểm hiện tại.", @@ -2859,6 +2854,30 @@ "-1016171176": "Tài sản", "-621128676": "Loại giao dịch", "-447853970": "Ngưỡng thua lỗ", + "-155173714": "Hãy tạo một bot!", + "-1919212468": "3. Bạn cũng có thể tìm kiếm các khung bạn muốn bằng thanh tìm kiếm phía trên các danh mục.", + "-1520558271": "Để biết thêm thông tin, hãy xem bài đăng blog về những thông tin cơ bản khi tạo bot giao dịch.", + "-980360663": "3. Chọn khung bạn muốn và kéo vào không gian làm việc.", + "-1493168314": "Chiến lược nhanh là gì?", + "-1680391945": "Sử dụng một chiến lược nhanh", + "-1177914473": "Làm cách nào để tôi lưu chiến lược của mình?", + "-271986909": "Trong Tạo Bot, nhấn Lưu trên thanh công cụ ở trên cùng để tải về bot của bạn. Đặt tên cho bot và chọn tải bot xuống thiết bị hoặc Google Drive của bạn. Bot của bạn sẽ được tải xuống dưới dạng tệp XML.", + "-1149045595": "1. Sau khi nhấn Nhập, chọn Local và nhấp Tiếp tục.", + "-288041546": "2. Chọn tệp XML và nhấp Mở.", + "-2127548288": "3. Bot của bạn sẽ được tải một cách phù hợp.", + "-1311297611": "1. Sau khi nhấp Nhập, chọn Google Drive và nhấp Tiếp tục.", + "-1549564044": "Làm thế nào để cài đặt lại không gian làm việc?", + "-1127331928": "Trong Tạo Bot, nhấp Cài đặt lại trên thanh công cụ ở trên cùng. Thao tác này sẽ xóa không gian làm việc của bạn. Lưu ý rằng bất kỳ thay đổi nào chưa được lưu sẽ bị mất.", + "-1720444288": "Làm thế nào để kiểm soát tổn thất của tôi với Deriv Bot?", + "-1142295124": "Có một số cách để kiểm soát tổn thất của bạn với Deriv Bot. Dưới đây là một ví dụ đơn giản về cách bạn có thể thực hiện để kiểm soát mất mát trong chiến lược của bạn:", + "-986689483": "1. Tạo các biến sau:", + "-269910127": "3. Cập nhật số lãi/lỗ hiện tại với lợi nhuận từ hợp đồng gần nhất. Nếu hợp đồng gần nhất bị lỗ, giá trị của số lãi/lỗ hiện tại sẽ âm.", + "-1565344891": "Tôi có thể chạy Deriv Bot trên nhiều thẻ trong trình duyệt web của tôi không?", + "-90192474": "Có thể. Tuy nhiên, có những giới hạn với tài khoản của bạn, chẳng hạn như số lượng tối đa các vị thế có thể mở và tổng chi trả tối đa cho các vị thế mở. Vì vậy, bạn cần ghi nhớ những giới hạn này khi mở nhiều vị thế. Bạn có thể tìm thêm thông tin về các giới hạn này tại Cài đặt > Giới hạn tài khoản.", + "-213872712": "Không, chúng tôi không cung cấp giao dịch tiền điện tử trên Deriv Bot.", + "-2147346223": "Deriv Bot có mặt ở những quốc gia nào?", + "-352345777": "Các chiến lược nào là phổ biến nhất để giao dịch tự động?", + "-552392096": "3 trong số các chiến lược được sử dụng phổ biến nhất trong giao dịch tự động là Martingale, D'Alembert và Oscar Grind. Các chiến lược này đều đang có sẵn và chờ bạn tại Deriv Bot.", "-507620484": "Chưa lưu", "-764102808": "Google Drive", "-555886064": "Lời", @@ -2876,7 +2895,7 @@ "-1646497683": "Vòng lặp", "-251326965": "Tiện ích khác", "-934909826": "Tải chiến lược", - "-1692205739": "Nhập bot từ máy tính hoặc Google Drive của bạn, tạo từ đầu hoặc bắt đầu với một chiến lược nhanh.", + "-1692205739": "Tải bot lên từ máy tính hoặc Google Drive của bạn, hoặc tự tạo từ đầu hoặc bắt đầu với một chiến lược nhanh.", "-1545070554": "Xóa bot", "-1972599670": "Bot của bạn sẽ bị xóa vĩnh viễn khi chọn ", "-1692956623": "Có, xóa.", @@ -2927,7 +2946,7 @@ "-736400802": "Bước 6:", "-732067680": "Cuối cùng, kéo và thêm toàn bộ khung <0>Lặp lại vào khung <0>Điều kiện khởi động lại giao dịch.", "-1411787252": "Bước 1", - "-1109392787": "Tìm hiểu cách tự tạo bot của bạn bằng chiến lược đơn giản.", + "-1109392787": "Tìm hiểu cách tự tạo bot của riêng mình bằng một chiến lược đơn giản.", "-1263822623": "Bạn có thể nhập bot từ thiết bị di động của mình hoặc từ Google Drive, xem bản xem trước trong trình tạo bot và bắt đầu giao dịch bằng cách chạy bot.", "-563921656": "Hướng dẫn tạo Bot", "-1109191651": "Phải là số lớn hơn 0", @@ -2937,30 +2956,6 @@ "-1823621139": "Chiến lược nhanh", "-1778025545": "Bạn đã nhập bot thành công.", "-1519425996": "Không tìm thấy kết quả \"{{ faq_search_value }}”", - "-155173714": "Hãy tạo một bot!", - "-1919212468": "3. Bạn cũng có thể tìm kiếm các khung bạn muốn bằng thanh tìm kiếm phía trên các danh mục.", - "-1520558271": "Để biết thêm thông tin, hãy xem bài đăng blog về những thông tin cơ bản khi tạo bot giao dịch.", - "-980360663": "3. Chọn khung bạn muốn và kéo vào không gian làm việc.", - "-1493168314": "Chiến lược nhanh là gì?", - "-1680391945": "Sử dụng một chiến lược nhanh", - "-1177914473": "Làm cách nào để tôi lưu chiến lược của mình?", - "-271986909": "Trong Tạo Bot, nhấn Lưu trên thanh công cụ ở trên cùng để tải về bot của bạn. Đặt tên cho bot và chọn tải bot xuống thiết bị hoặc Google Drive của bạn. Bot của bạn sẽ được tải xuống dưới dạng tệp XML.", - "-1149045595": "1. Sau khi nhấn Nhập, chọn Local và nhấp Tiếp tục.", - "-288041546": "2. Chọn tệp XML và nhấp Mở.", - "-2127548288": "3. Bot của bạn sẽ được tải một cách phù hợp.", - "-1311297611": "1. Sau khi nhấp Nhập, chọn Google Drive và nhấp Tiếp tục.", - "-1549564044": "Làm thế nào để cài đặt lại không gian làm việc?", - "-1127331928": "Trong Tạo Bot, nhấp Cài đặt lại trên thanh công cụ ở trên cùng. Thao tác này sẽ xóa không gian làm việc của bạn. Lưu ý rằng bất kỳ thay đổi nào chưa được lưu sẽ bị mất.", - "-1720444288": "Làm thế nào để kiểm soát tổn thất của tôi với Deriv Bot?", - "-1142295124": "Có một số cách để kiểm soát tổn thất của bạn với Deriv Bot. Dưới đây là một ví dụ đơn giản về cách bạn có thể thực hiện để kiểm soát mất mát trong chiến lược của bạn:", - "-986689483": "1. Tạo các biến sau:", - "-269910127": "3. Cập nhật số lãi/lỗ hiện tại với lợi nhuận từ hợp đồng gần nhất. Nếu hợp đồng gần nhất bị lỗ, giá trị của số lãi/lỗ hiện tại sẽ âm.", - "-1565344891": "Tôi có thể chạy Deriv Bot trên nhiều thẻ trong trình duyệt web của tôi không?", - "-90192474": "Có thể. Tuy nhiên, có những giới hạn với tài khoản của bạn, chẳng hạn như số lượng tối đa các vị thế có thể mở và tổng chi trả tối đa cho các vị thế mở. Vì vậy, bạn cần ghi nhớ những giới hạn này khi mở nhiều vị thế. Bạn có thể tìm thêm thông tin về các giới hạn này tại Cài đặt > Giới hạn tài khoản.", - "-213872712": "Không, chúng tôi không cung cấp giao dịch tiền điện tử trên Deriv Bot.", - "-2147346223": "Deriv Bot có mặt ở những quốc gia nào?", - "-352345777": "Các chiến lược nào là phổ biến nhất để giao dịch tự động?", - "-552392096": "3 trong số các chiến lược được sử dụng phổ biến nhất trong giao dịch tự động là Martingale, D'Alembert và Oscar Grind. Các chiến lược này đều đang có sẵn và chờ bạn tại Deriv Bot.", "-418247251": "Tải xuống nhật ký của bạn.", "-2123571162": "Tải", "-870004399": "<0>Đã mua: {{longcode}} (ID: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "Toàn màn hình", "-1823504435": "Xem thông báo", "-1954045170": "Không có loại tiền tệ nào được chỉ định", - "-583559763": "Menu", "-1591792668": "Giới hạn tài khoản", "-34495732": "Thông tin pháp lý", "-1496158755": "Đi tới Deriv.com", @@ -3259,6 +3253,7 @@ "-818926350": "Ủy ban Tài chính chấp nhận kháng cáo trong 45 ngày sau ngày xảy ra vụ việc và chỉ sau khi trader đã cố gắng giải quyết vấn đề trực tiếp với công ty.", "-1825471709": "Một trải nghiệm giao dịch hoàn toàn mới trên nền tảng mạnh mẽ và dễ sử dụng.", "-981017278": "Giao dịch tự động ngay trong tầm tay. Không cần có kiến thức về lập trình.", + "-583559763": "Menu", "-778309978": "Liên kết bạn nhấp vào đã hết hạn. Hãy đảm bảo bạn nhấp vào liên kết trong email mới nhất trong hộp thư đến của bạn. Hoặc bạn có thể nhập email của bạn vào bên dưới và nhấp vào <0>Gửi lại email để có liên kết mới.", "-336222114": "Làm theo các bước đơn giản này để sửa lỗi:", "-1064116456": "Tìm kiếm nhà môi giới <0>Deriv Holdings (Guernsey) Limited và chọn.", @@ -3415,22 +3410,6 @@ "-1282933308": "Không {{barrier}}", "-968190634": "Bằng {{barrier}}", "-1747377543": "Dưới {{barrier}}", - "-256210543": "Không thể giao dịch vào lúc này.", - "-1150099396": "Chúng tôi đang cố để bạn có thể sử dụng tính năng này. Nếu bạn có tài khoản khác, hãy chuyển sang tài khoản đó để tiếp tục giao dịch. Bạn có thể thêm tài khoản Deriv MT5 Tài chính.", - "-28115241": "Tài khoản này không có {{platform_name_trader}}", - "-453920758": "Đi tới bảng điều khiển {{platform_name_mt5}}", - "-402175529": "Lịch sử", - "-902712434": "Hủy giao dịch", - "-988484646": "Hủy giao dịch (đã thực hiện)", - "-444882676": "Hủy giao dịch (đang hoạt động)", - "-13423018": "ID đối chiếu", - "-2035315547": "Ngưỡng thấp", - "-1551639437": "Không có lịch sử", - "-1214703885": "Bạn vẫn chưa cập nhật chốt lời hoặc cắt lỗ", - "-504849554": "Thị trường sẽ mở của lại vào", - "-59803288": "Hãy thử giao dịch các chỉ số tổng hợp của chúng tôi. Chúng mô phỏng sự biến động của thị trường thực và mở cửa 24/7.", - "-1278109940": "Xem các thị trường đang mở", - "-694105443": "Thị trường này đã đóng cửa", "-1043795232": "Các vị thế gần đây", "-1511825574": "Lời/Lỗ:", "-726626679": "Lời/lỗ tiềm năng:", @@ -3455,21 +3434,15 @@ "-1435392215": "Giới thiệu về việc hủy giao dịch", "-2017825013": "Đã hiểu", "-1192773792": "Không hiển thị lại", + "-902712434": "Hủy giao dịch", "-1280319153": "Hủy giao dịch của bạn bất cứ lúc nào trong một khung thời gian đã chọn. Được tự động kích hoạt nếu giao dịch của bạn đạt đến mức dừng trong khung thời gian đã chọn.", "-471757681": "Quản lý rủi ro", "-843831637": "Cắt lỗ", "-771725194": "Hủy giao dịch", "-338707425": "Thời lượng tối thiểu là 1 ngày", "-1003473648": "Thời lượng: {{duration}} ngày", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "Khoản chi trả khi hết hạn bằng với khoản chi trả của mỗi điểm nhân với chênh lệch giữa giá cuối cùng và giá thực hiện.", "-1527492178": "Tính năng mua bị khóa", "-725375562": "Bạn có thể khóa/mở khóa nút mua trong phần Cài đặt", - "-774638412": "Số tiền đầu tư phải từ {{min_stake}} {{currency}} đến {{max_stake}} {{currency}}", - "-1358367903": "Mức cược", - "-434270664": "Giá hiện tại", - "-1956787775": "Giá ngưỡng:", - "-1513281069": "Ngưỡng 2", "-390994177": "Nên ở giữa {{min}} và {{max}}", "-1804019534": "Ngày hết hạn: {{date}}", "-2055106024": "Chuyển đổi giữa cài đặt thời lượng nâng cao và đơn giản", @@ -3481,9 +3454,10 @@ "-1043117679": "Khi khoản lỗ hiện tại của bạn bằng hoặc vượt quá {{stop_out_percentage}}% mức cược của bạn, hợp đồng của bạn sẽ tự động đóng ở mức giá tài sản hiện có gần nhất.", "-339236213": "Cấp số nhân", "-2131851017": "Tốc độ tăng trưởng", - "-1763848396": "Bán", + "-1763848396": "Put", "-194424366": "trên", "-857660728": "Giá thực hiện", + "-1358367903": "Mức cược", "-1386326276": "Cần có mức ngưỡng.", "-1418742026": "Ngưỡng cao hơn phải cao hơn ngưỡng thấp.", "-92007689": "Ngưỡng thấp hơn phải \bthấp hơn ngưỡng cao.", @@ -3491,6 +3465,21 @@ "-1975910372": "Số phút phải từ 0 đến 59.", "-866277689": "Thời điểm kết thúc hợp đồng không thể trong quá khứ.", "-1455298001": "Bây giờ", + "-256210543": "Không thể giao dịch vào lúc này.", + "-1150099396": "Chúng tôi đang cố để bạn có thể sử dụng tính năng này. Nếu bạn có tài khoản khác, hãy chuyển sang tài khoản đó để tiếp tục giao dịch. Bạn có thể thêm tài khoản Deriv MT5 Tài chính.", + "-28115241": "Tài khoản này không có {{platform_name_trader}}", + "-453920758": "Đi tới bảng điều khiển {{platform_name_mt5}}", + "-402175529": "Lịch sử", + "-988484646": "Hủy giao dịch (đã thực hiện)", + "-444882676": "Hủy giao dịch (đang hoạt động)", + "-13423018": "ID đối chiếu", + "-2035315547": "Ngưỡng thấp", + "-1551639437": "Không có lịch sử", + "-1214703885": "Bạn vẫn chưa cập nhật chốt lời hoặc cắt lỗ", + "-504849554": "Thị trường sẽ mở của lại vào", + "-59803288": "Hãy thử giao dịch các chỉ số tổng hợp của chúng tôi. Chúng mô phỏng sự biến động của thị trường thực và mở cửa 24/7.", + "-1278109940": "Xem các thị trường đang mở", + "-694105443": "Thị trường này đã đóng cửa", "-439389714": "Chúng tôi đang khắc phục sự cố", "-770929448": "Đi tới {{platform_name_smarttrader}}", "-347156282": "Gủi bằng chứng", @@ -3537,6 +3526,8 @@ "-454245976": "Nếu bạn tin rằng giá thị trường sẽ giảm liên tục trong một khoảng thời gian cụ thể, hãy chọn vị thế <0>Short. Bạn sẽ nhận được một khoản chi trả vào thời điểm hết hạn nếu giá thị trường không chạm hoặc không vượt quá mức ngưỡng. Khoản chi trả của bạn sẽ tăng tỷ lệ thuận với khoảng cách giữa giá thị trường và ngưỡng nếu giá không vượt quá ngưỡng. Bạn sẽ bắt đầu kiếm được lợi nhuận khi khoản chi trả cho bạn cao hơn số tiền bạn đầu tư ban đầu. Nếu giá thị trường vượt quá mức ngưỡng, bạn sẽ không nhận được khoản chi trả nào.", "-351875097": "Số tick", "-729830082": "Thu gọn", + "-1669741470": "Khoản chi trả khi hết hạn bằng với khoản chi trả của mỗi điểm nhân với chênh lệch giữa giá cuối cùng và giá thực hiện.", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "MỚI!", "-993480898": "Tích lũy", "-45873457": "MỚI", @@ -3545,7 +3536,7 @@ "-1682624802": "Đó là tỷ lệ phần trăm của giá giao ngay trước đó. Tỷ lệ phần trăm dựa trên sự lựa chọn của bạn về chỉ số và tốc độ tăng trưởng.", "-1221049974": "Giá cuối cùng", "-1247327943": "Đây là giá giao ngay của tick cuối cùng vào lúc hết hạn.", - "-878534036": "Nếu bạn chọn quyền chọn “Mua (Call)\", hợp đồng quyền chọn của bạn sẽ sinh lời nếu giá cuối cùng cao hơn giá thực hiện vào thời điểm hết hạn. Nếu ngược lại, hợp đồng quyền chọn của bạn sẽ không sinh lời.", + "-878534036": "Nếu bạn chọn quyền chọn \"Call\", hợp đồng quyền chọn của bạn sẽ sinh lời nếu giá cuối cùng cao hơn giá thực hiện vào thời điểm hết hạn. Nếu ngược lại, hợp đồng quyền chọn của bạn sẽ không sinh lời.", "-1587076792": "Nếu bạn chọn quyền chọn “Bán (Put)\", hợp đồng quyền chọn của bạn sẽ sinh lời nếu giá cuối cùng thấp hơn giá thực hiện vào thời điểm hết hạn hợp đồng. Nếu ngược lại, hợp đồng quyền chọn của bạn sẽ không sinh lời.", "-1482134885": "Chúng tôi tính toán con số này dựa trên giá thực hiện và thời hạn hợp đồng bạn đã chọn.", "-1890561510": "Thời gian chốt", @@ -3557,6 +3548,10 @@ "-690963898": "Hợp đồng của bạn sẽ tự động đóng khi mức chi trả cho bạn đạt đến số tiền này.", "-511541916": "Hợp đồng của bạn sẽ tự động đóng khi đạt đến số tick này.", "-438655760": "<0>Lưu ý: Bạn có thể đóng giao dịch của mình bất cứ lúc nào. Hãy cẩn thận với rủi ro trượt giá.", + "-774638412": "Số tiền đầu tư phải từ {{min_stake}} {{currency}} đến {{max_stake}} {{currency}}", + "-434270664": "Giá hiện tại", + "-1956787775": "Giá ngưỡng:", + "-1513281069": "Ngưỡng 2", "-1683683754": "Long", "-1046859144": "<0>{{title}} Bạn sẽ nhận được một khoản chi trả nếu giá thị trường giữ nguyên {{price_position}}, không chạm hoặc vượt quá giá ngưỡng. Ngược lại, bạn sẽ không nhận được khoản chi trả nào cả.", "-1815023694": "trên mức ngưỡng", @@ -3593,7 +3588,7 @@ "-525321833": "1 ngày", "-1691868913": "Chạm/Không Chạm", "-151151292": "Châu Á", - "-1048378719": "Đặt lại Quyền Mua/ Đặt lại Quyền Bán", + "-1048378719": "Reset Call/Reset Put", "-1282312809": "Tick Cao/Thấp", "-1237186896": "Chỉ Tăng/Chỉ Giảm", "-529846150": "Giây", diff --git a/packages/translations/src/translations/zh_cn.json b/packages/translations/src/translations/zh_cn.json index e4e1a906decc..7f1bd4c1d99e 100644 --- a/packages/translations/src/translations/zh_cn.json +++ b/packages/translations/src/translations/zh_cn.json @@ -24,7 +24,6 @@ "27731356": "账户暂时被禁用。请通过<0>实时聊天联系我们,重新启用存款和取款。", "27830635": "Deriv (V) 有限公司", "28581045": "添加真实 MT5 账户", - "30801950": "您的账户将通过{{legal_entity_name}} 开立, 并由马耳他博彩机构监管,以及受马耳他的法律管辖。", "33433576": "请使用电子钱包取款。", "35089987": "上传驾驶执照的正面和背面。", "41737927": "谢谢", @@ -251,7 +250,6 @@ "284772879": "合约", "284809500": "金融演示", "287934290": "确认取消此交易?", - "289898640": "使用条款", "291744889": "<0>1. 交易参数:<0>", "291817757": "访问 Deriv 社区,了解 API、API 代币、Deriv API 的使用方法等。", "292491635": "如果您选择“止损”并指定限制亏损的金额,那么当您的亏损大于或与该金额等值时,您的头寸将自动平仓。您的损失可能大于您投入的金额,具体取决于收盘时的市场价格。", @@ -372,6 +370,7 @@ "427134581": "尝试使用其他文件类型。", "427617266": "比特币", "428709688": "每个报告之间的首选时间间隔:", + "429970999": "为避免延误,请准确输入{{document_name}} 上的<0>姓名。", "431267979": "以下是出门时使用 Deriv 机器人的快速指南。", "432273174": "1:100", "432508385": "止盈: {{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. 开机时运行", "520136698": "兴旺 500 指数", "521872670": "项目", - "522283618": "数字期权交易经验", "522703281": "可除以", "523123321": "-10 的指定数字的次方", "524459540": "如何创建变量?", @@ -562,7 +560,6 @@ "642546661": "从电脑上传执照的背面", "642995056": "电子邮件", "644150241": "上次清除统计记录至今的获利合约数。", - "645016681": "其它金融工具的交易频率", "645902266": "欧元/纽元", "647039329": "需要地址证明", "647745382": "输入列表 {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "前一价位的现货价格。", "812775047": "低于障碍", "814827314": "图表上的止损水平显示潜在亏损与全部投注额等值的价格。当市场价格达到此水平时,头寸将自动平仓。这样可以确保亏损不超过购入合约所支付的金额。", + "814936420": "{{ banner_message }}", "815925952": "此程序块是强制性的。此程序块仅允许复制一次。当打开 Deriv 机器人时,默认情况下它将添加到画布上。", "816580787": "欢迎回来!您的消息已还原。", "816738009": "<0/> <1/>您还可以将尚未解决的争议提交给<2>金融服务仲裁员办公室。", @@ -747,7 +745,6 @@ "836097457": "我对交易感兴趣,但很少经验。", "837063385": "请勿向该地址汇出其他货币。", "837066896": "您的文件正在审查中,请于1-3天后再查看。", - "839618971": "地址", "839805709": "为了顺利验证,我们需要更好的照片", "840672750": "如果还不行,请卸载并重新安装 MT5 应用程序。然后重新执行步骤<0>2和<0>3。", "841434703": "禁用堆栈", @@ -965,6 +962,7 @@ "1061308507": "买入 {{ contract_type }}", "1062423382": "在 “教程” 选项卡中浏览视频指南和常见问题解答,以构建机器人。", "1062536855": "等值", + "1062569830": "身份证件的<0>姓名与个人资料不符。", "1065275078": "cTrader 目前只能在桌面上使用。", "1065353420": "110+", "1065498209": "循环 (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3. 设置交易参数并点击运行。", "1174748431": "付款渠道", "1175183064": "瓦努阿图", - "1176926166": "其他金融工具的交易经验", "1177396776": "如果您选择“亚洲下跌”期权,当最新价格低于平均价格时,您将获得赔付。", "1177723589": "没有要显示的交易", "1178582280": "上次清除统计记录至今的亏损合约数。", @@ -1150,6 +1147,7 @@ "1255963623": "至日期/时间 {{ input_timestamp }} {{ dummy }}", "1258097139": "我们可以做些什么改善措施?", "1258198117": "正", + "1259145708": "请重试。选择另一份文件并输入相应的详细信息。", "1259598687": "英镑/日元", "1260259925": "电话号的格式不正确.", "1263387702": "所有{{count}} 种账户类型均使用市场执行。这意味着您事先同意经纪人的价格,并将以经纪人的价格下订单。", @@ -1173,7 +1171,6 @@ "1289146554": "英属维尔京群岛金融服务委员会", "1289646209": "追加保证金通知", "1290525720": "例如: ", - "1291887623": "数字期权交易频率", "1291997417": "合约将在选择到期日的格林威治标准时间23:59:59准时到期。", "1292188546": "重置 Deriv MT5 投资者密码", "1292891860": "通知Telegram", @@ -1257,7 +1254,6 @@ "1367023655": "为确保您的亏损不超过您的投注金额,当亏损与<0/>等值时,您的合约将自动平仓。", "1367488817": "4. 重启交易条件", "1367990698": "波动率 10 指数", - "1369709538": "我们的使用条款", "1370647009": "享用更高的每日限额", "1371193412": "取消", "1371555192": "选择首选付款代理并输入提款金额。如果付款代理未列出,<0>请使用其账号进行搜索。", @@ -1297,6 +1293,7 @@ "1413047745": "给变量分配提供的数值", "1413359359": "进行新转账", "1414205271": "首要的", + "1414918420": "我们将再次审核您的身份证明,并将尽快通知您。", "1415006332": "从第一项获取子列表", "1415513655": "手机下载 cTrader 即可使用 Deriv cTrader 账户交易", "1415974522": "如果您选择“差异”期权,当最新价格的最后一个数字跟您的预测不同时,您将获得赔付。", @@ -1419,7 +1416,6 @@ "1542742708": "综合资产、外汇、股票、股票指数、大宗商品和加密货币", "1544642951": "如果您选择“只会持续上涨”期权,只要入市现价后的价格持续上涨,您将获得赔付。如果期间内的价格有任何下跌或相等于之前的价格, 您将不会获得赔付。", "1547148381": "文件太大了(最多只允许 8MB)。请上传另一文件。", - "1548765374": "文件号验证已失败", "1549098835": "提款总额", "1551172020": "澳元篮子", "1552162519": "查看登录状况", @@ -1647,6 +1643,7 @@ "1790770969": "外汇-主要货币对(标准/微手)、外汇-次要货币对、大宗商品、加密货币", "1791432284": "搜索国家", "1791971912": "最近", + "1792037169": "为避免延迟,输入的<0>姓名和<0>出生日期需与{{document_name}} 显示的完全一致。", "1793913365": "要存款,请转换至{{currency_symbol}} 账户。", "1794815502": "下载您的交易历史。", "1796787905": "请上传以下文件。", @@ -1792,7 +1789,6 @@ "1924765698": "出生地*", "1926987784": "- iOS:在账户上向左轻扫,然后点击<0>删除。", "1928930389": "英镑/挪威克罗钠", - "1929309951": "就业状况", "1929694162": "账户比较", "1930899934": "Tether", "1931659123": "每一跳动点皆运行", @@ -1966,12 +1962,12 @@ "2115223095": "亏损", "2117165122": "1. 创建Telegram机器人并获取Telegram API令牌。在此处阅读关于Telegram中创建机器人功能的更多信息:https://core.telegram.org/bots#6-botfather", "2117489390": "{{ remaining }} 秒内自动更新", - "2118315870": "您的居住地是哪里?", "2119449126": "以下例子的输出示例将是:", "2119710534": "常见问题", "2121227568": "小蚁币/美元", "2122152120": "资产", "2127564856": "提款已被锁定", + "2129807378": "更新个人资料", "2131963005": "请从以下Deriv MT5账户取款:", "2133451414": "期限", "2133470627": "此程序块返回选定交易类型的潜在赔付额。此程序块只能用在“购入条件”根块。", @@ -1992,8 +1988,6 @@ "2146698770": "专家提示:您也可以点击并拖出所需的程序块", "2146892766": "二元期权交易经验", "2147244655": "如何将自己的交易机器人导入 Deriv 机器人?", - "-1232613003": "<0>验证失败。<1>为什么?", - "-2029508615": "<0>需要验证。<1>立即验证", "-931052769": "提交验证", "-1004605898": "提示", "-1938142055": "文档已上传", @@ -2141,18 +2135,9 @@ "-179726573": "已经收到了所有权证明。", "-813779897": "所有权证明验证已通过。", "-638756912": "将借记卡/信用卡正面显示的卡号的7至12位数字涂黑。", - "-2073934245": "本网站提供的金融交易服务仅适合这样的客户:能够接受全部投入资金亏损的可能性,了解购买金融合约的风险并具有相关经验。金融合约交易有很高的风险。如果购买的合约到期时一文不值,您将损失全部投资,包括合约费用。", - "-1166068675": "您的账户将通过 {{legal_entity_name}} 开立,并由英国博彩委员会(UKGC)监管,以及受马恩岛的法律管辖。", - "-975118358": "您的账户将通过{{legal_entity_name}} 开立, 并由马耳他金融服务机构 (MFSA) 监管,以及受马耳他的法律管辖。", - "-680528873": "您的账户将透过{{legal_entity_name}} 开立,并受萨摩亚的法律管辖。", - "-1125193491": "添加账户", - "-2068229627": "本人不是政治公众人士,而且在过去的12个月中,我未曾当过政治公众人士。", "-684271315": "确定", "-740157281": "交易经验评估", "-1720468017": "为了给您提供服务,我们必须向您获取信息,以便确定产品或服务是否适合您。", - "-186841084": "更改登录电子邮件", - "-907403572": "要更改电子邮件地址,首先需要取消 {{identifier_title}} 账户的电子邮件地址链接。", - "-1850792730": "与{{identifier_title}} 解除链接", "-307865807": "风险容忍警告", "-690100729": "是的,我了解须承担风险。", "-2010628430": "由于杠杆作用,差价合约和其他金融工具资金快速亏损的风险很高。您必须考虑自己是否了解差价合约和其他金融工具的运作方式,以及是否能够承担资金亏损的高风险。<0/><0/>如要继续,您必须确认了解自己的资本面临风险。", @@ -2206,11 +2191,6 @@ "-1725454783": "失败", "-506510414": "日期和时间", "-1708927037": "IP 地址", - "-619126443": "使用 <0>Deriv 密码登录 {{brand_website_name}} 和 {{platform_name_trader}}。", - "-623760979": "使用 <0>Deriv 密码登录 {{brand_website_name}}、{{platform_name_trader}} 和 {{platform_name_go}}。", - "-459147994": "使用 <0>Deriv 密码登录 {{brand_website_name}}、{{platform_name_go}}、{{platform_name_trader}}、{{platform_name_smarttrader}}、 {{platform_name_dbot}} 和 {{platform_name_ctrader}}。", - "-80717068": "与<0>Deriv 密码链接的应用:", - "-9570380": "用 {{platform_name_dxtrade}} 密码登录网络和手机应用的 {{platform_name_dxtrade}} 账户。", "-2131200819": "禁用", "-200487676": "启用", "-1840392236": "代码不正确。请重试。", @@ -2240,44 +2220,37 @@ "-378415317": "州/区是必填项", "-1497654315": "泽西邮政编码区的用户不可使用我们的账户和服务.", "-755626951": "完成您的地址资料", - "-584911871": "选择钱包货币", "-1461267236": "请选择货币", - "-1352330125": "货币", "-1027595143": "少于$25,000", "-40491332": "$25,000 - $50,000", "-1139806939": "$50,001 - $100,000", - "-626752657": "0-1 年", - "-532014689": "1-2 年", - "-1001024004": "3年以上", - "-790513277": "过去12个月内6-10次交易", - "-580085300": "过去12个月内11-39次交易", - "-654781670": "主要", - "-1717373258": "次要", "-996132458": "建筑", "-915003867": "健康", "-1430012453": "信息和通信技术", "-987824916": "科学 & 工程", "-146630682": "社会 & 文化", "-761306973": "制造", - "-739367071": "就业", - "-1156937070": "$500,001 - $1,000,000", - "-315534569": "大于$1,000,000", - "-2068544539": "受薪雇员", - "-531314998": "投资与分红", - "-1235114522": "养老金", - "-1298056749": "国家收益", - "-449943381": "储蓄和继承", "-1631552645": "专业人士", "-474864470": "个人护理、销售及服务员工", "-1129355784": "农业、林业和渔业工人", "-1242914994": "工艺、金属、电气和电子工人", "-1317824715": "清洁工和佣工", "-1592729751": "矿业、建筑业、制造业和运输工人", + "-1030759620": "政府官员", "-2137323480": "公司所有权", "-1590574533": "离婚协议", "-1667683002": "继承", "-1237843731": "投资收入", "-777506574": "财产出售", + "-654781670": "主要", + "-1717373258": "次要", + "-1156937070": "$500,001 - $1,000,000", + "-315534569": "大于$1,000,000", + "-2068544539": "受薪雇员", + "-531314998": "投资与分红", + "-1235114522": "养老金", + "-1298056749": "国家收益", + "-449943381": "储蓄和继承", "-1161338910": "名字是必填项.", "-1161818065": "姓氏长度须介于 2至50 个字符。", "-1281693513": "出生日期为必填项.", @@ -2287,28 +2260,14 @@ "-212167954": "税务识别号格式不正确。", "-621555159": "身份信息", "-204765990": "使用条款", - "-231863107": "否", - "-870902742": "在线交易方面有多少知识和经验?", - "-1929477717": "我拥有与金融服务相关的学位、专业认证和/或工作经验。", - "-1540148863": "我参加过与交易相关的研讨会、培训和/或工作室。", - "-922751756": "不到一年", - "-542986255": "没有", - "-1337206552": "据您了解,差价合约交易允许", - "-456863190": "对资产的价格走势开立头寸,结果是固定回报或毫无收益。", - "-1314683258": "进行长期投资以获得有保障的利润。", - "-1546090184": "杠杆如何影响差价合约交易?", - "-1636427115": "杠杆帮助降低风险。", - "-800221491": "杠杆保证能获得利润。", - "-811839563": "杠杆允许以交易价值的一小部分开立大额头寸,这可能会导致盈利或亏损增加。", - "-1185193552": "只要有足够的市场流动性,当亏损等于或超过指定金额时,就会自动平仓。", - "-1046354": "只要有足够的市场流动性,当利润等于或超过指定金额时,就会自动平仓。", - "-1842858448": "保证交易获利。", - "-860053164": "交易乘数时.", - "-1250327770": "购买公司股票时.", - "-1222388581": "以上全部.", "-477761028": "选民身份证", "-1466346630": "公积金", - "-1030759620": "政府官员", + "-739367071": "就业", + "-626752657": "0-1 年", + "-532014689": "1-2 年", + "-1001024004": "3年以上", + "-790513277": "过去12个月内6-10次交易", + "-580085300": "过去12个月内11-39次交易", "-612752984": "这些是适用于您账户的默认限制。", "-1598263601": "要了解有关交易限额及其实施方法的更多信息,请访问<0>帮助中心。", "-1411635770": "了解账户限制的详细信息", @@ -2326,10 +2285,7 @@ "-1500958859": "验证", "-1502578110": "您的账户已经得到完全验证,且您的取款限额已经取消。", "-1662154767": "近期的水电费账单(例如电费、水费、煤气费、固定电话费或互联网费),银行对账单或政府签发的带有您的姓名和地址的信件。", - "-190838815": "我们需要它进行验证。如果您提供的信息是虚假的或不正确的,您将无法存款和提款。", - "-223216785": "地址第二行*", "-594456225": "地址第二行", - "-1940457555": "邮政编码*", "-1964954030": "邮政编码", "-516397235": "与他人共享此代币要小心。拥有此代币的任何人都可以代表您的账户执行以下操作", "-989216986": "添加账户", @@ -2371,8 +2327,6 @@ "-1100235269": "职业领域", "-684388823": "估计净值", "-509054266": "预期的年交易额", - "-601903492": "外汇交易经验", - "-1012699451": "差价合约交易经验", "-1588485629": "示例", "-1117345066": "选择文件类型", "-651192353": "样本:", @@ -2393,18 +2347,21 @@ "-1944264183": "如要继续交易,您必须也提交身份证明。", "-1088324715": "将审核文件并于1至3个工作日内通知状况。", "-329713179": "确定", - "-1176889260": "请选择文件类型.", - "-1926456107": "提交的 ID 已过期。", - "-555047589": "您的身份证明文件似乎已过期。请用有效的文件重试。", - "-841187054": "重试", + "-895884696": "身份证件的<0>姓名和<0>出生日期与个人资料不符。", + "-1792723131": "为避免延误,请准确输入{{document_name}} 上的<0>出生日期。", + "-886317740": "身份证件的<0>出生日期与个人资料不符。", + "-1813671961": "身份验证失败的原因是:", "-2097808873": "无法根据您提供的信息验证 ID。 ", - "-228284848": "无法根据您提供的信息验证 ID。", + "-1652371224": "个人资料已更新", + "-504784172": "文件已提交", "-1391934478": "ID 已验证。您还需提交地址证明。", "-118547687": "ID 验证已通过", "-200989771": "前往个人资料", "-1358357943": "提交身份证明前请检查并更新邮政编码。", "-1401994581": "缺少您的个人资料", "-2004327866": "请选择有效的文件签发国.", + "-1627868670": "身份证件已过期。", + "-1606307809": "无法根据所提供的详细信息核实身份证件。", "-1664159494": "国家", "-749870311": "请通过<0>实时聊天与我们联系。", "-1084991359": "不需要身份证明验证", @@ -2464,21 +2421,54 @@ "-142444667": "请单击邮件上的链接以更改 Deriv MT5 密码。", "-742748008": "查看电子邮件并点击邮件里的链接以继续操作。", "-84068414": "还是没有收到邮件?请通过<0>实时聊天与我们联系。", + "-975118358": "您的账户将通过{{legal_entity_name}} 开立, 并由马耳他金融服务机构 (MFSA) 监管,以及受马耳他的法律管辖。", + "-2073934245": "本网站提供的金融交易服务仅适合这样的客户:能够接受全部投入资金亏损的可能性,了解购买金融合约的风险并具有相关经验。金融合约交易有很高的风险。如果购买的合约到期时一文不值,您将损失全部投资,包括合约费用。", + "-1125193491": "添加账户", + "-2068229627": "本人不是政治公众人士,而且在过去的12个月中,我未曾当过政治公众人士。", + "-186841084": "更改登录电子邮件", + "-907403572": "要更改电子邮件地址,首先需要取消 {{identifier_title}} 账户的电子邮件地址链接。", + "-1850792730": "与{{identifier_title}} 解除链接", "-428335668": "必须设置密码以完成流程。", + "-1232613003": "<0>验证失败。<1>为什么?", + "-2029508615": "<0>需要验证。<1>立即验证", "-818898181": "文档中的姓名与 Deriv 个人资料不匹配。", "-310316375": "文件中的地址与上面输入的地址不符。", "-485368404": "文件签发日期超过 6 个月。", "-367016488": "文件模糊。所有信息必须清晰可见。", "-1957076143": "裁剪过的文件。所有信息必须清晰可见。", + "-1576856758": "包含这些详细信息的账户已经存在。请确保输入的信息正确无误,因为每个客户只能拥有一个真实账户。如果这是个错误,请通过<0>实时聊天联系我们。", + "-231863107": "否", + "-870902742": "在线交易方面有多少知识和经验?", + "-1929477717": "我拥有与金融服务相关的学位、专业认证和/或工作经验。", + "-1540148863": "我参加过与交易相关的研讨会、培训和/或工作室。", + "-922751756": "不到一年", + "-542986255": "没有", + "-1337206552": "据您了解,差价合约交易允许", + "-456863190": "对资产的价格走势开立头寸,结果是固定回报或毫无收益。", + "-1314683258": "进行长期投资以获得有保障的利润。", + "-1546090184": "杠杆如何影响差价合约交易?", + "-1636427115": "杠杆帮助降低风险。", + "-800221491": "杠杆保证能获得利润。", + "-811839563": "杠杆允许以交易价值的一小部分开立大额头寸,这可能会导致盈利或亏损增加。", + "-1185193552": "只要有足够的市场流动性,当亏损等于或超过指定金额时,就会自动平仓。", + "-1046354": "只要有足够的市场流动性,当利润等于或超过指定金额时,就会自动平仓。", + "-1842858448": "保证交易获利。", + "-860053164": "交易乘数时.", + "-1250327770": "购买公司股票时.", + "-1222388581": "以上全部.", "-1515286538": "请输入文件号. ", "-1694758788": "输入文件号", "-1458676679": "您必须输入2-50个字符。", + "-1176889260": "请选择文件类型.", + "-1265050949": "身份证明文件", "-2139303636": "可能您使用的链接已无效,或该页面已转移到新地址。", "-1448368765": "错误代码: {{error_code}} 未找到页面", "-254792921": "目前只能存款。要启用提款,请完成财务评估。", "-1437017790": "财务信息", "-70342544": "根据法律规定,我们有义务要求您提供财务信息。", "-39038029": "交易经验", + "-601903492": "外汇交易经验", + "-1012699451": "差价合约交易经验", "-1894668798": "其他交易工具经验", "-1026468600": "其他交易工具频率", "-1743024217": "选择语言", @@ -2489,6 +2479,11 @@ "-536187647": "确认撤消访问权限?", "-1357606534": "权限", "-570222048": "撤销访问权限", + "-80717068": "与<0>Deriv 密码链接的应用:", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "使用 <0>Deriv 密码登录 {{brand_website_name}} 和 {{platform_name_trader}}。", + "-623760979": "使用 <0>Deriv 密码登录 {{brand_website_name}}、{{platform_name_trader}} 和 {{platform_name_go}}。", + "-459147994": "使用 <0>Deriv 密码登录 {{brand_website_name}}、{{platform_name_go}}、{{platform_name_trader}}、{{platform_name_smarttrader}}、 {{platform_name_dbot}} 和 {{platform_name_ctrader}}。", "-1526404112": "水电账单:电费、水费、煤气费或固定电话账单。", "-537552700": "房屋租赁协议:有效的现行协议。", "-890084320": "保存及提交", @@ -2859,6 +2854,30 @@ "-1016171176": "资产", "-621128676": "交易类型", "-447853970": "亏损阈值", + "-155173714": "让我们建造机器人吧!", + "-1919212468": "3. 也可以使用类别上方的搜索栏搜索所需的程序块。", + "-1520558271": "如需更多信息,查看这篇介绍构建交易机器人基础知识的博文。", + "-980360663": "3. 选择想要的程序块并将其拖到工作区。", + "-1493168314": "什么是快速策略?", + "-1680391945": "使用快速策略", + "-1177914473": "如何保存策略?", + "-271986909": "在机器人生成器点击顶部工具栏上的保存以下载机器人。给机器人起个名字,然后选择将机器人下载到设备或谷歌云端硬盘。机器人将以 XML 文件格式下载。", + "-1149045595": "1. 点击 导入后,选择 本地 并单击 继续。", + "-288041546": "2. 选择 XML 文件并点击打开。", + "-2127548288": "3. 机器人将相应加载。", + "-1311297611": "1. 点击导入,选择Google Drive并点击继续。", + "-1549564044": "如何重置工作空间?", + "-1127331928": "在机器人生成器点击顶部工具栏上的重置。这将清空工作区。请注意,任何未保存的更改都将丢失。", + "-1720444288": "如何用 Deriv 机器人控制亏损?", + "-1142295124": "使用 Deriv 机器人可以通过多种方式控制亏损。以下是简单的示例,说明如何在策略中实施亏损控制:", + "-986689483": "1. 创建以下变量:", + "-269910127": "3. 用上一份合约的利润更新当前盈/亏。如果最新合约已丢失,当前盈/亏的值将为负数。", + "-1565344891": "可否在网页浏览器的多个选项卡运行 Deriv 机器人?", + "-90192474": "是,可以的。但是,账户有些限制,例如未平仓头寸的最大数量和未平仓头寸的最大总赔付额。因此,开设多个头寸时,请牢记这些限制。可以在设置>账户限制中找到有关这些限制的更多信息。", + "-213872712": "不,Deriv 机器人不提供加密货币交易。", + "-2147346223": "Deriv 机器人在哪些国家/地区可用?", + "-352345777": "自动交易最热门的策略是什么?", + "-552392096": "自动交易中最热门的三种策略是 Martingale、D'Alembert 和 Oscar's Grind — Deriv 机器人中可找到预先制作好并等着采用的版本。", "-507620484": "未保存", "-764102808": "Google Drive", "-555886064": "赢得", @@ -2937,30 +2956,6 @@ "-1823621139": "快速策略", "-1778025545": "已成功导入机器人。", "-1519425996": "未找到结果 “{{ faq_search_value }}”", - "-155173714": "让我们建造机器人吧!", - "-1919212468": "3. 也可以使用类别上方的搜索栏搜索所需的程序块。", - "-1520558271": "如需更多信息,查看这篇介绍构建交易机器人基础知识的博文。", - "-980360663": "3. 选择想要的程序块并将其拖到工作区。", - "-1493168314": "什么是快速策略?", - "-1680391945": "使用快速策略", - "-1177914473": "如何保存策略?", - "-271986909": "在机器人生成器点击顶部工具栏上的保存以下载机器人。给机器人起个名字,然后选择将机器人下载到设备或谷歌云端硬盘。机器人将以 XML 文件格式下载。", - "-1149045595": "1. 点击 导入后,选择 本地 并单击 继续。", - "-288041546": "2. 选择 XML 文件并点击打开。", - "-2127548288": "3. 机器人将相应加载。", - "-1311297611": "1. 点击导入,选择Google Drive并点击继续。", - "-1549564044": "如何重置工作空间?", - "-1127331928": "在机器人生成器点击顶部工具栏上的重置。这将清空工作区。请注意,任何未保存的更改都将丢失。", - "-1720444288": "如何用 Deriv 机器人控制亏损?", - "-1142295124": "使用 Deriv 机器人可以通过多种方式控制亏损。以下是简单的示例,说明如何在策略中实施亏损控制:", - "-986689483": "1. 创建以下变量:", - "-269910127": "3. 用上一份合约的利润更新当前盈/亏。如果最新合约已丢失,当前盈/亏的值将为负数。", - "-1565344891": "可否在网页浏览器的多个选项卡运行 Deriv 机器人?", - "-90192474": "是,可以的。但是,账户有些限制,例如未平仓头寸的最大数量和未平仓头寸的最大总赔付额。因此,开设多个头寸时,请牢记这些限制。可以在设置>账户限制中找到有关这些限制的更多信息。", - "-213872712": "不,Deriv 机器人不提供加密货币交易。", - "-2147346223": "Deriv 机器人在哪些国家/地区可用?", - "-352345777": "自动交易最热门的策略是什么?", - "-552392096": "自动交易中最热门的三种策略是 Martingale、D'Alembert 和 Oscar's Grind — Deriv 机器人中可找到预先制作好并等着采用的版本。", "-418247251": "下载您的日志。", "-2123571162": "下载", "-870004399": "<0>已购入: {{longcode}} (ID: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "全屏", "-1823504435": "查看通知", "-1954045170": "未分配币种", - "-583559763": "菜单", "-1591792668": "账户限额", "-34495732": "监管信息", "-1496158755": "前往 Deriv.com", @@ -3259,6 +3253,7 @@ "-818926350": "事件发生之日起45天内,金融委员会接受上诉,条件是交易者事先须试图直接与公司解决问题。", "-1825471709": "功能强大又容易使用的平台全新交易体验。", "-981017278": "触手可及的自动交易。无需编码。", + "-583559763": "菜单", "-778309978": "您点击的链接已过期。确保点击收件箱中最新电子邮件中的链接。或者,在下面输入电子邮件地址,然后点击<0>重新发送电子邮件以获取新链接。", "-336222114": "请按照以下简单步骤进行修复:", "-1064116456": "搜索经纪商<0>Deriv Holdings (Guernsey) Limited并选择它。", @@ -3415,22 +3410,6 @@ "-1282933308": "不是 {{barrier}}", "-968190634": "等值 {{barrier}}", "-1747377543": "低于 {{barrier}}", - "-256210543": "此时无法交易。", - "-1150099396": "我们正在努力为您提供此功能。如果您有另一个账户,请切换到该账户以继续交易。可以添加 Deriv MT5 金融账户。", - "-28115241": "此账户不可用 {{platform_name_trader}}", - "-453920758": "前往 {{platform_name_mt5}} 仪表板", - "-402175529": "历史", - "-902712434": "交易取消", - "-988484646": "交易取消(已执行)", - "-444882676": "交易取消(有效)", - "-13423018": "参考编号", - "-2035315547": "低障碍", - "-1551639437": "没有历史", - "-1214703885": "您还未更新止盈或止损", - "-504849554": "它将于下述时间后重启", - "-59803288": "同时请试试我们的综合指数。它模拟真实市场波动率,并全天候开放。", - "-1278109940": "查看已开启的市场", - "-694105443": "此市场已关闭", "-1043795232": "最近的头寸", "-1511825574": "利润/亏损:", "-726626679": "潜在利润/亏损:", @@ -3455,21 +3434,15 @@ "-1435392215": "关于交易取消", "-2017825013": "知道了", "-1192773792": "别再显示此项", + "-902712434": "交易取消", "-1280319153": "在选定时间范围内随时取消交易。如果您的交易在选定的时间范围内达到止损水平,将自动触发此功能。", "-471757681": "风险管理", "-843831637": "止损", "-771725194": "交易取消", "-338707425": "最小持续时间是1天", "-1003473648": "持续时间:{{duration}} 天", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "到期时的赔付额等于每点赔付乘以最终价格与行权价格之间的差额。", "-1527492178": "买入被锁定", "-725375562": "购入按钮可在设置菜单上锁定/解锁", - "-774638412": "投注额必须介于 {{min_stake}} {{currency}} 和 {{max_stake}} {{currency}} 之间", - "-1358367903": "投注资金", - "-434270664": "当前价格", - "-1956787775": "障碍价格:", - "-1513281069": "障碍2", "-390994177": "必须介于 {{min}} 和 {{max}} 之间", "-1804019534": "到期日: {{date}}", "-2055106024": "高级和简单持续时间设置之间切换", @@ -3484,6 +3457,7 @@ "-1763848396": "看跌期权", "-194424366": "高于", "-857660728": "行权价格", + "-1358367903": "投注资金", "-1386326276": "障碍为必填字段。", "-1418742026": "高障碍必须高于低障碍。", "-92007689": "低障碍必须低于高障碍。", @@ -3491,6 +3465,21 @@ "-1975910372": "分钟数必须在0到59之间。", "-866277689": "到期时间不可为过去式。", "-1455298001": "现在", + "-256210543": "此时无法交易。", + "-1150099396": "我们正在努力为您提供此功能。如果您有另一个账户,请切换到该账户以继续交易。可以添加 Deriv MT5 金融账户。", + "-28115241": "此账户不可用 {{platform_name_trader}}", + "-453920758": "前往 {{platform_name_mt5}} 仪表板", + "-402175529": "历史", + "-988484646": "交易取消(已执行)", + "-444882676": "交易取消(有效)", + "-13423018": "参考编号", + "-2035315547": "低障碍", + "-1551639437": "没有历史", + "-1214703885": "您还未更新止盈或止损", + "-504849554": "它将于下述时间后重启", + "-59803288": "同时请试试我们的综合指数。它模拟真实市场波动率,并全天候开放。", + "-1278109940": "查看已开启的市场", + "-694105443": "此市场已关闭", "-439389714": "我们正在处理", "-770929448": "前往 {{platform_name_smarttrader}}", "-347156282": "提交证明", @@ -3537,6 +3526,8 @@ "-454245976": "如果您认为市场价格会在指定期限内持续下跌,请选择<0>短仓。如果市场价格没有触及或高于障碍,您将在到期时获得赔付。如果未超出障碍,赔付将根据市场价格与障碍之间的差距成比例增长。当赔付高于投注额时,您将开始获利。如果市场价格超出障碍,则不会有赔付。", "-351875097": "跳动点数目", "-729830082": "查看更少", + "-1669741470": "到期时的赔付额等于每点赔付乘以最终价格与行权价格之间的差额。", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "新建!", "-993480898": "累计器", "-45873457": "新建", @@ -3557,6 +3548,10 @@ "-690963898": "当赔付额达到此金额,合约将自动平仓。", "-511541916": "达到此价格跳动次数时,合约将自动平仓。", "-438655760": "<0>注意:可以随时平仓。注意滑点风险。", + "-774638412": "投注额必须介于 {{min_stake}} {{currency}} 和 {{max_stake}} {{currency}} 之间", + "-434270664": "当前价格", + "-1956787775": "障碍价格:", + "-1513281069": "障碍2", "-1683683754": "长仓", "-1046859144": "<0>{{title}} 如果市场价格保持在 {{price_position}} 并且没有触及或超出障碍,将获得赔付。否则,赔付将为零。", "-1815023694": "超出障碍", diff --git a/packages/translations/src/translations/zh_tw.json b/packages/translations/src/translations/zh_tw.json index 122f2f625e7e..31d21c72163d 100644 --- a/packages/translations/src/translations/zh_tw.json +++ b/packages/translations/src/translations/zh_tw.json @@ -24,7 +24,6 @@ "27731356": "帳戶已暫時停用。請通過<0>即時聊天與我們聯繫以再次啟用存款和取款功能。", "27830635": "Deriv (V) 有限公司", "28581045": "新增真實 MT5 帳戶", - "30801950": "您的帳戶將通過 {{legal_entity_name}} 開立,並由馬爾他博彩機構監管,以及受馬爾他的法律管轄。", "33433576": "請使用電子錢包取款。", "35089987": "上載駕駛執照的正面和背面。", "41737927": "謝謝", @@ -251,7 +250,6 @@ "284772879": "合約", "284809500": "財務示範", "287934290": "確認取消此交易?", - "289898640": "使用條款", "291744889": "<0>1.交易參數:<0>", "291817757": "前往 Deriv 社群,瞭解 API、API 代幣、使用 Deriv API 的方式等資訊。", "292491635": "如果您選擇「止損」並指定限制虧損的金額,那麼當虧損大於或與該金額等值時,您的頭寸將自動平倉。損失可能大於投入金額,具體取決於收盤時的市場價格。", @@ -372,6 +370,7 @@ "427134581": "嘗試使用其他文件類型。", "427617266": "比特幣", "428709688": "每個報告之間的偏好時間間隔:", + "429970999": "為避免延誤,請準確輸入{{document_name}} 上的<0>姓名。", "431267979": "以下是出門時使用 Deriv 機器人的快速指南。", "432273174": "1:100", "432508385": "止盈:{{ currency }} {{ take_profit }}", @@ -453,7 +452,6 @@ "518955798": "7. 開機時運行", "520136698": "興旺 500 指數", "521872670": "項目", - "522283618": "數字期權交易經驗", "522703281": "可被整除以", "523123321": "-10 的指定數字的次方", "524459540": "如何建立變數?", @@ -562,7 +560,6 @@ "642546661": "從電腦上傳執照的背面", "642995056": "電子郵件", "644150241": "上次清除統計記錄至今的獲利合約數。", - "645016681": "其它金融工具的交易頻率", "645902266": "歐元/紐元", "647039329": "需要地址證明", "647745382": "輸入清單 {{ input_list }}", @@ -719,6 +716,7 @@ "812430133": "前一價位的現貨價格。", "812775047": "低於障礙", "814827314": "圖表上的止損水平顯示潛在虧損與全部投注額等值的價格。當市場價格達到此水平時,頭寸將自動平倉。這樣可以確保虧損不超過購入合約所支付的金額。", + "814936420": "{{ banner_message }}", "815925952": "此區塊是強制性的。此區塊僅允許複製一次。打開Deriv 機器人時,預設情況下將新增到畫布上。", "816580787": "歡迎回來!您的訊息已還原。", "816738009": "<0/> <1/>您還可以將尚未解決的爭議提交給<2>金融服務仲裁員辦公室。", @@ -747,7 +745,6 @@ "836097457": "我對交易感興趣,但很少經驗。", "837063385": "請勿將其他貨幣匯到此地址。", "837066896": "文件正在審查中,請於1-3天後再檢視.", - "839618971": "地址", "839805709": "為了順利驗證,我們需要更好的照片", "840672750": "如果這不起作用,請卸載並重新安裝 MT5 應用程式。然後重做步驟 <0>2 和 <0>3。", "841434703": "禁用堆叠", @@ -965,6 +962,7 @@ "1061308507": "買入 {{ contract_type }}", "1062423382": "在教學課程標籤中探索視訊指南和常見問答集,以建置機器人。", "1062536855": "等值", + "1062569830": "身分證件的<0>姓名與個人資料不符。", "1065275078": "cTrader 目前只能在桌面上使用。", "1065353420": "110+", "1065498209": "反覆 (1)", @@ -1066,7 +1064,6 @@ "1174689133": "3. 設定交易參數並點選運行。", "1174748431": "付款通道", "1175183064": "萬那杜", - "1176926166": "其它金融工具的交易經驗", "1177396776": "如果選擇「亞洲下跌」期權,當最新價格低於平均價格時,將獲得賠付。", "1177723589": "沒有要顯示的交易", "1178582280": "上次清除統計記錄至今的虧損合約數。", @@ -1150,6 +1147,7 @@ "1255963623": "至日期/時間 {{ input_timestamp }} {{ dummy }}", "1258097139": "我們可以做些什麼改善措施?", "1258198117": "正值", + "1259145708": "請重試。 選擇另一份文件並輸入相應的詳細資訊。", "1259598687": "英鎊/日圓\n", "1260259925": "電話號的格式不正確。", "1263387702": "所有 {{count}} 種帳戶類型均使用市場執行。這意味著您事先同意經紀人的價格,並將以經紀人的價格下訂單。", @@ -1173,7 +1171,6 @@ "1289146554": "英屬維京群島金融服務委員會", "1289646209": "追加保證金通知", "1290525720": "例如: ", - "1291887623": "數字期權交易頻率", "1291997417": "合約將在選擇到期日的格林威治標準時間23:59:59準時到期。", "1292188546": "重設 Deriv MT5 投資者密碼", "1292891860": "通知 Telegram", @@ -1257,7 +1254,6 @@ "1367023655": "為確保虧損不超過投注金額,當虧損與<0/>等值時,合約將自動平倉。", "1367488817": "4. 重啟交易條件", "1367990698": "波動率 10 指數", - "1369709538": "我們的使用條款", "1370647009": "享用更高的每日限額", "1371193412": "取消", "1371555192": "選擇慣用付款代理並輸入提款金額。如果付款代理不在清單裡,請<0>使用其帳號搜尋。", @@ -1297,6 +1293,7 @@ "1413047745": "給變數分配提供的數值", "1413359359": "進行新轉帳", "1414205271": "首要的", + "1414918420": "我們將再次審核您的身分證明,並將盡快通知您。", "1415006332": "從第一項取得子清單", "1415513655": "手機下載 cTrader 即可使用 Deriv cTrader 帳戶交易", "1415974522": "如果選擇「差異」期權,當最新價格的最後一個數字跟預測不同時,將獲得賠付。", @@ -1419,7 +1416,6 @@ "1542742708": "綜合資產、外匯、股票、股票指數、大宗商品和加密貨幣", "1544642951": "如果選擇「只會持續上漲」期權,只要入市現價後的價格持續上漲,將獲得賠付。如果期間內的價格有任何下跌或相等於之前的價格, 將不會獲得賠付。", "1547148381": "該文件太大(最多只允許 8MB)。請上傳另一文件。", - "1548765374": "文件號驗證已失敗", "1549098835": "提款總額", "1551172020": "澳元籃子", "1552162519": "檢視登入狀況", @@ -1647,6 +1643,7 @@ "1790770969": "外匯-主要貨幣對(標準/微手), 外匯-次要貨幣對, 大宗商品, 加密貨幣", "1791432284": "搜尋國家", "1791971912": "最近的", + "1792037169": "為避免延遲,輸入的<0>姓名和<0>出生日期需與{{document_name}} 顯示的完全一致。", "1793913365": "要存款,請先轉至 {{currency_symbol}} 帳戶。", "1794815502": "下載交易歷史。", "1796787905": "請上傳以下文件。", @@ -1792,7 +1789,6 @@ "1924765698": "出生地*", "1926987784": "-iOS:在帳戶上向左滑動,然後點選<0>「刪除」。", "1928930389": "英鎊/挪威克羅鈉", - "1929309951": "就業狀況", "1929694162": "帳戶比較", "1930899934": "Tether", "1931659123": "每一跳動點皆運行", @@ -1966,12 +1962,12 @@ "2115223095": "虧損", "2117165122": "1. 建立Telegram機器人並取得Telegram API權杖。在此處閱讀關於Telegram建立機器人功能的更多資訊:https://core.telegram.org/bots#6-botfather", "2117489390": "{{ remaining }} 秒內自動更新", - "2118315870": "居住地是哪裡?", "2119449126": "以下例子的輸出例將是:", "2119710534": "常見問題集", "2121227568": "小蟻幣/美元", "2122152120": "資產", "2127564856": "提款已被鎖定", + "2129807378": "更新個人資料", "2131963005": "請從以下 Deriv MT5 帳戶取款:", "2133451414": "期限", "2133470627": "此區塊返回選定交易類型的潛在賠付額。此區塊只能用在「購入條件」根塊。", @@ -1992,8 +1988,6 @@ "2146698770": "專家提示:也可以點選並拖出所需的區塊", "2146892766": "二元期權交易經驗", "2147244655": "如何將自己的交易機器人匯入 Deriv 機器人?", - "-1232613003": "<0>驗證失敗。<1>為什麼?", - "-2029508615": "<0>需要驗證。<1>立即驗證", "-931052769": "提交驗證", "-1004605898": "提示", "-1938142055": "文檔已上傳", @@ -2141,18 +2135,9 @@ "-179726573": "已收到擁有權證明。", "-813779897": "擁有權證明驗證已通過。", "-638756912": "將轉帳卡/信用卡正面顯示的卡號的7至12位數字塗黑。", - "-2073934245": "本網站所提供的金融交易服務僅適合這樣的客戶:能夠接受全部投入資金虧損的可能性,了解購買金融合約所蘊含的風險並擁有相關的風險經歷。金融合約交易涉及很大的風險。如果所購買的合約到期時一文不值,投資將完全損失,其中還包括合約費用。", - "-1166068675": "帳戶將通過 {{legal_entity_name}} 開立,並由英國博彩委員會(UKGC)監管,以及受曼島的法律管轄。", - "-975118358": "帳戶將通過 {{legal_entity_name}} 開立,並由馬爾他金融服務機構(MFSA) 監管,以及受馬爾他的法律管轄。", - "-680528873": "帳戶將透過 {{legal_entity_name}} 開立,並受薩摩亞的法律管轄。", - "-1125193491": "新增帳戶", - "-2068229627": "本人不是政治公眾人士,而且在過去的12個月中,我未曾當過政治公眾人士。", "-684271315": "確定", "-740157281": "交易經驗評估", "-1720468017": "為了給您提供服務,我們需要向您索取資訊,以便評估某項產品或服務是否適合您。", - "-186841084": "變更登入電子郵件", - "-907403572": "若要變更電子郵件地址,必須先取消電子郵件地址與 {{identifier_title}} 帳戶的連結。", - "-1850792730": "與 {{identifier_title}} 解除連結", "-307865807": "風險承受警告", "-690100729": "是的,我了解須承擔風險。", "-2010628430": "由於槓桿作用,差價合約和其他金融工具資金快速虧損的風險很高。您必須考慮自己是否了解差價合約和其他金融工具的運作方式,以及是否能夠承擔資金虧損的高風險。 <0/><0/>如要繼續,您必須確認了解自己的資本面臨風險。", @@ -2206,11 +2191,6 @@ "-1725454783": "失敗", "-506510414": "日期和時間", "-1708927037": "IP 地址", - "-619126443": "使用 <0>Deriv 密碼登入{{brand_website_name}} 和 {{platform_name_trader}}。", - "-623760979": "使用 <0>Deriv 密碼登入 {{brand_website_name}}、{{platform_name_trader}} 和 {{platform_name_go}}。", - "-459147994": "使用 <0>Deriv 密碼登入 {{brand_website_name}}、{{platform_name_go}}、{{platform_name_trader}}、{{platform_name_smarttrader}}、{{platform_name_dbot}} 和 {{platform_name_ctrader}}。", - "-80717068": "與<0>Deriv 密碼連結的應用:", - "-9570380": "使用 {{platform_name_dxtrade}} 密碼登入網絡和手機應用上的 {{platform_name_dxtrade}} 帳戶.", "-2131200819": "禁用", "-200487676": "啟用", "-1840392236": "代碼不正確。請重試。", @@ -2240,44 +2220,37 @@ "-378415317": "州/區為必填欄位", "-1497654315": "澤西郵遞區號的使用者不可使用我們的帳戶和服務。", "-755626951": "完成地址資料", - "-584911871": "選擇錢包貨幣", "-1461267236": "請選擇貨幣", - "-1352330125": "貨幣", "-1027595143": "少於$25,000", "-40491332": "$25,000 - $50,000", "-1139806939": "$50,001 - $100,000", - "-626752657": "0-1 年", - "-532014689": "1-2 年", - "-1001024004": "3年以上", - "-790513277": "過去12個月內6-10次交易", - "-580085300": "過去12個月內11-39次交易", - "-654781670": "主要", - "-1717373258": "次要", "-996132458": "建構", "-915003867": "健康", "-1430012453": "資訊和通信技術", "-987824916": "科學 & 工程", "-146630682": "社會 & 文化", "-761306973": "製造", - "-739367071": "就業", - "-1156937070": "$500,001 - $1,000,000", - "-315534569": "大於$1,000,000", - "-2068544539": "支薪員工", - "-531314998": "投資與分紅", - "-1235114522": "退休金", - "-1298056749": "國家收益", - "-449943381": "儲蓄和繼承", "-1631552645": "專業人士", "-474864470": "個人護理、銷售及服務員工", "-1129355784": "農業、林業和漁業工人", "-1242914994": "工藝、金屬、電氣和電子工人", "-1317824715": "清潔工和傭工", "-1592729751": "礦業、建築業、製造業和運輸工人", + "-1030759620": "政府官員", "-2137323480": "公司擁有權", "-1590574533": "離婚協定", "-1667683002": "繼承", "-1237843731": "投資收入", "-777506574": "財產出售", + "-654781670": "主要", + "-1717373258": "次要", + "-1156937070": "$500,001 - $1,000,000", + "-315534569": "大於$1,000,000", + "-2068544539": "支薪員工", + "-531314998": "投資與分紅", + "-1235114522": "退休金", + "-1298056749": "國家收益", + "-449943381": "儲蓄和繼承", "-1161338910": "名字為必填欄位。", "-1161818065": "姓氏的長度必須介於2-50個字元。", "-1281693513": "出生日期為必填欄位。", @@ -2287,28 +2260,14 @@ "-212167954": "稅務識別號碼格式不正確。", "-621555159": "身份資訊", "-204765990": "使用條款", - "-231863107": "否", - "-870902742": "對網上交易有多少知識和經驗?", - "-1929477717": "我擁有與金融服務相關的學術學位、專業認證和/或工作經驗。", - "-1540148863": "我參加了與交易有關的研討會,培訓和/或工作坊。", - "-922751756": "不到一年", - "-542986255": "没有", - "-1337206552": "根據您的理解,差價合約交易可以讓您", - "-456863190": "對資產的價格變動開立頭寸,其結果是固定回報或毫無收益。", - "-1314683258": "進行長期投資以獲得有保障的利潤。", - "-1546090184": "槓桿如何影響差價合約交易?", - "-1636427115": "槓桿幫助降低風險。", - "-800221491": "槓桿保證能獲得利潤。", - "-811839563": "槓桿可以交易價值的一小部分開倉位,這可能會導致利潤或虧損增加。", - "-1185193552": "只要有足夠的市場流動性,當虧損等於或大於指定金額時,交易將自動平倉。", - "-1046354": "只要有足夠的市場流動性,當利潤等於或大於指定金額時,交易將自動平倉。", - "-1842858448": "交易中保證獲得利潤。", - "-860053164": "交易乘數時.", - "-1250327770": "購買公司股票時.", - "-1222388581": "以上全部.", "-477761028": "選民身份證", "-1466346630": "公積金", - "-1030759620": "政府官員", + "-739367071": "就業", + "-626752657": "0-1 年", + "-532014689": "1-2 年", + "-1001024004": "3年以上", + "-790513277": "過去12個月內6-10次交易", + "-580085300": "過去12個月內11-39次交易", "-612752984": "這些是對帳戶施行的預設限額。", "-1598263601": "要了解有關交易限額及其實施方法的更多資訊,請前往<0>幫助中心。", "-1411635770": "了解帳戶限制的詳細資訊", @@ -2326,10 +2285,7 @@ "-1500958859": "驗證", "-1502578110": "帳戶已經得到完全驗證,且取款限額已經取消。", "-1662154767": "近期的水電費帳單(例如電費、水費、煤氣費、固定電話費或互聯網費),銀行對帳單或政府簽發的帶有姓名和地址的信件。", - "-190838815": "需要它進行驗證。如果提供的資訊是虛假的或不正確的,將無法存款和提款。", - "-223216785": "地址第二行*", "-594456225": "地址第二行", - "-1940457555": "郵遞區號*", "-1964954030": "郵遞區號", "-516397235": "與他人分享此代幣要小心。擁有此代幣的任何人都可以代表您的帳戶執行以下操作", "-989216986": "新增帳戶", @@ -2371,8 +2327,6 @@ "-1100235269": "職業領域", "-684388823": "估計淨值", "-509054266": "預期的年交易額", - "-601903492": "外匯交易經驗", - "-1012699451": "差價合約交易經驗", "-1588485629": "例如", "-1117345066": "選擇文件類型", "-651192353": "樣本:", @@ -2393,18 +2347,21 @@ "-1944264183": "如要繼續交易,必須也提交身份證明。", "-1088324715": "將審核文件並於1至3個工作日內通知狀況。", "-329713179": "確定", - "-1176889260": "請選擇文件類型。", - "-1926456107": "所提交的 ID 已過期。", - "-555047589": "身份證明文件似乎已過期。請用有效的文件重試。", - "-841187054": "重試", + "-895884696": "身分證件的<0>姓名和<0>出生日期與個人資料不符。", + "-1792723131": "為避免延誤,請準確輸入{{document_name}} 上的<0>出生日期。", + "-886317740": "身分證件的<0>出生日期與個人資料不符。", + "-1813671961": "身份驗證失敗的原因是:", "-2097808873": "無法根據提供的資訊驗證 ID。 ", - "-228284848": "無法根據提供的資訊驗證 ID。", + "-1652371224": "個人資料已更新", + "-504784172": "文件已提交", "-1391934478": "ID 已驗證。還需提交地址證明。", "-118547687": "ID 驗證已通過", "-200989771": "前往個人資料", "-1358357943": "提交身份證明前請先檢查及更新郵遞區號。", "-1401994581": "缺少個人資料", "-2004327866": "請選擇有效的文件簽發國。", + "-1627868670": "身份證明文件已過期。", + "-1606307809": "無法根據所提供的詳細資訊核實身分證件。", "-1664159494": "國家", "-749870311": "請透過<0>即時聊天與我們聯繫。", "-1084991359": "不需要身份證明驗證", @@ -2464,21 +2421,54 @@ "-142444667": "請點選郵件上的連結以更改 Deriv MT5 密碼。", "-742748008": "查看電子郵件並點選郵件裡的連結以繼續操作。", "-84068414": "還是沒有收到郵件?請通過<0>即時聊天 與我們聯繫。", + "-975118358": "帳戶將通過 {{legal_entity_name}} 開立,並由馬爾他金融服務機構(MFSA) 監管,以及受馬爾他的法律管轄。", + "-2073934245": "本網站所提供的金融交易服務僅適合這樣的客戶:能夠接受全部投入資金虧損的可能性,了解購買金融合約所蘊含的風險並擁有相關的風險經歷。金融合約交易涉及很大的風險。如果所購買的合約到期時一文不值,投資將完全損失,其中還包括合約費用。", + "-1125193491": "新增帳戶", + "-2068229627": "本人不是政治公眾人士,而且在過去的12個月中,我未曾當過政治公眾人士。", + "-186841084": "變更登入電子郵件", + "-907403572": "若要變更電子郵件地址,必須先取消電子郵件地址與 {{identifier_title}} 帳戶的連結。", + "-1850792730": "與 {{identifier_title}} 解除連結", "-428335668": "必須設定密碼以完成流程。", + "-1232613003": "<0>驗證失敗。<1>為什麼?", + "-2029508615": "<0>需要驗證。<1>立即驗證", "-818898181": "文件中的名稱與 Deriv 個人資料不符。", "-310316375": "文件中的地址與上面輸入的地址不符。", "-485368404": "文件簽發日期超過 6 個月。", "-367016488": "文件模糊。所有資訊必須清晰可見。", "-1957076143": "裁剪的文檔。所有資訊必須清晰可見。", + "-1576856758": "具有這些詳細資訊的帳戶已經存在。 請確保輸入的資訊正確無誤,因為每個客戶只能擁有一個真實帳戶。 如果這是個錯誤,請透過<0>即時聊天聯絡我們。", + "-231863107": "否", + "-870902742": "對網上交易有多少知識和經驗?", + "-1929477717": "我擁有與金融服務相關的學術學位、專業認證和/或工作經驗。", + "-1540148863": "我參加了與交易有關的研討會,培訓和/或工作坊。", + "-922751756": "不到一年", + "-542986255": "没有", + "-1337206552": "根據您的理解,差價合約交易可以讓您", + "-456863190": "對資產的價格變動開立頭寸,其結果是固定回報或毫無收益。", + "-1314683258": "進行長期投資以獲得有保障的利潤。", + "-1546090184": "槓桿如何影響差價合約交易?", + "-1636427115": "槓桿幫助降低風險。", + "-800221491": "槓桿保證能獲得利潤。", + "-811839563": "槓桿可以交易價值的一小部分開倉位,這可能會導致利潤或虧損增加。", + "-1185193552": "只要有足夠的市場流動性,當虧損等於或大於指定金額時,交易將自動平倉。", + "-1046354": "只要有足夠的市場流動性,當利潤等於或大於指定金額時,交易將自動平倉。", + "-1842858448": "交易中保證獲得利潤。", + "-860053164": "交易乘數時.", + "-1250327770": "購買公司股票時.", + "-1222388581": "以上全部.", "-1515286538": "請輸入文件號。 ", "-1694758788": "輸入文件編號", "-1458676679": "必須輸入2-50 個字元。", + "-1176889260": "請選擇文件類型。", + "-1265050949": "身份證明文件", "-2139303636": "可能使用的連結已無效,或該頁面已轉移到新地址。", "-1448368765": "錯誤代碼: {{error_code}} 未找到頁面", "-254792921": "目前只能存款。若要啟用提款功能,請完成財務評估。", "-1437017790": "財務資料", "-70342544": "根據法律規定,我們有義務要求您提供財務資料。", "-39038029": "交易經驗", + "-601903492": "外匯交易經驗", + "-1012699451": "差價合約交易經驗", "-1894668798": "其他交易工具經驗", "-1026468600": "其他交易工具頻率", "-1743024217": "選擇語言", @@ -2489,6 +2479,11 @@ "-536187647": "確認撤銷存取權限?", "-1357606534": "權限", "-570222048": "撤銷存取權限", + "-80717068": "與<0>Deriv 密碼連結的應用:", + "-340060402": "Your Deriv X password is for logging in to your Deriv X accounts on the web and mobile apps.", + "-619126443": "使用 <0>Deriv 密碼登入{{brand_website_name}} 和 {{platform_name_trader}}。", + "-623760979": "使用 <0>Deriv 密碼登入 {{brand_website_name}}、{{platform_name_trader}} 和 {{platform_name_go}}。", + "-459147994": "使用 <0>Deriv 密碼登入 {{brand_website_name}}、{{platform_name_go}}、{{platform_name_trader}}、{{platform_name_smarttrader}}、{{platform_name_dbot}} 和 {{platform_name_ctrader}}。", "-1526404112": "水電帳單:電費、水費、煤氣費或固定電話帳單。", "-537552700": "房屋租賃協議:有效的目前使用協議。", "-890084320": "儲存及提交", @@ -2859,6 +2854,30 @@ "-1016171176": "資產", "-621128676": "交易類型", "-447853970": "虧損門檻", + "-155173714": "讓我們建立機器人!", + "-1919212468": "3. 還可以使用類別上方的搜尋列搜尋所需的區塊。", + "-1520558271": "如需更多資訊,檢視這篇介紹建立交易機器人基礎知識的部落格貼文。", + "-980360663": "3.選擇所需的區塊並將其拖曳至工作區。", + "-1493168314": "什麼是快速策略?", + "-1680391945": "使用快速策略", + "-1177914473": "如何儲存策略?", + "-271986909": "在機器人產生器點選頂部工具欄上的儲存以下載機器人。為機器人命名,然後選擇將機器人下載到裝置或 Google 雲端硬盤。機器人將被下載為 XML 文件。", + "-1149045595": "1. 點選匯入後,選擇 本地 ,然後點選 繼續。", + "-288041546": "2. 選擇 XML 文件,然後按打開。", + "-2127548288": "3. 機器人將相應載入。", + "-1311297611": "1. 點選匯入後,選擇 Google 雲端硬盤 ,然後點選 繼續。", + "-1549564044": "如何重設工作區?", + "-1127331928": "在機器人產生器中點選頂部工具欄上的重設以清除工作區。請注意,任何未儲存的變更都將丟失。", + "-1720444288": "如何用 Deriv 機器人控制虧損?", + "-1142295124": "使用 Deriv 機器人可以通過多種方式控制虧損。這是個簡單的示例,說明如何在策略中實施虧損控制:", + "-986689483": "1. 建立以下變數:", + "-269910127": "3. 用上一份合約的利潤更新 目前盈/虧。如果最新合約已丟失, 目前盈/虧的值將為負數。", + "-1565344891": "可否在網頁瀏覽器的多個分頁執行 Deriv 機器人?", + "-90192474": "是,可以的。但是,帳戶有些限制,例如未平倉頭寸的最大數量和未平倉頭寸的最大總賠付額。因此,開立多個頭寸時,請牢記這些限制。可以在設定>帳戶限制中找到有關這些限制的更多資訊。", + "-213872712": "不,Deriv 機器人不提供加密貨幣交易。", + "-2147346223": "Deriv 機器人可在哪些國家/地區使用?", + "-352345777": "最受歡迎的自動交易策略有哪些?", + "-552392096": "自動交易中最常用的三種策略是 Martingale、D'Alembert 和 Oscar's Grind — 可以在 Deriv 機器人找到已經預先製作好等待使用的版本。", "-507620484": "未儲存", "-764102808": "Google Drive", "-555886064": "贏得", @@ -2937,30 +2956,6 @@ "-1823621139": "快速策略", "-1778025545": "已成功匯入機器人。", "-1519425996": "未找到結果 \"{{ faq_search_value }}\"", - "-155173714": "讓我們建立機器人!", - "-1919212468": "3. 還可以使用類別上方的搜尋列搜尋所需的區塊。", - "-1520558271": "如需更多資訊,檢視這篇介紹建立交易機器人基礎知識的部落格貼文。", - "-980360663": "3.選擇所需的區塊並將其拖曳至工作區。", - "-1493168314": "什麼是快速策略?", - "-1680391945": "使用快速策略", - "-1177914473": "如何儲存策略?", - "-271986909": "在機器人產生器點選頂部工具欄上的儲存以下載機器人。為機器人命名,然後選擇將機器人下載到裝置或 Google 雲端硬盤。機器人將被下載為 XML 文件。", - "-1149045595": "1. 點選匯入後,選擇 本地 ,然後點選 繼續。", - "-288041546": "2. 選擇 XML 文件,然後按打開。", - "-2127548288": "3. 機器人將相應載入。", - "-1311297611": "1. 點選匯入後,選擇 Google 雲端硬盤 ,然後點選 繼續。", - "-1549564044": "如何重設工作區?", - "-1127331928": "在機器人產生器中點選頂部工具欄上的重設以清除工作區。請注意,任何未儲存的變更都將丟失。", - "-1720444288": "如何用 Deriv 機器人控制虧損?", - "-1142295124": "使用 Deriv 機器人可以通過多種方式控制虧損。這是個簡單的示例,說明如何在策略中實施虧損控制:", - "-986689483": "1. 建立以下變數:", - "-269910127": "3. 用上一份合約的利潤更新 目前盈/虧。如果最新合約已丟失, 目前盈/虧的值將為負數。", - "-1565344891": "可否在網頁瀏覽器的多個分頁執行 Deriv 機器人?", - "-90192474": "是,可以的。但是,帳戶有些限制,例如未平倉頭寸的最大數量和未平倉頭寸的最大總賠付額。因此,開立多個頭寸時,請牢記這些限制。可以在設定>帳戶限制中找到有關這些限制的更多資訊。", - "-213872712": "不,Deriv 機器人不提供加密貨幣交易。", - "-2147346223": "Deriv 機器人可在哪些國家/地區使用?", - "-352345777": "最受歡迎的自動交易策略有哪些?", - "-552392096": "自動交易中最常用的三種策略是 Martingale、D'Alembert 和 Oscar's Grind — 可以在 Deriv 機器人找到已經預先製作好等待使用的版本。", "-418247251": "下載日誌。", "-2123571162": "下載", "-870004399": "<0>已購入: {{longcode}} (ID: {{transaction_id}})", @@ -3125,7 +3120,6 @@ "-650505513": "全螢幕", "-1823504435": "檢視通知", "-1954045170": "未分配幣種", - "-583559763": "功能表", "-1591792668": "帳戶限額", "-34495732": "監管資訊", "-1496158755": "前往 Deriv.com", @@ -3259,6 +3253,7 @@ "-818926350": "事件發生之日起45天內,金融委員會接受上訴,條件是交易者事先須試圖直接與公司解決問題。", "-1825471709": "功能強大又容易使用的平台全新交易體驗。", "-981017278": "觸手可及的自動交易。無需編碼。", + "-583559763": "功能表", "-778309978": "您點選的連結已過期。請務必點選收件匣中最新電子郵件中的連結。或者,請在下方輸入電子郵件地址,然後按一下<0>重新傳送電子郵件以獲取新的連結。", "-336222114": "請按照以下簡單步驟進行修復:", "-1064116456": "搜尋經紀商 <0>Deriv Holdings (Guernsey) Limited並選擇它。", @@ -3415,22 +3410,6 @@ "-1282933308": "不是 {{barrier}}", "-968190634": "等值 {{barrier}}", "-1747377543": "低於 {{barrier}}", - "-256210543": "此時無法交易。", - "-1150099396": "正在努力為您提供此功能。如果有另一個帳戶,請切換到該帳戶以繼續交易。可以新建 Deriv MT5 金融帳戶。", - "-28115241": "此帳戶不可用 {{platform_name_trader}}", - "-453920758": "前往 {{platform_name_mt5}} 儀表板", - "-402175529": "歷史", - "-902712434": "交易取消", - "-988484646": "交易取消(已執行)", - "-444882676": "交易取消(有效)", - "-13423018": "身份參考號", - "-2035315547": "低障礙", - "-1551639437": "沒有歷史", - "-1214703885": "還未更新止盈或止損", - "-504849554": "將於下述時間後重啟", - "-59803288": "同時請試試綜合指數。它模擬真實市場波動率,並全天候開放。", - "-1278109940": "檢視已開啟的市場", - "-694105443": "此市場已關閉", "-1043795232": "最近的頭寸", "-1511825574": "利潤/虧損:", "-726626679": "潛在利潤/虧損:", @@ -3455,21 +3434,15 @@ "-1435392215": "關於交易取消", "-2017825013": "知道了", "-1192773792": "別再顯示此項", + "-902712434": "交易取消", "-1280319153": "在選定時間範圍內隨時取消交易。如果交易在選定的時間範圍內達到止損水平,將自動觸發此功能。", "-471757681": "風險管理", "-843831637": "止損", "-771725194": "交易取消", "-338707425": "最小持續時間是1天", "-1003473648": "持續時間: {{duration}} 天", - "-740702998": "<0>{{title}} {{message}}", - "-1669741470": "到期時的賠付額等於每點賠付乘以最終價格與行權價格之間的差額。", "-1527492178": "買入被鎖定", "-725375562": "購入按鈕可在設定功能表上鎖定/解鎖", - "-774638412": "投注額必須介於 {{min_stake}} {{currency}} 和 {{max_stake}} {{currency}} 之間", - "-1358367903": "投注資金", - "-434270664": "目前價格", - "-1956787775": "障礙價格:", - "-1513281069": "障礙 2", "-390994177": "必須介於 {{min}} 和 {{max}} 之間", "-1804019534": "到期日: {{date}}", "-2055106024": "高級和簡單持續時間設定之間切換", @@ -3484,6 +3457,7 @@ "-1763848396": "看跌期權", "-194424366": "高於", "-857660728": "行權價格", + "-1358367903": "投注資金", "-1386326276": "障礙為必填欄位。", "-1418742026": "高障礙必須高於低障礙.", "-92007689": "低障礙必須低於高障礙.", @@ -3491,6 +3465,21 @@ "-1975910372": "分鐘數必須在 0 和 59 之間。", "-866277689": "到期時間不可為過去式。", "-1455298001": "現在", + "-256210543": "此時無法交易。", + "-1150099396": "正在努力為您提供此功能。如果有另一個帳戶,請切換到該帳戶以繼續交易。可以新建 Deriv MT5 金融帳戶。", + "-28115241": "此帳戶不可用 {{platform_name_trader}}", + "-453920758": "前往 {{platform_name_mt5}} 儀表板", + "-402175529": "歷史", + "-988484646": "交易取消(已執行)", + "-444882676": "交易取消(有效)", + "-13423018": "身份參考號", + "-2035315547": "低障礙", + "-1551639437": "沒有歷史", + "-1214703885": "還未更新止盈或止損", + "-504849554": "將於下述時間後重啟", + "-59803288": "同時請試試綜合指數。它模擬真實市場波動率,並全天候開放。", + "-1278109940": "檢視已開啟的市場", + "-694105443": "此市場已關閉", "-439389714": "正在處理", "-770929448": "前往 {{platform_name_smarttrader}}", "-347156282": "提交證明", @@ -3537,6 +3526,8 @@ "-454245976": "如果您認為市場價格會在指定期限內持續下跌,請選擇<0>短倉。如果市場價格沒有觸及或高於障礙,您將在到期時獲得賠付。如果未超出障礙,賠付將根據市場價格與障礙之間的差距成比例增長。當賠付高於投注額時,您將開始獲利。如果市場價格超出障礙,則不會有賠付。", "-351875097": "跳動點數目", "-729830082": "檢視較少內容", + "-1669741470": "到期時的賠付額等於每點賠付乘以最終價格與行權價格之間的差額。", + "-740702998": "<0>{{title}} {{message}}", "-1790089996": "新建!", "-993480898": "累計器", "-45873457": "新建", @@ -3557,6 +3548,10 @@ "-690963898": "當賠付額達到此金額,合約將自動平倉。", "-511541916": "達到此跳動點次數時,合約將自動平倉。", "-438655760": "<0>注意:可以隨時關閉交易。注意滑點風險。", + "-774638412": "投注額必須介於 {{min_stake}} {{currency}} 和 {{max_stake}} {{currency}} 之間", + "-434270664": "目前價格", + "-1956787775": "障礙價格:", + "-1513281069": "障礙 2", "-1683683754": "長倉", "-1046859144": "<0>{{title}} 如果市場價格保持在 {{price_position}} 並且沒有觸及或超出障礙,將獲得賠付。否則,賠付將為零。", "-1815023694": "超出障礙", diff --git a/packages/utils/src/__tests__/parse-url.spec.tsx b/packages/utils/src/__tests__/parse-url.spec.tsx new file mode 100644 index 000000000000..a18d3bfcf313 --- /dev/null +++ b/packages/utils/src/__tests__/parse-url.spec.tsx @@ -0,0 +1,13 @@ +import { isExternalLink } from '../parse-url'; + +describe('isExternalLink', () => { + it('should return true if the link matches the regex for external link', () => { + expect(isExternalLink('https://www.deriv.com')).toBeTruthy(); + expect(isExternalLink('mailto://www.deriv.com')).toBeTruthy(); + }); + + it("should return false if the link dosen't match the for external link", () => { + expect(isExternalLink('localhost.binary.sx')).toBeFalsy(); + expect(isExternalLink('sftp://test_doc.com')).toBeFalsy(); + }); +}); diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index d665da00a848..34e53a1a1343 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -6,3 +6,4 @@ export { default as getWalletCurrencyIcon } from './getWalletCurrencyIcon'; export { default as groupTransactionsByDay } from './groupTransactionsByDay'; export { default as getTruncatedString } from './getTruncatedString'; export { default as unFormatLocaleString } from './unFormatLocaleString'; +export * from './parse-url'; diff --git a/packages/utils/src/parse-url.ts b/packages/utils/src/parse-url.ts new file mode 100644 index 000000000000..cd1262aad5ac --- /dev/null +++ b/packages/utils/src/parse-url.ts @@ -0,0 +1,6 @@ +/** + * Checks if the url passed via prop is the route to external URL resource by checking if it starts with http, https or mailto + * @param link string + * @returns boolean + */ +export const isExternalLink = (link: string) => /^(http|https|mailto):/i.test(link);