[¡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 966

 
TarasBY:

¿Puede alguien decirme cuál es el problema?


Hasta que no tengamos el propio indicador, nadie nos lo dirá.
 
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


¿Se aplica esta serie de restricciones al comercio en línea? Si no, es triste. El código no abre nada:

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


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);
      
      double bidCAD=MarketInfo("USDCAD",MODE_BID);
      double askCAD=MarketInfo("USDCAD",MODE_ASK);
      double bidAUD=MarketInfo("AUDUSD",MODE_BID);
      double askAUD=MarketInfo("AUDUSD",MODE_ASK);


........................


//______________выставление ордеров______________________________________________________________________
    
  
    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);//выход
  }
 
mInvIn:

Hola a todos.

Me pueden decir por favor: después de probar en el historial, ¿hay alguna forma de obtener el comentario o número mágico de cada operación realizada, o alguna otra forma de identificar las operaciones? Permítanme que intente explicar el significado. Supongamos que programé algunos patrones y ejecuté el EA en el historial, el resultado, como suele suceder, es la pérdida. Sería interesante ver, cuál de los patrones y bajo qué condiciones de mercado está perdiendo más y más a menudo, y cuál (si alguno) muestra al menos algún beneficio.

Gracias de antemano por las respuestas.

Hazlo sencillo. Establezca el número de patrón como un parámetro externo. El Asesor Experto debe abrir posiciones sólo por este patrón. Y si se especifica cero, por ejemplo, se abre por cualquier patrón. Se ejecuta la optimización por todos los patrones. Obtendrá el cuadro resumen y el desglose de patrones.
 
Se necesita una función de "Nueva Orden" como "Nueva Barra". La función debe tener valor TRUE sólo para un tick después del momento en que se abrió la orden. Es decir, en el momento en que el número de órdenes abiertas cambia al alza. Por favor, ayúdenme
 
Techno:
¿Existe una anulación de las órdenes históricas?
No, sólo órdenes de mercado y pendientes.
 
IgorM:


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

he visto - no sé, tened paciencia - para una imagen general, la prueba es para 10 años, y es mejor optimizar para un año y luego hacer una selección de los mejores parámetros

¡Gracias Igor! Intuitivamente lo estoy haciendo. ¿Pensó que podría ser posible para un período más largo no perder la velocidad también?
 

Gurús por favor aconsejen, ya me he devanado los sesos, siento que debe ser fácil, lo he intentado de las dos maneras.... No puedo...

La esencia del problema:

Estoy escribiendo un indicador, capta puntos en los buffers, en total debería haber 4, 2 montados normalmente, los valores como deben ser por barras, ya sea cero o, el precio, aquí todo está bien, pero necesitamos 2 buffers más en los que poner los valores de esta manera: si se encuentra un valor distinto de cero para el buffer 0, a continuación, comprobar si el valor anterior no cero en el buffer 0, y si es menor, entonces el valor actual se escribe en el buffer 2. Quiero que se calcule sobre la marcha, no buscando y haciendo bucles, es mi primer indicador, he escrito Expert Advisors y scripts, pero me he perdido con el indicador y sus buffers...

...................

Counted_bars=IndicatorCounted(); // Número de barras calculadas

i=Barras-Contadas_barras-1; // Índice de la primera no contada

while(i>1) // Bucle en las barras no contadas

{

if (..............) // aquí todo funciona

{

Buf_0[i]=Alto[i];

{ aquí queremos calcular Buf_2[i] }

}

if (..............) //aquí también funciona todo

{

Buf_1[i]=Low[i];

{pero aquí queremos calcular Buf_3[i] }

}

i--;

//calcular el índice de la siguiente barra

}

//--------------------------------------------------------------------

return; // Salir de la función especial start()

}

//--------------------------------------------------------------------

 
¿Qué ocurre más a menudo, comprar o vender? Significado global.
 
ChachaGames:

Gurús por favor aconsejen, ya me he devanado los sesos, siento que debe ser fácil, lo he intentado de las dos maneras.... No puedo...

La esencia del problema:

Estoy escribiendo un indicador, capta puntos en los buffers, en total debería haber 4, 2 montados normalmente, los valores como deben ser por barras, ya sea cero o, el precio, aquí todo está bien, pero necesitamos 2 buffers más en los que poner los valores de esta manera: si se encuentra un valor distinto de cero para el buffer 0, a continuación, comprobar si el valor anterior no cero en el buffer 0, y si es menor, entonces el valor actual se escribe en el buffer 2. Quiero que se calcule sobre la marcha, no buscando y haciendo bucles, es mi primer indicador, he escrito Expert Advisors y scripts, pero me he perdido con el indicador y sus buffers...

...................

Counted_bars=IndicatorCounted(); // Número de barras calculadas

i=Barras-Contadas_barras-1; // Índice de la primera no contada

while(i>1) // Bucle en las barras no contadas

{

if (..............) // aquí todo funciona

{

Buf_0[i]=Alto[i];

{ aquí queremos calcular Buf_2[i] }

}

if (..............) //aquí también funciona todo

{

Buf_1[i]=Low[i];

{pero aquí queremos calcular Buf_3[i] }

}

i--;

//calcular el índice de la siguiente barra

}

//--------------------------------------------------------------------

return; // Salir de la función especial start()

}

//--------------------------------------------------------------------

A grandes rasgos, ¿cómo puedo averiguar el índice del anterior valor distinto de cero en el búfer?
 
_SS_:
¿Qué ocurre más a menudo, comprar o vender? Significado global.
Exactamente en la mitad por cada venta hay un comprador diferente :)