[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 294

 
forexnew:
Eu nunca trabalhei com DLL. Por acaso você não tem um código pronto?


Embora, nada seja particularmente difícil, apenas uma simples substituição de um arquivo por outro.

Para fazer uma DLL você precisa programar em um idioma que não seja MQL4. Algumas pessoas escrevem em C/C++. Eu o escrevi em Delphi. Em suma, depende de suas próprias necessidades.

Quando a DLL está pronta, ela é conectada ao Expert Advisor, bem como a outra biblioteca da MQL4. Depois disso, você pode chamar as funções descritas na DLL.

 
drknn:


Eu não fiz este tipo de função, embora se você olhar para ela, não há nada particularmente complicado lá - apenas uma substituição idiota de um arquivo por outro.

Você pode fazer links no sistema de arquivo para ler os logs do script.
 

Caro, Igor Kim tem uma função que retorna o preço de abertura da última posição aberta https://forum.mql4.com/ru/38949/page5#434239

Se não for difícil, favor escrever uma função que devolva o preço de abertura da primeira posição aberta. Pensei que seria o suficiente na fila

t<OrderOpenTime()
Para substituir "<" por ">", mas o resultado não funcionará.
 

Olá.

Favor aconselhar como implementar esta função, se possível.

A ordem 1 e TP é definida de acordo. Um pedido 2 pendente é feito ao mesmo tempo que o pedido. Como apagar o pendente quando o TP do pedido 1 tiver acionado.

 
strongest:

Olá.

Favor aconselhar como implementar esta função, se possível.

A ordem 1 e TP é definida de acordo. Um pedido 2 pendente é feito ao mesmo tempo que o pedido. Como apagar o pendente quando o TP do pedido 1 tiver acionado.


Chamando a função OrderDelete() trading
 
O que precisa ser mudado para que a parada de trilha funcione em cinco dígitos? Aumentar os pips por um fator de 10 não ajuda.
//+------------------------------------------------------------------+
//|                                                   e-Trailing.mq4 |
//|                                           Ким Игорь В. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//| 12.09.2005 Автоматический Trailing Stop всех открытых позиций    |
//|            Вешать только на один график                          |
//| 21.01.2006 Параметр AllPositions                                 |
//+------------------------------------------------------------------+
#property copyright "Ким Игорь В. aka KimIV"
#property link      "http://www.kimiv.ru"

//------- Внешние параметры ------------------------------------------
extern bool   AllPositions   = False; // Управлять всеми позициями
extern bool   ProfitTrailing = True;  // Тралить только профит
extern int    TrailingStop   = 15;    // Фиксированный размер трала
extern int    TrailingStep   = 2;     // Шаг трала
extern bool   UseSound       = True;  // Использовать звуковой сигнал
extern string NameFileSound  = "expert.wav";  // Наименование звукового файла

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (AllPositions || OrderSymbol()==Symbol()) {
        TrailingPositions();
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом                             |
//+------------------------------------------------------------------+
void TrailingPositions() {
  double pBid, pAsk, pp;

  pp = MarketInfo(OrderSymbol(), MODE_POINT);
  if (OrderType()==OP_BUY) {
    pBid = MarketInfo(OrderSymbol(), MODE_BID);
    if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
      if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
        ModifyStopLoss(pBid-TrailingStop*pp);
        return;
      }
    }
  }
  if (OrderType()==OP_SELL) {
    pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
    if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
      if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
        ModifyStopLoss(pAsk+TrailingStop*pp);
        return;
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss) {
  bool fm;

  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
  if (fm && UseSound) PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
 
david2:
O que precisa ser mudado para que a parada de trilha funcione em cinco dígitos? Aumentá-la 10 vezes não ajuda.

O mais provável é que o problema sejam os preços não-normalizados.
 
PapaYozh:

É provável que o problema sejam os preços não-normalizados.
Desculpe, mas além do botão terminal, você deveria ter pressionado a confirmação adicional na janela da EA para permitir que a EA possa negociar.
 
Sancho77:

Caro, Igor Kim tem uma função que retorna o preço de abertura da última posição aberta https://forum.mql4.com/ru/38949/page5#434239

Se não for difícil, favor escrever uma função que devolva o preço de abertura da primeira posição aberta. Pensei que seria o suficiente na fila

Substitua "<" por ">", mas não funciona.

E para esclarecer? Escolher o primeiro dos abertos (os que estão no mercado) ou os que já estão fechados? E se a primeira vaga foi aberta há três anos? É para ser selecionado?

Para que serve tudo isso afinal?

 

Olá Camaradas!

Você pode me informar se posso determinar se o pedido anterior foi fechado na Take Profit ou não? Em caso afirmativo, como devo implementá-lo de forma programática?

Eu ficaria grato por uma ligação se esta questão já foi discutida.