[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 598
Sem outra, o primeiro bloco é executado primeiro, depois o segundo. Com outro - ou o primeiro ou o segundo.
ooo! falta outra lógica!) Vou mudá-la em breve! sim, e na hora: se eu escrever em todo lugar no texto não com o 4º, mas com o 3º, assim:
iFractals(Symbol(),PERIOD_H1,MODE_UPPER,3);
Não tenho ofícios, embora os bares do 3º pareçam ser suficientes para que tudo funcione, qual é o problema?
E quanto à lógica do indicador, estou um pouco confuso. Eu sei como funciona o indicador, só preciso do algoritmo para garantir que se os abstratos não forem iguais a zero, e você me oferece para remover esta condição, é supérfluo? Por que eu o escrevo duas vezes?
Boa noite, estou pedindo ajuda com um consultor especialista em MACD com várias moedas. A EA segue os critérios de abertura de posição corretamente, mas o fechamento "em condição" não funciona. Certamente comecei a usar uma parada de trilha, mas o fechamento correto não me dá uma pausa.
Esta é a parte principal
E este é um bloqueio próximo. Por favor, ajude-me a encontrar o erro!
Desculpe repetir-me, mas não importa o quanto eu lute, não consigo encontrar o erro!
//+------------------------------------------------------------------+string lSymbol;
int init ()
{
lSymbol = Symbol();
return (0);
}
int deinit()
{return(0);}
int start()
{
double MacdCurrent, MacdPrevious, SignalCurrent;
double SignalPrevious, MaCurrent, MaPrevious;
double bid, ask, point, digits;
int cnt, ticket, total;
total = SymbolOrdersTotal (lSymbol);
if (total<1);
{
bid = MarketInfo(lSymbol,MODE_BID);
ask = MarketInfo(lSymbol,MODE_ASK);
point = MarketInfo(lSymbol,MODE_POINT);
digits= MarketInfo(lSymbol,MODE_DIGITS);
Так выглядит оснавная часть, а это злопалучный блок закрытия
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position OrderSymbol()==lSymbol()) // check for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
MacdCurrent>(MACDCloseLevel*point))
{
OrderClose(OrderTicket(),OrderLots(),bid,3,Violet); // close positionreturn(0); // exit
}
// check for trailing stopif(TrailingStop>0)
{
if(bid-OrderOpenPrice()>point*TrailingStop)
{
if(OrderStopLoss()<bid-point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),bid-point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else// go to short position
{
// should it be closed?if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*point))
{
OrderClose(OrderTicket(),OrderLots(),ask,3,Violet); // close positionreturn(0); // exit
}
// check for trailing stopif(TrailingStop>0)
{
if((OrderOpenPrice()-ask)>(point*TrailingStop))
{
if((OrderStopLoss()>(ask+point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),ask+point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
int SymbolOrdersTotal(string lSymbol)
{
int Res=0;
int total=OrdersTotal();
for (int i=0;i<total;i++)
{
if (OrderSelect(i, SELECT_BY_POS))
{
if (OrderSymbol()==lSymbol)
{
Res++;
}
}
}
return(Res);
}
// the end.
Desmontar completamente a lógica do indicador.
Substitua-a primeiro.
em
Também,
Sem outra, o primeiro bloco é executado primeiro, depois o segundo. Com outro - ou o primeiro ou o segundo.
Não tenho ofícios, embora os bares do 3º pareçam ser suficientes para que tudo funcione, qual é o problema?
E quanto à lógica do indicador, estou um pouco confuso. Eu sei como funciona o indicador, só preciso do algoritmo para garantir que se os abstratos não forem iguais a zero, e você me oferece para remover esta condição, é supérfluo? Por que eu o escrevo duas vezes?
Desmontar completamente a lógica do indicador.
Substitua-a primeiro.
em
Além disso,
Sem outra, o primeiro bloco é executado primeiro, depois o segundo. Com outro - ou o primeiro ou o segundo.
É possível lutar, e o trabalho da EA pode ser interrompido. Só precisamos mudar a abordagem.
Como?
No início do código, passe por todas as ordens abertas, encontre e atribua valores de ingressos a ordens, ou existe alguma outra maneira?
No início do código, passe por todas as ordens abertas, encontre e atribua valores de ingressos para as ordens, ou existe alguma outra forma?
Você pode fazer isso se a EA abrir uma ou duas posições.
Você pode fazer isso, desde que o assessor abra uma ou duas posições.
A EA é multimoedas, de modo que operações simples nem sempre parecem ser resolvidas de uma só vez ((. E não há experiência.
Meu consultor especializado é multimoedas, e operações simples nem sempre parecem ser resolvidas de uma só vez ((. E não há experiência.
Você só tem que fazer a contabilidade do pedido corretamente. Há muitos exemplos.
E experiência. A experiência vem com o território. Não irá a lugar algum.
Você só tem que ter certeza de que os pedidos sejam registrados corretamente. Há muitos exemplos.
E experiência. A experiência vem com o território. Não vai a lugar algum.
Obrigado pelas respostas, vou cavar os arquivos.
Boa noite, estou pedindo ajuda com um consultor especialista em MACD com várias moedas. A EA segue os critérios de abertura de posição corretamente, mas o fechamento "em condição" não funciona. Certamente comecei a usar uma parada de trilha, mas o fechamento correto não me dá uma pausa.
Esta é a parte principal
E este é um bloqueio próximo. Por favor, ajude-me a encontrar o erro!
Desculpe repetir-me, mas não importa o quanto eu lute, não consigo encontrar o erro!
Eu substituí tudo, mas por alguma razão ainda está pulando da mesma maneira...((((((