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

 

Tengo un problema que ha llegado a un punto ridículo. Error en la función de cierre de la orden.

OrserClose(int tip){
if( tip==1){
for( i=0; i<OrdersTotal(); i++){
           if(true==OrderSelect( i, SELECT_BY_POS, MODE_TRADES)){
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber() == Magic){
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
               }
           }
         }  
}

Da un error (en diferentes terminales)

EURCHF,M5: Error de OrderClose 4107

EURCHF,M5: precio inválido 1.48566000 para la función OrderClose


si lo hago

OrderClose(OrderTicket(), OrderLots(),OrderClosePrice(),3, Violet);
OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),3,Violet);

el mismo error. Pero cuando escribo OrderClose(...) no en una función separada, sino en int start(), este error no se produce .

¿Cuál es el problema y cómo solucionarlo?



 
intente ejecutar el ciclo desde el final hasta el principio
for( i = OrdersTotal() - 1;  i > 0;  i--)
 
T-G >>:

У меня проблема до смешного дошла. Ошибка в функция закрытия ордера.

дает ошибку (причем в разных терминалах)

EURCHF,M5: OrderClose error 4107

EURCHF,M5: invalid price 1.48566000 for OrderClose function


если сделать

таже самая ошибка. но причем когда я пишу OrderClose(..) не в отдельной функции а в int start() то такой ошибки не возникает.

в чем дело и как вылечить?









normalizar el precio

 

int tick = 0, MaxTicks = 5;
bool SaveTickOn = 1;
string bid_s;

int start(){
   if( SaveTickOn){
      int rw_mode = FILE_CSV| FILE_READ| FILE_WRITE;
      if( tick == 0) rw_mode = FILE_CSV| FILE_WRITE;
      int handle1 = FileOpen("bids1.dat", rw_mode," ");
      bid_s = DoubleToStr(Bid,Digits); 
      FileWrite( handle1, bid_s);
      if(GetLastError() != 0) Alert("Error= ",GetLastError());
      Alert( tick,": ", bid_s);
      tick++;
      if( tick == MaxTicks) SaveTickOn = 0; 
      FileClose( handle1);
   }
   return(0);
}

Hay un código sencillo para escribir en un archivo con una adenda, pero por alguna razón la opción de añadir a un archivo

FILE_READ| FILE_WRITE 

no funciona.

¿Qué puede ser?

 

Ponga este en el inicio, cerrará todo con una garantía, solo ponga las condiciones...

if ( Close_) {
for (int trade = OrdersTotal() - 1; trade >= 0; trade--) {
OrderSelect( trade, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

if ((OrderType() == OP_BUY) &&( условие закрытия для бай)) OrderClose(OrderTicket(), OrderLots(), Bid, slip, Blue);
if ((OrderType() == OP_SELL)&&( условие закрытия для селл)) OrderClose(OrderTicket(), OrderLots(), Ask, slip, Red);
}
Sleep(1000);
}
}
}
 
Andrei01 >>:

Есть простейший код для записи в файл с добавлением, но почему то опция добавления в файл

не работает.

Что это может быть?

También he comprobado que la función FileIsEnding(handle1) devuelve cero, mientras que debería ser 1, es decir, parece que hay un error en MT4 en el modo de añadir al archivo.

 
Andrei01 писал(а) >>

También he comprobado que la función FileIsEnding(handle1) devuelve cero, mientras que debería ser 1, lo que significa que debe haber un error en MT4 en el modo de añadir al archivo.

¿Has intentado ir al final del archivo? Búsqueda de archivos()

 
//+------------------------------------------------------------------+
//| Escribir la cadena en el archivo |
//+------------------------------------------------------------------+
void EscribirLíneaEnArchivo(cadena NombreArchivo, cadena texto)
{
int file_handle=FileOpen(FileName, FILE_READ|FILE_WRITE, " ");

if (file_handle>0)
{
FileSeek(file_handle, 0, SEEK_END);
FileWrite(file_handle, text);
FileClose(file_handle);
}

}
No hay errores, sólo hay que escribirlo correctamente. Esta función añade texto a FileName .
 

¡Hola!

Estoy intentando programarlo yo mismo.

Ayúdame a saber qué dirección tomar! Si lo necesitas con urgencia y rapidez (para empezar)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Existe un indicador que consta de dos MA

Necesitamos crear una señal sonora en la intersección de dos MA con el mensaje que se muestra utilizando la función "MessageBox".

¿Qué hacer?

1 Crear un script con la función "MessageBox

2.¿O añadir una condición al código del indicador con esta función?

3.¿O enlazar un script existente con el indicador? ¿Cómo vincularlos, si es posible?

4.¿O es más fácil crear un Asesor Experto?

Si lo tengo, por favor envíame el código fuente de un simple Asesor Experto clásico con dos medias móviles

(Condiciones del EA...comprar si la МА rápida cruza (o toca) la MA lenta de abajo hacia arriba

..............................sel si la МА rápida cruza (o toca) una MA lenta de arriba a abajo.

.............................. con la función StopLoss

.............................. con la función TakeProfit

.............................. con función de lote

Gracias.

 
DRevodel писал(а) >>

¡Hola!

¡Tratando de programar por mi cuenta!

Ayúdame a entender qué dirección tomar! Si lo necesitas con urgencia y rapidez (para empezar)

Existe un indicador que consta de dos MA

Es necesario crear una señal sonora en la intersección de dos MA con la salida del mensaje en la pantalla utilizando la función "MessageBox".

¿Qué hacer?

¿O añadir una condición al código del indicador con esta función?

>>Gracias.