SOMENTE VELA / BARRA - Como catalogar ou segregar uma vela? - POR FAVOR, ME CORRIJA!

 


ONLYCANDLE - Como catalogar ou segregar a vela?

POR FAVOR, ME CORRIJA!



Temos a vela de Bullishand Bearish Eu quero segregar isto

é como umpastor. pastor tem fazenda, fazenda e tem ovelhas.

quando é época de barbear as ovelhas pastoreadas, o Sr. JOHN vai para a fazenda apanhar essas ovelhas e ...

A primeira ovelha apanhada é muito pequena para se barbear - John soltou.

Aovelha seguinte é boa - John pega tesoura e a ovelha é nua

Apróxima ovelha é boa e tem lã grande - John pega a tesoura BIG e a ovelha é nua

Apróxima ovelha é Áries - John Take Knife e Áries é eunuco neste momento


Eu quero fazer o mesmo com vela / barras
Nossa vela está indo Bar[0].... esperamos..... ela está indo, esperamos.... 15 minutos (M15) e aí está! ... o que é isso? verifique!

Se eu tenho vela Bullisch e vela (preço aberto [1]- preço fechado [1]) tem 2 pontos muito pequenos - deixe ir, não fazemos nada



Se eu tenho vela Bullisch (preço aberto [1] - preço fechado [1]) tem 4 pontos - então inicie o programa

CheckForOpenS1(); comece a função comprar se nosso preço ficar + 4 Pontos acima de nossa vela (cenário1)

Se eu tenho Vela Bullisch e Vela (preço aberto [1] - preço fechado [1]) tenho 5 pontos - Isto é muito Grande Vela - então inicie o programa

CheckForOpenS2(); comece a função comprar se nosso preço ficar + 14 Ponto acima de nossa vela (cenário2)



Eu quero esta bruxa cada vela, quero começar o programa COMPRA se eu tiver vela grande, se eu tiver vela pequena demais eu estarei esperando pela próxima

Então...isto está correto, mas eu tenho idéia :)

Por favor, não escreva nenhuma coisa necessária.

int start() // start program 
   
double bear() // check first candle -mabey is bear? = THIS IS aur NEW function title bear body is in()
   {     // start body
      double A=Open[1];  // stay Open[1] is changeable A
      double B=Close[1];  // stay Open[1] is changeable A    
      double C=A-B;         // result
      return(C);              // take result C and put in to function bear()
   }                              //end body, NOW bear is aur C example 6 or 89 ;212; 1; 2;..;;;.
   
double bull() // check first candle -mabey is bull
   {
      double A=Open[1];   // we use double because euro/usd have point example 1.9865
      double B=Close[1];     
      double C=B-A;
      return(C);
   }

// when we have bull catalog/ segregate  him..
switch(bull())
      { 
         case 1 : break;            // nothing happen
         case 2 : break;            // nothing happen
         case 3 : break;            // nothing happen
         case 4 : CheckForOpenS1(); break; // start CheckForOpenS1()- take it and go thrue with this.. we will see want is '...S1'
         case 5 : CheckForOpenS2(); CheckForOpenS3() break; // start CheckForOpenS2() and S3 ....
      }

// when we have bears catalog/segregate him..
switch(bears())
      { 
         case 1 : break;
         case 2 : break;
         case 3 : break;
         case 4 : CheckForOpenY1(); break;// start CheckForOpenY1()- take it and go thrue with this.. we will see want is '...Y1'
         case 5 : CheckForOpenY2(); CheckForOpenY3(); break; // start CheckForOpenY2() and Y3
      }


return(); // exit program wait for new tip, and ower and ower ....
}  // end


 
 

Você acha que qualquer pessoa que não seja de língua materna inglesa pode entender sua história? Eu entendo ovelhas e pastoreio, Sr. John, mas a história não faz sentido para mim. (Talvez seja eu... então sinto muito)

Você poderia explicar seu problema em algum "inglês internacional" usando as definições gerais para comércio/mql4?

O que significa esta frase?

<br / translate="no">PLEASEDO NOT WRITE TOPIC this well be handbook for the rest people
 
kronin:

Você acha que qualquer pessoa que não seja de língua materna inglesa pode entender sua história? Eu entendo ovelhas e pastoreio, Sr. John, mas a história não faz sentido para mim. (Talvez seja eu... então sinto muito)

Você poderia explicar seu problema em algum "inglês internacional" usando as definições gerais para comércio/mql4?

O que significa esta frase?

Kronin, provavelmente isso foi apenas um erro no tradutor online, aconteceu o tempo todo no fórum.
 

SOMENTE VELA - Como abrir uma posição? - deve ser o próximo assunto. Moderador, o que você acha? posso?

Nós implementamos o cenário selecionado
Como enviar pedidos?

int start() // start program 
{

// We have some function here like "int CalculateCurrentOrders(string symbol)" and  "double LotsOptimized()"
// many different thing, suddenly! we have our "CheckOpen();" 

//--------------------------------

void CheckOpen()      // void - because function return nothing
{                     // start body
   int    res;        // we will use changeable "res" this is "int" value
   if( Bid==Close[1]+4*Point)  // check conditions: Bid or Ask must be 4 Point above a BAR if no - nothing happen if Yes go below
     {               // start body if
      res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,Open[1]+37*Point,0,"",MAGICMA,0,Red);  // start "res" and "res" is sending message to platform to open position 
                     // what position is in "()" allways must be the same sequence symbol , op_*** , lot size , ...)
      return;        // if "res" do it then retunrn too ... y ... "if". Because "if" is done return too CheckOpen(). Because "CheckOpen()" is done stop and end.
     }               // stop body if

  }                  // stop body function "void CheckOpen()"
  
//-------------------------------- 

Nós temos um pedido
Mas o que eu deveria fazer para abrir duas posições em uma função?
Temos nosso cenário CheckForOpenS1() neste cenário Nós compramos duas vezes se nosso preço estiver no lugar correto, é claro.

//--------------------------------  


 
void CheckOpen1()      // define first function
{                     
   int    res;       
   if( Bid==Close[1]+4*Point)  
     {               
      res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red);  
                     
      return;        
     }               

}   
  
void CheckOpen2()      // define second function
{                     
   int    res;       
   if( Bid==Close[1]+8*Point)  // change 8 Point ( 4 ==> 8 )
     {               
      res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red);  
                     
      return;        
     }               

}   

//       I DONT KNOW..............

//--------------------------------  / our scenario  
void CheckForOpenS1()= true;      
 
  void CheckOpen1()
  void CheckOpen2()
  
  
//--------------------------------  / OR LIKE THESE
int res;
if ( CheckForOpenS1() == true)
 {
 res= CheckOpen1() CheckOpen2();
 }
 
Wodzuuu:

SOMENTE VELA - Como abrir uma posição? - deve ser o próximo assunto. Moderador, o que você acha? posso?

Nós implementamos o cenário selecionado
Como enviar pedidos?

Nós temos um pedido
Mas o que eu deveria fazer para abrir duas posições em uma função?
Temos nosso cenário CheckForOpenS1() neste cenário Nós compramos duas vezes se nosso preço estiver no lugar correto, é claro.

Eu realmente não entendo o que você está pedindo... você não está se tornando muito claro... ou talvez seja apenas eu.

Mas este código lhe causará problemas. . .

if( Bid == Close[1] + 4 * Point)

Leia este tópico:Preço de lata != preço ?

 

poderia de outra forma
como escrever uma simples EA com vários cenários de eventos

era uma vela pequena - características abertas 1
era a vela média -características abertas 2
era uma vela grande -características abertas 3


A

função 1 abre 1 posição e faz com que feche
As 2 abrem 2 posições guardando-as e fecham
A s 3 abrem 2 posiçõe s mas a um preço diferente

cada vez que temos uma vela, cada vez que há outra função que faz coisas diferentes

Sei que você não pode escrever para mim, mas qualquer conselho....

 

Como prometido, olhei novamente para isso, mas ainda não faz sentido para mim, sinto muito.

Isto nunca vai funcionar:

double bull() // check first candle -mabey is bull
   {
      double A=Open[1];   // we use double because euro/usd have point example 1.9865
      double B=Close[1];     
      double C=B-A;
      return(C);	// <-- C is probably never 1,2,3,4,5.....
   }

// when we have bull catalog/ segregate  him..
switch(bull())		// <-- the expression here is something like 0.00123. None of your case statements will be executed.
      { 
         case 1 : break;            // nothing happen
         case 2 : break;            // nothing happen
         case 3 : break;            // nothing happen
         case 4 : CheckForOpenS1(); break; // start CheckForOpenS1()- take it and go thrue with this.. we will see want is '...S1'
         case 5 : CheckForOpenS2(); CheckForOpenS3() break; // start CheckForOpenS2() and S3 ....
      }

Leia aqui sobre como usar o switch: https://docs.mql4.com/basis/operators/switch

Isto não está claro em absoluto:

void CheckOpen2()      // define second function
{                     
   int    res;       
   if( Bid==Close[1]+8*Point)  // change 8 Point ( 4 ==> 8 )
     {               
      res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red);  
                     
      return;        
     }               

} 

A expressão igual talvez não seja desejada, mas o que deveria ser?

Se a expressão for <, então enviará imediatamente uma ordem de venda quando uma nova barra chegar (já que o preço aberto da nova barra é talvez < do que o preço fechado da barra previos+8*Ponto)
Se o preço deve ser lido como >, então ele esperará que o preço suba um pouco e então enviará um pedido de VENDA. Eu realmente não entendo sua estratégia, então talvez seja desejado assim.

Eu também poderia imaginar que você quer dizer:

if(Bid<Close[1]-8*Point)   

Você está negociando com um corretor de 4 dígitos onde 1 Ponto é igual a 1 Pip? Caso contrário, o preço deve mover apenas 0,8 pips o que provavelmente também não é o que você quer (E o spread poderia confundi-lo adicionalmente).

Acho que você deve rever seu código e corrigi-lo onde puder. Sinta-se à vontade para fazer outras perguntas se tiver alguma específica. Esteja ciente de que sua estratégia pode funcionar completamente diferente, apenas porque um codificador entendeu mal o que você quis dizer.

 

Minha estratégia é
se a vela aparecer BULL de 4 a 5 pontos , após a vela (sempre, sob quaisquer condições) se preparar para enviar dois pedidos de compra (se o preço atingir nosso nível exigido para comprar um, e como chegar à compra2)

se a vela aparecer BULL de 6 a 7 pontos, depois que a vela (sempre, sob quaisquer condições) se preparar para enviar trêsordens de compra (se o preço atingir nosso nível exigido para comprar uma, e como chegar à compra2e 3)

Tenho um pequeno erro em algum lugar no Bid ou Ask why EA não funciona ... (não consigo encontrar este erro , mas normalmente a EA funciona muito bem para o que escrevi ... compra e fecha) mas mostra meu plano técnico.

FAÇO COM QUE ELE FUNCIONE AGORA

Quando você olha para o fundo , ele fica muito lotado e às vezes substitui os cenários da EA Bull4 e o cenário abre a Bull6 Bull4 e quando percebi que de repente ele muda de idéia e termina a Bull6 Bull6
Pode ser simplificado ?

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#define MAGICMA  20050610


//+------------------------------------------------------------------+
//| Calculate open positions    HOW MEANY OF THIS                    |
//+------------------------------------------------------------------+

int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY) buys++;
        }
     }
//---- return orders volume
   return(buys);
  }

//+------------------------------------------------------------------+
//| Calculate candle                                                 |
//+------------------------------------------------------------------+
bool BULL4()
   {
   if(Close[1]-Open[1]>=4*Point && Close[1]-Open[1]<=5*Point)
   return(true);
   } 

bool BULL6()
   {
   if(Close[1]-Open[1]>=6*Point && Close[1]-Open[1]<=7*Point)
   return(true);
   }
      
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
 
void CheckForOpenBULL41()
  {
   int    res;
   if(Bid==Close[1]+3*Point)  
     {
      res=OrderSend(Symbol(),OP_BUY,0.41,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Blue);
      return;
     }
  }
  
void CheckForOpenBULL42()
  {
   int    res;
   if(Ask>OrderOpenPrice()+2*Point)  
     {
      res=OrderSend(Symbol(),OP_BUY,0.42,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Blue);
      return;
     }
  }  
  
void CheckForOpenBULL61()
  {
   int    res;
   if(Bid==Close[1]+4*Point)  
     {
      res=OrderSend(Symbol(),OP_BUY,0.61,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red);
      return;
     }
  }
  
void CheckForOpenBULL62()
  {
   int    res;
   if(Ask>OrderOpenPrice()+2*Point)  
     {
      res=OrderSend(Symbol(),OP_BUY,0.62,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red);
      return;
     }
  }

void CheckForOpenBULL63()
  {
   int    res;
   if(Ask>OrderOpenPrice()+2*Point)  
     {
      res=OrderSend(Symbol(),OP_BUY,0.63,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red);
      return;
     }
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+

void CheckForCloseBULL()
{
   RefreshRates();
   if(OrderOpenPrice()+4*Point< Ask)
   for (int i = OrdersTotal(); i >= 0;i--)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if (OrderSymbol() == Symbol()) 
      {
         bool ticket = true;
         if (OrderType() == OP_BUY) ticket = OrderClose(OrderTicket(),OrderLots(),Bid,1,Black);

      }
   }
} 

  
  
//+------------------------------------------------------------------+
//| Start function                                 |
//+------------------------------------------------------------------+
void start()
  {
   
   if(BULL4()==true && CalculateCurrentOrders(Symbol())==0) CheckForOpenBULL41();
   else                                    CheckForCloseBULL();

   if(CalculateCurrentOrders(Symbol())==1) CheckForOpenBULL42();
   else                                    CheckForCloseBULL();
   
   //---//
   
   if(BULL6()==true && CalculateCurrentOrders(Symbol())==0) CheckForOpenBULL61();
   else                                    CheckForCloseBULL();

   if(CalculateCurrentOrders(Symbol())==1) CheckForOpenBULL62();
   else                                    CheckForCloseBULL();
   
   if(CalculateCurrentOrders(Symbol())==2) CheckForOpenBULL63();
   else                                    CheckForCloseBULL(); 
    
   if(CalculateCurrentOrders(Symbol())==3) CheckForOpenBULL63();
   else                                    CheckForCloseBULL(); 
       
   if(CalculateCurrentOrders(Symbol())==4) CheckForCloseBULL();
  }
//+------------------------------------------------------------------+

 
Wodzuuu:

Minha estratégia é
se a vela aparecer BYK de 4 a 5, depois que a vela (sempre, sob quaisquer condições) se preparar para enviar dois pedidos de compra de dados (se o preço atingir nosso nível exigido para comprar um, e como chegar ao zkup 2)

se a vela aparecer BYK de 6 a 7, depois que a vela (sempre, sob quaisquer condições) se preparar para enviar três ordens de compra (se o preço atingir nosso nível exigido para comprar uma, e como chegar ao zkup 2 e 3)

Tenho um pequeno erro em algum lugar no Bid ou Ask why EA não funciona ... (não consigo encontrar este erro , mas normalmente a EA funciona muito bem para o que escrevi ... compra e fecha) mas mostra meu plano técnico.

Quando você olha para o fundo , ele fica muito lotado e às vezes substitui os cenários da EA Bull4 e o cenário abre a Bull6 Bull4 e quando percebi que de repente ele muda de idéia e termina a Bull6 Bull6
Pode ser simplificado ?

BYK ???

Isto é errado . . .

for (int i = OrdersTotal(); i >= 0;i--)

... as posições começam em 0, portanto você precisa contar para baixo a partir de OrderTotal() - 1


Você faz isso . . . .

void CheckForCloseBull()           // close ALL AT ONCE buy of course
{
   RefreshRates();
   if(  OrderOpenPrice()  > Ask+6*Point)

. . . você recebe oOrderOpenPrice() mas para qual ordem ? você terá várias ordens abertas . .



Você usares variável para manter o valor de retorno de suas chamadas OrderSend() e o que você faz com ele ? nada, por quê ?

O que são valores de retorno da função ? Como eu os utilizo ?

 

Muito boa resposta RaptorUK


1. problema res
Estou estudando EA Moving Average resolution there is only 3 times, all as a function of time, after for it does not exist.

A primeira vez que ele é usado para informações "olá, vamos usar res".

uma segunda vez para enviar o pedido. OrderSend devolve o número de pedidos, que é nosso res = 343321, abowe a função 'void CheckForOpen () " res não existe.

mas...
Eu acho que se o " CheckForOpen () vazio Observe a verdade deste comando OrderSelect de alguma forma traga esse número exceto "void CheckForOpen () " Eu tentarei ...

2. Problema OrderOpenPrice()

você está absolutamente certo, mas esta sintaxe funciona surpreendentemente bem :) Vou tentar fazer algo nesse lugar

3. OrdensTotal() - 1você está absolutamente certo,

4. BYK (POLÔNIA)= O tradutor BULL tem problemas

 

Para aqueles que ainda não entenderam minha EA, escreva uma história: D hehehe


Todos os passos que damos, são as funções. Agora estou escrevendo em um computador é uma função.Assisto a um programa de TVé a segunda função, etc.
Agora vamos passar para a cozinha ...
Temos um livro de receitas, abrimos a tabela de conteúdos e lemos pontos sequenciais
Primeiro Como fazer costeletas de porco - colocar a carne em uma tigela, adicionar sal, pimenta, descascar batatas
À esquerda o evento - as características certas, e alguns temas - não , a menos que seja fácil!


Depois de ler como fazer as costeletas de porcocomeçam a fazer, a fazer coisas. O bife tem 25 minutos, e como eu comecei a ter um fim.
Já se passaram cinco minutos M5 ( cinco minutos depois),começamos a ler o próximo ponto, um livro de receitas.
Segundo Como fazer uma salada - Descasque cenouras, descasque cebolas, e outras porcarias.


E aqui a magia acontece, porque criou o dobro, o bordo (segunda pessoa). Fazemos isto em costeletas de porco e salada ao mesmo tempo.Começamos ater na cozinha duas pessoas em uma.

Quanto mais pontos você lê, mais pessoas aparecem na cozinha. As pessoas na cozinha desaparecem depois de concluir suas tarefas e lavam a louça.


O evento são velas - apresenta várias opções para comprar e vender ou fechar.