Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 292

 

Pessoal, por favor, aconselhem um bom CD para o comércio da EA?

 
Que tipo de Consultor Especialista você gostaria de ter uma conta real?
 
Profitov:
Que tipo de consultor especialista posso perguntar? O que o "Martin" me diz sobre o próximo que você gostaria de usar em uma conta real?

Eu não sei que tipo de "Martin"))) Não, ainda não para a conta real, não para a conta demo, mas quero usar a conta demo da mesma corretora que pode ser usada para a conta real mais tarde.

 
SpikeOne:

Pessoal, alguém pode descrever o que acontece onde e mostrar o local onde os pedidos são fechados no +, e a abertura de uma nova série.

Andrey, sem ofensa, mas este absurdo pertence aos Anais!
 

Saudações a todos! Estou pedindo ajuda para resolver um problema interessante. Eu tenho um EA, cuja característica é que após obter um lucro, as próximas negociações de 1 a 4 são fechadas com stop loss, depois lucro novamente. O Expert Advisor abre negócios com base no sinal indicador. Para excluir negócios lucrativos após o lucro, deve-se ignorar os sinais gerados pelo indicador, ou seja, não fechar negócios (1,2,3,4) após obter um lucro. A função Sig está disponível para este fim. Entretanto, acho que escrevi mal esta função porque a EA não abre ordens com ela e tudo está funcionando muito bem sem ela. Por favor, avise as pessoas inteligentes onde eu cometi um erro.

Sim, sinal é o número de sinais após o lucro e pynkt é o tamanho do lucro em pips.

Eu ficaria grato pela ajuda.

 
void CheckForOpen()
{
   int ticket, STOPLEVEL;
   double Price, SL, TP; 
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);


   double MA1Low = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,0,1), Digits); 
   double MA2High = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,1,1), Digits);
   
 
  
   if(Volume[0]>1) return;

    // продажа
   if (Open[1]>Close[1] && Open[1] > MA1Low && Close[1] < MA1Low)
   
{
      if(Pro(1,100))

   {
       ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"Pattern_1",1000,0,Red);
      return;
    }
   
  }  
//---- buy conditions
   // покупка
  if (Open[1]<Close[1] && Open[1] < MA2High && Close[1] > MA2High)
 
 { 
   if(Pro(1,100))
   {
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,"Pattern_1",1000,0,Blue);
      return;
   }       
   }
}
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Sig(int signal,int pynkt)
 {
  static int cnt = 0;
  static datetime tm;
  if(Time[0] == tm) return(false);
  tm = Time[0];
  if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY) == true)
   {
    cnt = cnt + 1;
    if(OrderType() == OP_BUY && OrderClosePrice() - OrderOpenPrice() < pynkt*Point) cnt = 0;
    if(OrderType() == OP_SELL && OrderOpenPrice() - OrderClosePrice() < pynkt*Point) cnt = 0;
    if(cnt >= signal) return(true);
   }
  return(false);
 }
//+------------------------------------------------------------------+
 
Ajude-me, a EA não compila
//ПАРАМЕТРЫ ОТКРЫТИЯ ДЛИННОЙ ПОЗИЦИИ

if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)>100&&iCCI(Symbol,0,14,PRICE_TYPICAL,0)>-100 
{
if((NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)&&(NumberOfBarCloseLastPos()>0||NumberOfBarCloseLastPos()==-1))
{ 
Opn_B=true;
//Cls_S=true;
}
}
 //ПАРАМЕТРЫ ОТКРЫТИЯ короткой ПОЗИЦИИ    
if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100&&iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100
{
if((NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)&&(NumberOfBarCloseLastPos()>0||NumberOfBarCloseLastPos()==-1))
{
Opn_S=true; 
//Cls_B=true;   
}  
}


if(Tip==0){
           if(TrailingStop>0)  
              {                 
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(SL<Bid-Point*TrailingStop)
                    {
                     OrderModify(Ticket,OrderOpenPrice(),Bid-Point*TrailingStop,TP,0,Green);
                     //return(0);
                    }
                 }
              }
}

if(Tip==1){
           if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if(SL>Ask+Point*TrailingStop)
                    {
                     OrderModify(Ticket,OrderOpenPrice(),Ask+Point*TrailingStop,TP,0,Red);
                    // return(0);
                    }
                 }
              }
}


   // Закрытие ордеров
   while(true)                                  // Цикл закрытия орд.
     {
//длинной
//if (iRSI(NULL,0,14,PRICE_CLOSE,0)<30&&iRSI(NULL,0,14,PRICE_CLOSE,1)>30){
 if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)<100&&iCCI(Symbol,0,14,PRICE_TYPICAL,0)<-100 {  
      if (Tip==0)                // Открыт ордер Buy..
        {                                       //и есть критерий закр
         Alert("Попытка закрыть Buy ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         Ans=OrderClose(Ticket,Lot,Bid,2);      // Закрытие Buy
         if (Ans==true)                         // Получилось :)
           {
            Alert ("Закрыт ордер Buy ",Ticket);
            break;                              // Выход из цикла закр
           }
                           
            
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
        }

// короткой       
if (Close[NULL]){
      if (Tip==1)                // Открыт ордер Sell..
        {                                       // и есть критерий закр
         Alert("Попытка закрыть Sell ",Ticket,". Ожидание ответа..");
         RefreshRates();                        // Обновление данных
         Ans=OrderClose(Ticket,Lot,Ask,2);      // Закрытие Sell
         if (Ans==true)                         // Получилось :)
           {
            Alert ("Закрыт ордер Sell ",Ticket);
            break;                              // Выход из цикла закр
           }
                  
           
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
        }
      break;                                    // Выход из while
     }

 
niformalka:
me ajude, a EA não compila.

... e a que regras de linguagem você esculpiu de acordo?! Por exemplo:

if(iCCI(Symbol,0,14,PRICE_TYPICAL,0)>100&&iCCI(Symbol,0,14,PRICE_TYPICAL,0)>-100 
{

:)

 
niformalka:
me ajude, a EA não compila

Clique duas vezes no círculo vermelho sinalizando um erro de compilação e você verá o mesmo círculo à esquerda na linha onde procurar o erro! Você não pode ver seu círculo a partir daqui!

E apague seu correio como eu apaguei o meu com sua folha!

 
SpikeOne:

você tem o ano de 2014
Adoraria uma resposta abrangente! indo para fazer desta marca uma das mais vendidas.
 
niformalka:

Pessoal, ajudem-me a encontrar um bug, o EA não compila, já me arrebentei com ele, presumivelmente um erro nas linhas de abertura e fechamento da posição longa/curta


//OPEN LONG POSITION PARAMETER

if(iCCI(Símbolo,0,14,PRICE_TYPICAL,0)>100&&iCCI(Símbolo,0,14,PRICE_TYPICAL,0)>-100
{
if((NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)&&(NumberOfBarCloseLastPos()>0||NumberOfBarCloseLastPos()==-1))
{
Opn_B=verdadeiro;
//Cls_S=verdadeiro;
}
}
//POSIÇÃO DE CURTO POSIÇÃO PARÂMETROS DE ABERTURA
if(iCCI(Símbolo,0,14,PRICE_TYPICAL,0)<100&iCCI(Símbolo,0,14,PRICE_TYPICAL,0)<-100
{
if((NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)&&(NumberOfBarCloseLastPos()>0||NumberOfBarCloseLastPos()==-1))
{
Opn_S=verdadeiro;
//Cls_B=verdadeiro;
}
}


if(Tip==0){
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(SL<Bid-Point*TrailingStop)
{
OrderModify(Ticket,OrderOpenPrice(),Bid-Point*TrailingStop,TP,0,Green);
//retorno(0);
}
}
}
}

if(Tip===1){
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if(SL>Ask+Point*TrailingStop)
{
OrderModify(Ticket,OrderOpenPrice(),Ask+Point*TrailingStop,TP,0,Red);
// { return(0);
}
}
}
}


// Encerrar pedidos
while(true) // Fechar o laço do pedido
{
//longo
//if(iRSI(NULL,0,14,PRICE_CLOSE,0)<30&iRSI(NULL,0,14,PRICE_CLOSE,1)>30){
if(iCCI(Símbolo,0,14,PRICE_TYPICAL,0)<100&iCCI(Símbolo,0,14,PRICE_TYPICAL,0)<-100 {
se (Dica==0) //Open Buy order
{ // e há um critério próximo
Alerta("Tentando fechar Comprar ",Ticket", esperando resposta...);
RefreshRates(); // Atualização de dados
Ans=OrderClose(Ticket,Lot,Bid,2); // Fechar Compra
se (Ans===verdadeiro) // Funcionou :)
{
Alerta ("Pedido Fechado de Compra", Ticket;)
pausa; // Saída do circuito fechado
}


if (Fun_Error(GetLastError())==1) // Tratamento de erros
continuar; // tentar novamente
retornar; // Sair do início()
}
}

// curto
se (Fechar[NULL]){
se (Tip===1) //Open Sell order.
{ // há um critério próximo
Alerta ("Tentativa de fechar Vender ",Bilhete";)
RefreshRates(); // Atualizar dados
Ans=OrderClose(Ticket,Lot,Ask,2); // Fechamento de Venda
se (Ans===verdadeiro) // Funcionou :)
{
Alerta ("Pedido de venda fechado", Ticket;)
pausa; // Saída do circuito fechado
}


if (Fun_Error(GetLastError())==1) // Tratamento de erros
continuar; // tentar novamente
retornar; // Sair do início()
}
}
pausa; // Sair enquanto
}



A única coisa que o compilador não pode fazer é declarar variáveis.
Razão: