[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 846

 
serjik77:

Por favor, desculpe-me se estou lhe distraindo com uma pergunta provavelmente estúpida.

Comecei agora a aprender isto e não tenho ninguém a quem pedir conselhos.

Eu li o manual algumas vezes. Iniciei um Expert Advisor com as funções mais simples, com ordens pendentes.

Ainda não entendo o que tenho que fazer para abrir pedidos uma vez, e não a cada tiquetaque.



Inserir uma função como esta

int ChPos( int type_H_L) 
{
// возвращает кол-во позици которые открыты 
   int i;
   int col;
   int count=0 ;
   for( i=0; i < OrdersTotal(); i++)         
   {
      if(OrderSelect(i,SELECT_BY_POS)==true) 
       {                                   
           if(OrderType()==OP_BUY && type_H_L==OP_BUY && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_SELL && type_H_L==OP_SELL && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_BUYSTOP && type_H_L==OP_BUYSTOP && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_SELLSTOP && type_H_L==OP_SELLSTOP && OrderMagicNumber()== magic){count++;}
           
       }
    }   
return(count);
}

Em seu código, verifique desta forma, por exemplo

if ( SignalLine > MainLine && ChPos(OP_BUY)==0 )
      { // если сигнальная линия выше основной и нет длинной позы . то закрыть короткую открыть длинную
         if (ChPos(OP_SELL)>0 ) ClosePosition(OP_SELL) ;
         OpenPosition(OP_BUY)  ;
 
Eu fecho posições não lucrativas sem quebrar o equilíbrio no lote removendo TP. Infelizmente, TP=0, embora eu tenha recebido uma mensagem muito irritante no registro:
<br / translate="no"> 2010.09.12 21:34:53 2000.03.06 07:59 dinheiro EURUSD,M5: OrderModify error 1

código:

bool notakeprofit()
{   bool ok=true;
    int k=OrdersTotal();
    for (int i=k-1; i >=0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_368)
        {OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(),NormalizeDouble(0,Point), OrderExpiration(), CLR_NONE);
         }
    else;
       // { Print("OrderSelect() error - ",GetLastError()); ok=false;}
    }
return(ok);
}

Devido à necessidade de ter certeza no código principal que todas as ordens do mercado têm TP=0 eu controlo o resultado desta função - ok, no código você pode ver que ok - ele só muda quando há um erro

AJUDA MI PLZ! :)

obrigado de antemão

 
abolk:

No meu caso, a regra é: "Separar NÃO em substantivos, adjetivos e advérbios, se há ou se pretende que haja uma contradição" http://www.rusyaz.ru/pr/od07.html - "fazer" NÃO é - a palavra correta é " fazer" (a palavra destacada é uma contradição e é precedida por um hífen).

você está interpretando mal a língua russa (!). No caso de "não", seria escrito "não" em separado:

"fazer" NÃO é correto, mas ruim. - é neste sentido que se entende ser oposto. Veja os exemplos para a regra.

Em sua frase, NÃO deve ser escrito com uma conjunção (o parágrafo 3 do parágrafo 88 na mesma página se aplica):

"fazer" está mal soletrado, " fazer" está correto .

 

Existe um indicador MACD padrão. como ele é usado para testar o histórico?

existe um exemplo?

 
IgorM:
Eu bloqueio posições perdidas para não querer quebrar um equilíbrio na posição, mas tenho que remover TP, infelizmente, TP=0, embora eu tenha que continuar escrevendo muitas vezes no meu diário:

código:

Devido à necessidade de ter certeza no código principal que todas as ordens do mercado têm TP=0 eu controlo o resultado desta função - ok, no código você pode ver que ok - ele só muda quando há um erro

AJUDA MI PLZ! :)

obrigado de antemão

Talvez não NormalizeDuplo(0,Ponto) mas NormalizeDuplo(0,Dígitos)?

 
chief2000:

Talvez não NormalizeDuplo(0,Ponto) mas NormalizeDuplo(0,Dígitos)?


Obrigado, eu mesmo o encontrei, mas não corrigiu o erro nº 1

 
IgorM:


Obrigado, eu mesmo o encontrei, mas não corrigiu o erro nº 1.

A primeira coisa que eu faria é substituir algum outro número em TP ao invés de zero (para eliminar o erro) para ter certeza de que essa é a razão.

 
chief2000:

A primeira coisa que eu faria é substituir algum outro número em TP ao invés de zero (para eliminar o erro) para ter certeza de que essa é a razão.


costumava funcionar bem até eu escrever esta função, agora chamo a função de Kim em vez de OrderModify():

void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0)

o erro desapareceu

 

há um indicador tipo osma, o sinal é invertido ao cruzar 0. como testá-lo na história?

 
ivandurak:


Insira esta função

E em seu código, faça uma verificação como esta

Desculpe-me, mas se me permite, mais uma pergunta?

Estou começando a entender algo, mas não tudo.

A primeira função diz ao aplicativo quantas ordens abertas ele tem?

Favor informar como fazer com que apenas dois pendentes apareçam permanentemente,

independentemente das que foram acionadas.

Razão: