Como codificar? - página 54

 

Outra pergunta

agora minha EA como esta

if(FastMA2 SlowMA1)

{

FecharPosições();

OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-SLpips*Point,Ask+(45*Point),",MAGIC,0,Blue);

retornar(0);

quero mudar desta maneira

1. 15minutus de tempo acontecem sinal de compra

2. se então 5minutos de tempo de duração da compra cruzada de MA já estiver em

FecharPosição. e obter nova posição

se então 5minutos de tempo MA já mudar de sinal de venda

esperar 5 minutos para mudar o sinal de compra ,

então FecharPosição. e obter nova posição

Por favor, me diga como escrever este programa.

[Excluído]  
Arquivos anexados:
 

Olá

Estou procurando ajuda para ter uma EA que estou usando em demonstração e também para aprender a codificar. Estou tentando descobrir como adicionar um comentário ao sistema para me mostrar qual dos 4 critérios de entrada foi usado para abrir a posição. por exemplo, se long2 foi usado, então mostrar sinal long2

qualquer ajuda seria ótima

aplausos

Beno

 
Beno:
Olá

Estou procurando ajuda para ter um EA que estou usando em demonstração e também para aprender a codificar. Estou tentando descobrir como adicionar um comentário ao sistema para me mostrar qual dos 4 critérios de entrada foi usado para abrir a posição. por exemplo, se long2 foi usado, então mostrar sinal long2

qualquer ajuda seria ótima

aplausos

Beno

Depois que sua condição for atendida e você usar o comando Orderend(), basta inserir uma declaração Comment(), Alert(), ou Print(). O que você quiser usar.

Algo como isto:

se ( long2 == verdadeiro)

{

Encomenda();

{

Impressão(" sinal longo2 tomado ");

}

}

Esperança que ajuda.

 

Obrigado Wolfe

Tive que rir, coloquei o que você sugeriu e funcionou mais ou menos, mas agora só tenho o comentário e nenhuma vaga em aberto. qualquer dica

bool Long = MAofRSI11>MAofRSI21 && MAofRSI12VolHL && RSIndex1HL2 && TrStop0.0 && SDLL && ma<Fechar[shift];

bool Short = MAofRSI11=MAofRSI22 && VolCH>VolHL && RSIndex1HLM && TrStop>Close[shift] && MOMClose[shift];

bool Long2 = MAofRSI11>HLM && MAofRSI12HLM && MAofRSI22VolHL && TrStop0.0 && SDLLL && ma<Fechar[shift];

bool Short2 = MAofRSI11=HLM && MAofRSI21=HLM && VolCH>VolHL && TrStop>Fechar[shift] && MOMFechar[shift];

bool Long3 = RSIndex1-RSIndex2>20<HL2 && TrStop0.0 && SDLLL && ma<Fechar[shift];

bool Short3 = RSIndex2-RSIndex1>20>HL1 && TrStop>Fechar[shift] && MOMFechar[shift];

bool Long4 = zscore>0.0 && ma<Fechar[shift];

bool Short4 = zscoreFechar[shift];

buysig = Long || Long2 || Long3 || Long4;

sellig = Short ||| Short2 ||| Short3 || Short4;

closebuy=sellig;

closesell=compra=sellig;

if (curprof>=AccountBalance()*ProfitExit/100.0) {

exit=true;

}

if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {

remorder=true;

}

}

CheckForOpen() {

int res,tr;

//---- condições de venda

co=CalculateCurrentOrders(Symbol());

if(sellig && lastsig!=-1) {

co=CalculateCurrentOrders(Symbol());

se (co==0) {

se ( Curta == verdadeiro)

se ( Curto2 == verdadeiro)

se ( Curta3 == verdadeiro)

res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);

Print(" Short signal taken ");

Print(" Short2 signal taken ");

Print(" Short3 signal taken ");

Print(" Curto4 sinal tomada ");

}

lastsig=-1;

last=Time[0];

retornar;

}

//---- condições de compra

if(compra && dura!=1) {

co=CalculateCurrentOrders(Symbol());

se (co==0) {

se ( Long === verdadeiro)

se ( Long2 == verdadeiro)

se ( Long3 == verdadeiro)

se ( Long4 == verdadeiro)

res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);

Print(" Long signal taken ");

Impressão(" Sinal longo2 tomado ");

Impressão(" Sinal longo3 tomado ");

Print(" sinal Long4 tomado ");

}

last=Time[0];

lastsig=1;

retorno;

}

}

Fixou-o Obrigado

 

Código de depuração

Como e onde você usaria um pouco de código como este. Eu tenho um erro de divisão Zero que não consigo encontrar como a correção.

DEBUGGING externo = verdadeiro

...

if(DEBUGGING && variableName == 0) Print("CodePoint 1 -- Esta variável é agora ", variableName);

... mais código

if(DEBUGGING && variableName == 0) Print("CodePoint 2 -- Esta variável é agora ", variableName);

... mais código

if(DEBUGGING && variableName == 0) Print("CodePoint 3 -- Esta variável é agora ", variableName);

...

 

você pode me ajudar? por que existem muitos erros no código?

isto é para calcular SMMA:

for(j=0;j<Bars;j++)

{

for(i=0,sum=0;i<ma_period;i++)

{

sum=sum+Close[j+i];

// tampão[j]=(soma-soma/ma_período+Fechar[j+i])/ma_período;

}

tampão[j]=(soma-soma/ma_período+Fechar[j])/ma_período;

}

isto é para calcular a LWMA

for(j=0;j<Bars;j++)

{

for(i=0,sum=0,sum1=0;i<ma_period;i++)

{

sum=sum+Close[j+i];

sum1=sum1+Close[j+i]*(j+i);

// tampão[j]=sum/ma_período;

}

tampão[j]=sum1/sum;

}

e como calcular o EMA?

 

pergunta sobre indicadores

Olá a todos.

Estou preso a uma questão de programação. Alguém sabe como usar 1 resultado indicador para mudar outra configuração? Por exemplo, se o stockasti diário fosse superior a 20, eu gostaria de uma média móvel de (x). Tentei fazer com que o código funcionasse abaixo, mas para saber se havia disponibilidade. Parece que não consigo fazer a troca ou, se for o caso, ordenar para trabalhar eithor.

duplo 4hrUP;

double daystoch1 = iStochastic(NULL, PERÍODO_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1);

double daystoch20 = 20;

if (daystoch1 > daystoch20) four_hrUP = 5 ;

double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)

 
ajk:
Olá a todos.

Estou preso a uma questão de programação. Alguém sabe como usar 1 resultado indicador para mudar outra configuração? Por exemplo, se o stockasti diário fosse superior a 20, eu gostaria de uma média móvel de (x). Tentei fazer com que o código funcionasse abaixo, mas para saber se havia disponibilidade. Parece que não consigo fazer a troca ou, se for o caso, ordenar para trabalhar eithor.

duplo 4hrUP;

double daystoch1 = iStochastic(NULL, PERÍODO_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1);

double daystoch20 = 20;

if (daystoch1 > daystoch20) four_hrUP = 5 ;

duplo iMA( símbolo de string, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)

Onde está a variável de seu MA?

Talvez isto possa ajudar

double ma4hr=iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift);

se o cálculo da estocagem estiver no mesmo loop, digamos "for(int shift=limit-1; shift>=0; shift--)", o código da estocagem deve ser

double daystoch1 = iStochastic(NULL, PERÍODO_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,shift+1);

CMIIW

 

Uma pequena ajuda com um indicador - Coder's Please Look

Estou testando uma plataforma de corretor MT4 que usa Pips Fractional Pips (pipetas) em suas cotações de preços: Por exemplo, no EURJPY eles cotam como 164.381 ao invés de 164.38 - Isto significa que o spread tem um decimal como 4.1 pips (ao invés de 4).

Alguém pode me dizer como MODIFICAR o seguinte código para que o Spread leia corretamente? Neste momento um spread de 4,1 pips seria lido como 41,0 no Indicador. Qualquer ajuda é apreciada.

Dan

//---- spread

Spread=NormalizeDouble((Ask-Bid)/Point,1);

ObjectSetText("Spread Monitor1", "Spread:", 10, "Arial", labelColor);

ObjectSetText("Spread Monitor2", "DoubleToStr(Spread,1),10, "Arial", clockColor);