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

 

Dmido писал(а) >>

Buenos días)


Vuelvo con una pregunta, la he evitado durante mucho tiempo debido a mi falta de comprensión de las órdenes pendientes en los EAs, pero finalmente me he atascado. No entiendo cómo establecer el precio en la orden pendiente. ¿Qué debería añadir en lugar de PUJAR y PEDIR? ¿Puedo utilizar alguna variable calculada con anterioridad? Entonces, ¿cómo debo fijar este precio para que pase después, al hacer un pedido? Me da muchos errores diciendo que no existe tal precio y demás.....


Si no le importa, puede explicar su respuesta en clave... Todo lo que busqué tanto, pero dice tan de lado...(((

En la calidad de los valores Ask y Bid en la idea deben actuar los valores actuales de Ask y Bid, o variables calculadas anteriormente.

Hay una peculiaridad aquí: puede tomar estos valores como reales sólo para las órdenes de compra y venta.


Lo mejor es hacer la apertura de todas las órdenes en forma de al menos 6 procedimientos, es decir OrderSendBuy, OrderSendSell, OrderSendLimitBuy, OrderSendLimitSell, OrderSendStopBuy y OrderSendStopSell.


PS

Hay que tener en cuenta que las órdenes limitadas se abren al mejor precio (con una sangría respecto al precio actual de un determinado número de puntos), y las órdenes stop se colocan en la dirección opuesta por encima o por debajo del precio actual.


Ejemplo de código de apertura del mercado:

//Procedure OrderSendBuy
void OrderSendBuy(string WorkSymbol, double LotsSize=0, int Slippage=3,int SizeSL=0, int SizeTP=100,
string Text=NULL, int MN=0, datetime Expiration=0, color OrdrtColor=CLR_NONE)
{
//----------------------------------------------------------------------------//
// Служебные переменные
double RealAsk, RealBid; //Текущие Ask и Bid инструмента
double SymbolPoint; //Размер пункта текущего инструмента
double SL, TP; // StopLoss и TakeProfit будущей позиции

int TicketNew; //Тикер новой позиции (в случае удачи, иначе -1)
//----------------------------------------------------------------------------//
//Зашита от дурака
  if( LotsSize<MarketInfo( WorkSymbol,MODE_MINLOT)){ LotsSize = MarketInfo( WorkSymbol,MODE_MINLOT);}

//Расчет параметров для новой позиции
SymbolPoint = MarketInfo( WorkSymbol,MODE_POINT); //Определяем размер пункта
RealAsk = MarketInfo( WorkSymbol,MODE_ASK); //Определяем Ask
RealBid = MarketInfo( WorkSymbol,MODE_BID); //Определяем Bid

if( SizeTP>0){ TP = RealAsk+ SizeTP* SymbolPoint;}else{ TP = RealAsk+100* SymbolPoint;}
if( SizeSL>0){ SL = RealBid- SizeSL* SymbolPoint;}else{ SL = 0;}
//Попытка открыть позицию с рынка
TicketNew = OrderSend( WorkSymbol,OP_BUY, LotsSize, RealAsk, Slippage, SL, TP, Text, MN, Expiration, OrdrtColor);
//Проверка ошибок возникших при открытии новой позиции
if( TicketNew==-1)
//При открытии произошла ошибка
{
Print("Попытка открыть Market-Buy позицию по паре ", WorkSymbol," окончилась неудачно. Код ошибки #",GetLastError())
;}
else
//Позиция успешно установлена
{
Print("Успешно создана позиция Market-Buy по паре ", WorkSymbol," Тикер новой позиции #", TicketNow);
Alert("Open market-Buy, ticket ", TicketNew," Open price ", RealAsk," Profit ", TP," SL ", SL);
}
//----------------------------------------------------------------------------//
}


 

Ejemplo de código para establecer una orden pendiente:

//Procedure OrderSendLimitBuy
void OrderSendLimitBuy(string WorkSymbol, double LotsSize=0, int Slippage=3,int LimitStep=50,int SizeSL=0, int SizeTP=100,
string Text=NULL, int MN=0, datetime Expiration=0, color OrdrtColor=CLR_NONE)
{
//----------------------------------------------------------------------------//
// Служебные переменные
double RealAsk, RealBid; //Текущие Ask и Bid инструмента
double OpenPrice; //Цена на которую будет установлен отложник

double SymbolPoint; //Размер пункта текущего инструмента
double SL, TP; // StopLoss и TakeProfit будущей позиции

int TicketNew; //Тикер новой позиции (в случае удачи, иначе -1)
//----------------------------------------------------------------------------//
//Зашита от дурака
  if( LotsSize<MarketInfo( WorkSymbol,MODE_MINLOT)){ LotsSize = MarketInfo( WorkSymbol,MODE_MINLOT);}

//Расчет параметров для новой позиции
SymbolPoint = MarketInfo( WorkSymbol,MODE_POINT); //Определяем размер пункта
RealAsk = MarketInfo( WorkSymbol,MODE_ASK); //Определяем Ask
RealBid = MarketInfo( WorkSymbol,MODE_BID); //Определяем Bid

OpenPrice = RealAsk- LimitStep* SymbolPoint; //Цена на которую будет установлен отложник

if( SizeTP>0){ TP = OpenPrice+ SizeTP* SymbolPoint;}else{ TP = OpenPrice+100* SymbolPoint;}
if( SizeSL>0){ SL = RealBid-( SizeSL+ LimitStep)* SymbolPoint;}else{ SL = 0;}
//Попытка открыть позицию с рынка
TicketNew = OrderSend( WorkSymbol,OP_BUYLIMIT, LotsSize, OpenPrice, Slippage, SL, TP, Text, MN, Expiration, OrdrtColor);
//Проверка ошибок возникших при открытии новой позиции
if( TicketNew==-1)
//При открытии произошла ошибка
{
Print("Попытка создать Limit-Buy по паре ", WorkSymbol," окончилась неудачно. Код ошибки #",GetLastError())
;}
else
//Позиция успешно установлена
{
Print("Успешно создан ордер Limit-Buy по паре ", WorkSymbol," Тикер ордера #", TicketNow);
Alert("Create Limit-Buy, ticket ", TicketNew," Open price ", OpenPrice," Profit ", TP," SL ", SL);
}
//----------------------------------------------------------------------------//
}
 

Hola.

Estoy probando un EA.

Periodo Día (D1) 2008.09.01 00:00 - 2009.08.31 00:00 (2008.09.01 - 2009.09.01)
Modelo Todos los ticks (el método más preciso basado en todos los plazos más pequeños disponibles)
Bares en la historia 1259 Garrapatas modeladas 8769661 Calidad de los modelos n/a
Errores de concordancia de los gráficos 225

Estoy recibiendo errores de coincidencia. ¿Hay alguna forma de evitarlos? No entiendo si se trata de un número grande o pequeño de errores. La balanza es predominantemente verde y verde oscuro, pero sólo está llena en un 20%. Y la calidad de la simulación es n/a - ¿es eso un problema?

Tal vez ni siquiera debería prestar atención, simplemente no entiendo ...

Gracias de antemano.

 
RedFish >> :

Hola.

Estoy probando un EA.

Periodo Día (D1) 2008.09.01 00:00 - 2009.08.31 00:00 (2008.09.01 - 2009.09.01)
Modelo Todos los ticks (el método más preciso basado en todos los plazos más pequeños disponibles)
Bares en la historia 1259 Garrapatas modeladas 8769661 Calidad de los modelos n/a
Errores de concordancia de los gráficos 225

Estoy recibiendo errores de coincidencia. ¿Hay alguna forma de evitarlos? No entiendo si se trata de un número grande o pequeño de errores. La balanza es predominantemente verde y verde oscuro, pero sólo está llena en un 20%. Y la calidad de la simulación es n/a - ¿es eso un problema?

Tal vez ni siquiera debería prestar atención, simplemente no entiendo ...

Gracias de antemano.

No sé yo personalmente nunca me molesto con esas cosas (ya que casi siempre pruebo las estrategias sin visualización).


Esto es lo que obtuve en la judía D1 con un período de prueba similar

Intento #1: barras en la historia - 1302 ticks simulados - 4313293 Calidad de la simulación - 50.00%

Intento #2: Barras en el historial - 1303 Ticks modelados - 4323442 Calidad de modelado - 50.00%
Errores de desajuste de gráficos - 0.

 
Interesting писал(а) >>

No sé, yo personalmente nunca me molesto con esas cosas (ya que casi siempre pruebo las estrategias sin visualización).

Esto es lo que obtuve en la judía D1 con un período de prueba similar

Intento #1: barras en la historia - 1302 ticks simulados - 4313293 Calidad de la simulación - 50.00%

Prueba #2: Historia: 1303 barras - 1303 ticks simulados - 4323442 Calidad de modelado - 50.00%
Error de desajuste del gráfico - 0.

Gracias.

Creo que ahora MT rellena automáticamente las últimas 512 barras y rellena el resto .... No sé cómo decirlo exactamente. Mi Asesor Experto es de tendencia y la distancia es importante para mí. 512 barras no es demasiado.

En cuanto a los otros símbolos, ¿se pueden descargar de un sitio separado y bajar después?

Se lo agradezco.

 

Buenas tardes, queridos amigos.

Últimamente he estado tonto, tal vez sea el clima.

Me pueden decir cómo declarar un array unidimensional (en un indicador), si el número de elementos del array lo fija una variable externa.

Gracias.

 
RedFish >> :

Hola.

Estoy probando un EA.

PeriodoDía (D1) 2008.09.01 00:00 - 2009.08.31 00:00 (2008.09.01 - 2009.09.01)
ModeloTodos los ticks (el método más preciso basado en todos los plazos más pequeños disponibles)
Bares en la historia1259Garrapatas modeladas8769661Calidad de los modelosn/a
Errores de concordancia de los gráficos225

Estoy recibiendo errores de coincidencia. ¿Hay alguna forma de evitarlos? No entiendo si se trata de un número grande o pequeño de errores. La balanza es predominantemente verde y verde oscuro, pero sólo está llena en un 20%. Y la calidad de la simulación es n/a - ¿es eso un problema?

Tal vez ni siquiera debería prestar atención, simplemente no entiendo ...

Gracias de antemano.

Mi abajo IMHO, pero siendo comillas- por favor corrígeme si me equivoco:

La cuestión es que el cierre del minuto 59, el cierre del minuto 45 en M15, el cierre del minuto 30 en M30 y el cierre en H1 pueden NO coincidir.

Para coincidir, necesitas matar tu propio historial, descargando el historial del servidor de cotizaciones por un periodo menor

y recalcular todos los plazos utilizando el historial descargado.

En este caso, el cierre real en diferentes plazos también puede no coincidir.

En otras palabras, debe tomar el marco temporal más pequeño y leer los valores del marco temporal más grande con su MANO.

 
alderru >> :

Buenas tardes, queridos amigos.

Últimamente he estado tonto, tal vez sea el clima.

Podrían decirme cómo declarar un array unidimensional (en un indicador), si el número de elementos del array es fijado por una variable externa.

Gracias.

int y[];

extern int blah-blah = 100;

init() {

ArrayResize(y, blah-blah);

}

 
jartmailru писал(а) >>

Mi abajo IMHO, pero siendo comillas, por favor corregidme si me equivoco:

La cuestión es que Close 59th minute, Close 45th en M15, Close 30th en M30 y Close en H1 pueden NO coincidir.

Para coincidir, necesitas matar tu propio historial, descargando el historial del servidor de cotizaciones por un periodo menor

y recalcular todos los plazos utilizando el historial descargado.

En este caso, el cierre real en diferentes plazos también puede no coincidir.

Es decir, en el buen sentido, debe tomar el marco temporal más pequeño y leer los valores del marco temporal más grande.

¡О! ¡¡Manos!!

Gracias por la respuesta. Pero a juzgar por la primera parte, entiendo que los errores no son críticos para mí. Muchas gracias por explicar el mecanismo de estos errores.

 
¡Señores el problema en el código puede ayudar!
for ( shift = CountBars; shift>=0; shift--) 
{ 
         cci1 = iCCI(NULL, 0, kCCI, PRICE_TYPICAL, shift-1);
         cci2 = iCCI(NULL, 0, kCCI, PRICE_TYPICAL, shift);  

         if ( cci1>100) // (b4plusdi>b4minusdi && nowplusdi<nowminusdi)
         {
         val1[ shift]=Low[ shift]-5*Point;
         if ( flagval2==0) { Alert("не забудь отправить письмо о БАЙ"); flagval2=1; flagval1=0;}
         }
         if ( cci1<-100) //(b4plusdi<b4minusdi && nowplusdi>nowminusdi) 
         {
         val2[ shift]=High[ shift]+5*Point;
         if ( flagval1==0) { Alert("не забудь отправить письмо о СЕЛЛ"); flagval2=0; flagval1=1;}
         }
   }
   return(0);
}

en lo más alto:

int flagval1=0;
int flagval2=0;

Estoy luchando específicamente con estas banderas, ¿puede alguien echar un nuevo vistazo?

-----------------

y también hay un problema con el código de EA:

//---------------------------------------------------------------- 5.1 
   cci1 = iCCI(NULL, 0, kCCI, PRICE_TYPICAL, 1);

   if ( New_Bar==true && cci1>100 && flagval2==1)                // && MA_3_t==0   && wayDOWN==true
     {                                            
         Opn_B=true; New_Bar=false; Cls_S=true;                                  
         flagval1=1;
         flagval2=0;
     }
     
   if ( New_Bar==true && cci1<-100 && flagval1==1)                 // && MA_4_t==0  && wayUP==true
     {                                                   
         Opn_S=true; New_Bar=false; Cls_B=true;
         flagval2=1;
         flagval1=0;
     }
//--------------------------------------------------------------- 6 --

¡no se trata de comerciar! Tal vez alguien lo revise de nuevo.

¡decidió estúpida tan pronto como el 100 (-100) va al comercio!

¡Acojo a EA!

Archivos adjuntos:
stoch_cros.mq4  17 kb
Razón de la queja: