[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 371

 
belous:

Gente...ajudar quem sabe!!!!


A essência da estratégia: Entrada por estocástico (5,14,3) saída também por estocástico, mas com outro período (5,3,3). Aqui eu não entendo como pode zdelat uma saída por estocásticos, e não no sinal inverso?
Eu tenho um problema e não tenho idéia de como ele pode ser resolvido, vou tentar explicar.
Assim, há 2 funções no código que eu estabeleci
...

Colocar os códigos no fórum com o SRC. E não há nada para gritar.


 
Olá. Quem pode sugerir qual é o problema com o conselheiro. Ao compilar dá o erro que você tem de colocar um parêntese, eu coloco-compilar dá outro que o parêntese é colocado errado. Toda minha cabeça já está quebrada.
Arquivos anexados:
 
artemka_1981:
Olá, alguém pode me aconselhar sobre qual é o problema com minha EA. Continuo recebendo um erro durante a compilação, continuo recebendo um erro quando escrevo um parêntese de fechamento e o compilador me dá outro erro quando escrevo um parêntese de fechamento.

Se você colocar um parêntese de fechamento no final,

adicionar linhas como OrderMagicNumber() == )

e colocar um parêntese de fechamento em um deles, tudo se compila

 
Você pode me dizer como definir corretamente a expiração do pedido? Eu tentei escrever TimeCurrent()+60, as ordens não abrem. Geralmente, este parâmetro é permitido no corretor
 
sss2019:
Diga-me como definir corretamente a expiração do pedido? Tentei escrever TimeCurrent()+60, ele não abre pedidos. Geralmente, este parâmetro é permitido no corretor

60 é 60 segundos, portanto, provavelmente não se pode defini-lo tão baixo (eu tenho um limite de 10 minutos, por exemplo).

tente TimeCurrent()+60*60*60*24 - um dia

e veja qual o código de erro que volta

 
ilunga:

Se você colocar um parêntese de fechamento no final,

adicionar linhas como OrderMagicNumber() == )

e colocar um parêntese de fechamento em um deles, tudo se compila

Olá. Adicionei um parêntese e agora o erro é '{\i1}final_do_programa' - parêntese esquerda desequilibrada. Não está claro ( colocar um parêntese de fechamento em um deles )
if(tim<iTime(Symbol(),PERIOD_D1,0)) return(1);
 return(0);
 }
 
 OrderMagicNumber()

 
artemka_1981:
Olá. Adicionei um parêntese e agora o erro é '{\i1}final_do_programa' - parêntese esquerda desequilibrada. Não está claro ( colocar um parêntese de fechamento em um deles )

ele se compila assim:

//+------------------------------------------------------------------+
//|                                                Open_Buy_Sell.mq4 |
//|                                                                  |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#define magic 999

#property link      "http://www.metaquotes.net"
extern double  _lots         = 0.01;
extern int     _takeProfit   = 1200;
extern int      maxpos       = 1;     // количество поз
extern bool    _trailingStop = true;
//+------------------------------------------------------------------+

int start()
  {
   double _slBuy=0.0,_slSell=0.0, _tpBuy=0.0, _tpSell=0.0, _opBuy=0.0, _opSell=0.0;

//if (iVolume(Symbol(),PERIOD_D1,0)>1) return;
//     if (Volume[0]>1) return;
     if (_trailingStop){ 
     _TrailingStop();
      }
   _opBuy=NormalizeDouble(iHigh(Symbol(),0,1), Digits);
   _slBuy=NormalizeDouble(iLow(Symbol(),PERIOD_D1,1), Digits);
   _tpBuy=NormalizeDouble(Ask+_takeProfit*Point, Digits);
      if ( _opBuy<Ask && CountPos(1)<maxpos)
       if(barOpen(OP_BUYSTOP)==1 ||barOpen(OP_BUY)==1 )
        OrderSend(Symbol(),OP_BUYSTOP,_lots,_opBuy,15,_slBuy,_tpBuy,"Open_Buy_Sell",0,Green);

   _opSell=NormalizeDouble(iLow(Symbol(),0,1), Digits);
   _slSell=NormalizeDouble(iHigh(Symbol(),PERIOD_D1,1), Digits);
   _tpSell=NormalizeDouble(Bid-_takeProfit*Point, Digits);
     if (_opSell>Bid && CountPos(0)<maxpos)
      if(barOpen(OP_SELLSTOP)==1 ||barOpen(OP_SELL)==1 )
       OrderSend(Symbol(),OP_SELLSTOP,_lots, _opSell,15,_slSell,_tpSell,"Open_Buy_Sell",0,Red);
//----
   return(0);
  }
//+------------------------------------------------------------------+  
 //Проверяем количесвто позиций.
   int CountPos(int type) 
{//Описание http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=66

int i;
int col;
int count=0 ;
for(i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()== magic){count++;}
if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()== magic){count++;}
         }
       }   
return(count);
}
//+------------------------------------------------------------------+
void _TrailingStop(){
   int i;
   double _stopLossSellF=NormalizeDouble(iHigh(Symbol(),0,1), Digits),
          _stopLossBuyF=NormalizeDouble(iLow(Symbol(),0,1), Digits);
   if (OrdersTotal()>0){
      for (i=OrdersTotal()-1; i>=0; i--){
         if (OrderSelect(i, SELECT_BY_POS)){
            if (OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
             
               if (OrderType()==OP_BUY && OrderOpenPrice() < _stopLossBuyF){
                  while (IsTradeContextBusy()) Sleep(1000);
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossBuyF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
               }
           
               if (OrderType()==OP_SELL && OrderOpenPrice() > _stopLossSellF && _stopLossSellF!=0.0){
                  while (IsTradeContextBusy()) Sleep(1000);
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossSellF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
               }
            }
         }
      }
   }
return;
}
int barOpen(int ty)
{
datetime tim=0;
 for(int i=0; i<=OrdersTotal(); i++)
    {  
       if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;
       if(OrderSymbol() !=Symbol()|| OrderMagicNumber()!= magic|| OrderType()!=ty) continue; 
       if(tim<OrderOpenTime())        
          tim=OrderOpenTime();
   }
 for(i=0; i<=OrdersHistoryTotal(); i++)
    {  
       if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
       if(OrderSymbol() !=Symbol()|| OrderMagicNumber()!= magic|| OrderType()!=ty) continue; 
       if(tim<OrderOpenTime())        
          tim=OrderOpenTime();
   }
 
if(tim<iTime(Symbol(),PERIOD_D1,0)) return(1);
 return(0);
}
 

Você pode me dizer se eu tenho dois comandos consecutivos OrderSend, eu preciso colocar a função IsTradeAllowed entre eles?

ou não é necessário e a EA passará da primeira chamada de OrderSend para a segunda somente depois de um pedido feito com sucesso?

Se o IsTradeAllowed ainda for necessário, que atraso de tempo deve ser definido no loop?

 
Houve algum erro nessa linha? Muito obrigado.
if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==MAGICMA ){count++;}
if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==MAGICMA ){count++;}
ilunga:

É assim que ele se compila:

Agora quando o teste não abre nenhuma transação no log escreve Open_BuyS_SellS EURUSD,Daily: OrderSend error 131

 
Boa noite. Gostaria de saber se alguém usa o indicador para distribuir negócios por níveis de preço em um determinado período de tempo, que pode ser baixado de http://fxcoder.ru/indicators/tpo. Em caso afirmativo, como pode ser devidamente analisado? Você tem alguma informação sobre o assunto?