Como codificar? - página 110

 

Hi.

Estou ansioso para aprender seus truques e mostrar-lhe os meus.

 
CodeMuncher:
Olá. Estou ansioso para aprender seus truques e mostrar-lhe os meus.

Você encontrará um monte de coisas ótimas neste fórum.

Leia e use o recurso de busca sem nenhuma restrição!!!

Sinta-se à vontade para perguntar qualquer coisa ... Muitos grandes contribuidores/ajudantes aqui.

FerruFx

 
fireslayer26:
Neste código, ele tem o trailing stop definido para 45 pips. Mas o batente móvel parece não se ativar até que ele se mova 45 pips. Como eu precisaria trocá-lo para que o batente móvel fosse ativado quando o comércio fosse colocado?

extern string Remark1 = "== Main Settings ==";

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = true;

extern double Lots = 4;

extern int Slippage = 2;

extern bool UseStopLoss = false;

extern int StopLoss = 100;

extern bool UseTakeProfit = false;

extern int TakeProfit = 15;

extern bool UseTrailingStop = true;

extern int TrailingStop = 45;

extern bool MoveStopOnce = False;

extern int MoveStopWhenPrice = 50;

extern int MoveStopTo = 1;

extern int MaxConcurrentTrades = 2;

//Version 2.01

int BarCount;

int Current;

bool TickCheck = False;

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

//| expert initialization function |

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

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

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

//| expert deinitialization function |

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

int deinit() {

return(0);

}

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

//| expert start function |

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

int start()

{

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Order = SIGNAL_NONE;

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

//| Variable Begin |

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

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

//| Variable End |

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

//Check position

bool IsTrade = False;

for (int i = 0; i < Total; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

IsTrade = True;

if(OrderType() == OP_BUY) {

//Close

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

//| Signal Begin(Exit Buy) |

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

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

//| Signal End(Exit Buy) |

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

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderStopLoss() > Point * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

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

//| Signal Begin(Exit Sell) |

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

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

//| Signal End(Exit Sell) |

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

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(((OrderStopLoss - Ask) > (Point * TrailingStop)) || OrderStopLoss() == 0) {

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

Mudou em vermelho

 

Eu fiz as mudanças no vermelho, mas agora a EA parece não querer trabalhar. Vou postar o EA inteiro para que você possa dar uma olhada. Obrigado!

Arquivos anexados:
williams_ea.mq4  12 kb
 

Certifique-se de colocar () após os pedidos de perda

 

Legal, já chega!

Que tal este indicador....

Poderia ser modificado para que os preços mostrem cores diferentes, dependendo de como eles abrem? Como se abrisse mais alto que a barra anterior, o preço seria verde, se mais baixo, então vermelho, e se mesmo assim fosse amarelo? Com estas cores podendo ser selecionadas? Além disso, você poderia estendê-la para mostrar 10 aberturas ao invés de apenas 6?

Também na EA que acabamos de fixar, como eu colocaria uma configuração de entrada como, "Pips to Activate Trailing Stop" (Pips para ativar o Trailing Stop). Tenho isso em outro EA, mas não tenho certeza de como codificá-lo.

Arquivos anexados:
period_open.mq4  23 kb
 

OrderComment()

OrderTicket()

OrderLots()

OrderStopLoss()

OrderTakeProfit()

OrderOpenTime()

Todas essas são ferramentas potenciais para a filtragem de pedidos.

O que mais sobre esses ofícios específicos os torna únicos?

 
Ronald Raygun:
OrderComment()

OrderTicket()

OrderLots()

OrderStopLoss()

OrderTakeProfit()

OrderOpenTime()

Todas essas são ferramentas potenciais para a filtragem de pedidos.

O que mais sobre esses ofícios específicos os torna únicos?

Duas das mais importantes para filtragem de pedidos são OrderSymbol() e OrderMagicNumber(). Outra de nota é OrderComment().

A melhor idéia é inserir uma delas no Metaeditor, depois clicar na palavra e depois pressionar F1. Ao fazer isso, exibirá a ajuda e listará todas as funções de ordem.

Feliz programação,

Hiachiever

 

Usando OrderComment

Tenha cuidado ao usar OrderComment() para identificar o comércio. Algumas vezes o corretor adicionará caracteres ao comentário.

É melhor usar

if (StringFind(OrderComment(), UserComment, 0) > 0)

{

// pedido identificado pelo UserComment encontrado no OrderComment

}

em vez de

se (OrderComment() == UserComment)

{

// o pedido pode ser identificado pelo UserComment

// se o OrderComment não foi alterado pelo corretor

}

Robert

 

Fechar negócios no bico mesmo

..............

Razão: