[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 263

 
Run >> :

Você pode me dizer como desenhar um quadrado ou retângulo sem desenhá-lo como um fundo, e desenhá-lo como uma moldura?

Obrigado

Na lista de propriedades do objeto, defina a propriedade retangular a ser desenhada como um fundo para falso:

ObjectSet( nome da string, OBJPROP_BACK, falso) ;

Mas o objeto será desenhado antes do gráfico .

 

editar | apagar

Peço desculpas, talvez por uma pergunta descabida.


Eu sou um pouco lento com buffers indicadores.... Ou, eu ainda não descobri o indicador em si.


Você poderia me aconselhar, se possível, como consultar o indicador BrainTrend2StopN?


Quero verificar se a abertura da barra atual é maior/baixa do que os valores do indicador.

Eu acesso o indicador a partir do EA com string:


iCustom(NULL,0, "BrainTrend2StopN",CountBars, 1,0)

ou

iCustom(NULL,0, "BrainTrend2StopN",CountBars, 0,0)

para zero e o primeiro buffer respectivamente....

Mas, o Conselheiro Especialista não reage a esta seqüência...


Muito obrigado de antemão.

Arquivos anexados:
 
Morzh09 >> :

iCustom(NULL,0, "BrainTrend2StopN",CountBars,1,0)

ou

iCustom(NULL,0, "BrainTrend2StopN",CountBars,0,0)

para zero e o primeiro buffer respectivamente....

O Conselheiro Especialista não reage a esta seqüência.

Observe que você tem 2 parâmetros externos em seu indicador:

exterior int Simbol =119;

intBars externo=500;

você tem que escrevê-los todos no iCustom:


iCustom(NULL,0,"BrainTrend2StopN", Simbol, CountBars, 0,0);

iCustom(NULL,0,"BrainTrend2StopN", Simbol, CountBars, 1,0);
 

alsu


Muito obrigado. Corrigi o código, agora passo os dois parâmetros, mas infelizmente, quando chamo de Alerta com valores de buffer indicador, recebo apenas zeros....


Se você tiver uma chance, pode me dizer como lidar com isso?

Arquivos anexados:
bt1_1.mq4  10 kb
 

Tente

Alert("Buy signal",
      "  ",
      DoubleToStr(iCustom(NULL,0,"BrainTrend1StopN", Simbol, CountBars, EnableAlerts, SignalID,1,0),8),
      "   ", 
      DoubleToStr(iCustom(NULL,0,"BrainTrend1StopN", Simbol, CountBars, EnableAlerts, SignalID,0,0),8)
      );
 
Por favor, ajude-me, Sr. programador. Há uma semana tenho lutado contra isso, mas nada funciona, porque não tenho a menor idéia de como programar. Você pode escrever um indicador para cruzar dois HMAs com setas?
Arquivos anexados:
hma.mq4  4 kb
 

por alguma razão não entende o que é um turno e não quer colocar flechas

#janela_do_cartão_indicador de propriedade
//# janela_do_cartão_indicador de propriedade
#property indicator_buffers 4
#Indicador de propriedade_color1 Magenta // 12
#Indicador de propriedade_color2 Azul // 26
#indicador de propriedade_color3 MediumBlue
#indicador de propriedade_color4 Tomate
#largura_do_indicador de propriedade1 2
#largura_do_indicador de propriedade2 2
#largura_do_indicador de propriedade3 1
#largura_do_indicador de propriedade4 1
//---- parâmetros indicadores
externo int FastHMA = 12;
externo int SlowHMA = 26;
Extmétodo ExtmethodFastHMA=0; // MODE_SMA
ExtmethodSlowHMA=0; // MODE_SMA
extern int ExtpriceFastHMA=0; // PREÇO_CLOSE
ExtpriceSlowHMA=0; // PREÇO_CLOSE
externo int ExtsdvigFastHMA=0;
externo int ExtsdvigSlowHMA=0;
bool externo EnableAlert=verdadeiro;
ExtSoundFileName externo = "";
//---- buffers indicadores
duplo PreHMA1[];
duplo PreHMA2[];
duplo CrossUp[];
duplo CrossDown[];
estática int bBuy = 0;
estática int bSell = 0;

//+------------------------------------------------------------------+
int pF, pS;

//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado |
//+------------------------------------------------------------------+
int init()
{

//Médios
SetIndexStyle( 0, DRAW_LINE );
SetIndexStyle( 1, DRAW_LINE );
// Sinais
SetIndexStyle( 2, DRAW_ARROW, EMPTY );
SetIndexArrow( 2, 233 );
SetIndexStyle( 3, DRAW_ARROW, EMPTY );
SetIndexArrow( 3, 234 );

///---- 5 mapeamento de buffers indicadores
SetIndexBuffer(0,PreHMA1);
SetIndexBuffer(1,PreHMA2);
SetIndexBuffer( 2,CrossUp );
SetIndexBuffer( 3,CrossDown );

IndicatorDigits( MarketInfo( Symbol(), MODE_DIGITS ) );

//---- nome para DataWindow e subwindow do indicador
IndicatorShortName("HMA2("+FastHMA+", "+SlowHMA+")"));
SetIndexLabel( 0, "HMA("+FastHMA + "," +SlowHMA +")" + FastHMA );
SetIndexLabel( 1, "HMA(" + FastHMA + "," + SlowHMA+")" + SlowHMA );
SetIndexLabel( 2, "Comprar" );
SetIndexLabel( 3, "Vender" );

pF = MathSqrt(FastHMA);
pS = MathSqrt(SlowHMA);

//---- inicialização feita
retorno(0);
}


//+------------------------------------------------------------------+
duplo WMA(int x, int p) {
return(iMA(NULL, 0, p, 0, MODE_SMA, PRICE_CLOSE, x+sdvig))
}


//+------------------------------------------------------------------+
//| Média Móvel do Oscilador |
//+------------------------------------------------------------------+
int start()
{

bool bConditionUp;
{bConditionDown;
faixa dupla;
dupla AvgRange;

limite int;
int counter;
int counted_bars=IndicatorCounted();

//---- última barra contada será recontada
if(counted_bars>0) counted_bars--;
limite=barras_contadas_combarras;

//---- preparando o HMA
for(int i=0; i<limit; i++) {
PreHMA1[i] = 2*WMA(i, FastHMA/2) - WMA(i, FastHMA);
PreHMA2[i] = 2*WMA(i, SlowHMA/2) - WMA(i, SlowHMA);

AvgRange = 0;
bConditionUp = 0;
bConditionDown = 0;
para ( contador = i; contador <= i + 9; contador++ ) {
AvgRange += MathAbs( Alto[ contador ] - Baixo[ contador ] );
}
Alcance = AvgRange/10;
bConditionUp = (PreHMA1[i+1] >= PreHMA2[i+1] ) &&
(PreHMA1[i+2] <= PreHMA2[i+2] ) &&
(PreHMA1[i] >= PreHMA2[i] ); // cruzar para cima
bConditionDown = (PreHMA1[i+1] <= PreHMA2[i+1] ) &&
(PreHMA1[i+2] >= PreHMA2[i+2] ) &&
(PreHMA1[i] <= PreHMA2[i] ); // cruzar para baixo
se ( bConditionUp) {//
CrossUp[i+1] = PreHMA2[i+1]-Largura * 0,75;
CrossDown[i+1] = EMPTY_VALUE;
bConditionDown = falso;
}

se ( bConditionDown) {//
CrossDown[i+1] = PreHMA2[i+1]+Largura * 0,75;
CrossUp[i+1] = EMPTY_VALUE;
bConditionUp = falso;
}

se (!bConditionUp && !bConditionDown) {
CrossDown[i+1] = EMPTY_VALUE;
CrossUp[i+1] = EMPTY_VALUE;
}

if (bConditionUp && !bBuy===1 && i==0 && EnableAlert){
bBuy = 1; // bandeira de compra
bSell = 0; // bandeira de reset para vender
Alerta (Símbolo()", ",Período(), "M Achtung BUY"); // bip
se ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
}
if (bConditionDown && !bSell===1 && i==0 && EnableAlert){
bBuy = 0; // bandeira de compra
bSell = 1; // zerar a bandeira Sell
Alerta (Símbolo()", ",Período(), "M Achtung SELL"); // bip
se ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
}
/Comentar ("Comprar-"+bComprar+"\nSell-"+bSell);
} // para

//retorno ("0 );
}
// para compra
// if (bBuy==0 && i < 1 && EnableAlert) {
/// Alerta (Símbolo()", ",Período(), "M Achtung BUY"); // bip
// Alerta ("Comprar,",bBuy,",i,",EnableAlert);
// if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
// }

// if (bSell==0 && i < 1 && EnableAlert) {
///Alerta (Símbolo()", ",Período(), "M Achtung SELL");
// Alerta ("Sell-",bSell," ",i," ",EnableAlert);
// if ( ExtSoundFileName != "" ) PlaySound( ExtSoundFileName );
// }

Alguém poderia por favor me dizer qual é o meu erro?

 
kurt >> :


Alguém pode me dizer qual é o meu erro?

Primeiro, coloque o código em uma forma legível, usando abas indicando o nível de aninhamento e o botão SRC

 

Olá.


Por favor, ajude-me a entender a função de informação do tutorial https://book.mql4.com/ru/build/info Não entendo há uma semana, por que não aparecem sinais dele? Tirei o Expert Advisor exatamente do tutorial, a informação está incluída no interior.


Preciso adicionar um indicador ao meu gráfico? O que devo usar para preenchê-lo? O exemplo tem um indicador vazio e eu quero preenchê-lo com o que eu quiser... Como fazer para exibir sinais de função Inform()?

 

Parece que uma semana para nós, novatos, é o prazo após o qual nós vamos até você pros))))


Concluindo a partir de posts recentes...

Razão: