[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 95

 

E verifique se o depósito é suficiente ? https://docs.mql4.com/ru/constants/marketinfo

E verifique o lote na saída ?

 

Esse é o problema... O número de lotes cresce até o infinito, ou seja, o aumento do volume é feito em loop in, e por código acaba por ser um aumento pontual...

Depois disso, para deixar claro, veja abaixo. e, portanto, o mesmo com Sell

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;                           // Повторная попытка

é o chamado "one-off" ?

tampa, é óbvio, há um ciclo.

 
sergeev, você mesmo pode não estar pensando direito... é um ciclo se ocorrer um erro de abertura, não para aumentar o número de lotes.
 

Olá!

Não consigo encontrar uma resposta para a seguinte pergunta:

Se uma ordem pendente for executada, seu tipo ainda é o mesmo que o tipo da ordem pendente, ou é alterada para OP_BUY ou OP_SELL?

 
oDin48:

Esse é o problema... O número de lotes cresce até o infinito, ou seja, o aumento do volume é feito em loop in, e por código acaba por ser um aumento pontual...

Depois disso, para deixar claro, veja abaixo. e, portanto, o mesmo com Sell

Tente
if (Fun_Error(GetLastError())==0)   // Нет ошибки
break; 
Se houver um erro, ele apenas tentará abrir uma posição novamente em um novo tick. A propósito, foi-me explicado aqui neste fórum (p. 90-91) que é aconselhável não usar && (e) operador em se.
 
gogent:

Se uma ordem pendente for executada, ela ainda é a mesma que a ordem pendente, ou é alterada para OP_BUY ou OP_SELL?

Sim, é claro que sim.
 

Alguém sabe como converter o número de pips em moeda?

ou seja, se o lucro estiver em unidades de moeda, então 50 pips devem ser convertidos em unidades de moeda... ou seja, a alavancagem deve ser levada em conta...? 0_о

 

paladino80, o problema não é abrir uma ordem... funciona bem... Eu folheei esta parte para deixar claro quais variáveis do post de 01.05.12 19:15 foram utilizadas mais...

o problema é este (veja abaixo), é uma execução única e por alguma razão o Vol aumenta até o infinito, daí o Lts aumenta até o infinito... não está claro... por favor, veja o posto em questão e diga-me o que está errado...

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:

Alguém sabe como converter o número de pips em moeda?

Isto é, se o lucro estiver em unidades monetárias, então 50 pips devem ser convertidos em unidades monetárias... a alavancagem também deve ser levada em conta...? 0_о


lucro=lote*pontos*TICK_VALUE