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

 
rigonich:

OrderModify(OrderTicket(),OrderLots( ),stop_loss,OrderTakeProfit( ), 0,CLR_NONE);

Espera, así que tienes mucho... 0.


¡¡¡¡Gracias por eso!!!!

aquí es donde se puede pensar....

esta línea es de la función "modificar" - no la escribí yo, sino que la inserté ya hecha, y funciona.... tal vez "0" signifique el tamaño de la posición actual? pero prefiero fijarlo a un valor - gracias lotes se arreglan

 
rigonich:

OrderModify(OrderTicket(),OrderLots( ),stop_loss,OrderTakeProfit( ), 0,CLR_NONE);

Para, así que tu lote es 0.


no hay lotes en modificar :))))))) hay un precio de apertura por alguna razón...

Modificación del pedido( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)
 
lottamer:


no hay lotes en la modificación :))))))) hay un precio de apertura por alguna razón...

Modificación del pedido( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)


Cierto, me confundí al copiar y pegar, no me acostumbro a pegar en los comentarios, si se copia desde la ayuda, se pega como un enlace.

En mi caso, para insertar una función con muchos parámetros, la copio de la ayuda y sustituyo los parámetros por los que necesito a su vez, para no confundirme.

 

¡Queridos todos!

Descargado e iniciado PFG FX traider (última versión). Traté de hacer un indicador.

Inmediatamente dos rompecabezas:

1. Mi indicador es visible desde el editor, se abre y todo, pero no puedo encontrarlo en el sistema de archivos. En absoluto, ni siquiera buscando.

2. el indicador abre el archivo - escribe los ticks. ¡¡¡¡Escribe y se bloquea pero tampoco encuentro el archivo!!!!

¿Cómo puede ser? Windows 7.

 

Hermanos, ¡no ignoren el esfuerzo de un principiante!

Necesito un script listo (o algo así) que indique en los archivos

movimientos en el calendario filtrado por el impulso y el tiempo.

Por ejemplo, el movimiento comenzó a las 14.00 y terminó a las 14.45.

Y la cantidad de movimiento fue de 410 puntos (en cálculo de cinco dígitos).

Entonces, ¿hay un script que marque visualmente esos movimientos en el gráfico "en el pasado"?

y que los valores de fuerza-tiempo se pueden insertar de forma independiente.

______

Por favor, indique una sucursal o un lugar donde puedan aconsejarle cómo hacerlo.

En la programación - no Aristóteles, pero sospecho que tal escritura no es difícil de hacer.

___

Listo para compartir lo que parece haber sido encontrado, y lo más importante - los parámetros para el filtro por el tiempo y la fuerza.

 
Chibrikin:

¡Queridos todos!

Descargado y puesto en marcha PFG FX traider (última versión). Traté de hacer un indicador.

Inmediatamente dos rompecabezas:

1. Mi indicador es visible desde el editor, se abre y todo, pero no puedo encontrarlo en el sistema de archivos. En absoluto, ni siquiera buscando.

2. el indicador abre el archivo - escribe los ticks. ¡¡¡¡Escribe y se bloquea pero tampoco encuentro el archivo!!!!

¿Cómo puede ser? Windows 7.


En Semester, algunos archivos a veces no se colocan en el terminal, sino en D:\Nnombre del usuarioAppData\Local\Nde la tienda virtual\Nde los archivos de programa, entonces el nombre del terminal

Esto suele ocurrir si se instalan varios terminales en diferentes directorios o hay muchos indicadores, EAs u otros archivos de usuario acumulados en el terminal.

 
TUNGUS:

Hermanos, ¡no ignoren el esfuerzo de un principiante!

Necesito un script listo (o algo así) que indique en los archivos

movimientos en el calendario filtrado por el impulso y el tiempo.

Por ejemplo, el movimiento comenzó a las 14.00 y terminó a las 14.45.

Y la cantidad de movimiento fue de 410 puntos (en cálculo de cinco dígitos).

Entonces, ¿hay un script que marque visualmente esos movimientos en el gráfico "en el pasado"?

y que los valores de fuerza-tiempo se pueden insertar de forma independiente.

______

Por favor, indique una sucursal o un lugar donde puedan aconsejarle cómo hacerlo.

En la programación - no Aristóteles, pero sospecho que tal escritura no es difícil de hacer.

___

Listo para compartir lo que parece haber sido encontrado, y lo más importante - los parámetros para el filtro por el tiempo y la fuerza.


No entiendo en absoluto lo que quieres del guión.
 

Se necesita ayuda urgentemente, estoy totalmente confundido. Aquí está la función de negociación y la función de modificación de órdenes:

void OrdersModifying(double& sl, double& tp)
{
  int total = OrdersTotal() - 1;
  sl = 0; tp = 0;
  
  for(int i=total; i>=0; i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)                            // Если ордер есть и он выбран..
    {
      if(g_type == OP_BUY)
      {
        if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() - i_sl*pt,Digits);                    // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() + i_tp*pt,Digits);                    // Получаем значение тейкпрофита для выбранного ордера
      }
      if(g_type == OP_SELL)
      {
        if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() + i_sl*pt,Digits);                // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() - i_tp*pt,Digits);                // Получаем значение тейкпрофита для выбранного ордера
      }
      if(sl != 0 || tp != 0)                                                            // Если полученные значения sl и tp не равныы 0, то..
      {
        OrderModify(g_ticket,OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime);      // Модифицируем ордер
      }
    }
  }
}
bool OpenBuy()
{
  g_ticket = -1;
  string myNote = "сов баянул";
  
  if(GetPriceToInput() < Ask)
  {       
    g_ticket = OrderSend(Symbol(),OP_BUYLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Blue);
  }
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
 
  return(true);
}
bool OpenSell()
{
  g_ticket = -1;
  string myNote = "сов шортанул";
 
  if(GetPriceToInput() > Bid)
  {
    g_ticket = OrderSend(Symbol(),OP_SELLLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Red);
  }
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
  
  return(true);
}
bool Trade (int signal)
{
  FindOrders();

  if(signal == SIGNAL_BUY)                                                          // Если сигнал на покупку и открытых ордеров нет..
    if(!OpenBuy())                                                                  // открываем лимитный ордер на покупку
      return(false);                                                                
      
  if(signal == SIGNAL_SELL)                                                       // Если сигнал на продажу и открытых ордеров нет..
     if(!OpenSell())
       return(false);                                                              // открываем лимитный ордер на продажу
  
  OrdersModifying(sl, tp); - ТУТ НЕ ВЪЕЗЖАЮ КАК БЫТЬ

  return(true);
}

Actualmente tengo la modificación de órdenes que no funciona, aunque cuando varias funciones estaban en una, todo funcionaba. Pero quiero que todas las funciones estén separadas por comodidad. En general, me gustaría tener la funciónOrdersModifying para modificar los pedidos. Entiendo que lógicamente se debería pegar en la función Comercio donde lo he pegado, pero hay que pasarle 2 parámetros sl y tp de la funciónPedidosModificación.

¿He pasado correctamente las variables sl y tp por los parámetros de la funciónOrdersModifying ?

 
hoz:

Se necesita ayuda urgentemente, estoy totalmente confundido. Aquí está la función de negociación y la función de modificación de órdenes:

Actualmente tengo la modificación de órdenes que no funciona, aunque cuando varias funciones estaban en una, todo funcionaba. Pero quiero que todas las funciones estén separadas por comodidad. En general, me gustaría tener la funciónOrdersModifying para modificar los pedidos. Entiendo que lógicamente se debería pegar en la función Comercio donde lo he pegado, pero hay que pasarle 2 parámetros sl y tp de la funciónPedidosModificación.

¿He pasado correctamente las variables sl y tp por los parámetros de la funciónOrdersModifying ?

Primero se hace sl = 0; tp = 0; y luego if(sl != 0 || tp != 0).
 
rigonich:
Primero se hace sl = 0; tp = 0; y luego if(sl != 0 || tp != 0).


Vitaly, el punto está claro ahí. Mira:

void OrdersModifying(double& sl, double& tp)
{
  int total = OrdersTotal() - 1;
  sl = 0; tp = 0;
  
  for(int i=total; i>=0; i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)                            // Если ордер есть и он выбран..
    {
      if(g_type == OP_BUY)
      {
        if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() - i_sl*pt,Digits);                    // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() + i_tp*pt,Digits);                    // Получаем значение тейкпрофита для выбранного ордера
      }
      if(g_type == OP_SELL)
      {
        if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() + i_sl*pt,Digits);                // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() - i_tp*pt,Digits);                // Получаем значение тейкпрофита для выбранного ордера
      }
      if(sl != 0 || tp != 0)                                                            // Если полученные значения sl и tp не равныы 0, то..
      {
        OrderModify(g_ticket,OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime);      // Модифицируем ордер
      }
    }
  }
}

Al principio sl = 0; tp = 0; Luego encuentro los valores normalizados de sl y tp que ya estarán en la orden en base a i_sl e i_tp introducidos por el usuario. Y luego compruebo sisl ytp no son iguales a cero, es decir, si han cambiado después de haberlos declarado al principio de la función, entonces modificamos el orden.

Y sisl ytp son iguales a cero, significa que estos parámetros no han sido calculados... como yo lo entiendo. Una vez que obtenga los valores de estas variables, se convertirán inmediatamente en no nulas, y podremos modificar el orden... ¿Tiene sentido?