SOLO CANDELA / BAR - Come catalogare o segregare la candela? - PER FAVORE CORREGGIMI!

 


SOLO CANDELE - Come catalogare o segregare le candele?

PER FAVORE CORREGGETEMI!



Abbiamo candela rialzista e ribassista voglio segregare questo

È proprio come ilpastore. il pastore ha una fattoria, una fattoria e ha delle pecore.

Quando è stagione per radere le pecore, il pastore Mr. JOHN va alla fattoria, cattura le pecore e ...

La prima pecora catturata è troppo piccola da radere - John lascia andare.

Laprossima pecora è buona John prende le forbici e la pecora è nuda

Laprossima pecora è buona e ha una grande lana - John prende le forbici GRANDI e la pecora è nuda

Laprossima pecora è Ariete - John prende il coltello e l'Ariete è eunuco in questo momento


Voglio fare lo stesso con candela / bar
La nostra candela sta andando Bar[0].... noi aspettiamo..... lei sta andando, noi aspettiamo.... 15 minuti (M15) ed eccolo! ... cosa c'è? controlla!

Se ho Bullisch Candle e Candle (prezzo di apertura [1]- prezzo di chiusura [1]) hanno 2 punti troppo piccoli - lasciare andare, non facciamo nulla



Se ho Bullisch Candle e Candela (prezzo aperto [1]- prezzo di chiusura [1]) hanno 4 punti - poi avviare il programma

CheckForOpenS1(); avviare la funzione di acquisto se il nostro prezzo ottiene + 4 punti sopra la nostra candela (scenario1)

Se ho una candela Bullisch e la candela (prezzo aperto [1]- prezzo chiuso [1]) ha 5 punti -questa è una candela molto grande- allora avvia il programma

CheckForOpenS2(); avvia la funzione di acquisto se il nostro prezzo ottiene + 14 punti sopra la nostra candela (scenario2)



Voglio questa strega ogni candela, voglio iniziare programma BUY se ho grande candela, se ho troppo piccola candela sarò in attesa per il prossimo

Così... questo è in corretto ma ho idea :)

Per favore non scriva nessuna cosa necessaria.

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


 
 

Pensa che qualche persona non di madrelingua inglese possa capire la sua storia? Capisco le pecore e il pastore Mr John, ma la storia non ha senso per me. (Forse sono io... quindi mi dispiace)

Potresti spiegare il tuo problema in un po' di 'inglese internazionale' usando le definizioni generali di trading/mql4?

Cosa significa questa frase?

<br / translate="no">Per favore, non scrivete l'argomento, questo sarà un manualeper il resto delle persone
 
kronin:

Pensa che qualche persona non di madrelingua inglese possa capire la sua storia? Capisco le pecore e il pastore Mr John, ma la storia non ha senso per me. (Forse sono io... quindi mi dispiace)

Potresti spiegare il tuo problema in un po' di 'inglese internazionale' usando le definizioni generali di trading/mql4?

Cosa significa questa frase?

Kronin, probabilmente era solo un errore del traduttore online, è successo tutte le volte nel forum.
 

SOLO CANDELA - Come aprire la posizione? - dovrebbe essere il prossimo argomento. Moderatore cosa ne pensi? Posso?

Implementiamo lo scenario selezionato
Come inviare l'ordine?

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()"
  
//-------------------------------- 

Abbiamo un ordine
Ma cosa dovrei fare per aprire due posizioni in una funzione?
Abbiamo ilnostro scenario CheckForOpenS1() in questo scenario compriamo due volte se il nostro prezzo sarà nel posto giusto, naturalmente

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


 
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:

SOLO CANDELA - Come aprire la posizione? - dovrebbe essere il prossimo argomento. Moderatore cosa ne pensi? Posso?

Implementiamo lo scenario selezionato
Come inviare l'ordine?

Abbiamo un ordine
Ma cosa dovrei fare per aprire due posizioni in una funzione?
Abbiamo ilnostro scenario CheckForOpenS1() in questo scenario compriamo due volte se il nostro prezzo sarà nel posto giusto, naturalmente

Non capisco davvero quello che stai chiedendo . . . non ti stai rendendo molto chiaro . . . o forse sono solo io.

Questo codice vi causerà dei problemi però . . .

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

Leggi questo thread:Può il prezzo != prezzo ?

 

potrebbe altrimenti
come scrivere un semplice EA con diversi scenari di eventi

era una piccola candela - aprire Funzioni 1
era la candela media - aprire Funzioni 2
era una grande candela - aprire Funzioni 3


switch () è appropriato a questo punto, penso

La funzione 1 apre 1 posizione e si assicura che si chiuda
La 2 apre 2 posizioni custodendole e chiude
La tre apre 2 posizioni ma ad un prezzo diverso ....

ogni volta che abbiamo una candela, ogni volta c'è un'altra funzione che fa cose diverse

So che non si può scrivere per me, ma qualsiasi consiglio....

 

Come promesso, l'ho guardato di nuovo, ma ancora non ha senso per me, mi dispiace.

Questo non funzionerà mai:

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 ....
      }

Leggete qui su come usare l'interruttore: https://docs.mql4.com/basis/operators/switch

Questo non è affatto chiaro:

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;        
     }               

} 

L'espressione uguale forse non è voluta, ma cosa dovrebbe essere?

Se dovrebbe essere < allora invierà immediatamente un ordine SELL quando arriva una nuova barra (poiché il prezzo di apertura della nuova barra è forse < del prezzo di chiusura della barra precedente+8*Point)
Se si legge > allora aspetterà che il prezzo si muova un po' verso l'alto e poi invierà un ordine SELL. Non capisco bene la tua strategia, quindi forse è voluta così.

Potrei anche immaginare che tu intenda:

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

Stai facendo trading con un broker a 4 cifre dove 1 Punto è uguale a 1 Pip? Altrimenti il prezzo deve muoversi solo di 0.8 pip, che probabilmente non è quello che vuoi (e lo spread potrebbe confondere ulteriormente).

Penso che dovresti ripassare il tuo codice e correggerlo dove puoi. Sentiti libero di fare altre domande se ne hai di specifiche. Per favore, sii consapevole che la tua strategia può funzionare in modo completamente diverso, solo perché un codificatore ha frainteso ciò che hai voluto dire.

 

Lamia strategia è
se la candela appare BULL da 4 a 5 punti , dopo la candela (sempre, in qualsiasi condizione) prepararsi a inviare due ordini di acquisto (se il prezzo raggiunge il nostro livello richiesto per comprare uno, e come raggiungere buy2)

se la candela appare BULL da 6 a 7 punti, dopo la candela (mai, in qualsiasi condizione) preparatevi a inviare tre ordini diacquisto (se il prezzo raggiunge il nostro livello richiesto per comprare uno, e come raggiungere buy2e 3)

Ho un piccolo errore da qualche parte nel Bid o Ask perché EA non funziona ... (non riesco a trovare questo errore , ma normalmente EA funziona molto bene per quello che ho scritto .. acquista e chiudere), ma mostra il mio piano tecnico.

FACCIO CORREGGERE CHE FUNZIONA A ORA

Come si guarda al fondo diventa molto affollato e a volte sostituisce gli scenari EA Bull4 e scenario si apre Bull6 Bull4 e come ho capito improvvisamente cambiare idea e finire il Bull6 Bull6
Può essere semplificato ?

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#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:

Lamia strategia è quella di
se la candela appare BYK da 4 a 5, dopo la candela (mai, in qualsiasi condizione) prepararsi a inviare due ordini di acquisto di dati (se il prezzo raggiunge il nostro livello richiesto di acquistare uno, e come raggiungere zkup 2)

se la candela appare BYK da 6 a 7, dopo la candela (sempre, in qualsiasi condizione) preparatevi a inviare tre ordini di acquisto (se il prezzo raggiunge il nostro livello richiesto per comprare uno, e come raggiungere zkup 2 e 3)

Ho un piccolo errore da qualche parte nel Bid o Ask perché EA non funziona ... (non riesco a trovare questo errore , ma normalmente EA funziona molto bene per quello che ho scritto .. acquista e chiudere), ma mostra il mio piano tecnico.

Come si guarda il fondo diventa molto affollato e a volte sostituisce gli scenari EA Bull4 e scenario si apre Bull6 Bull4 e come ho capito improvvisamente cambiare idea e finire il Bull6 Bull6
Può essere semplificato ?

BYK?

Questo è sbagliato . . .

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

. . . le posizioni partono da 0, quindi è necessario contare in basso da OrdersTotal() - 1


Si fa così . . . .

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

. . . si ottiene l'OrderOpenPrice(), ma per quale ordine? Avrete più ordini aperti . . .



Usate la variabileres per contenere il valore di ritorno delle vostre chiamate OrderSend() . . . e cosa ci fate ? niente, perché ?

Cosa sono i valori di ritorno delle funzioni? Come si usano?

 

Ottima risposta RaptorUK


1. problema di res
Sto studiando EA risoluzione media mobile c'è solo 3 volte, tutti in funzione del tempo, dopo per esso non esiste.

Laprima volta viene utilizzato per informazioni "ciao saremo utilizzare res"

una seconda volta per inviare l'ordine. OrderSend restituisce il numero di ordini, che è il nostro res = 343321, abowe la funzione 'void CheckForOpen () " res non esiste.

ma...
Penso che se il "void CheckForOpen ()" Osservare la verità di questo comando OrderSelect in qualche modo portare quel numero tranne "void CheckForOpen ()" Proverò ..

2. Problema OrderOpenPrice()

hai assolutamente ragione, ma questa sintassi funziona sorprendentemente bene :) proverò a fare qualcosa in quel posto

3. OrdersTotal() - 1hai assolutamente ragione,

4. BYK (POLONIA)= BULL il traduttore ha un problema

 

Per coloro che ancora non capiscono il mio EA scrivere una storia: D hehehe


Tutti i passi che facciamo, sono le funzioni. Ora sto scrivendo al computer è una funzione ,guardo un programma televisivoè la seconda funzione, ecc.
Ora passiamo alla cucina ...
Abbiamo un libro di cucina, aprire l' indice e leggere in sequenza i punti
Prima Come fare le braciole di maiale - mettere la carne in una ciotola, aggiungere sale, peperoncino, sbucciare le patate
A sinistra l'evento - le caratteristiche giuste , e alcuni di tema - no a meno che facile!


Dopo aver letto come fare le braciole di maialecominciano a farlo, a fare le cose. Bistecca ottiene 25 minuti, e come ho iniziato ad avere una fine.
E'stato cinque minuti M5 ( cinque minuti dopo)si inizia a leggere il punto successivo un libro di cucina.
Secondo Come fare un'insalata - Pelare le carote, sbucciare le cipolle, e altre stronzate


E qui avviene la magia, perché ha creato il doppio, l'acero (seconda persona). Lo facciamo su costolette di maiale e insalata allo stesso tempo.Iniziamo adavere in cucina due persone in una.

Più punti si leggono, più persone in cucina appaiono. Le persone in cucina scompariranno dopo aver completato i loro compiti e lavare i piatti.


L'evento è candele - dispone di varie opzioni per l' acquisto e la vendita o la chiusura.