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

 

Hmm... Eu não havia pensado em mudar as coordenadas. Obrigado pela dica.

Então aqui vai uma pergunta. Há uma condição de ponto de entrada. Eu a implementei através de variáveis estáticas, para que ela não seja zerada a cada tick. Bem, em alguns lugares do gráfico o robô desenha um ponto de entrada onde não há níveis horizontais e, portanto, sua interseção com MA. Por favor, execute o código em seu testador e você verá o problema. Em EURUSD. Talvez este problema precise ser implementado de uma maneira diferente? Não sou um profissional em programação.

Ou seja, o padrão apareceu, níveis foram desenhados e o robô espera por três cruzes de um dos níveis.

O que você pensa sobre isso?

 
voron_026:

Hmm... Eu não havia pensado em mudar as coordenadas. Obrigado pela dica.

Então aqui vai uma pergunta. Há uma condição de ponto de entrada. Eu a implementei através de variáveis estáticas, para que ela não seja zerada a cada tick. Bem, em alguns lugares do gráfico o robô desenha um ponto de entrada onde não há níveis horizontais e, portanto, sua interseção com MA. Por favor, execute o código em seu testador e você verá o problema. Em EURUSD. Talvez este problema precise ser implementado de uma maneira diferente? Não sou um profissional em programação.

Ou seja, o padrão apareceu, níveis foram desenhados e o robô espera por três cruzes de um dos níveis.

O que você pensa sobre isso?

Quem precisa disso, se não se importa que eu diga? Veja de onde o robô obtém os valores e você encontrará outra solução para o problema.

 

Help Two está dando erros! Destaquei os erros em vermelho, ajude a PLZ!



//+------------------------------------------------------------------+

//| Trailing Stop by Asyll.mq4 |

//| Copyright 2017, MetaQuotes Software Corp. |

//| https://www.mql5.com |

//+------------------------------------------------------------------+

#propriedade copyright "Alibek Asyll"

#link da propriedade "https://www.mql4you.com"


externo int TralType = 0; // 0-Sar, 1-ATR, 2-HMA.

duplo SAR_Step externo = 0,02;

duplo SAR_Max externo = 0,2;

período ATR_Periodo externo int = 14;

duplo externo ATR_K = 2,0;

MMA_Periodo externo interno = 16;

método MMA_Int externo = 3;

MMA_Shift externo interno = 0;

data/hora LBT;

//+------------------------------------------------------------------+

//| Função de inicialização do especialista |

//+------------------------------------------------------------------+

int init()

{

//---

//---

retorno(0);

}

//+------------------------------------------------------------------+

//| Função de desinicialização especializada |

//+------------------------------------------------------------------+

int deinit()

{

//---

retorno(0);

}

//+------------------------------------------------------------------+

//| função tick expert |

//+------------------------------------------------------------------+

int start()


{

erro de bool = falso;

se (LBT!=Time[0] {

se (OrderTotal()>0) {

para (int i=o; i<OrdersTotal(); i++) {

se (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2) {

duplo SL = OrderStopLoss();

se (OrderType()==0) {

interruptor (TralType) {

caso 0: SL = iSAR(NULL,0,SAR_Step, SAR_Max,0);

pausa;

caso 1: SL = Alto[1] - iATR(NULL,0,ATR_Periodo,1)*ATR_K;

pausa;

caso 2: SL = iCustom(NULL,0, "VininI_HMA_sound&amp",HMA_Period, HMA_Method, 3, HMA_Shift,false,false,",1,0,0)

pausa;

}

se (SL<OrderStopLoss())

SL = OrderStopLoss();

}

se (OrderType()==1){

interruptor (TralType){

caso 0: SL = iSAR(NUll,0,SAR_Step, SAR_Max,0);

pausa;

caso 1: SL = Baixa[1] + iATR(NULL,0,ATR_Periodo,1)*ATR_K;

pausa;

caso 2: SL = iCustom(NULL,0, "VininI_HMA_sound&amp",HMA_Period, HMA_Method, 2, HMA_Shift,false,false,",1,0,0)

pausa;

}

se (SL>OrderStopLoss())

SL = OrderStopLoss();

}

se (SL!=OrderStopLoss()) {

se (!OrderModify(OrderTicket(),OrderOpenPrice(),OrderTakeProfit(),0))

erro = verdadeiro;

}

}

se (!erro)

LBT = Tempo[0];

}


retorno();

}

//+-------------------------------------------------------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
Выберите подходящую торговую стратегию и оформите подписку на нее в пару кликов. Все Сигналы сопровождаются подробной статистикой и графиками. Станьте Поставщиком торговых сигналов и продавайте подписку тысячам трейдеров по всему миру. Наш сервис позволит вам хорошо зарабатывать на прибыльной стратегии даже при небольшом стартовом капитале...
 
Asyll: Ajude dois a dar erros! Erros destacados em vermelho, ajude a PLZ!

Faz sentido usar o botão SRC para inserir o código. Relatar o texto dos erros. Remova o texto para acelerar o especialista:

//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int init()

  {

//---

   

//---

   return(0);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

int deinit()

  {

//---

   return(0);

  }

Leva tempo para chamar estas funções - e elas estão vazias. E seria mais fácil trabalhar com textos de programas sem eles. Conte os parênteses encaracolados. Para facilitar, experimente o Styler no menu Ferramentas. Descarte as linhas vazias.

Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
  • www.metatrader5.com
Данная функция предназначена для оформления исходного кода в соответствии с рекомендуемым стандартом. Это позволяет сделать код более читаемым, выглядящем профессионально. Грамотно оформленный код гораздо проще анализировать в последующем как его автору, так и другим пользователям. Для того чтобы запустить стилизатор, необходимо выполнить...
 

Bom dia a todos.

Tenho uma idéia simples de que estou tentando codificar e testar em um testador MT-4

Ordens em aberto quando as seguintes condições estão presentes ao mesmo tempo

1. Na abertura de uma vela de um minuto

2 Ao preço que eu quero

3. na data desejada

4.O valor do preço deve coincidir estritamente com o valor do dia.

Por exemplo, o 27º dia foi um castiçal de um minuto com o preço de abertura 1,2414

Preciso abrir um pedido 1) no castiçal aberto 2) em 1.2414 3) mas no dia seguinte que se segue ao 27º dia

Por exemplo, no dia 28 tínhamos um castiçal de 1 minuto aberto a 1,2438.

Preciso abrir um pedido 1) no castiçal aberto 2) em 1.2438 3) MAS NO PRÓXIMO DIA DEPOIS DO 28

Por exemplo, no dia 12 houve um castiçal de 1 minuto aberto em 1.2451

Preciso abrir um pedido 1) no castiçal aberto 2) em 1.2451 3) MAS NO PRÓXIMO DIA DEPOIS DO 12


Para a realização desta idéia, comecei a estudar um tema de matrizes e criei duas matrizes unidimensionais, mas não funciona.

Eu lhe ficaria muito grato se você pudesse consertar meu código para implementar a idéia acima

Sou lento na assimilação, portanto ficarei muito grato se você puder escrever o código certo, em vez de explicá-lo em palavras.

Desta forma, vou entender muito mais rápido.

Aqui está meu código.

double mass[3]=
{
1.2414,
1.2438,
1.2451
};
int mass1[3]=
{
27,
28,
12
};
double value = NormalizeDouble( Bid,4) ;
double S = ArrayBsearch(mass,  value,  WHOLE_ARRAY,  0, MODE_ASCEND);
int value1 = Day() ;
int S1 = ArrayBsearch(mass1,  value1, WHOLE_ARRAY,  0, MODE_ASCEND);

if(Bid  == iOpen(NULL,PERIOD_M1,0))
if(Day()!= S1)
if(NormalizeDouble ( Bid,4)== S)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
}
 

Olá! Este código se destina a mover os níveis de sinal quando o preço se move além do nível superior ou inferior, mas isso não acontece. Por favor, diga-me qual é o erro.

/-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------
if(Bid>=priceA){                                                                                   //если цена вышла за верхнею границу, то переместить сердцевину в новое положение
 ObjectsDeleteAll();
 OR=0;                                                                                             //переменная ордера обнуляется для поиска ситуации открытия новых ордеров
 }                                                                                                 
if(Bid<=priceB){                                                                                   //если цена вышла за нижнею границу, то переместить сердцевину в новое положение
 ObjectsDeleteAll();
 OR=0;                                                                                             //переменная ордера обнуляется для поиска ситуации открытия новых ордеров
 } 
 //----------------------------------------------------------------------------------------------------------------------------------------------------------------
 price=iHigh(Symbol(),PERIOD_M15,0);                                                               //Сигнальный уровень О(Сердцевина)
ObjectCreate("UrO",OBJ_HLINE,0,0,price);
ObjectSet("UrO",OBJPROP_COLOR,clrYellowGreen);                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+30*Point;                                                                            //Сигнальный уровень А(Максимум)
ObjectCreate("UrA",OBJ_HLINE,0,0,priceA);
ObjectSet("UrA",OBJPROP_COLOR,clrDarkSlateBlue); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price-30*Point;                                                                            //Сигнальный уровень B(Минимум)
ObjectCreate("UrB",OBJ_HLINE,0,0,priceB); 
ObjectSet("UrB",OBJPROP_COLOR,clrOrangeRed); 
 
ANDREY: Por exemplo, no dia 27, havia uma vela de um minuto com o preço aberto 1,2414

Eu preciso abrir um pedido 1) na abertura de uma vela 2) em 1.2414 3) MAS NO ÚLTIMO DIA DEPOIS DO 27

Aqui está meu código.

Primeiro, não é razoável normalizar um BID já normalizado, a menos que o instrutor lhe diga para fazer isso.

Em segundo lugar, o que recebemos? No dia 27, o preço apareceu e você inseriu urgentemente os dados na matriz para acioná-la no dia 28? E se, no dia 28, algo urgente acontecer? Você está colocando dados em uma matriz que é difícil de calcular. Seus dados devem ser computáveis. Sugiro a depuração de sua EA em etapas. 1) Determine o preço necessário e exiba-o usando a função Alerta(). Se você tiver certeza de que está correto, calcule e exiba o próximo. e assim por diante até o final. É muito cedo para escrever o código inteiro de antemão, pois ele terá que ser modificado à medida que a depuração avance. O que você acha desta tecnologia, do simples ao complexo?

 
vikzip: O código se destina a mover os níveis de sinal quando o preço se move acima ou abaixo do nível superior ou inferior, mas isso não acontece.

Vamos dar uma olhada no que está escrito aqui. Em primeiro lugar, as linhas devem ser mais curtas. Eles caberão melhor na tela e o compilador funcionará mais rápido.

/-------------------------выход цены за пределы сигнальных уровней-------------------------------------------------
if(Bid>=priceA){                  //если цена вышла за верхнею границу, то переместить сердцевину в новое положение
 ObjectsDeleteAll();
 OR=0;                            //переменная ордера обнуляется для поиска ситуации открытия новых ордеров
 }
if(Bid<=priceB){                  //если цена вышла за нижнею границу, то переместить сердцевину в новое положение
 ObjectsDeleteAll();
 OR=0;                            //переменная ордера обнуляется для поиска ситуации открытия новых ордеров
 } 
 //----------------------------------------------------------------------------------------------------------------
Se o BID for maior, você tem que fazer algo. Então, se o BID for menor, a mesma coisa deve ser feita. Você pode dizer menos: Se o preço é mais ou menos, então ...
Você escreve algo nos comentários sobre mover algo, mas tudo o que você faz é apagar todos os objetos. Suas 10 linhas são substituídas por quatro.
if((Bid>=priceA) ||(Bid<=priceB)){     //если цена вышла за одну из ГРАНИЦ, то удалить все объекты и очистить признак поиска
   ObjectsDeleteAll();
   OR=0;                               // А это для чего?????????????????
} 

Mas !!! O sinal OR deve ser usado em outro lugar, não é mesmo? Parece que em vez de zerar este OR, deveríamos criar novos objetos aqui. Ou ainda mais fácil - em vez de apagar objetos, basta movê-los para um novo local - são apenas 3 linhas de código. Ou o instrutor precisa de mais?

if((Bid>=priceA) ||(Bid<=priceB)){     //если цена вышла за одну из ГРАНИЦ, сдвинуть уровни
  ObjectSet("UrO",OBJPROP_PRICE1,iHigh(Symbol(),PERIOD_M15,0));   // Так что ли???
   Objectsset( аналогично)
   Objectsset(     )
}
Do simples ao falso ou vice-versa?
 
STARIJ:

Primeiro, a normalização de um BID já normalizado não é aconselhável, a menos que o professor lhe diga para

Em segundo lugar, o que temos aqui? No dia 27 ocorre um preço e você insere urgentemente os dados na matriz, para que ela funcione no dia 28? E se houver uma situação urgente no dia 28? Você está colocando dados em uma matriz que é difícil de calcular. Seus dados devem ser computáveis. Sugiro a depuração de sua EA em etapas. 1) Determine o preço necessário e exiba-o usando a função Alerta(). Se você tiver certeza de que está correto, calcule e exiba o próximo. e assim por diante até o final. É muito cedo para escrever o código inteiro de antemão, pois ele terá que ser modificado à medida que a depuração avance. O que você acha desta tecnologia, do simples ao complexo?

Muito obrigado pela dica.

Mas parece-me que em seu raciocínio você está assumindo que estou tentando escrever uma EA VERDADEIRA.

Sinto muito não ter dito que não é o caso.

Tento testar a presença de alguma regularidade, correlação entre os parâmetros acima, ou seja, confirmar ou rejeitar a idéia, que pode ser a base para um TORKING Expert Advisor.

Portanto, eu lhe serei grato se corrigir meu código, para que tudo esteja de acordo com a minha idéia acima.

E seus comentários, naturalmente, serão úteis para mim quando eu estiver escrevendo um consultor comercial especializado.

Obrigado

 
ANDREY:

Muito obrigado pela dica.

Mas, do meu ponto de vista, seu raciocínio baseia-se no fato de que estou tentando escrever uma EA VERDADEIRA.

Sinto muito não ter dito que não é o caso.

Tento testar a presença de alguma regularidade, correlação entre os parâmetros acima, ou seja, confirmar ou rejeitar a idéia, que pode ser a base para um TORKING Expert Advisor.

Portanto, eu lhe serei grato se corrigir meu código, para que tudo esteja de acordo com a minha idéia acima.

Seus comentários, naturalmente, serão úteis para mim quando estiver escrevendo um consultor comercial especializado.

Obrigado

Desculpe pela intrusão. Mas... De que forma a lógica de traçar linhas deve ser diferente para uma EA comercial e não comercial?

Quando você está no trabalho, você olha para o relógio em sua mão de maneira diferente em comparação com a forma como você o vê em casa?

Razão: