[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 594

 

for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // comprobar posición abierta
OrderSymbol()==lSymbol()) // comprobar símbolo
{

?

 

Ayuda con el código plz! ¿Por qué tengo 138 en este código, y lo que tiene que ver con él? ofertas abiertas, pero cuando se cierra el precio es de alguna manera no es el mismo, ¿qué es? todo es simple. asesor experto en velas s debe cerrar el acuerdo y abrir cuando el fractal es penetrado. gracias de antemano por la punta

extern int s=5;



extern int stime=60;
extern int lots=1;
extern int slippage=5;
extern double sl=NULL;
extern double tp=NULL;
double upfr,dnfr=0.0;//niveles de los últimos fractales
double tClose=NULL;
double tOpen=NULL;
int flag=0;
int init()
{
//----



//----
return(0);
}
//+------------------------------------------------------------------+
//| función experta de desinicialización |

//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| función de inicio experta |
//+------------------------------------------------------------------+

int start()//abre al romper y cierra después de s velas
{
//----
upfr=iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4)
dnfr=iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4);
//Órdenes de compra en PROBIT
if(upfr>0 && High[1]>upfr && flag==0) //si el fractal es ascendente y se supera el nivel del fractal
{
tOpen=Time[0];
tClose=tOpen+s*stime*60;
OrderSend(Symbol(),OP_BUY,lots,Bid,slippage,sl,tp);
flag=1;
}
if(dnfr>0 && Low[1]<dnfr && flag==0)//si el fractal está abajo y el nivel del fractal está abajo
{
tOpen=Time[0];
tClose=tOpen+s*stime*60;
OrderSend(Symbol(),OP_SELL,lots,Ask,sl, sl, tp);
flag=1;
}

// CERRAR ÓRDENES POR FIN DE TIEMPO
if(Time[0]>=tClose )// si el tiempo antes del cierre ha pasado
{
Print("CLOSE FUNCTION");
OrClose();
flag=0;
}


//----
return(0);
}
//+------------------------------------------------------------------+
//cerrar todos los pedidos
void OrClose()
{
for(int i=OrdersTotal()-1;i>=1;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),lotes,OrderOpenPrice(),0.0005);
}
}
return(0);
}
 
Qwertee:

Ayuda con el código plz! ¿Por qué estoy recibiendo un error 138 en este código?? y ¿qué tiene que ver con él? ofertas se abren, pero cuando se cierra el precio es de alguna manera no es el mismo, ¿qué es?

OrderClose(OrderTicket(),lots,OrderOpenPrice(),0.0005);

cambiarlo por

         if(OrderType()==OP_BUY)
           {
            OrderClose(OrderTicket(),OrderLots(),Bid,slippage);
           }
         else
           {
            OrderClose(OrderTicket(),OrderLots(),Ask,slippage);
           }
 
Buenas tardes. Los profesionales, que trataron el indicador Zigzag, aconsejan cómo obtener los dos últimos valores de los topes: Alto y Bajo?
 

Buenas tardes.

Por favor, ayúdenme a abrir los pedidos. Estoy usando un EA en una cuenta demo, cuando tengo una condición de Compra o Venta, muestra 130 errores.

Aquí está la función de apertura de pedidos:

int NewOrder(int Cmd,double Lot)
{double TP=0; //тейкпрофит
 double SL=0; //стоплосс
 double PR=0; //Цена
 while(!IsTradeAllowed()) Sleep(100);
 RefreshRates ();
 if(Cmd==OP_BUY)
   {PR=Ask;
    if(TakeProfit>0) TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
    if(StopLoss>0) SL=NormalizeDouble(Bid-StopLoss*Point,Digits);}
 if(Cmd==OP_SELL)
   {PR=Bid;
    if(TakeProfit>0) TP=NormalizeDouble(Bid-TakeProfit*Point,Digits);
    if(StopLoss>0) SL=NormalizeDouble(Ask+StopLoss*Point,Digits);}
 int tic=OrderSend(Symbol(),Cmd,Lot,PR,20,SL,TP,"",0,0,CLR_NONE);
 if(tic<0) Print("Ошибка открытия ордера: ",GetLastError());
return(tic);}

He comprobado en otros EA y he visto que todo estaba bien con el cálculo de los lotes.

Cuenta demo en Alpari, tipo Micro. la toma y la parada son 100p, hollín. 10 pips, como Alpari tiene 5 signo

 
 
FAQ:
Normalizar el precio de apertura.


¿Cómo se normaliza?

¿Es eso cierto?

PR=NormalizeDouble(Ask,Digits);

Si es así, nada cambia.

Todavía no tengo mucha experiencia en programación. ¿Puede explicar cómo se normaliza?

 
Entonces compruebe el tamaño del stop y el beneficio de antemano, si es mayor que su stop y beneficio - ajústelos. si es cero. entonces necesita establecer una orden con stop y beneficio cero primero, y luego modificarlos a los niveles que desee.
 

Buenas noches. Pregunta: Cuando cierro parte de una operación, el EA como que abre una nueva operación con una nueva entrada. ¿La magia del nuevo orden sigue siendo la misma?

 
Instalé MetaTrader 4, abrí una cuenta demo. Intento de abrir/cerrar órdenes. ¿Cómo puedo hacer ahora que el propio terminal active una orden de venta cuando el precio suba y una orden de compra cuando baje, utilizando información como "necesita una diferencia de 2 velas para cerrar la orden anterior y abrir una nueva"?
Razón de la queja: