[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 165

 
FelixFX:

obrigado

Muitos erros foram encontrados durante a compilação
 
RoniIron:

Desculpe-me...... o conselheiro de martingale, é possível prescrever uma perda de carga nela ou não é possível. Obrigado.

A função OrderSend() tem como um de seus parâmetros parar a perda. E é ela que estabelece a ordem. Portanto, calculamos o nível de parada para a ordem que necessitamos e o inserimos na função.
 
FelixFX:

a compilação revelou muitos erros

Bem, assim será - eu o avisei que as MINHAS sub-rotinas estão envolvidas! Remova-os e substitua-os por suas impressoras com GetLastError()
 
drknn:

Bem, será - eu lhe disse que as MINHAS sub-rotinas estão envolvidas! Retire-os e substitua-os por suas impressoras com a consulta GetLastError().

É fácil de fazer, se você for bem versado em mql. ) Estou apenas aprendendo, então para mim é um pouco difícil remover todas as coisas desnecessárias e deixar apenas as necessárias.
 
// =================================================================================================
// ************************* Трейлинг рыночных ордеров *********************************************
// =================================================================================================


// =================  TrailingRyn() =============================================================
// функция осуществляет трейлинг рыночных ордеров 
// ----------------------------------------------
void TrailingRyn_b(int ryn_TrStop, int ryn_TrStep, int Proskalz, int MAGIC, bool WaitProfit,  bool UseTrailingSound) {
  string SMB=Symbol(); 
  int i;
  int MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);//Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах   
  int SchBuy=SchBuy(MAGIC);
  int SchSell=SchSell(MAGIC);
  if(ryn_TrStop>=MinLevel && ryn_TrStep>0 && (SchBuy>0 || SchSell>0)){    
    for (i=OrdersTotal()-1;i>=0;i--){
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордер № ",i);}
      else {
        if (OrderSymbol()==SMB && OrderMagicNumber()==MAGIC){
          TrailingPositions_b(ryn_TrStop,ryn_TrStep,Proskalz,WaitProfit,UseTrailingSound);
        }
      }
    }
  }
 if(ryn_TrStop>=MinLevel && ryn_TrStep==0)
 Print("Трейлинг невозможен - ryn_TrStep==0");
} 
// =================================================================================================

//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом                             |
//+------------------------------------------------------------------+
void TrailingPositions_b(int ryn_TrStop, int ryn_TrStep, int Proskalz, bool WaitProfit, bool UseTrailingSound){
  if(OrderType()==OP_BUY){
    if(!WaitProfit || (Bid-OrderOpenPrice())>ryn_TrStop*Point){
      if (OrderStopLoss()<Bid-(ryn_TrStop+ryn_TrStep-1)*Point){
        ModifyStopLoss_b(Bid-ryn_TrStop*Point,UseTrailingSound);
      }
    }
  }
  if(OrderType()==OP_SELL){
    if(!WaitProfit || OrderOpenPrice()-Ask>ryn_TrStop*Point) {
      if(OrderStopLoss()>Ask+(ryn_TrStop+ryn_TrStep-1)*Point || OrderStopLoss()==0){
        ModifyStopLoss_b(Ask+ryn_TrStop*Point,UseTrailingSound);
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss_b(double ldStopLoss, bool UseTrailingSound){
  bool fm=false;
  string NameTrallingSound  = "ok.wav";// Наименование звукового файла для трейлинга
  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
  if(fm!=0 && fm!=-1){
    if(UseTrailingSound) { PlaySound(NameTrallingSound);}
  }   
  if(fm==0 || fm==-1) { Print("Ошибка № ",GetLastError()," при модификации ордера № ",OrderTicket());}
}
//+------------------------------------------------------------------+
 
VOLDEMAR:
Obrigado pessoal.....
Como o iCustom é usado com o iCustom e um indicador que em algum momento desenha uma seta para dizer à EA para abrir .....
Se iBands é um Ask > BBUP é compreensível, mas o que dizer do objeto que pode ou não aparecer (como a seta) ??????


Mesmo assim, você precisa olhar o código do indicador, para entender qual dos amortecedores contém o valor de qual linha.

Se você deseja inserir parâmetros indicadores na função iCustom, então os parâmetros indicadores devem ser adicionados às variáveis personalizadas do Expert Advisor. Caso contrário, a EA não entenderá quais valores estão nas variáveis listadas.

 
Olá! Por favor, não me chute se eu estiver fazendo a pergunta errada, mas já escavei em todo o fórum e na internet e não encontrei o que estou procurando. A questão é esta! É possível criar uma condição em se (após o último StopLoss (a tempo) deve fechar eg 2 lucro) até que eles não estejam fazendo mais ... Se é possível um pequeno esboço em código, mas também é possível apenas desenhar um esquema em palavras - obrigado de antemão!
 
ruzzo:
Olá! Por favor, não me chute se eu estiver fazendo a pergunta errada, mas eu cavei o fórum inteiro e a Internet e não encontrei o que eu estava procurando. A questão é esta! É possível criar uma condição em se (após o último StopLoss (a tempo) deve fechar eg 2 lucro) até que eles não estejam fazendo mais ... Se possível, um pequeno esboço em código, mas você pode apenas desenhar um esquema em palavras, obrigado de antemão!


Em geral, bem, não está claro o que exatamente você precisa.

Uma condição no if() pode ser inserida. Ela pode ser inserida após qualquer evento. Mas o que significa fechar dois lucros? E mais pode ser feito. Isso é tudo.


if(условие){

// какой-то код 

}

else{

// какой-то код 

} 
 
drknn:


Na verdade, eu não entendo o que você realmente precisa.

Uma condição no if() pode ser inserida. Ela pode ser inserida após qualquer evento. Mas o que significa fechar dois lucros? E mais pode ser feito. A questão é...


Entendo que primeiro a condição, e depois o código, mas eu queria criar uma condição, consegui StopLoss e trabalhar com outro lote, por exemplo - até fechar o negócio com dois lucros - só não quero comparar o saldo em se - tudo porque se eu comparar o saldo, e eu tenho uma ordem pendente com um limite de tempo - o lote alterado salta por - porque a ordem expira com o lote aumentado - talvez eu não esteja cavando?
 

Ajude o plz a entender.

Decidi usar o MACD Sample e não consigo entender o que está errado - não importa qual versão, mesmo a nativa no terminal.

todos dão erros :

2011.02.28 23:01:53 MACD Amostra EURUSD,M15: Abertura de erro Pedido de compra: 130

Conta de 5 dígitos. 1:500, lote 0,1 ou 1, sem diferença, conta real.

Aumentei SL e TP 10 vezes, nada mudou, mudei até mais, nenhum resultado, não consigo abrir algo lá ((

O fato de funcionar claramente, se eu abrir um acordo com minhas mãos, então ele o transfere para a posição sem perdas e começa a arrastá-lo, mas não quer abri-lo por si só!

O que estou fazendo de errado, não consigo entender por uma semana!??

Razão: