[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 601

 
Como as funções para o testador são diferentes daquelas para o comércio on-line?
 
Em teoria, o tratamento de erros na comunicação com o servidor comercial.
 
lottamer:


Obrigado, eu mesmo encontrei as bibliotecas da KIM ... (o camarada KIM provavelmente escreveu CAPITAL como MARCAS do mundo Forex ... e todos nós o citamos agora (ou seja, inseri-lo em nossos Consultores Especialistas) ...) há "bandeiras" de negócios recentes em diferentes variações.

exceto que eu nunca usei # includ-....

você pode explicar em poucas palavras?

no topo eu escrevo # incluir (nome do arquivo mqh)

Mas no código... onde eu coloco a função?

GetTypeLastClosePos ();

e depois o que ?

O QUE disto me devolverá o tipo de posição?

OrderType() ?

ou seja, se(OrderType() ==TRUE ) fizer isto e aquilo... certo?

As funções devem ser inseridas após o retorno(0);

A função GetTypeLastClosePos() retornará 0 se houvesse uma compra, e 1 se houvesse uma venda, ou -1 se não houvesse nada na história.

//+------------------------------------------------------------------+
//|                                                          123.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
if (isCloseLastPosByTake()==true) Comment("Профит"); else Comment("ХЗ");   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
}
 
BeerGod:

A função deve ser inserida após o retorno(0);

A função GetTypeLastClosePos() retornará 0 se houvesse uma compra e 1 se houvesse uma venda, ou -1 se não houvesse nada na história.



Entendi, obrigado.

E ainda assim, se a função está em um arquivo #incluir, então como deve ser tratada?

 
lottamer:


Entendi, obrigado.

e ainda assim, se a função está em um arquivo #incluir, então como você se desfaz dela?


como você entende #incluir?

Como no documento ou à sua própria maneira?

 

Preciso que a coruja coloque uma ordem pendente exatamente na abertura de uma vela em D1.

Eu escrevi uma função:

bool GetTimeToInput()
{
  if(TimeCurrent() == iTime(Symbol(),1440,0)
  {
    return(true);
  }
  else
    return(false);
}

O compilador se afasta:

'\end_of_program' - unbalanced left parenthesis E:\Insall'd soft's\Forex\Alpari NZ MT4\experts\Gann_2Days.mq4 (228, 4)

Todos têm parênteses, o que é estranho. Se esta função for comentada, o código é compilado sem erros. O que pode estar errado?

Estou correto ao escrever a função de abrir somente ao preço de abertura de uma vela diária?

 

hoz:

Os parênteses de todos estão lá, é estranho.

não. você tem o cão certo faltando na fila se


e talvez não diga a palavra "estranho" quando se trata do compilador. É claro, é difícil ver o tronco no seu próprio olho :)

E eu realmente escrevi a função correta para abrir somente ao preço de abertura da vela do dia?

não
 
lottamer:


Os desenvolvedores não tiveram nada a ver com isso. :__

Ao invés de ( Hora()>=10 || Hora()<20 ) você deveria ter feito isso simples Hora()>=10 && Hora()<20

e tudo funcionou


A questão não é que funcionou, mas que se a ajuda for escrita corretamente, ela não deve funcionar.
 
sergeev:

como você entende #incluir?

como no Doka ou à sua própria maneira?


como no Doka.

há um arquivo.

Há uma referência a ele na EA.

Isto é o suficiente para utilizar PRONTO em qualquer lugar da EA, por exemplo, da seguinte forma

se isCloseLastPosByTake()<0... ?

 
rigonich:

A questão não é que funcionou, mas que, se a referência for escrita corretamente, não deve funcionar.


o certificado diz algumas besteiras sobre o número de segundos transcorridos desde 1 de janeiro de 1970 :))))))

Eu não sei o que pensar...