Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 151

 
Forexman77:
Você pode me dizer como estabelecer uma parada na parte alta ou baixa do bar onde o comércio é aberto?

Se alto, então Alto[ ] em vez de parar, se baixo[ ], mas tenha duas coisas em mente.


1.Esta é a extensão e a distância até a parada estabelecida pelo revendedor.

2. Não se pode colocar uma parada corretamente na barra que se está formando. Ou seja, Alto[0]. E somente nos bares anteriores. Isto é, alto[1], etc.

 
satorifx:

Boa tarde.

Você pode me dizer como ligar programmaticamente 2 sistemas de coordenadas em um gráfico: (X,Y) e (tempo,preço)? Você precisa de uma etiqueta com coordenadas (X,Y) que estará sempre ao preço mínimo na tabela.

artmedia70:
Há diferenças. Na carta em geral, ou seja, em todo o histórico disponível no terminal, ou na carta visível (dentro da tela do monitor) ?


Exatamente na carta visível dentro da tela do monitor

 
satorifx:

Exatamente no gráfico visível dentro da tela do monitor

Jogue este roteiro na tabela:

//+------------------------------------------------------------------+
//|                                       sc_LowestPricePerChart.mq4 |
//|                               Copyright 2013, Artyom A. Trishkin |
//|                          artmedia70@gmail.com, Skype: Artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, Artyom A. Trishkin"
#property link      "artmedia70@gmail.com, Skype: Artmedia70"
//+------------------------------------------------------------------+
//|           script program start function                                    |
//+------------------------------------------------------------------+
int start() {
   int count=WindowBarsPerChart();                             // количество видимых баров 
   int LowestBar=iLowest(Symbol(),Period(),MODE_LOW,count,0);  // бар с минимальной ценой
   double LowestPricePerChart=Low[LowestBar];                  // минимальная цена из видимых баров
   SetArrow(5, Yellow, "sc_LowestPricePerChart_LowestPrice", Time[LowestBar], LowestPricePerChart, 1);
   return(0);
}
//+------------------------------------------------------------------+
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=0) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0, 0);
   ObjectSet(nm, OBJPROP_TIME1    , t1);
   ObjectSet(nm, OBJPROP_PRICE1   , p1);
   ObjectSet(nm, OBJPROP_ARROWCODE, cd);
   ObjectSet(nm, OBJPROP_COLOR    , cl);
   ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
//+------------------------------------------------------------------+

Faça o mesmo para o máximo

 
artmedia70:

Jogue este roteiro na tabela:

Faça o mesmo para o máximo


A questão é que o objeto ARROW tem coordenadas (tempo, preço) mas sem coordenadas (x,y). Se você estender a janela indicadora na parte inferior da tela, o objeto se moverá junto com a janela, mas ao mesmo tempo, as coordenadas (x,y) do objeto na janela mudarão e não podem ser calculadas porque não há conexão entre os dois sistemas de coordenadas. Em princípio, você poderia usar um objeto TEXT ou qualquer outro objeto em vez deum objetoARROW , mas isto não resolve o problema.
 
satorifx:
A questão é que o objeto ARROW tem coordenadas (tempo, preço), mas sem coordenadas (x,y). Se aumentarmos a janela indicadora na parte inferior da tela, o objeto se moverá junto com a janela, mas ao mesmo tempo as coordenadas (x,y) do objeto na janela mudarão e não podem ser calculadas porque não há conexão entre os dois sistemas de coordenadas. Em princípio, você poderia usar um objeto TEXT ou qualquer outro objeto em vez de um objeto ARROW , mas isto não resolve o problema.

Então amarre o branco ao quente. Foi-lhe mostrado como saber o preço mínimo em barras visíveis, e foi-lhe mostrado como marcá-lo no gráfico.

O resto é seu obscuro pensamento de desejo ;)

 
Sepulca:



Não tenho bem a certeza do que você quer dizer? Se não houve arquivo (não foi aberto) ou se houve um erro de leitura. Teria dado uma mensagem, mas não há novidades...
 
O código deve ser escrito de tal forma, que na barra, na qual o comércio é aberto, haja uma saída da posição, se for formado um espigão, na próxima barra imediatamente após a barra com um espigão, mas os sinais nas barras, após o qual o comércio é aberto, onde ocorreu um espigão, são ignorados. Não há problema com o código que descreve o espigão. A dificuldade é como dizer ao programa que o sinal para usar somente o bar em que o comércio foi aberto.
 
Forexman77:
O código deve ser escrito de tal forma, que na barra, na qual o comércio é aberto, haja uma saída da posição, se for formado um espigão, na próxima barra imediatamente após a barra com um espigão, mas os sinais nas barras, após o qual o comércio é aberto, onde ocorreu um espigão, são ignorados. Não há problema com o código que descreve o espigão. A dificuldade é como indicar ao programa que apenas o bar em que o comércio está aberto é utilizado para o sinal.
O negócio tem um tempo de abertura OrderOpenTime(); Há uma função que mostra o número de barras por tempo iBarShift(); Use esta barra como "... usamos apenas a barra em que o negócio está aberto para o sinal ...".
 
artmedia70:
O comércio tem um tempo de abertura OrderOpenTime(); E há uma função que lhe mostrará o número da barra pelo tempo iBarShift(); Esta é a barra e usá-la como "... que para o sinal que usamos, somente a barra em que o comércio está aberto...".

Obrigado, vou dar uma olhada nisso.
 
Zolotai:

Não tenho bem a certeza do que você quer dizer? Se não houve arquivo (não foi aberto) ou se houve um erro na leitura. Você receberia uma mensagem, mas não recebe notícias...

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ|FILE_WRITE,";");// Abrir arquivo.

Se FILE_WRITE não for combinado com FILE_READ, um arquivo com comprimento zero será aberto. Mesmo que houvesse dados no arquivo antes de ele ser aberto, ele será destruído.
Se você quiser anexar dados a um arquivo existente, você precisa abri-lo usando a combinação FILE_READ | FILE_WRITE..
Se FILE_READ não for combinado com FILE_WRITE, o arquivo só será aberto se o arquivo já existir. Se o arquivo não existir, ele pode ser criado usando o modo FILE_WRITE.

Razão: