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

 

¿Y comprobar la suficiencia del depósito? https://docs.mql4.com/ru/constants/marketinfo

¿Y comprobar el lote en la salida?

 

Ese es el problema... El número de lotes crece hasta el infinito, es decir, el aumento de volumen se introduce en bucle, y por código resulta ser un aumento puntual...

Después de eso para que quede claro ver a continuación. y por lo tanto lo mismo con Vender

if (Total==0 && Opn_B==true)         // Открытых орд. нет  
            {                                   // критерий откр. Buy
            RefreshRates();                     // Обновление данных
                                  
            Min_Lot=MarketInfo(Symb,MODE_MINLOT);  // Миним. колич. лотов 
            Free   =AccountFreeMargin();           // Свободн средства
            One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// Стоимость 1 лота
            Step   =MarketInfo(Symb,MODE_LOTSTEP); // Шаг изменен размера
            Lts=MathFloor(Vol);                    // Для открытия 
            Alert ("Lts ", Lts);
            if(Lts < Min_Lot) Lts=Min_Lot;         // Не меньше минимальн
            if (Lts*One_Lot < Free) Alert(" Не хватает денег на ", Lts," лотов"); // Лот дороже свободн.
            
            SL=Ask-StopLoss_Open*Point;            // Вычисление SL откр.
            TP=Ask+TakeProfit_Open*Point;          // Вычисление TP откр.
            Alert("Попытка открыть Buy. Ожидание ответа..");
            Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP); //Открытие Buy
            if (Ticket > 0)                        // Получилось :)
                {
                Alert ("Открыт ордер Buy ",Ticket);
                VKO0=Ask; Opn_B =false; KO++;
                Alert ("Цена открытия =", VKO0);
                }
             
            
            if (Fun_Error(GetLastError())==1)   // Обработка ошибок
            continue;                           // Повторная попытка
                                         
            }
 
            continue;                           // Повторная попытка

¿es una llamada "única"?

cap, es obvio, hay un ciclo.

 
sergeev, puede que no estés pensando bien... es un ciclo si se produce un error de apertura, no para aumentar el número de lotes.
 

¡Hola!

No encuentro respuesta a la siguiente pregunta:

Si se ejecuta una orden pendiente, ¿su tipo sigue siendo el mismo que el de la orden pendiente, o se cambia a OP_BUY u OP_SELL?

 
oDin48:

Ese es el problema... El número de lotes crece hasta el infinito, es decir, el aumento de volumen se introduce en bucle, y por código resulta ser un aumento puntual...

Después de eso para que quede claro ver a continuación. y por lo tanto lo mismo con Vender

Prueba con
if (Fun_Error(GetLastError())==0)   // Нет ошибки
break; 
Si hay un error, simplemente intentará abrir una posición de nuevo en un nuevo tick. Por cierto, me explicaron aquí en este foro (p. 90-91) que es aconsejable no utilizar el operador && (y) en if.
 
gogent:

Si se ejecuta una orden pendiente, ¿sigue siendo la misma orden pendiente o se cambia a OP_BUY u OP_SELL?

Sí, claro que sí.
 

¿Alguien sabe cómo convertir el número de pips en moneda?

es decir, si el beneficio es en unidades de moneda, entonces 50 pips deben ser convertidos en unidades de moneda... es decir, el apalancamiento debe ser tomado en cuenta... 0_о

 

paladin80, el problema no es abrir un pedido... funciona bien... He ojeado esta parte para que quede claro qué variables del post del 01.05.12 19:15 se utilizaron más...

el problema es este (ver abajo), es una ejecución única y por alguna razón el Vol aumenta hasta el infinito, por lo tanto el Lts aumenta hasta el infinito... no está claro... por favor, vea el post en cuestión y dígame qué es lo que está mal...

if ((Opn_S==true)||(Opn_B==true))               // Если есть сигнал на открытие ордера
      {                                         // Вычисляем объем умножая на VP
      if (AccountBalance()<50000) Vol=Opn_Lots*VP;
      if (AccountBalance()>50000) Vol=2*Opn_Lots*VP;
      }
 
w_ersoc:

¿Alguien sabe cómo convertir el número de pips en moneda?

es decir, si el beneficio es en unidades de moneda, entonces 50 pips deben ser convertidos en unidades de moneda... es decir, el apalancamiento debe ser tomado en cuenta... 0_о


beneficio=lote*puntos*VALOR_TICK
Razón de la queja: