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

 
akarustam:

Aqui estão as maravilhas de testar um programa de EA em MT5 (ver ficheiro de imagem)...Pode haver eqividade positiva com um saldo negativo ? e quando é que o saldo é negativo ? Antes de me virar para a Nação do Comércio mudou muito a minha opinião e nunca chegou a fazê-lo... Penso que está na hora de dormir um pouco)

Se alguém interessado no código aberto e no set me avisar ? - Irei certamente afixá-lo. Comecei a dominar o MT5 com hedging e agora, - milagres, no entanto)

Não há milagres. Tenho uma posição aberta com grande excedente e uma posição fechada com uma perda que excede o meu equilíbrio. Não estou a perder porque tenho fundos suficientes para manter uma posição aberta.
 
Artyom Trishkin:
Não há milagres. Há posições abertas com um grande excedente, e há uma posição fechada com uma perda maior do que o tamanho do balanço. Não há desvantagens porque há fundos suficientes para manter as posições em aberto.
É assim tão simples... OBRIGADO!
 

Pode dizer-me, por favor, qual é o meu erro?

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES)," PriceOpenSell[%d] = %G",i,PriceOpenSell[i]);

A data da matriz OpenSellTime não está impressa e não é a segunda parte da expressão - PriceOpenSell.

E, não consigo encontrar sobre comandosprintf como%G e%d.

 

Boa tarde a todos!)

Esta é uma questão para um boneco na programação...

Estou a tentar compilar uma EA para uma nova construção. O compilador dá-me muitos erros diferentes...

Aqui está um deles

if(oppositedelete){delete( OP_SELLSTOP);delete( OP_SELLLIMIT);}

Há 2 erros marcados a vermelho neste fragmento de código:"(' - apontador de objecto esperado

Tendo lido um pouco sobre o assunto do erro, compreendi que o nome é reservado e devo substituí-lo...

Então a questão é com o que substituí-lo?

 
Anton Razmyslov:

Boa tarde a todos!)

Esta é uma questão para um boneco na programação...

Estou a tentar compilar uma EA para uma nova construção. O compilador dá-me muitos erros diferentes...

Aqui está um deles

if(oppositedelete){delete( OP_SELLSTOP);delete( OP_SELLLIMIT);}

Há 2 erros marcados a vermelho neste fragmento de código:"(' - apontador de objecto esperado

Tendo lido um pouco sobre o assunto do erro, compreendi que o nome é reservado e devo substituí-lo...

Então a questão é com o que substituí-lo?

A tudo o que se possa pensar. Por exemplo _apagar ou apagar_1294_765_1912 ou apenas Napoleão
 

Há esta linha no código

Print (";OpenSellTime - ",TimeToString(OpenSellTime[N_Sell],TIME_DATE|TIME_MINUTES), ";PriceOpenSell", PriceOpenSell[N_Sell]);

Porque é que recebo este texto na produção:

OpenSellTime - 2015.12.01 11:15

onde ";" e a segunda parte é"PriceOpenSell"?

 
-Aleks-:

Há esta linha no código

Print (";OpenSellTime - ",TimeToString(OpenSellTime[N_Sell],TIME_DATE|TIME_MINUTES), ";PriceOpenSell", PriceOpenSell[N_Sell]);

Porque é que recebo este texto na produção:

OpenSellTime - 2015.12.01 11:15

onde está o ";" e a segunda parte"PriceOpenSell"?

removido ";" - funcionou.

A questão sobre o printf permanece...

 

Como posso enviar correctamente um pedido de encerramento de uma posição de balcão?

Se eu fechar como antes, em frente, é lacado ))

Já tentou de tudo, ainda dá erro 2016.04.15 13:17:24 Core 1 2016.03.29 09:00:00 posição fechada falhada #64 comprar 0,81 EURUSD por posição #0 [Pedido inválido]

Quais os campos a preencher e quais os que não? Acho que não importa se a posição aberta é curta ou longa.

//+------------------------------------------------------------------+
//| Закрытие  позиции по типу                                        |
//+------------------------------------------------------------------+
void PositionClose(double lot, int P_type,long id)
  {
Print("Вход в функцию Закрытие  позиции по типу !");
    ZeroMemory(mrequest); ZeroMemory(mresult);            // обнуляем значения mrequest, mresult

   //--- Получить текущее значение котировки в структуру типа MqlTick
   if(!SymbolInfoTick(_Symbol,latest_price))
     {
      Alert("Ошибка получения последних котировок - ошибка:",GetLastError(),"!!");
      return;
     }            
//--- формируем торговый запрос
      mrequest.action = TRADE_ACTION_CLOSE_BY;                                              // закрыть позицию встречной
      mrequest.order = id; 
//      mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
//      mrequest.price =  NormalizeDouble(latest_price.bid,_Digits);                      // последняя цена ask
//    mrequest.sl = 0;               // Stop Loss
//     mrequest.tp = 0;               // Take Profit
      mrequest.symbol = _Symbol;                        // символ
      mrequest.volume = lot;                            // количество лотов для торговли
 //     mrequest.magic = MAGIC;                               // Magic Number
      
//     if (P_type == 0) mrequest.type = ORDER_TYPE_SELL; // проверяем тип позиции
//     if (P_type == 1) mrequest.type = ORDER_TYPE_BUY;     
      mrequest.type = ORDER_TYPE_CLOSE_BY;
      mrequest.type_filling = ORDER_FILLING_FOK;        // тип исполнения ордера - все или ничего
      mrequest.deviation=10;                            // проскальзывание от текущей цены
                                        
            if( OrderSend(mrequest,mresult)>0)            // если значение отосланного ордера не ноль, то 
                  {  if(mresult.retcode==10009 || mresult.retcode==10008)
                     Print(" позиция  закрыта !");
                  } else {
                     Print(ResultRetcodeDescription(mresult.retcode));
                     return;
                         }
  }
 

Olá, pergunta sobre o provador.

Estou a testar um Expert Advisor com várias moedas e gostaria de ver no visualizador todas as janelas em todos os pares de moeda que estão a ser negociados.

Na ajuda do visualizador fala-se de algum comando "Gráfico" na secção "Ver" do menu principal do visualizador, que parece ser utilizado para abrir novos gráficos. Mas por alguma razão não tenho o comando "Carta" e, consequentemente, não posso abrir cartas de pares adicionais. Qual é o problema aqui?

 
Aleksandr Prishenko:

Como posso enviar correctamente um pedido de encerramento de uma posição de balcão?

Se eu fechar como antes, em frente, é lacado ))

Já tentou de tudo, ainda dá erro 2016.04.15 13:17:24 Core 1 2016.03.29 09:00:00 posição fechada falhada #64 comprar 0,81 EURUSD por posição #0 [Pedido inválido]

Quais os campos a preencher e quais os que não? Tanto quanto sei, não importa se a posição é longa ou curta.

Usar código mínimo - usar biblioteca padrão:

//+------------------------------------------------------------------+
//|                                                       TestEA.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"

#include <Trade\Trade.mqh>

CTrade my_trade;
ulong    result_deal_0  =0;
ulong    result_deal_1  =0;
bool     first_start    =false;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   first_start=false;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!first_start)
     {
      my_trade.Sell(0.01);
      result_deal_0=my_trade.ResultDeal();
      Sleep(1000);

      my_trade.Buy(0.02);
      result_deal_1=my_trade.ResultDeal();
      Sleep(1000);

      if(result_deal_0!=0 && result_deal_1!=0)
         PositionCloseBy(result_deal_0,result_deal_1);

      first_start=true;
     }
  }
//+------------------------------------------------------------------+
//| Position Close By                                                |
//+------------------------------------------------------------------+
void PositionCloseBy(ulong ticket,ulong ticket_by)
  {
   my_trade.PositionCloseBy(result_deal_0,result_deal_1);
  }
//+------------------------------------------------------------------+

Registo de Agente:

ES      0       09:12:21.189    Trade   2016.04.14 00:00:30   instant sell 0.01 EURUSD at 1.12728 (1.12728 / 1.12736 / 1.12728)
IL      0       09:12:21.189    Trades  2016.04.14 00:00:30   deal #2  sell 0.01 EURUSD at 1.12728 done (based on order #2)
 OP      0       09:12:21.189    Trade   2016.04.14 00:00:30   deal performed [#2  sell 0.01 EURUSD at 1.12728]
NF      0       09:12:21.189    Trade   2016.04.14 00:00:30   order performed sell 0.01 at 1.12728 [#2  sell 0.01 EURUSD at 1.12728]
GJ      0       09:12:21.192    TestEA (EURUSD,H1)      2016.04.14 00:00:30   CTrade::OrderSend: instant sell 0.01 EURUSD at 1.12728 [done at 1.12728]
KH      0       09:12:21.192    Trade   2016.04.14 00:00:31   instant buy 0.02 EURUSD at 1.12736 (1.12728 / 1.12736 / 1.12728)
OD      0       09:12:21.192    Trades  2016.04.14 00:00:31   deal #3  buy 0.02 EURUSD at 1.12736 done (based on order #3)
 GI      0       09:12:21.193    Trade   2016.04.14 00:00:31   deal performed [#3  buy 0.02 EURUSD at 1.12736]
LM      0       09:12:21.193    Trade   2016.04.14 00:00:31   order performed buy 0.02 at 1.12736 [#3  buy 0.02 EURUSD at 1.12736]
NS      0       09:12:21.193    TestEA (EURUSD,H1)      2016.04.14 00:00:31   CTrade::OrderSend: instant buy 0.02 EURUSD at 1.12736 [done at 1.12736]
OP      0       09:12:21.193    TestEA (EURUSD,H1)      2016.04.14 00:00:32   Вход в функцию Закрытие  позиции по типу !
GI      0       09:12:21.193    Trade   2016.04.14 00:00:32   close position #2  sell 0.01 EURUSD by position #3  buy 0.02 EURUSD (1.12728 / 1.12736 / 1.12728)
OM      0       09:12:21.193    Trades  2016.04.14 00:00:32   deal #4  buy 0.01 EURUSD at 1.12736 done (based on order #4)
 RK      0       09:12:21.193    Trades  2016.04.14 00:00:32   deal #5  sell 0.01 EURUSD at 1.12728 done (based on order #4)
 EF      0       09:12:21.193    TestEA (EURUSD,H1)      2016.04.14 00:00:32   CTrade::OrderSend: unknown action 10 [done]
EI      0       09:12:21.423    Trade   2016.04.14 23:59:59   position closed due end of test at 1.12663 [#3  buy 0.01 EURUSD 1.12736]
JG      0       09:12:21.423    Trades  2016.04.14 23:59:59   deal #6  sell 0.01 EURUSD at 1.12663 done (based on order #5)
 HN      0       09:12:21.423    Trade   2016.04.14 23:59:59   deal performed [#6  sell 0.01 EURUSD at 1.12663]
IS      0       09:12:21.423    Trade   2016.04.14 23:59:59   order performed sell 0.01 at 1.12663 [#5  sell 0.01 EURUSD at 1.12663]
Razão: