Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 200

 
STARIJ:

Artem, ou é um corrico discreto ou você não sabe sobre o que está escrevendo!!!

Em seu último post você falou sobre a classificação. Explicou a você que não há dependência de classificação.

Eu vi e PARTICIPei em uma das discussões sobre seleção de pedidos por tempo. A conclusão foi que os pedidos agora são colocados no banco de dados de pedidos de acordo com o horário em que foram enviados ao servidor. Mas TEORETALMENTE há um medo de que os desenvolvedores possam mudar isso. Esse foi o fim dessa discussão. Como especialista em banco de dados, asseguro que este medo é infundado, uma mudança está fora de questão. Você pode encaminhar a questão para os desenvolvedores. Se eu escrever algo, eu sei o que escrevo. É o 50º aniversário da programação. Se você notar em minhas mensagens alguma confusão de seu ponto de vista - escreva-me pessoalmente. Explicarei, e suas dúvidas serão dissipadas. Mas aqui é improvável que as brigas sejam apropriadas. Escrevi ao homem um roteiro - ele disse obrigado. Não é bom?

Foio que pensaram todas aquelas pessoas que de repente se viram dependentes da triagem. A lógica das pessoas entrou em colapso. Em seguida, a dependência da triagem desapareceu novamente. Mas já o fez. Se você quiser depender não de seu programa, mas de uma hipotética triagem invariante, você tem o direito, mas na linha de ajuda para iniciantes você não tem esse direito - de dar um roteiro e não mencionar o fato de que ele pode falhar um dia. Procure por tais discussões no mql4.com - cerca de 6 - 7 anos atrás.

Foio que eu mencionei - a pessoa estava falando de perda, não de perda.

Obrigado ele disse - educado, mas ele não sabe se é certo ou errado ;)

 
Artyom Trishkin:

Foio que eu mencionei - o homem estava falando de perda, não de perda.

Ele disse obrigado - é educado, mas ele não sabe se é certo ou errado ;)

Veja cuidadosamente o que o homem escreveu.

X = OrderProfit( );        // запомнить величину тейкпрофита

if (OrderSelect (Ht-1,SELECT_BY_POS, MODE_HISTORY))     // если ПОСЛЕДНИЙ ордер                  
if ( OrderType ()==OP_SELL)  // СЕЛ

if(X < 0)                 // и если этот сел закрылся по стопу 

Segue-se que ele estava se referindo à perda de ordens. É assim que ele entende a perda de carga. Ele não tem a palavrastoploss.

Também queria escrever que as paradas são um nome generalizado para StopLoss e TakeProfit. Para ver isso, digite 130 no MetaEditor e pressione F1

Pára. Plural.

Estou trabalhando aqui, você está me distraindo.

É melhor dizer datatime --> TimeToStruct -->MqlDateTime Como converter para datatime agora ???

 
STARIJ:

Veja cuidadosamente o que o homem escreveu

Segue-se que ele estava se referindo à perda de ordens. É assim que ele entende parar. Ele não tem a palavrastoploss.

Também queria dizer-lhe que as paradas são generalizadas StopLoss e TakeProfit. Para ver isso, digite 130 no MetaEditor e pressione F1

Pára. Plural.

Estou trabalhando aqui, você está me distraindo.

Digamos melhor datatime --> TimeToStruct -->MqlDateTime Como converter de volta para datatime ???

if(X < 0)                 // и если этот сел закрылся по стопу 

StructToTime()

 
виталик: Na tabela horária foi traçada uma linha entre o alto e o baixo
//+-------------------------------------------------------+
//| на H1 суточную линию между хая и лоу         PROBA.mq4|
//+-------------------------------------------------------+
#property strict

void OnStart()
{
  // Удалим все объекты
  ObjectsDeleteAll();

  string Символ = "GBPUSD";
  datetime Первый, Последний;
  int Период=PERIOD_H1;

  // Прежде всего узнаем дату и время последнего бара
  Последний = iTime(Символ, Период, 0);
  Alert("Последний бар на часовом  ",Последний);

  // Теперь получить начало суток, обнулив часы
  // Для этого преобразуем время последнего бара в структуру
  MqlDateTime MqlПервый;
  TimeToStruct(Последний,MqlПервый);
  MqlПервый.hour=0;



  // Терерь надо обратно преобразовать во время
  Первый=StructToTime(MqlПервый);
  Alert("Первый бар на часовом  ",Первый); // Смотрим начало первого бара суток

  // По времени определим номер первого бара суток
  int НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);
  Alert("Первый бар на часовом под номером ",НомерПервого);

// Можно было просто узнать время начала бара на D1


  
  // Теперь у нас есть НомерПервого бара, а номер послелнего = 0
  // Найдем на этом интервале номера баров, где макс и мин
  // iHighest и iLowest находят номер бара с макс и мин ценой
  int БарМакс = iHighest(Символ,  // symbol = инструмента
                Период,           // timeframe = Период
                MODE_HIGH,        // Наибольшая цена бара
                НомерПервого+1,   // Количество баров
                0);               // Начальный бар

  int БарМин  = iLowest(Символ,
                Период,
                MODE_LOW,         // Наименьшая цена бара
                НомерПервого+1,
                0);

  Alert("Максимальный бар = ", БарМакс, "  Минимальный бар = ", БарМин);

  // iHigh и iLow дают макс и мин цены указанного бара
  double max_price=iHigh(Символ, Период, БарМакс);
  double min_price=iLow (Символ, Период, БарМин);
  Alert("Максимум цены = ", max_price, "  Минимум цены = ", min_price);

  // Проводим линию
  ObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[БарМакс], max_price, Time[БарМин], min_price);
  ObjectSet("Макс_Мин",OBJPROP_RAY,false);     // Выключить свойство бесконечного луча

  // Теперь хорошо бы узнать угол
  Alert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));
}

// Devolve 0,0 O ângulo deve ser ajustado e depois deve ser obtido.
// Então, conhecendo a diferença de preço e o número de barras entre Max e Min, o ângulo deve ser calculado.
// Acho que poderia ser mais curto...

 
STARIJ:

// Retorna 0,0 O ângulo deve ser ajustado e depois obtido.
// Então, conhecendo a diferença de preço e o número de barras entre Max e Min, o ângulo deve ser calculado
// Acho que poderia ser mais curto...


muito obrigado )
 
Artyom Trishkin:   StructToTime()
Obrigado, eu o encontrei. Acontece que eu já o usei. esperava vê-lo em ajuda por uma das datas TimeToStruct MqlDateTime
 
-Aleks-:

Ugh, não consigo descobrir como adicionar variáveis - ou seja, digamos que tenho 4 variáveis booleanas e preciso passar por elas?

Entendo o ponto - o restante deve ser menor ou maior que zero após a divisão - mas não consigo descobrir como fazer isso :(


Para os booleanos, a abordagem é ligeiramente diferente

//+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N=15;  //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int n=0;n<N;n++)
     {
      int tmp=n;
      bool a= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool b= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool c= (bool) MathMod(tmp,2);
      tmp=tmp/2;
      bool d= tmp;

      Print("N=",n,"; A=",a,"; B=",b,"; C=",c,"; D=",d);
     }

  }

Codificação binária.

Neste caso, o máximo N é inferior a 16.

Eu não consigo entender o que você quer obter

 
Victor Nikolaev:


Para os booleanos, a abordagem é ligeiramente diferente

codificação binária.

O N máximo, neste caso, é inferior a 16

Eu não consigo entender o que você está tentando conseguir.

Você é um gênio! Obrigado!

Eu tenho 16 opções.

2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=15; A=verdadeiro; B=verdadeiro; C=verdadeiro; D=verdadeiro
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=13; A=verdadeiro; B=falso; C=verdadeiro; D=verdadeiro
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=9; A=verdadeiro; B=falso; C=falso; D=verdadeiro
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=1; A=verdadeiro; B=falso; C=falso; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=5; A=verdadeiro; B=falso; C=verdadeiro; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=3; A=verdadeiro; B=verdadeiro; C=falso; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=11; A=verdadeiro; B=verdadeiro; C=falso; D=verdadeiro
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=7; A=verdadeiro; B=verdadeiro; C=verdadeiro; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=14; A=falso; B=verdadeiro; C=verdadeiro; D=verdadeiro
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=6; A=falso; B=verdadeiro; C=verdadeiro; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=10; A=falso; B=verdadeiro; C=falso; D=verdadeiro
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=2; A=falso; B=verdadeiro; C=falso; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=12; A=falso; B=falso; C=verdadeiro; D=verdadeiro
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=4; A=falso; B=falso; C=verdadeiro; D=falso
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=8; A=falso; B=falso; C=falso; D=verdadeiro
2017.05.14 20:47:54.697 Brut AUDUSD,H1: N=0; A=falso; B=falso; C=falso; D=falso

Para que quero usá-lo - tenho uma série de filtros e opções de gerenciamento de posição em minha EA - quero combiná-los, inclusive fazendo mini-conjuntos (combinações pré-fabricadas) - como resultado, obterei dados para análise, sem ser tendencioso em relação à amostra, o que, espero, expandirá os horizontes de percepção da influência das configurações sobre o resultado. O resultado será uma série de resultados que analisarei em detalhes. E, há outra razão, tenho uma classe para coleta de estatísticas que guarda um número limitado de variáveis em um arquivo, o que impede uma análise detalhada.
 
виталик:

muito obrigado )

STARIJ:

// Retorna 0,0 O ângulo deve ser ajustado e depois obtido.
// Então, conhecendo a diferença de preço e o número de barras entre Max e Min, o ângulo deve ser calculado
// Acho que poderia ser mais curto...


Acho que preciso olhar para o gráfico como um indicador, preciso de uma maneira diferente de olhar os indicadores, por favor me diga se o indicador está certo ou não.

#property indicator_chart_window
extern int boom = 1;
//=================================
void fishka(int ma,int mi,double map,double mip) // ф-ция
{
   ObjectCreate("Макс_Мин",OBJ_TRENDBYANGLE,0, Time[ma], map, Time[mi], mip);// Проводим линию
   ObjectSet("Макс_Мин",OBJPROP_RAY,false);     // Выключить свойство бесконечного луча
}

int deinit()
  {

 ObjectsDeleteAll();// Удалим все объекты
  return(0);
  }

void start()
{  
  string Символ = "GBPUSD";
  datetime Первый, Последний;
  int Период=PERIOD_H1;

  Последний = iTime(Символ, Период, 0);// Прежде всего узнаем дату и время последнего бара
 
if(boom){
   Alert("Последний бар на часовом  ",Последний);}
 
  
  MqlDateTime MqlПервый;              // Теперь получить начало суток, обнулив часы
  TimeToStruct(Последний,MqlПервый);  // Для этого преобразуем время последнего бара в структуру
  MqlПервый.hour=0;

  
  Первый=StructToTime(MqlПервый);            // Терерь надо обратно преобразовать во время
if(boom){
  Alert("Первый бар на часовом  ",Первый);}  // Смотрим начало первого бара суток
  
  int НомерПервого=iBarShift(Символ, PERIOD_H1,Первый);// По времени определим номер первого бара суток
if(boom){
   Alert("Первый бар на часовом под номером ",НомерПервого);}

// Можно было просто узнать время начала бара на D1

  // Теперь у нас есть НомерПервого бара, а номер послелнего = 0
  // Найдем на этом интервале номера баров, где макс и мин
  // iHighest и iLowest находят номер бара с макс и мин ценой
 int  БарМакс = iHighest(Символ,  // symbol = инструмента
                Период,           // timeframe = Период
                MODE_HIGH,        // Наибольшая цена бара
                НомерПервого+1,   // Количество баров
                0);               // Начальный бар

int  БарМин  = iLowest(Символ,Период,MODE_LOW,НомерПервого+1,0); // Наименьшая цена бара
                               
if(boom){
  Alert("Максимальный бар = ", БарМакс, "  Минимальный бар = ", БарМин);}
                                                                           

 
double max_price=iHigh(Символ, Период, БарМакс); // iHigh и iLow дают макс и мин цены указанного бара
double min_price=iLow (Символ, Период, БарМин);
   
    fishka(БарМакс,БарМин,max_price,min_price); // ф-ция
 if(boom){
   Alert("Максимум цены = ", max_price, "  Минимум цены = ", min_price);
 
   Alert("Угол = ", ObjectGetDouble(0,"Макс_Мин",OBJPROP_ANGLE));} // Теперь хорошо бы узнать угол               
}
 
STARIJ:

Se às 4 da manhã - ainda não há muitos bares por hoje. No H4 há apenas 6 barras em um dia. você tem que definir o número de barras a serem procuradas ou o número de travessias.

Longas distâncias = tendência

Tentei executá-lo como um roteiro, ele funciona, mas se eu compilá-lo como um EA, todas as linhas estão próximas umas das outras e eu não entendo qual é o problema.
Razão: