Como codificar? - página 222

 

Obrigado Roger09

Originalmente publicado por ForExTyro

Estou tentando adicionar código a uma EA que restringirá o número de negócios que ela faz por dia a apenas dois(2). Apenas UM comércio longo e UM comércio curto por dia. Este é o código que eu tenho até agora, mas em um teste posterior ele não está funcionando.

Você pode me ajudar!?

Resposta Enviada por Roger09

Substitua

data/hora LongTrade=0;

data/hora ShortTrade=0;

para

data/hora estática LongTrade=0;

data/hora estática ShortTrade=0;

É isso?

É isso aí!

OBRIGADO Roger09

 

Olá,

Este é um bom exemplo de como está parecendo a EA & Ind. descompilada.

b.

 
Kalenzo:
Aí está! Aproveite!

Oi Kalenzo,

Preciso novamente de sua ajuda, você pode codificar para mim um código adicional

como você fez antes, eu gostaria de colocar informações sobre o LSMA Bar.

Quando o LSMA Woodie Bar Verde mostra a palavra LONG (cor verde),

e quando o Woodie Bar Red mostra o Word Short (cor vermelha).

Veja a figura em anexo...

http://i98.photobucket.com/albums/l277/compobey/CCIinfo.jpg

Cumprimentos,

compobey

 

Pedido de ajuda

Olá a todos

Tenho usado um sistema muito simples que faz cerca de +100 pips por mês.

Gostaria de colocá-lo na EA, mas sou muito novo na codificação e me sinto tão perdido . Talvez vocês possam me ajudar a criar este EA e todos nós possamos usá-lo?

Por favor, me avisem se estiverem interessados e eu publicarei os detalhes do que a EA precisa fazer.

Obrigado.

 

Kalenzo

Kalenzo:
Pronto! Aproveite!

Olá novamente Kalenzo,

Tenho observado o índio que você consertou para mim.

Em geral funciona bem, mas, por acaso, coloca a cor errada na linha.

Como você pode ver na foto, há lugares onde deveria ser Tomate ou Vermelho, mas ao invés disso, acontece DodgerBlue.

As regras eram;

Quando valor (no fechamento da barra) > que fechamento anterior da barra (subindo) =

DodgerBlue quando o valor é < 0

Azul quando o valor é > 0

Quando valor (no fechamento da barra < do que o fechamento anterior da barra (descendo) =

Tomate quando o valor é > 0

Vermelho quando o valor é < 0

Eu marquei com setas vermelhas onde os erros acertam.

Pode dar uma olhada no código, por favor.

Tentei explicar o melhor que pude, mas me avise se precisar de mais informações.

Obrigado.

Arquivos anexados:
 
Klondyke:
Olá novamente Kalenzo,

Tenho observado o índio que você consertou para mim.

Em geral funciona bem, mas, por acaso, coloca a cor errada na linha.

Como você pode ver na foto, há lugares onde deveria ser Tomate ou Vermelho, mas ao invés disso, acontece DodgerBlue.

As regras eram;

Quando valor (no fechamento da barra) > que fechamento anterior da barra (subindo) =

DodgerBlue quando o valor é < 0

Azul quando o valor é > 0

Quando valor (no fechamento da barra < do que o fechamento anterior da barra (descendo) =

Tomate quando o valor é > 0

Vermelho quando o valor é < 0

Eu marquei com setas vermelhas onde os erros acertam.

Pode dar uma olhada no código, por favor.

Tentei explicar o melhor que pude, mas me avise se precisar de mais informações.

Obrigado.

Desculpe, esqueci o arquivo.

Arquivos anexados:
 

como ir para a etiqueta da linha?

Como eu iria para uma etiqueta de linha em Metatrader 4

algo como

if(a > b) goto fred

if(c > d) goto jim

fred

faça mais alguns códigos aqui

jim

faça algum código aqui

Eu tenho uma resposta, mas preciso de um pouco mais de esclarecimento

Em vez disso, você pode escrever algum código em functons. Algo parecido com isto:

if(a > b) ReturnValue = fred();

if(c > d) ReturnValue = jim();

int fred()

{

faça mais alguns códigos aqui

}

int jim()

{

faça algum código aqui

}

o que é ReturnValue ? não é uma função, como eu realmente o escrevo

 

No exemplo que você postou 'ReturnValue' é apenas uma variável. Ela poderia ter sido chamada de qualquer coisa, mas quem quer que lhe tenha dado esse código usou 'ReturnValue'.

Para ser honesto, esse formato não faz muito sentido, a menos que você pretenda realmente fazer algo com o valor que é retornado das duas funções. Você não pode usar o conceito de goto como poderia em VB (ou era Básico - é tão antigo que não consigo lembrar!).

Apenas algo como...

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

Então o que você pretendia fazer quando o programa tivesse pulado usando goto, você o faria nas duas respectivas funções.

Espero que isso faça algum sentido.

Cumprimentos

Lux

 
luxinterior:
No exemplo que você postou 'ReturnValue' é apenas uma variável. Ela poderia ter sido chamada de qualquer coisa, mas quem quer que lhe tenha dado esse código usou 'ReturnValue'.

Para ser honesto, esse formato não faz muito sentido, a menos que você pretenda realmente fazer algo com o valor que é retornado das duas funções. Você não pode usar o conceito de goto como poderia em VB (ou era Básico - é tão antigo que não consigo lembrar!).

Apenas algo como...

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

Então o que você pretendia fazer quando o programa tivesse pulado usando goto, você o faria nas duas respectivas funções.

Espero que isso faça algum sentido.

Cumprimentos

Lux

Obrigado pela resposta, o que estou tentando fazer é fazer com que a EA escolha entre duas condições, mas escolha a que mais mudar primeiro.

Assim, em seu exemplo

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

precisa mais do que se fizer isto, ou se fizer aquilo, porque a outra condição é se c & d mudou antes de a & b se fizer isto e ignorar a & b. É por isso que eu estava tentando ir para uma linha porque eu não consigo fazer com que ela escolha com se então

porque na realidade eu tenho

if(a>b && c>d) // faça uma compra aqui

senão

if(a>b && c<d) // faça aqui uma compra fechada

senão

reverso fazer uma venda ou uma venda fechada

mas se c & d mudou primeiro, antes de a & b, então ignore o código acima e faça os testes acima em c & d em vez disso

Desculpe, é tão claro quanto a lama.

 

Trabalhando com a CSV-Files -- Estou ficando louco

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!!