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

 
zfs:
O comércio rentável médio não cobrirá o escorregamento e a rentabilidade é pequena, e também pode ser um ajuste).

Eu próprio escrevi ao Consultor Especialista. Não há nele qualquer paragem de perda.

 
PetrovichV:

Eu próprio escrevi ao perito. Não tem uma perda de carga.

Isso é ainda pior).
 
zfs:
É ainda pior).
Obrigado.
 

Provavelmente vou responder à minha própria pergunta, agora que a solução foi encontrada - nunca se sabe quem irá pesquisar no Google...

A questão era sobre como obter o preço de abertura da última encomenda da história. Aconteceu (pelo menos para mim, não) que estava correcto - eu tinha de obter o preço de um negócio em vez do preço de uma encomenda. No testador, a variante inicial também funcionou (não escrita por mim) - suspeito que a diferença esteja no facto de na versão de demonstração apenas dizer "preço de mercado" em vez de preço e ao tentar solicitá-lo como duplo, os zeros são devolvidos por alguma razão. Para o diabo com isso, agora a função parece ser esta:

PositionID = PositionGetInteger(POSITION_IDENTIFIER);

double FindLastPrice(long PositionID) {
   int  i = 0, DealsTotal;
   ENUM_DEAL_TYPE CheckType;
   long Ticket, OldTicket = 0, PosID, Magic, Type;
   double OrderPrice = 0;
   
   DealsTotal = HistoryDealsTotal();
   
   for (i = 0; i < DealsTotal; i++) {
      Ticket = (int)HistoryDealGetTicket(i);
      PosID  = HistoryDealGetInteger(Ticket, DEAL_POSITION_ID);
      Magic  = HistoryDealGetInteger(Ticket, DEAL_MAGIC);
      Type   = HistoryDealGetInteger(Ticket, DEAL_TYPE);
      
      if (Sell) CheckType = DEAL_TYPE_SELL; 
      else CheckType = DEAL_TYPE_BUY;
      
      if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == CheckType)) {
         if (Ticket > OldTicket) {
            OrderPrice = HistoryDealGetDouble(Ticket, DEAL_PRICE);
            OldTicket = Ticket;
         }
      }
   }
   if(!OrderPrice) Print("Ошибка получения цены открытия предыдущей сделки! Error ",GetLastError());
   return(OrderPrice);
}

Tive de matar algumas horas por este disparate, mas pelo menos tudo isto tem as suas vantagens: devido a esta função não funcional tive de inventar uma alternativa, ao mesmo tempo dominando o trabalho básico com ficheiros para estúpidamente escrever cada novo preço de encomenda num ficheiro e lê-lo quando necessário...

 
Lone_Irbis:

Vou provavelmente responder à minha própria pergunta, uma vez que a solução foi encontrada - caso alguém esteja a pesquisar no Google...

A questão era sobre como obter o preço de abertura da última encomenda da história. ....

E se pudesse simplesmente usar a pesquisa no website ou procurar através dos artigos que já têm alguma coisa.

>>> Receitas MQL5 - História do Comércio e Biblioteca de Funções para a Obtenção de Propriedades de Posição

 
tol64:

E poderia simplesmente usar a pesquisa do site ou procurar nos artigos onde não há mais nada.

>>> Receitas MQL5 - História do Comércio e Biblioteca de Funções para a Obtenção de Propriedades de Posição

Pesquisei este site no Google durante uma semana (nomeadamente, através do Google, porque a pesquisa integrada é algo estranho: ou dá coisas totalmente inexactas por ordem aleatória, não por relevância, ou até diz "não encontrei nada" mesmo para pedidos copiados da mesma documentação)... Mas para encontrar algo útil deve saber exactamente como se chama esta coisa útil e como difere da versão não funcional já existente :) É fácil falar de busca a partir da posição de alguém que conhece a língua a um nível decente, mas é mais difícil de fazer, se souber o nome mql5 apenas durante uma semana e já estiver a tentar fazer algo nele...

E mais, não gosto muito de soluções prontas e manuais detalhados, como conceito, apenas me desencorajam de o fazer eu próprio. :) Talvez a minha forma de auto-estudo não seja muito eficaz, mas é mais importante que seja interessante - caso contrário, o entusiasmo de investir tempo pessoal neste tópico não será suficiente durante muito tempo.

No entanto, obrigado pela ligação, vou lê-la.

 

Boa tarde.

Existe alguma forma de descarregar dados históricos para moedas durante 20-30 anos?

Em Alfa-Forex é apenas durante os últimos 12 anos, mas antes disso está em pedaços.

 
PetrovichV:

Boa tarde.

Existe alguma forma de descarregar dados históricos para moedas durante 20-30 anos?

Em Alfa-Forex é apenas durante os últimos 12 anos, mas antes disso está em pedaços.

O seu corretor dá-lhe o histórico, a qualidade diminui quando aumenta o período.
 

Aqui está o código onde a ordem de compra é colocada e depois o seu SL e TP são alterados.

Recebo erro: 2013.09.06 00:03:39 Comércios '10022332': falhou modificação da ordem #0 comprar 0,00 GBPUSD na sl do mercado: 0,00000 tp: 0,00000 -> 1,56255, sl: 1,55787 tp: 1,56787 [Pedido inválido]
O que há de errado com o pedido de alteração de níveis?

int Positions;
double delta=0.00500;

MqlTradeRequest  Request;
MqlTradeResult   Result;
MqlTick         InfoTick;


void OnTick()

{
//---

 if(PositionsTotal()==0) // если открытых позиций нет, покупаем
   { 
      
    SymbolInfoTick(_Symbol, InfoTick);
                              
    Request.action=TRADE_ACTION_DEAL;
    Request.symbol=_Symbol;
    Request.volume=1;
    Request.price=InfoTick.bid;
    Request.sl=InfoTick.bid - delta;
    Request.tp=InfoTick.bid + delta;
    Request.deviation=50;
    Request.type=ORDER_TYPE_BUY;
    Request.type_filling=ORDER_FILLING_FOK;
               
    OrderSend(Request, Result);
   
  }else{                                     // меняем уровни
        SymbolInfoTick(_Symbol, InfoTick); 
        
        Request.action=TRADE_ACTION_MODIFY;
        Request.symbol=_Symbol;
        Request.sl=InfoTick.last - delta;
        Request.tp=InfoTick.last + delta;
                          
        OrderSend(Request, Result);
       }
}
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
agvozdezkiy:

Aqui está o código onde a ordem de compra é colocada e depois o seu SL e TP são alterados.

Recebo erro: 2013.09.06 00:03:39 Comércios '10022332': falhou modificação da ordem #0 comprar 0,00 GBPUSD na sl do mercado: 0,00000 tp: 0,00000 -> 1,56255, sl: 1,55787 tp: 1,56787 [Pedido inválido]
O que há de errado com o pedido de alteração de níveis?

Obter o código de erro para começar.
Razão: