Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 27

Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
La condición de cierre utiliza una señal inversa, pero no funciona yNuestras operaciones sólo se cierran en el stop o en el takei ¿Cuál es su razón?
No es así.
Su condición debe ser al inicio y la función de cierre después del inicio.
int i;
//
void Start(){
if ((FMA1<GrossMA1 && FMA2>GrossMA2 && Bid<FMA1-Distanse*GetPoint()) // тут так надо бы Bid<NormalizeDouble(FMA1-Distanse*GetPoint(),Digits)
|| (FRMA1>GrossMA1 && FRMA2<GrossMA2 && Ask>FRMA1+Distanse*GetPoint())){
for(i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) CloseOpBuySell(); // тут закроются все ордера и бай и селл
}
}
}// end start
void CloseOpBuySell()
{
for(i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic ) //свой магик
{
if(OrderType()==OP_BUY)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,LawnGreen); {continue;}
}
if(OrderType()==OP_SELL)
{
if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,LawnGreen); {continue;}
}
}
}
}
return;
}
No es así.
Si necesita cerrar por condiciones individuales y no todas a la vez, entonces la función de cierre debe ser diferente.Debe tener la condición al principio y la función de cierre al principio.
Claro, pero ya lo he hecho y se lo he enviado, así que no dirá nada.
{
//закрытие по МА-шкам
if (FMA1<GrossMA1 && FMA2>GrossMA2 && Bid<FMA1-Distanse*GetPoint()) CloseOpBuySell("BUY");
if (FRMA1>GrossMA1 && FRMA2<GrossMA2 && Ask>FRMA1+Distanse*GetPoint()) CloseOpBuySell("SELL");
return(0);
}
//----
//-----------------------------------+
void CloseOpBuySell(string TypeClose)
{
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==mn )
{
if(TypeClose=="BUY")
{
if(OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Bid,3,LawnGreen);
}
if(TypeClose=="SELL")
{
if(OrderType()==OP_SELL)OrderClose(OrderTicket(),OrderLots(),Ask,3,LawnGreen);
}
}
}
}
}
Es mejor contar en base a los fondos disponibles que al saldo. De lo contrario, te arriesgas a recibir mucho más de lo que puedes pagar en el momento de abrir una operación.
También hay que calcular la dependencia del paso del lote, y luego comprobar si el lote está dentro de los lotes máximos y mínimos permitidos en la cuenta.
double lots,lotstep,free,margin, lotmin, lotmax;
lotmax=MarketInfo(Symbol(), MODE_MAXLOT);
lotmin=MarketInfo(Symbol(), MODE_MINLOT);
lotstep = MarketInfo(Symbol(), MODE_LOTSTEP);
reqmargin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
free=AccountFreeMargin();
lots = NormalizeDouble(lotstep*MathRound((free*MaximumRisk*0.01/reqmargin)/lotstep),2);
if (lots < lotmin) lots = lotmin;
if (lots > lotmax) lots = lotmax;
Es mejor contar en base a los fondos disponibles que al saldo. De lo contrario, te arriesgas a recibir mucho más de lo que puedes pagar en el momento de abrir una operación.
También hay que calcular la dependencia del paso del lote, y luego comprobar si el lote está dentro de los lotes máximos y mínimos permitidos en la cuenta.
double lots,lotstep,free,margin, lotmin, lotmax;
lotmax=MarketInfo(Symbol(), MODE_MAXLOT);
lotmin=MarketInfo(Symbol(), MODE_MINLOT);
lotstep = MarketInfo(Symbol(), MODE_LOTSTEP);
reqmargin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
free=AccountFreeMargin();
lots = NormalizeDouble(lotstep*MathRound((free*MaximumRisk*0.01/reqmargin)/lotstep),2);
if (lots < lotmin) lots = lotmin;
if (lots > lotmax) lots = lotmax;
Aplazado:
Gevorg Hakobyan, 2016.12.08 15:26
Hola. ¿Cómo puedo obtener una lista de todos los pares de divisas existentes en Meta Trader 4? ¿Y cómo puedo estar al tanto de los cambios en la lista?Aplazado:
Gevorg Hakobyan, 2016.12.08 15:26
Hola. ¿Cómo puedo obtener la lista de todos los pares de divisas existentes en Meta Trader 4? ¿Y cómo estar al tanto de cualquier cambio en la lista?SímbolosTotal
Devuelve el número de símbolos disponibles (seleccionados en MarketWatch o todos).
intSímbolosTotal(
bool selected// true - sólo símbolos en MarketWatch
);
Parámetros
seleccionado
[en] Modo de solicitud. Puede tomar los valores verdadero o falso.
Valor devuelto
Si selected es true, se devuelve el número de caracteres seleccionados en MarketWatch. Si es falso, devuelve el número total de todos los símbolos.
Aplazado:
Gevorg Hakobyan, 2016.12.08 15:26
Hola. ¿Cómo puedo obtener una lista de todos los pares de divisas existentes en Meta Trader 4? ¿Y cómo puedo estar al tanto de los cambios en la lista?