Como codificar? - página 310

 

...

Para a(s) dispersão(ões) de tempo de execução utilize este :

double currentSpread = MarketInfo(Symbol().MODE_SPREAD);
Premeus:
Quero mostrar o código de propagação em tempo real dentro da EA. Qualquer um me dê alguns conselhos.
 

Obrigado Malden. Mas eu sei que o código PHP para o servidor web . eu não sei codificar no lado EA. Ou é para os outros.

Por favor, me diga mais especificamente. Desculpe-me por ser novo na programação da MQL4.

E eu não sei como e qual parte do programa foi executada quando um novo preço chegou.

O programa inteiro ou em init() ou dentro do início().

Quero obter informações e mostrar como peço este tópico.

 

Premeus

Esse é o código MQl 4 do metatrader que obtém o spread para o símbolo atual. Basta copiá-lo para seu código e você terá as informações de propagação recuperadas dessa forma

Essa linha de código deve estar em início() a fim de verificar o spread em cada tick (já que pode mudar em cada tick). Uma vez chamada a função MarketInfo() e atribuído o valor à variávelSpread atual, use a funçãoSpread atual para quaisquer testes ou qualquer outro processamento que você precise

Premeus:
Obrigado Malden. Mas eu sei que o código PHP para o servidor web. Eu não sei codificar no lado EA. Ou é para os outros.

Por favor, me diga mais especificamente. Desculpe-me por ser novo na programação da MQL4.

E não tenho certeza de como e qual parte do programa foi executada quando um novo preço chegou.

O programa inteiro ou em init() ou dentro do início().

Quero receber informações e mostrar como peço este tópico.
 

MartingailExpert_v1.0_Stochastic, como?

Hi!

Alguém pode me dizer, porque não posso inserir o Stoploss no Order send ticket?

Quando eu o inseri, a EA não funciona!

Obrigado!

//+

//| aaa.mq4 |

+

//| Copyright Š 2007, MetaQuotes Software Corp. |

//| TeamWox Groupware / MetaQuotes Software Corp. |

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

#Direitos Autorais de Propriedade Intelectual "Copyright Século 2007, MetaQuotes Software Corp."

#link do proprietário "http://www.metaquotes.net"

passo duplo externo=25;

modo StepMode externo int=0;

// Ĺńëč StepMode = 0, ňî řŕă ěĺćäó îđäĺđŕěč ôčęńčđîâŕííűé č đŕâĺí step

// Ĺńëč StepMode = 1, ňî řŕă ďîńňĺďĺííî óâĺëč÷čâŕĺňń˙

fator duplo externo=10;

duplo mult=1,5;

compra dupla externa de lotes=0,01;

venda em lotes duplos externos=0,01;

duplo externo por_K=200;

duplo externo por_D=20;

duplo externo lento=20;

duplo externo por_K=20; duplo externo por_D=20; duplo externo por_K=20; duplo externo por_D=20;

duplo externo zonaSELL=80;

duplo externo Magicbuy=555;

duplo externo Magicbuy=555; duplo externo Magicsell=556;

duplo openpricebuy,openpricesell,lotsbuy2,lotssell2,lastlotbuy,lastlotsell,tpb,tps,cnt,smbuy,smsell,lotstep,

compra de bilhetes,ticketsell,maxLot,free,balance,lotsell,lotbuy,dig,sig_buy,sig_sell,ask,bid;

int OrdersTotalMagicbuy(int Magicbuy)

{

int j=0;

int r;

for (r=0;r<OrdensTotal();r++)

{

if(OrderSelect(r,SELECT_BY_POS,MODE_TRADES))

{

if (OrderMagicNumber()==Magicbuy) j++;

}

}

retorno(j);

}

int OrdensTotalMagicsell(int Magicsell)

{

int d=0;

int, s.f;

para (n=0;n<OrdensTotal();n+++)

{

if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES))

{

se (OrderMagicNumber()==Magicsell) d++;

}

}

retorno(d);

}

int orderclosebuy(int ticketbuy)

{

símbolo de corda = Símbolo();

int cnt;

for(cnt = OrderTotal(); cnt >= 0; cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == símbolo && OrderMagicNumber()==Magicbuy)

{

ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotsbuy2=OrderLots() ;

double bid = MarketInfo(símbolo,MODE_BID);

RefreshRates();

OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta);

}

}

lotsbuy2=lotsbuy;return(0);

}

int orderclosesell(int ticketsell)

{

símbolo de corda = Símbolo();

int cnt;

for(cnt = OrderTotal(); cnt >= 0; cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == símbolo && OrderMagicNumber()==Magicsell)

{

ticketsell=OrderTicket();OrderSelect(ticketsell, SELECT_BY_TICKET, MODE_TRADES);lotssell2=OrderLots() ;

double ask = MarketInfo(symbol,MODE_ASK);

RefreshRates();

OrderClose(ticketsell,lotssell2,ask,3, Lime);

}

}

lotssell2=lotssell;return(0);

}

int start()

{

//----

compra de lucro dupla=0; lucro dupla=0;

símbolo de corda = OrderSymbol();

spread duplo = MarketInfo(símbolo,MODE_SPREAD);

double minLot = MarketInfo(símbolo,MODE_MINLOT);

if (minLot==0,01){dig=2;maxLot=MarketInfo(symbol,MODE_MAXLOT);}

if (minLot==0,1){dig=1;maxLot=((AccountBalance()/2)/1000);}

if(OrderTotalMagicbuy(Magicbuy)>0)

{

duplo smbuy;

para (cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);

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

{

compra de bilhetes = OrderTicket();OrderSelect(ticketbuy,SELECT_BY_TICKET, MODE_TRADES);

smbuy = smbuy+OrderLots();openpricebuy = OrderOpenPrice();lastlotbuy = OrderLots();

}

}

{

if (smbuy+(NormalizeDouble((lastlotbuy*mult),dig))<maxLot)

{

if(StepMode==0)

{

if(Ask<==openpricebuy-step*Point)

{

lotsbuy2=lastlotbuybuy*mult;

RefreshRates();ticketbuy=OrderSend(Symbol(),OP_BUY,NormalizeDouble(lotsbuy2,dig),Ask,3,0,0, "MartingailExpert",Magicbuy,0,Blue);

}

}

if(StepMode===1)

{

if(Ask<==openpricebuy-(step+OrdersTotalMagicbuy(Magicbuy)+OrdersTotalMagicbuy(Magicbuy)-2)*Ponto)

{

lotsbuy2=lastlotbuybuy*mult;

RefreshRates();ticketbuy=OrderSend(Symbol(),OP_BUY,NormalizeDouble(lotsbuy2,dig),Ask,3,0,0, "MartingailExpert",Magicbuy,0,Blue);

}

}

}

}

}

if(OrdensTotalMagicsell(Magicsell)>0)

{

duplo smsell;

para (cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES);

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

{

ticketsell = OrderTicket();OrderSelect(ticketsell,SELECT_BY_TICKET, MODE_TRADES);

smsell = smsell + OrderLots();openpricesell = OrderOpenPrice();lastlotsell = OrderLots();

}

}

{

if (smsell+(NormalizeDouble((lastlotsell*mult),dig))<maxLot)

{

if(StepMode==0)

{

if(Bid>=openpricesell+step*Point)

{

lotssell2=lastlotsell*mult;

RefreshRates();ticketsell=OrderSend(Symbol(),OP_SELLL,NormalizeDouble(lotssell2,dig),Bid,3,0,0, "MartingailExpert",Magicsell,0,Red);

}

}

if(StepMode===1)

{

if(Bid>=openpricesell+(step+OrdersTotalMagicsell(Magicsell)+OrdersTotalMagicsell(Magicsell)-2)*Ponto)

{

lotssell2=lastlotsell*mult;

RefreshRates();ticketsell=OrderSend(Symbol(),OP_SELLL,NormalizeDouble(lotssell2,dig),Bid,3,0,0, "MartingailExpert",Magicsell,0,Red);

}

}

}

}

}

//xm7 modificação para mudar a forma como o sinal é gerado. O código antigo está no final

duplo Stoch_0 = iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,0,0);

duplo Stoch_1 = iStochastic(NULL,0,per_K,per_D,slow,MODE_LWMA,1,0,1);

if(OrdersTotalMagicbuy(Magicbuy)<1)

{

if(Stoch_0 > zoneBUY && Stoch_1 <= zoneBUY)

compra de bilhetes = OrderSend(Symbol(),OP_BUY,lotsbuy,Ask,3,0,0, "MartingailExpert",Magicbuy,0,Blue);

}

if(OrdensTotalMagicsell(Magicsell)<1)

{

if(Stoch_0 = zonaSELL)

ticketsell = OrderSend(Symbol(),OP_SELL,lotssell,Bid,3,0,0, "MartingailExpert",Magicsell,0,Red);

}

para (cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

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

{

compra de bilhetes = OrderTicket();OrderSelect(ticketbuy,SELECT_BY_TICKET, MODE_TRADES);profitbuy = profitbuy+OrderProfit() ;

openpricebuy = OrderOpenPrice();

}

}

tpb = (OrderTotalMagicbuy(Magicbuy)*proffactor*proffactor*Point)+openpricebuy;

double bid = MarketInfo(Symbol(),MODE_BID);

if (profitbuy>0)

{

if (Bid>=tpb) orderclosebuy(ticketbuy);

}

para (cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

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

{

ticketsell = OrderTicket();OrderSelect(ticketsell,SELECT_BY_TICKET, MODE_TRADES);profitell = profitell+OrderProfit();

openpricesell = OrderOpenPrice();

}

}

tps = openpricesell-(OrderTotalMagicsell(Magicsell)*proffactor*Point);

double ask = MarketInfo(Symbol(),MODE_ASK);

if (profitell>0)

{

se (Pergunte<=tps)orderclosesell(ticketell);

}

livre = AccountFreeMargin();saldo = AccountBalance();

para (cnt=0;cnt< OrderTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicbuy) ticketbuy = OrderTicket();

if (OrderSymbol()==Symbol() && OrderMagicNumber () == Magicsell) ticketsell = OrderTicket();

}

se (OrderTotalMagicbuy(Magicbuy)==0)

{

profitbuy=0;ticketbuy=0;tpb=0;

}

se (OrdersTotalMagicsell(Magicsell)==0)

{

profitell=0;ticketell=0;tps=0;

}

Comentário("FreeMargin = ",NormalizeDouble(free,0)," Balance = ",NormalizeDouble(balance,0)," maxLot = ",NormalizeDouble(maxLot,dig),"\n",

"Totalbuy = ",OrdersTotalMagicbuy(Magicbuy)," Lot = ",smbuy," Totalsell = ",OrdersTotalMagicsell(Magicsell)," Lot = ",smsell,"\n",

"---------------------------------------------------------------","\n","Profitbuy = ",profitbuy,"\n",

"Lucitsell = ",profitell);

//----

for(int ii=0; ii<2; ii+=2)

{

ObjectDelete("reto "+ii);

ObjectCreate("rect "+ii,OBJ_HLINE, 0, 0,tps);

ObjectSet("reto "+ii, OBJPROP_COLOR, Vermelho);

ObjectSet("reto "+ii, OBJPROP_WIDTH, 1);

ObjectSet("reto "+ii, OBJPROP_RAY, Falso);

}

for(int rr=0; rr<2; rr+=2)

{

ObjectDelete("rect1"+rr);

ObjectCreate("rect1"+rr,OBJ_HLINE, 0, 0,tpb);

ObjectSet("rect1"+rr, OBJPROP_COLOR, Azul);

ObjectSet("rect1"+rr, OBJPROP_WIDTH, 1);

ObjectSet("ret1"+rr, OBJPROP_RAY, False);

}

retorno(0);

}
 

...

Podem ser algumas das razões, mas as mais comuns são :

- parar de perder e/ou ter lucro estão muito próximos do preço atual

- seu corretor é um corretor do tipo ECN/STP, neste caso você tem que primeiro colocar uma ordem com stop loss e ter lucro ajustado a 0 e somente quando uma ordem é aberta você pode modificar o stop loss e/ou ter lucro para os valores desejados (honrando o ponto anterior, é claro)

pearl1:
Hi!

Alguém pode me dizer, por que não posso inserir o Stoploss no Order send ticket?

Quando eu o inserir, a EA não vai funcionar!

Obrigado!
 

Olá a todos, gostaria de verificar como posso obter o último preço atual na tabela? Eu conheço seu noob, mas parece que não consigo encontrar os ans. Por favor, ajudem-me. Obrigado.

Cumprimentos

Terrance

 

...

Depende de qual :

- preço atual da licitação é Bid

- preço pedido atual é Ask

- qualquer outro preço: use índice zero para o preço atual, então Fechar[0] é o fechamento atual, Abrir[0] é o aberto atual e assim por diante

tkuan77:
Olá a todos, gostaria de verificar como posso obter o último preço atual na tabela? Eu conheço seu noob, mas parece que não consigo encontrar os ans. Por favor, ajudem-me. Obrigado.

Cumprimentos

Terrance
 

Oi Mladen, o que eu estou tentando fazer é um cheque. Por exemplo, se o preço atual estiver acima do SMA 100, eu vou fazer um zoom para baixo para um período de tempo mais baixo e só vou olhar para o sinal de compra. Mas se eu usar Bid ou Ask, o sistema não pode decidir se estou atualmente olhando para longo ou curto desde Bid eu deveria estar procurando por longo e vice-versa por Ask (me corrija se eu estiver errado aqui).

O conceito que eu tinha em mente é um pouco semelhante ao sistema de 3 patos na parte de verificação. Por favor, me aconselhe aqui. Obrigado.

Cumprimentos

Terrance

mladen:
Depende de qual :
- o preço atual de compra é Bid-

o preço atual de compra é Ask

- qualquer outro preço : use índice zero para o preço atual, então Close[0] é o fechamento atual, Open[0] é o aberto atual e assim por diante

 

...

... Terrance

Use Close[0] nesse caso. Quase todas as EA estão usando Close para esse fim, então eu acho que funcionará para você também

tkuan77:
Oi Mladen, o que eu estou tentando fazer é um cheque. Por exemplo, se o preço atual estiver acima do SMA 100, eu vou fazer um zoom para baixo para um período de tempo mais baixo e só vou olhar para o sinal de compra. Mas se eu usar Bid ou Ask, o sistema não pode decidir se estou atualmente olhando para longo ou curto desde Bid eu deveria estar procurando por longo e vice-versa por Ask (me corrija se eu estiver errado aqui).

O conceito que eu tinha em mente é algo semelhante ao sistema de 3 patos na parte de verificação. Por favor, me aconselhem aqui. Obrigado.

Cumprimentos

Terrance
 

EA não funciona entre a mudança de preços

Notei que minha EA não funcionava entre a mudança de preço no prazo M1. Eu sei que a EA será executada a cada tic-tac que entrar.

Mas vi que foi executado a cada novo começo de barra.

Estou me entendendo mal?

Existe a forma como a força ea ativa cada carrapato que entra?

Eu tento controlar meus lucros e perdas usando lucros e perdas não em pips. Quando ocorre um pico, a EA não fecha a ordem quando chega a estabelecer lucros ou perdas até que ocorra uma nova barra.

Qualquer pessoa me ajuda a resolver este problema.

Eu sou novo na codificação da EA.

Obrigado antecipadamente.

Razão: