Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 90

 
WindSW:
Todas as opções estão listadas, excepto o fecho. É por isso que pergunto.

já lhe foi dito.

Yedelkin:

"Fechando uma posição" é apenas o resultado de um pedido comercial, cujas regras são as mesmas.

Isto é, aceitar o pedido "aberto" e alterar o tipo de pedido.

Preencher os campos obrigatórios desnecessários com zeros.

 

Yedelkin:
Для каждого вида торгового запроса предусмотрены обязательные поля. Они должны быть заполнены. "Открытие позиции" или "Закрытие позиции" - это всего лишь результат выполнения конкретного торгового запроса, правила заполнения которого - одни и те же. Т.е. берите свой работающий вариант запроса "на открытие" и меняйте тип ордера. Ненужные обязательные поля заполняйте нулями.

sergeev:

já foi respondido!

Obrigado!

Tenho mais uma pergunta: o pedido abaixo é enviado e uma posição é aberta, mas a paragem e o lucro não são definidos. Já os torci de formas diferentes, mas nada ajudou. Qual é o problema, o que é que estou a fazer mal?

   MqlTick latest_price;       // Будет использоваться для текущих котировок
   if(!SymbolInfoTick(_Symbol,latest_price)) return;        // получить текущее значение котировки в структуру типа MqlTick
   ...
   if(uBuy && opSell==false)    
     {
      if(opBuy) return;                                                // при наличии позиции не добавлять к открытой позиции на покупку
      mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
      mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // последняя цена ask
      mrequest.sl = NormalizeDouble(latest_price.ask - StopLoss*_Point,_Digits); // Stop Loss
      mrequest.tp = NormalizeDouble(latest_price.ask + TakeProfit*_Point,_Digits); // Take Profit
      mrequest.symbol = _Symbol;                                            // символ
      mrequest.volume = WorkLot;                                                // количество лотов для торговли
      mrequest.magic = EA_Magic;                                            // Magic Number
      mrequest.type = ORDER_TYPE_BUY;                                       // ордер на покупку
      mrequest.type_filling = ORDER_FILLING_FOK;                            // тип исполнения ордера - все или ничего
      mrequest.deviation=Slippage;                                               // проскальзывание от текущей цены
      OrderSend(mrequest,mresult);                                          // отсылаем ордер
      if(mresult.retcode==10009 || mresult.retcode==10008)                  //запрос выполнен или ордер успешно помещен
        {
         Alert("Ордер Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
        }
      else
        {
         return;
        }
     }
 

como somar os últimos 3 valores ZigZag?

        double summ=0;//переменная, в которую все суммируется
        int w=0;//счетчик 3 удачных сумирований
        int count_for_buf=0;//Счетчик переходов по буферу ZigZag
        while (w<=3)
         {
         summ=summ+ZigzagBuffer[rates_total-count_for_buf];
         count_for_buf++;
         if (ZigzagBuffer[rates_total-count_for_buf]!=0)//Увеличиваем счетчик, если используемое значение индикатора не равно нулю
          {
          w++;
          }
         }
Desta forma, por alguma razão, pende ou algo mais acontece
 
WindSW: O pedido abaixo é enviado e uma posição é aberta, mas nenhuma paragem ou lucro é colocado. Já tentei cenários diferentes, mas nada ajudou. Qual é o problema, o que é que estou a fazer mal?

Lembra-se que os pedidos comerciais "para abrir uma posição" têm várias opções a preencher? Algumas destas opções envolvem sl/tp, outras não. Por outras palavras, que modo de negociação tem o seu corretor?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
Yedelkin:

Lembra-se que os pedidos comerciais "para abrir uma posição" têm várias opções a preencher? Algumas destas opções envolvem sl/tp, outras não. Por outras palavras, qual é o modo de negociação do seu corretor?

Corretor Alpari. No modo manual, apenas uma nova encomenda é colocada na execução da troca. Não há outra opção para entrar a partir do mercado. Compreendo que se trata de um pedido de Execução de Troca. Obrigado, já resolvi o problema. Pode dizer-me porque é que o compilador processa o seguinte código:

if(CopyBuffer(ema,0,0,3,emaVal)<0) retorna; // copia os novos valores dos buffers indicadores em arrays

и

IndicatorRelease(ema);

Aparece um aviso de "possível perda de dados devido à conversão do tipo". Não consigo perceber o que se passa aqui, não consigo repará-lo desde ontem à noite.

 
WindSW: Pode dizer-me por que razão o compilador jura nas seguintes cordas:

if(CopyBuffer(ema,0,0,3,emaVal)<0) retorna; // copiar novos valores de buffer de indicadores em arrays

и

IndicatorRelease(ema);

Aparece um aviso de "possível perda de dados devido à conversão do tipo". Não consigo perceber o que se passa aqui, não consigo resolver o problema desde ontem à noite.

E que tipo de ema variável?
 
Yedelkin:
Que tipo de variável é ema?
duplo
 
WindSW duplo
Já está. Ver de que tipo a variável deve ser para armazenar as pegas do indicador e combiná-lo.
 
Yedelkin:
Já está. Ver que tipo de variável deve ser usada para armazenar as pegas indicadoras, e combiná-la.
E eu estou fora do hábito de escrever como em 4. Mais uma vez obrigado pelas dicas!
 
lazarev-d-m:

como se somam os últimos 3 valores ZigZag?

Desta forma, por alguma razão, pende ou algo mais acontece

Vou dar-lhe a minha sugestão:

   double   summ=0;  //переменная, в которую все суммируется
   int      w=0;     //счетчик 3 удачных сумирований
   for(int i=0; i<rates_total; i++)
     {
      if(ZigzagBuffer[rates_total]!=0 && w<3)//Увеличиваем счетчик, если используемое значение индикатора не равно нулю
        {
         summ+=ZigzagBuffer[i];
         w++;
        }
      if(w>2) break;
     } 
Razão: