Como codificar? - página 164

 
MiniMe:
Obrigado Ralph, mas eu estaria faltando a troca, e quero incluir o lucro/perda da troca no fechamento da decisão de compra.

Mas o primeiro loop acumula tanto o lucro quanto a troca, não é verdade?

Eu estava pensando que o valor de Equidade é o que deve ser comparado com o que 5 pips significariam para os lotes abertos.... e você então não precisa realmente calcular o preço do break-even.

 

Oi Ralph

Eu tenho 3 variáveis

OrdLots ; em lotes e representam os lotes abertos, mas isso irá saltar a troca

Equidade; esta é a perda de lucro total e esta incluirá a troca

MinPro ; este é o meu take profit que é 5 pips + o breakeven point

Eu não posso usar OrdLots para encontrar o lucro/perda em pips, pois isso irá pular a troca

Não posso usar Equidade para encontrar o lucro/perda em pips porque para isso preciso saber quanto lotes são usados, mas meu cálculo para os lotes salta a troca

De alguma forma eu preciso usar uma função de OrdLots e Equity para saber quantos pips estão abertos

Pode haver algo pronto no MT4 que relacione o saldo da conta ou o patrimônio líquido da conta, mas não encontrei nenhum

A solução que você propôs com agradecimento encontrará o lucro/perda em pips sem considerar a troca, mas eu já coloquei uma função para isso ... Quero sair a 5 pips acima do ponto de equilíbrio com o swap

 

Comparar tempos e fazer loop

Olá a todos.

Eu sou muito inexperiente com a linguagem Mql4. Eu quero comparar o tempo de abertura com um Int var e se ele me ocupa um certo tempo e as ordens ainda estão abertas eu quero aumentar a quantidade de ordens abertas permitidas para que eu possa tentar alcançar uma situação de Breakeven ou talvez uma situação de lucro e então fechar todas as ordens abertas ao mesmo tempo e ajustar o máximo de ordens de volta ao máximo permitido originalmente. Alguém pode me ajudar ou me mostrar um código em outro posto que já faça algo assim.

Estou usando este código mas parece que ele não funciona.

// Se as ordens estiverem abertas por um longo tempo, fechem as ordens e tentem equilibrar

Proteção contra o tempo vazio()

{

int totalorder = OrderTotal();

for(int i=totalordens-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS);

se ( OrderSymbol()==Symbol() )

{

prTime = OrderOpenTime();

prTime = prTime * CallTime;

se (prTime >= TimeCurrent())

{

MaxAllowable_Trades = MaxAllowable_Trades + 3;

bandeira = 1;

pausa;

}

}

}

retornar;

}

Eu realmente gostaria de sua ajuda nisso.

Obrigado

 
MiniMe:
Oi Ralph

Eu tenho 3 variáveis

OrdLots ; em lotes e representam os lotes abertos, mas isso irá saltar a troca

Equidade; esta é a perda de lucro total e esta incluirá a troca

MinPro ; este é o meu take profit que é 5 pips + o breakeven point

Eu não posso usar OrdLots para encontrar o lucro/perda em pips, pois isso irá pular a troca

Não posso usar Equidade para encontrar o lucro/perda em pips porque para isso preciso saber quanto lotes são usados, mas meu cálculo para os lotes salta a troca

De alguma forma eu preciso usar uma função de OrdLots e Equity para saber quantos pips estão abertos

Pode haver algo pronto no MT4 que relacione o saldo da conta ou o patrimônio líquido da conta, mas não encontrei nenhum

A solução que você propôs com agradecimento encontrará o lucro/perda em pips sem considerar a troca, mas eu já coloquei uma função para isso ... Quero sair a 5 pips acima do ponto de equilíbrio com o swap

Ah... talvez eu entenda... Portanto, se você também acumular lucro sem trocar para EquityNoSwap no primeiro loop, então você poderia usar isso em vez de Equity em minha declaração de "se". (...) Porque então o teste seria "há 5 pips de lucro relativo ao preço do breakeven+swap?" que na verdade é o mesmo que "há 5 pips de lucro ignorando o swap? (ou talvez eu ainda não entenda)

Basicamente "lucros+swap" é relativo "breakeven", e assim "lucros" é relativo "breakeven+swap", e "lucros" é distribuído sobre "OrdLots". Em suma, você ainda não precisa determinar um preço real de pips para o "breakeven".

 

Melhor idéia de codificação EA

Estou aprendendo a codificar o indicador anexado, mas não funcionou. Alguém poderia ajudar? É um indicador muito confiável e se alguém pudesse fazer um EA para ele... é quase um santo graal.tia.

O preço básico é:

1.abrir Posição de venda quando a seta vermelha aparece,

2 abrir posição de compra quando a seta branca aparecer e fechar automaticamente todas as posições/ posições de venda.

3.aplicar para qualquer período de tempo .

4.sem perda de parada,

5.adicionar função de ordem.

Aguarde a resposta!

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

//| IINWMARROWS.mq4 |

//| Baseado em EMA_CROSS.mq4 |

//| Copyright ?2006, MetaQuotes Software Corp. |

//| Software de Comércio Forex: Plataforma de negociação Forex MetaTrader 4 |

//| Última pequena modificação por Iin Zulkarnain |

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

#Copyright ?2006, MetaQuotes Software Corp."

#link da propriedade "http://www.metaquotes.net"

//----

#janela_do_cartão_indicador de propriedade

#property indicator_buffers 2

#Indicador de propriedade_color1 Branco

#indicador de propriedade_color2 Vermelho

#largura_do_indicador de propriedade1 2

#largura_do_indicador de propriedade2 2

//----

duplo CrossUp[];

duplo CrossDown[];

externo int FasterMode=3; //0=sma, 1=ema, 2=smma, 3=lwma

externo int FasterMA= 3;

extern int SlowerMode=3; //0=sma, 1=ema, 2=smma, 3=lwma

externo int SlowerMA= 3;

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

//| Função de inicialização do indicador personalizado |

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

int init()

{

//---- indicadores

SetIndexStyle(0, DRAW_ARROW, EMPTY);

SetIndexArrow(0, 233);

SetIndexBuffer(0, CrossUp);

SetIndexStyle(1, DRAW_ARROW, EMPTY);

SetIndexArrow(1, 234);

SetIndexBuffer(1, CrossDown);

//----

retorno(0);

}

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

//| Função de desinicialização de indicador personalizada |

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

int deinit()

{

//----

//----

retorno(0);

}

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

//| Função de iteração de indicador personalizada |

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

int start()

{

int limit, i, counter;

duplo mais rápidoMAnovem, mais lentoMAnovem, mais rápidoMAnovem, mais lentoMAafter, mais lentoMAafter;

alcance duplo, AvgRange;

int counted_bars=IndicatorCounted();

//---- verificação de possíveis erros

if(counted_bars<0) return(-1);

//---- última barra contada será contada novamente

if(counted_bars>0) counted_bars--;

//----

limite=barras_contadas_combarras;

for(i=0; i<=limite; i++)

{

counter=i;

Faixa=0;

AvgRange=0;

for(counter=i ;counter<=i+9;counter+++)

{

AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);

}

Alcance=AvgRange/10;

fasterMAnow=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i);

fasterMAprevious=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i+1);

fasterMAafter=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i-1);

//----

slowerMAnow=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i);

slowerMAprevious=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i+1);

slowerMAafter=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i-1);

if ((fasterMAnow > slowerMAnow) && (fasterMAprevious slowerMAafter))

{

CrossUp=Baixo - Alcance*0,5;

}

senão se ((fasterMAnow slowerMAprevious) && (fasterMAafter < slowerMAafter))

{

CrossDown=Alto + Alcance*0,5;

}

}

retorno(0);

}

//+------------------------------------------------------------------+ este tópico para aprender a codificar corretamente, estou aprendendo a codificar para

 

Para os grandes e corajosos codificadores

qualquer um pode adicionar posições máximas para este EA

ou deixá-lo correr apenas uma posição ?

agradecimentos antecipados

Arquivos anexados:
reverse_1.mq4  16 kb
 

Post Eliminado

 

pergunta fora de tópico

İs é possível farejar dados do programa de fontes não abertas?

Eles têm a pobre linguagem de programação (semelhante ao Metastock mas mais pobre, sem a função "anterior" permitida). Eles só permitem seus próprios indicadores e têm o monopólio de dados (pela lei).İt não é possível escrever uma extensão de DLL para pôr meus indicadores funcionando em tempo real em ambiente.

Todos os programadores respondem muito bem.

 

Pedido aberto para um par diferente

Hi,

existe alguma forma de abrir um pedido para um par de moedas diferente.

Por exemplo, a EA está rodando em um gráfico EURUSD, mas eu quero abrir uma ordem para USDJPY.

Isto é possível.

Obrigado de antemão.

 

OrderSend("USDJPY",OP_BUY,0.1,MarketInfo("USDJPY",MODE_ASK),10,0,0,0, "Com",0,0,CLR_NONE);

Razão: