Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 236

 
Yaroslav Nykula:

... todos los pares de divisas en los que está presente el USD ...

Supongo que hay un cálculo en el código del margen utilizado de los fondos de comercio - tratar de abrir una cuenta en una moneda distinta del USD y ver si la prueba pasa.
 
<br / translate="no">

Voy a suponer que hay un cálculo del margen utilizado de los fondos de comercio en el código - tratar de abrir una cuenta en algo distinto de USD y ver si la prueba pasa.



En el código no se calcula el"margen utilizado de los fondos comerciales"... y al final de mi primer post señalé"cambiar la vista de la moneda de depósito en el probador no soluciona el problema".

 
Yaroslav Nykula:

En el código no se calcula el"margen utilizado de los fondos comerciales"... y al final de mi primer post señalé"cambiar el tipo de moneda de depósito en el probador no soluciona el problema".

Entonces, mis poderes telepáticos se han acabado: pon el código.

 

Perdón por la pregunta, sé cómo insertar un indicador externo en un EA usando un buffer... Pero en este indicador no hay un búfer, ¿cómo puedo obtener el precio superior e inferior.




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

//|                                                trendlinesDay.mq4 |

//|                      Copyright © 2008, MetaQuotes Software Corp. |

//|                                        https://www.metaquotes.net |

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

#property copyright "nsi2000"

#property link      "http://www.expert-mt4.nm.ru"

//----

#property indicator_chart_window

//---- input parameters

extern int nPeriod=10;

extern int Limit=350;

   double Up[];

   double Dn[];

///---- int Widners Oscilator

int cnt,nCurBar=0;

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

//| Custom indicator initialization function                         |

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

int init()

  {      

//---- Output in Char

   for(cnt=0; cnt<=5; cnt++)

     {

      ObjectCreate("WSO-"+cnt,OBJ_HLINE,0,0,0);

      ObjectSet("WSO-"+cnt,OBJPROP_COLOR,Red);

      if(cnt<5)

        {

         ObjectCreate("Trend DN-"+cnt,OBJ_TREND,0,0,0,0,0);

         ObjectSet("Trend DN-"+cnt,OBJPROP_COLOR,Magenta);

        }

      //----

      ObjectCreate("WRO-"+cnt,OBJ_HLINE,0,0,0);

      ObjectSet("WRO-"+cnt,OBJPROP_COLOR,Blue);

      if(cnt<5)

        {

         ObjectCreate("Trend UP-"+cnt,OBJ_TREND,0,0,0,0,0);

         ObjectSet("Trend Up-"+cnt,OBJPROP_COLOR,Aqua);

        }

     }

//----

   return(0);

  }

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

//| Custor indicator deinitialization function                       |

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

int deinit()

  {

//---- TODO: add your code here

   for(cnt=0; cnt<=5; cnt++)

     {

      ObjectDelete("Trend UP-"+cnt);

      ObjectDelete("Trend DN-"+cnt);

      ObjectDelete("WSO-"+cnt);

      ObjectDelete("WRO-"+cnt);

     }

//----

   return(0);

  }

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

//| Custom indicator iteration function                              |

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

int start()

  {

//---- TODO: add your code here


   double r1,r2,r3,r4,r5,r6;

   int rt1,rt2,rt3,rt4,rt5,rt6;

   double s1,s2,s3,s4,s5,s6;

   int st1,st2,st3,st4,st5,st6;


//---- Линии сопротивления и поддержки

   if(Bars<Limit) Limit=Bars-nPeriod;

   for(nCurBar=Limit; nCurBar>0; nCurBar--)

     {

      if(Low[nCurBar+(nPeriod-1)/2]==Low[Lowest(NULL,0,MODE_LOW,nPeriod,nCurBar)])

        {

         s6=s5; s5=s4; s4=s3; s3=s2; s2=s1; s1=Low[nCurBar+(nPeriod-1)/2];

         st6=st5; st5=st4; st4=st3; st3=st2; st2=st1; st1=nCurBar+(nPeriod-1)/2;

        }

      if(High[nCurBar+(nPeriod-1)/2]==High[Highest(NULL,0,MODE_HIGH,nPeriod,nCurBar)])

        {

         r6=r5; r5=r4; r4=r3; r3=r2; r2=r1; r1=High[nCurBar+(nPeriod-1)/2];

         rt6=rt5; rt5=rt4; rt4=rt3; rt3=rt2; rt2=rt1; rt1=nCurBar+(nPeriod-1)/2;

        }

     }

//---- Move Object in Chart


   ObjectMove("Trend DN-0",1,Time[st1],s1);

   ObjectMove("Trend DN-0",0,Time[st2],s2);


//----

   ObjectMove("Trend UP-0",1,Time[rt1],r1);

   ObjectMove("Trend UP-0",0,Time[rt2],r2);

//----

   return(0);

  }

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


 
Vyacheslav Kornev:

Perdón por la pregunta, sé cómo insertar un indicador externo en un EA usando un buffer... En este indicador no hay un buffer, ¿cómo puedo obtener el precio superior e inferior


Tomar objetos gráficos en el gráfico con nombres "Tendencia DN-0", "Tendencia UP-0" (las líneas que indican algunos niveles del indicador) y leer los datos deseados de ellos

 
Maxim Kuznetsov:

en el gráfico toman objetos gráficos con los nombres "Trend DN-0", "Trend UP-0" (aquellas líneas con las que el indicador marca unos niveles) y leer los datos necesarios de las mismas


por favor escriba como hacer esto en el propio indicador? y luego hacer 2 buffers de estos valores para usarlos en el EA?

¿Escribir en qué lugar tomar el precio?

 
Vyacheslav Kornev:

por favor escriba como hacer esto en el propio indicador? y luego hacer 2 buffers de estos valores para usarlos en el EA?

escribir en qué lugar tomar el precio?

El indicador ya tiene todos los datos para calcular dos topes y dibujarlos.

Y no has sugerido cambiar el indicador, sino leer los datos de las líneas dibujadas por el indicador desde el Asesor Experto.
Sin embargo, esto impone restricciones en el uso del probador - sólo en el modo visual podrá probar el Asesor Experto.

 
Artyom Trishkin:

El indicador ya tiene todos los datos para calcular los dos topes y dibujarlos.

Y no te han sugerido que cambies el indicador, sino que leas los datos de las líneas dibujadas por el indicador desde el Asesor Experto.
Sin embargo, esto impone limitaciones en el uso del probador: sólo podrá probar el Asesor Experto en modo visual.


Significa que debería escribir en el indicador

#property indicator_buffers 2

double BufferUp[], BufferDn[];


int OnInit()

{

SetIndexBuffer(0, BufferUp)

SetIndexBuffer(1, BufferDn)

}



¿Y luego exactamente con qué? ¿Tengo que enlazar estos 2 buffers?

 
Vyacheslav Kornev:

Así que tengo que escribir en el indicador

#property indicator_buffers 2

double BufferUp[], BufferDn[];


int OnInit()

{

SetIndexBuffer(0, BufferUp)

SetIndexBuffer(1, BufferDn)

}



¿Y luego exactamente con qué? ¿Tengo que enlazar estos 2 buffers?

Mira: tienes líneas que se mueven en tu código:

ObjectMove("Trend DN-0",1,Time[st1],s1);
ObjectMove("Trend DN-0",0,Time[st2],s2);
//----
ObjectMove("Trend UP-0",1,Time[rt1],r1);
ObjectMove("Trend UP-0",0,Time[rt2],r2);

Tiempo[st1], Tiempo[st2] y el precio de estos puntos de referencia s1, s2 son para una línea,
Tiempo[rt1], Tiempo[rt2], r1, r2 - para otra línea.

Utilizando la ecuación de la línea se puede calcular el valor del buffer para cada barra entre estos puntos y escribir este valor en el buffer.

 
Artyom Trishkin:

Mira: tienes líneas que se mueven en tu código:

Tenemos Tiempo[st1], Tiempo[st2] y el precio de estos puntos s1, s2 - para una línea,
Tiempo[rt1], Tiempo[rt2], r1, r2 - para otra línea.

Utilizando la ecuación de la línea se puede calcular el valor del buffer para cada barra entre estos puntos y escribir este valor en el buffer.


por lo que no se puede tomar el precio de la línea sobre la barra... No sé cómo calcular la ecuación de la línea recta, si es posible, escribe cómo debería ser todo.

Y, en general, el valor no debe tomarse entre puntos, sino sobre 0 o 1 bar