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

 
Qra:

Bom dia a todos!

Estou escrevendo meu primeiro bot e, ao mesmo tempo, estou me familiarizando com a MQL. Eu tenho o seguinte problema durante os testes:

A ordem OP_BUYSTOP é executada logo após a ordem ser colocada, embora a julgar pelo gráfico, o preço não atinja o valor alvo (ver abaixo)

HoraTipoOrdemVolumePreçoS / LT / PLucroBalanço
12011.09.19 02:10comprar parada10.0176.93576.73577.135
22011.09.19 02:10compre10.0176.93576.73577.135

USDJPY,M5 (visual)

Data 2011.09.19

Hora 02:15

Aberto 76.903

Alto 76.909

Baixo 76.890

Fechar 76.890

Volume 66

Estou testando todos os carrapatos.

Talvez eu não entenda corretamente o pedido OP_BUYSTOP? Comprar se o preço exceder um determinado valor, certo?

Aqui está um pouco do código fonte que faz um pedido

int ticket=OrderSend(Symb, OP_BUYSTOP, Lot, Price, 0, SL, TP);

Muito obrigado a todos com muita antecedência!

No gráfico do castiçal, todos os preços são Bid e qualquer ordem de compra é executada ao preço Ask.
 
PapaYozh:
No gráfico do castiçal, todos os preços são Bid e qualquer ordem de compra é executada ao preço Ask.

Obrigado!

 
Olá a todos!

Quero apagar as linhas horizontais pendentes se seu nível tiver sido quebrado pelo preço atual. Outra maneira de dizer: se o nível já foi ultrapassado ou "renegociado" depois que OBJ_HLINE foi criado.

Obrigado a Roll pela ajuda. Você poderia me dizer como rastrear corretamente a condição de manter o nível em um período conhecido?
//----------------------------------------------------------------------+ 
//  Удаление  OBJ_HLINE при пробитии его уровня   /Red-Up/Blue-Down|    |
//----------------------------------------------------------------------+   
void DelHLine( string nm="")  
   {
    int obj_total=ObjectsTotal();

       for(int i=1;i<obj_total;i++) 
      { 
        nm=ObjectName(i);
         if(nm==ObjectName(i)&&ObjectType(nm)==OBJ_HLINE)
         {
          color    cl     = ObjectGet(nm,OBJPROP_COLOR);
          double   pl     = ObjectGet(nm,OBJPROP_PRICE1);
          datetime timeSet= ObjectGet(nm,OBJPROP_TIME1);
          int      shift  = iBarShift(NULL,0,timeSet);
   
          if((cl==Red  && pl<High[iHighest(NULL,0,MODE_HIGH,shift,1)])||
             (cl==Blue && pl>Low [iLowest (NULL,0,MODE_LOW, shift,1)]) ) ObjectDelete(nm); 
         } 
      }
    return(0);  
  }
//+------------------------------------------------------------------+
 

Olá! Por favor, me ajude.

Não consigo entender porque este script não exibe os dados em Excel como colunas.

Ao executá-lo em excel, há apenas um cabeçalho de tabela, sem dados.

Ajude-me a entender porque o delimitador não é percebido pela excelência.

Arquivos anexados:
writefile.mq4  3 kb
 

Estou começando com a programação, então muitas perguntas surgem, obrigado antecipadamente por sua atenção!

Escrevi um script chamado NewScript, que realiza uma função simples - exibir os preços OHLC por barras em um gráfico...

Minha pergunta é - se BARS é exatamente o número de barras no gráfico atual, então por que no meu log EA exibe o número de barras na tela (cerca de 200), mas no meu log mais de 2000?

Obrigado!

Arquivos anexados:
 
Vinin:


Pequena correção


double Hi (int pos=0) //создали Hi, зависящую от pos
{ 
  int i=pos; //присваиваем "i" значение от "pos", то есть i равно pos
  double H=0;
  while (i<=pos+10) //как она может быть меньше, если она равна?
  {
    if (H<iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i))  //это мне вообще не понятно... то есть если значение "Н" будет меньше, то присваиваем...  
      H=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i); //то есть он определит мне наинизший, но не наивысший бар


    i++; //ну тут мы добавляем к "i" плюс 1
  }
  return(H); //возвращаем Hi в самое начало
}

Desculpe, não consigo entender a função...

 
CLAIN:



A opção mais fácil

double Hi (int pos=0) 
{ 
  double H[10]; // Объявили массив
  
  for (i=pos+1;i<=pos+10;i++) // формируем массив
  {
    H[i]=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
  }
  int MaxId=ArrayMaximem(H); ищем индекс максимального элемента
  return(H[MaxId]); // возвращаем максимальный элемент
}
 

Olá!

Você pode me ajudar a escrever um código para parar a EA por um tempo?

Eu escrevi o código assim.

int init() {
string OrderStop="OrderStop "+ Symbol();
OrderSig =GlobalVariableGet(OrderStop);
// Print (OrderSig);

return (0);
}

int deinit() {
return (0);
}

int start() {
string OrderStop="OrderStop "+ Symbol();
OrderSig = GlobalVariableGet(OrderStop);

se (OrderSig===1)return(0);

senão {

Corpo(código) da EA

}

retorno(0);

}

No trailer, este código funciona, mas quando eu compilo ou reprise o Terminal,

A EA começa a trabalhar (abre posição) e não volta a negociar.

O que pode ser?

Ou me diga outra opção.

 
alega:

Ou sugerir outra opção.

Use um f:

  Sleep (3000);
 
Obrigado, vou tentar.