Como codificar? - página 283

 

Ajuda para a Expectativa Matemática Por favor

Olá

Pareço ter me espiado até certo ponto.

Estou tentando usar um formulário de expectativa dentro da minha EA Tenho o formulário 1-avgwin/avgloss* precisão do sistema+1 e isso funciona bem, mas gostaria de saber como calcular e exibir a diferença entre a Ordem e o StopLoss, por exemplo

OP_SELLSTOP 1.63406

StopLoss 1.63603

1,63406 - 1,63603 = -0,00197 Acho que este deve ser um número positivo.

Uma expectativa de 1,45

Portanto, para calcular o TakeProfit -0,00197 * 1,45 = -0,00285

Coloque TP em OP_SELLSTOP 1.63406 - 1.63121

e vice versa para a posição Longa

é tudo parte desta linha https://www.mql5.com/en/forum/178980 e se você der uma olhada na excel sheet você verá que estou quase lá.

Qualquer ajuda seria ótima.

Abraço Beno

 
Beno:
Olá

Pareço ter me espiado até um certo ponto.

Estou tentando usar um formulário de expectativa dentro da minha EA Tenho o formulário 1-avgwin/avgloss* precisão do sistema+1 e isso funciona bem, mas gostaria de saber como calcular e exibir a diferença entre a Ordem e o StopLoss, por exemplo

OP_SELLSTOP 1.63406

StopLoss 1.63603

1,63406 - 1,63603 = -0,00197 Acho que este deve ser um número positivo.

Uma expectativa de 1,45

Portanto, para calcular o TakeProfit -0,00197 * 1,45 = -0,00285

Coloque TP em OP_SELLSTOP 1.63406 - 1.63121

e vice versa para a posição Longa

é tudo parte desta linha https://www.mql5.com/en/forum/178980 e se você der uma olhada na excel sheet você verá que estou quase lá.

Qualquer ajuda seria ótima.

Abraço Beno

A maneira mais simples é não pensar sobre isso e usar:

MathAbs duplo (valor duplo)

MathAbs - Documentação MQL4

Cumprimentos

 

Oi CRN

Obrigado pela resposta, é isto que eu tenho tentado.

double PipSL = MathAbs (OrderOpenPrice() - StopLoss); Print (MathAbs (OrderOpenPrice() - StopLoss));

Acho que está certo, mas é só imprimir o PipSL 15769.68328362

12011.01.04 00:00sell stop10.011.542790.000000.000000.0010000.00

22011.01.07 08:20sell10.011.542790.000000.000000.000000.0010000.00

32011.01.07 08:20modify10.011.542791.577120.000000.0010000.00

42011.01.11 23:40close at stop10.011.560451.577120.00000-17.669982.34

e eu exijo a diferença real entre a venda e o SL

 

Alguém, por favor, me ajude.

Olá e Feliz Natal para todos.

Primeiramente sou recém-chegado a este fórum. Tenho problemas com o Ea e alguém pode consertar isso para mim? O problema é como definir este EA para o comércio real e o EA apenas cinza no meu comércio ao vivo.

Aqui o anexo :

spielershedge_library.mqh

spielershedge_pipstar.mq4

spielershedge_ea_v2.8.1.ex4

spielershedge_divergence_v5.1.ex4

-sem que fosse uma velha ea, mas acho que talvez possamos compartilhar e levar algo que nos beneficie a todos.

-Acabei de encontrar isto no sistema Hedge trading spieler derivado da negociação de spreads futuros - Página 193 @ Forex Factory ( SpielersHedge PipStar.mq4 ) e o resto do sistema Hedge trading spieler derivado da negociação de spreads futuros - Página 87 @ Forex Factory

-Desculpe pelo meu inglês ruim.

P/S : Sou muito grato pela lição, guias, comentários e críticas de todos vocês pelo meu aprimoramento. Eu acreditei que quanto mais damos nosso conhecimento, mais aprendemos.

 
Beno:
Oi CRN

Obrigado pela resposta, é isto que eu tenho tentado.

double PipSL = MathAbs (OrderOpenPrice() - StopLoss); Print (MathAbs (OrderOpenPrice() - StopLoss));

Acho que está certo, mas é só imprimir o PipSL 15769.68328362

12011.01.04 00:00sell stop10.011.542790.000000.000000.0010000.00

22011.01.07 08:20sell10.011.542790.000000.000000.000000.0010000.00

32011.01.07 08:20modify10.011.542791.577120.000000.0010000.00

42011.01.11 23:40close at stop10.011.560451.577120.00000-17.669982.34

e eu exijo a diferença real entre a venda e o SL

Se você precisar de uso real iClose(0,0,0)-OrderStopLoss().

mas primeiro selecione a ordem correta por OrderSelect;

Atenciosamente

 

Filtro de tempo com CloseAjuda Tudo Por favor

Gidday

Tenho um filtro de tempo trabalhando na EA, mas tenho tentado anexar um closeall a ele para que, se o tempo for igual ao close time, então feche todas as posições abertas

extern string timefilter="Time Filter";

extern int gmtshift=1; // gmt offset of the broker

extern bool generalfilter=false; // enable time filter

extern int starthour=7; // start hour to trade after this hour

extern int startminutes=0; // minutes of the start hour

extern int endhour=21; // stop to trade after this hour

extern int endminutes=0; // minutes of the start hour

extern bool tradesunday=true; // trade on sunday

extern bool fridayfilter=false; // enable special time filter on friday

extern int fridayhour=21; // stop to trade after this hour

extern int fridayminutes=0; // minutes of the friday hour[/CODE]

[CODE]void start() {

if(generalfilter){

nstarthour=starthour+(gmtshift);if(nstarthour>23)nstarthour=nstarthour-24;

if(nstarthour<10)istarthour="0"+nstarthour;

if(nstarthour>9)istarthour=nstarthour;

if(startminutes<10)istartminutes="0"+startminutes;

if(startminutes>9)istartminutes=startminutes;

tstart=StrToTime(istarthour+":"+istartminutes);

nendhour=endhour+(gmtshift);if(nendhour>23)nendhour=nendhour-24;

if(endhour<10)iendhour="0"+nendhour;

if(endhour>9)iendhour=nendhour;

if(endminutes<10)iendminutes="0"+endminutes;

if(endminutes>9)iendminutes=endminutes;

tend=StrToTime(iendhour+":"+iendminutes);

}

if(fridayfilter){

nfridayhour=fridayhour+(gmtshift);if(nfridayhour>23)nfridayhour=nfridayhour-24;

if(nfridayhour<10)ifridayhour="0"+nfridayhour;

if(nfridayhour>9)ifridayhour=nfridayhour;

if(fridayminutes<10)ifridayminutes="0"+fridayminutes;

if(fridayminutes>9)ifridayminutes=fridayminutes;

tfriday=StrToTime(ifridayhour+":"+ifridayminutes);

}

if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend))

|| (tradesunday==false && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);

if (TimeCurrent() >= tend) {

for (int i=OrdersTotal()-1; i>=0; i--) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==TradeSymbol) {

if (OrderType()==OP_BUY) {

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Yellow);

}

if (OrderType()==OP_SELL) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange);

}

}

}

}

}
 

por favor, me ajude

extern int BuyStopTakeProfit=10;

extern int BuyStopSL=1000;

como codificar

se BuyStopTakeProfit Hit TakeProfit, Apagar todos os pedidos pendentes

por favor, qualquer um pode ajudar

 

Ajuda!!!! Por favor!!!! Função iCustom

Ajuda,

Tentei de tudo para que meu C_EA_rev6.mq4 ligasse para qualquer buffer do indicador personalizado VSATEXTSIGNALS.mq4. Usei a função iCustom, mas ela sempre retorna 2147483647, o que eu entendo ser um código de erro. O indicador personalizado coloca sinais de texto no gráfico com base em técnicas de análise de espalhamento de volume. O indicador personalizado funciona bem quando eu o anexei a um gráfico. Passei incontáveis horas tentando todas as combinações que conheço. Qualquer ajuda seria muito apreciada. Além disso, tenho uma pergunta, você pode usar a função iCustom em um indicador personalizado que chama um script ou arquivo .dll?

Veja os anexos para código para indicador e EA.

Obrigado,

cmfxtrader

Arquivos anexados:
 
cmfxtrader:
Ajuda,

Tentei de tudo para que meu C_EA_rev6.mq4 ligasse para qualquer buffer do indicador personalizado VSATEXTSIGNALS.mq4. Usei a função iCustom, mas ela sempre retorna 2147483647, o que eu entendo ser um código de erro. O indicador personalizado coloca sinais de texto no gráfico com base em técnicas de análise de dispersão de volume. O indicador personalizado funciona bem quando eu o anexei a um gráfico. Passei incontáveis horas tentando todas as combinações que conheço. Qualquer ajuda seria muito apreciada. Além disso, tenho uma pergunta, você pode usar a função iCustom em um indicador personalizado que chama um script ou arquivo .dll?

Veja os anexos para código para indicador e EA.

Obrigado,

cmfxtrader

Olá,

O problema é que enquanto você está tentando ler o buffer do indicador, ele emite mensagens de texto, que não são buffers. Por isso, você está recebendo 2147483647 valor que é VAZIO_VALOR não é um erro.

De qualquer forma, eu acho que você gostaria de automatizar os sinais deste indicador. Há uma solução simples para isso. O indicador é declarado como tendo 7 buffers (#property indicator_buffers 7) mas está usando apenas 5. Os indicadores podem usar no máximo 8 buffers. Isso significa que você pode declarar outro buffer adicional apenas para seus cálculos e preenchê-lo com mensagens identificadas. Você encontrará os números das mensagens na função TextOutput. Basta adicionar números ao seu buffer, dependendo de qual mensagem é exibida. Por exemplo, se o texto for : "UPTHRUST / Weakness_" então adicione 1 ao seu buffer, se a mensagem for PSEUDO UPTHRUST / Weakness_ então adicione 4 e assim por diante. O índice do buffer será o mesmo que o valor da variável "i".

Quanto a sua segunda pergunta: você pode sempre usar a função iCustom para um indicador (não script) e ler os valores se ela preencher os buffers declarados no indicador. Por exemplo, se este for um indicador que desenha linhas, então você pode ler os valores das linhas - porque para desenhar algo (exceto etiquetas) o indicador tem que preencher os buffers. Se o indicador estiver criando objetos gráficos (como aquele que você anexou) então você precisará: a) ler valores de objetos gráficos, ou b) recodificar o indicador (como eu sugeri acima). Não importa se o indicador está usando DLL ou não - basta preencher adequadamente o buffer para ler seus valores a partir da função iCustom.

 
Beno:
Gidday

Tenho um filtro de tempo trabalhando na EA, mas tenho tentado anexar um closeall a ele para que, se o tempo for igual ao close time, então feche todas as posições abertas

extern string timefilter="Time Filter";

extern int gmtshift=1; // gmt offset of the broker

extern bool generalfilter=false; // enable time filter

extern int starthour=7; // start hour to trade after this hour

extern int startminutes=0; // minutes of the start hour

extern int endhour=21; // stop to trade after this hour

extern int endminutes=0; // minutes of the start hour

extern bool tradesunday=true; // trade on sunday

extern bool fridayfilter=false; // enable special time filter on friday

extern int fridayhour=21; // stop to trade after this hour

extern int fridayminutes=0; // minutes of the friday hour[/CODE]

[CODE]void start() {

if(generalfilter){

nstarthour=starthour+(gmtshift);if(nstarthour>23)nstarthour=nstarthour-24;

if(nstarthour<10)istarthour="0"+nstarthour;

if(nstarthour>9)istarthour=nstarthour;

if(startminutes<10)istartminutes="0"+startminutes;

if(startminutes>9)istartminutes=startminutes;

tstart=StrToTime(istarthour+":"+istartminutes);

nendhour=endhour+(gmtshift);if(nendhour>23)nendhour=nendhour-24;

if(endhour<10)iendhour="0"+nendhour;

if(endhour>9)iendhour=nendhour;

if(endminutes<10)iendminutes="0"+endminutes;

if(endminutes>9)iendminutes=endminutes;

tend=StrToTime(iendhour+":"+iendminutes);

}

if(fridayfilter){

nfridayhour=fridayhour+(gmtshift);if(nfridayhour>23)nfridayhour=nfridayhour-24;

if(nfridayhour<10)ifridayhour="0"+nfridayhour;

if(nfridayhour>9)ifridayhour=nfridayhour;

if(fridayminutes<10)ifridayminutes="0"+fridayminutes;

if(fridayminutes>9)ifridayminutes=fridayminutes;

tfriday=StrToTime(ifridayhour+":"+ifridayminutes);

}

if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) || (nstarthour>nendhour && TimeCurrent()tend))

|| (tradesunday==false && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);

if (TimeCurrent() >= tend) {

for (int i=OrdersTotal()-1; i>=0; i--) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==TradeSymbol) {

if (OrderType()==OP_BUY) {

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), Bid, slippage, Yellow);

}

if (OrderType()==OP_SELL) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), Ask, slippage, Orange);

}

}

}

}

}

tente verificar esta parte:

if((generalfilter && (nstarthour<nendhour && TimeCurrent()tend) ||| (nstarthour>nendhour && TimeCurrent()tend)))

||| (comercializa domingo==falso && DayOfWeek()==0) || (fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday))return(0);

a outra parte do código poderia ser mais fácil, mas deveria estar funcionando.

Entretanto, se você sair do script antes de fechar toda a parte, então ele não funcionará, e parece que o script está fazendo isso.

Dê uma olhada nesta parte, por exemplo:

(fridayfilter && DayOfWeek()==5 && TimeCurrent()>tfriday) return(0);

Em inglês significa: se é sexta-feira, e o filtro de sexta-feira está ligado, e o TimeMark foi passado (por exemplo, o tempo final é 18,00 e é 18,01) então return(0).

Deve ser: se for sexta-feira, e o filtro de sexta-feira estiver ligado, e o TimeMark foi passado FECHADO TODOS e (ex. hora final é 18.00 e é 18.01) então retorne(0).

Razão: