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

 
Leo59:
Favor explicar como desembalar os dados da tabela (*.csv) em uma matriz estática tridimensional.
A primeira coluna da tabela contém o índice para a primeira dimensão da matriz,
A segunda coluna contém o índice para a segunda dimensão da matriz,
A terceira e outras colunas contêm os próprios valores para a terceira dimensão da matriz.

Esqueça o que você escreveu a seguir. Declare um conjunto de tipos apropriados em nível de variável global arr[][][3] e defina a segunda dimensão por você mesmo.

void AAA()
   {
    int       Handle;                                          // Файловый описатель
    string    File_Name = "AAA.csv";                           // Имя открываемого файла

    string    str_1 = "";                                      //  1 Номер индекса по первому измерению
    string    str_2 = "";                                      //  2 Номер индекса по второму измерению
    string    str_3 = "";                                      //  3 Значение
    string    str_4 = "";                                      //  4 Значение
    string    str_5 = "";                                      //  5 Значение

    Handle=FileOpen(File_Name, FILE_READ, ";");                // Открытие файла
    
    while(FileIsEnding(Handle)==false)                         // До тех пор, пока файловый...
        {                                                      // ...указатель не в конце файла
         // Чтение данных из строки до файлового разделителя
         str_1 = FileReadString(Handle);                       //  1 Номер индекса по первому измерению
         str_2 = FileReadString(Handle);                       //  2 Номер индекса по второму измерению
         str_3 = FileReadString(Handle);                       //  3 Значение
         str_4 = FileReadString(Handle);                       //  4 Значение
         str_5 = FileReadString(Handle);                       //  5 Значение
         
// А здесь заполнение массива
arr[str_1][str_2][0] = str_3;
arr[str_1][str_2][1] = str_3;
arr[str_1][str_2][2] = str_4;

         if(FileIsEnding(Handle)==true)                        // Файловый указатель в конце файла
              break;                                           // Выход из цикла чтения

         ????????????????????????????????????????????????????
        }
    FileClose(Handle);                                         // Закрываем файл
    return;                                                    // Выход из функции
   }

Bem, é assim. E você provavelmente precisará converter os índices de cordas em inteiros.

 
AlexeyVik:

Esqueça o que você escreveu a seguir. Declare uma série de tipos apropriados em nível de variável global arr[][][3] e defina a segunda dimensão por você mesmo.

Bem, é assim. E você provavelmente precisará converter os índices de cordas em inteiros.


MUITO OBRIGADO!!!! Quando o cérebro ferve, a pessoa se torna "cega" e não consegue ver as coisas simples e óbvias. O mais interessante é que você sabe que a solução é simples, "como três kopecks", mas, infelizmente, é um borrão na frente de seus olhos.
Mais uma vez obrigado !!!!!
 
artmedia70:
Você não precisa dar conselhos estúpidos. Este comando removerá todos os objetos do gráfico ao todo.

Não estou de acordo com você!

Havia uma pergunta:

Como apagar todos os objetos como OBJ_ARROW_RIGHT_PRICE ?

Solução:

ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE); //удалить все объекты типа "Правая ценовая метка" в главном окне графика

Como a solução é estúpida?

 
isn-88:

Não estou de acordo com você!

Havia uma pergunta:

Solução:

E por que a decisão é estúpida?

Pelo fato de que ele removerá TODOS os objetos. Mesmo aqueles que NÃO pertencem ao EA/indicador. E se uma pessoa tiver marcado seu próprio código em um gráfico por um longo tempo? E então, ele correu este código em um indicador de terceiros? Como, e o que ele diria então sobre o autor deste bom código?
 
artmedia70:
Como, e o que ele então diz sobre o autor deste bom código?


As pessoas são gentis. Eles dirão o que pensarem.
 
Vinin:

As pessoas são gentis. Eles dirão o que pensam.
Sim, Vitya... as pessoas são más hoje em dia... É triste.
 
isn-88:

Não estou de acordo com você!

Havia uma pergunta:

Solução:

E por que a solução é estúpida?

Na verdade, tudo começou com comando: ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE) ;

e depois outra variante tentou ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE);

Caro Senhor, leia a ajuda :)

Não entendo porque meu índice com os comandos mencionados funciona corretamente na Alpha-Forex, mas no Saxo Bank os objetos não são mais excluídos.

Depois comecei a experimentar o roteiro e o roteiro parou de apagar objetos em todos os terminais.

 

Saúde a todos!

Tal estranheza do testador é observada.

Após o fechamento das ordens 152, 153, 158 e 159, o lucro não é correto (como se o testador tivesse calculado incorretamente). Os pedidos têm sido "pendurados" por vários meses, como mostra a tabela. Além disso, o sorteio é mostrado na tabela corretamente, mas não é visível na tabela por algum motivo.

O que pode ser ?


EURUSD (Euro vs Dólar americano)

15 Minutos (M15) 2012.01.01 23:00 - 2014.03.07 22:59 (2012.01.01 - 2014.03.08)

















1000.00



Espalhe

Atual (12)

1418.73

Lucro total

2045.28

Perda total

-626.55

3.26

Pagamento previsto

2.41



419.34

Máximo de drawdown

834.91 (58.98%)

Drawdown relativo

58.98% (834.91)


















teste

Hora

Tipo

Ordem

Volume

Preço

S / L

T / P

Lucro

Balanço

372

2012.04.30 11:00

compre

151

0.01

1.32193

0.00000

1.32472


373

2012.05.01 04:45

t/p

151

0.01

1.3247234

0.00000

1.32472

2.75

1402.41

374

2012.05.01 15:00

compre

152

0.01

1.32262

0.00000

1.32713


375

2012.05.02 07:45

t/p

142

0.01

1.31949

0.00000

1.31949

-4.40

1398.00

376

2012.05.02 07:45

t/p

143

0.01

1.31949

0.00000

1.31949

0.95

1398.96

377

2012.05.02 07:45

t/p

149

0.02

1.31949

0.00000

1.31949

12.49

1411.44

378

2012.05.02 08:45

compre

153

0.01

1.31711

0.00000

1.32237


379

2012.05.02 08:45

modificar

152

0.01

1.32262

0.00000

1.32237


380

2012.05.02 15:15

vender

154

0.01

1.31483

0.00000

1.31352


381

2012.05.03 07:00

t/p

154

0.01

1.3135174

0.00000

1.31352

1.18

1412.63

382

2012.05.03 08:45

vender

155

0.01

1.31454

0.00000

1.31425


383

2012.05.03 09:00

t/p

155

0.01

1.3142483

0.00000

1.31425

0.29

1412.92

384

2012.05.03 13:45

vender

156

0.01

1.31671

0.00000

1.31256


385

2012.05.04 10:45

t/p

156

0.01

1.3125581

0.00000

1.31256

4.11

1417.02

386

2012.05.04 14:15

vender

157

0.01

1.31527

0.00000

1.31293


387

2012.05.04 14:45

t/p

157

0.01

1.3129331

0.00000

1.31293

2.34

1419.36

388

2012.05.04 16:15

compre

158

0.02

1.30997

0.00000

1.31742


389

2012.05.04 16:15

modificar

152

0.01

1.32262

0.00000

1.31742


390

2012.05.04 16:15

modificar

153

0.01

1.31711

0.00000

1.31742


391

2012.05.06 23:15

compre

159

0.04

1.29845

0.00000

1.30918


392

2012.05.06 23:15

modificar

152

0.01

1.32262

0.00000

1.30918


393

2012.05.06 23:15

modificar

153

0.01

1.31711

0.00000

1.30918


394

2012.05.06 23:15

modificar

158

0.02

1.30997

0.00000

1.30918


395

2012.09.14 10:45

t/p

152

0.01

1.30918

0.00000

1.30918

-18.67

1400.70

396

2012.09.14 10:45

t/p

153

0.01

1.30918

0.00000

1.30918

-13.12

1387.58

397

2012.09.14 10:45

t/p

158

0.02

1.30918

0.00000

1.30918

-11.65

1375.93

398

2012.09.14 10:45

t/p

159

0.04

1.30918

0.00000

1.30918

22.77

1398.70

 
VoDyaMon:

Na verdade, tudo começou com comando: ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE) ;

e depois tentei outra variante: ObjectsDeleteAll(OBJ_ARROW_RIGHT_PRICE);

Caro Senhor, leia a ajuda :)

Não entendo porque meu índice com os comandos mencionados funciona corretamente na Alpha-Forex, mas no Saxo Bank os objetos não são mais apagados.

Depois comecei a experimentar o roteiro e o roteiro parou de apagar objetos em todos os terminais.

A primeira vista na janela principal do gráfico, a segunda ao todo. Conclusão - 1) Use o índice da janela para reduzir o número de objetos pelos quais a função passa para encontrar os que devem ser excluídos. 2) Se você apagar pelo nome (parte do nome, porque um programa mql geralmente nomeia objetos com algum prefixo pessoal), então use o laço de busca do último objeto (mais antigo por ocasião da criação).

Embora haja realmente um problema com a eliminação de objetos, se houver um grande número deles e ele passar de 0 para ObjectTotal()-1, então alguns dos objetos não são eliminados. Pergunta aos desenvolvedores, talvez não haja memória tampão suficiente alocada.

Exemplo:

void DeleteObjects(int chartID, string prefix_obj_name) {
   string obj_nm="";
   int obj=ObjectsTotal();
 //  for(int k=0; k<obj; k++){  // неправильный вариант
   for(int k=obj-1; k>=0; k--){
      obj_nm = ObjectName(k);
      if(StringFind(obj_nm,prefix_obj_name)>=0) 
      { 
         ResetLastError();
         if(!ObjectDelete(chartID,obj_nm))
         {
            Print(__FUNCTION__,
            ": не удалось удалить объект ",obj_nm," Код ошибки = ",GetLastError());
         }
      }
   }
}
// prefix_obj_name = "Obj_MQLname_";   Имена объектов создаваемых программой "Obj_MQLname_Close_"+DoubleToStr(Close[0],Digits), "Obj_MQLname_Open_"+DoubleToStr(Open[0],Digits)   и т.д. 
 
Você pode me dizer se o Win 8 é compatível com o MT 4 e MT 5? Estou perguntando porque tenho um Mac e estou me perguntando com qual SO comprar um PC. Uma pessoa até me mostrou uma captura de tela do MT 4 rodando no 8. Mas como alguns camaradas afirmam que não há compatibilidade total, tenho que esclarecer... Obrigado.