Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1618

 
Vitaly Muzichenko #:

Você pode fazer isso desta forma, sem usar bibliotecas

Obrigado!

 
MakarFX #:
O mercado agora está fechado, a TimeCurrent() não muda. Verificação do criptograma, funciona nos fins de semana

Por que torná-lo dependente do tiquetaque? O botão não deve depender deles.

 

Olá.

Eu quero testar algumas estratégias, ninguém as tem por mais de 2 meses.

Entendo que os volumes são grandes, é por isso que os corretores não permitem o download. Somente pares básicos.

Talvez alguém ainda tenha algum nas pastas do servidor? Pelo menos por 1 ano.

 
A questão está resolvida.
 
Olá! Decidimos escrever aqui ... talvez alguém responda!!! Em CodeBase ... há muito tempo atrás foi ... foi colocado o indicador ... nem o nome não se lembra ... nem o autor. A essência foi esta ... Definir manualmente a linha horizontal ... e mostra quantas vezes o preço cruzou a linha em uma e outras direções ... e mostrou estatísticas sobre este preço ... Perelapatil duas vezes 66 páginas, mas não encontrou ... alguém se lembra ou tem alguém!!! POR FAVOR, precisa muito disso!!!
 
Sinax #:
Olá! Decidimos escrever aqui ... talvez alguém responda!!! Em CodeBase ... há muito tempo atrás foi ... foi colocado o indicador ... nem o nome não se lembra ... nem o autor. A essência foi esta ... Configurar manualmente a linha horizontal ... e mostra quantas vezes o preço cruzou a linha em uma e outras direções ... e mostra estatísticas sobre este preço ... Canalizado duas vezes 66 páginas, mas não conseguiu encontrá-lo ... alguém pode se lembrar ou ter alguma!!! POR FAVOR, precisa muito disso!!!
Não é isto:
?

 
Sergey Gridnev #:
Não é essa:
?

Não, não é...o da MT4 foi...Obrigado))))

 

Bom dia a todos!!!!

Você pode me ajudar a escrever o código para a grade EA, o princípio do fechamento da grade é simples: todas as ordens com lucro em todas as ordens com um prejuízo mais um lucro do preço de breakeven.

Estou tentando realizar uma idéia para calcular a média e fechar apenas os pedidos mínimos e máximos na grade em um determinado nível de drawdown, reduzindo assim o nível de drawdown.

Aqui está uma parte do código para a abertura de ordens de grupo:

se (CountTrade() < MaxOrders)

{

int order_type = FindLastOrderType();

se (order_type == OP_BUY)

{

preço = FindLastOrderPrice(OP_BUY);

if(Ask<== preço - (NormalizeDuplo(ATR/ DivisorVolatilidade/Ponto, 0)*Ponto))

{

lasttlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2);

bilhete = OrderSend(Symbol(), OP_BUY, lastlot, Ask, slip, 0, 0, "Group Order", Magic, 0, Blue);

se (bilhete < 1)

Imprimir ("Buy order error");

ModifyOrders(OP_BUY);

}

}

se (order_type == OP_SELL)

{

preço = FindLastOrderPrice(OP_SELLL);

if(Bid>= preço + (NormalizeDuplo(ATR/ DivisorVolatilidade/Ponto, 0)*Ponto))

{

lasttlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2);

bilhete = OrderSend(Symbol(), OP_SELL, lastlot, Bid, slip, 0, 0, "Group Order", Magic, 0, Red);

se (bilhete < 1)

Imprimir ("Sell order error!");

ModifyOrders(OP_SELL);

}

}

}

Aqui estáa parte do código onde entra o comando de modificação de ordens. Aqui cruzei a modificação de ordens por "Todas as ordens com lucro e todas as ordens com prejuízo" e "Médias de ordens min e max".

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

//| Modificação de pedidos |

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

nulo ModifyOrders(int otype)

{

duplo

BuyPriceMax = 0, BuyPriceMin = 0, BuyPriceMaxLot = 0, BuyPriceMinLot = 0,

SelPriceMin = 0, SelPriceMax = 0, SelPriceMinLot = 0, SelPriceMaxLot = 0;


int

BuyPriceMaxTic = 0, BuyPriceMinTic = 0, SelPriceMaxTic = 0, SelPriceMinTic = 0;


duplo

op = 0, lt = 0, order_lots = 0;


int

tk = 0, b = 0, s = 0;

preço = 0;tp = 0;


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

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if(OrderMagicNumber() == Magic)

if(OrderSymbol() == Symbol() && OrderType() == otype)

{

op = NormalizeDuplo(Preço Aberto de Pedido(), Dígitos())

lt = NormalizeDouble(OrderLots(), 2);

tk = OrderTicket();

if(otype == OP_BUY)

{

b++;

if(op > BuyPriceMax || BuyPriceMax == 0)

{

BuyPriceMax = op;

BuyPriceMaxLot = lt;

BuyPriceMaxTic = tk;

}

if(op < BuyPriceMin || BuyPriceMin == 0)

{

BuyPriceMin = op;

BuyPriceMinLot = lt;

BuyPriceMinTic = tk;

}

}

if(otype == OP_SELL)

{

s++;

if(op > SelPriceMax || SelPriceMax == 0)

{

SelPriceMax = op;

SelPriceMaxLot = lt;

SelPriceMaxTic = tk;

}

if(op < SelPriceMin || SelPriceMin == 0)

{

SelPriceMin = op;

SelPriceMinLot = lt;

SelPriceMinTic = tk;

}

}

if (otype == OP_BUY || otype == OP_SELL)

{

preço += OrderOpenPrice() * OrderLots();

order_lots += OrderLots();

}

}

//*************************************************************//

duplo AwerageBuyPrice = 0, AwerageSelPrice = 0, avg_price = 0;

if(b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

AwerageBuyPrice = NormalizeDouble((BuyPriceMax*BuyPriceMaxLot + BuyPriceMin*BuyPriceMinLot)/

(BuyPriceMaxLot + BuyPriceMinLot) + TakeProfitMinMaxOrder* Ponto(), Dígitos()));

if(s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

AwerageSelPrice = NormalizeDouble((SelPriceMax * SelPriceMaxLot + SelPriceMin * SelPriceMinLot)/

(SelPriceMaxLot + SelPriceMinLot) - TakeProfitMinMaxOrder* Point(), Digits());

se (Drawdown < DrawdownClosingMinMaxOrder)

avg_price = NormalizeDouble(price / order_lots, Digits);

//*************************************************************//

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

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if(OrderMagicNumber() == Magic)

if(OrderSymbol() == Símbolo())

{

op = NormalizeDuplo(Preço Aberto de Pedido(), Dígitos())

tp = NormalizeDuplo(OrderTakeProfit(), Dígitos())

lt = NormalizeDouble(OrderLots(), 2);

tk = OrderTicket();


if(otype == OP_BUY && b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

{

if(tk == BuyPriceMaxTic || tk == BuyPriceMinTic)

if(Bid < AwerageBuyPrice && tp != AwerageBuyPrice)

if(!OrderModify(tk, op, OrderStopLoss(), AwerageBuyPrice, 0, clrRed))

Imprimir("OrderModify error #", GetLastError());


if(tk != BuyPriceMaxTic && tk != BuyPriceMinTic && tp != 0)

if(!OrderModify(tk, op, 0, 0, 0, clrRed))

Imprimir("OrderModify error #", GetLastError())

}

if(otype == OP_SELL && s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

{

if(tk == SelPriceMaxTic || tk == SelPriceMinTic)

if(Ask > AwerageSelPrice && tp != AwerageSelPrice)

if(!OrderModify(tk, op, OrderStopLoss(), AwerageSelPrice, 0, clrRed))

Imprimir("OrderModify error #", GetLastError());


if(tk != SelPriceMaxTic && tk != SelPriceMinTic && tp != 0)

if(!OrderModify(tk, op, 0, 0, 0, clrRed))

Imprimir("OrderModify error #", GetLastError());

}

se (Drawdown < DrawdownClosingMinMaxOrder)

if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Dígitos);

if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Dígitos);

{

if(OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0))

Imprimir("Pedidos modificados com sucesso!");

senão Imprimir ("Erro de modificação do pedido!");

}

}

}

O resultado é o seguinte: a modificação das ordens de grupo até o nível de saque permitido é feita de forma normal e após o nível de saque permitido, elas são calculadas como média e fecham min e max como esperado,

Mas quando o sorteio tiver diminuído, o novo TakeProfit não quer ser definido.

Aqui está o registro com os códigos de erro.

Se você não souber o que fazer com este erro, não se preocupe, eu o ajudarei a corrigi-lo!

 
EVGENII SHELIPOV #:

Bom dia a todos!!!!

Use

 
MakarFX #:

Use

Você pode ser mais específico?

Razão: