[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 217

 
DanLett:

Por favor, aconseja lo que hay que hacer si:

En el probador funciona bien, todo según lo previsto, pero en el realsk no abre la transacción.

P.D. Realmente necesito ayuda, es una cuestión de vida o muerte


No soy un experto, tal vez haya un problema.

ОrderSelect(i,SELECT_BY_POS,MODE_TRADES)
ha sido sustituido por MODE_TRADES?
 

¿Qué pasa con mis matemáticas?

int modOrder()
{
double currentPrice = Bid;
double currentStoploss = OrderStopLoss();
double profitLine=profitLine();
if (currentPrice >= profitLine)
  {
  OrderModify(getTicket(),0,currentStoploss+1*Point,0,0,Blue);
  }
  Alert("profit line ", profitLine);
  return (0);
}

Mi currentPrice >= profitLine significa que si profitLine == o >, ¿no?

Pero me funciona si > por lo menos un punto.

 
Comparar números reales (dobles) con una igualdad estricta no es lo mejor que se puede hacer con ellos. Es más correcto comparar su diferencia con el valor máximo permitido.
 
olis: ¿Qué pasa con mis matemáticas?
¿Has miradolas preguntas frecuentes?
 

Sí, bueno... no había pensado en eso. Gracias.
 
Gek34:

Estimados expertos, la pregunta sobre el indicador se retira, la solución llegó bastante inesperado, he duplicado los cálculos, y oops.... Todo está funcionando.

Pero tengo otra, cómo funcionó, me gustaría entender. Se adjunta el código:

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow

extern int PerMa = 5;
extern int Shift = 0;
extern int Step = 15;

double ABuf45[],ABuf[],ABuf5[],ABuf15[];//,Stark[];
double Stark;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{ Stark=0;
//---- indicators
// IndicatorBuffers(4);

SetIndexBuffer(0,ABuf);
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int i,n;

//----
i=Bars-counted_bars-1;

while(i>=0)
{ RefreshRates();
//----
double Ma15=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,i);
double Ma45=iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,i);
double Ma=iMA(NULL,0,PerMa,0,MODE_EMA,PRICE_CLOSE,i);
//double Ma1=iMA(NULL,0,PerMa,Shift,MODE_EMA,PRICE_CLOSE,i+1);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;Comment(Stark);
if(Ma>Stark+Step*Point&&Ma15>Ma45){Stark=Ma;}//else{Stark=Stark;}
if(Ma<Stark-Step*Point&&Ma15<Ma45){Stark=Ma;}//else{Stark=Stark;}
ABuf[i+Shift]=Stark;//Comment(Stark);

//----
i--;
}
return(0);
}


Retirado. Me inventé todo tipo de tonterías. Resultó ser mucho más sencillo. Saqué la variable Stark de la función de inicio, para que no se reinicie en cada tic.
 

seda la señal "sig1 ", se activa la orden de COMPRA y se coloca la orden pendiente SELLSTOP por debajo de la orden de COMPRA.

Cuando se cierra la posición de COMPRA, también se borra el SELLSTOP.

Pero qué ocurre cuando no se cierra esta COMPRA y se abre la siguiente, etc.

Este SELLSTOP que se establece en primer lugar tiene que ser descubierto de alguna manera con el fin de cerrarlo después de que la primera COMPRA se ha cerrado.

Además, si el precio rompe el pendiente y luego cierra sin pérdidas, el pendiente se ha fijado en el mismo lugar que su predecesor.

-----------------------------------

estono resolverá el problema porque después de cerrar la venta, se abrirá una nueva venta con un maestro diferente y se borrará.

Después de cerrar la compra no sé cómo.

 int i, k=OrdersTotal(),ti;
    for (i=0; i<k; i++){
   if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
    if(OrderType()== OP_SELLSTOP){
    ti = OrderMagicNumber();  }
    if(OrderType()== OP_BUY)
    if(OrderTicket()==ti) что дальше не пойму, как узнать о наличии ордера бай с нужным тикетом?

 
Top2n:

seda la señal "sig1 ", se activa la orden de COMPRA y se coloca la orden pendiente SELLSTOP por debajo de la orden de COMPRA.

Cuando se cierra la posición de COMPRA, también se borra el SELLSTOP.

Pero qué ocurre cuando no se cierra esta COMPRA y se abre la siguiente, etc.

Este SELLSTOP que se establece en primer lugar tiene que ser descubierto de alguna manera con el fin de cerrarlo después de que la primera COMPRA se ha cerrado.

Además, si el precio rompe el pendiente y luego cierra sin pérdidas, el pendiente se ha fijado en el mismo lugar que su predecesor.

-----------------------------------

estono resolverá el problema porque después de cerrar la venta, se abrirá una nueva venta con un maestro diferente y se borrará.

después de cerrar la compra, no sé cómo.


Bueno... usas el mismo Select para comprobar...

int i, k=OrdersTotal(), ti, tid;

for (i=0; i<k; i++){
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
       if (OrderType()== OP_SELLSTOP) {
          tid = OrderTicket(); // запомним тикет ордера селлстоп - если его придётся удалить...
          ti = OrderMagicNumber();  
          //  ищем ордер по тикету
          if (OrderSelect(ti, SELECT_BY_TICKET)==true) {
             // проверяем Закрылся ли этот ордер - это твоя Байка
             if (OrderCloseTime() > 0) {
                //  удаляем ордер Селлстоп - если связанная с ним байка Закрылась...
                OrderDelete(tid);
             }
          } 
       }
    }
}
 
se te ocurren un montón de ideas... créanme que están haciendo una mierda... no pierdas el tiempo... tu martingala no funciona tan fácilmente...
 
Aleksander:
se te están ocurriendo muchas ideas... créanme que están haciendo una mierda... no pierdas el tiempo... tu martingala no funciona tan fácilmente...
Sí... Gracias)) ¿Cómo no va a ser fácil?
Razón de la queja: