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

 
serjik77:

Por favor, discúlpeme si le distraigo con una pregunta probablemente estúpida.

Acabo de empezar a aprender esto y no tengo a nadie a quien pedir consejo.

He leído el manual varias veces. He iniciado un Asesor Experto con las funciones más simples, órdenes pendientes.

Sigo sin entender qué tengo que hacer para abrir las órdenes una vez, y no con cada tick.



Inserte una función como esta

int ChPos( int type_H_L) 
{
// возвращает кол-во позици которые открыты 
   int i;
   int col;
   int count=0 ;
   for( i=0; i < OrdersTotal(); i++)         
   {
      if(OrderSelect(i,SELECT_BY_POS)==true) 
       {                                   
           if(OrderType()==OP_BUY && type_H_L==OP_BUY && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_SELL && type_H_L==OP_SELL && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_BUYSTOP && type_H_L==OP_BUYSTOP && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_SELLSTOP && type_H_L==OP_SELLSTOP && OrderMagicNumber()== magic){count++;}
           
       }
    }   
return(count);
}

En su código, compruebe así, por ejemplo

if ( SignalLine > MainLine && ChPos(OP_BUY)==0 )
      { // если сигнальная линия выше основной и нет длинной позы . то закрыть короткую открыть длинную
         if (ChPos(OP_SELL)>0 ) ClosePosition(OP_SELL) ;
         OpenPosition(OP_BUY)  ;
 
Cierro las posiciones no rentables sin romper el equilibrio en el lote quitando el TP. Ay, TP=0, aunque me sale un mensaje muy molesto en el log:
<br / translate="no"> 2010.09.12 21:34:53 2000.03.06 07:59 dinero EURUSD,M5: OrderModify error 1

código:

bool notakeprofit()
{   bool ok=true;
    int k=OrdersTotal();
    for (int i=k-1; i >=0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_368)
        {OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(),NormalizeDouble(0,Point), OrderExpiration(), CLR_NONE);
         }
    else;
       // { Print("OrderSelect() error - ",GetLastError()); ok=false;}
    }
return(ok);
}

Debido a la necesidad de asegurarse en el código principal que todas las órdenes de mercado tienen TP=0 controlo el resultado de esta función - ok, en el código se puede ver que ok - sólo cambia cuando hay un error

¡AYUDA A MI PLZ! :)

gracias de antemano

 
abolk:

En mi caso, la regla es: "Separar NO en sustantivos, adjetivos y adverbios, si hay o se pretende una contradicción" http://www.rusyaz.ru/pr/od07.html - "hacer" es NO - la palabra correcta es "hacer" (la palabra resaltada es una contradicción y va precedida de un guión).

estás interpretando mal el idioma ruso (!). Se escribiría "no" por separado en el caso de:

"hacer" NO es correcto, sino malo. - es en este sentido en el que se entiende la oposición. Mira los ejemplos de la regla.

En su frase, NO debe escribirse con una conjunción (se aplica el párrafo 3 del apartado 88 de la misma página):

"hacer" está mal escrito, " hacer" es correcto .

 

Hay un indicador estándar MACD. ¿Cómo se utiliza para probar en la historia?

¿hay algún ejemplo?

 
IgorM:
Cierro posiciones perdedoras para no romper un equilibrio en la posición pero tengo que quitar el TP, pero ay, TP=0, aunque en mi diario sigue saliendo muchas veces:

código:

Debido a la necesidad de asegurarse en el código principal que todas las órdenes de mercado tienen TP=0 controlo el resultado de esta función - ok, en el código se puede ver que ok - sólo cambia cuando hay un error

¡AYUDA A MI PLZ! :)

gracias de antemano

¿Tal vez no NormalizeDouble(0,Point) sino NormalizeDouble(0,Digits)?

 
chief2000:

¿Tal vez no NormalizeDouble(0,Point) sino NormalizeDouble(0,Digits)?


Gracias, lo he encontrado yo mismo, pero no ha solucionado el error nº 1

 
IgorM:


Gracias, lo he encontrado yo mismo, pero no ha solucionado el error nº 1.

Lo primero que haría es sustituir algún otro número en TP en lugar de cero (para eliminar el error) para asegurarme de que esa es la razón.

 
chief2000:

Lo primero que haría es sustituir algún otro número en TP en lugar de cero (para eliminar el error) para asegurarme de que esa es la razón.


solía funcionar bien hasta que escribí esta función, ahora llamo a la función de Kim en lugar de OrderModify():

void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0)

el error ha desaparecido

 

hay un indicador tipo osma, la señal se invierte al cruzar el 0. ¿cómo lo pruebo en el historial?

 
ivandurak:


Inserte esta función

Y en su código, haga una comprobación como ésta

Disculpe, pero si me permite, ¿una pregunta más?

Empiezo a entender algo, pero no todo.

¿La primera función indica a la aplicación cuántas órdenes abiertas tiene?

Por favor, indíqueme cómo hacer que sólo aparezcan dos pendientes de forma permanente,

independientemente de los activados.

Razón de la queja: