[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 896

 
belck:

Quero estabelecer um take profit desta forma:

if (TakeProfit<10*Point) TakeProfit=10*Point;
A linha indicadora muda de posição após um certo período de tempo. Como posso ter certeza de que o lucro não muda, mas permanece o mesmo que foi definido quando eu o abri?
Não consigo adivinhar porque você calcula o TP. TP é normalmente calculado no momento da colocação do pedido - então ele será atribuído ao pedido e você precisa mudá-lo usando OrderModify(), às vezes TP é virtual, neste caso você precisa salvá-lo na matriz
 
IgorM:
Não consigo nem adivinhar porque você calcula o TP. Normalmente o TP é calculado no momento de fazer o pedido - então ele será atribuído ao pedido e você precisa mudá-lo usando OrderModify(), às vezes o TP é virtual, então armazene-o em uma matriz

Obrigado pela dica.

 

Acabo de inventar um EA, continuo treinando, tudo está ficando mais rápido a cada vez, mas não é uma negociação!

Se você puder, por favor, me avise, acho que entrarei em contato.

//+------------------------------------------------------------------+
//| Dimon's Borders .mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#direitos autorais "Copyright © 2010, MetaQuotes Software Corp."
#link da propriedade "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| função de inicialização especializada |
//+------------------------------------------------------------------+
External int BandsPeriod=20,i=1 ;extern int BandsShift=0;
Faixas duplas externasDeviações=2,0;
Lotes duplos externos=0,1,TakeProfit=50,stoploss=10;
int init()
{\i1}int Médio;
//----

//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização de especialistas |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start()
{doupla Média,fronteira superior,fronteira inferior,newres,soma,desvio;

Média=iMA(NULL,0,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i);
//----
newres=Fechar[i]-Amédia;
sum=newres*newres;


desvio=Deviações de Banda*MathSqrt(soma/Período de Banda);
Limite superior=Média+deviação;
Limite inferior=Média+deviação;
//----
se (Limite superior<Fechar[i])
{ Comentário(" bóia! ",Upper Boundary );
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point, "macd sample",16384,0,Green);

}


se (Limite inferior>Fechar[i])
{ Comentário(" vender! ",Bottom Border );

OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point, "macd sample",16384,0,Red);
}
retorno(0);
}
//+------------------------------------------------------------------+

Peço desculpas pelas variáveis não inglesas, é muito mais fácil para mim lembrar o que fazer.

 
VOLDEMAR:
Oi! Não consigo entender o que há de errado com ???? Não modifica a ordem do mercado
slb =NormalizeDouble(Bid - (StopLoss * Ponto),Dígitos); // cálculo da parada para posições de compra//
tpb =NormalizarDuplo(Perguntar + (TakeProfit* Ponto),Dígitos); //calcular lucro para posições de compra//
sls =NormalizarDuplo(Perguntar + (StopLoss * Ponto),Dígitos); //calcular parada para posições de venda//
tps =NormalizeDuplo(Bid - (TakeProfit* Point),Dígitos);

//================================================== ==================//
int total=OrdensTotal();
int n=0;
para (int i=total-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS))
{
if(OrderSymbol()==Symbol())
{
n++;
}}}
se ( total === 1 )
{
para (int k=total-1; k>=0; k--)
{
if(OrderSelect(k, SELECT_BY_TICKET))
Alerta ("a ordem existe", k);
{
se ((OrderType()==OP_BUY)&&(OrderTakeProfit()==0)&&(OderStopLoss()==0))
{
OrderModify(k,OrderOpenPrice(),slb,tpb,0,Blue);
Alerta("erro", GetLastError());

}}}}
retorno(0);}

QUAL É O PROBLEMA, POR FAVOR AJUDE ...........?????

você ainda pode tentar desta forma:

double TakeProfitBuy = NormalizeDouble((three - zero) / 4, Digits);
if (TakeProfitBuy<10*Point) TakeProfitBuy=10*Point;
double TakeProfitSell = NormalizeDouble((zero - two) / 4, Digits);
if (TakeProfitSell<25*Point) TakeProfitSell=25*Point;
 

Qual é a melhor maneira:

- especificar no assessor em que pares e em que período negociar

ou

- jogar um EA em um gráfico de um par de moedas com o tempo pré-definido necessário

??

 

Só mais uma coisa - por favor, não seja esperto, estou escrevendo com antecedência, caso contrário não é muito agradável.

A resposta a esta pergunta é muito importante para mim, portanto, por favor, leve-a a sério.

 
Na minha opinião, a segunda opção é muito mais prática e conveniente.
 

Para tomar uma decisão e chegar a uma solução escolhida.

Também estou inclinado à idéia de apenas lançar um EA nos pares de moedas necessários, ou escrever um para certos pares de moedas.

Também estou inclinado à opção de apenas jogá-lo.

Quanto ao gosto do comerciante, não é tão importante escolher um Expert Advisor.

 
Entendi. Muito inteligente. Não sou um especialista, mas a segunda opção é muito mais fácil.
 
Por favor, ajude! O Expert Advisor não está trabalhando, não está negociando de forma alguma.