{"id":265709,"date":"2022-08-20T09:36:11","date_gmt":"2022-08-20T08:36:11","guid":{"rendered":"https:\/\/www.quantifiedmodels.com\/easylanguage-maquina-de-estados-finitos\/"},"modified":"2023-05-05T12:41:53","modified_gmt":"2023-05-05T11:41:53","slug":"maquina-de-estados-finitos","status":"publish","type":"post","link":"https:\/\/www.quantifiedmodels.com\/es\/maquina-de-estados-finitos\/","title":{"rendered":"M\u00e1quina de estados finitos"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;section&#8221; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;0px|0px|0px|0px|true|true&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row use_custom_gutter=&#8221;on&#8221; make_equal=&#8221;on&#8221; admin_label=&#8221;row&#8221; _builder_version=&#8221;4.16&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; width=&#8221;100%&#8221; custom_padding=&#8221;0px||0px||true|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text ul_type=&#8221;square&#8221; ul_position=&#8221;inside&#8221; ol_type=&#8221;decimal-leading-zero&#8221; ol_item_indent=&#8221;10px&#8221; _builder_version=&#8221;4.21.0&#8243; text_line_height=&#8221;1.5em&#8221; link_font=&#8221;|700|||||||&#8221; link_text_color=&#8221;#F53A71&#8243; ul_font=&#8221;||||||||&#8221; ul_font_size=&#8221;16px&#8221; ol_font_size=&#8221;16px&#8221; ol_line_height=&#8221;1.8em&#8221; quote_font=&#8221;TT Octosquares Medium||||||||&#8221; quote_text_align=&#8221;left&#8221; quote_text_color=&#8221;#210750&#8243; quote_font_size=&#8221;18px&#8221; header_2_text_align=&#8221;left&#8221; header_2_line_height=&#8221;1.2em&#8221; header_3_text_align=&#8221;left&#8221; header_3_text_color=&#8221;#7138DF&#8221; header_3_font_size=&#8221;24px&#8221; header_3_line_height=&#8221;1.2em&#8221; header_4_text_align=&#8221;left&#8221; header_4_text_color=&#8221;#7138DF&#8221; header_4_font_size=&#8221;22px&#8221; header_4_line_height=&#8221;1.2em&#8221; header_5_text_color=&#8221;#333333&#8243; header_5_font_size=&#8221;20px&#8221; header_6_text_color=&#8221;#333333&#8243; header_6_font_size=&#8221;18px&#8221; text_orientation=&#8221;justified&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h2>M\u00e1quina de estados finitos: Premisa<\/h2>\n<div class=\"et_pb_module et_pb_text et_pb_text_1 et_pb_text_align_justified et_pb_bg_layout_light\">\n<div class=\"et_pb_text_inner\">\n<p>Un componente importante del algoritmo Turtle fue omitir la siguiente ruptura de 20 d\u00edas si la anterior result\u00f3 ganadora. Supongo que Dennis cre\u00eda que el \u00e9xito \/ fracaso de una operaci\u00f3n ten\u00eda un impacto en el resultado de la operaci\u00f3n posterior. He escrito sobre c\u00f3mo puede implementar esto en EasyLanguage en publicaciones anteriores, pero he recibido algunas preguntas sobre la implementaci\u00f3n de la m\u00e1quina de estados finitos en el comercio y pens\u00e9 que esta publicaci\u00f3n podr\u00eda matar dos p\u00e1jaros de un tiro: 1) proporcionar una plantilla que se pueda adaptar a cualquier El mecanismo LTL y 2) proporcionan el c\u00f3digo \/ estructura para configurar un FSM utilizando la estructura Switch \/ Case de EasyLanguage.<\/p>\n<\/div>\n<\/div>\n<div class=\"et_pb_module et_pb_text et_pb_text_2 et_pb_text_align_justified et_pb_bg_layout_light\">\n<div class=\"et_pb_text_inner\">\u00a0<\/div>\n<\/div>\n<p>[\/et_pb_text][et_pb_text ul_type=&#8221;square&#8221; ul_position=&#8221;inside&#8221; ol_type=&#8221;decimal-leading-zero&#8221; ol_item_indent=&#8221;10px&#8221; _builder_version=&#8221;4.21.0&#8243; text_line_height=&#8221;1.5em&#8221; link_font=&#8221;|700|||||||&#8221; link_text_color=&#8221;#F53A71&#8243; ul_font=&#8221;||||||||&#8221; ul_font_size=&#8221;16px&#8221; ol_font_size=&#8221;16px&#8221; ol_line_height=&#8221;1.8em&#8221; quote_font=&#8221;TT Octosquares Medium||||||||&#8221; quote_text_align=&#8221;left&#8221; quote_text_color=&#8221;#210750&#8243; quote_font_size=&#8221;18px&#8221; header_2_text_align=&#8221;left&#8221; header_2_line_height=&#8221;1.2em&#8221; header_3_text_align=&#8221;left&#8221; header_3_text_color=&#8221;#7138DF&#8221; header_3_font_size=&#8221;24px&#8221; header_3_line_height=&#8221;1.2em&#8221; header_4_text_align=&#8221;left&#8221; header_4_text_color=&#8221;#7138DF&#8221; header_4_font_size=&#8221;22px&#8221; header_4_line_height=&#8221;1.2em&#8221; header_5_text_color=&#8221;#333333&#8243; header_5_font_size=&#8221;20px&#8221; header_6_text_color=&#8221;#333333&#8243; header_6_font_size=&#8221;18px&#8221; text_orientation=&#8221;justified&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h2>L\u00f3gica LTL espec\u00edfica para tortugas<\/h2>\n<p>La l\u00f3gica de Turtle LTL establece que un intercambio es un perdedor si se produce una p\u00e9rdida de 2N despu\u00e9s de la entrada. N es b\u00e1sicamente una media m\u00f3vil exponencial de TrueRange. Entonces, si el mercado se mueve 2N contra una posici\u00f3n larga o corta y lo detiene, tiene una operaci\u00f3n perdedora. Lo que hace que el algoritmo Turtle sea un poco m\u00e1s dif\u00edcil es que tambi\u00e9n puede salir en un nuevo m\u00ednimo \/ m\u00e1ximo de 10 d\u00edas dependiendo de su posici\u00f3n. La salida final de 10 d\u00edas no significa una p\u00e9rdida. Bueno, al menos en esta publicaci\u00f3n no es as\u00ed. Tengo un c\u00f3digo que dice que cualquier p\u00e9rdida es una p\u00e9rdida, pero para esta explicaci\u00f3n, lim\u00edtese a una p\u00e9rdida de 2N para determinar la falla de una operaci\u00f3n.<\/p>\n<p>[\/et_pb_text][et_pb_text ul_type=&#8221;square&#8221; ul_position=&#8221;inside&#8221; ol_type=&#8221;decimal-leading-zero&#8221; ol_item_indent=&#8221;10px&#8221; _builder_version=&#8221;4.21.0&#8243; text_line_height=&#8221;1.5em&#8221; link_font=&#8221;|700|||||||&#8221; link_text_color=&#8221;#F53A71&#8243; ul_font=&#8221;||||||||&#8221; ul_font_size=&#8221;16px&#8221; ol_font_size=&#8221;16px&#8221; ol_line_height=&#8221;1.8em&#8221; quote_font=&#8221;TT Octosquares Medium||||||||&#8221; quote_text_align=&#8221;left&#8221; quote_text_color=&#8221;#210750&#8243; quote_font_size=&#8221;18px&#8221; header_2_text_align=&#8221;left&#8221; header_2_line_height=&#8221;1.2em&#8221; header_3_text_align=&#8221;left&#8221; header_3_text_color=&#8221;#7138DF&#8221; header_3_font_size=&#8221;24px&#8221; header_3_line_height=&#8221;1.2em&#8221; header_4_text_align=&#8221;left&#8221; header_4_text_color=&#8221;#7138DF&#8221; header_4_font_size=&#8221;22px&#8221; header_4_line_height=&#8221;1.2em&#8221; header_5_text_color=&#8221;#333333&#8243; header_5_font_size=&#8221;20px&#8221; header_6_text_color=&#8221;#333333&#8243; header_6_font_size=&#8221;18px&#8221; text_orientation=&#8221;justified&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h2>C\u00f3mo supervisar operaciones cuando se saltan algunas de ellas<\/h2>\n<p>Esta es otra capa adicional de complejidad. Tienes que hacer tu propia contabilidad comercial entre bastidores para determinar si se produce una operaci\u00f3n perdedora. Porque si tiene una operaci\u00f3n ganadora, omite la siguiente operaci\u00f3n y si la omite, \u00bfc\u00f3mo sabe si habr\u00eda sido un ganador o un perdedor? Tiene que ejecutar un sistema te\u00f3rico en paralelo con el c\u00f3digo del sistema real.<\/p>\n<p>Bien, comencemos asumiendo que la \u00faltima operaci\u00f3n fue ganadora. As\u00ed que desactivamos el comercio real. A medida que pasan las barras, buscamos una penetraci\u00f3n alta o baja en 20 d\u00edas . Suponga que se coloca un nuevo m\u00e1ximo de 20 d\u00edas y se establece una posici\u00f3n larga en el m\u00e1ximo de 20 d\u00edas anterior. En este punto, calcula una cantidad de 2N y resta si del precio de entrada te\u00f3rico para obtener el precio de salida te\u00f3rico. Entonces tiene un theoMP (marketPosition) y un theoEX (precio de salida). Esta tarea parece bastante simple, as\u00ed que sigue adelante y comienza a buscar un d\u00eda que ponga un nuevo m\u00ednimo de 10 d\u00edas o cruce por debajo de su precio theoEX . Si un nuevoSe coloca el m\u00ednimo de 10 d\u00edas y luego contin\u00faa buscando una nueva entrada y una p\u00e9rdida posterior de 2N. Si se produce una p\u00e9rdida de 2N, vuelve a activar las operaciones y contin\u00faa monitorizando las operaciones, desactivando y volviendo a activar las operaciones cuando sea necesario. En el siguiente c\u00f3digo utilizo estas variables:<\/p>\n<ul>\n<li><strong>estado<\/strong><span>\u00a0<\/span>\u2013 0: buscando una entrada o 1: buscando una salida<\/li>\n<li><strong>lep<\/strong><span>\u00a0<\/span>\u2013 precio de entrada larga<\/li>\n<li><strong>sep<\/strong><span>\u00a0<\/span>\u2013 precio de entrada corta<\/li>\n<li><strong>seekLong<\/strong><span>\u00a0<\/span>\u2013 Estoy buscando una posici\u00f3n larga<\/li>\n<li><strong>seekShort<\/strong>: estoy buscando una posici\u00f3n corta<\/li>\n<li><strong>theoMP<\/strong><span>\u00a0<\/span>\u2013 posici\u00f3n te\u00f3rica en el mercado<\/li>\n<li><strong>theoEX<\/strong><span>\u00a0<\/span>\u2013 precio de salida te\u00f3rico<\/li>\n<li><strong>lxp<\/strong><span>\u00a0<\/span>\u2013 precio de salida largo<\/li>\n<li><strong>sxp<\/strong><span>\u00a0<\/span>\u2013 precio de salida corto<\/li>\n<\/ul>\n<p>Saltemos a la estructura Switch \/ Case cuando state = 0:<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; text_font=&#8221;Raleway||||||||&#8221; text_text_color=&#8221;#ffffff&#8221; text_font_size=&#8221;15px&#8221; text_line_height=&#8221;1.9em&#8221; header_font=&#8221;Raleway||||||||&#8221; header_2_font=&#8221;Poppins|700|||||||&#8221; header_2_text_align=&#8221;left&#8221; header_2_text_color=&#8221;#000000&#8243; header_2_font_size=&#8221;36px&#8221; header_2_line_height=&#8221;1.2em&#8221; header_4_font=&#8221;Poppins|600|||||||&#8221; header_4_text_align=&#8221;left&#8221; header_4_text_color=&#8221;#0c5adb&#8221; header_4_font_size=&#8221;20px&#8221; header_4_line_height=&#8221;1.2em&#8221; background_color=&#8221;#000000&#8243; text_orientation=&#8221;justified&#8221; header_2_font_size_tablet=&#8221;&#8221; header_2_font_size_phone=&#8221;24px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<div class=\"code-embed-wrapper\">\n<pre class=\"language-cpp code-embed-pre line-numbers\" data-line=\"9,15\" data-start=\"1\" data-line-offset=\"0\"><code class=\"language-cpp code-embed-code\">\tSwitch(state)\n\tBegin\n\t\tCase 0:\n\t\t\tlep = highest(h[1],20) + minMove\/priceScale;\n\t\t\tsep = lowest(l[1],20) - minMove\/priceScale;\n\t\t\tIf seekLong and h &gt;= lep then \n\t\t\tbegin\n\t\t\t\ttheoMP = 1;\n\t\t\t\ttheoEX = maxList(lep,o) - 2 * atr; \n\/\/\t\t\t\tprint(d,\" entered long &gt;&gt; exit at \",theoEX,\" \",atr);\n\t\t\tend;\n\t\t\tIf seekShort and l &lt;= sep then \n\t\t\tbegin\n\t\t\t\ttheoMP = -1;\n\t\t\t\ttheoEX = minList(sep,o) + 2 * atr;\n\t\t\tend;\n\t\t\tIf theoMP &lt;&gt; 0 then \n\t\t\tbegin\n\t\t\t\tstate = 1;\n\t\t\t\tcantExitToday = True;\n\t\t\tend;<\/code><\/pre>\n<\/div>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;TT Octosquares Medium||||||||&#8221; text_text_color=&#8221;#7138DF&#8221; text_font_size=&#8221;14px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;-10px||||false|false&#8221; custom_padding=&#8221;0px||||false|false&#8221; hover_enabled=&#8221;0&#8243; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<p>Estado 0 (Finite State Set Up)<\/p>\n<p>[\/et_pb_text][et_pb_text ul_type=&#8221;square&#8221; ul_position=&#8221;inside&#8221; ol_type=&#8221;decimal-leading-zero&#8221; ol_item_indent=&#8221;10px&#8221; _builder_version=&#8221;4.21.0&#8243; text_line_height=&#8221;1.5em&#8221; link_font=&#8221;|700|||||||&#8221; link_text_color=&#8221;#F53A71&#8243; ul_font=&#8221;||||||||&#8221; ul_font_size=&#8221;16px&#8221; ol_font_size=&#8221;16px&#8221; ol_line_height=&#8221;1.8em&#8221; quote_font=&#8221;TT Octosquares Medium||||||||&#8221; quote_text_align=&#8221;left&#8221; quote_text_color=&#8221;#210750&#8243; quote_font_size=&#8221;18px&#8221; header_2_text_align=&#8221;left&#8221; header_2_line_height=&#8221;1.2em&#8221; header_3_text_align=&#8221;left&#8221; header_3_text_color=&#8221;#7138DF&#8221; header_3_font_size=&#8221;24px&#8221; header_3_line_height=&#8221;1.2em&#8221; header_4_text_align=&#8221;left&#8221; header_4_text_color=&#8221;#7138DF&#8221; header_4_font_size=&#8221;22px&#8221; header_4_line_height=&#8221;1.2em&#8221; header_5_text_color=&#8221;#333333&#8243; header_5_font_size=&#8221;20px&#8221; header_6_text_color=&#8221;#333333&#8243; header_6_font_size=&#8221;18px&#8221; text_orientation=&#8221;justified&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>El Switch \/ Case es una estructura imprescindible en cualquier lenguaje de programaci\u00f3n. Lo que realmente me sorprende es que Python no lo tiene. Afirman que es redundante para una estructura if-then y lo es, pero es mucho m\u00e1s f\u00e1cil de leer e implementar. B\u00e1sicamente, usa la instrucci\u00f3n Switch y un nombre de variable y, seg\u00fan el valor de la variable, fluir\u00e1 a cualquier caso al que la variable sea igual. Aqu\u00ed estamos viendo el estado 0. En la estructura CASE: 0 , la computadora calcula los valores lep y sep \u2013 niveles de entrada largos y cortos. Si est\u00e1 plano, entonces est\u00e1 buscando una posici\u00f3n larga o corta. Si el m\u00e1ximo o m\u00ednimo de la barra penetra en sus respectivos niveles de activaci\u00f3n, entonces el oMP se establece en 1 durante mucho tiempo o -1para abreviar. Luego, TheoEX se calcula en funci\u00f3n del valor atr el d\u00eda de la entrada. Si theoMP se establece en 1 o -1, entonces sabemos que se acaba de activar una operaci\u00f3n. La m\u00e1quina de estados finitos luego cambia de marcha a estado 1 . Dado que State = 1, la siguiente declaraci\u00f3n Case se eval\u00faa inmediatamente. No quiero salir en la misma barra en la que entr\u00e9 (las barras anchas pueden entrar y salir durante tiempos vol\u00e1tiles). Utilizo una variable cantExitToday. Esta variable retrasa la evaluaci\u00f3n del Caso 1: una barra.<\/p>\n<p>Estado = 1 c\u00f3digo:<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; text_font=&#8221;Raleway||||||||&#8221; text_text_color=&#8221;#ffffff&#8221; text_font_size=&#8221;15px&#8221; text_line_height=&#8221;1.9em&#8221; header_font=&#8221;Raleway||||||||&#8221; header_2_font=&#8221;Poppins|700|||||||&#8221; header_2_text_align=&#8221;left&#8221; header_2_text_color=&#8221;#000000&#8243; header_2_font_size=&#8221;36px&#8221; header_2_line_height=&#8221;1.2em&#8221; header_4_font=&#8221;Poppins|600|||||||&#8221; header_4_text_align=&#8221;left&#8221; header_4_text_color=&#8221;#0c5adb&#8221; header_4_font_size=&#8221;20px&#8221; header_4_line_height=&#8221;1.2em&#8221; background_color=&#8221;#000000&#8243; text_orientation=&#8221;justified&#8221; hover_enabled=&#8221;0&#8243; header_2_font_size_tablet=&#8221;&#8221; header_2_font_size_phone=&#8221;24px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<div class=\"code-embed-wrapper\">\n<pre class=\"language-cpp code-embed-pre line-numbers\" data-start=\"1\" data-line-offset=\"0\"><code class=\"language-cpp code-embed-code\">\tCase 1:\n\t\tIf not(cantExitToday) then\n\t\tbegin\n\t\t\tlxp = maxList(theoEX,lowest(l[1],10)-minMove\/priceScale);\n\t\t\tsxp = minList(theoEX,highest(h[1],10)+minMove\/priceScale);\t\n\t\t\tIf theoMP = 1 and l &lt;= lxp then\n\t\t\tbegin\n\t\t\t\ttheoMP = 0;\n\t\t\t\tseekLong = False;\n\t\t\t\tif lxp &lt;= theoEX then \n\t\t\t\t\tltl = True\n\t\t\t\tElse \n\t\t\t\t\tltl = False;\n\t\t\tend;\n\t\t\tIf theoMP =-1 and h &gt;= sxp then\n\t\t\tbegin\n\t\t\t\ttheoMP = 0;\n\t\t\t\tseekShort = False;\n\t\t\t\tif sxp &gt;= theoEX then \n\t\t\t\t\tltl = True\n\t\t\t\telse \n\t\t\t\t\tltl = False;\n\t\t\tend;\n\t\t\tIf theoMP = 0 then state = 0;\n\t\tend;\n\t\tcantExitToday = False;\t\nend;<\/code><\/pre>\n<\/div>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;TT Octosquares Medium||||||||&#8221; text_text_color=&#8221;#7138DF&#8221; text_font_size=&#8221;14px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;-10px||||false|false&#8221; custom_padding=&#8221;0px||||false|false&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Estado = 1 (Cambio de marchas)<\/p>\n<p>[\/et_pb_text][et_pb_text ul_type=&#8221;square&#8221; ul_position=&#8221;inside&#8221; ol_type=&#8221;decimal-leading-zero&#8221; ol_item_indent=&#8221;10px&#8221; _builder_version=&#8221;4.21.0&#8243; text_line_height=&#8221;1.5em&#8221; link_font=&#8221;|700|||||||&#8221; link_text_color=&#8221;#F53A71&#8243; ul_font=&#8221;||||||||&#8221; ul_font_size=&#8221;16px&#8221; ol_font_size=&#8221;16px&#8221; ol_line_height=&#8221;1.8em&#8221; quote_font=&#8221;TT Octosquares Medium||||||||&#8221; quote_text_align=&#8221;left&#8221; quote_text_color=&#8221;#210750&#8243; quote_font_size=&#8221;18px&#8221; header_2_text_align=&#8221;left&#8221; header_2_line_height=&#8221;1.2em&#8221; header_3_text_align=&#8221;left&#8221; header_3_text_color=&#8221;#7138DF&#8221; header_3_font_size=&#8221;24px&#8221; header_3_line_height=&#8221;1.2em&#8221; header_4_text_align=&#8221;left&#8221; header_4_text_color=&#8221;#7138DF&#8221; header_4_font_size=&#8221;22px&#8221; header_4_line_height=&#8221;1.2em&#8221; header_5_text_color=&#8221;#333333&#8243; header_5_font_size=&#8221;20px&#8221; header_6_text_color=&#8221;#333333&#8243; header_6_font_size=&#8221;18px&#8221; text_orientation=&#8221;justified&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Una vez que tenemos una posici\u00f3n te\u00f3rica, solo examinamos el c\u00f3digo en el m\u00f3dulo Caso 1: En la barra siguiente despu\u00e9s de la entrada, se calculan lxp y sxp (precios de salida larga y salida corta). Tenga en cuenta que estos valores usan maxList o minList para determinar cu\u00e1l est\u00e1 m\u00e1s cerca de la acci\u00f3n actual del mercado: el stop 2N o el m\u00ednimo \/ m\u00e1ximo m\u00ednimo \/ m\u00e1ximo de los \u00faltimos 10 d\u00edas. Lxp y sxp se asignan lo que est\u00e9 m\u00e1s cerca. El m\u00e1ximo o m\u00ednimo de cada barra se compara con estos valores. Si theoMP = 1 entonces el bajo se compara con lxp. Si la baja cruza por debajo de lxp, entonces las cosas se ponen en movimiento. El theoMP se establece inmediatamente a 0 y seekLong se volvi\u00f3 a Falso. Si lxp &lt;= una p\u00e9rdida 2N, entonces ltl (perdedor de la \u00faltima operaci\u00f3n) se establece en verdadero. De lo contrario, ltl se establece en False. Si theoMP = 0, entonces asumimos una posici\u00f3n plana y cambiamos el FSM de nuevo al estado 0 y comenzamos a buscar una nueva operaci\u00f3n. El ltl Luego, la variable se usa en el c\u00f3digo para permitir que ocurra un intercambio real.<\/p>\n<p>[\/et_pb_text][et_pb_text ul_type=&#8221;square&#8221; ul_position=&#8221;inside&#8221; ol_type=&#8221;decimal-leading-zero&#8221; ol_item_indent=&#8221;10px&#8221; _builder_version=&#8221;4.21.0&#8243; text_line_height=&#8221;1.5em&#8221; link_font=&#8221;|700|||||||&#8221; link_text_color=&#8221;#F53A71&#8243; ul_font=&#8221;||||||||&#8221; ul_font_size=&#8221;16px&#8221; ol_font_size=&#8221;16px&#8221; ol_line_height=&#8221;1.8em&#8221; quote_font=&#8221;TT Octosquares Medium||||||||&#8221; quote_text_align=&#8221;left&#8221; quote_text_color=&#8221;#210750&#8243; quote_font_size=&#8221;18px&#8221; header_2_text_align=&#8221;left&#8221; header_2_line_height=&#8221;1.2em&#8221; header_3_text_align=&#8221;left&#8221; header_3_text_color=&#8221;#7138DF&#8221; header_3_font_size=&#8221;24px&#8221; header_3_line_height=&#8221;1.2em&#8221; header_4_text_align=&#8221;left&#8221; header_4_text_color=&#8221;#7138DF&#8221; header_4_font_size=&#8221;22px&#8221; header_4_line_height=&#8221;1.2em&#8221; header_5_text_color=&#8221;#333333&#8243; header_5_font_size=&#8221;20px&#8221; header_6_text_color=&#8221;#333333&#8243; header_6_font_size=&#8221;18px&#8221; text_orientation=&#8221;justified&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h3>La estrategia incorpora nuestra m\u00e1quina de estados finitos<\/h3>\n<p>&nbsp;<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; text_font=&#8221;Raleway||||||||&#8221; text_text_color=&#8221;#ffffff&#8221; background_color=&#8221;#000000&#8243; global_colors_info=&#8221;{}&#8221;]<\/p>\n<div class=\"code-embed-wrapper\">\n<pre class=\"language-cpp code-embed-pre line-numbers\" data-start=\"1\" data-line-offset=\"0\"><code class=\"language-cpp code-embed-code\">vars:N(0),mp(0),NLossAmt(0);\nIf barNumber = 1 then n = avgTrueRange(20);\nif barNumber &gt; 1 then n = (n*19 + trueRange)\/20;\n\nIf useLTLFilter then\nBegin\n\tif ltl then buy next bar at highest(h,20) + minMove\/priceScale stop;\n\tif ltl then sellShort next bar at lowest(l,20) -minMove\/priceScale stop;\nend\nElse\nBegin\n\tbuy next bar at highest(h,20) + minMove\/priceScale stop;\n\tsellShort next bar at lowest(l,20) -minMove\/priceScale stop;\nend;\n\nmp = marketPosition;\n\nIf mp &lt;&gt; 0 and mp[1] &lt;&gt; mp then NLossAmt = 2 * n;\n\nIf mp = 1 then\nBegin\n\tSell(\"LL10-LX\") next bar at lowest(l,10) - minMove\/priceScale stop;\n\tSell(\"2NLS-LX\") next bar at entryPrice - NLossAmt stop;\nend;\nIf mp =-1 then\nBegin\n\tbuyToCover(\"HH10-SX\") next bar at highest(h,10) + minMove\/priceScale stop;\n\tbuyToCover(\"2NLS-SX\") next bar at entryPrice + NLossAmt stop;\nend;<\/code><\/pre>\n<\/div>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;TT Octosquares Medium||||||||&#8221; text_text_color=&#8221;#7138DF&#8221; text_font_size=&#8221;14px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;-10px||||false|false&#8221; custom_padding=&#8221;0px||||false|false&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>C\u00f3digo de estrategia con filtro LTL<\/p>\n<p>[\/et_pb_text][et_pb_text ul_type=&#8221;square&#8221; ul_position=&#8221;inside&#8221; ol_type=&#8221;decimal-leading-zero&#8221; ol_item_indent=&#8221;10px&#8221; _builder_version=&#8221;4.21.0&#8243; text_line_height=&#8221;1.5em&#8221; link_font=&#8221;|700|||||||&#8221; link_text_color=&#8221;#F53A71&#8243; ul_font=&#8221;||||||||&#8221; ul_font_size=&#8221;16px&#8221; ol_font_size=&#8221;16px&#8221; ol_line_height=&#8221;1.8em&#8221; quote_font=&#8221;TT Octosquares Medium||||||||&#8221; quote_text_align=&#8221;left&#8221; quote_text_color=&#8221;#210750&#8243; quote_font_size=&#8221;18px&#8221; header_2_text_align=&#8221;left&#8221; header_2_line_height=&#8221;1.2em&#8221; header_3_text_align=&#8221;left&#8221; header_3_text_color=&#8221;#7138DF&#8221; header_3_font_size=&#8221;24px&#8221; header_3_line_height=&#8221;1.2em&#8221; header_4_text_align=&#8221;left&#8221; header_4_text_color=&#8221;#7138DF&#8221; header_4_font_size=&#8221;22px&#8221; header_4_line_height=&#8221;1.2em&#8221; header_5_text_color=&#8221;#333333&#8243; header_5_font_size=&#8221;20px&#8221; header_6_text_color=&#8221;#333333&#8243; header_6_font_size=&#8221;18px&#8221; text_orientation=&#8221;justified&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<p>Este c\u00f3digo b\u00e1sicamente replica lo que hicimos en la m\u00e1quina de estados finitos, pero coloca \u00f3rdenes reales basadas en el hecho de que la \u00faltima operaci\u00f3n fue un perdedor (LTL).<\/p>\n<p>[\/et_pb_text][et_pb_text ul_type=&#8221;square&#8221; ul_position=&#8221;inside&#8221; ol_type=&#8221;decimal-leading-zero&#8221; ol_item_indent=&#8221;10px&#8221; _builder_version=&#8221;4.21.0&#8243; text_line_height=&#8221;1.5em&#8221; link_font=&#8221;|700|||||||&#8221; link_text_color=&#8221;#F53A71&#8243; ul_font=&#8221;||||||||&#8221; ul_font_size=&#8221;16px&#8221; ol_font_size=&#8221;16px&#8221; ol_line_height=&#8221;1.8em&#8221; quote_font=&#8221;TT Octosquares Medium||||||||&#8221; quote_text_align=&#8221;left&#8221; quote_text_color=&#8221;#210750&#8243; quote_font_size=&#8221;18px&#8221; header_2_text_align=&#8221;left&#8221; header_2_line_height=&#8221;1.2em&#8221; header_3_text_align=&#8221;left&#8221; header_3_text_color=&#8221;#7138DF&#8221; header_3_font_size=&#8221;24px&#8221; header_3_line_height=&#8221;1.2em&#8221; header_4_text_align=&#8221;left&#8221; header_4_text_color=&#8221;#7138DF&#8221; header_4_font_size=&#8221;22px&#8221; header_4_line_height=&#8221;1.2em&#8221; header_5_text_color=&#8221;#333333&#8243; header_5_font_size=&#8221;20px&#8221; header_6_text_color=&#8221;#333333&#8243; header_6_font_size=&#8221;18px&#8221; text_orientation=&#8221;justified&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h3>\u00bfFunciona la m\u00e1quina de estados finitos? S\u00f3lo opere despu\u00e9s de una p\u00e9rdida de 2N<\/h3>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.quantifiedmodels.com\/wp-content\/uploads\/2022\/08\/LTLExample-1.webp&#8221; show_in_lightbox=&#8221;on&#8221; use_overlay=&#8221;on&#8221; overlay_icon_color=&#8221;#F53A71&#8243; hover_overlay_color=&#8221;rgba(33,7,80,0.6)&#8221; hover_icon=&#8221;&#xe054;||divi||400&#8243; align=&#8221;center&#8221; _builder_version=&#8221;4.21.0&#8243; width=&#8221;60%&#8221; width_tablet=&#8221;60%&#8221; width_phone=&#8221;60%&#8221; width_last_edited=&#8221;on|desktop&#8221; module_alignment=&#8221;center&#8221; custom_padding=&#8221;10px|20px|10px|20px|false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_image src=&#8221;https:\/\/www.quantifiedmodels.com\/wp-content\/uploads\/2022\/08\/NOLTLCrude.webp&#8221; show_in_lightbox=&#8221;on&#8221; use_overlay=&#8221;on&#8221; overlay_icon_color=&#8221;#F53A71&#8243; hover_overlay_color=&#8221;rgba(33,7,80,0.6)&#8221; hover_icon=&#8221;&#xe054;||divi||400&#8243; align=&#8221;center&#8221; _builder_version=&#8221;4.21.0&#8243; width=&#8221;60%&#8221; width_tablet=&#8221;60%&#8221; width_phone=&#8221;60%&#8221; width_last_edited=&#8221;on|desktop&#8221; module_alignment=&#8221;center&#8221; custom_padding=&#8221;10px|20px|10px|20px|false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;TT Octosquares Medium||||||||&#8221; text_text_color=&#8221;#7138DF&#8221; text_font_size=&#8221;14px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;-10px||||false|false&#8221; custom_padding=&#8221;0px||||false|false&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Sin filtro en los \u00faltimos 10 a\u00f1os en crudo<\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.quantifiedmodels.com\/wp-content\/uploads\/2022\/08\/LTLCrude.webp&#8221; show_in_lightbox=&#8221;on&#8221; use_overlay=&#8221;on&#8221; overlay_icon_color=&#8221;#F53A71&#8243; hover_overlay_color=&#8221;rgba(33,7,80,0.6)&#8221; hover_icon=&#8221;&#xe054;||divi||400&#8243; align=&#8221;center&#8221; _builder_version=&#8221;4.21.0&#8243; width=&#8221;60%&#8221; width_tablet=&#8221;60%&#8221; width_phone=&#8221;60%&#8221; width_last_edited=&#8221;on|desktop&#8221; module_alignment=&#8221;center&#8221; custom_padding=&#8221;10px|20px|10px|20px|false|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.21.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;TT Octosquares Medium||||||||&#8221; text_text_color=&#8221;#7138DF&#8221; text_font_size=&#8221;14px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;-10px||||false|false&#8221; custom_padding=&#8221;0px||||false|false&#8221; hover_enabled=&#8221;0&#8243; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<p>M\u00e1quina de estados finitos con filtro en los \u00faltimos 10 a\u00f1os en crudo<\/p>\n<p>[\/et_pb_text][et_pb_text ul_type=&#8221;square&#8221; ul_position=&#8221;inside&#8221; ol_type=&#8221;decimal-leading-zero&#8221; ol_item_indent=&#8221;10px&#8221; _builder_version=&#8221;4.21.0&#8243; text_line_height=&#8221;1.5em&#8221; link_font=&#8221;|700|||||||&#8221; link_text_color=&#8221;#F53A71&#8243; ul_font=&#8221;||||||||&#8221; ul_font_size=&#8221;16px&#8221; ol_font_size=&#8221;16px&#8221; ol_line_height=&#8221;1.8em&#8221; quote_font=&#8221;TT Octosquares Medium||||||||&#8221; quote_text_align=&#8221;left&#8221; quote_text_color=&#8221;#210750&#8243; quote_font_size=&#8221;18px&#8221; header_2_text_align=&#8221;left&#8221; header_2_line_height=&#8221;1.2em&#8221; header_3_text_align=&#8221;left&#8221; header_3_text_color=&#8221;#7138DF&#8221; header_3_font_size=&#8221;24px&#8221; header_3_line_height=&#8221;1.2em&#8221; header_4_text_align=&#8221;left&#8221; header_4_text_color=&#8221;#7138DF&#8221; header_4_font_size=&#8221;22px&#8221; header_4_line_height=&#8221;1.2em&#8221; header_5_text_color=&#8221;#333333&#8243; header_5_font_size=&#8221;20px&#8221; header_6_text_color=&#8221;#333333&#8243; header_6_font_size=&#8221;18px&#8221; text_orientation=&#8221;justified&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<p>He programado esto en mi software TradingSimula-18.<\/p>\n<p>Tuve que hacer un poco de juego con algunos c\u00f3digos debido al hecho de que se puede salir y volver a entrar en la misma barra. En el pr\u00f3ximo post de este blog os contar\u00e9 esas maquinaciones. Con esta plantilla, deber\u00eda poder recrear cualquier \u00faltima operaci\u00f3n que fue un mecanismo perdedor y ver si puede ayudarlo con sus propios algoritmos de negociaci\u00f3n.<\/p>\n<p>Esperamos este art\u00edculo le haya servido para programar sus estrategias con la m\u00e1quina de estados finitos de George Pruitt.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; gutter_width=&#8221;1&#8243; make_equal=&#8221;on&#8221; _builder_version=&#8221;4.19.5&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; max_width=&#8221;100%&#8221; module_alignment=&#8221;center&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.19.5&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_divider color=&#8221;#7138DF&#8221; divider_position=&#8221;center&#8221; divider_weight=&#8221;3px&#8221; _builder_version=&#8221;4.19.5&#8243; _module_preset=&#8221;default&#8221; width=&#8221;90%&#8221; max_width=&#8221;90%&#8221; module_alignment=&#8221;right&#8221; custom_margin=&#8221;10px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; animation_style=&#8221;zoom&#8221; animation_direction=&#8221;right&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][et_pb_text _builder_version=&#8221;4.19.5&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;TT Octosquares Medium||||||||&#8221; text_text_color=&#8221;#7138DF&#8221; link_font=&#8221;TT Octosquares Medium|700|||||||&#8221; link_text_color=&#8221;#F53A71&#8243; text_orientation=&#8221;right&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||2px||false|false&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Este art\u00edculo fue cedido por George Pruitt<\/p>\n<p>[\/et_pb_text][et_pb_cta title=&#8221;Canal de YouTube de Quantified Models&#8221; button_url=&#8221;https:\/\/www.youtube.com\/channel\/UC1aM_BnnBAWRSjiApHVGD5w&#8221; url_new_window=&#8221;on&#8221; button_text=&#8221;Mira nuestros videos&#8221; _builder_version=&#8221;4.19.5&#8243; _module_preset=&#8221;default&#8221; header_text_align=&#8221;center&#8221; header_text_color=&#8221;#75E1EE&#8221; header_font_size=&#8221;26px&#8221; body_font_size=&#8221;18px&#8221; background_color=&#8221;#210750&#8243; custom_button=&#8221;on&#8221; button_text_color=&#8221;#210750&#8243; button_bg_color=&#8221;#75E1EE&#8221; button_border_width=&#8221;0px&#8221; button_border_radius=&#8221;0px&#8221; button_font=&#8221;TT Octosquares Medium||||||||&#8221; button_icon=&#8221;&#xe04a;||divi||400&#8243; button_icon_color=&#8221;#FFFFFF&#8221; custom_margin=&#8221;20px||20px||false|false&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221; button_bg_color__hover=&#8221;#F53A71&#8243; button_bg_color__hover_enabled=&#8221;on|desktop&#8221; button_bg_enable_color__hover=&#8221;on&#8221; button_text_color__hover=&#8221;#FFFFFF&#8221; button_text_color__hover_enabled=&#8221;on|hover&#8221;]<\/p>\n<p>En nuestro canal de YouTube tenemos varios videos disponibles que pueden resultarle muy \u00fatiles para desarrollar sistemas de trading.<\/p>\n<p>Esperamos que esta informaci\u00f3n te haya sido de utilidad.<\/p>\n<p>[\/et_pb_cta][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>George Pruitt ha programado esta m\u00e1quina de estados finitos en EasyLanguage, con su software TradingSimula-18, usando el algoritmo Turtle.<\/p>\n","protected":false},"author":1,"featured_media":265171,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","_ayudawp_aiss_exclude":false,"_ayudawp_aiss_summary":"","_ayudawp_aiss_summary_provider":"","_ayudawp_aiss_summary_hash":"","footnotes":""},"categories":[110],"tags":[371,435,355,328,294,118,299,338,336,342,341,358,344,346,311,364],"class_list":["post-265709","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-easylanguage-es","tag-algoritmo","tag-codigo-es","tag-estrategia","tag-filtro","tag-fsm-es","tag-george-pruitt-es","tag-ltl-es","tag-mecanismo","tag-mercado","tag-monitor-es","tag-operacion","tag-plantilla","tag-portfolio-es","tag-programacion","tag-tortuga","tag-trading-es"],"_links":{"self":[{"href":"https:\/\/www.quantifiedmodels.com\/es\/wp-json\/wp\/v2\/posts\/265709","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.quantifiedmodels.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.quantifiedmodels.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.quantifiedmodels.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.quantifiedmodels.com\/es\/wp-json\/wp\/v2\/comments?post=265709"}],"version-history":[{"count":0,"href":"https:\/\/www.quantifiedmodels.com\/es\/wp-json\/wp\/v2\/posts\/265709\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.quantifiedmodels.com\/es\/wp-json\/wp\/v2\/media\/265171"}],"wp:attachment":[{"href":"https:\/\/www.quantifiedmodels.com\/es\/wp-json\/wp\/v2\/media?parent=265709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.quantifiedmodels.com\/es\/wp-json\/wp\/v2\/categories?post=265709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.quantifiedmodels.com\/es\/wp-json\/wp\/v2\/tags?post=265709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}