então as corujas não estarão atingindo o servidor.
Makar, muito obrigado por indicar que verificações precisam ser feitas para evitar angustiar o servidor e proibir o EAJ.
Verificações feitas desta forma
mod nível de parada para parada
//ПРОВЕРКА НА МОДЕ СТОП ЛЕВЕЛ- МИНИМАЛЬНЫЙ УРОВЕНЬ СТОПА if(sl<MarketInfo(Symbol(),MODE_STOPLEVEL)) // ЕСЛИ СТОПОЛС МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
{
sl= MarketInfo(Symbol(),MODE_STOPLEVEL);//СТОП ЛОССУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
}
mod stop nível para lucro
// ПРОВЕРКА ТЕЙК ПРОФИТА НА МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ УСТАНОВКИif(tp<MarketInfo(Symbol(),MODE_STOPLEVEL)) // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
{
tp= MarketInfo(Symbol(),MODE_STOPLEVEL);// ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
}
//---- ПРОВЕРКА НА РАЗРЕШЕНИЕ ТОРГОВ ПЕРЕД ОТКРЫТИЕМ ОРДЕРОВif(MarketInfo(Symbol(),MODE_TRADEALLOWED)==true)
{// начало есл торговля разрешена/*
куча проверок на условия открытия и само открытие ордеров
*/
} // КОЕНЦ ПРОВЕРКИ НА РАЗРЕШЕНИЕ ТОРГОВЛИelse//ИНАЧЕ ЕСЛИ ТОРГОВЛЯ НЕ РАЗРЕШЕНА
{ // НАЧАЛО ЭЛС ЕСЛИ ТОРГИ НЕ РАЗРЕШЕНЫ Print("ТОРГИ НЕ РАЗРЕШЕНЫ- ПЫТАТЬСЯ ОТКРЫТЬ ОРДЕРА НЕ БУДЕМ");
} // КОЕНЦ ЭЛС ЕСЛИ ТОРГИ НЕ РАЗРЕШЕНЫ
Verificação de lote máximo e mínimo
Primeiro obtive valores máximos de lote e mínimos de lote nas variáveis como esta
E então em algum lugar abaixo, enquanto escrevo o Graal, eu verifico
if(lot<Min_Lot) lot=Min_Lot; //ЕСЛИ ЛОТ ПОЛУЧИЛСЯ МЕНЬШЕ ЧЕМ МИНИМАЛЬНЫЙ ЛОТ У БРОКЕРА ТО ЛОТ ПРИСВАЕМАЕМ МИНИМАЛЬНЫЙ ЛОТ У БРОКЕРАif(lot>Max_Lot) lot=Max_Lot; //ЕСЛИ ЛОТ ПОЛУЧИЛСЯ БОЛЬШЕ ЧЕМ МАКСИМАЛЬНЫЙ ЛОТ У БРОКЕРА ТО ОЛТ ПРИСВАЕВАЕМ МАКС ЛОТ У БРОКЕРА
Isto é correto ou estou errado?
Eu não verifiquei a mudança de etapa do lote porque o lote é calculado como uma porcentagem do depósito e aí esse valor é multiplicado por um ponto e normalizado - esse cheque pode ser omitido - certo, ou eu deveria fazê-lo de qualquer forma? Se ainda precisarmos verificar como passar este cheque?
O ponto principal de todas essas verificações é ter sempre o valor correto de parada, lucro e tamanho de lote, para que possamos geralmente começar a abrir pedidos. Se todos esses parâmetros estiverem OK, o Expert Advisor não incomodará o servidor; eu entendo isso corretamente?
Muito obrigado, Makar, por me dizer que cheques fazer para evitar o servidor e proibir o EAJ.
//ПРОВЕРКА НА МОДЕ СТОП ЛЕВЕЛ- МИНИМАЛЬНЫЙ УРОВЕНЬ СТОПА
// ПРОВЕРКА ТЕЙК ПРОФИТА НА МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ УСТАНОВКИ
Pode haver aqui um erro de 130 devido a um deslizamento.
Eu faria isso
//ПРОВЕРКА НА МОДЕ СТОП ЛЕВЕЛ- МИНИМАЛЬНЫЙ УРОВЕНЬ СТОПА if(sl<MarketInfo(Symbol(),MODE_STOPLEVEL)*1.5) // ЕСЛИ СТОПОЛС МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
{
sl= MarketInfo(Symbol(),MODE_STOPLEVEL)*1.5;//СТОП ЛОССУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
}
// ПРОВЕРКА ТЕЙК ПРОФИТА НА МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ УСТАНОВКИif(tp<MarketInfo(Symbol(),MODE_STOPLEVEL)*1.5) // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
{
tp= MarketInfo(Symbol(),MODE_STOPLEVEL)*1.5;// ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
}
Olá a todos, alguém teve algum problema com pontos pendurados no gráfico encontrado através do iHighest/iLowest?
Pré-história: Tenho experiência mínima de programação, estou escrevendo um indicador em mql4 que deve mostrar os pontos no gráfico, encontrados pelas condições de se e conectá-los com linhas. Logicamente, procura os pontos corretamente, mas os desenha com um offset, depois para 2 barras, depois para 3 barras. Como posso combater isto? Também anexei o arquivo com o código.
int start()
{
int counted_bars=IndicatorCounted(); //хранит количество посчитанных индикатором баров. Функция IndicatorCounted() возвращает количество неизмененных баров после прошлого вызова функции start().int n,limit;
int val_index;
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars; //количество последних баров, которые нужно пересчитать.if(limit>barsToProcess)
limit=barsToProcess;
for(n=0; n<=limit; n++)
{
if((Close[n+1]>Open[n+1] && Open[n+2]>=Close[n+2]) || (Close[n+1]>Open[n+1] && Open[n+3]>Close[n+3]))
{
val_index=iLowest(NULL,0,MODE_LOW,3,n+1);
myAZBuffer[n]=Low[val_index];
ExtLowBuffer[n]=Low[val_index];
}
elseif((Open[n+1]>Close[n+1] && Close[n+2]>=Open[n+2]) || (Close[n+1]<Open[n+1] && Close[n+3]>Open[n+3]))
{
val_index=iHighest(NULL,0,MODE_HIGH,3,n+1);
myAZBuffer[n]=High[val_index];
ExtHighBuffer[n]=High[val_index];
}
}
return (0);
}
Olá a todos, alguém teve algum problema com pontos pendurados no gráfico encontrado através do iHighest/iLowest?
Pré-história: Tenho experiência mínima de programação, estou escrevendo um indicador em mql4 que deve mostrar os pontos no gráfico, encontrados pelas condições de se e conectá-los com linhas. Logicamente, procura os pontos corretamente, mas os desenha com um offset, depois para 2 barras, depois para 3 barras. Anexei também o arquivo com o código.
Os pontos são desenhados corretamente, sem compensação.
Se a condição for cumprida e iHighest/iLowest forem maiores ou menores que o atual High/Low
os pontos são desenhados corretamente, sem compensação
se a condição for atendida e iHighest/iLowest for maior ou menor do que a atual High / Low
então desenha
Então, acho que estou começando a perceber meu erro) Então, para exibir visualmente esses pontos no lugar certo, preciso entrar em um contador separado em vez de n para myAZBuffer[n], ExtLowBuffer[n], ExtHighBuffer[n] ? mas como fazer isso
azolotta: Então, eu acho que estou começando a perceber meu erro) Acontece que para exibir visualmente estes pontos no lugar certo, eu preciso entrar em algum contador separado em vez de n para myAZBuffer[n], ExtLowBuffer[n], ExtHighBuffer[n] ? mas como fazer isso
não, você entendeu corretamente.
a condição usa duas ou três barras da história,
é por isso que ele desenha após 2-3 barras quando a condição é preenchida
é por isso que ele desenha após 2-3 barras quando a condição é preenchida
OK, então como eu retrabalho o código se eu precisar, por exemplo, escolher o ponto mais alto das 3 últimas barras (que atendem às condições do if) e colocar um ponto sobre ele (bem neste ponto alto!), então também encontrar o ponto baixo.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
MakarFX , qual é a função a que se vincula: qual é a sua função?
input int BarTrade = 5; // Entendo que este é o número dos períodos rastreados de 5.
int TimeBarTrade=BarTrade*Periodo()*60; // como posso entender? Por que é multiplicado por 60?
MakarFX , qual é a função a que se vincula: qual é a sua função?
input int BarTrade = 5; // Entendo que este é o número dos períodos rastreados de 5.
int TimeBarTrade=BarTrade*Periodo()*60; // como entendemos? Por que ele é multiplicado por 60?
BarTrade*Periodo()*60
número de barras * período de tempo atual * 60 segundos
ou seja, quantidade de barras convertida em segundos
BarTrade*Periodo()*60
número de barras * período de tempo atual * 60 segundos
ou seja, número de barras convertido em segundos
Você pode fazer desta maneira.
Se você excluir erros relacionados a
MODE_STOPLEVEL, MODE_TRADEALLOWED, MODE_MINLOT, MODE_LOTSTEP, MODE_MAXLOT
então as corujas não estarão atingindo o servidor.
Makar, muito obrigado por indicar que verificações precisam ser feitas para evitar angustiar o servidor e proibir o EAJ.
Verificações feitas desta forma
mod nível de parada para parada
mod stop nível para lucro
Verificar a autorização de comércio
Verificação de lote máximo e mínimo
Primeiro obtive valores máximos de lote e mínimos de lote nas variáveis como esta
E então em algum lugar abaixo, enquanto escrevo o Graal, eu verifico
Isto é correto ou estou errado?
Eu não verifiquei a mudança de etapa do lote porque o lote é calculado como uma porcentagem do depósito e aí esse valor é multiplicado por um ponto e normalizado - esse cheque pode ser omitido - certo, ou eu deveria fazê-lo de qualquer forma? Se ainda precisarmos verificar como passar este cheque?
O ponto principal de todas essas verificações é ter sempre o valor correto de parada, lucro e tamanho de lote, para que possamos geralmente começar a abrir pedidos. Se todos esses parâmetros estiverem OK, o Expert Advisor não incomodará o servidor; eu entendo isso corretamente?
Muito obrigado, Makar, por me dizer que cheques fazer para evitar o servidor e proibir o EAJ.
//ПРОВЕРКА НА МОДЕ СТОП ЛЕВЕЛ- МИНИМАЛЬНЫЙ УРОВЕНЬ СТОПА// ПРОВЕРКА ТЕЙК ПРОФИТА НА МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ УСТАНОВКИPode haver aqui um erro de 130 devido a um deslizamento.
Eu faria isso
Olá a todos, alguém teve algum problema com pontos pendurados no gráfico encontrado através do iHighest/iLowest?
Pré-história: Tenho experiência mínima de programação, estou escrevendo um indicador em mql4 que deve mostrar os pontos no gráfico, encontrados pelas condições de se e conectá-los com linhas. Logicamente, procura os pontos corretamente, mas os desenha com um offset, depois para 2 barras, depois para 3 barras. Como posso combater isto? Também anexei o arquivo com o código.
Olá a todos, alguém teve algum problema com pontos pendurados no gráfico encontrado através do iHighest/iLowest?
Pré-história: Tenho experiência mínima de programação, estou escrevendo um indicador em mql4 que deve mostrar os pontos no gráfico, encontrados pelas condições de se e conectá-los com linhas. Logicamente, procura os pontos corretamente, mas os desenha com um offset, depois para 2 barras, depois para 3 barras. Anexei também o arquivo com o código.
Os pontos são desenhados corretamente, sem compensação.
Se a condição for cumprida e iHighest/iLowest forem maiores ou menores que o atual High/Low
desenha
os pontos são desenhados corretamente, sem compensação
se a condição for atendida e iHighest/iLowest for maior ou menor do que a atual High / Low
então desenha
Então, eu acho que estou começando a perceber meu erro) Acontece que para exibir visualmente estes pontos no lugar certo, eu preciso entrar em algum contador separado em vez de n para myAZBuffer[n], ExtLowBuffer[n], ExtHighBuffer[n] ? mas como fazer isso
não, você entendeu corretamente.
a condição usa duas ou três barras da história,
é por isso que ele desenha após 2-3 barras quando a condição é preenchida
não, você entendeu corretamente.
a condição usa duas ou três barras da história,
é por isso que ele desenha após 2-3 barras quando a condição é preenchida