[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 165

 
FelixFX:

gracias

Se han encontrado muchos errores durante la compilación
 
RoniIron:

Disculpe...... el asesor de martingala, es posible prescribir un stoploss en él o no es posible. Gracias.

La función OrderSend( ) tiene el stop loss como uno de sus parámetros. Y es ella la que establece el orden. Por lo tanto, calculamos el nivel de stop para la orden que necesitamos y lo introducimos en la función.
 
FelixFX:

la compilación ha revelado un montón de errores

Bueno, así será - ¡te he advertido que mis subrutinas están involucradas! Elimínelos y sustitúyalos por sus impresoras con GetLastError()
 
drknn:

Bueno, lo será - ¡te dije que mis subrutinas están involucradas! Elimínelos y sustitúyalos por sus impresoras con la consulta GetLastError().

Es fácil de hacer, si estás bien versado en mql. ) Estoy aprendiendo, así que para mí es un poco difícil eliminar todas las cosas innecesarias y dejar sólo las necesarias.
 
// =================================================================================================
// ************************* Трейлинг рыночных ордеров *********************************************
// =================================================================================================


// =================  TrailingRyn() =============================================================
// функция осуществляет трейлинг рыночных ордеров 
// ----------------------------------------------
void TrailingRyn_b(int ryn_TrStop, int ryn_TrStep, int Proskalz, int MAGIC, bool WaitProfit,  bool UseTrailingSound) {
  string SMB=Symbol(); 
  int i;
  int MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);//Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах   
  int SchBuy=SchBuy(MAGIC);
  int SchSell=SchSell(MAGIC);
  if(ryn_TrStop>=MinLevel && ryn_TrStep>0 && (SchBuy>0 || SchSell>0)){    
    for (i=OrdersTotal()-1;i>=0;i--){
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордер № ",i);}
      else {
        if (OrderSymbol()==SMB && OrderMagicNumber()==MAGIC){
          TrailingPositions_b(ryn_TrStop,ryn_TrStep,Proskalz,WaitProfit,UseTrailingSound);
        }
      }
    }
  }
 if(ryn_TrStop>=MinLevel && ryn_TrStep==0)
 Print("Трейлинг невозможен - ryn_TrStep==0");
} 
// =================================================================================================

//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом                             |
//+------------------------------------------------------------------+
void TrailingPositions_b(int ryn_TrStop, int ryn_TrStep, int Proskalz, bool WaitProfit, bool UseTrailingSound){
  if(OrderType()==OP_BUY){
    if(!WaitProfit || (Bid-OrderOpenPrice())>ryn_TrStop*Point){
      if (OrderStopLoss()<Bid-(ryn_TrStop+ryn_TrStep-1)*Point){
        ModifyStopLoss_b(Bid-ryn_TrStop*Point,UseTrailingSound);
      }
    }
  }
  if(OrderType()==OP_SELL){
    if(!WaitProfit || OrderOpenPrice()-Ask>ryn_TrStop*Point) {
      if(OrderStopLoss()>Ask+(ryn_TrStop+ryn_TrStep-1)*Point || OrderStopLoss()==0){
        ModifyStopLoss_b(Ask+ryn_TrStop*Point,UseTrailingSound);
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss_b(double ldStopLoss, bool UseTrailingSound){
  bool fm=false;
  string NameTrallingSound  = "ok.wav";// Наименование звукового файла для трейлинга
  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
  if(fm!=0 && fm!=-1){
    if(UseTrailingSound) { PlaySound(NameTrallingSound);}
  }   
  if(fm==0 || fm==-1) { Print("Ошибка № ",GetLastError()," при модификации ордера № ",OrderTicket());}
}
//+------------------------------------------------------------------+
 
VOLDEMAR:
Gracias chicos.....
Cómo se usa iCustom con iCustom y un indicador que dibuja una flecha en algún punto para decirle al EA que abra .....
Si iBands es un Ask > BBUP es comprensible pero qué pasa con el objeto que puede aparecer o no (como la flecha) ??????


De todos modos, hay que mirar el código del indicador, para entender cuál de los buffers contiene el valor de cada línea.

Si desea introducir los parámetros del indicador en la función iCustom, los parámetros del indicador deben añadirse a las variables personalizadas del Asesor Experto. De lo contrario, el EA no entenderá qué valores hay en las variables listadas.

 
La cuestión es ésta. ¿Es posible crear una condición en si (después de la última StopLoss (en el tiempo) debe cerrar, por ejemplo, 2 beneficio) hasta que no están haciendo más ... ¡Y si es posible un pequeño boceto en código, pero es posible y simplemente dibujar un esquema en palabras - gracias de antemano!
 
ruzzo:
Hola! Por favor, no me echéis si me equivoco de pregunta, pero he escarbado en todo el foro y en Internet y no he encontrado lo que buscaba. La cuestión es ésta. ¿Es posible crear una condición en si (después de la última StopLoss (en el tiempo) debe cerrar, por ejemplo, 2 beneficio) hasta que no están haciendo más ... Si es posible, un pequeño boceto en código, pero se puede simplemente dibujar un esquema en palabras, ¡gracias de antemano!


En general, bueno, no está claro lo que necesita exactamente.

Se puede insertar una condición en if(). Se puede insertar después de que ocurra cualquier evento. Pero, ¿qué significa cerrar dos beneficios? Y se puede hacer otra cosa. Eso es todo.


if(условие){

// какой-то код 

}

else{

// какой-то код 

} 
 
drknn:


En realidad, no entiendo qué es lo que necesitas.

Se puede insertar una condición en if(). Se puede insertar después de que ocurra cualquier evento. Pero, ¿qué significa cerrar dos beneficios? Y se puede hacer otra cosa. La cuestión es...


Entiendo que primero la condición y luego el código, pero quería crear una condición, tengo StopLoss y trabajo con otro lote, por ejemplo - hasta cerrar la operación con dos beneficios - solo que no quiero comparar el saldo en el if - todo porque si comparo el saldo, y tengo una orden pendiente con un límite de tiempo - el lote cambiado se salta - porque la orden vence con el lote aumentado - ¿puedo cavar mal?
 

Ayuda plz para entender.

Decidí utilizar la muestra MACD y no puedo entender lo que está mal - no importa qué versión, incluso la nativa en el terminal.

todos dan errores :

2011.02.28 23:01:53 MACD Sample EURUSD,M15: Error al abrir la orden de COMPRA: 130

Cuenta de 5 dígitos. 1:500, lote 0,1 o 1, no hay diferencia, cuenta real.

He multiplicado por 10 el SL y el TP, no ha cambiado nada, incluso he cambiado más, sin resultado, no consigo que se abra algo ahí ((

El hecho de que funcione claramente, si abro un trato con mis manos, entonces lo transfiere a la posición de no pérdida y comienza a arrastrar, ¡pero no quiere abrirlo por sí mismo!

¿Qué estoy haciendo mal, no puedo entender durante una semana?