¿Cómo codificar? - página 274

 

Desgraciadamente no hay forma de cambiar el comentario una vez que se ha abierto una orden. Entonces se convierte en un privilegio exclusivo del corredor (y lo cambian en casos de cierres parciales) Parece que metatrader fue capaz de proporcionar el cierre parcial de retroceso a algunos corredores sólo a través del campo de comentario y luego decidieron cerrarlo de los cambios a nosotros (simples mortales) completamente

JohnCrawdford:
Hola,

¿Hay alguna manera de cambiar el OrderComment, después de que la orden ha sido creada?

Tengo un EA que crea órdenes pendientes en puntos clave que son susceptibles de ser alcanzados, sin embargo a veces esas órdenes tienen que ser canceladas/borradas debido a movimientos rápidos no deseados en los gráficos, por lo tanto no es posible utilizar el número de ticket para identificar cada orden, porque cada orden de punto clave puede ser abierta y cancelada/borrada varias veces, por lo que en su lugar el EA utiliza un OrderComment único para identificar cada orden, pero de vez en cuando el ordenador que ejecuta el EA falla o la conexión a internet falla, y eso desordena la identificación de la orden de punto clave y por lo tanto sería útil cambiar el OrderComment para evitar errores causados por el desorden que se crea después de que el EA se reinicie sin haber terminado la ejecución anterior.

Muy confuso, ¿verdad?

P.D. el número mágico se está utilizando para identificar las órdenes creadas por el EA, por lo que no puedo utilizar ese número para identificar cada orden individualmente.

Si alguien pudiera decirme si hay alguna forma de cambiar el OrderComments se lo agradecería,

Gracias de antemano.
 

¿Cómo tener una compilación dinámica en un EA?

¡Hola mundo!

Quiero saber cómo crear un EA con compilación dinámica (F5) por ejemplo cada 20 segundos.

He visto que la función F5 fue definida por VK_F5 (¡Gracias Coders Guru!). Pero, ¿cómo se ejecuta?

este es mi EA

**********************************

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

#property copyright "Copyright © 2008, Systematic-Forex"

#property link "http://www.systematic-forex.com"

#property indicator_chart_window

#property indicator_buffers 1

#property indicador_color1 LightGray // Amarillo

extern int TimeFrame = 5;

/*

extern string help_magic_number = "ponlo si vas a usar la opción de cierre 3 - cierre por número mágico";

extern int número_mágico = 0; // configúrelo si va a utilizar la opción de cierre 3 - cierre por número mágico

extern string help_comment_text = "establézcalo si va a utilizar la opción de cierre 4 - cierre por comentario";

extern string comment_text = "";

extern bool HotKeyOn = true;

extern bool CtrlOn = true;

extern bool ShiftOn = false

extern bool AltOn = false;

extern string HotKey = "A";

*/

#importar "user32.dll"

bool GetAsyncKeyState(int nVirtKey);

#importar

#include //para MessageBoxA

//---- MessageBox() Banderas

#define MB_OK 0x00000000

#define MB_OKCANCEL 0x00000001

#define MB_ABORTRETRYIGNORE 0x00000002

#define MB_YESNOCANCEL 0x00000003

#define MB_YESNO 0x00000004

#define MB_RETRYCANCEL 0x00000005

#define MB_ICONHAND 0x00000010

#define MB_ICONQUESTION 0x00000020

#define MB_ICONEXCLAMATION 0x00000030

#define MB_ICONASTERISK 0x00000040

#define MB_USERICON 0x00000080

#define MB_ICONWARNING MB_ICONEXCLAMATION

#define MB_ICONERROR MB_ICONHAND

#define MB_ICONINFORMATION MB_ICONASTERISK

#define MB_ICONSTOP MB_ICONHAND

#define MB_DEFBUTTON1 0x00000000

#define MB_DEFBUTTON2 0x00000100

#define MB_DEFBUTTON3 0x00000200

#define MB_DEFBUTTON4 0x00000300

#define MB_APPLMODAL 0x00000000

#define MB_SYSTEMMODAL 0x00001000

#define MB_TASKMODAL 0x00002000

#define MB_HELP 0x00004000 // Botón de ayuda

#define MB_NOFOCUS 0x00008000

#define MB_SETFOREGROUND 0x00010000

#define MB_DEFAULT_DESKTOP_ONLY 0x20000

#define MB_TOPMOST 0x00040000

#define MB_RIGHT 0x00080000

#define MB_RTLREADING 0x00100000

#define KEYEVENTF_EXTENDEDKEY 0x0001

#define KEYEVENTF_KEYUP 0x0002

#define VK_0 48

#define VK_1 49

#define VK_2 50

#define VK_3 51

#define VK_4 52

#define VK_5 53

#define VK_6 54

#Definición VK_7 55

#Definición VK_8 56

#define VK_9 57

#define VK_A 65

#define VK_B 66

#define VK_C 67

#Definición VK_D 68

#Definición VK_E 69

#Definición VK_F 70

#Definición VK_G 71

#Definición VK_H 72

#Definición VK_I 73

#Definición VK_J 74

#Definición VK_K 75

#Definición VK_L 76

#Definición VK_M 77

#define VK_N 78

#define VK_O 79

#Definición VK_P 80

#define VK_Q 81

#Definición VK_R 82

#Definición VK_S 83

#Definición VK_T 84

#Definición VK_U 85

#define VK_V 86

#define VK_W 87

#define VK_X 88

#Definición VK_Y 89

#Definición VK_Z 90

#define VK_LBUTTON 1 /Botón izquierdo del ratón

#define VK_RBUTTON 2 //Botón derecho del ratón

#define VK_CANCEL 3 //Proceso de ruptura de control

#define VK_MBUTTON 4 //Botón central del ratón (ratón de tres botones)

#define VK_BACK 8 //Tecla BACKSPACE

#define VK_TAB 9 //Tecla TABULAR

#define VK_CLEAR 12 /Tecla de borrar

#define VK_RETURN 13 //Tecla ENTRAR

#define VK_SHIFT 16 /Tecla SHIFT

#define VK_CONTROL 17 /Tecla CTRL

#define VK_MENU 18 //Tecla ALT

#define VK_PAUSE 19 //Tecla PAUSE

#define VK_CAPITAL 20 /Tecla CAPS LOCK

#define VK_ESCAPE 27 //Tecla ESC

#define VK_SPACE 32 //Barra espaciadora

#define VK_PRIOR 33 //Tecla de SUBIR PÁGINA

#define VK_NEXT 34 //Tecla PÁGINA ABAJO

#define VK_END 35 //Tecla FIN

#define VK_HOME 36 //tecla de HOME

#define VK_LEFT 37 //Tecla FLECHA IZQUIERDA

#define VK_UP 38 //Tecla FLECHA ARRIBA

#define VK_RIGHT 39 //Tecla de FLECHA DERECHA

#define VK_DOWN 40 //Tecla de FLECHA ABAJO

#define VK_PRINT 42 /Tecla PRINT

#define VK_SNAPSHOT 44 /Tecla IMPRIMIR PANTALLA

#define VK_INSERT 45 //TeclaINS

#define VK_DELETE 46 /Tecla DEL

#define VK_HELP 47 //Tecla HELP

#define VK_LWIN 91 /Tecla izquierda de Windows (teclado Microsoft® Natural®)

#define VK_RWIN 92 //Tecla derecha de Windows (teclado natural)

#define VK_APPS 93 /Tecla de aplicaciones (teclado natural)

#define VK_SLEEP 95 /Tecla de reposo del ordenador

#define VK_NUMPAD0 96 //Tecla del teclado numérico 0

#define VK_NUMPAD1 97 //Tecla del teclado numérico 1

#define VK_NUMPAD2 98 //Tecla del teclado numérico 2

#define VK_NUMPAD3 99 //Tecla del teclado numérico 3

#define VK_NUMPAD4 100 //Tecla del teclado numérico 4

#define VK_NUMPAD5 101 //Tecla 5 del teclado numérico

#define VK_NUMPAD6 102 //Teclado numérico 6 tecla

#define VK_NUMPAD7 103 //Teclado numérico 7 tecla

#define VK_NUMPAD8 104 //Teclado numérico 8 tecla

#define VK_NUMPAD9 105 //Teclado numérico 9 tecla

#define VK_MULTIPLY 106 /Tecla de multiplicación

#define VK_ADD 107 /Tecla de adición

#define VK_SEPARATOR 108 /Tecla separadora

#define VK_SUBTRACT 109 //Tecla de sustracción

#define VK_DECIMAL 110 /Tecla decimal

#define VK_DIVIDE 111 /Tecla de división

#define VK_F1 112 //Tecla F1

#define VK_F2 113 //Tecla F2

#define VK_F3 114 //Tecla F3

#define VK_F4 115 //Tecla F4

#define VK_F5 116 //Tecla F5

#define VK_F6 117 //Tecla F6

#define VK_F7 118 //Tecla F7

#define VK_F8 119 //Tecla F8

#define VK_F9 120 //Tecla F9

#define VK_F10 121 //Tecla F10

#define VK_F11 122 //Tecla F11

#define VK_F12 123 //Tecla F12

#define VK_F13 124 //Tecla F13

#define VK_NUMLOCK 144 //Tecla NUM LOCK

#define VK_SCROLL 145 /Tecla de bloqueo de desplazamiento

#define VK_LSHIFT 160 /Tecla SHIFT izquierda

#define VK_RSHIFT 161 //Tecla SHIFT derecha

#define VK_LCONTROL 162 //Tecla CONTROL izquierda

#define VK_RCONTROL 163 //Tecla de CONTROL derecha

#define VK_LMENU 164 //Tecla MENÚ izquierda

#define VK_RMENU 165 //Tecla de MENÚ derecha

//---- buffers

doble Buffer[];

int i,j;

//+------------------------------------------------------------------+

//| Función de inicialización de los indicadores personalizados

//+------------------------------------------------------------------+

int init()

{

//---- indicadores

SetIndexStyle(0,DRAW_LINE);

//SetIndexStyle(0,DRAW_SECTION);

//SetIndexStyle(0,DRAW_ARROW);

//SetIndexStyle(0,DRAW_HISTOGRAM);

//SetIndexStyle(0,DRAW_ZIGZAG);

//SetIndexStyle(0,DRAW_NONE);

SetIndexBuffer(0,Buffer);

SetIndexEmptyValue(0,EMPTY_VALUE);

Comment("\n"+"test_A_sar");

//----

return(0);

}

//+------------------------------------------------------------------+

//| Función de desinicialización del indicador Custor ||

//+------------------------------------------------------------------+

int deinit()

{

Comentario("");

return(0);

}

//+------------------------------------------------------------------+

//| Función de iteración del indicador personalizada ||

//+------------------------------------------------------------------+

int inicio()

{

int límite;

int barras_contadas=IndicadorContado();

if(counted_bars>0) counted_bars--;

limit=Barras_contadas;

for(int i=0; i<límite; i++)

{

datetime i_Time = iTime(NULL, 0, i);

int j = iBarShift(NULL, TimeFrame, i_Time, bool false);

double sar_m5 = iSAR(NULL, PERIOD_M5 , 0.02, 0.2, j + 0);

double var_indicateur = sar_m5 ;

/*

//

if(Seconds()== 20)

{

Compilado o VK_F5

}

if(Seconds()== 40)

{

Compilado o VK_F5

}

*/

Buffer= sar_m5;

}

return(0);

}

//+------------------------------------------------------------------+

**********************************

Saludos cordiales test_a_sar_m5.mq4test_a_sar_m5.mq4

Archivos adjuntos:
 

Ayuda

El problema es que en algunos gráficos de Metatrader el valor de las barras de precios se muestra en cinco dígitos (1.4545), pero en mi Metatrader se muestra el valor de seis dígitos (1.45456). Así, cuando se trata de poner stop loss de acuerdo con su sistema, el valor de stop loss se convierte en 200 pips a 400 pips.

Gracias de antemano.

 

estrategia de kelly en la gestión de dinero martingala

Cualquiera puede editar esto a la estrategia de kelly o dividido por 10.

mi tamaño de lote es 0.10 cuando la equidad inicial es de $250 esto debe cambiar a 0.11 cuando el crecimiento de la equidad a $500

-------------------------------------------------------------------

if(Gestión_del_dinero)

{

switch(Tipo de cuenta)

{

caso 0: lotsi=NormalizeDouble(MathCeil((risk*AccountEquity())/10000)/10,1); break;

caso 1: lotsi=NormalizeDouble((risk*AccountEquity())/100000,2); break;

caso 2: lotsi=NormalizarDoble((riesgo*CuentaPatrimonio())/1000,2); break;

por defecto: lotsi=NormalizeDouble(MathCeil((risk*AccountEquity())/10000)/10,1); break;

}

-------------------------------------------------------------------

Gracias

 

Pregunta de icustom

Sé que he posteado en el hilo de icustom pero...

según el código del gurú del código

double clr = iCustom(NULL,0,"LSMA in Color",14,1500,5,0);

string sclr;

if(clr==1) sclr="Red";

if(clr==2) sclr="Green";

if(clr==3) sclr="Yellow";

¿Cómo puedo obtener otro marco de tiempo con el mismo buffer?

nota el mismo clr tendría un valor diferente para 2 marcos de tiempo diferentes.

¿como se puede hacer para evitarlo?

 
khatrisushil:
Estoy enfrentando un problema debido a la pérdida de la parada, si alguien me puede dar respuesta al respecto. el problema es en algunos gráficos de metatrader el valor de las barras de precios muestra en cinco dígitos (1.4545), pero en mi metatrader que muestran seis dígitos de valor (1.45456). por lo tanto, cuando se trata de poner la pérdida de la parada de acuerdo a su sistema, el valor de la pérdida de la parada se convierten en 200 pips a 400 pips. no sé cómo solucionarlo. me estoy exponiendo mucho. me sopló mi cuenta dos veces debido a este problema. Gracias de antemano.

fist necesita detectar el broker qué dígito

en el código debe ser capaz de detectar el tipo de dígito, hay suficiente ejemplo en la codificación de ea dígitos.

Por lo tanto, es posible que desee estudiar en algunos EA que capaz de manejar tanto 4 o 5 dígitos corredor

 

¡Ayúdenme a modificar mi EA en el corredor de ejecución del mercado!

Hola a todos, soy nuevo en el mundo de los EAs, he creado un EA con una señal falsa:

double Buy1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Buy3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Buy4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Buy4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Sell3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Sell4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

if (Buy1_1 = Buy2_2 && Buy3_1 < Buy3_2 && Buy4_1 < Buy4_2) Order = SIGNAL_BUY;

if (Sell1_1 > Sell1_2 && Sell2_1 Sell3_2 && Sell4_1 > Sell4_2) Order = SIGNAL_SELL;

Pero no entiendo por qué mi EA puede trabajar bien en la ejecución instantánea (creo que sí), pero en la ejecución del mercado no hace nada, soy comerciante en easy-forex, su cuenta de demostración es la ejecución instantánea mi EA funciona bien, pero en la cuenta real con la ejecución del mercado mi EA no hacer nada, quiero decir que no puede analizar el gráfico en ese MT4, no error, no hacer nada.

Estoy en contacto con el soporte de easy-forex y me dicen que por la ejecución instantánea diferente y la ejecución del mercado. Así que encontré a alguien que tiene expence sobre EA y el comercio. Por favor, ayúdenme a modificar mi EA.

Muchas gracias.

 
alvintran:
Hola a todos, soy un nuevo en EA, he wirted un EA con tragery Signal :

double Buy1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Buy2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Buy3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Buy4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Buy4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1);

double Sell2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1);

double Sell3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0);

double Sell4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1);

double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0);

if (Buy1_1 = Buy2_2 && Buy3_1 < Buy3_2 && Buy4_1 < Buy4_2) Order = SIGNAL_BUY;

if (Sell1_1 > Sell1_2 && Sell2_1 Sell3_2 && Sell4_1 > Sell4_2) Order = SIGNAL_SELL;

Pero no entiendo por qué mi EA puede trabajar bien en la ejecución instantánea (creo que sí), pero en la ejecución del mercado no hace nada, soy comerciante en easy-forex, su cuenta de demostración es la ejecución instantánea mi EA funciona bien, pero en la cuenta real con la ejecución del mercado mi EA no hacer nada, quiero decir que no puede analizar el gráfico en ese MT4, no error, no hacer nada.

Estoy en contacto con el soporte de easy-forex y me dicen que por la ejecución instantánea diferente y la ejecución del mercado. Así que encontré a alguien que tiene expence sobre EA y el comercio. Por favor, ayúdame a modificar mi EA.

¡Muchas gracias!

[lang=pl]Creo que puede ser un problema con SL/TP. Por favor, muéstrame tu código, o parte

donde se envían las órdenes.

Saludos,

Grzesiek[/lang]

 
g.pociejewski:
[lang=pl]Creo que puede ser problema de SL/TP. Por favor, muéstreme su código, o parte

donde se envían los pedidos.

Saludos,

Grzesiek[/lang]

No, no, no es un problema de SL/TP, sé que el problema, me dijo que no hacer nada, es decir, en la cuenta de demostración ( ejecución instantánea o algo que no sé) que funciona bien, pero en la cuenta real no funciona, no tiene ningún problema, simplemente no hacer nada.

Este EA por mí escrito, no comprar, no la versión de prueba, no cualquier limitada.

Por favor, ayuda

 

Añadir marcos de tiempo y obtener buffers

mtuppers:

double clr = iCustom(NULL,0,"LSMA in Color",14,1500,5,0);

string sclr;

if(clr==1) sclr="Red";

if(clr==2) sclr="Green";

if(clr==3) sclr="Yellow";

¿Cómo puedo obtener otro marco de tiempo con el mismo buffer?

nota el mismo clr tendría un valor diferente para 2 marcos de tiempo diferentes.

¿Cómo se puede solucionar?

Hola Mtuppers,

Marco de tiempo actual original:

double clr = iCustom(NULL,0, "LSMA in Color",14,1500,5,0);

Añade el periodo de tiempo que quieras y cambia el nombre de la variable para que sea diferente (clr y clr2):

double clr2 = iCustom(NULL,Period_H1, "LSMA in Color",14,1500,5,0); // Period_H1 Time Frame

En el indicador "LSMA in Color" - Hay 3 buffers para los colores, no sólo uno, por lo que puede utilizar 3 sentencias iCustom para obtenerlos todos.

Aquí están los números de los buffers :

SetIndexBuffer(2,ExtMapBuffer1);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexBuffer(0,ExtMapBuffer3);

SetIndexBuffer(3,sum);

SetIndexBuffer(4,wt);

SetIndexBuffer(5,clr);

* Fíjate que en tu ejemplo estás usando el Buffer 0, por lo que en realidad sólo estás obteniendo un color en el ExtMapBuffer3. El buffer "clr" es el Buffer 5.

Aquí están las asignaciones del buffer de color en el indicador:

ExtMapBuffer3[shift] = wt[shift]; //rojo

ExtMapBuffer2[shift] = wt[shift]; //verde

ExtMapBuffer1[shift] = wt[shift]; //amarillo

Espero que esto ayude,

Robert

Razón de la queja: