[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 342

 


Muito obrigado.Cisne
 

Você pode me dizer se eu abro um pedido

OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, oSL, oTP, "", ExpertID, 0, Red)

Se um Stop Loss for acionado, abra o lote duplo na próxima abertura do pedido, que é feita automaticamente.

 
vik-777 >> :

Você pode me dizer se eu abro um pedido

OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, oSL, oTP, "", ExpertID, 0, Red)

Se um Stop Loss for acionado, abra um lote duplo na próxima abertura do pedido, que é feita automaticamente


Coloque estas linhas logo no início da função START e use a variável _SL[0] para determinar o resultado do comércio anterior.

se (OrderSelect(Tic,SELECT_BY_TICKET)==verdadeiro)
{
if (OrderComment()=="[sl]")_SL[0]=-1;
if (OrderComment()=="[tp]")_SL[0]=1;
}

 

Problema.

Existe uma EA. Se as variáveis Lot, Porog, Otstup, SL, TP estiverem definidas no "corpo" do programa, então a EA funciona. Se estas variáveis são definidas como "externas" (definindo-as através de ajustes), então a EA não funciona (no "corpo" da EA, estas variáveis têm um valor de ZERO).

Qual pode ser o problema? Onde procurar uma solução?

/*
extern double Lot = 0.1;    

extern double Porog = 5.0;  
extern double Otstup = 5.0; 

extern double SL = 5.0; 
extern double TP = 15.0; 
*/

int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }

int start()
  {
  int MagicNumber = 8; 
  int ticket;
  int err;
  int q=0;

double Lot = 0.1;    
double Porog = 5.0;  
double Otstup = 5.0; 
double SL = 5.0; 
double TP = 15.0; 
 

Você poderia, por favor, sugerir uma função para implementar uma caixa de diálogo onde você pode definir valores variáveis.

Por exemplo, há um roteiro de compra (compre com Sl e Tp set), quando você o executa, uma caixa de diálogo é exibida onde você pode especificar, por exemplo, o tamanho do lote, então pressione Ok e o pedido é executado!

Obrigado!

 

Caros profissionais, por favor, avisem...

No meu indicador uso um texto que exibe dados sobre o valor da curva do indicador no gráfico

{ObjectCreate("P"+Time[ ai],OBJ_TEXT,0,Time[ ai],High[ ai]+ Label);
ObjectSetText("P"+Time[ ai]," "+DoubleToStr( HL,2),7,"Arial",Black);}
Tenho que deslocá-lo no parâmetro Label para manter o texto na curva. Mas quando mudamos para outro período ou aumentamos/diminuímos o gráfico, a escala do gráfico muda e temos que editar novamente. O deslocamento do texto pode ser definido de forma diferente, por exemplo, em pixels de tela?
 
kon12 писал(а) >>

Caros profissionais, por favor, avisem...

No meu indicador uso um texto que exibe dados sobre o valor da curva do indicador no gráfico

Para garantir que o texto não se sobreponha à curva, temos que deslocá-lo pelo parâmetro Etiqueta. Mas ao mudar para outro período ou aumentar/diminuir o gráfico, a escala do gráfico muda e você tem que editar novamente. O deslocamento do texto pode ser definido de forma diferente, por exemplo, em pixels de tela?

Você pode usar

OBJ_LABEL 23 É uma etiqueta de texto. Não utiliza coordenadas. A função ObjectSet() é utilizada para definir coordenadas definidas em pixels em relação ao ângulo de referência (propriedades OBJPROP_CORNER, OBJPROP_XDISTANCE, OBJPROP_YDISTANCE). Para alterar o texto, é utilizada a função ObjectSetText().

 
Eu não entendo bem como? Estou anexando uma foto do indicador. A questão é que o texto está ligado a pontos específicos no indicador.
 
kon12 писал(а) >>
Eu não entendo bem como? Anexo uma foto do indicador. A questão é que o texto é anexado a pontos específicos no indicador.

Em seguida, é preciso tornar o Rótulo dinâmico. Para cada período de tempo seu próprio. Uma vez no init e esqueça isso. Mas primeiro, é preciso selecioná-lo.

 
kon12 >> :
O deslocamento do texto pode ser definido de forma diferente, por exemplo, em pixels de tela?

A resposta mais correta é não.