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

 
quais países) Favor anotar quais são as bandeiras. Quais são as chaves para entrar no mecanismo de busca e lê-las.
 
Se você quer dizer falso verdadeiro, não vejo como você pode abrir apenas um pedido de cada vez.
 
Você pode me dizer como uma EA abre uma grade de ordens? Eu escrevi uma função que detecta o pedido com o preço mais alto e o mais baixo. Mas também preciso de informações sobre a segunda encomenda com o preço mais baixo ou mais alto.
 
Top2n:
Se você quer dizer falso verdadeiro, então eu não entendo como é possível abrir exatamente um pedido.
Por que não verificar se "já existe uma posição aberta do tipo que deveria ser aberta pelo sinal?
Se ela já existe, então não a abra.

Se não houver uma posição deste tipo no mercado, então abra-o.

Bem, junto com esta verificação, você também pode verificar quaisquer outras condições. Por exemplo: se já existe tal posição, mas já passou um determinado período de tempo após sua abertura, outra posição pode ser aberta... etc. etc. ...

 
DimaMA:
Você pode me dizer como uma EA abre uma grade de ordens? Eu escrevi uma função que determina o pedido com o preço mais alto e o mais baixo. Mas preciso de mais informações sobre a segunda encomenda com o preço mais baixo ou mais alto. Aqui em geral a segunda e não a última. me diga a função.

Percorra todos os pedidos e armazene-os em uma matriz bidimensional. Na primeira dimensão da matriz, registrar o tempo em que o pedido foi estabelecido e, na segunda dimensão, registrar seu bilhete. Ordenar a matriz pela data do pedido (pela primeira dimensão) em ordem decrescente. O segundo elemento da matriz na primeira dimensão conterá a data de instalação da penúltima ordem (o segundo a partir do final), e a segunda dimensão conterá o bilhete da ordem necessária. Você seleciona o pedido por este bilhete e... Você pode fazer o que quiser com ele.


Uma vez eu escrevi uma função para calcular o Breakeven para a N-ésima quantidade de últimas posições para uma EA personalizada. O cálculo deve ser feito para as últimas várias posições, a partir da penúltima. Você pode ver como ela é implementada e tirar algo dela:

//+----------------------------------------------------------------------------+
// Уровень безубытка по символу для N последних позиций, начиная с предпоследней
double LevelPreWLforNpos(int op, int mn1, int mn2, int num) { 
   double lots=0;
   double sum=0;
   int n=0;
   int mass[1][2];
   ArrayInitialize(mass,0);
   for (int i=0; i<OrdersTotal(); i++) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()!=op)    continue;
         if (OrderMagicNumber()==mn1 || (OrderMagicNumber()==mn2 || OrderMagicNumber()<0)) {
            n++;
            if (n>ArrayRange(mass,0)) ArrayResize(mass, n);
            mass[n-1][0]=OrderOpenTime();
            mass[n-1][1]=OrderTicket();
            }
         }
      }
   ArraySort(mass,WHOLE_ARRAY,0,MODE_DESCEND);
   if (ArrayRange(mass,0)>num+1)  ArrayResize(mass,num+1);
   for (i=1; i<ArrayRange(mass,0); i++) {
      if (OrderSelect(mass[i][1],SELECT_BY_TICKET)) {
         if (OrderCloseTime()==0) {
            if (OrderType()==OP_BUY) {
               lots+=OrderLots();
               sum+=OrderLots()*OrderOpenPrice();
               }
            if (OrderType()==OP_SELL) {
               lots-=OrderLots();
               sum-=OrderLots()*OrderOpenPrice();
               }
            }
         }
      }   
   double price=0;
   if (lots!=0) price=sum/lots;  
   return(NormalizeDouble(price,dg));
}
//+----------------------------------------------------------------------------+
 
Top2n:
Se você quer dizer falso verdadeiro, não vejo como você pode abrir apenas um pedido de cada vez.


Sim, é isso que quero dizer. Veja o tutorial aqui. Você terá mais algumas condições, ao escrever: "Atenção pergunta!) E como fazê-lo aberto uma vez para (sig1) pode ser tão sig1-aberto BAY, o próximo comando, sig0-admit inclusão. trall (não importa), o próximo comando novamente, sig1-aberto segundo BAY" - não é muitas vezes? Parece que você não precisa dele ... Em geral, brincar com bandeiras.

 
Roman.:


Sim. Refiro-me a eles. Veja o tutorial aqui. Você terá mais algumas condições, enquanto escreve: "Atenção pergunta!) E como fazê-lo abrir uma vez para (sig1) enquanto pode ser tão sig1-aberto BAY, o próximo comando, sig0-admit on. trawl (não importa), o próximo comando novamente, sig1-aberto segundo BAY" - não é muitas vezes? Parece que você não precisa dele ... Em geral, brincar com bandeiras.

A Kimi tem alguma função adequada, por acaso? Para não desorganizar o programa. É necessário que ele abra uma ordem e se acalme, pois ele abre "mil" em um segundo.
 
Top2n:
A Kim I.V. por acaso tem uma função adequada? Para não desorganizar o programa. Quero que ele abra uma ordem e relaxe, porque ele "abre mil" em um segundo.
Faça sua escolha.
 

Quero escrever os resultados dos testes (transações) em um arquivo após o teste

Coloco a função tofile () no bloco deinit() (ele escreve depois que o trabalho é terminado)

mas a função em si

// Запись профитов в файл
void toFile( )
{
int handle=FileOpen("OrdersReport.csv",FILE_WRITE|FILE_CSV,"\t");
  if(handle<0) return(0);
  // запишем заголовок в файл
  FileWrite(handle,"#","проф");
 
  int total=OrdersTotal();
  // записываем в файл только закрытые ордера
  for(int pos=0;pos<total-1;pos++)
    {
     //FileSeek(handle, 0, SEEK_END);
     if(OrderSelect(pos,SELECT_BY_POS, MODE_HISTORY)==false) continue;
     FileWrite(handle,OrderTicket(),OrderProfit());
    }
  FileClose(handle);
  return;
não funciona, ele registra apenas o cabeçalho
 
Então, você pode me dizer qual função retorna o preço atual?