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

 
Sobre o par EUR/USD.
 
waitra >> :

int NumberOfPos_HISTÓRIA

Eu tentei, só conta o número de posições atuais abertas, não conta o histórico, retorna o valor a zero ao fechar o pedido, talvez algo mais devesse ser mudado...

Aqui eu o fiz. Eu assumi outra função da I.Kim e a mudei um pouco.

Funciona como um relógio:

A função START pode ser usada para controle.

Comment ("ордера на истории= ",NumberOfPos_HISTORY_2(NULL,-1,Magic));

E aqui está a própria função:

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru            |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                  |
//|  Описание : Возвращает кол-во ордеровиз из  истории счета  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                           |
//|    sy - наименование инструмента   (""   - любой символ, |
//|                                     NULL - текущий символ)        |
//|    op - операция                   (-1   - любая позиция)       |
//|    mn - MagicNumber                (-1   - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfPos_HISTORY_2 (string sy="", int op=-1, int mn=-1) {
     int      i, k=OrdersHistoryTotal(), kp=0;
  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++) {
    if (OrderSelect( i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()== sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if ( op<0 || OrderType()== op) {
            if ( mn<0 || OrderMagicNumber()== mn) {               
                if (OrderProfit()<0 || OrderProfit()>=0) kp++;           
            }  } } } }  }  return( kp);}


 

Olá a todos!!!

//+------------------------------------------------------------------+
//|                                                   SimpleMA22.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//---- input parameters
extern int       MAFP=21;
extern int       MASP=55;
extern double    Lots=0.1;
extern int       StopLoss=60;
extern int       TakeProfit=30;
extern int       MagicNumber=123456;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
  
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
   
bool CheckOrders(int Type)
{
 bool Result= True;
 for(int i=0; i<OrdersTotal(); i++)
  if(OrderSelect( i, SELECT_BY_POS))
   if(OrderMagicNumber()== MagicNumber && OrderSymbol() == Symbol())
      if(OrderType()== Type)
        {
         if( Type==OP_BUY)
           if(!OrderClose(OrderTicket(),OrderLots(),Bid,0))
             Result= False;
         if( Type==OP_SELL)
           if(!OrderClose(OrderTicket(),OrderLots(),Ask,0))
             Result= False;
         } 
        else Result= False;
 return( Result); 
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
    // Узнаем уровень стопов и спрэд
    int Spread = MarketInfo(Symbol(), MODE_SPREAD);
    int StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);

    // Рассчитываем значения средних на 0-ом и 1-ом барах
    double MAF_0 = iMA(NULL, 0, MAFP, 0, 1, 1, 0);
    double MAF_1 = iMA(NULL, 0, MAFP, 0, 1, 1, 1);
    double MAS_0 = iMA(NULL, 0, MASP, 0, 1, 1, 0);
    double MAS_1 = iMA(NULL, 0, MASP, 0, 1, 1, 1);
    
    // открытие позиции Buy покупка
    if( MAF_1 < MAS_1 && MAF_0 > MAS_0)
     if( CheckOrders(OP_SELL))
      {
       if( StopLoss <= StopLevel+ Spread)
         double SL = 0;
        else
         SL = Ask - StopLoss*Point;
       if( TakeProfit <= StopLevel- Spread)
         double TP = 0;
        else
         TP = Ask + TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 5, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
    
    // Открытие позиции Sell продажа  
    if( MAF_1 > MAS_1 && MAF_0 < MAS_0)
     if( CheckOrders(OP_BUY))
      {
       if( StopLoss <= StopLevel+ Spread)
         SL = 0;
        else
         SL = Bid + StopLoss*Point;
       if( TakeProfit <= StopLevel- Spread)
         TP = 0;
        else
         TP = Bid - TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 5, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }
//----
   return(0);
  }//+------------------------------------------------------------------+


Cérebros cozidos a vapor, cozidos a vapor e desligados.....

Provavelmente é mais fácil descobrir como conseguir que os bêbados cavem uma trincheira ou organizem a coleta de lixo por vagabundos do que 14

Nesta linha, em algum lugar no início, foi levantado um problema semelhante ao meu. Leia, leia.... Ainda não entendi, e a conversa foi sobre bandeiras...

A idéia é simples. SimpleMA, mas é um pouco modificado, mas isso não importa.

De quem seria o fi que deveria ser adicionado SE um EA (para comprar) comprasse, um pedido seria acionado pelo TP e o próximo pedido seria colocado na condição de venda, ou seja, cruzamento MACC para venda?

Independentemente de haver ou não uma condição adicional.

 

Talvez a função https://www.mql5.com/ru/forum/107476/page21 possa ajudar.

Função isCloseLastPosByTake().
Esta função retorna uma bandeira para fechar a última posição por Take.

Flag up - True - TakeProfit foi acionado.

Bandeira arriada - Falsa - posição foi fechada devido a outro motivo.


A função em si deve ser colocada logo no final do código. Adicionar à condição de Venda:

if( isCloseLastPosByTake( NULL, OP_BUY, MagicNumber) ==true) {//продаем



 
xmurik писал(а) >>
Sobre o par EUR/USD.
//+------------------------------------------------------------------+
//|                                                       скрипт.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   int kolvo_barov = 1000;
   double start_price = iOpen(Symbol(),0, kolvo_barov);
   int handle;
   handle=FileOpen("my_data.csv", FILE_WRITE|FILE_CSV, '\t');
   if( handle>0) {
      while( kolvo_barov>1) {
         if (iHigh(Symbol(),0, kolvo_barov)> start_price + 0.01) {
            FileWrite( handle,"+100");
            start_price = start_price + 0.01;
         }      
         if (iHigh(Symbol(),0, kolvo_barov)< start_price + 0.01) {
            FileWrite( handle,"-100");
            start_price = start_price - 0.01;
         }      kolvo_barov--;
      }
      FileClose( handle);
   }
   return(0);
}
//+------------------------------------------------------------------+
Confira. Só que eu não o verifiquei. Pode haver erros.
 

Boa gente. Não entendo (ver foto) porque Momentum não é Momentum :).


Momentum

Você pode explicar por que ele está acima de zero?
 
rid писал(а) >>

Eis o que eu fiz. Eu assumi outra função de I. Kim e a mudei um pouco.

Funciona como um relógio:

A função START pode ser colocada para controle.


E aqui está a própria função:

Sim, funciona! Muito obrigado ! Obrigado! >> Boa sorte para você!

 
warlock писал(а) >>

Socorro!!! o especialista deve abrir os negócios na abertura de uma vela nova, mas além de abrir no início da vela, ele abre as "esquerdas" de forma caótica...

Além disso, depois de atribuir Alto e Baixo, deixou de comprar... mas só vende...

E não podemos olhar com cuidado o que a OrderSend() contém. Uma falha por engano, a outra falha.

if ( AllowBUY) 
   tick=OrderSend(Symbol(),OP_SELLSTOP, Lot, price1,3,( price1- SL*Point)* loss,( price1- TP*Point)* profit,"scriptSELLstop",CLR_NONE, expiration);
if ( AllowSELL) 
   tick=OrderSend(Symbol(),OP_SELLSTOP, Lot, price2,3,( price2+ SL*Point)* loss,( price2- TP*Point)* profit,"scriptSELLstop",CLR_NONE, expiration);
 
warlock >> :

Socorro!!! o especialista deve abrir os negócios na abertura de uma vela nova, mas além de abrir no início da vela, ela também abre "à esquerda" de forma caótica...

Além disso, depois de atribuir Alto e Baixo, parou de comprar... apenas vender...

Obrigado... sentado por uma hora... Eu não conseguia entender o que estava acontecendo... Às vezes você precisa de alguém que abra os olhos para os erros...

 
Olá pessoal, qualquer pessoa pode ajudar a escrever um indicador AC ?
Razão: