[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 43

 
r772ra:
In alternativa, è possibile impostare qualsiasi momento dopo l'arrivo del segnale
La mia variante implica un limite (dopo l'arrivo del segnale) per eseguire alcune azioni (in questo caso per aprire un ordine) di 1 minuto. E poi: se sei in ritardo, sei in ritardo. Supponiamo che la connessione con il server si sia interrotta subito dopo la ricezione del segnale e che riprenda dopo un'ora. Perché aprire un ordine un'ora dopo? ;)
 
TarasBY:

In una variabile globale, scrivete il valore del tempo al momento del segnale:

e poi fai il conto alla rovescia del tuo minuto (puoi farlo):

Questa è una delle soluzioni per tracciare il tempo dopo il verificarsi di un evento.


Purtroppo non funziona, dopo un minuto la linea di supporto e la linea di resistenza dovrebbero essere disegnate come un'azione, ma per qualche motivo non sono sul grafico. Per favore, date un'occhiata al codice, dov'è l'errore?


bool  Fact_1 = false;                    // Глобальная перемен для бай.    
bool  Fact_2 = false;                    // Глобальная перемен для бай
bool  Fact_3 = false;                    // Глобальная перемен для бай

double support;
double resist;

 int timeFrame = 5;
 int numBars = 15;
 datetime gdt_TimeSignal;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

  ObjectsDeleteAll();  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----


   //---------------------------------------------------------------------------
if (Fact_3==true)                            //Если событие уже..
          
                                              //..было, то выходим
     return(0);
 
//----

  //---- БЛОК ОТКРЫТИЯ  BUY--------------------------------------------------------------
 
 if (iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,2)<iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0)&&
iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,1)>=iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0))//если МА50 пересекает МА200 снизу вверх по M5
Fact_1 = true;       // Произошло событие 1  
//-
if (Fact_1 == true &&  Low[0]<= iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,0))//если цена опустилась до МА50
 Fact_2 = true; // Произошло событие 2  


//if (Signal) gdt_TimeSignal = TimeCurrent();
if (Fact_2) gdt_TimeSignal = TimeCurrent();


  if (gdt_TimeSignal != 0) if (iBarShift (NULL, 1, gdt_TimeSignal) == 1)
    {
        //---- Открываете ордер
       // OrderSend ();
  //---------------------------------------------------------------------------------    
{
// Определяем линии поддержки\сопротивления
  support = 10000;
  resist = 0;
 
  for(int u = 1;u<=numBars;u++)
  {
   if(support>iLow(Symbol(),timeFrame,u))
     support = iLow(Symbol(),timeFrame,u);
   if(resist<iHigh(Symbol(),timeFrame,u))
     resist = iHigh(Symbol(),timeFrame,u);
  }   
   ObjectSet("lineSupport",OBJPROP_PRICE1,support);
  ObjectSet("lineResist",OBJPROP_PRICE1,resist);
 
 }


 //----
  {
    ObjectCreate("lineSupport",OBJ_HLINE,0,0,0);
    ObjectSet("lineSupport",OBJPROP_COLOR,Blue);
    
    ObjectCreate("lineResist",OBJ_HLINE,0,0,0);
    ObjectSet("lineResist",OBJPROP_COLOR,Red);
    }
//-------------------------------------------------------------
 
        gdt_TimeSignal = 0;
    }



//что сюда добавить что бы линии появившись, оставались на месте?




//----
   return(0);
  }

 
TarasBY:

Qui sono scritte delle sciocchezze:

Leggi su iCustom().


Grazie, l'ho letto, forse dovrei cercare un esempio, non capisco un cazzo.
 
Andrey-F:

Per favore aiutatemi, ditemi come implementare il codice EA in due o tre righe:

Quando arriva un segnale (per esempio l'incrocio di due MA)

1.Expert Advisor determina il tempo del segnale (in ore, minuti), lo memorizza;

2. conta alla rovescia di un minuto.

Poi l'Expert Advisor è pronto per eseguire un'azione (ad esempio aprire un ordine).

Tutti, GRAZIE, tutto funziona come dovrebbe, solo non ho inserito il segnale nel modo giusto.
 

Non riesco a capire la pubblicazione dell'indicatore in Codabase. Come uno stato è pronto per la pubblicazione cioè logicamente devono aspettare fino a quando il moderatore metterà in accesso generale questo tacchino, ma è stato un paio di giorni e nessun risultato. Quale può essere il problema?

ps. questa è la mia prima pubblicazione del codice qui

 
madzx:

Sì, credo di sì! Ho davvero preso la mano, posso facilmente fare a meno di scrivere su disco!
Sto solo legando le redini di un terminale standard a un altro
Sto solo legando le redini di un terminale standard per un altro).

Perdonatemi, ma dovremo farlo comunque.
perché, come disse Sir Freddie Mercury.
Lo spettacolo deve continuare!

Quindi cerchiamo di capire bene le specifiche.
Come ho capito:

1. Su un conto ho un casino di finestre aperte (10 pezzi) con qualsiasi serie di grafici di coppie di valute

2. Su ogni grafico si trova un cavallo di battaglia - un Expert Advisor, che fa qualcosa.

3. Il conto deve soddisfare le seguenti condizioni:

3.1 Il numero totale di ordini di mercato aperti nel conto non deve superare 5.
Gli ordini di tipo cavallo (in attesa) non dovrebbero essere contati come tali (penso di sì, ma non l'hai specificato)
3.2 Sulla base di una serie di grafici sul conto, si forma una certa lista di simboli,

Il tipo di strumenti finanziari scambiati e ciascuno degli strumenti non può avere più di un ordine aperto in qualsiasi momento.

in qualsiasi momento non può avere più di un ordine aperto.

---------------------------------------------------------

Qualcosa del genere! Vedere se tutto è corretto!
Allora per favore diteci in quale lingua dovrebbe essere fatto (come mq4 o mq5)
e l'elenco delle istanze per le quali si commercia - è fisso o diverso ogni volta

Penso che dovrebbe essere un breve incollamento nel testo di ogni EA

(che potete poi archiviare come procedura se lo desiderate) permetterà

decidere sui permessi attualmente esistenti per qualsiasi azione ...

Vorrei congedarmi ora perché sono le 5 del mattino :))

madzx




Grazie per la vostra partecipazione. Ma non credo che ce ne sia bisogno.

Il problema è stato risolto come segue, come suggerito da r772ra:

O forse come questo:

if(NumberOfPositions("EURUSD")==0 && NumberOfPositions()<5)
Ed ecco una funzione
 
Roman.:

Non vagare in mezzo al nulla. Puoi fare transazioni di exp per simboli magici unici (assegna il tuo ordine magico al TUO exp sui simboli selezionati). Poi, usando l'operatore condizionale if - else, si collega il filtro per simboli e simboli magici, usando questa funzione di Kim I.V. con diversi valori di ingresso:

Funzione NumberOfOrders().

. Questo è tutto.




Grazie, ho trovato una soluzione più semplice.
 
Kobalerro:

Grazie, è stata trovata una soluzione più semplice.

OK! Grazie per aver pubblicato la soluzione.
 
Kobalerro:

Grazie per la vostra partecipazione. Ma non credo che ci sia altro.

Il problema è stato risolto come segue, come suggerito da r772ra:

O forse come questo:

Ed ecco la funzione

OK! Seguite la tendenza e buona caccia !!!

madzx
 
Kobalerro:

Grazie per la vostra partecipazione. Ma non credo che ci sia altro.

Il problema è stato risolto come segue, come suggerito da r772ra:

O forse come questo:

E qui la funzione

Se siete soddisfatti di questa soluzione, potete semplificare ulteriormente il codice:

if(NumberOfPositions("EURUSD")==0 && OrdersTotal()<5)

Ma probabilmente è meglio scriverlo così:

if(NumberOfPositions(Symbol())==0 && OrdersTotal()<5)

Se non è "infantile", allora si dovrebbe usare Magik (prima o poi, si vorrà aprire un ordine manuale o mettere un altro EA vicino ad esso, anche):

if(NumberOfPositions(Symbol(), Magic)==0 && NumberOfPositions("", Magic)<5)

In questo caso, tutti gli EA dovrebbero avere lo stesso Magik e non dimenticare di usare i filtri sul Magik e il simbolo del grafico durante altre operazioni con la lista degli ordini:

    for (int li_pos = OrderTotal() - 1; li_pos >= 0; li_pos--)
    {
        if (!OrderSelect (li_pos, SELECT_BY_POS, MODE_TRADES)) continue;
        if (OrderMagicNumber() != Magic) continue;
        if (Symbol() != OrderSymbol()) continue;
        //---- дальнейшие опреации (модификация, удаление и т.д.)
    }

Spero che abbiate dichiarato il magik in variabili esterne, o come una costante:

#define Magic  555