[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 964

 
volshebnik:
¿Por qué baja la velocidad del probador hacia el final del tercer año?


existe este problema - yo también tuve este problema, si el Asesor Experto hace muchas operaciones por año - tal vez se almacenan muchos datos para mostrar el resultado final o tal vez los búferes de los indicadores comen memoria

como una sierra completa - no sé, tened paciencia conmigo - para el panorama general, la prueba durante 10 años, y es mejor optimizar un año a la vez y luego hacer una selección de los parámetros óptimos

 

Quiero analizar diferentes cruces seguidos de la colocación de órdenes en otro par:

int magic = 428;/número de magia del Asesor Experto
extern double volumen = 0.1;//volumen del pedido que se realiza
extern int deslizamiento = 3;//deslizamiento
int OPB;//la marca de la orden de compra
int OPS;//la marca de la orden de venta
int Profit=1;//nivel de beneficio de la orden abierta
string comB = "Entrada en la tendencia en la compra; // comentario sobre la orden
string comS = "Entrada por tendencia a vender";// comentario de la orden
double StochasticCAD;//posición de la línea principal del estocástico en la barra actual del USDCAD
double StochasticAUD;//posición de la línea principal del estocástico en la barra actual para el AUDUSD

double SARCAD;//la posición actual del indicador en USDCAD
doble SARCAD;//posición de la barra del indicador de vuelta en USDCAD
double SARAUD;//posición actual del indicador en el AUDUSD
doble SARСAUD;//posición de la barra del indicador de vuelta en AUDUSD


int inicio()
{

//______________________________определение значений переменных_______________________


StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0);
StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,0);

SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);

double bidCAD =MarketInfo("USDCAD",MODE_BID);
double askCAD =MarketInfo("USDCAD",MODE_ASK);
double bidAUD =MarketInfo("AUDUSD",MODE_BID);
double askAUD =MarketInfo("AUDUSD",MODE_ASK);




//______________________________поиск и закрытие ордеров_______________________________________


int i;
for(i=0; i<=TotalPedidos(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;// si el número de pedido i no existe, detener la búsqueda

if (OrderSymbol() != "GBPUSD" || OrderMagicNumber() != magic) // si la orden no es del par donde se encuentra nuestro EA
continue; // saltar la orden y mirar la siguiente orden que le sigue


//_______close Comprar_______
if (OrderType() == OP_BUY && OrderProfit()>=Profit)
// si la orden es de compra
{
OPB=1;
if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//y el mercado está a punto de invertirse
{
OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // cerrarla si está en beneficio
OPB=0;
}
}
si no
{
//_______close Vender_______
if(OrderType() == OP_SELL && OrderProfit()>=Profit)// si la orden es de venta
{OPS=1;
if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//y el mercado está cerca de la inversión
{
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // cerrarla si está en beneficio
OPS=0;
}
}
}
}

//______________выставление ордеров______________________________________________________________________


if (SARCAD>askCAD && SARCAD<bidCAD && SARAUD<bidAUD && SARCAUD>askAUD && OPB<1)//definir condiciones

{ //_______Comprar_______

if(!IsTradeAllowed())
{
Alert("El hilo comercial está ocupado, intente de nuevo comprar...");
return(-1);
}
OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //poner una orden

if(OPB == -1)
{
Alert("GBPUSD", "Error: comprar", GetLastError());
return(-1);
}

if(OPB > 1)
Alert("GBPUSD", "¡Tenemos una orden de compra!")

}
si no
{//_______Sell_______

if(SARCAD>askCAD && SARCAD<bidCAD && SARCADAUD<bidAUD && SARAUD>askAUD && OPS<1)//definir condiciones

{

if(!IsTradeAllowed())
{
Alert("el hilo de comercio está ocupado, intente de nuevo vender...");
return(-1);
}

OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //poner una orden


if(OPS == -1)
{
Alert("GBPUSD", "Error: Vender", GetLastError());
return(-1);
}

if(OPS > 1)
Alert("GBPUSD", "¡Poner orden de venta!")

}
}
return(0);//salir
}


No sale nada cuando lo pruebo. No hay resultados.

En el registro hay un conjunto de errores:

¿Puede decirme qué pasa?

 
ViktorF:

Quiero analizar diferentes cruces y luego colocar órdenes en otro par:

int magic = 428;//número de magia del Asesor Experto
extern double volume = 0.1;//volumen de la orden colocada
extern int slippage = 3;/deslizamiento
int OPB;//etiqueta de la orden de compra colocada
int OPS;//etiqueta de la orden de venta colocada
int Profit=1;//nivel de beneficio de las órdenes abiertas
string comB = "Entrada por tendencia a la compra"; //solicitud de orden
string comS = "Entrada por tendencia a la venta"; //solicitud de orden
double StochasticCAD;//posición de la línea principal estocástica en la barra actual en USDCAD
double StochasticAUD;//posición de la línea principal estocástica en la barra actual en AUDUSD

double SARCAD;//posición actual del indicador en USDCAD
double SARCAD;//posición de la barra del indicador en USDCAD
double SARAUD;//posición actual del indicador en AUDUSD
double SARAUD;//posición de la barra del indicador en AUDUSD


int start()
{



//______________________________ determinación de los valores de las variables_______________________


StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0);
StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,0);

SARCAD=iSAR("USDCAD",30,002,0.2,0);
SARCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,1);

double bidCAD =MarketInfo("USDCAD",MODE_BID);
double askCAD =MarketInfo("USDCAD",MODE_ASK);
double bidAUD =MarketInfo("AUDUSD",MODE_BID);
double askAUD =MarketInfo("AUDUSD",MODE_ASK);




//______________________________ buscar y cerrar órdenes_______________________________________


int i;
for(i=0; i<=OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;// si el número de orden i no existe, detener la búsqueda

if (OrderSymbol() !="GBPUSD" || OrderMagicNumber() != magic) // si la orden no es del par en el que se encuentra nuestro Asesor Experto
continue; // omitirla y mirar la orden que le sigue


//_______close Buy_______
if (OrderType() == OP_BUY && OrderProfit()>=Profit)
// si la orden es de COMPRA
{
OPB=1;
if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//y el mercado está cerca de la inversión
{
OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // ciérrela si es de COMPRA
OPB=0;
}
}
else
{
//_______close Sell_______
if(OrderType() == OP_SELL && OrderProfit()>=Profit)// si la orden es Sell
{OPS=1;
if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//y el mercado está cerca de una inversión
{
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // ciérrelo si está en beneficios
OPS=0;
}
}
}
}

//______________ colocación de órdenes ______________________________________________________________________


if (SARCAD>askCAD && SARCAD<bidCAD && SARAUD<bidAUD && SARAUD>askAUD && OPB<1)// definir condiciones

{ //_______Buy_______

if(!IsTradeAllowed())
{
Alert("el hilo comercial está ocupado, intente de nuevo comprar...");
return(-1);
}
OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //set order

if(OPB == -1)
{
Alert("GBPUSD", "error: buy", GetLastError());
return(-1);
}

if(OPB > 1)
Alert ("GBPUSD", "Put Buy Order!");

}
else
{//_______Sell_______

if(SARCAD>askCAD && SARCAD<bidCAD && SARCAD<bidAUD && SARAUD>askAUD && OPS<1)//define conditions

{

if(!IsTradeAllowed())
{
Alert("el hilo comercial está ocupado, intente de nuevo vender...");
return(-1);
}

OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //configuración de la orden


if(OPS == -1)
{
Alert("GBPUSD", "error: sell", GetLastError());
return(-1);
}

if(OPS > 1)
Alert ("GBPUSD", "Put Sell order!");

}
}
return(0);//salir
}


No sale nada cuando se prueba. No produce ningún resultado.

Hay un conjunto de errores en el registro:

¿Puede decirme qué pasa?


En primer lugar, aprende a insertar código en la ventana pulsando simultáneamente "Contraclic + Alt + M", para que en tu halimatría la gente navegue y dé recomendaciones.

Intente también hacer doble clic en el mensaje de error correspondiente en el registro - tal vez le haga pensar...

 
Roman.:


En primer lugar, aprende a insertar código en una ventana pulsando las teclas Conrle + Alt + M al mismo tiempo, para que puedas guiar a la gente a través de tus tonterías y hacer recomendaciones.

Además, intente hacer doble clic en el mensaje de error correspondiente en el libro de registro, tal vez eso le dé algunas ideas...


Los errores están en el registro del probador, no en el del compilador... (en realidad se puede ver en la foto si se mira primero y luego se comenta...). Hacer doble clic no hace nada allí...

 
int magic = 428;//магический номер эксперта
extern double volume = 0.1;//объем выставляемого ордера
extern int slippage = 3;//проскальзывание
int OPB;//метка выставляемого ордера на покупку
int OPS;//метка выставляемого ордера на продажу
int Profit=1;//уровень профита открытых ордеров
string comB = "Вход по тренду на Buy";//комментарий ордера
string comS = "Вход по тренду на Sell";//комментарий ордера
double StochasticCAD;//положение основной линии Стохастики на текущем баре по USDCAD
double StochasticAUD;//положение основной линии Стохастики на текущем баре по AUDUSD

double SARCAD;//текущее положение индикатора по USDCAD
double SARСCAD;//положение индикатора бар назад по USDCAD
double SARAUD;//текущее положение индикатора по AUDUSD
double SARСAUD;//положение индикатора бар назад по AUDUSD

double bidCAD;
double askCAD;
double bidAUD;
double askAUD;

int start()
  {
  
//______________________________определение значений переменных_______________________ 


      StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0); 
      StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);
      
      SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
      SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
      SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
      SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);
      
      bidCAD   =MarketInfo("USDCAD",MODE_BID);
      askCAD   =MarketInfo("USDCAD",MODE_ASK);
      bidAUD   =MarketInfo("AUDUSD",MODE_BID);
      askAUD   =MarketInfo("AUDUSD",MODE_ASK);


      

//______________________________поиск и закрытие ордеров_______________________________________   
    

    int i;
    for(i=0; i<=OrdersTotal(); i++)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
     break;// если ордер номер i не существует, прекращаем перебор
  
        if (OrderSymbol() != "GBPUSD" || OrderMagicNumber() != magic) // если ордер не с этой пары, на которой стоит наш эксперт
        continue; // пропускаем его и смотрим на следующий за ним ордер
        

      //_______закрытие Buy_______       
        if (OrderType() == OP_BUY && OrderProfit()>=Profit) 
        // если ордер бай 
        {
         OPB=1;
         if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//и рынок близок к развороту
          {
           OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // закроем его, если он в профите
           OPB=0;
          }
        }
        else  
        {
      //_______закрытие Sell_______ 
         if(OrderType() == OP_SELL && OrderProfit()>=Profit)// если ордер селл
          {OPS=1;
           if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//и рынок близок к развороту
            {
             OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // закроем его, если он в профите
             OPS=0;
            }
          }
        }
    }
        
//______________выставление ордеров______________________________________________________________________
    
  
    if (SARCAD>askCAD && SARСCAD<bidCAD && SARAUD<bidAUD && SARСAUD>askAUD && OPB<1)//определим условия
     
     {  //_______Buy_______ 

          if(!IsTradeAllowed())
               {
                  Alert("занят торговый поток, повторим попытку бай...");
                  return(-1);
               }
          OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //выставим ордер
            
            if(OPB == -1)
              {
                 Alert("GBPUSD"," ошибка: бай", GetLastError());
                 return(-1);
              }
         
            if(OPB > 1)
            Alert ("GBPUSD","Выставили ордер на покупку!");

     }
      else
     {//_______Sell_______
  
         if (SARСCAD>askCAD && SARCAD<bidCAD && SARСAUD<bidAUD && SARAUD>askAUD && OPS<1)//определим условия
     
         {
          
           if(!IsTradeAllowed())
                {
                   Alert("занят торговый поток, повторим попытку селл...");
                   return(-1);
                }
        
           OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //выставим ордер


             if(OPS == -1)
               {
                  Alert("GBPUSD"," ошибка: селл", GetLastError());
                  return(-1);
               }
         
             if(OPS > 1)
             Alert ("GBPUSD","Выставили ордер на продажу!");

         }
     }    
   return(0);//выход
  }

 
ViktorF:


¿Una prueba de todos los tics? Problemas con la historia
 
Vinin:

¿Una prueba de todos los tics? Problemas con la historia

Es decir, ¿es necesario recargar el historial de todos los pares implicados en el análisis?
 
ViktorF:

Es decir, ¿hay que recargar el historial de todos los pares implicados en el análisis?


Tal vez. Si, por supuesto, la empresa de corretaje lo admite.

Pero no hay que olvidar que se pueden abrir posiciones en el probador para el símbolo actual, y hay algunas restricciones para otros símbolos

 
Vinin:


Es posible. Si, por supuesto, la empresa de corretaje lo admite.

Sólo hay que tener en cuenta que en el probador se pueden abrir posiciones en el instrumento actual, y hay algunas restricciones en otros instrumentos


¿Qué es un DC? ¿Y cuáles son las restricciones para otros instrumentos?
 
ViktorF:

¿Qué es una empresa de intermediación? ¿Y cuáles son las limitaciones de otros símbolos?


DC - Mesa de contratación

En el probador de otros instrumentos sólo se puede obtener el precio de apertura en la barra cero, los ticks de otros instrumentos no se modelan, el entorno del mercado es casi inaccesible.

Las operaciones con otros instrumentos no se abren.

Si necesita realizar correctamente un análisis multidivisa, es mejor utilizar MT5. Hay un probador de multidivisas.

Razón de la queja: