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

 
@Vitaly Muzichenko@Iurii Tokman Muito obrigado, pessoal, tudo funcionou! Não sei o que eu faria sem você. Boa sorte no ano.
Vitaly Muzichenko
Vitaly Muzichenko
  • www.mql5.com
Профиль трейдера
 

Bom dia a todos. Tenho um EA que sinaliza quando a linha de tendência e a linha horizontal cruzam uma determinada cor. Decidi refazê-lo de forma a sinalizar quando a linha de tendência e a linha horizontal cruzam um certo estilo. Funcionou. Mas eu preciso dele para sinalizar quando uma linha de tendência cruza apenas a viga à direita. Entendo que tenho de acrescentar

OBJPROP_RAY_RIGHT

mas eu não sei onde ou como. Obrigado de antemão.
Arquivos anexados:
 

Olá a todos J. Eu continuo serrando a máquina Graal. E encontrou uma coisa não tão agradável como o erro 130 ao definir ordens pendentes. Mas o que é interessante é que quando se abre com ordens do mercado tudo está bem. Não há paradas erradas aparecendo.

Mencionarei o fato de que existem duas maneiras de calcular a parada. Você pode usar tanto uma parada fixa em pontos como em pontos de parada.

Se definirmos uma parada fixa ou atp, obtemos erro 130 ao abrir uma ordem Sell Stop pendente, mas a Buy Stop pendente parece abrir normalmente, embora eu não esteja 100% certo. Embora eu verifique e veja que as ordens de parada de compra pendentes são abertas com o erro 130 também. Eu recebo o valor de stop loss desta forma


extern double atr_sl_period= 14; // ПЕРИОД АТR СТОП ЛОССА

extern   ENUM_TIMEFRAMES   PeriodForWork_sl        =  PERIOD_H4;           // ТФ SL  ПО АТР

void OnTick()
  {
double sl; // стоп лосс ордеров
if(tip_sl==en_po_atr)
     { //ЕСЛИ ТИП СТОП ЛОССА СТОИТ ПО АТР ТО ВЫСЧИТЫВАЕМ ЕГО ИЗ АТР
     //Print("СТОП ПО АТР, ЕГО РАЗМЕР ");
     sl= iATR( NULL,PeriodForWork_sl,atr_sl_period,1);// ПОЛУЧЕНИЕ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      //Print("СТОП ПО АТР, ЕГО РАЗМЕР "+sl);
     }
     else //ИНАЧЕ- ТО ЕСТЬ ЕСЛИ СТОП ЛОСС ФИКСИРОВАННЫЙ В ПУНКТАХ
     {
     //Print("СТОП ЛОС ФИКСИРОВАННЫЙ В ПУНКТАХ");
     sl= razmer_fikc_sl*Point; // ПЕЕРМЕННОЙ СТОП ЛОССА ПРИСВАЕВАЕМ ФИКСИРОВАНОНЕ ЗНАЧЕНИЕ ПУНКТОВ И ДОМНОЖАЕМ НА ПОИНТ
     }


   
  }

Tudo é normal na abertura utilizando ordens do mercado. Eu abro ordens pendentes como esta

OrderSend(Symbol(),OP_SELLSTOP,lot,min_Price,slippages,min_Price+sl , min_Price-tp ,comment_ao_otloj_sell); // ОТКРКЫВВАЕМ ОТЛОЖЕННЫЙ СЕЛ ОРДЕР

OrderSend(Symbol(),OP_BUYSTOP,lot,max_Price,slippages,max_Price-sl,max_Price+tp ,comment_ao_otloj_buy,magik_number,TimeCurrent()+order_life_time); // ОТКРЫВАЕМ ОТЛОЖЕННЫЙ БАЙ ОРДЕР

Por favor, diga-me o que estou fazendo de errado e como devo consertá-lo?

Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
DanilaMactep:

Olá a todos J. Eu continuo serrando a máquina Graal. E encontrou uma coisa não tão agradável como o erro 130 ao definir ordens pendentes. Mas o que é interessante é que quando se abre com ordens do mercado tudo está bem. Não há paradas erradas aparecendo.

Mencionarei o fato de que existem duas maneiras de calcular a parada. Você pode usar tanto uma parada fixa em pontos como em pontos de parada.

Se definirmos uma parada fixa ou atp, obtemos erro 130 ao abrir uma ordem Sell Stop pendente, mas a Buy Stop pendente parece abrir normalmente, embora eu não esteja 100% certo. Embora eu verifique e veja que as ordens de parada de compra pendentes são abertas com o erro 130 também. Eu recebo o valor de stop loss desta forma


Tudo é normal na abertura utilizando ordens do mercado. Eu abro ordens pendentes como esta

Por favor, diga-me o que estou fazendo de errado e como devo consertá-lo?

sem normalização de preços
sem contabilização de stop loss accounting

 

DanilaMactep: Получаю значение стоп лосса во таким макаром

Makar, por favor, não lhe toque).

DanilaMactep:

Você pode me dizer o que estou fazendo de errado e como consertá-lo?

Tente aumentar a parada fixa e se o erro para uma parada fixa desaparecer, o problema está em MODE_STOPLEVEL

TakeProfit também deve ser verificado

 
DanilaMactep:

Olá a todos J. Eu continuo serrando a máquina Graal. E encontrou uma coisa não tão agradável como o erro 130 ao definir ordens pendentes. Mas o que é interessante é que quando se abre com ordens do mercado tudo está bem. Não há paradas erradas aparecendo.

Mencionarei o fato de que existem duas maneiras de calcular a parada. Você pode usar tanto uma parada fixa em pontos como em pontos de parada.

Se definirmos uma parada fixa ou atp, obtemos erro 130 ao abrir uma ordem Sell Stop pendente, mas a Buy Stop pendente parece abrir normalmente, embora eu não esteja 100% certo. Embora eu verifique e veja que as ordens de parada de compra pendentes são abertas com o erro 130 também. Eu recebo o valor de stop loss desta forma


Tudo é normal na abertura utilizando ordens do mercado. Eu abro ordens pendentes como esta

Por favor, por favor, me diga o que estou fazendo de errado e como devo consertá-lo?

O erro 130 ocorre não somente quando uma parada ou ordem de compra é colocada, mas também quando a ordem pendente é colocada muito perto do preço atual. Não a parada ou tomada dessa ordem, mas o preço de abertura/definição da ordem.

 
        if(CopyTicks(Symbol(),ticks,COPY_TICKS_TRADE,0,1)==1)
            start_time=ulong(ticks[0].time_msc);
  

O que significa o ponto?

 
ascerdfg:

O que significa o ponto?

É aqui que você entra.
 
ascerdfg:

O que significa um ponto?

Estruturas e, classes e interfaces
 
Alexey Viktorov:

O erro 130 ocorre não somente quando uma parada ou tomada é definida, mas também quando uma ordem pendente é definida muito próxima do preço atual. Não a parada ou tomada desta ordem, mas o preço de abertura/definição da ordem.

AO ESTABELECER UMA ORDEM PENDENTE, CALCULO O PREÇO DA SEGUINTE FORMA (EU NÃO INTERFIRO COM VOCÊ, VOCÊ NÃO É PELO MENOS MEU TIPO PARA INTERFERIR;-)

                    int min_bars= iLowest(NULL, // ТЕКУЩИЙ СИМВОЛ
          double min_Price=iHigh(Symbol(),// СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-)
          PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МИНИМУМА
          min_bars//  НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;)
        
          
          ); 

COMO POSSO VERIFICAR SE O VALOR OBTIDO ESTÁ DENTRO DA FAIXA PERMITIDA? NÃO ENTENDO O QUE DEVO FAZER, E COMO POSSO GARANTIR QUE SE O VALOR CALCULADO FOR MENOR QUE O PERMITIDO, O PEDIDO SERÁ ABERTO NA DISTÂNCIA MÍNIMA POSSÍVEL DE QUALQUER FORMA?