Como codificar? - página 223

 

...

Eu acho (já que não consigo ver sua EA que escreve os valores no arquivo csv) que está faltando um FileFlush(). Nos casos em que você deseja fazer alterações no arquivo acessível por "outros" imediatamente sem fechar o arquivo (que implicitamente usa o flush ) você deve sempre lavar as alterações no disco

cumprimentos

mladen

sunshineh:
Hi,

Estou escrevendo uma EA que está trabalhando com a CSV-Files.

Para testes, coloquei meus arquivos CSV na seguinte pasta:

/tester/arquivos

Aqui está apenas uma pequena parte da minha EA:

int handle = 0;

int Long = 0;

handle=FileOpen("LongMarket.csv",FILE_CSV|FILE_READ,';');

if (handle > 0)

{

Long= FileReadNumber(handle);

FileClose(handle);

}

Print("LongMarket = ", Long);

Print("Long handle = ", handle);

No meu EA eu leio os arquivos CSV e depois escrevo alguns números inteiros.

Agora, quando faço meu teste e leio no diário as mensagens "impressas", muitas vezes recebo inteiros antigos que não estão mais escritos nos CSV-Files!

Por exemplo:

Primeiro, há o 3 escrito e meu EA está funcionando e escreve o 0 no arquivo,

Eu só consigo ver os 3 nesse CSV-File!!

Quando eu limpar aquele CSV-File e colocar um novo CSV-File com 3 naquele " /tester/files"-Folder, eu só posso ler o 0 do teste antes!!!! Mas não consigo encontrar, onde a EA lê o 0!!!

Eu estou ficando louco!!!!!

Espero que você possa entender minha pergunta e me dê uma dica!!
 

Alguém pode me ajudar a acrescentar um aviso?

Eu gostaria de adicionar uma função de alarme deste indicador, alarme colorido. Eu tentei por muito tempo, usar o "se alarme", mas nunca sem sucesso. Alguém pode me ajudar? Muito obrigado! ~ Meu inglês não é bom tão bom.

#janela_do_indicador de propriedade

#property indicator_buffers 4

#Indicador de propriedade_color1 ForestGreen

#indicador de propriedade_color2 Vermelho

#indicador de propriedade_color3 Preto

#indicador de propriedade_color4 Preto

//---- parâmetros de entrada

externo int FastClosePeriod=13;

externo int FastCloseShift=0;

externo int FastOpenPeriod=34;

extern int FastOpenShift=0;

externo int SlowClosePeriod=34;

extern int SlowCloseShift=0;

externo int SlowOpenPeriod=62;

Exterior int SlowOpenShift=0;

//---- buffers indicadores

duplo ExtBlueBuffer[];

duplo ExtRedBuffer[];

duplo ExtDarkVioletBuffer[];

duplo ExtBlackBuffer[];

//+------------------------------------------------------------------+

//| Função de inicialização do indicador personalizado |

//+------------------------------------------------------------------+

int init()

{

//---- muda de linha ao desenhar

SetIndexShift(0,FastCloseShift);

SetIndexShift(1,FastOpenShift);

SetIndexShift(2,SlowCloseShift);

SetIndexShift(3,SlowOpenShift);

//---- primeiras posições puladas ao desenhar

SetIndexDrawBegin(0,FastCloseShift+FastClosePeriod);

SetIndexDrawBegin(1,FastOpenShift+FastOpenPeriod);

SetIndexDrawBegin(2,SlowCloseShift+SlowClosePeriod);

SetIndexDrawBegin(3,SlowOpenShift+SlowOpenPeriod);

//---- 3 indicadores de mapeamento de buffers

SetIndexBuffer(0,ExtBlueBuffer);

SetIndexBuffer(1,ExtRedBuffer);

SetIndexBuffer(2,ExtDarkVioletBuffer);

SetIndexBuffer(3,ExtBlackBuffer);

//---- definições de desenho

SetIndexStyle(0,DRAW_HISTOGRAM,0,2);

SetIndexStyle(1,DRAW_HISTOGRAM,0,2);

SetIndexStyle(2,DRAW_NONE,0,2);

SetEstiloIndex(3,DRAW_NONE,0,2);

//---- etiquetas de índice

SetIndexLabel(0, "FastClose");

SetIndexLabel(1, "FastOpen");

SetIndexLabel(2, "SlowClose");

SetIndexLabel(3, "SlowOpen");

//---- inicialização feita

retorno(0);

}

//+------------------------------------------------------------------+

//| 9Squared Trader |

//+------------------------------------------------------------------+

int start()

{

limite int;

int counted_bars=IndicatorCounted();

//---- verificação de possíveis erros

if(counted_bars<0) return(-1);

//---- última barra contada será contada novamente

if(counted_bars>0) counted_bars--;

limite=barras_contadas_à_barras;

//---- laço principal

for(int i=0; i<limit; i++)

{

//---- ma_shift set to 0 porque SetIndexShift chamado abowe

ExtBlueBuffer=iMA(NULL,0,FastClosePeriod,0,MODE_EMA,PRICE_CLOSE,i);

ExtRedBuffer=iMA(NULL,0,FastOpenPeriod,0,MODE_EMA,PRICE_OPEN,i);

ExtDarkVioletBuffer=iMA(NULL,0,SlowClosePeriod,0,MODE_EMA,PRICE_OPEN,i);

ExtBlackBuffer=iMA(NULL,0,SlowOpenPeriod,0,MODE_EMA,PRICE_MEDIAN,i);

}

//---- feito

retorno(0);

 
 
Arquivos anexados:
example.gif  12 kb
example.mq4  3 kb
 
wolfe:
Aqui está. Fiz isto muito rápido, e sim, pode ser feito.

Veja o exemplo anexo.mq4 para exemplo de codificação.

Também está incluído um screen shot com comentários, para que você possa ver que os valores RSI estão sendo salvos tick por tick na matriz.

Olá wolfe,

Muito obrigado por seu tempo e esforços. Vou tentar isto

cumprimentos,

MSV

 
 

Faixa de Bollinger

Hi,

Alguém pode me ajudar na Fórmula Bollinger Band (20period dev 2 on close) em planilha Excel. Agradecemos antecipadamente.

 

Olá pessoal!!

Preciso abrir apenas "um pedido de compra e venda "por dia" no meu EA, por favor, como é o código para fazer isso?

 
Apolofx:
Olá pessoal! Preciso abrir apenas "uma compra e venda "por dia" no meu EA, por favor, como é o código para fazer isso?

Acredito que você precisa fazer um loop através de todas as ordens fechadas e verificar cada uma por seu símbolo e tempo de fechamento... pegue aquele que corresponde ao símbolo() e tenha o último tempo de fechamento. depois adicione 24 horas e use-o em uma variável para testar o tempo atual e abrir o comércio quando chegar à última ordem + 24 horas

 

Ou uma maneira mais simples de fazê-lo seria usar apenas a função TimeDayOfYear e verificar a última ordem fechada com o símbolo e o número mágico correspondentes. Basta ter certeza de que não é o mesmo dia do ano de hoje.

Dê uma olhada no arquivo de ajuda para definição e uso da função TimeDayOfYear

Cumprimentos

Lux