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

 
obla4ko:
No hay que pensar como un palo - es una cosa muy sutil :))), virtual, diría yo, y debe reaccionar naturalmente al fraude en la historia. Si no reaccionara a los borrados, me imagino lo lento que sería en la vida real - 100 libras al año por 10K - en el mejor de los casos... Bueno, es más fácil mantener el dinero en el banco: ¡dan entre el 3% y el 6%!)

))) Por supuesto que es más fácil. Quién puede decir... // ¿Y quién dijo que sería fácil? )))

Una salida: ir a la bolsa. En principio, este tipo de cosas no ocurren allí. Pero así... Para todos los... cómo decirlo... ... rarezas que también puedes trabajar en Forex.

La mejor manera es, por supuesto, probarlo en la cuenta real. Si los principios establecidos en el Asesor Experto son correctos (y esto se puede comprobar exactamente en el probador), entonces, poniendo medidas de fuerza mayor en una cuenta real, la operación será buena+. Quizás no en +++++++ como en el probador, pero aún así...))

Por cierto, cortar los huecos, que hacen que los indicadores se vuelvan locos, del flujo de cotizaciones ayuda mucho. Puedes mirar en mis códigos - Kill Gap.

 

Techno:
obla4ko, создайте переменную типа datetime x, и пусть это будет время открытие бара, на котором произошел стоплосс. А в условии открытия поставте, что (Time[0]!=x). При этом x должно обновляться при новом сработавшем стоплосе. Это первый вариант. И второй как я уже в третий раз пишу, после срабатывания стопа включить ожидание 1 бар, это будет совершенно тоже самое, не логично разве?

Tengo la parte del código responsable de abrir una posición publicada en mi último post. Podrías poner lo que has dicho aquí - como dicen "mejor visto una vez que...." :)
 

¡¡¡Hola!!!

En la página 71 de este hilo, granit77 escribió un artículo muy interesante.

Извините, что встреваю, поделюсь ламерским способом удобной записи множества условий. При наладке легко добавлять/убирать, не заботясь о скобках, и все наглядно. 
if (true
    && StochK_0<StochD_1
    && StochD_1 > 80 
    && cci_0 < cci_1    
    && cci_0 > 100 
    //&& .... а это я пока убрал     
   )

aquí hay una muestra y trató de hacer algo

if(((Sto_0>Sto_1&&Sto_0< 20)&&(OsMA_0>OsMA_1&&OsMA_0<-P)&&(Macd_0>Macd_1&&Macd_0<-N)))
// это основа
if(true
      &&Sto_0>Sto_1&&Sto_0< 20
      &&OsMA_0>OsMA_1&&OsMA_0<-P
      &&Macd_0>Macd_1&&Macd_0<-N
      )//а это то что получилось

Lo pregunto porque es muy inusual.....

 

Por qué funciona y cuenta correctamente el aumento del valor de una variable en un 10%:

TStartS = MathRound(TStartS+TStartS*0.1);

... pero éste no:

TStartS = MathRound(TStartS+TStartS/100*PercentTakePr); // где PercentTakePr - внешняя переменная, равна 10, 20, 30, и т.д. ...
Cuál es la diferencia, no lo sé...
 
artmedia70:

Por qué funciona y cuenta correctamente el aumento del valor de una variable en un 10%:

... pero éste no:

cuál es la diferencia, no lo sé...





o tal vez sea así.

TStartS = MathRound(TStartS+(TStartS/100*PercentTakePr)); 
 

¿Cuál es el problema? Sólo tienes que dividir la cadena en subcadenas, sin cambiar el contenido. Todo funcionará igual, pero es más fácil de leer y editar, sólo hay que comentar las líneas innecesarias.

Resulta que los profesionales llevan mucho tiempo escribiendo así, incluso formateando mejor, así que me inventé la bicicleta. :))

if (true              &&
    StochK_0<StochD_1 && 
    StochD_1 > 80     &&  
    && cci_0 < cci_1  &&   
    && cci_0 > 100 
   )

//((Sto_0>Sto_1&&Sto_0< 20)&&(OsMA_0>OsMA_1&&OsMA_0<-P)&&(Macd_0>Macd_1&&Macd_0<-N))
// Ваш вариант вот так будет выглядеть наиболее прозрачно, на мой взгляд
if (true                         &&
    (Sto_0 >Sto_1  && Sto_0 <20) &&
    (OsMA_0>OsMA_1 && OsMA_0<-P) &&
    (Macd_0>Macd_1 && Macd_0<-N)  
   ) 
 
artmedia70:

Por qué funciona y cuenta correctamente el aumento del valor de una variable en un 10%:

... pero éste no:

¿Cuál es la diferencia? No entiendo...





0,1 es doble y 100 es int.

Busca la conversión de tipos en el libro de texto.

 
Svinozavr:

0,1 es doble y 100 es int.

Busca la conversión de tipos en el libro de texto.

Así que tengo TODAS las variables allí int... Resulta que ... ouch... que se joda... sigue cavando...

Así es como funciona:

LastTakeProfitS = MathRound(LastTakeProfitS+LastTakeProfitS/100*PercentTakePr);
... y si metes otra variable del mismo tipo aquí, no funciona... Esta mañana me ha dejado boquiabierto...
 
obla4ko:

Tengo la parte del código responsable de abrir una posición publicada en mi último post. Podrías poner lo que has dicho aquí - como dicen "mejor visto una vez que...." :)

Aquí hay un esquema. No lo he comprobado, pero debería funcionar, las partes que faltan deben añadirse desde el código original. El rojo marcó el número que el cambio aumentará la espera, el número 2 significa que una vela de espera. Si necesitas 2 velas esperando pon tres, etc.

bool work=1;int tick;datetime t;
int start()
{
  if(!work){if(t!=iTime(NULL,0,1)){t=iTime(NULL,0,1);tick++;}}
  if(tick==2){work=1;tick=0;} 
   
   time();
   if(OrdersTotal()==0)CheckForOpen();
  //-- code
}
//----
void CheckForOpen()
{
   double ma;
   int    res;
    
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);

   if(work && Open[1]>ma && Close[1]<ma)  
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,Bid,30,Bid+Stoploss*Point,Bid-Takeprofit*Point,"",MAGICMA,0,Red);
      return;
     }

   if(work && Open[1]<ma && Close[1]>ma)  
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,Ask,30,Ask-Stoploss*Point,Ask+Takeprofit*Point,"",MAGICMA,0,Blue);
      return;
     }

}
//----
void time()
{
static datetime time;
    
  if(OrdersHistoryTotal()==0)return;
  for(int i=0;i<OrdersHistoryTotal();i++)
       {
       OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
         if(OrderCloseTime()>time && OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
            {
            time=OrderCloseTime();
            if(OrderProfit()<0)work=0;
            }
       }    
   
}
 
artmedia70:

Así que tengo TODAS las variables allí int... Resulta que ... ouch... que se joda... sigue cavando...

Este funciona:

...pero si se introduce otra variable del mismo tipo, no funciona... Esta mañana me ha sorprendido...


Es... Lo encontré... En lugar de 100, es 100.0. Te mataría...
Razón de la queja: