Como codificar? - página 269

 

Variável Dema definida incorretamente

Não sou capaz de definir corretamente a seção de Variáveis DEMA, suas sintaxes. Os códigos DEMA1, DEMA2, DEMA3 estão corretos.

Por favor, ajude a corrigir a seção de Variáveis DEMA.

se (TradeOrAlert) {

if (DEMA1)>(DEMA2) {CLOSESHORT(Symbol()) } ;}

if (DEMA1)<(DEMA2) {CLOSELONG(Symbol()) ;}

if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {BUY(Symbol(), B_Symbol_LS_0, B_Symbol_TP_0, B_Symbol_SL_0, B_Symbol_TS_0, "if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))";}

if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {SELL(Symbol(), S_Symbol_LS_0, S_Symbol_TP_0, S_Symbol_SL_0, S_Symbol_TS_0, "if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))";}

CheckTrailingStop(Symbol(), 0, MagicNumberLong, B_Symbol_TS_0);

CheckTrailingStop(Symbol(), 1, MagicNumberShort, S_Symbol_TS_0);

} else {

if (DEMA1)>(DEMA2) {MeuAlerta("if (DEMA1)>(DEMA2)", "CLOSESHORT(Símbolo(),0.1,100,15,17)", Símbolo());}

if (DEMA1)<(DEMA2) {MeuAlerta("if (DEMA1)<(DEMA2)", "CLOSELONG(Symbol(),0.1,100,15,17)", Symbol());}

if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {MeuAlerta("if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))", "BUY(Symbol(),0.1.100,15,17)", Symbol());}

if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {MeuAlerta("if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))", "SELL(Symbol(),0.1,100,15,17)", Symbol());}

}

g_bars_276 = Barras;

retorno (0);

}

//----DEMA VARIABLES----Não configurado corretamente, ajuda necessária-----

int init() {

duplo DEMA1 = (iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,4,0,MODE_EMA,iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0),0))

retorno(DEMA1);

}

int start() {

duplo DEMA2 = (iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,6,0,MODE_EMA,iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0),0))

retorno(DEMA2);

}

int start() {

duplo DEMA3 = (iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,12,0,MODE_EMA,iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0),0))

retorno(DEMA3);

}

//

 

Conjunto de variáveis Dema Incorretamente

Estou enfrentando o problema de definir as sintaxes corretamente na seção "DEMA VARIABLES" do código abaixo.

Também diga o que incluir após a seção "#include" com respeito às Variáveis Dema.

Eu recebo os erros

'DEMA1' - variável não definida.

'DEMA2' - variável não definida.

'DEMA3' - variável não definida.

Por favor, ajude.

if (TradeOrAlert) {

if (DEMA1)>(DEMA2) {CLOSESHORT(Symbol()) } ;}

if (DEMA1)<(DEMA2) {CLOSELONG(Symbol()) ;}

if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {BUY(Symbol(), B_Symbol_LS_0, B_Symbol_TP_0, B_Symbol_SL_0, B_Symbol_TS_0, "if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))";}

if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {SELL(Symbol(), S_Symbol_LS_0, S_Symbol_TP_0, S_Symbol_SL_0, S_Symbol_TS_0, "if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))";}

CheckTrailingStop(Symbol(), 0, MagicNumberLong, B_Symbol_TS_0);

CheckTrailingStop(Symbol(), 1, MagicNumberShort, S_Symbol_TS_0);

} else {

if (DEMA1)>(DEMA2) {MeuAlerta("if (DEMA1)>(DEMA2)", "CLOSESHORT(Símbolo(),0.1,100,15,17)", Símbolo());}

if (DEMA1)<(DEMA2) {MeuAlerta("if (DEMA1)<(DEMA2)", "CLOSELONG(Symbol(),0.1,100,15,17)", Symbol());}

if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3)) {MeuAlerta("if ((DEMA1)>(DEMA2)) && ((DEMA2)>(DEMA3))", "BUY(Symbol(),0.1.100,15,17)", Symbol());}

if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3)) {MeuAlerta("if ((DEMA1)<(DEMA2)) && ((DEMA2)<(DEMA3))", "SELL(Symbol(),0.1,100,15,17)", Symbol());}

}

g_bars_276 = Barras;

retorno (0);

}

//----DEMA VARIABLES----Não configurado corretamente, ajuda necessária-----

int start() {

duplo DEMA1 = (iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,4,0,MODE_EMA,iMA(NULL,NULL,4,0,MODE_EMA,PRICE_CLOSE,0),0))

retorno(DEMA1);

}

int start() {

duplo DEMA2 = (iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,6,0,MODE_EMA,iMA(NULL,NULL,6,0,MODE_EMA,PRICE_CLOSE,0),0))

retorno(DEMA2);

}

int start() {

duplo DEMA3 = (iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0))*2 - (iMA(NULL,NULL,12,0,MODE_EMA,iMA(NULL,NULL,12,0,MODE_EMA,PRICE_CLOSE,0),0))

retorno(DEMA3);

}

//

 

Alerta MA+Stoch...por favor

você pode me ajudar a construir indicador : MA+stoch com alerta

stoch(5,3,3);MA(8);MA(15);MA(30)....

alerta quando MA(8)>MA(15)>MA(30) e %K cruzam acima de %D mas menos que o nível 50

alerta quando MA(8)<MA(15)<MA(30) e %D cruzam acima de %K mas mais do nível 50

muito obrigado

meu inglês é língua estrangeira

simpaticamente!

 
lequoctrieu:
você pode me ajudar a construir indicador : MA+stoch com alerta

stoch(5,3,3);MA(8);MA(15);MA(30)....

alerta quando MA(8)>MA(15)>MA(30) e %K cruzam acima de %D mas menos que o nível 50

alerta quando MA(8)<MA(15)<MA(30) e %D cruzam acima de %K mas mais do nível 50

muito obrigado

meu inglês é língua estrangeira

simpaticamente!

Hi,

código de um dos meus indis, você tem que adaptá-lo às suas necessidades:

bool externo AlertON=falso;

bool externo EmailON=verdadeiro;

bool externo SoundON=falso;

bool externo VoiceON=false;

bool externo SMSON=falso;

ExtSoundFileName = "";//arquivos de som externos necessários, do que excluir

FastMA = FastMAnow;

SlowMA = slowMAnow;

if ((fastMAnow >= slowMAnow) && (fastMAprevious < slowMAprevious))

{

se (i === 1 && flagval1==0)

{

flagval1=1;

flagval2=0;

if (AlertON===verdadeiro) Alerta("BUY signal at Ask=",Ask,"\n Bid=",Bid,"\n Time=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON===true) SendMail("2754 BUY-ALP EUR", "BUY signal at Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+" "+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Símbolo="+Símbolo()+" Período="+Periodo());

if (SMSON===verdadeiro) SendMail("2754 BUY-ALP EUR", "BUY signal at Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+" "+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Símbolo="+Símbolo()+" Período="+Periodo());

if (SoundON===verdadeiro) PlaySound(ExtSoundFileName);//peep etc

se (VoiceON===verdadeiro) PlaySound(ExtSoundFileName);// discurso próprio wav

}

CrossUp = Baixa - Alcance*0,5;

}

senão se ((fastMAnow slowMAprevious))

{

se (i === 1 && flagval2==0)

{

flagval2=1;

flagval1=0;

if (AlertON===verdadeiro) Alerta("SELL signal at Ask=",Ask,"\n Bid=",Bid,"\n Date=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON===true) SendMail("2754 SELL-ALP EUR", "SELL signal at Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+" "+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Símbolo="+Símbolo()+" Período="+Periodo());

if (SMSON===verdadeiro) SendMail("2754 SELL-ALP EUR", "SELL signal at Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+" "+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Símbolo="+Símbolo()+" Período="+Periodo());

if (SoundON===verdadeiro) PlaySound(ExtSoundFileName);//peeps etc

se (VoiceON===verdadeiro) PlaySound(ExtSoundFileName);// discurso próprio wav

}

CrossDown = Alto + Alcance*0,5;

}

}

retorno(0);

}

 

Alerta MA+Stoch...por favor

ixbone:
Hi,

código de um dos meus indis, você tem que adaptá-lo às suas necessidades:

bool externo AlertON=falso;

bool externo EmailON=verdadeiro;

bool externo SoundON=falso;

bool externo VoiceON=false;

bool externo SMSON=falso;

ExtSoundFileName = "";//arquivos de som externos necessários, do que excluir

FastMA = FastMAnow;

SlowMA = slowMAnow;

if ((fastMAnow >= slowMAnow) && (fastMAprevious < slowMAprevious))

{

se (i === 1 && flagval1==0)

{

flagval1=1;

flagval2=0;

if (AlertON===verdadeiro) Alerta("BUY signal at Ask=",Ask,"\n Bid=",Bid,"\n Time=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON===true) SendMail("2754 BUY-ALP EUR", "BUY signal at Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+" "+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Símbolo="+Símbolo()+" Período="+Periodo());

if (SMSON===verdadeiro) SendMail("2754 BUY-ALP EUR", "BUY signal at Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+" "+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Símbolo="+Símbolo()+" Período="+Periodo());

if (SoundON===verdadeiro) PlaySound(ExtSoundFileName);//peep etc

se (VoiceON===verdadeiro) PlaySound(ExtSoundFileName);// discurso próprio wav

}

CrossUp = Baixa - Alcance*0,5;

}

senão se ((fastMAnow slowMAprevious))

{

se (i === 1 && flagval2==0)

{

flagval2=1;

flagval1=0;

if (AlertON===verdadeiro) Alerta("SELL signal at Ask=",Ask,"\n Bid=",Bid,"\n Date=",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()),"\n Symbol=",Symbol()," Period=",Period());

if (EmailON===true) SendMail("2754 SELL-ALP EUR", "SELL signal at Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+" "+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Símbolo="+Símbolo()+" Período="+Periodo());

if (SMSON===verdadeiro) SendMail("2754 SELL-ALP EUR", "SELL signal at Ask="+DoubleToStr(Ask,4)+", Bid="+DoubleToStr(Bid,4)+", Date="+TimeToStr(CurTime(),TIME_DATE)+" "+TimeHour(CurTime())+":"+TimeMinute(CurTime())+" Símbolo="+Símbolo()+" Período="+Periodo());

if (SoundON===verdadeiro) PlaySound(ExtSoundFileName);//peeps etc

se (VoiceON===verdadeiro) PlaySound(ExtSoundFileName);// discurso próprio wav

}

CrossDown = Alto + Alcance*0,5;

}

}

retorno(0);

}

Muito obrigado...ixbone

Eu escrevo código muito mal... Então, eu não consigo entender seu código.... você pode me ajudar a construir indicador(.mq4) a fim de usar

se for o caso, agradeço-lhe muito

desejo-lhe um bom dia de trabalho!

 

Como posso verificar se a barra atual é 2 pips maior do que as barras anteriores?

Desculpe o lugar errado para esta pergunta.

Favor excluir esta administração.

Obrigado!

 

Fechamento parcial de uma ordem

Hi,

Estou tentando codificar um EA que terá lucros em dois níveis. Para fazer isso, quero dividir a ordem original para que "x" lotes sejam retirados no primeiro alvo de lucro e os lotes restantes sejam retirados no segundo alvo de lucro. Para fazer isso, estou usando duas funções OrderClose().

A primeira função OrderClose() funciona perfeitamente, mas também parece fechar a ordem existente e gerar um novo bilhete para os lotes restantes.

Alguém poderia me dar alguma orientação sobre como lidar com este "novo" bilhete/ordem para que ele possa ser processado pela segunda função CloseOrder()?

Abraço

Jim

 
jimdee:
Hi,

Estou tentando codificar um EA que terá lucros em dois níveis. Para fazer isso, quero dividir a ordem original para que "x" lotes sejam retirados no primeiro alvo de lucro e os lotes restantes sejam retirados no segundo alvo de lucro. Para fazer isso, estou usando duas funções OrderClose().

A primeira função OrderClose() funciona perfeitamente, mas também parece fechar a ordem existente e gerar um novo bilhete para os lotes restantes.

Alguém poderia me dar alguma orientação sobre como lidar com este "novo" bilhete/ordem para que ele possa ser processado pela segunda função CloseOrder()?

Abraço

Jim

Apenas uma idéia. Você pode tentar usar dois ofícios em vez de um se o fechamento parcial para obter lucro for mais difícil de conseguir. E administrar esses negócios por seu tempo aberto.

 
jimdee:
Hi,

Estou tentando codificar um EA que terá lucros em dois níveis. Para fazer isso, quero dividir a ordem original para que "x" lotes sejam retirados no primeiro alvo de lucro e os lotes restantes sejam retirados no segundo alvo de lucro. Para fazer isso, estou usando duas funções OrderClose().

A primeira função OrderClose() funciona perfeitamente, mas também parece fechar a ordem existente e gerar um novo bilhete para os lotes restantes.

Alguém poderia me dar alguma orientação sobre como lidar com este "novo" bilhete/ordem para que ele possa ser processado pela segunda função CloseOrder()?

Abraço

Jim

As pessoas têm referências diferentes, eu gosto de usar o fechamento parcial porque há menos negócios a serem tratados pelo corretor.

Toda vez que ocorre o fechamento parcial, o corretor agirá como a ordem restante é uma nova ordem, portanto, atribua um novo bilhete. Mas realmente não importa, desde que seu próximo passo o método para identificar as negociações não seja baseado em tickets de ordem, ele pode ser baseado em lotes de ordem, ou você pode atribuir uma variável para indicar a EA quando o estágio estiver dentro.

O fechamento parcial é um pouco complicado de se lidar completamente corretamente se a seguinte situação existir:

1. Seus pedidos podem ser de lotes diferentes por causa do MM.

2. Você tem várias ordens existentes ao mesmo tempo de diferentes tamanhos de lote.

Se seu EA tem as situações acima e se você não tem experiência em codificação, acho que você pode usar a abordagem de pedidos múltiplos.

 

Solução rápida para problemas simples. Obrigado *você : )

Eu gostaria de retornar as seguintes variáveis :

1. O primeiro bar aberto da última segunda-feira registrada (Hour Bar).

2. O último bar preço de fechamento do último bar registrado na quarta-feira (Hour Bar).

Alguém sabe como fazer isso ? Eu tentei obter as variáveis à medida que elas passavam com :

//-------------------------------------------------------

se (dia atual == 1 && tempo atual == 0)

{

MondayOpenPrice = iOpen(Symbol(),PERIOD_H1,0);

}

//--------------------------------------------------------

O problema com o acima mencionado é que eu não posso manter meu metatarrader funcionando durante toda a semana para manter essas variáveis.

Portanto, vou precisar que a EA olhe para trás na história para o primeiro preço aberto registrado em uma segunda-feira, etc...

Muito obrigado pelo seu tempo.

Razão: