Para ser honesto, no he leído sus hilos - sólo miré en este hilo, vi que nadie respondió al post repetido, decidí responder... No tengo tiempo para todo seguido, tengo que ser exigente.
extern string Settings = "Main Settings"; // extern int MagicNumber = 227 ; //Número individual //. extern double Lotes = 1 ; //lote mínimo ///. extern int Beneficio = 5000 ; // Toma de Beneficio // extern inttern Pérdida = 10000 ; //Stop Pérdida //. extern int Delta = 500 ; extern int Raznica = 700 ; //Pérdida de la parada; //--------------------------------------------------------------------------------// extern string Indicador2 = "Bandas" ; // extern int int BandsPeriod = 20 ; // //periodo extern inttern Bands_shift = 0 ; //offset // extern double Desviaciones = 2.0 ; // // //--------------------------------------------------------------------------------// extern int Slip = 5 ; //Slip /////////////// int tick,tick2,go; // // //--------------------------------------------------------------------------------// int inicio() // { ///////////////////////////////// //---------------------------------------------------------------------------------------------------------------// // Indicador de bandas // //---------------------------------------------------------------------------------------------------------------// double verhB=iBands(NULL,0,BandsPeriod,Bands_shift,Deviations,PRICE_CLOSE,MODE_UPPER,0);//calcular indicador de línea superior// double seredina=iBands(NULL,0,BandsPeriod,Bands_shift,Deviations,PRICE_CLOSE,0,0); //calcular el indicador de línea media// double nizB=iBands(NULL,0,BandsPeriod,Bands_shift,Deviations,PRICE_CLOSE,MODE_LOWER,0);//calcular indicador de línea inferior// //---------------------------------------------------------------------------------------------------------------// doble slb,tpb,sls,tps; doble go=(verhB-nizB); Alert ("verhB",DoubleToStr(verhB,Digits)); Alert ("nizB ",DoubleToStr(nizB,Digits)); slb=NormalizarDoble(Demanda - (Pérdida*Punto),Dígitos) ; tpb=NormalizarDoble(Demanda + (Beneficio*Punto),Dígitos); sls=NormalizarDoble(Oferta + (Pérdida*Punto),Dígitos) ; tps=NormalizarDoble(Oferta - (Beneficio*Punto),Dígitos); if(PedidosTotal()==0) { if(go<=Delta/10000) Alert("¡Delta ", DoubleToStr(go,Digits)," está llegando!!!";) tick =OrderSend(Symbol(),4,Lots,NormalizeDouble(Ask+Raznica*Point,Digits),Slip,slb,tpb,NULL,MagicNumber,0,CLR_NONE); //introducir por/ if(tick<0) Print("Error # - ",GetLastError());
tick=OrderSend(Symbol(),5,Lots,NormalizeDouble(Bid-Raznica*Point,Digits),Slip,sls,tps,NULL,MagicNumber,0,CLR_NONE); //se establece la entrada if(tick<0) Print("Error # - ",GetLastError());
}
return(0);}
Ayúdame a arreglar !!!! ¡¡¡Llevo una semana trasteando!!! El punto es que en una cierta distancia entre el límite superior e inferior de la Bollinger dos colgantes se pusieron en la parada de compra y venta de parada. No puedo establecer la diferencia porque escribe que el límite superior e inferior del precio de Bollinger es el mismo .... Por favor, ayude a ......
ruslanchik: Me salgo del tema! ¿Cómo obtener Punto = 0,00001 (5 dígitos) para alpari por medios estándar?
double point(string symb){
double p = 0;
int d = 0;
p = MarketInfo(symb, MODE_POINT);
d = MarketInfo(symb, MODE_DIGITS);
if (d == 5 || d == 3) p *= 10;
return(p);
}
//+------------------------------------------------------------------+ //| Función de inicialización de indicadores personalizada | //+------------------------------------------------------------------+ int init() { //---- Se utilizan 2 buffers adicionales para el conteo. IndicatorBuffers(4); //---- ajustes de dibujo SetIndexStyle(0,DRAW_LINE); SetIndexDrawBegin(0,SignalSMA); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2); //---- 3 indicadores de la asignación de buffers if(!SetIndexBuffer(0,ind_buffer1) && SetIndexBuffer(1,ind_buffer2) && SetIndexBuffer(3,ind_buffer4) && SetIndexBuffer(2,ind_buffer3)) Print("¡no se pueden fijar los buffers de los indicadores!"); //---- nombre para la etiqueta de la subventana DataWindow y del indicador IndicadorNombreCorto(); //---- inicialización realizada return(0); } //+------------------------------------------------------------------+ //| Media móvil del oscilador | //+------------------------------------------------------------------+ int inicio() { int límite; int barras_contadas=IndicadorContado(); //---- comprobar posibles errores if(counted_bars<0) return(-1); //---- la última barra contada se volverá a contar if(counted_bars>0) counted_bars--; limit=Barras_contabilizadas; //---- macd contada en el 1er búfer adicional for(int i=0; i<limit; i++) ind_buffer2[i]=iOBV(NULL, 0, PRICE_CLOSE, i); //---- línea de señalización contada en el 2º búfer adicional for(i=0; i<limit; i++) { ind_buffer3[i]=iMAOnArray(ind_buffer2,Bars,10,0,MODE_SMA,i); ind_buffer4[i]=iMAOnArray(ind_buffer2,Bars,3,0,MODE_SMA,i); } //---- bucle principal for(i=0; i<limit; i++) ind_buffer1[i]=ind_buffer2[i]-ind_buffer3[i]; //---- hecho return(0); } //+------------------------------------------------------------------+
xtern int FastEMA=12; extern int SlowEMA=26; extern int SignalSMA=9; Estos ajustes. Los cambios en la caja no conducen a nada. La línea del indicador no cambia.
GRACIAS por su atención, drknn.
extern int MagicNumber = 227 ; //Número individual //.
extern double Lotes = 1 ; //lote mínimo ///.
extern int Beneficio = 5000 ; // Toma de Beneficio //
extern inttern Pérdida = 10000 ; //Stop Pérdida //.
extern int Delta = 500 ;
extern int Raznica = 700 ; //Pérdida de la parada;
//--------------------------------------------------------------------------------//
extern string Indicador2 = "Bandas" ; //
extern int int BandsPeriod = 20 ; // //periodo
extern inttern Bands_shift = 0 ; //offset //
extern double Desviaciones = 2.0 ; // //
//--------------------------------------------------------------------------------//
extern int Slip = 5 ; //Slip ///////////////
int tick,tick2,go; // //
//--------------------------------------------------------------------------------//
int inicio() //
{ /////////////////////////////////
//---------------------------------------------------------------------------------------------------------------//
// Indicador de bandas //
//---------------------------------------------------------------------------------------------------------------//
double verhB=iBands(NULL,0,BandsPeriod,Bands_shift,Deviations,PRICE_CLOSE,MODE_UPPER,0);//calcular indicador de línea superior//
double seredina=iBands(NULL,0,BandsPeriod,Bands_shift,Deviations,PRICE_CLOSE,0,0); //calcular el indicador de línea media//
double nizB=iBands(NULL,0,BandsPeriod,Bands_shift,Deviations,PRICE_CLOSE,MODE_LOWER,0);//calcular indicador de línea inferior//
//---------------------------------------------------------------------------------------------------------------//
doble slb,tpb,sls,tps;
doble go=(verhB-nizB);
Alert ("verhB",DoubleToStr(verhB,Digits));
Alert ("nizB ",DoubleToStr(nizB,Digits));
slb=NormalizarDoble(Demanda - (Pérdida*Punto),Dígitos) ;
tpb=NormalizarDoble(Demanda + (Beneficio*Punto),Dígitos);
sls=NormalizarDoble(Oferta + (Pérdida*Punto),Dígitos) ;
tps=NormalizarDoble(Oferta - (Beneficio*Punto),Dígitos);
if(PedidosTotal()==0)
{
if(go<=Delta/10000)
Alert("¡Delta ", DoubleToStr(go,Digits)," está llegando!!!";)
tick =OrderSend(Symbol(),4,Lots,NormalizeDouble(Ask+Raznica*Point,Digits),Slip,slb,tpb,NULL,MagicNumber,0,CLR_NONE); //introducir por/
if(tick<0) Print("Error # - ",GetLastError());
tick=OrderSend(Symbol(),5,Lots,NormalizeDouble(Bid-Raznica*Point,Digits),Slip,sls,tps,NULL,MagicNumber,0,CLR_NONE); //se establece la entrada
if(tick<0) Print("Error # - ",GetLastError());
}
return(0);}
Ayúdame a arreglar !!!! ¡¡¡Llevo una semana trasteando!!! El punto es que en una cierta distancia entre el límite superior e inferior de la Bollinger dos colgantes se pusieron en la parada de compra y venta de parada. No puedo establecer la diferencia porque escribe que el límite superior e inferior del precio de Bollinger es el mismo .... Por favor, ayude a ......
Probablemente no tengas un lote normalizado, normalízalo con:
¡¡No se puede redondear mucho a los dígitos!!
no mire los comentarios a las funciones equivocadas
prestar atención a
double verhB=iBands(NULL,0,BandsPeriod,Bands_shift,Deviations,PRICE_CLOSE,MODE_UPPER,0);//calcular indicador de línea superior//
double seredina=iBands(NULL,0,BandsPeriod,Bands_shift,Deviations,PRICE_CLOSE,0,0); //calcular el indicador de línea media//
double nizB=iBands(NULL,0,BandsPeriod,Bands_shift,Deviations,PRICE_CLOSE,MODE_LOWER,0);//calcular indicador de línea inferior //
cambiarlos
Me salgo del tema! ¿Cómo obtener Punto = 0,00001 (5 dígitos) para alpari por medios estándar?
Buenas tardes
Quién miraría el código del indicador - no escucha la configuración en absoluto.
No soy bueno con el código
//---- ajustes del indicador
#property indicador_separar_ventana
#property indicator_buffers 1
#property indicator_color1 Silver
//---- parámetros del indicador
extern int FastEMA=12;
extern inttern SlowEMA=26;
extern inttern SeñalSMA=9;
//---- búferes indicadores
doble ind_buffer1[];
doble ind_buffer2[];
doble ind_buffer3[];
doble ind_buffer4[];
//+------------------------------------------------------------------+
//| Función de inicialización de indicadores personalizada |
//+------------------------------------------------------------------+
int init()
{
//---- Se utilizan 2 buffers adicionales para el conteo.
IndicatorBuffers(4);
//---- ajustes de dibujo
SetIndexStyle(0,DRAW_LINE);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//---- 3 indicadores de la asignación de buffers
if(!SetIndexBuffer(0,ind_buffer1) &&
SetIndexBuffer(1,ind_buffer2) &&
SetIndexBuffer(3,ind_buffer4) &&
SetIndexBuffer(2,ind_buffer3))
Print("¡no se pueden fijar los buffers de los indicadores!");
//---- nombre para la etiqueta de la subventana DataWindow y del indicador
IndicadorNombreCorto();
//---- inicialización realizada
return(0);
}
//+------------------------------------------------------------------+
//| Media móvil del oscilador |
//+------------------------------------------------------------------+
int inicio()
{
int límite;
int barras_contadas=IndicadorContado();
//---- comprobar posibles errores
if(counted_bars<0) return(-1);
//---- la última barra contada se volverá a contar
if(counted_bars>0) counted_bars--;
limit=Barras_contabilizadas;
//---- macd contada en el 1er búfer adicional
for(int i=0; i<limit; i++)
ind_buffer2[i]=iOBV(NULL, 0, PRICE_CLOSE, i);
//---- línea de señalización contada en el 2º búfer adicional
for(i=0; i<limit; i++) {
ind_buffer3[i]=iMAOnArray(ind_buffer2,Bars,10,0,MODE_SMA,i);
ind_buffer4[i]=iMAOnArray(ind_buffer2,Bars,3,0,MODE_SMA,i);
}
//---- bucle principal
for(i=0; i<limit; i++)
ind_buffer1[i]=ind_buffer2[i]-ind_buffer3[i];
//---- hecho
return(0);
}
//+------------------------------------------------------------------+
xtern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9; Estos ajustes. Los cambios en la caja no conducen a nada. La línea del indicador no cambia.
El autor ha matado mi petición