[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 189

 

Solía aprender los fundamentos de la programación (hace 25 años - Algol 60 :))) En aquella época, todo empezaba con la creación de un algoritmo (cuadrados, rombos), y luego este algoritmo se describía con un lenguaje. Ahora no veo ningún algoritmo o comando.

¿Tenéis alguna recomendación de buenos tutoriales sobre mql4? Preferiblemente con ejemplos concretos de escritura experta, empezando por el algoritmo.

 
v721965 писал(а) >>

Solía aprender los fundamentos de la programación (hace 25 años - Algol 60 :))) En aquella época, todo empezaba con la creación de un algoritmo (cuadrados, rombos), y luego este algoritmo se describía con un lenguaje. Ahora no veo ningún algoritmo o comando.

¿Tenéis alguna recomendación de buenos tutoriales sobre mql4? Preferiblemente con ejemplos concretos de redacción de EA, a partir del algoritmo.

https://book.mql4.com/ru/

 
alvish >> :
pro favor aconsejar, según la ayuda del lenguaje mql5 no existe la función iHighest como calcular el máximo alto para N período? ... He intentado copyHigh y fmax, pero sólo para un determinado período y no que por supuesto, ayuda

He aquí un ejemplo:

         int shift_Box_Start = iBarShift(NULL, 0, TimeBoxStart);
         Box_Start_High      = High[iHighest(NULL, 0, MODE_HIGH, shift_Box_Start- i, i+1)];
         Box_Start_Low       =  Low[iLowest(NULL,  0, MODE_LOW,  shift_Box_Start- i, i+1)];

Sólo asegúrate de que tienes las palancas de cambio bien puestas.

 

1. Intentando ejecutar el EA en modo de prueba con visualización. El EA es sencillo: genera un mensaje a través de Alerta. Cuando la alerta está en init, el mensaje se da al inicio. Cuando está en inicio, el EA no reacciona a un nuevo tick. ¿Cuál es el problema?

2. En el mismo modo de prueba, también inicio un script, que muestra los valores de Time[1], Close[1],... (como referencia). Descubrí que estos valores se basan en el tiempo actual (real) y no en el tiempo de recepción de ticks y barras formadas en el gráfico. ¿Qué se puede hacer?

 
Roger писал(а) >>

Para el EURGBP devuelve - 0 (eso es Alpari) en corto y -0,68 en largo y eso es exactamente en dólares.

Para Alpari el tipo de cálculo del swap es 0 y el mío es 1,

Sin embargo, necesito saber todo tipo de cálculos.

He probado todas las combinaciones: multiplicación, división o ninguna multiplicación.

Aquí está el código que calcula todo esto y devuelve lo más cercano al valor real del swap.

int a,b,c,d,dd;

dd=1;

double raznica;

for ( j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {

int a_=0,b_=0,c_=0,d_=0;

raznica=1000000;

OrderSelect(j, SELECT_BY_POS, MODE_HISTORY);

if(OrderSwap()!=0){

if(OrderType()==OP_BUY){

for(a=-dd;a<=dd;a++){

for(b=-dd;b<=dd;b++){

for(c=-dd;c<=dd;c++){

for(d=-dd;d<=dd;d++){

double gg=MathPow(MarketInfo(OrderSymbol(),MODE_SWAPLONG),a)*MathPow(OrderLots(),b)*MathPow(MarketInfo(OrderSymbol(),MODE_TICKVALUE),c)*MathPow(MarketInfo(OrderSymbol(),MODE_BID),d);

if(MathAbs(gg-OrderSwap())<raznica){raznica=MathAbs(gg-OrderSwap());a_=a;b_=b;c_=c;}

}}}}

Alert(" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+"РАСЧЕТНЫЙ СВОП = "+gg+"\n a= "+a_+" b = "+b_+" c = "+c_+" d = "+d_);

}//if(OrderType()==OP_BUY){

if(OrderType()==OP_SELL){

for(a=-dd;a<=dd;a++){

for(b=-dd;b<=dd;b++){

for(c=-dd;c<=dd;c++){

for(d=-dd;d<=dd;d++){

gg=MathPow(MarketInfo(OrderSymbol(),MODE_SWAPSHORT),a)*MathPow(OrderLots(),b)*MathPow(MarketInfo(OrderSymbol(),MODE_TICKVALUE),c)*MathPow(MarketInfo(OrderSymbol(),MODE_BID),d);

if(MathAbs(gg-OrderSwap())<raznica){raznica=MathAbs(gg-OrderSwap());a_=a;b_=b;c_=c;}

}}}}

Alert(" РЕАЛЬНЫЙ СВОП = "+OrderSwap()+"РАСЧЕТНЫЙ СВОП = "+gg+"\n a= "+a_+" b = "+b_+" c = "+c_+" d = "+d_);

}//if(OrderType()==OP_SELL){

}//if(OrderSwap()!=0){

}//for ( j=OrdersHistoryTotal( )-1; j>=OrdersHistoryTotal( )-21; j--) {

No obtuve resultados ni para Alpari ni para BROCO.

Es decir

MarketInfo(OrderSymbol(),MODE_SWAPLONG)

OrderLots()

MarketInfo(OrderSymbol(),MODE_TICKVALUE)

MarketInfo(OrderSymbol(),MODE_BID)

No es suficiente para el cálculo del canje.

Debe haber algo más, pero ¿qué es?

 
Gracias chief2000, pero escribiste a través del estándar iHighest y iLowest, ese es el problema, y no están en mql 5
 
alvish >> :
Gracias jefe2000, pero usted escribió a través de la norma iHighest y iLowest, ese es el problema con mql 5.

Ahora veo que no he leído bien la pregunta.

¿Realmente tengo que describir todo manualmente en la versión 5? Algo no está bien aquí, ¿quizás hay un problema con la documentación?

 
ahí lo tienes.
 
vasya_vasya >> :

Para Alpari el tipo de cálculo del swap es 0 y el mío es 1,


Vasya, ¿por qué te molestas? Te lo dije aquí 'Swaps en mql4' muy brevemente

puedo entrar en detalles,

hay 4 variantes en total

cada uno con una fórmula diferente.

 
kaisa писал(а) >>

Vasya, ¿por qué te molestas? Te lo dije aquí 'Swaps en mql4' brevemente.

Puedo entrar en más detalles si lo necesitas,

hay 4 variantes en total

para cada uno una fórmula diferente

sí, ¿puedo tener las otras fórmulas?