:) Ahora ha aparecido el error 130. Lo más extraño es que con stops erróneos (130) sigue poniendo takei correcto (calculado por ATR), pero mis stops no estaban puestos desde el principio... ¿Hay alguna manera de entenderlo?
¡¡¡Necesito ayuda!!! ¿Cómo elegir la última orden perdedora del historial?
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает флаг убыточности последней позиции. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+bool isLossLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
int i, j=-1, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderProfit()<0) return(True);
}
return(False);
}
if (isLossLastPos(NULL, -1, Magic искомого ордера)) {нашли - обрабатываем...}
Es demasiado complicado para ti :)) Este es mi código
Pase en el método como parámetros un medjack retrasado y un trall deseable.
No entiendo por qué tu función da error 1 (curioso: error 1 = sin error, pero resultado desconocido) y no arrastra. A veces puede captar algún retraso, pero sobre todo >>>ERROR1 en el registro y no tose...
Así es como lo hago yo:
//==============================================================================================// Модификация ордеров//============================================================================================== int criterion = TakeProfitATR (1); // Рассчитываем "достаточную" волатильность
if (criterion>=15) trailingOrder(511, 20); // и если она в "норме" - тралим ордера...
//==============================================================================================// Функция для рассчёта Take Profit по ATR//+------------------------------------------------------------------+//| Take from ATR |//+------------------------------------------------------------------+double TakeProfitATR (int tf)
{
double atr =iATR(NULL,tf,14,0);
double mltp =15000;
if (tf==1) mltp=15000;
if (tf==5) mltp=45000;
double tp =MathRound(atr*mltp);
return (tp);
}
No entiendo por qué tu función da error 1 (curioso: error 1 = sin error, pero resultado desconocido) y no arrastra. A veces puede captar algún retraso, pero sobre todo >>>ERROR1 en el registro y no tose...
Yo lo llamo así:
El error 1 puede ocurrir debido a esto (del documento OrderModify()):
Si se pasan valores no modificados como parámetros de la función, se generará el error 1 (ERR_NO_RESULT).
Así que no pasa nada, realmente no hay ningún error, puedes ignorarlo.
No entiendo por qué tu función da error 1 (curioso: error 1 = sin error, pero resultado desconocido) y no arrastra. A veces puede captar algún retraso, pero sobre todo >>>ERROR1 en el registro y no tose...
Así es como lo hago yo:
Añadí Limit`order(en el último código me olvidé de ellos :))) + procesamiento de error #1 (antes de la modificación se compara el nuevo precio con el actual, si son iguales, entonces no se hace nada):
//+------------------------------------------------------------------+void trailingOrder(int magic, int trailing){
int index = 0;
while(trailing > 0 && OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS)){
if(OrderMagicNumber() == magic){
if(OrderType() == OP_BUYSTOP){
if(OrderOpenPrice() - Ask > Point*trailing){
if((Ask+Point*trailing) - Ask >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
(Ask+Point*trailing) - Ask > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
(Ask+Point*trailing) != OrderOpenPrice()){
if(!OrderModify(OrderTicket(),Ask+Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
}else{
Print(">>> Слишком близко к рынку или передано неизмененное значение!");
}
}
return;
}
if(OrderType() == OP_SELLSTOP){
if(Bid - OrderOpenPrice() > Point*trailing){
if(Bid - (Bid-Point*trailing) >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
Bid - (Bid-Point*trailing) > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
(Bid-Point*trailing) != OrderOpenPrice()){
if(!OrderModify(OrderTicket(),Bid-Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
}else{
Print(">>> Слишком близко к рынку или передано неизмененное значение!");
}
}
return;
}
if(OrderType() == OP_SELLLIMIT){
if(OrderOpenPrice() - Bid > Point*trailing){
if((Bid+Point*trailing) - Bid >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
(Bid+Point*trailing) - Bid > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
(Bid+Point*trailing) != OrderOpenPrice()){
if(!OrderModify(OrderTicket(),Bid+Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
}else{
Print(">>> Слишком близко к рынку или передано неизмененное значение!");
}
}
return;
}
if(OrderType() == OP_BUYLIMIT){
if(Ask - OrderOpenPrice() > Point*trailing){
if(Ask - (Ask-Point*trailing) >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
Ask - (Ask-Point*trailing) > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
(Ask-Point*trailing) != OrderOpenPrice()){
if(!OrderModify(OrderTicket(),Ask-Point*trailing,OrderStopLoss(),OrderTakeProfit(), 0))Print(">>> ERROR ", GetLastError());
}else{
Print(">>> Слишком близко к рынку или передано неизмененное значение!");
}
}
return;
}
}
index++;
}
}
//+------------------------------------------------------------------+
¿hay alguna forma de ordenar los instrumentos en las pestañas de la parte inferior de la pantalla? porque 8 instrumentos en 4 marcos temporales están dispersos en un lío....
¿hay alguna forma de ordenar los instrumentos en las pestañas de la parte inferior de la pantalla? porque 8 instrumentos en 4 marcos temporales están dispersos en un lío....
coge la pestaña con el nombre del gráfico y arrástrala hasta el lugar adecuado
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.
Sí.
¿Hay alguna manera de entenderlo?
¡¡¡Necesito ayuda!!! ¿Cómo elegir la última orden perdedora del historial?
Es demasiado complicado para ti :))
Pase en el método como parámetros un medjack retrasado y un trall deseable.Este es mi código
No entiendo por qué tu función da error 1 (curioso: error 1 = sin error, pero resultado desconocido) y no arrastra. A veces puede captar algún retraso, pero sobre todo >>>ERROR1 en el registro y no tose...
Así es como lo hago yo:
No entiendo por qué tu función da error 1 (curioso: error 1 = sin error, pero resultado desconocido) y no arrastra. A veces puede captar algún retraso, pero sobre todo >>>ERROR1 en el registro y no tose...
Yo lo llamo así:
El error 1 puede ocurrir debido a esto (del documento OrderModify()):
Si se pasan valores no modificados como parámetros de la función, se generará el error 1 (ERR_NO_RESULT).
No entiendo por qué tu función da error 1 (curioso: error 1 = sin error, pero resultado desconocido) y no arrastra. A veces puede captar algún retraso, pero sobre todo >>>ERROR1 en el registro y no tose...
Así es como lo hago yo:
Añadí Limit`order(en el último código me olvidé de ellos :))) + procesamiento de error #1 (antes de la modificación se compara el nuevo precio con el actual, si son iguales, entonces no se hace nada):
Por cierto, he encontrado un error en el Tutorial sobre las distancias StopLevel y FreezeLevel para los colgantes:
Limitación de la distancia mínima de StopLevel.
La operación no se ejecuta si se incumple alguno de estos requisitos.
SellLimit se sitúa por encima del precio actual, por lo que es correcto:
OpenPrice - Bid ≥ StopLevel
¿hay alguna forma de ordenar los instrumentos en las pestañas de la parte inferior de la pantalla? porque 8 instrumentos en 4 marcos temporales están dispersos en un lío....
¿hay alguna forma de ordenar los instrumentos en las pestañas de la parte inferior de la pantalla? porque 8 instrumentos en 4 marcos temporales están dispersos en un lío....
coge la pestaña con el nombre del gráfico y arrástrala hasta el lugar adecuado