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

 
Sepulca:

Diverse coppie di valute funzioneranno, anche se si tratta dello stesso EA. C'è sicuramente solo uno su un grafico. Ma su diversi grafici della stessa coppia di valute, non so nemmeno.....
Mi dispiace, ma non riesco a capire, è direttamente nell'ordine, se non è difficile da spiegare in modo più dettagliato ...
datime exp=iTime(Symbol(),PERIOD_D1,0)+23*60*60+59*60;
 

Devo cambiare lo stop loss in pip allo stop loss sulla candela precedente.

Ecco il codice, come metterlo qui.

Grazie mille a chi mi consiglia.

double x = ... // Задаем на сколько пипсов выше
double sl = NormalizeDouble(High[1] + x * Point, Digits); // Задаем значение стоплосс на x пипсов выше предпоследней свечи
File:
 

Pro ragazzi, per favore consigliatemi: ho comprato un EA ($300) attraverso un sito web e l'ho installato secondo le istruzioni del venditore, ma quando l'ho testato sulla cronologia del conto mostra o zero profitti e perdite o indica che qualcosa non va (anche se ancora una volta, l'ho installato rigorosamente secondo le istruzioni). A proposito, dopo l'installazione l'Expert Advisor era grigio tra quelli gratuiti, come se fosse inattivo. Tutti gli altri erano colorati: facce gialle in un cappello blu. Ho spostato l'Expert Advisor su un conto demo. Tutto come dovrebbe essere: faccia sorridente, computer acceso. Mi sono lamentato con il venditore e mi ha scritto: "1) Il colore grigio è il codice chiuso, non il codice sorgente .2) il mio Expert Advisor non fa trading spesso, quindi aspetta solo il segnale". Potete dirmi se devo aspettare? È possibile o è una stupida truffa?

 
vpogarcev:

Mi sono lamentata con il venditore e lui mi scrive: "1) il colore grigio è il codice chiuso, non il codice sorgente .2) L'Expert Advisor non fa trading spesso, quindi aspetta solo il segnale". Potete dirmi se devo aspettare? È possibile o è una stupida truffa?


1) Sì, l'EA è grigio perché non c'è codice sorgente;

Chissà se vale la pena aspettare? I sensitivi sono in vacanza.

 
vpogarcev:

Pro ragazzi, per favore consigliatemi: ho comprato un EA ($300) attraverso un sito web e l'ho installato secondo le istruzioni del venditore, ma quando l'ho testato sulla cronologia del conto mostra o zero profitti e perdite o indica che qualcosa non va (anche se ancora una volta, l'ho installato rigorosamente secondo le istruzioni). A proposito, dopo l'installazione l'Expert Advisor era grigio tra le sue controparti gratuite, come se fosse inattivo. Tutti gli altri erano colorati: facce gialle in un cappello blu. Ho spostato l'Expert Advisor su un conto demo. Tutto come dovrebbe essere: faccia sorridente, computer acceso. Mi sono lamentato con il venditore e mi ha scritto: "1) Il colore grigio è il codice chiuso, non il codice sorgente .2) il mio Expert Advisor non fa trading spesso, quindi aspetta solo il segnale". Potete dirmi se devo aspettare? È possibile o è una stupida truffa?


Nel migliore dei casi, potrebbe esservi stato venduto un EA che presto smetterà di fare soldi.
 
FAQ:


Giusto, in questo caso quando si cancella per esempio l'oggetto 18, 19 diventa il suo posto, 19=>18 cioè si ottiene automaticamente un'iterazione inversa. Usalo anche per gli ordini.

Inoltre, poiché l'elenco degli oggetti e gli ordini sono formalmente degli array a partire da = 0, l'indice massimo sarà uno in meno della dimensione dell'array:

Il tuo ultimo pensiero mi ha portato alle seguenti considerazioni... Supponiamo di avere una funzione deinit() della seguente forma:

int deinit()                           // Спец. функция deinit()
  {
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   for(int k=0; k<Quant_Objects; k++)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Если найден объект, …
        {                              // ... начинающийся с Paint_,
         ObjectDelete(Obj_Name);       // … то его и удаляем
        }                              //конец if
     }                                 //конец for
   return;                             // Выход из deinit()
  }                                    //конец deinit
//-------------------------------------------------------------- 10 --

Supponiamo che ci siano solo 3 oggetti nel terminale client, di cui il 1° e il 2° corrispondono alle condizioni di cancellazione definite nella funzione deinit(). Corrispondentemente, saranno indicizzati 0 e 1. Allora alla prima iterazione la variabile k assumerà il valore 0 e la funzione ObjectDelete(0) rimuoverà l'oggetto corrispondente. Inoltre, poiché la lista di oggetti è formalmente un array, dopo aver cancellato uno degli oggetti, gli oggetti rimanenti saranno reindicizzati (qualcosa come formare una nuova barra e reindicizzare tutte le barre che sono attualmente presenti nel terminale client): quindi l'oggetto che era indicizzato numero 1 (l'oggetto che deve anche essere cancellato per convenzione) avrà l'indice 0, e l'oggetto che aveva l'indice 2 avrà l'indice 1. Dopo aver cancellato l'oggetto numero 0 alla 1a iterazione, il controllo sarà dato alla stringa

for(int k=0; k<Quant_Objects; k++)

per eseguire l'espressione k++. La variabile k avrà il valore 1 e poiché il valore della variabile Quant_Objects è 3, le condizioni dell'operatore for (k<Quant_Objects) sono vere e la seconda iterazione sarà eseguita. Ma a questa iterazione non ci sarà nessuna cancellazione di oggetti perché l'oggetto con indice 1 (precedentemente 2) non soddisfa le condizioni di cancellazione. Ma si scopre che poiché la reindicizzazione degli oggetti è avvenuta dopo la rimozione del primo oggetto, il 2° oggetto (che anche per condizione avrebbe dovuto essere rimosso) ha "saltato" l'operazione di rimozione, perché nel momento in cui la variabile k era uguale a 1, l'indice di quell'oggetto è stato reindicizzato ed è diventato 0. Questo è ciò che si intendeva nella frase "Nota separatamente che non puoi cancellare gli oggetti nel primo ciclo for, perché in questo caso dopo ogni cancellazione il numero totale di oggetti e la loro numerazione cambierà, quindi alcuni nomi di oggetti saranno saltati".

Ho capito bene o c'è qualche errore nel mio pensiero?

Nota: la funzione deinit() si riferisce alla frase "notare separatamente che non dobbiamo cancellare gli oggetti nel primo ciclo for, perché in questo caso dopo ogni cancellazione il numero totale di oggetti e la loro numerazione cambierà, così che alcuni nomi di oggetti saranno saltati":

//--------------------------------------------------------------- 9 --
int deinit()                           // Спец. функция deinit()
  {
   string Name_Del[1];                 // Объявление массива
   int Quant_Del=0;                    // Количество удаляемых объекто
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   ArrayResize(Name_Del,Quant_Objects);// Необходимый размер массива
   for(int k=0; k<Quant_Objects; k++)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Найден объект, ..
        {                              // .. начинающийся с Paint_
         Quant_Del=Quant_Del+1;        // Колич имён к удалению
         Name_Del[Quant_Del-1]=Obj_Name;//Запоминаем имя удаляемого
        }
     }
   for(int i=0; i<=Quant_Del; i++)     // Удаляем объекты с именами,.. 
      ObjectDelete(Name_Del[i]);       // .. имеющимися в массиве
   return;                             // Выход из deinit()
  }
//-------------------------------------------------------------- 10 --

P.S. Grazie in anticipo per la vostra risposta.

 
7777877:

Il tuo ultimo pensiero mi ha portato alle seguenti considerazioni... Supponiamo di avere una funzione deinit() del tipo seguente:

Ho capito bene o mi sono sbagliato da qualche parte nel mio ragionamento?


Avete capito bene.

In generale, è meglio usare la riduzione dell'indice nei cicli in cui avviene la cancellazione:

int deinit()                           // Спец. функция deinit()
  {
   for(int k=ObjectsTotal()-1; k>=0; k--)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Найден объект, ..
         ObjectDelete(Obj_Name);
     }
   return;                             // Выход из deinit()
  }
 
 

Signori, usando OrderSelect(), potete facilmente trovare il prezzo di apertura di un ordine. Possiamo usare le quotazioni sul grafico per sapere se c'è un ordine ad un certo prezzo o niente a questo punto? È molto fastidioso cercare tutti gli ordini su ogni quotazione nel grafico (specialmente se ce ne sono molti) per scoprire se c'è qualcosa o no con questo prezzo. Puoi lanciarmi il codice se esiste?

 
rosomah:

Signori, usando OrderSelect(), possiamo facilmente trovare il prezzo di apertura dell'ordine. Possiamo usare le quotazioni sul grafico per sapere se c'è un ordine a un certo prezzo o niente a questo punto? È molto fastidioso cercare tutti gli ordini su ogni quotazione nel grafico (specialmente se ce ne sono molti) per scoprire se c'è qualcosa o no con questo prezzo. Puoi lanciarmi il codice se esiste?

È scomodo mettere i pantaloni sopra la testa © La gente dice.

Non sei tu che stai andando avanti, è l'algoritmo. Se siete così indigenti, potete fare tutta questa roba in un'unica funzione che vi darà i risultati di cui avete bisogno su richiesta. Ma nel corpo della funzione devi ancora scrivere il codice che cercherà le posizioni una per una.

Motivazione: