Ajuda na codificação - página 351

 
mladen:
stevenpunPara que fosse mais fácil adicionar algum buffer de "direção de inclinação" a esse indicador ou usar algum outro MACD que já tenha essa inclinação resolvida em um buffer

Que tal https://www.mql5.com/en/forum/178018/page67

Mas o problema que eu deveria colocar no código, eu tenho que pesquisar no Google muitas ea, mas não tenho sucesso para encontrar algum exemplo .

Por favor, me mostre um exemplo, obrigado por ajudar.

 
stevenpun:
Que tal https://www.mql5.com/en/forum/178018/page67

Mas o problema que eu deveria colocar no código, eu tenho que pesquisar no Google muitas ea, mas não tenho sucesso para encontrar algum exemplo .

Por favor, me mostre um exemplo, obrigado por ajudar.

stevenpun

Esse seria um bom exemplo a ser utilizado.

Leia o buffer de "cores" e quando o valor nele muda de -1 para 1 é um sinal para comprar, e quando o valor muda de 1 para -1 é um sinal para vender (o "de" é o valor anterior do buffer de cores e "para" é o valor atual, ou se você quiser trabalhar apenas com barras fechadas, "de" é 2 barras atrás e "para" é 1 barra atrás)

 

Hi,

sou novo aqui. Eu gostaria de atualizar um objeto retângulo, mas não sei como. O código abaixo eu usava para criar retângulos de objeto, se os EMAs se cruzassem. Estes retângulos devem terminar se o preço voltar e tocá-lo. Como fazer isso ?

Agradecemos antecipadamente.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 clrLime

#property indicator_width1 2

#property indicator_color2 clrMagenta

#property indicator_width2 2

extern int EMA1 = 3;

extern int EMA2 = 21;

extern int EMA3 = 63;

extern double arrowDistance = 0.0003;

extern color upRectColor = clrYellow;

extern color dnRectColor = clrDodgerBlue;

extern color touchRectColor = clrDarkGray;

//---

extern double rectHigh = 0.0001;

extern int rectDays = 3;

extern int bars_limit = 2000;

extern bool showRectangle = true;

double upArrow[];

double dnArrow[];

double prev2EMA1, prev2EMA2, prev2EMA3;

double prevEMA1, prevEMA2, prevEMA3;

double curEMA1, curEMA2, curEMA3;

double prevOpenPrc, prevClosePrc, prevLowPrc, prevHighPrc;

string objRectName;

string rectArray[];

string indiName = "Emac";

int rectValidity = 0;

int arrayMaxAmounts = 99999;

int arrayCurAmount = 0;

int arrayLastAmount = 0;

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

//| INIT() |

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

int init() {

if (Period() != PERIOD_H1) {

Alert("Use only @ TF: H1");

return(0);

}

ArrayResize(rectArray,arrayMaxAmounts,arrayMaxAmounts);

IndicatorBuffers(2);

SetIndexBuffer(0,upArrow);

SetIndexBuffer(1,dnArrow);

SetIndexStyle(0,DRAW_ARROW);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(0,233);

SetIndexArrow(1,234);

SetIndexEmptyValue(0,0.0);

SetIndexEmptyValue(1,0.0);

SetIndexLabel(0,"Up");

SetIndexLabel(1,"Dn");

return(0);

}

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

//| DEINIT() |

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

int deinit() {

int k=0;

while (k<ObjectsTotal()) {

string objname = ObjectName(k);

if (StringSubstr(objname,0,StringLen("Emac")) == "Emac")

ObjectDelete(objname);

else

k++;

}

return(0);

}

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

//| START() |

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

int start() {

if (Period() != PERIOD_H1) {

Alert("Use only @ TF: H1");

return(0);

}

int limit,i,k;

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---

if (limit>bars_limit-1 && bars_limit!=0) limit=bars_limit-1;

if (Bars<EMA1 || Bars<EMA2 || Bars0 && bars_limit0 && bars_limit0 && bars_limit<EMA3)) {

Alert("Adjust limit settings or put more bars on your chart!");

return(0);

}

//---

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

prev2EMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i+2);

prev2EMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i+2);

prev2EMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i+2);

prevEMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i+1);

prevEMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i+1);

prevEMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i+1);

curEMA1 = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,i);

curEMA2 = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,i);

curEMA3 = iMA(NULL,0,EMA3,0,MODE_EMA,PRICE_CLOSE,i);

prevOpenPrc = iOpen(NULL,0,i+1);

prevClosePrc = iClose(NULL,0,i+1);

prevLowPrc = iLow(NULL,0,i+1);

prevHighPrc = iHigh(NULL,0,i+1);

rectValidity = rectDays*86400;

if ( (prev2EMA1=prevEMA2)&&(curEMA1>curEMA2)&&(prevEMA2>=prevEMA3)&&(curEMA2>curEMA3) ) { // up

upArrow = prevLowPrc - arrowDistance;

if (showRectangle == true) {

//----------------------- Draw Rectangle ----------------------

objRectName = StringConcatenate(indiName,"_",FuncPeriodToStr(Period()),"_",DoubleToStr(Time,0));

if (ObjectFind(objRectName) == -1) { // not exists

ObjectCreate(objRectName, OBJ_RECTANGLE, 0,Time,prevLowPrc,Time+rectValidity,prevLowPrc+rectHigh);

ObjectSet(objRectName, OBJPROP_COLOR, upRectColor);

ObjectSet(objRectName, OBJPROP_WIDTH, 0);

ObjectSet(objRectName, OBJPROP_STYLE, STYLE_SOLID);

//--- put information to Array ---

arrayCurAmount = ArraySize(rectArray);

rectArray[arrayCurAmount] = StringConcatenate(objRectName,"$up$",Time,"$",prevClosePrc,"$0"); // 0=new, not yet touched

} // if

} // if

} // if

if ( (prev2EMA1>prev2EMA2)&&(prevEMA1<=prevEMA2)&&(curEMA1<curEMA2)&&(prevEMA2<=prevEMA3)&&(curEMA2<curEMA3) ) { // down

dnArrow = prevHighPrc + arrowDistance;

if (showRectangle == true) {

//----------------------- Draw Rectangle ----------------------

objRectName = StringConcatenate(indiName,"_",FuncPeriodToStr(Period()),"_",DoubleToStr(Time,0));

if (ObjectFind(objRectName) == -1) { // not exists

ObjectCreate(objRectName, OBJ_RECTANGLE, 0, Time,prevHighPrc,Time+rectValidity,prevHighPrc-rectHigh);

ObjectSet(objRectName, OBJPROP_COLOR, dnRectColor);

ObjectSet(objRectName, OBJPROP_WIDTH, 0);

ObjectSet(objRectName, OBJPROP_STYLE, STYLE_SOLID);

//--- put information to Array ---

arrayCurAmount = ArraySize(rectArray);

rectArray[arrayCurAmount] = StringConcatenate(objRectName,"$dn$",Time,"$",prevClosePrc,"$0"); // 0=new, not yet touched

} // if

} // if

} // if

} // for

//----------------------- Edit Rectangle, change time2 & color, if price touched ----------------------

return(0);

} // start

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

void DelObjects(string id) {

int ot1=ObjectsTotal();

while(ot1>=0) {

if (StringFind(ObjectName(ot1),id,0)>-1) {

ObjectDelete(ObjectName(ot1));

}

ot1--;

}

return;

}

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

string FuncPeriodToStr(int thePeriod) {

switch(thePeriod) {

case 1: return("M1");

case 5: return("M5");

case 15: return("M15");

case 30: return("M30");

case 60: return("H1");

case 240: return("H4");

case 1440: return("D1");

case 10080: return("W1");

case 43200: return("MN1");

default: return("MN1");

}

}

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

 

Como se comunicar entre dois ou mais EAs?

 

O newBie está tentando desenvolver isto para o MT4 construir 670. Ajuda ~

Faça o download do robô comercial 'Três Médias Móveis' (Expert Advisor) para MetaTrader 5 no Mercado MetaTrader?

Eu gosto disso porque gosto do K.I.S.S. (mantenha-o simples e estúpido)

Eu sou um novato e gostaria de desenvolver isto.

(1. versão_01)

Quando funciona, ele coloca a posição imediatamente assim que a EA está ligada.

É como a engenharia reversa de .ex5 para criar .mq4.

(2. versão_02)

Na mesma tabela, visualizar o R & S semanal que será encontrado a partir do Zig-Zag.

(3. versão_03)

Acrescentar lógica,

--- não entre acima ou abaixo de 20pips de linha de tendência.

desmarque a posição, com 20 pips de diferença do R & S semanal.

Sua ajuda será grata ~

Obrigado de antemão ~

 

cosmiclifeform, é engraçado que eu não consegui fazer a Nice TraderEA voltar a testar desde então, então eu não consegui otimizá-la, eu fiz isso em alpari demo e ista forex , o mesmo.... continua me dando um resultado em branco.

cosmiclifeform:
Olá Mastercash,

Consegui baixar e executar o NiceTrader EA no Testador de Estratégia sem problemas.

Eu apenas usei as configurações padrão e não mudei nada...e não recebi nenhuma mensagem de erro.

Não tentei executá-lo em tempo real em minha demonstração... mas esta EA funciona bem com o Testador de Estratégia. Veja o gráfico anexo...

Você recebe alguma mensagem de erro de log ou outras pistas sobre por que não está trocando por você...?

Espero que isto ajude,

Robert

 
Mastercash:
cosmiclifeform, é engraçado que eu não consegui fazer a Nice TraderEA voltar a testar desde então, então eu não consegui otimizá-la, eu fiz isso em alpari demo e ista forex , o mesmo.... continua me dando um resultado em branco.

Olá Mastercash,

Eu executei a EA em uma conta demo da FXDD...e não fiz nada de especial...apenas executei a EA no Testador de Estratégia com as configurações padrão.

Gostaria de poder ajudar mais... mas sem pistas específicas para rastrear (registros de erros, capturas de tela e outras condições) será impossível descobrir porque você está obtendo resultados em branco.

Tudo o que eu posso recomendar é...

Primeiro tente um bom EA no testador que você sabe que funciona bem.

Isto estabelecerá que tanto suas contas demo quanto seus procedimentos estão OK.

Tenha confiança em primeiro lugar de que tudo funciona da maneira que deve funcionar.

Em seguida, tente a sua Nice TraderEA... e escreva exatamente o que acontece. Mesmo uma tela em branco deve ter registros para verificar.

Tente adicionar declarações de IMPRESSÃO e COMENTÁRIOS em todos os lugares...depois verifique novamente seus logs...tanto a aba EA quanto a aba Journal...

Também seus COMMENT's aparecerão na tela...então você deve realmente ver sua EA funcionando ou não.

O resultado final em obter uma boa ajuda para a codificação...

é fornecer o máximo de pistas que você pode encontrar sobre o que está acontecendo com sua EA...

Continue tentando tudo o que for possível...e nos informe sobre os resultados.

Tome cuidado,

Robert

 
apprentice coder:
Como se comunicar entre dois ou mais EAs?

Se você quer dizer se existe alguma função ou conjunto de funções dedicadas para isso, então a resposta é: não existe tal coisa.

Tenho visto algumas tentativas e, até agora, nenhuma delas funciona em todas as situações. Exceto uma. Mas uma é inventada por mim e como a idéia é tão simples que ainda não consigo acreditar que ninguém tenha pensado nela (ela até fornece comunicação de EAs que não estão no mesmo local e não usa nenhum API para isso) então estou mantendo essa solução para mim (neste caso estou esperando para ver se alguém pensa na mesma coisa).

Apenas tente pensar fora dos limites esperados

 
mladen:
Se você quer dizer se existe alguma função ou conjunto de funções dedicadas para isso, então a resposta é: não existe tal coisa.

Tenho visto algumas tentativas e até agora nenhuma delas funciona em todas as situações. Exceto uma. Mas uma é inventada por mim e como a idéia é tão simples que ainda não consigo acreditar que ninguém tenha pensado nela (ela até fornece comunicação de EAs que não estão no mesmo local e não usa nenhum API para isso) então estou mantendo essa solução para mim (neste caso estou esperando para ver se alguém pensa na mesma coisa)

Apenas tente pensar fora dos limites esperados

Eu sei o que você quer dizer: as idéias às vezes valem muito mais do que a maneira como são feitas depois disso. Obrigado

 

Olá,

querida mladen, eu tenho um pequeno pedido a Você - você poderia desligar todas as informações que o indicador anexado abaixo mostra no canto superior esquerdo?

obrigado de antemão ;-)

Arquivos anexados:
Razão: