Olá a todos, vocês podem me ajudar a encontrar um erro no código da EA, acho que pesquisei tudo, parece que está tudo escrito corretamente no código, mas o programa não negocia corretamente por alguma razão! A idéia é a seguinte: o assessor tem que procurar duas velas longas da mesma direção (o comprimento entre as velas é ajustável no assessor, ou seja, entre as duas velas mínimas ou máximas, dependendo da direção), se o preço na direção oposta quebrar o mínimo ou máximo da última vela, deve ser aberto um negócio (Exemplo de situações de imagem no quadro anexo ao arquivo). O conselheiro deve abrir negócios em todas essas situações adequadas, mas por alguma razão ele abre negócios somente nas janelas de negociação entre dias. Aqui está a situação, que não é difícil para os programadores, por favor, ajude, conserte o erro. Código EA veja abaixo, assim como no arquivo anexo.
Olá a todos, podem me ajudar a encontrar um erro no código da EA, acho que pesquisei tudo, parece ter sido escrito corretamente no código, mas o programa não é comercializado corretamente por alguma razão! A idéia é a seguinte: o assessor tem que procurar duas velas longas da mesma direção (o comprimento entre as velas é ajustável no assessor, ou seja, entre as duas velas mínimas ou máximas, dependendo da direção), se o preço na direção oposta quebrar o mínimo ou máximo da última vela, deve ser aberto um negócio (Exemplo de situações de imagem no quadro anexo ao arquivo). O conselheiro deve abrir negócios em todas essas situações adequadas, mas por alguma razão ele abre negócios somente nas janelas de negociação entre dias. Aqui está a situação, que não é difícil para os programadores, por favor, ajude, conserte o erro. Veja o código EA abaixo, bem como no arquivo anexo.
É melhor primeiro escrever a parte da EA que marcaria na carta as velas encontradas, para que tudo se torne claro. E as seguintes linhas são desnecessárias em seu caso:
externstring paramEA = ""; // Parameters EA
и
//+-----------------------------------------------------------------------------------------------+intOnInit()
{
return(INIT_SUCCEEDED);
}
//+-----------------------------------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+-----------------------------------------------------------------------------------------------+
Agora me diga como ter lucro aqui... Ou você precisa dele para construir um jogo?
Ainda não há como obter lucro. Há um algoritmo para o cálculo de duas metas prováveis de preço, ao longo da tendência, em cinco pontos principais, mas é calculado em um servidor especial com uma assinatura paga. Eu mesmo quero calcular as metas, o trabalho no algoritmo ainda não terminou.
Anton Yakovlev: Se você tem uma boa estratégia e está disposto a compartilhá-la, posso escrever uma EA. Convido-o a discuti-la publicamente ou em mensagens privadas.
Anton, ajude-me, acrescentei a função de parada móvel à EA, testei-a e ela mostra dois erros. - Tenho minha cabeça esmagada, não consigo descobrir como consertá-los. Entretanto, as negociações são fechadas de acordo com a antiga estratégia, depois que o preço tocou o limite superior do canal e o limite inferior, respectivamente. Acho que algo tem que ser mudado aqui também. - Chamada de volta aos caras do exército dnr.
Выберите подходящую торговую стратегию и оформите подписку на нее в пару кликов. Все Сигналы сопровождаются подробной статистикой и графиками. Станьте Поставщиком торговых сигналов и продавайте подписку тысячам трейдеров по всему миру. Наш сервис позволит вам хорошо зарабатывать на прибыльной стратегии даже при небольшом стартовом капитале...
Para ganhar experiência nesta área, vou escrever 25 EAs gratuitamente para suas idéias e estratégias interessantes
Restam apenas 19 EAs
Adicionei a função trailing stop à EA e a comentei e ela tem dois erros. - Posso ter alguns erros, mas não sei como corrigi-los. Entretanto, as negociações são fechadas de acordo com a antiga estratégia, depois que o preço tocou o limite superior do canal e o limite inferior, respectivamente. Acho que algo tem que ser mudado aqui também. - Chamada de volta aos caras do exército dnr.
Выберите подходящую торговую стратегию и оформите подписку на нее в пару кликов. Все Сигналы сопровождаются подробной статистикой и графиками. Станьте Поставщиком торговых сигналов и продавайте подписку тысячам трейдеров по всему миру. Наш сервис позволит вам хорошо зарабатывать на прибыльной стратегии даже при небольшом стартовом капитале...
Acrescentei a função de trailing stop ao Expert Advisor, e a compilei e obtive dois erros. - Perdi a cabeça, não consigo descobrir como consertá-los para conseguir uma coruja. Entretanto, as negociações são fechadas de acordo com a antiga estratégia, depois que o preço tocou o limite superior do canal e o limite inferior, respectivamente. Acho que algo tem que ser mudado aqui também. - Devolva-o aos caras do exército do DPR.
Peço desculpas se fiz algo errado. Ainda não entendo como eu enviei spam... Acho que dirigi duas mensagens a dois camaradas. Ou isso não é permitido? - Erro meu.
Linhas amarelas necessárias
Agora me diga como ter lucro aqui... Ou é para construir um jogo?
Olá a todos, vocês podem me ajudar a encontrar um erro no código da EA, acho que pesquisei tudo, parece que está tudo escrito corretamente no código, mas o programa não negocia corretamente por alguma razão! A idéia é a seguinte: o assessor tem que procurar duas velas longas da mesma direção (o comprimento entre as velas é ajustável no assessor, ou seja, entre as duas velas mínimas ou máximas, dependendo da direção), se o preço na direção oposta quebrar o mínimo ou máximo da última vela, deve ser aberto um negócio (Exemplo de situações de imagem no quadro anexo ao arquivo). O conselheiro deve abrir negócios em todas essas situações adequadas, mas por alguma razão ele abre negócios somente nas janelas de negociação entre dias. Aqui está a situação, que não é difícil para os programadores, por favor, ajude, conserte o erro. Código EA veja abaixo, assim como no arquivo anexo.
Olá a todos, podem me ajudar a encontrar um erro no código da EA, acho que pesquisei tudo, parece ter sido escrito corretamente no código, mas o programa não é comercializado corretamente por alguma razão! A idéia é a seguinte: o assessor tem que procurar duas velas longas da mesma direção (o comprimento entre as velas é ajustável no assessor, ou seja, entre as duas velas mínimas ou máximas, dependendo da direção), se o preço na direção oposta quebrar o mínimo ou máximo da última vela, deve ser aberto um negócio (Exemplo de situações de imagem no quadro anexo ao arquivo). O conselheiro deve abrir negócios em todas essas situações adequadas, mas por alguma razão ele abre negócios somente nas janelas de negociação entre dias. Aqui está a situação, que não é difícil para os programadores, por favor, ajude, conserte o erro. Veja o código EA abaixo, bem como no arquivo anexo.
É melhor primeiro escrever a parte da EA que marcaria na carta as velas encontradas, para que tudo se torne claro. E as seguintes linhas são desnecessárias em seu caso:
Agora me diga como ter lucro aqui... Ou você precisa dele para construir um jogo?
Ainda não há como obter lucro. Há um algoritmo para o cálculo de duas metas prováveis de preço, ao longo da tendência, em cinco pontos principais, mas é calculado em um servidor especial com uma assinatura paga. Eu mesmo quero calcular as metas, o trabalho no algoritmo ainda não terminou.
Como será seu programa na MQL4?
Se você tem uma boa estratégia e está disposto a compartilhá-la, posso escrever uma EA. Convido-o a discuti-la publicamente ou em mensagens privadas.
Anton, ajude-me, acrescentei a função de parada móvel à EA, testei-a e ela mostra dois erros. - Tenho minha cabeça esmagada, não consigo descobrir como consertá-los. Entretanto, as negociações são fechadas de acordo com a antiga estratégia, depois que o preço tocou o limite superior do canal e o limite inferior, respectivamente. Acho que algo tem que ser mudado aqui também. - Chamada de volta aos caras do exército dnr.
#direitos autorais "Copyright 2017, MetaQuotes Software Corp."
#link da propriedade "https://www.mql5.com"
#propriedade versão "1.00"
#propriedade rigorosa
//---------------------------------------------------------
Lotes duplos externos = 0,01;
Exterior int TakeProfit = 600;
StopLoss int externo = 25;
magia int externa = 0001;
Escorregão externo int = 3;
externo int TralType = 0; // 0-SAR, 1-ATR, 2-HMA.
duplo SAR_Step externo = 0,02;
duplo SAR_Max externo = 0,2;
período ATR_Periodo externo int = 14;
duplo externo ATR_K = 2,0;
período HMA_Periodo externo interno = 16;
método externo interno HMA_Método = 3;
HMA_Shift externo interno = 0;
data/hora LBT;
//---------------------------------------------------------
TMA fio externo = "parâmetros indicadores TMA";
String externo TimeFrame = "time frame atual";
Externo int Médio Comprimento = 56;
preço interno externo = "PREÇO_CLOSE";
duplo ATRMultiplicador externo = 2,0;
período ATRP externo interno = 100;
bool externo Interpolar = verdadeiro;
//---------------------------------------------------------
duplo PriceHigh, PriceLow, SL, TP;
int ticket;
//+------------------------------------------------------------------+
//| Função de iniciação de especialista |
//+------------------------------------------------------------------+
int OnInit()
{
se (Dígitos == 3 || Dígitos == 5)
{
TakeProfit *= 10;
StopLoss *= 10;
Slippage *= 10;
}
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Função de desinicialização especializada |
//+------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
}
//+------------------------------------------------------------------+
//| função tick expert |
//+------------------------------------------------------------------+
nulo OnTick()
{
PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);
PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);
if(CountSell() == 0 && Bid >= PriceHigh)
{
bilhete = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);
se (bilhete > 0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Dígitos);
TP = NormalizeDouble(Bid - TakeProfit*Point, Dígitos);
se (OrderSelect(ticket, SELECT_BY_TICKET))
se (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Imprimir("Erro de modificação do pedido!)
}
}
if (CountBuy() == 0 && Ask <= PriceLow)
{
bilhete = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);
se (bilhete > 0)
{
TP = NormalizeDuplo(Ask + TakeProfit*Point, Dígitos);
SL = NormalizeDouble(Ask - StopLoss*Point, Dígitos);
se (OrderSelect(ticket, SELECT_BY_TICKET))
if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Imprimir("Erro ao modificar o pedido de compra!)
} else Print("Erro ao abrir o pedido de compra");
}
//+------------------------------------------------------------------+
//| Função de iniciação de especialista |
//+------------------------------------------------------------------+
int init()
{
//--------
//--------
retorno (0);
}
//+------------------------------------------------------------------+
//| função tick expert |
//+------------------------------------------------------------------+
nulo OnTick()
{
PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);
PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);
if(CountSell() == 0 && Bid >= PriceHigh)
{
bilhete = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);
se (bilhete > 0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Dígitos);
TP = NormalizeDouble(Bid - TakeProfit*Point, Dígitos);
se (OrderSelect(ticket, SELECT_BY_TICKET))
se (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Imprimir("Erro ao modificar a ordem de venda!)
} else Print("Erro ao abrir a ordem de venda!)
}
if (CountBuy() == 0 && Ask <= PriceLow)
{
bilhete = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);
se (bilhete > 0)
{
TP = NormalizeDuplo(Ask + TakeProfit*Point, Dígitos);
SL = NormalizeDouble(Ask - StopLoss*Point, Dígitos);
se (OrderSelect(ticket, SELECT_BY_TICKET))
if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Imprimir("Erro ao modificar o pedido de compra!)
} else Print("Erro ao abrir o pedido de compra");
}
se (Pergunte <= PriceLow && CountSell() > 0)
{
para (int i = OrderTotal() -1; i>0; i--)
{
se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
se (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black))
Imprimir("Vender ordem fechar erro!)
}
}
}
if (Licitação >= PriceHigh && CountBuy() > 0)
{
para (int i = OrderTotal() -1; i>0; i--)
{
se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
if(!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))
Imprimir("OrderClose Buy error!)
}
}
}
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
para (int trade = OrdensTotal()-1; trade>=0; tradee--)
{
if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELLL)
contar++;
}
}
devolução(contagem);
}//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0;
para (int trade = OrdensTotal()-1; trade>=0; tradee--)
{
if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
contar++;
}
}
devolução(contagem);
}
//+------------------------------------------------------------------+
//| Função de desinicialização especializada |
//+------------------------------------------------------------------+
int deinit()
{
//+-------
//+-------
retorno (0)
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int Start()
{
//-----
erro de bool = falso;
se (LBT!=Time[0]) {
se (OrderTotal()!=0) {
para (int i=0; i<OrdersTotal(); i++) {
se (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2) {
duplo SL = OrderStopLoss();
se OrderType()==0) {
interruptor (TralType) {
caso 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);
pausa;
caso 1: SL = Alto[1] - iATR(NULL,0,ATR,Período,1)*ATR_K;
pausa;
caso 2: SL = iCustom(NULL,0, "VininI_HMAsound&",HMA_Period,HMA_Method,3,HMA_Shift, fals,fals,",1,0,0)
pausa;
}
se (SL<OrderStopLoss())
SL = OrderStopLoss();
}
se (OrderType()==1) {
interruptor (TralType) {
caso 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);
pausa;
caso 1: SL = Baixa[1] + iATR(NULL,0,ATR,Período,1)*ATR_K;
pausa;
caso 2: SL = iCustom(NULL,0, "VininI_HMAsound&",HMA_Period,HMA_Method,3,HMA_Shift, fals,fals,",1,0,0)
pausa;
}
se (SL>OrderStopLoss())
SL = OrderStopLoss();
}
se (SL!=OrderStopLoss()) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0))
erro = verdadeiro;
}
}
}
}
se (!erro)
LBT = Tempo[0];
}
retorno (0);
}
//+------------------------------------------------------------------+
Para ganhar experiência nesta área, vou escrever 25 EAs gratuitamente para suas idéias e estratégias interessantes
Restam apenas 19 EAs
Adicionei a função trailing stop à EA e a comentei e ela tem dois erros. - Posso ter alguns erros, mas não sei como corrigi-los. Entretanto, as negociações são fechadas de acordo com a antiga estratégia, depois que o preço tocou o limite superior do canal e o limite inferior, respectivamente. Acho que algo tem que ser mudado aqui também. - Chamada de volta aos caras do exército dnr.
#direitos autorais "Copyright 2017, MetaQuotes Software Corp."
#link da propriedade "https://www.mql5.com"
#propriedade versão "1.00"
#propriedade rigorosa
//---------------------------------------------------------
Lotes duplos externos = 0,01;
Exterior int TakeProfit = 600;
StopLoss int externo = 25;
magia int externa = 0001;
Escorregão externo int = 3;
externo int TralType = 0; // 0-SAR, 1-ATR, 2-HMA.
duplo SAR_Step externo = 0,02;
duplo SAR_Max externo = 0,2;
período ATR_Periodo externo int = 14;
duplo externo ATR_K = 2,0;
período HMA_Periodo externo interno = 16;
método externo interno HMA_Método = 3;
HMA_Shift externo interno = 0;
data/hora LBT;
//---------------------------------------------------------
TMA fio externo = "parâmetros indicadores TMA";
String externo TimeFrame = "time frame atual";
Externo int Médio Comprimento = 56;
preço interno externo = "PREÇO_CLOSE";
duplo ATRMultiplicador externo = 2,0;
período ATRP externo interno = 100;
bool externo Interpolar = verdadeiro;
//---------------------------------------------------------
duplo PriceHigh, PriceLow, SL, TP;
int ticket;
//+------------------------------------------------------------------+
//| Função de iniciação de especialistas |
//+------------------------------------------------------------------+
int OnInit()
{
se (Dígitos == 3 || Dígitos == 5)
{
TakeProfit *= 10;
StopLoss *= 10;
Slippage *= 10;
}
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Função de desinicialização especializada |
//+------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
}
//+------------------------------------------------------------------+
//| função tick expert |
//+------------------------------------------------------------------+
nulo OnTick()
{
PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);
PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);
if(CountSell() == 0 && Bid >= PriceHigh)
{
bilhete = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);
se (bilhete > 0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Dígitos);
TP = NormalizeDouble(Bid - TakeProfit*Point, Dígitos);
se (OrderSelect(ticket, SELECT_BY_TICKET))
se (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Imprimir("Erro de modificação do pedido!)
}
}
if (CountBuy() == 0 && Ask <= PriceLow)
{
bilhete = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);
se (bilhete > 0)
{
TP = NormalizeDuplo(Ask + TakeProfit*Point, Dígitos);
SL = NormalizeDouble(Ask - StopLoss*Point, Dígitos);
se (OrderSelect(ticket, SELECT_BY_TICKET))
if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Imprimir("Erro ao modificar o pedido de compra!)
} else Print("Erro ao abrir o pedido de compra");
}
//+------------------------------------------------------------------+
//| Função de iniciação de especialistas |
//+------------------------------------------------------------------+
int init()
{
//--------
//--------
retorno (0);
}
//+------------------------------------------------------------------+
//| função tick expert |
//+------------------------------------------------------------------+
nulo OnTick()
{
PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);
PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);
if(CountSell() == 0 && Bid >= PriceHigh)
{
bilhete = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);
se (bilhete > 0)
{
SL = NormalizeDouble(Bid + StopLoss*Point, Dígitos);
TP = NormalizeDouble(Bid - TakeProfit*Point, Dígitos);
se (OrderSelect(ticket, SELECT_BY_TICKET))
se (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Imprimir("Erro ao modificar a ordem de venda!)
} else Print("Erro ao abrir a ordem de venda!)
}
if (CountBuy() == 0 && Ask <= PriceLow)
{
bilhete = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);
se (bilhete > 0)
{
TP = NormalizeDuplo(Ask + TakeProfit*Point, Dígitos);
SL = NormalizeDouble(Ask - StopLoss*Point, Dígitos);
se (OrderSelect(ticket, SELECT_BY_TICKET))
if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))
Imprimir("Erro ao modificar o pedido de compra!)
} else Print("Erro ao abrir o pedido de compra");
}
se (Pergunte <= PriceLow && CountSell() > 0)
{
para (int i = OrderTotal() -1; i>0; i--)
{
se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)
se (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Black))
Imprimir("Vender ordem fechar erro!)
}
}
}
if (Licitação >= PriceHigh && CountBuy() > 0)
{
para (int i = OrderTotal() -1; i>0; i--)
{
se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)
if(!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Black))
Imprimir("OrderClose Buy error!)
}
}
}
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0;
para (int trade = OrdensTotal()-1; trade>=0; tradee--)
{
if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELLL)
contar++;
}
}
devolução(contagem);
}//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0;
para (int trade = OrdensTotal()-1; trade>=0; tradee--)
{
if(OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
contar++;
}
}
devolução(contagem);
}
//+------------------------------------------------------------------+
//| Função de desinicialização especializada |
//+------------------------------------------------------------------+
int deinit()
{
//+-------
//+-------
retorno (0)
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int Start()
{
//-----
erro de bool = falso;
se (LBT!=Time[0]) {
se (OrderTotal()!=0) {
para (int i=0; i<OrdersTotal(); i++) {
se (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2) {
duplo SL = OrderStopLoss();
se OrderType()==0) {
interruptor (TralType) {
caso 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);
pausa;
caso 1: SL = Alto[1] - iATR(NULL,0,ATR,Período,1)*ATR_K;
pausa;
caso 2: SL = iCustom(NULL,0, "VininI_HMAsound&",HMA_Period,HMA_Method,3,HMA_Shift, fals,fals,",1,0,0)
pausa;
}
se (SL<OrderStopLoss())
SL = OrderStopLoss();
}
se (OrderType()==1) {
interruptor (TralType) {
caso 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);
pausa;
caso 1: SL = Baixa[1] + iATR(NULL,0,ATR,Período,1)*ATR_K;
pausa;
caso 2: SL = iCustom(NULL,0, "VininI_HMAsound&",HMA_Period,HMA_Method,3,HMA_Shift, fals,fals,",1,0,0)
pausa;
}
se (SL>OrderStopLoss())
SL = OrderStopLoss();
}
se (SL!=OrderStopLoss()) {
if(!OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0))
erro = verdadeiro;
}
}
}
}
se (!erro)
LBT = Tempo[0];
}
retorno (0);
}
//+------------------------------------------------------------------+
Acrescentei a função de trailing stop ao Expert Advisor, e a compilei e obtive dois erros. - Perdi a cabeça, não consigo descobrir como consertá-los para conseguir uma coruja. Entretanto, as negociações são fechadas de acordo com a antiga estratégia, depois que o preço tocou o limite superior do canal e o limite inferior, respectivamente. Acho que algo tem que ser mudado aqui também. - Devolva-o aos caras do exército do DPR.
Você não deve enviar spam.
Peço desculpas se fiz algo errado. Ainda não entendo como eu enviei spam... Acho que dirigi duas mensagens a dois camaradas. Ou isso não é permitido? - Erro meu.