[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 418

 
sss2019:


Gracias. Así que el periodo M1 corresponde al valor 1, y el periodo M5 corresponde al valor 5, por lo que resulta que el periodo H1 corresponde al valor 60, y el periodo H4 corresponde al valor 240 ¿no?


Sí, así es.

PERIOD_M1 1 1 минута
PERIOD_M5 5 5 минут
PERIOD_M15 15 15 минут
PERIOD_M30 30 30 минут
PERIOD_H1 60 1 час
PERIOD_H4 240 4 часа
PERIOD_D1 1440 1 день
PERIOD_W1 10080 1 неделя
PERIOD_MN1 43200 1 месяц
0 (ноль) 0 Период текущего графика

 

¡Hola!

Por favor, ayúdenme a entender. Estoy tratando de escribir un indicador simple, pero de alguna manera da valores vacíos.

Me parece que el error está en algún lugar de este sitio

ExtVolumesBuffer[i]=dVolume;


porque el campo de esta operación en el array ExtVolumesBuffer no cambia nada.

Entiendo que en alguna parte me he equivocado, pero no entiendo dónde.

Gracias de antemano.

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_buffers 1
#property indicator_color1 Black
//---- indicator buffers
double ExtVolumesBuffer[];
double emaExtVolumesBuffer[];

//+------------------------------------------------------------------+
int init()
{
//---- indicator buffers mapping
SetIndexBuffer(0,emaExtVolumesBuffer);
//---- drawing settings
SetIndexStyle(0,DRAW_LINE);
//---- sets default precision format for indicators visualization
IndicatorDigits(0);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("emaVolumes");
SetIndexLabel(0,"emaVolumes");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int i,nLimit,nCountedBars;
//---- bars count that does not changed after last indicator launch.
nCountedBars=IndicatorCounted();
//---- last counted bar will be recounted
if(nCountedBars>0) nCountedBars--;
nLimit=Bars-nCountedBars;
//----
for(i=0; i<nLimit; i++)
{
double dVolume=Volume[i];
ExtVolumesBuffer[i]=dVolume;
emaExtVolumesBuffer[i]=iMAOnArray(ExtVolumesBuffer,0,10,0,MODE_EMA,i);

Print(Volume[i],Volume[i+1],Volume[i+2],Volume[i+3]);
Print(ExtVolumesBuffer[i],ExtVolumesBuffer[i+1],ExtVolumesBuffer[i+2],ExtVolumesBuffer[i+3]);
}
//---- done
return(0);
}
//+------------------------------------------------------------------+
 
sss2019:


Gracias. Así que el periodo M1 corresponde al valor 1, y el periodo M5 corresponde al valor 5, por lo que resulta que el periodo H1 corresponde a 60, y el periodo H4 a 240 ¿verdad?

Necesito que funcione esta construcción: cuando se selecciona el periodo M1 caso 1 y cuando se selecciona el periodo M15 caso 15. ¿Funcionará, o es necesario hacer el caso 1 el caso 2 el caso 3 - en orden?

int CurrentGrafPeriod ()
{
   
int Ba;
int GrafPeriod = Period();    
  switch(GrafPeriod)
    {
 
    case 1 :  Ba = 60; break;
    case 5 :  Ba = 12; break;
    case 15 : Ba = 4;  break;
    case 30 : Ba = 2;  break;
    case 60 : Ba = 1;  break;
    }
return(Ba);
}

if(CurrentGrafPeriod () == 1){ваше исполнение}
if(CurrentGrafPeriod () == 5){ваше исполнение}
и так далее...
pero esto es una teoría - no sé si funcionará....
 
sss2019:


Gracias. Así que el periodo M1 corresponde al valor 1, y el periodo M5 corresponde al valor 5, por lo que significa que el periodo H1 corresponde al valor 60, y el periodo H4 corresponde al valor 240 ¿no?

Quiero que esta construcción funcione: cuando el período M1 se establece en el caso 1 y cuando el período M15 se establece en el caso 15. ¿Funciona así o es necesario hacer el caso 1 el caso 2 el caso 3 - en orden?


En primer lugar, es mejor utilizar constantes con nombre en lugar de números 1, 5, etc. : PERIOD_M1, PERIOD_M5, etc.

En segundo lugar, hay un error en su ejemplo. La variable Ba siempre tomará el valor 1.

 
sss2019:


Gracias. Así que el periodo M1 corresponde al valor 1, y el periodo M5 corresponde al valor 5, por lo que significa que el periodo H1 corresponde al valor 60, y el periodo H4 corresponde al valor 240 ¿no?

Quiero que esta construcción funcione: cuando el período M1 se establece en el caso 1 y cuando el período M15 se establece en el caso 15. ¿Funcionará o es necesario hacer el caso 1 el caso 2 el caso 3 - en orden?

1) Funcionará si añades un corte en cada línea.

2) En lugar de 1, 5, 15, es mejor utilizar PERIOD_M1, PERIOD_M5, PERIOD_M15, etc.

 

Buenas tardes, acabo de encontrarme con el hecho de que el robot de trading no cierra las posiciones, aproximadamente una de cada 50, cuando alcanza un beneficio. A continuación, tiene que cerrar todo, colgantes y todo, y configurar de nuevo. El hecho de no cerrar crea confusión en las órdenes y en las detracciones.

Imagínese que a veces resulta que una orden, que se cerró definitivamente en takeprofit, tiene un ordercloseprice igual a cero !!!!!.

Aquí, mira la captura de pantalla, aquí está la quinta línea desde abajo; la orden, convencionalmente llamada 49, se cerró en TakeProfit. Y en la novena línea desde el fondo ¡¡¡¡¡Orderclosepriche es igual a cero!!!!!

 
PapaYozh:

En segundo lugar, hay un error en su ejemplo. La variable Ba tomará siempre el valor 1.

¿Y por qué? ¿Le falta un descanso?
 
dkfl.zrjdktdbx:

Buenas tardes, acabo de encontrarme con el hecho de que el robot de trading no cierra las posiciones, aproximadamente una de cada 50, cuando alcanza un beneficio. A continuación, tiene que cerrar todo, colgantes y todo, y configurar de nuevo. El hecho de no cerrar crea confusión en las órdenes y en las detracciones.

Imagínese que a veces resulta que una orden, que se cerró definitivamente en takeprofit, tiene un ordercloseprice igual a cero !!!!!.

Usted puede ver en la captura de pantalla de abajo, aquí está la quinta línea; la orden nominalmente llamado 49 cerrado en TakeProfit. ¡¡¡¡¡Y en la novena línea desde abajo Orderclosepriche es igual a cero!!!!!


Esto no es orderclossepriche - es Clowes Price - precio de cierre de la orden.

El código de su Asesor Experto necesita ser corregido. Es el que está luchando.

 

Ya veo. No es que haya nada en el código que sea particularmente complicado... Lo publicaré ahora.

Cuando hago pedidos, guardo el tiempo en wremjapomnim. En cuanto se cierra alguna orden con el beneficio actual, borro todas las órdenes y vuelvo a recordar la hora en la variable wremjapomnim y las pongo.

for ( i=OrdersHistoryTotal();i>0;i--){ OrderSelect(i-1,SELECT_BY_POS,MODE_HISTORY  );
Alert( "wremjapomnim " ,wremjapomnim, "  OrderCloseTime(        )   ",  OrderCloseTime( ),  " ",i , " OrderTakeProfit( ) " ,OrderTakeProfit( ),
  " OrderClosePrice(    )  ",OrderClosePrice(   ) );
if ( OrderTakeProfit( )==OrderClosePrice(       )&&wremjapomnim<OrderCloseTime( )|| (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)<2*Point)
   &&wremjapomnim<OrderCloseTime(       )|| (NormalizeDouble(OrderClosePrice()-OrderTakeProfit(), Digits)>-2*Point)&&wremjapomnim<OrderCloseTime(       )){C=0;A=1 ;  Alert("C",C,"A",A);
   for ( int ii=OrdersTotal();ii>0;ii--){ OrderSelect(ii-1,SELECT_BY_POS );
   if( OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol()|| OrderMagicNumber( )==1000 &&OrderSymbol()==Symbol()){ 
  OrderDelete(OrderTicket( )) ; Alert ("OrderDelete-vse",  GetLastError( ) ); stsBUY=0;stsSELL=0;
   OrderClose( OrderTicket( ), OrderLots( ), OrderClosePrice( ) , 0, CLR_NONE);Alert ("OrderClose-vse",  GetLastError( ) ); C=0; }     }              }
   
                                                      } 
 
 
melnikas:

¡Hola!

Por favor, ayúdenme a entender esto. Estoy tratando de escribir un indicador simple, pero de alguna manera da valores vacíos.

Me parece que el error está en este lugar


porque el campo de esta operación en el array ExtVolumesBuffer no cambia nada.

Entiendo que he cometido un error en alguna parte, pero no entiendo dónde.

Gracias de antemano.


¿Es mi caso tan complicado?