Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 382

 
Link_x:

Aun así no cierra los pedidos, no me gusta.
Parece que son todos mis defectos, que no soy capaz de encontrar, debido a la inexperiencia.

Además, si utilizamos GetLastError(), estudiamos cuál es el problema.
 
Link_x:
No puedo entenderlo.
Bien, ya he encontrado una alternativa. :)

Deje que MTS haga operaciones sin SL y TP, pero cierre todas si el beneficio potencial es mayor que X.
¿Es posible cerrar las órdenes de esta manera?
¿Tenemos que hacer un seguimiento de los pedidos de esta manera?
El primer parámetro de la función OrderClose(.......) tiene que ser la entrada de la posición (tiene que ser encontrada de antemano usando OrderSelect() )
 
Calcula la variable sl, tienes un entero, luego tienes una fracción.
 
vadynik:

¿La función es fraccionaria o no debería serlo?

¡Feliz Año Nuevo! ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Tómate una copa y no te preocupes!!!!!!!!!!!!!!!!!! :-)
 
Link_x:

Aun así no cierra los pedidos, no me gusta.
Parece que se trata de mis defectos, que no soy capaz de encontrar a causa de la inexperiencia.


gurú, a dónde vas... ?... :-))) ¿está usted fuera de su mente ...

hay multitudes rezando, no saben a dónde ir, y él no puede poner los pies en orden... :-)))

 
vadynik:

¿La función es fraccionaria o no debería serlo?
void VirtualTral(int Dist_Tral,int Start_Tral,int Magic,int SL)

\\здесь у тебя SL - целая, не знаю, какое значение ты сюда посылаешь
{

double dist=Dist_Tral;
double start=Start_Tral;
double sl=SL;

//здесь уже дробная, но так как до этого была целая, значит....
 
if(OrdersTotal()<=0)
ObjectDelete("Stop"); 

int i, k=OrdersTotal();

  for (i=k-1; i>=0; i--) 
   {
          if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {  

             if (Bid-NormalizeDouble(OrderOpenPrice(),Digits)>NormalizeDouble(start*Point,Digits))
      
          {                                                                                                                        
                    if((NormalizeDouble(Bid-sl*Point,Digits))>(NormalizeDouble(dist*Point,Digits)))//здесь sl подразумевается как отступ от цены, тогда dist должна быть ценой
                {         
                                                 
                          sl=NormalizeDouble(Bid-dist*Point,Digits); //а здесь sl - это уже цена, вполне определенная
                          //Print(+dist); 
                          //Print(+sl); 
                          ObjectCreate("Stop",OBJ_HLINE,0,D'2013.02.20 12:30',sl); // и здесь, это определенное значение цены
                                                                        
                          ObjectSet("Stop",OBJPROP_STYLE,1);                         
                          ObjectMove("Stop",0,D'2013.02.20 12:30',sl);            
   
 
vadynik:

Porque yo cuento la diferencia entre oferta y demanda y comparo este delta con la distancia y si es más hay que subir el stop, no entiendo dónde está exactamente el fallo?



Hagámoslo en números

if((NormalizeDouble(Bid-sl*Point,Digits))>(NormalizeDouble(dist*Point,Digits))

Supongamos que la oferta es 1,3333, sl es 100, dist es 20, entonces

1,3333-100 * 0,0001=1,3233 es decir, más de 20 * 0,0001 = 0,02 siempre

 
gyfto:

Tengo una pregunta más floja sobre la usabilidad. El gráfico se puede desplazar a la izquierda y a la derecha, así como apretar y estirar. ¿Pero cómo me desplazo hacia arriba y hacia abajo?

Lo he descubierto, con el gráfico se puede arrastrar hacia arriba y hacia abajo con el ratón.

 
Integer:
r772ra

Gracias por su ayuda, queridos comerciantes - programadores. :)
 

Por favor, indique cómo calcular los porcentajes en MQL4

por ejemplo x=10+3% ¿cómo escribirlo programáticamente?

No lo encuentro en el libro de referencia.

Razón de la queja: