[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 527

 

Ho impostato le bandiere per la direzione del commercio. Condizione: se cade in una zona tra le linee, allora compra e non vendere, se in un'altra zona, allora non comprare e vendi. Regolo questo processo con linee orizzontali.

extern bool    Покупать  = false;
extern bool    Продавать = false; 


   if ( pcb < Ask && Ask < pl )       // Если Аск цены попал в зону между Уровнем и КлозеБай,
    {                             
     Покупать = false;                // останавливаем покупку
     Продавать = true;
    }
   if ( pl < Bid && Bid < pcs )       // Если Бид цены попал в зону между Уровнем и КлозеСелл,
    {                            
     Продавать = false;               // останавливаем продажи (контрольный флаг)
     Покупать = true;
    }
   if ( pl < Bid && Bid < pb )        // Если Бид цены попал в зону между Уровнем и Покупкой,
    {                                 // начинаем покупать
     Покупать = true;
    }
   if ( pl > Ask && Ask > ps )        // Если Аск цены попал в зону между Уровнем и Продажей,
    {                                 // начинаем продавать
     Продавать = true;             
    }

Prima di questo chiedo i prezzi delle linee esposte. E dopo di che un blocco di ordini di piazzamento o di chiusura - a seconda della bandiera.

Il codice è banalmente semplice. Ma... - Domanda...

Quando questo disegno inizia a funzionare, i valori di acquisto e di vendita risultano essere imprevedibili (caotici). Perché questo accade? Perché ci sono condizioni chiare per la funzione "if" e gli operatori "end" e "more/less".

Cioè, il programma si comporta secondo le proprie ragioni: o compra o vende, o non fa nulla indipendentemente da ciò che è scritto nei valori delle variabili.


Come e cosa devo scrivere per far funzionare le condizioni e, soprattutto, per farle funzionare? Cosa sto sbagliando e cosa non sto prendendo in considerazione? (Penso di aver menzionato tutto ciò di cui ho bisogno nelle condizioni della funzione).


C'è anche un altro problema in questo argomento: quando le variabili cambiano a seconda delle condizioni, i loro valori nelle impostazioni di Expert Advisor (quando vi si accede tramite F7) saranno gli stessi impostati dall'utente. Ecco perché è impossibile vedere lo stato attuale di queste variabili. Come possiamo fare in modo che possiamo vedere quali sono i loro valori al momento?

 
Dimka-novitsek:
Buongiorno! La condizione non funziona

Ho già guardato la stringa ife, l'ho guardata, l'ho guardata, l'ho guardata, l'ho guardata.... Ci deve essere una ragione, posso essere confuso e non vedere qualcosa di semplice ed elementare, succede.

Ho guardato la mattina. Sono uscito. Sono tornato e ho cercato di nuovo. È più facile ora, se, più, meno... Non lo capisco affatto.



E questo è sotto il mio inizio.


p.s. Fa tutto parte di questa condizione strategica

EMA - periodo 10 incrocia dall'alto in basso EMA - periodo 200, CCI incrocia 0,100 o 100 dall'alto in basso; la candela chiude o è sotto LMA - periodo 100


Mettere una parentesi per mostrare come e cosa si fa

if( CCI_50S>100&&CCI_50<100 ||CCI_50S>0&&CCI_50<0|| CCI_50S>-100&&CCI_50<-100 )CCInapravlenie=true;
 
Chiripaha:

Ho impostato delle bandiere per la direzione dello scambio. Condizione: se colpisce una zona tra le linee, allora compra e non vendere, se colpisce un'altra zona, allora non comprare e vendi. Regolo questo processo con linee orizzontali.

Prima di questo chiedo i prezzi delle linee esposte. E dopo di che un blocco di ordini di piazzamento o di chiusura - a seconda della bandiera.

Il codice è banalmente semplice. Ma... - Domanda...

Quando questo disegno inizia a funzionare, i valori di acquisto e di vendita risultano essere imprevedibili (caotici). Perché questo accade? Perché ci sono condizioni chiare per la funzione "if" e gli operatori "end" e "more/less".

Cioè, il programma si comporta secondo le proprie ragioni: o compra o vende, o non fa nulla indipendentemente da ciò che è scritto nei valori delle variabili.

Come e cosa devo scrivere per far funzionare le condizioni e, soprattutto, per farle funzionare? Cosa sto sbagliando e cosa non sto prendendo in considerazione? (Penso di aver menzionato tutto ciò di cui ho bisogno nelle condizioni della funzione).

C'è anche un altro problema in questo argomento: quando le variabili cambiano a seconda delle condizioni, i loro valori nelle impostazioni di Expert Advisor (quando vi si accede tramite F7) saranno gli stessi impostati dall'utente. Ecco perché è impossibile vedere lo stato attuale di queste variabili. Come faccio a fare in modo di vedere quali sono i loro valori al momento?

Cominciate a raggruppare le condizioni:

    extern bool    Покупать  = false;
    extern bool    Продавать = false; 

    if (pl > Ask) {if (Ask > psb || Ask > ps) Продавать = true;}
    else {if (pl < Bid) if (Bid < pcs || Bid < pb) Покупать = true;}
Forse così sarà più facile da capire! (Non sono entrato nel significato del codice stesso).
 

A prima vista, probabilmente si tratta delle variabili, non delle condizioni. Comincerei con l'emettere le variabili con gli avvisi, dato che il codice stesso sembra NORMALE !!!

Alert(" pcb " , pcb ); Alert(" pl " , pl ); Alert(" pb " , pb );

 

come posso cambiare il formato dei dati quando scrivo in un file?

scrive con caratteri illeggibili :(

 
TarasBY:

Sostituire:

Per:

E perché l'ordine SELL si apre (nella tua variante) (in base a quello che ho detto prima) trova la risposta DA SOLO!!!


Si scopre che non c'è bisogno di chiamare i parametri dall'indicatore. Tutto può essere registrato direttamente nell'Expert Advisor.

Analizzerò il mio errore.

Ho riscritto il mio indicatore con le funzioni iLowest e iHighest, questo codice è corretto o può essere troncato?

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Red

extern int Quant_Bars = 5; //количество баров

//--- buffers
double Line_1[];     //объявление массивов под..
double Line_2[];     //..буферы индикаторов

int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);    //стиль линии
   SetIndexBuffer(0,Line_1);                    //назнач. массива буферу
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);    //стиль линии
   SetIndexBuffer(1,Line_2);                    //назнач. массива буферу
//----
   return(0);                                      
  }

int start()
  {                        
   double Minimum;
   double Maximum;
   int k;
   
   Maximum= High[iHighest(NULL,0,MODE_HIGH,Quant_Bars,1)];
   Minimum= Low[iLowest(NULL,0,MODE_LOW,Quant_Bars,1)];
   
   for(k=1; k<=Quant_Bars; k++)
      {
       Line_1[k]= Minimum;
       Line_2[k]= Maximum;
      }
    return(0);
    }
               
 
Ora... C'è mio fratello, il maggiore... Le staffe si stanno probabilmente intasando. Ora
 
Dimka-novitsek:

A prima vista, probabilmente si tratta delle variabili, non delle condizioni. Comincerei con l'emettere le variabili con gli avvisi, dato che il codice stesso sembra NORMALE !!!

Alert(" pcb " , pcb ); Alert(" pl " , pl ); Alert(" pb " , pb );


L'ho già fatto - tutte le variabili sono corrette: sia i prezzi che i parametri sono impostati.
 
TarasBY:

Cominciate a raggruppare le condizioni:

Forse così sarà più facile da capire! (Non sono entrato nel significato del codice stesso).


Se lo imposti in quel modo, sarà una questione diversa - se sotto la linea, allora... E ho bisogno di quando cade tra linee specifiche - nell'area di quelle linee.

 
Pacman:


Si scopre che non c'è bisogno di chiamare i parametri dall'indicatore. Tutto può essere prescritto nell'Expert Advisor.

Dovrò capire qual è il mio errore.

Ho riscritto il mio indicatore con le funzioni iLowest e iHighest, questo codice è corretto o può essere accorciato?

Non appena si porta l'indicatore nell'EA, è un "erpice per il cavallo" quando si lavora nel tester. Nel tuo caso, l'indicatore NON è necessario!!!