[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 550

 

Buongiorno, cari amici. Si prega di consigliare un principiante in che direzione scavare. Il problema non è risolto. La linea di fondo è questa:

Sulla H4, la barra rompe la barra dal basso verso l'alto, dove effettivamente chiude e questa è una condizione di acquisto. Noi compriamo. Ora dovremmo prendere alcuni punti, o circa dieci, per chiudere (tutto era semplice e chiaro per me fino a questo momento) e andare a fumare fino alla prossima barra (questo non funziona). Non appena un ordine viene chiuso, se ne apre uno nuovo (la condizione è ancora soddisfatta), come evitare il trading fino alla prossima barra?

La soluzione sembra essere semplice, la sento vicina a me, ma mi manca la conoscenza (o il cervello)). Devo ammettere che non ho letto 549 pagine e se qualcuno ha già chiesto... Non imprecare troppo))))

Potete per favore aiutarmi

 

FAQ

 
Grazie
 
ex_kalibur:

Ciao, aiutami per favore, non riesco a vedere la cosa più ovvia((((

doppio LotsAllPos(int op) {

int i;

doppio ll=0;

per (i=0; i<OrdersTotal(); i++) {

se (OrderType()!=op) continua;

se (OrderSymbol()!=sy) continuare;

if (OrderMagicNumber()==Magic || OrderMagicNumber()==Magic+1) ll+=OrderLots();

}

ritorno(ll);

qui ho bisogno di restituire il volume sommato per il mio simbolo, e per tipo

for (i=0; i<OrdersTotal(); i++) {
 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
   if (OrderType()!=op) continue;

....
   }
 
Sepulca:


Grazie per il vostro aiuto.
 

Potete dirmi quale potrebbe essere il problema. La variabile newlots è 0,2.

Quando eseguo un EA, Print 1 stampa prima un messaggio che dice 1 0,2, poi scatta la condizione per aprire un ordine, l'ordine viene aperto ma la funzione Print 2 che lo precede non mostra il messaggio, non riesco a capire perché viene saltato, visto che scatta la condizione e se la funzione ordine è aperta, anche la funzione Print dovrebbe essere chiusa. Oltre a questo, il registro non mostra un messaggio che l'ordine è stato inviato, il messaggio standard che veniva mostrato all'apertura di ogni ordine.

Ma questa non è ancora la cosa peggiore, il problema principale è che la variabile newlots è uguale a 0,2 e l'ordine si apre con un volume di 0,1, come è possibile questo, dato che è chiaramente specificato nella funzione invece del volume come variabile newlots.

  Print("1 ",newlots);
  
  if(условие)
    {
    if(buytime != Time[0] && buys == 0 && sells == 0)
      {
      Print("2 ",newlots);
        if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)
          {
          buytime = Time[0];
          }
      }
    }

// пробовал даже вот так, в этом случае выводятся только первые два сообщение, причем значение выводится что newlots все таки равен 0.2, но третье сообщение
не выводится, и ордер открывается с лотом 0.1.


Print("1 ",newlots); - равен 0.2


Print("2 ",newlots); - равен 0.2

Print("3 ",newlots); - не выводится сообщение, и далее ордер открывается с лотом 0.1



Print("1 ",newlots);
  if(((Ask > (MA1+3*Point*a)) && (Open[0] < (MA1+3*Point*a)) && (Ask < (MA1+5*Point*a))) || ((Low[0] < (MA1+3*Point*a)) && (Bid > (MA1+3*Point*a)) && (Bid < (MA1+5*Point*a))))
    {
    Print("2 ",newlots);
    if(buytime != Time[0] && buys == 0 && sells == 0)
      {
      Print("3 ",newlots);
        if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)
          {
          buytime = Time[0];
          }
      }
    }

 
sss2019:

Potete dirmi quale potrebbe essere il problema. La variabile newlots è 0,2.

Quando eseguo un EA, Print 1 stampa prima un messaggio che dice 1 0,2, poi scatta la condizione per aprire un ordine, l'ordine viene aperto ma la funzione Print 2 che lo precede non mostra il messaggio, non riesco a capire perché viene saltato, visto che scatta la condizione e se la funzione ordine è aperta, anche la funzione Print dovrebbe essere chiusa. Oltre a questo, il registro non mostra un messaggio che l'ordine è stato inviato, il messaggio standard che veniva mostrato ogni volta che un ordine veniva aperto.

Ma questa non è ancora la cosa peggiore, il problema principale è che la variabile newlots è uguale a 0,2 e l'ordine si apre con un volume di 0,1; può succedere perché è chiaramente indicato nella funzione invece del volume che la variabile newlots.


Dove si trova l'apertura di un ordine nel codice? Dove si trova OrderSend?

In quella sezione, che hai mostrato, la condizione non viene eseguita, e di conseguenza la tua Stampa 2, e di conseguenza, OrderSend anche in questa condizione, non apre un ordine con lotto 0,2.

Un altro OrderSend viene eseguito.

 
zxc:


In quale altro punto del codice si apre l'ordine? Dove altro si trova OrderSend?

Nella sezione che hai mostrato, la condizione non è soddisfatta e quindi la tua Stampa 2, e quindi anche l'OrderSend in questa condizione non viene aperto - nessun ordine con lotto 0.2 viene aperto.

Viene eseguito un altro OrderSend.


Ecco qui.

if(OrderSend(Symbol(),OP_BUY,newlots,Ask,Slippage,0,0,0,MagicNumber,0,BuyColor) > 0)

Ho solo un OrderSend nel mio EA, la condizione è soddisfatta e l'ordine è aperto con un volume non chiaro.

 

Potete dirmi, quando un EA arriva con un set, in quale cartella devo metterlo? Grazie.

 

Buon pomeriggio!

Potete aiutarmi, leggendo dal file, c'è una linea (in generale ce ne saranno di più, ma non importa), va in loop, come se non vedesse la fine del file...

int qq=0;
 while (FileIsEnding(h3)==false)
 {
  int uu=0;
  while (FileIsLineEnding(h3)==false)
  { 
    Histxmas[qq][uu]=StrToDouble(FileReadString(h3));
    Print("Histxmas[",qq,"][",uu,"]=",Histxmas[qq][uu]);
    uu+;
  }
  FileSeek(h3,0,SEEK_END);   
  qq++;
  Print("Бро зациклился, покажи мне кюкю",qq);
 }