En la columna de expertos: 2018.05.14 12:08:17.578 LIMIT (Si-6.18,M15) Alerta: 10009, nada más
Bueno, aquí está la forma de ayudarte... Primero escribes que Sell Limit no se exhibe, das extractos del registro. Y ahora estamos hablando de una orden de compra limitada. Por lo tanto, el problema debe ser flotante. Además, nunca ha citado la declaración. Usted afirma que la orden no es visible en la realidad. Y la declaración puede ayudar a aclarar la situación.
voidOnStart()
{MqlTradeRequest request={0};
MqlTradeResult result={0};
doubleBid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
doubleAsk=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
int digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);
double p=NormalizeDouble(ChartPriceOnDropped(),digits);
if( SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)==10)
{p=MathRound(ChartPriceOnDropped()*0.1)/0.1;
}
int V=75;
if (p<Ask)
{
request.action =TRADE_ACTION_PENDING; // тип торговой операции
request.symbol =Symbol(); // символ
request.volume =MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/V/((Ask-p)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)));
if (request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL))
{ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL));
}
request.type =ORDER_TYPE_BUY_LIMIT; // тип ордера
request.price =NormalizeDouble(Ask-SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),digits); // цена для открытия
request.deviation=50; // допустимое отклонение от цены
request.sl =p; // Stop Loss позиции
request.tp =NormalizeDouble(Ask+(Ask-p)*3,digits); // Take Profit позиции
request.type_filling=ORDER_FILLING_IOC;
request.type_time=ORDER_TIME_DAY;
request.stoplimit=Ask;
OrderSend(request,result);
}
if (p>Bid)
{
request.action =TRADE_ACTION_PENDING; // тип торговой операции
request.symbol =Symbol(); // символ
request.volume =MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/V/((p-Bid)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)));
if (request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL))
{ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL));
} // объем
request.type =ORDER_TYPE_SELL_LIMIT; // тип ордера
request.price =NormalizeDouble(Bid+SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),digits); // цена для открытия
request.deviation=50; // допустимое отклонение от цены
request.sl =p; // Stop Loss позиции
request.tp =NormalizeDouble(Bid-(p-Bid)*3,digits); // Take Profit позиции
request.type_time=ORDER_TIME_DAY;
request.type_filling=ORDER_FILLING_IOC;
request.stoplimit=Bid;
OrderSend(request,result);
}
Alert(result.retcode);
return;
}
¿En qué puedo ayudarle? En primer lugar, escribes que no se está colocando Sell Limit, y das extractos del registro. Ahora estamos hablando de una orden de compra limitada. Por lo tanto, el problema debe ser flotante. Además, nunca has citado la declaración. Usted afirma que la orden no es visible en la realidad. La declaración puede ayudarle a aclarar la situación.
Ni el límite de venta ni el límite de compra están establecidos,Alert(result.retcode) devuelve 10009. ¿Dónde puedo conseguir esta "declaración", qué tengo que hacer?
Ejecutar este código por mi cuenta. Tenga en cuenta que obtendrá un error de división de 0 en los símbolos no binarios, ya que no hay margen de inicialización allí.
En el código en el que conseguí ejecutarlo, tuve que añadir una comprobación de volumen. En caso contrario, el volumen era igual a cero:
if (request.volume < SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN))
request.volume = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
Después de eso, la orden se establece con éxito. También hay que tener en cuenta que se dispara con bastante rapidez: se acerca al precio. Por lo tanto, es posible que no se dé cuenta del pedido en sí. Se convierte en una posición o se adjunta a ella si el tipo de cuenta es de compensación.
Ni el límite de venta ni el límite de compra están establecidos,Alert(result.retcode) devuelve 10009. ¿Dónde puedo conseguir este "retcode", qué debo hacer?
La pestaña "Historia" de la ventana "Caja de herramientas". En el menú contextual seleccione "Pedidos". A continuación, seleccione "Informe" en el menú contextual - "HTML". Pero probablemente podrá ver por sí mismo por qué falta la orden: su estado estará marcado como "lleno".
Ejecutar este código por mi cuenta. Tenga en cuenta que obtendrá un error de división de 0 en los símbolos no binarios, ya que no hay margen de inicialización allí.
En el código en el que conseguí ejecutarlo, tuve que añadir una comprobación de volumen. En caso contrario, el volumen era igual a cero:
Después de eso, la orden se establece con éxito. También hay que tener en cuenta que se dispara con bastante rapidez: se acerca al precio. Por lo tanto, es posible que no se dé cuenta del pedido en sí. Se convierte en una posición o se adjunta a ella si el tipo de cuenta es de compensación.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Al final del código también Alert(result.retcode);
en el registro general:
2018.05.14 12:08:16.984 Scripts script LIMIT (Si-6.18,M15) cargado con éxito
2018.05.14 12:08:17.187 Operaciones '992940': compra límite 3,00 Si-6,18 a 62091 (62092) sl: 61821 tp: 62905
2018.05.14 12:08:17.484 Operaciones '992940': aceptado límite de compra 3,00 Si-6,18 a 62091 (62092) sl: 61821 tp: 62905
2018.05.14 12:08:17.500 Operaciones '992940': límite de compra 3,00 Si-6,18 a 62091 (62092) sl: 61821 tp: 62905 colocado para su ejecución
2018.05.14 12:08:17.546 Operaciones '992940': orden #13235300 compra límite 3.00 / 3.00 Si-6.18 a 62091 realizada en 337.532 ms
2018.05.14 12:08:17.578 Scripts script LIMIT (Si-6.18,M15) eliminado
En la columna de expertos: 2018.05.14 12:08:17.578 LIMIT (Si-6.18,M15) Alerta: 10009, nada más
Bueno, aquí está la forma de ayudarte... Primero escribes que Sell Limit no se exhibe, das extractos del registro. Y ahora estamos hablando de una orden de compra limitada. Por lo tanto, el problema debe ser flotante. Además, nunca ha citado la declaración. Usted afirma que la orden no es visible en la realidad. Y la declaración puede ayudar a aclarar la situación.
¿En qué puedo ayudarle? En primer lugar, escribes que no se está colocando Sell Limit, y das extractos del registro. Ahora estamos hablando de una orden de compra limitada. Por lo tanto, el problema debe ser flotante. Además, nunca has citado la declaración. Usted afirma que la orden no es visible en la realidad. La declaración puede ayudarle a aclarar la situación.
Ni el límite de venta ni el límite de compra están establecidos, Alert(result.retcode) devuelve 10009. ¿Dónde puedo conseguir esta "declaración", qué tengo que hacer?
Ejecutar este código por mi cuenta. Tenga en cuenta que obtendrá un error de división de 0 en los símbolos no binarios, ya que no hay margen de inicialización allí.
En el código en el que conseguí ejecutarlo, tuve que añadir una comprobación de volumen. En caso contrario, el volumen era igual a cero:
Después de eso, la orden se establece con éxito. También hay que tener en cuenta que se dispara con bastante rapidez: se acerca al precio. Por lo tanto, es posible que no se dé cuenta del pedido en sí. Se convierte en una posición o se adjunta a ella si el tipo de cuenta es de compensación.
Ni el límite de venta ni el límite de compra están establecidos, Alert(result.retcode) devuelve 10009. ¿Dónde puedo conseguir este "retcode", qué debo hacer?
La pestaña "Historia" de la ventana "Caja de herramientas". En el menú contextual seleccione "Pedidos". A continuación, seleccione "Informe" en el menú contextual - "HTML". Pero probablemente podrá ver por sí mismo por qué falta la orden: su estado estará marcado como "lleno".
Encontré mi script de 2009, pero ahora compila con una advertencia:'M' - secuencia de escape de caracteres no reconocida 1.mq4 66 37
¿Puedes decirme qué hay que ajustar en la línea para que compile correctamente?
Ejecutar este código por mi cuenta. Tenga en cuenta que obtendrá un error de división de 0 en los símbolos no binarios, ya que no hay margen de inicialización allí.
En el código en el que conseguí ejecutarlo, tuve que añadir una comprobación de volumen. En caso contrario, el volumen era igual a cero:
Después de eso, la orden se establece con éxito. También hay que tener en cuenta que se dispara con bastante rapidez: se acerca al precio. Por lo tanto, es posible que no se dé cuenta del pedido en sí. Se convierte en una posición o se adjunta a ella si el tipo de cuenta es de compensación.
Encontré mi script de 2009, pero ahora compila con una advertencia:'M' - secuencia de escape de caracteres no reconocida 1.mq4 66 37
¿Puedes decirme qué hay que ajustar en la línea para que compile correctamente?
Poner una doble barra invertida antes de MQL4