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

 
noob1:
Hola. Estoy tratando de calcular el StopLoss desde el mínimo y el máximo de la primera barra, después de colocar la orden pendiente, para comprar y vender respectivamente. Pero no obtuve ningún resultado, sólo 130 de error, eso es todo. Gracias de antemano.
¿Es el mismo billete? Y la distancia al stoploss puede ser demasiado pequeña.
 
simpleton:

Compruebe si OrderOpenPrice() está demasiado cerca del SL y si los stops están "a la derecha del precio". Puede leerlo aquí:

Los precios StopLoss y TakeProfit no pueden estar demasiado cerca del mercado. La distancia mínima del stop en pips puede obtenerse utilizando la función MarketInfo() con el parámetro MODE_STOPLEVEL. El error 130 (ERR_INVALID_STOPS) se generará en caso de paradas erróneas o no normalizadas.

En este caso, es decir, para una orden pendiente, el "mercado" es su "precio abierto pendiente".

Lo he rehecho y parece que funciona. Gracias.
 
¿Puedes decirme cómo averiguar la dirección IP actual del ordenador desde MT?
 
Heroix:
¿Puedes decirme cómo obtener la dirección IP actual del ordenador desde MT?
WebRequest a http://ipecho.net/plain y leer del archivo recibido. O WinAPI.
 

Enel probador de estrategias el comandoMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) Esto ocurre en situaciones en las que, por ejemplo, el instrumento es EURUSD y la moneda de balance es RUR .... y en otras combinaciones. Tengo entendido que la moneda de equilibrio debe ser la misma que el nombre de la segunda moneda del par de divisas. En caso contrario, devuelve el valor cero (en el probador de estrategias), lo que hace imposible realizar pruebas con las combinaciones deseadas. ¿Cómo resolver este problema?

 
ikatsko:

Enel probador de estrategias el comandoMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) Esto ocurre en situaciones en las que, por ejemplo, el instrumento es EURUSD y la moneda de balance es RUR .... y en otras combinaciones. Tengo entendido que la moneda de equilibrio debe ser la misma que el nombre de la segunda moneda del par de divisas. En caso contrario, devuelve el valor cero (en el probador de estrategias), lo que imposibilita la realización de pruebas con las combinaciones deseadas. ¿Cómo resolver este problema?

El resaltado no es correcto. Estoy calculando en EUR conEURUSD, GBPUSD, etc. Sólo cuando se habilita, puede dar 0 hasta que se reciba el primer dato, por eso pongo una condiciónantes de los cálculos conTICKVALUE que si != 0;

En el probador,MarketInfo() puede no funcionar, así que sabiendo el precio aproximado de un tick, lo establezco con la condición IsTesting() || IsOptimization() | IsVisualMode().

 

Por favor, ayúdenme a crear una primicia que negocie dos pares al mismo tiempo.

Si en el primer par la variable será así

double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Digits);

¿cómo será para el segundo?

O el código para abrir una operación por el primer carácter será

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,",0,0,Green);

cómo será el código del segundo símbolo

 
pavlicos:

Por favor, ayúdame a crear un búho que negocie dos pares al mismo tiempo.

Si en el primer par la variable será así

double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Digits);

¿cómo será para el segundo?

O el código para abrir una operación por el primer carácter será

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,",0,0,Green);

cómo será el código del segundo símbolo

NULL oSymbol() significa un par de gráficos. Puede utilizar la cadena mySymbol = Symbol() para distinguirlos, luego puede utilizar 2 copias del EA en los gráficos correspondientes y asignar diferentes símbolos mágicos para asegurarse. Buena suerte.
 
pavlicos:

Por favor, ayúdenme a crear búhos que operen en dos pares al mismo tiempo.

Si en el primer par la variable será así

double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Digits);

¿cómo será para el segundo?

O el código para abrir una operación por el primer carácter será

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,",0,0,Green);

cómo será el código del segundo símbolo

// в OnTick()
double open_nzdusd_CUR=GetNormalizeOpenPriceBySymbol("NZDUSD",Period(),0);    // цена открытия текущей свечи NZDUSD
double open_audusd_M15=GetNormalizeOpenPriceBySymbol("AUDUSD",PERIOD_M15,1);  // цена открытия прошлой свечи AUDUSD на M15
//+------------------------------------------------------------------+

// функция вне тела OnTick()
//+------------------------------------------------------------------+
double GetNormalizeOpenPriceBySymbol(string sy, int timeframe, int shift) {
   int digits=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
   return(NormalizeDouble(iOpen(sy,timeframe,shift),digits));
}
//+------------------------------------------------------------------+

Con la apertura, aquí sólo está el concepto en sí:

string symbol="AUDUSD";
double ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
double bid=SymbolInfoDouble(symbol,SYMBOL_BID);
double pt=SymbolInfoDouble(symbol,SYMBOL_POINT);
int spread=(int)SymbolInfoInteger(symbol,SYMBOL_SPREAD);
int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
int value=(int)SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL);
int level=(value==0)?spread*2:value;
//---
double sl_b=(StopLoss==0)?0:NormalizeDouble(fmin(ask-StopLoss*pt,ask-(level+1)*pt),digits);
double tp_b=(TakeProfit==0)?0:NormalizeDouble(fmax(ask+TakeProfit*pt,ask+(level+1)*pt),digits);
ticket_b=OrderSend(symbol,OP_BUY,Lots,ask,3,sl_b,tp_b,"",0,0,clrGreen);
//---
double sl_s=(StopLoss==0)?0:NormalizeDouble(fmax(bid+StopLoss*pt,bid+(level+1)*pt),digits);
double tp_s=(TakeProfit==0)?0:NormalizeDouble(fmin(bid-TakeProfit*pt,bid-(level+1)*pt),digits);
ticket_s=OrderSend(symbol,OP_SELL,Lots,bid,3,sl_s,tp_s,"",0,0,clrRed);

sin comprobar los códigos de retorno del servidor comercial.

 
Hoy el Navegador del terminal se ha expandido de repente a todo el ancho de la pantalla, ¡ocultando las cartas! Siempre ha tenido la misma anchura que el Market Watch. ¡Busco y no encuentro cómo devolverle su tamaño anterior! ¡Ayuda a quien sabe cómo lidiar con esta nueva molestia! ¡¡¡Gracias!!!