Pergunte! - página 76

 

Pergunta da EA

Olá Codersguru,

Estou tentando aprender programação e estou usando seu material, deixe-me dizer que é excelente! passo a passo e simples de seguir, obrigado por isso.

Tenho uma pergunta, já que você usa a cruz ema como exemplo para a EA, eu estava pensando em usar o indicador stepMA_7.2 em vez de ema. Você acha que o stepMA_7.2 funcionará? ou o código precisará ser reordenado ou talvez seja necessário mais código adicional?

Eu estava pensando que apenas uma troca de indicador no código deveria surficar.

Obrigado de antemão

Abraço.

 
Michel:
Isto está errado: as barras anteriores são contadas positivamente
MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,-1);[/PHP] Use this instead:[PHP]MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,1);

Obrigado.

 
 

Ainda estou tendo alguns problemas. As ordens de compra são abertas corretamente, mas todas são fechadas no momento do fechamento, ignorando as condições de saída.

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

//| EA Stripped Down.mq4 |

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

#property copyright ""

#property link ""

extern double StopLoss =13.0;

extern double MA_Open =12.0;

extern double MA_Close =12.0;

extern double MA_Exit =6.0;

extern double Lots =50.0;

#define MAGICMA 20050610

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

int init()

{

return(0);

}

int deinit()

{

return(0);

}

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

int start()

{

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

double MA_CLOSE;

double MA_OPEN;

double MA_EXIT_0;

double MA_EXIT_1;

int res;

if(Volume[0]>1) return;

MA_CLOSE=iMA(NULL,0,MA_Close,1,MODE_SMA,PRICE_CLOSE,0);

MA_OPEN=iMA(NULL,0,MA_Open,1,MODE_SMA,PRICE_OPEN,0);

MA_EXIT_0=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if((MA_CLOSE-MA_OPEN>=1*Point) && MA_EXIT_0>MA_EXIT_1)

{

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Ask-StopLoss*Point,0,"",MAGICMA,0,Blue);

return;

}

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

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

if(Volume[0]>1) return;

MA_EXIT_0=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if(OrderType()==OP_BUY)

{

if(MA_EXIT_0<=MA_EXIT_1) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

return;

}

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

}
 
 

Médiamóvel de outro indicador

Descobrimos isso.

 

verificação de posições em aberto dentro de uma faixa

Estou tentando verificar as posições abertas dentro de x pips, se nenhuma posição estiver aberta, abrirá uma. Não funciona e apenas abre posições continuamente, alguém pode ajudar?

se(comprandoPosição)

{

weBeBuying = verdadeiro;

total de ordens = EncomendasTotal();

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

{

OrderSelect(i,SELECT_BY_POS);

if((OrderSymbol()==Symbol()) && (OrderMagicNumber()==magicNumber))

{

tipo = OrderType();

if((type == OP_BUY) ||| (type == OP_BUYLIMIT))

{

if(((Bid+spread) - OrderOpenPrice()) > -0,0013)

weBeBuying = falso;

}

}

}

}

if(weBeBuying==verdadeiro)

OrderSend(Symbol(),OP_BUY,lots,Bid+spread,slippage,0,0,NULL,magicNumber,0,Green);

 

MA de um indicador iCustom

Como codificar a declaração em uma ea para referenciar uma Média Móvel de 7, Suave, de um indicador iCustom? O que equivale a usar uma Média Móvel usando os dados dos primeiros indicadores. Você pode fazer isso ao exibir um indicador iCustom e ter um MA do indicador (usando dados dos primeiros indicadores), mas como codificá-lo em uma ea??

Por favor, ajude-me nesta afirmação!

Agradeço antecipadamente por sua ajuda!

Dave

Alguém pode ajudar com esta???? Por favor, !!!!

Acho que consegui!

LR0=iCustom(NULL,0, "Laguerre RSI LONG & SHORT ENTRY",0,0); // GAMMA ÚTIL

Ainda preciso de ajuda - Você pode me ajudar!

 

Se você puder postar suas perguntas relacionadas à MQL4, farei o possível para respondê-las.

para código de erro.

Acabo de me informar que em todo meu especialista, eu tenho um código de erro "OrderModify error 1", mesmo com um especialista como o do Coders Guru, abaixo,

por quê?

Obrigado!

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

//| PriceCross.mq4 |

//| Coders Guru |

//| https://www.mql5.com/en/forum |

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

#propriedade copyright "Coders Guru"

#link da propriedade "https://www.forex-tsd.com"

//---- Inclui

#incluir

//---- Limites comerciais

duplo TakeProfit externo = 200;

TrailingStop duplo externo = 50;

StopLoss duplo externo = 50;

Duplo Externo Lots = 0,1;

Exterior int Slippage = 5;

//--- Opções externas

Corrente Interior Externa Bar = 1;

HedgeLevel int externo = 6;

Expiração dupla externa = 7200;

Tamanho int externo = 4;

Exterior int Etapa = 1;

bool externo UseClose = verdadeiro;

//--- Configurações dos indicadores

MaMode int externo = 3;

MaPeriodo MaPeriodo int externo = 24;

//--- Variáveis globais

int MagicNumber = 101090;

string ExpertComment = "PriceCross";

bool LimitPairs = verdadeiro;

bool LimitFrame = verdadeiro;

int TimeFrame = 60;

string LP[] = {"EURUSD", "USDCHF", "GBPUSD", "USDJPY"}; // adicionar/remover a paris que você deseja limitar.

bool Optimize = true;

int NumberOfTries = 5;

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

int init()

{

retorno(0);

}

int deinit()

{

retorno(0);

}

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

bool isNewSymbol(string current_symbol)

{

//loop através de toda a ordem aberta e comparar os símbolos

int total = EncomendasTotal();

for(int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

string selected_symbol = OrderSymbol();

if (símbolo_símbolo_actual ==símbolo_seleccionado && OrderMagicNumber()==Número_de_ordem)

retorno (Falso);

}

retorno (Verdadeiro);

}

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

int start()

{

int cnt, bilhete, total,n;

dupla tendência ;

if(Bars<100) {Imprimir("barras inferiores a 100"); retornar(0);}

if(LimitFrame)

{

if(Period()!=TimeFrame) {Print("Esta EA não está trabalhando com este TimeFrame!"); return(0);}

}

if(LimitPairs)

{

if(AllowedPair(Symbol()) == falso) {Print("Esta EA não está trabalhando com esta moeda!"); return(0);}

}

tendência = iMA(NULL,0,MaPeriod,0,MaMode,PRICE_CLOSE,CurrentBar);

//--- Condições comerciais

bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false ;

se (Abrir[1]tendência)

BuyCondition = verdadeiro;

se (Abrir[1]>tendência && Fechar[1]<tendência)

SellCondition = verdadeiro;

se (Abrir[1]>tendência && Fechar[1]<tendência)

CloseBuyCondition = true;

se (Aberto[1]tendência)

CloseSellCondition = true;

total = EncomendasTotal();

if(total < 1 ||| isNewSymbol(Symbol()))

{

if(BuyCondition) //<-- Condição de compra

{

bilhete = OpenOrder(OP_BUY); //<-- Ordem de Compra Aberta

CheckError(bilhete, "BUY");

for(n=0 ; n< Tamanho ; n+++)

{

ticket = OpenPendingOrder(OP_BUYSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration);

}

retorno(0);

}

if(SellCondition) //<-- Condição de venda

{

bilhete = OpenOrder(OP_SELL); //<-- Ordem de venda aberta

CheckError(bilhete, "SELL");

for(n=0 ; n < Tamanho ; n+++)

{

ticket = OpenPendingOrder(OP_SELLSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration);

}

retorno(0);

}

retorno(0);

}

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) //<-- Abertura de posição longa

{

if(UseClose)

{

if(CloseBuyCondition) //<-- Feche o pedido e saia!

{

CloseOrder(OrderType()); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Preenchimento do pedido

}

if(OrderType()==OP_SELL) //<-- Vá para a posição curta

{

if(UseClose)

{

if(CloseSellCondition) //<-- Feche o pedido e saia!

{

CloseOrder(OP_SELL); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Preenchimento do pedido

}

}

}

retorno(0);

}

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

....

 

Hi,

De qualquer forma, podemos saber que um pedido já está fechado?

A ilustração é assim:

Abro 2 pedidos pendentes.

abrir #182 limite de compra 0,17 EURUSD a 1.3005 sl: 1,2970 tp: 1,3013

aberto #183 limite de compra 0.17 EURUSD a 1.3000 sl: 1.2968 tp: 1.3011

então

ordem #182, compra 0,17 EURUSD é aberta a 1.3005

ter lucro #182 a 1.3013 (1.3013 / 1.3015)

quero eliminar o pedido nº 183 após o fechamento do pedido nº 182. O gatilho é se a ordem #182 for fechada, então a ordem #183 será apagada.

Abraço