Pregunta para los entendidos - página 14

 
Спасибо большое!
 
rid писал(а) >>

Buenas tardes. No consigo entender el uso de un indicador en el EA.

Aquí está el indicador propiamente dicho:



Estoy llamando al indicador en el Asesor Experto así (valores de 2 buffers)

Sin embargo, aunque en el modo visual puedo ver que los valores del indicador de ambos búferes cambian de cero a más/menos cinco, pero las aduanas muestran persistentemente (devuelven) ceros .....

Publicado en el comentario. - La línea verde =5, pero el comentario muestra cero.

Estoy tratando de entenderlo desde hace una hora. Por favor, dame una pista de dónde está el error.

He descargado la propia herramienta.

He encontrado el error. He enviado un script de prueba a Misha.

De hecho, todos los parámetros deben ser pasados. Los de cuerda también.

Archivos adjuntos:
level_1.mq4  2 kb
 
Gracias, Vinin.
 

Buenas tardes, por favor ayuden a los entendidos a confeccionar un oscilador sobre la fórmula heiken ashi que muestre la diferencia entre haOpen y haClose. Gracias de antemano.

 

Hola a todos.

Por favor, aconséjeme. Aquí está el código:

// Проверка условий для совершения сделки селл 
  if( если условия соотв.- ют заданным){ //продаем
StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL);
   
      SL=0; TP=0;
      if( StopLoss>0    && StopLoss> StopLevel)   SL=Bid+Point* StopLoss;
      if( TakeProfit>0 && TakeProfit> StopLevel) TP=Bid-Point* TakeProfit;
      if( StopLoss  < StopLevel && StopLoss>0)   SL = Bid+Point* StopLevel; 
      if( TakeProfit< StopLevel && TakeProfit>0) TP = Bid-Point* StopLevel; 
   ticket=OrderSend(Symbol(),OP_SELL, lots,Bid,3, SL, TP,"Name_Expert", Magic,0, clOpenSell);

                                                   }

No puedo entender lo que está mal. El registro del probador devuelve el error 130 (paradas erróneas) si establezco un stoploss y un takeprofit inferiores a los permitidos.

¡Pero he proporcionado específicamente que este error no ocurrió !

¿Por qué no funcionan las condiciones? -


 if( StopLoss  < StopLevel &&   StopLoss>0)   SL = Bid+Point* StopLevel; 
 if( TakeProfit< StopLevel  && TakeProfit>0)   TP = Bid-Point* StopLevel; 
 
¿Qué tal si añadimos un uno-dos a StopLevel para despejar? A mí me funcionó una vez.
 
Muchos principiantes tienen problemas para comparar números en coma flotante. Granit77 tiene razón, yo suelo añadir 0.1 pips en lugar de 1-2 pips para mantener la precisión del Asesor Experto
 
granit77 >> :
¿Qué tal si añadimos un uno-dos a StopLevel para el hueco? >> A mí me funcionó una vez.

¿Así? :

 if( StopLoss  < StopLevel &&   StopLoss>0)   SL = Bid+Point*( StopLevel+1); 
 if( TakeProfit< StopLevel  && TakeProfit>0)   TP = Bid-Point*( StopLevel+1); 

>> No funciona.

Además, en el probador estas condiciones deberían funcionar incluso sin hueco. Pero no lo hacen. - Aparece el error 130

 
rid >> :

No ayuda.

Además, en el probador estas condiciones deberían funcionar incluso sin hueco. Pero no lo hacen. - Aparece el error 130

No soy un experto, pero imprimiría los valores de las variables StopLoss, TakeProfit, StopLevel, SL y TP.

No veo cómo se declaran o por qué se necesitan

 SL=0; TP=0
 
goldtrader >> :

No soy un experto, pero imprimiría los valores de las variables StopLoss, TakeProfit, StopLevel, SL y TP.

No puedo ver cómo se declaran y para qué

Así es como se hace:

extern int     StopLoss=1;
extern int     TakeProfit=1;
double SL, TP;
int StopLevel;

//---------------
StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL);

  if( УСЛОВИЯ ВХОДА ){ //продаем
   
      SL=0; TP=0;
      if( StopLoss>0    && StopLoss> StopLevel)   SL=Bid+Point* StopLoss;
      if( TakeProfit>0 && TakeProfit> StopLevel) TP=Bid-Point* TakeProfit;

      if( StopLoss  < StopLevel && StopLoss>0)   SL = Bid+Point* StopLevel; 
      if( TakeProfit< StopLevel && TakeProfit>0) TP = Bid-Point* StopLevel;
 
   ticket=OrderSend(Symbol(),OP_SELL, lots,Bid,3, SL, TP,"Name_Expert", Magic,0, clOpenSell);
   if( ticket < 0){
            Print("Ошибка открытия ордера SELL #", GetLastError()); 
            Sleep(10000);  
            prevtime = Time[1]; 
            return (0); 
         } 
       }

Las posiciones se abren, pero en lugar de paradas hay un error 130 .....

Se muestran todas las paradas y niveles en el comentario . - todo parece mostrarse correctamente... - pero aparece el error 130

Razón de la queja: