Me puedes decir como hacer que el indicador no muestre la corriente sino el valor máximo de las últimas Per barras, he usado Osma como ejemplo, pero muestra la corriente en el Probador de Estrategias cuando el gráfico está en movimiento y cuando solo lo pones en el gráfico, nada:
//---- indicator settings#property indicator_separate_window#property indicator_buffers1#property indicator_color1 Silver
#property indicator_width1 2//---- indicator parametersexternint Per=12;
externint FastEMA=12;
externint SlowEMA=26;
externint SignalSMA=9;
//---- indicator buffersdouble OsmaBuffer1[];
double OsmaBuffer[];
double MacdBuffer[];
double SignalBuffer[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- 2 additional buffers are used for counting.
IndicatorBuffers(4);
//---- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(Digits+2);
//---- 3 indicator buffers mappingSetIndexBuffer(0,OsmaBuffer1);
SetIndexBuffer(1,OsmaBuffer);
SetIndexBuffer(2,MacdBuffer);
SetIndexBuffer(3,SignalBuffer);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//---- initialization donereturn(0);
}
//+------------------------------------------------------------------+//| Moving Average of Oscillator |//+------------------------------------------------------------------+int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recountedif(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1-st additional bufferfor(int i=0; i<limit; i++)
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd additional bufferfor(i=0; i<limit; i++)
SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- main loopfor(i=0; i<limit; i++)
OsmaBuffer[i]=MacdBuffer[i]-SignalBuffer[i];
//---- donefor(i=0; i<limit; i++)
{
for(int b=0; b<Per; b++)
{
OsmaBuffer1[i] =OsmaBuffer[ ArrayMaximum(OsmaBuffer,Per,b)];
}
}
return(0);
}
Всё разобрался, перемудрил просто))), достаточно этого:
borilunad: Lo entiendo. Pero, ¿cómo podemos programar esta variable ("spread especificado")? Claro, puedo crear una variable Spread y cambiarla cada vez que cambie el spread en el tester. Digamos que Spread(TestGenerator) o que hay alguna función, o que de alguna manera se puede hacer tal función, ¡no puede ser que no se pueda! А?
Hay una dispersión establecida, cuando se hace la prueba,
pero con la mayoría de los CC es variable. Si quieres, tenlo en cuenta en el probador. En general, pruebe los Asesores Expertos en las condiciones más desfavorables. Es decir, con la máxima dispersión, con posibles retrasos en la apertura de la orden, etc.
Hay una dispersión especificada, cuando se hace la prueba,
pero con la mayoría de los CC es variable. Si quieres, tenlo en cuenta en el probador. En general, pruebe los Asesores Expertos en las condiciones más desfavorables. Es decir, con la máxima dispersión, con posibles retrasos en la apertura de la orden, etc.
¡Entiendo y hago todo! ¡Sólo quería reflejar el spread que puse en el prog, porque en el tester el Ask suele estar distorsionado, luego lo encuentro a través de Bid+spread! ¡Ver rama MarketInfo no funciona en el probador! ¡Entonces sabrás qué es lo que está mal! Preguntado allí, ¡y nadie! ¡Por lo tanto, se trasladó aquí, allí respondió, para que usted y otros gracias!
borilunad: Sí, lo entiendo y lo hago todo. ¡Sólo quería que el spread que estoy configurando se reflejara en el prog, ya que el Ask suele estar distorsionado en el tester, y luego lo encuentro a través de Bid+spread! ¡Ver rama MarketInfo no funciona en el probador! ¡Entonces sabrás qué es lo que está mal! Preguntado allí, ¡y nadie! ¡Por lo tanto, se trasladó aquí, allí respondió, para que usted y otros gracias!
Mierda, Boris. Ya he escrito antes. Pues bien, puedes imitar un spread flotante directamente en el Asesor Experto. Qué me impide añadir un número aleatorio en el rango del spread flotante a la oferta, y abrirlo con órdenes de stop. Y cerrar por valor, no por órdenes de detención. Es más complicado que establecer una extensión estática mayor, pero si realmente lo necesitas, puedes hacerlo. Al mismo tiempo, establece la dispersión mínima en el probador.
Mierda, Boris. Ya he escrito antes. Bueno, haz un spread flotante simulado en tu EA. Qué te impide añadir un número aleatorio en el rango de spread flotante a la oferta y abrir con órdenes de stop. Y cerrar por valor, no por órdenes de detención. Es más complicado que establecer una extensión estática mayor, pero si realmente lo necesitas, puedes hacerlo. Al mismo tiempo, en el probador, ajuste la dispersión mínima.
Esto es sólo ... Una forma de pensar.
Gracias Artem, ¡eso es más sabio en el buen sentido! Lo haré.
Ayuda con el problema, por favor) Escribí un Asesor Experto que funciona cruzando ondas, pero cuando trato de probarlo, la terminal emite un pitido y no prueba nada (el código del compilador le gusta. ¿Cómo hacer para que al menos se muestre algo?
Ayuda con el problema, por favor) Escribí un Asesor Experto que funciona cruzando ondas, pero cuando trato de probarlo, la terminal emite un pitido y no prueba nada (el código del compilador le gusta. ¿Cómo hacer para que al menos se muestre algo?
¡¿Alguna vez miras lo que has escrito?!
Algo me dice que "aquí es donde está el problema":
Ayuda con el problema, por favor) Escribí un Asesor Experto que funciona en el cruce de agitar, pero cuando trato de probarlo, el terminal emite un pitido y no prueba nada (código compilador le gusta. ¿Cómo hacer para que al menos algo para mostrar?
//считаю ордера чтобы советник не трогал в ручную выставленные ордера
¿Dónde lo tocará, eh? Sí y basta con comprobar el mago, manual sin mago.
Bueno, y, como ya se ha escrito más arriba, los macerados no se solapan...
Me puedes decir como hacer que el indicador no muestre la corriente sino el valor máximo de las últimas Per barras, he usado Osma como ejemplo, pero muestra la corriente en el Probador de Estrategias cuando el gráfico está en movimiento y cuando solo lo pones en el gráfico, nada:
Lo entiendo. Pero, ¿cómo podemos programar esta variable ("spread especificado")? Claro, puedo crear una variable Spread y cambiarla cada vez que cambie el spread en el tester. Digamos que Spread(TestGenerator) o que hay alguna función, o que de alguna manera se puede hacer tal función, ¡no puede ser que no se pueda! А?
Hay una dispersión establecida, cuando se hace la prueba,
pero con la mayoría de los CC es variable. Si quieres, tenlo en cuenta en el probador. En general, pruebe los Asesores Expertos en las condiciones más desfavorables. Es decir, con la máxima dispersión, con posibles retrasos en la apertura de la orden, etc.
Hay una dispersión especificada, cuando se hace la prueba,
pero con la mayoría de los CC es variable. Si quieres, tenlo en cuenta en el probador. En general, pruebe los Asesores Expertos en las condiciones más desfavorables. Es decir, con la máxima dispersión, con posibles retrasos en la apertura de la orden, etc.
Esta es la función
bool isFlagHistoryPos(int mn=-1) {
datetime t;
int gd = MarketInfo(Symbol(),MODE_DIGITS);
int, j=-1, k=Total de pedidos();
for (i=0; i<k; i++) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==Symbol()) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
si (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
if(OrderSelect(j, SELECT_BY_POS,MODE_HISTORY)) {
double ocp=NormalizeDouble(OrderClosePrice(),gd);
double otp=NormalizeDouble(OrderTakeProfit(),gd);
if(MathAbs(ocp-otp)/Point<=TPpoint) return(true);
}
return(false);
Se adjunta el propio Asesor Experto
/* Descompilado por Vinin */
Sí, lo entiendo y lo hago todo. ¡Sólo quería que el spread que estoy configurando se reflejara en el prog, ya que el Ask suele estar distorsionado en el tester, y luego lo encuentro a través de Bid+spread! ¡Ver rama MarketInfo no funciona en el probador! ¡Entonces sabrás qué es lo que está mal! Preguntado allí, ¡y nadie! ¡Por lo tanto, se trasladó aquí, allí respondió, para que usted y otros gracias!
Mierda, Boris. Ya he escrito antes. Pues bien, puedes imitar un spread flotante directamente en el Asesor Experto. Qué me impide añadir un número aleatorio en el rango del spread flotante a la oferta, y abrirlo con órdenes de stop. Y cerrar por valor, no por órdenes de detención. Es más complicado que establecer una extensión estática mayor, pero si realmente lo necesitas, puedes hacerlo. Al mismo tiempo, establece la dispersión mínima en el probador.
Es que... una línea de pensamiento.
Mierda, Boris. Ya he escrito antes. Bueno, haz un spread flotante simulado en tu EA. Qué te impide añadir un número aleatorio en el rango de spread flotante a la oferta y abrir con órdenes de stop. Y cerrar por valor, no por órdenes de detención. Es más complicado que establecer una extensión estática mayor, pero si realmente lo necesitas, puedes hacerlo. Al mismo tiempo, en el probador, ajuste la dispersión mínima.
Esto es sólo ... Una forma de pensar.
Ayuda con el problema, por favor) Escribí un Asesor Experto que funciona cruzando ondas, pero cuando trato de probarlo, la terminal emite un pitido y no prueba nada (el código del compilador le gusta. ¿Cómo hacer para que al menos se muestre algo?
Ayuda con el problema, por favor) Escribí un Asesor Experto que funciona cruzando ondas, pero cuando trato de probarlo, la terminal emite un pitido y no prueba nada (el código del compilador le gusta. ¿Cómo hacer para que al menos se muestre algo?
Algo me dice que "aquí es donde está el problema":
Ayuda con el problema, por favor) Escribí un Asesor Experto que funciona en el cruce de agitar, pero cuando trato de probarlo, el terminal emite un pitido y no prueba nada (código compilador le gusta. ¿Cómo hacer para que al menos algo para mostrar?
//считаю ордера чтобы советник не трогал в ручную выставленные ордера¿Dónde lo tocará, eh? Sí y basta con comprobar el mago, manual sin mago.
Bueno, y, como ya se ha escrito más arriba, los macerados no se solapan...