Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1121

 
Roman:

Perché ci sono molte incongruenze con le realtà attuali.
E lei sta cercando di trovare delle scuse per queste incongruenze.
Al contrario, ho scritto che un segno di spunta non equivale a un punto!
È il tuo punto interno, inventato.
In considerazione del fatto che Point corrispondeva esattamente a un punto, quando c'erano solo quattro cifre.
Ma dopo l'introduzione della quinta cifra, avete iniziato a inventare nomi con le vostre scuse.

No, non lo è. Hai suggerito di mostrare la distanza in tick piuttosto che in punti.

Questa è una sciocchezza. La distanza è la distanza. E la dimensione del tick è il passo con cui il prezzo si muove minimamente in una volta.

Ecco perché non stai chiedendo la distanza dal punto A al punto B, ma il numero di passi che servono per spostare quella distanza.

Te lo dico io - è tutto confuso...

La vostra è una realtà un po' spietata. Non contiene la metà dei concetti accettati. C'è qualcosa che viene dalla tua testa.

 
Roman:

Probabilmente perché dovete restituire il valore di ritorno della funzione.

Grazie per la risposta, ma ancora nessuna soluzione al problema... Ho bisogno che il parametro della funzione "str" restituisca a MQL il suo stato cambiato

extern "C" __declspec(dllexport) wchar_t* __stdcall ToString(wchar_t* &str)
{
        str = L"-- Я изменил параметр str :) --"; // Вот это я хочу получить!
        return L"--- Привет! ---";
}

In MQL4 in questo momento:

#import  "Win32Project1.dll"
   string ToString(string &str);
#import

Bene e la chiamata della funzione stessa:

string str = "";
Print("-> Метод: " + ToString( str ));
Print("-> Параметр: " + str);

Il risultato è questo:

Cioè, il valore viene passato come parametro, ma non è corretto... Come posso risolvere questo problema? :)

 
Vadim Lin:

Grazie per la risposta, ma ancora nessuna soluzione al problema... Ho bisogno che il parametro della funzione "str" restituisca a MQL il suo stato cambiato

In MQL4 in questo momento:

Bene e la chiamata della funzione stessa:

Il risultato è questo:

Cioè, il valore viene passato come parametro, ma non è corretto... Come posso risolvere questo problema? :)

Il signore riposa per 24 ore per la pesca a traina.
 
Artyom Trishkin:

Se il terminale si blocca, dovrà essere riavviato. L'indicatore dovrà essere posizionato nuovamente sul grafico, oppure eseguire l'Expert Advisor, che utilizza i dati di questo indicatore (allora l'Expert Advisor caricherà questo indicatore stesso quando vi accede). In questo caso (e anche durante il normale riavvio del terminale con un caricamento automatico dei programmi installati sul grafico), l'indicatore disegnerà di nuovo tutte le sue linee - non è necessario salvare nulla. Queste linee possono essere rilette in seguito. Inoltre, devono essere letti comunque.

Affinché l'EA monitorizzi solo le linee create dall'indicatore, è sufficiente guardare i nomi delle linee create dall'indicatore e cercare di trovare la sottostringa ripetuta nei nomi - la stessa per tutte le linee. Cerca le linee necessarie per queste sottostringhe.

È semplice - basta guardare la lista degli oggetti quando l'indicatore è in esecuzione.

Stiamo divagando dall'argomento! Più si discute, più si va fuori tema! :)

L'uomo aveva solo bisogno di ottenere l'EVENTO, quando il prezzo supera la linea...

Poi, ho cominciato a speculare sul perché il mio esempio fosse "problematico"... Anche se in realtà risolve il problema, che in linea di principio è stato impostato. Dopo - l'immaginazione dell'autore, ho aiutato per quanto ho potuto))


Se è fuori tema... e sovraccaricare il terminale, le linee non andranno da nessuna parte, e c'è la possibilità che restino al loro posto. Se sono rinominati, o etichettati - si può usare la logica convenzionale per capire che queste linee sono già state innescate ad un certo punto, e dovrebbero essere ignorate. Ma non è questo il compito da svolgere)) Inoltre, supponiamo che l'indicatore ridisegni le linee, e allora? Come farete a determinare che alcuni di loro si sono già attivati?)).

Se non c'è niente sul grafico, tranne le linee che devono essere monitorate (come dice l'autore), allora non hanno nemmeno bisogno di essere filtrate per nome.

Ma naturalmente, l'idea è di non disegnare nessuna linea, ma salvare tutti i livelli in un file e controllare quali di essi hanno già funzionato. E sovraccaricate il terminale, li ricorderete senza nomi di oggetti)).

 
Roman:

Dove diavolo è la logica nei ragazzi.
Per questo è un errore grossolano, e se fatto intenzionalmente, è un diversivo))

Petya: E cos'è la logica, Vasily Ivanovich?

V.I.: Beh, è semplice, guarda, hai dei fiammiferi?

Petya: Lo faccio!

V.I.: Quindi tu fumi, e se fumi, bevi, e se bevi, esci con le ragazze, capito?

Petya: Sì, è semplice!

Petyka a un uomo dell'Armata Rossa di passaggio: hai dei fiammiferi?

Uomo dell'Armata Rossa: No.

Petya: Quindi sei un "frocio".



La LOGICA, beh, è così strana, e sotto la LOGICA, non devi regolare le tue aspettative

Se uno sviluppatore ha costruito un nuovo tipo di dati ENUM_TIMEFRAMES, ne farà ulteriore uso in altre parti del programma - questa è la logica.


SZS: Certo, si potrebbe sostenere che MT4 è stato progettato da persone che sapevano cosa fosse necessario per il trading, mentre "l'altro terminale" è stato scritto da un gruppo di alieni ..... Ma andremo oltre il formato di comunicazione di questo forum, ecco perché non dovremmo parlare di sabotaggio - usiamo quello che ci è stato dato, quello che ci manca - lo scriviamo noi stessi, grazie alle prestazioni del terminale è più che sufficiente

Come questo

 
Igor Makanu:


LOGICA, beh, è così strano, e sotto LOGICA, non devi aggiustare le tue aspettative

Se lo sviluppatore ha costruito un nuovo tipo di dati ENUM_TIMEFRAMES, significa che ha costruito un ulteriore uso di questo tipo in altre parti del programma - questa è la logica


SZS: Certo, si potrebbe sostenere che MT4 è stato progettato da persone che sapevano cosa fosse necessario per il trading, mentre "l'altro terminale" è stato scritto da un gruppo di alieni ..... Ma andremo oltre il formato di comunicazione di questo forum, ecco perché non dovremmo parlare di sabotaggio - usiamo quello che ci è stato dato, quello che ci manca - lo scriviamo noi stessi, grazie alle prestazioni del terminale è più che sufficiente

come questo

Meno male che non cercano la logica nella sintassi così spesso)))) La logica della velocità si vede nel caso dei timeframe, ma potrei sbagliarmi)

 
Igor Makanu:

Petya: E cos'è la logica, Vasily Ivanovich?

Ho sentito un'altra versione:

Anka mangia le aringhe? Poi beve acqua...

La conclusione logica è che lei... può.

 
Vadim Lin:



MA, cosa succede se l'offerta per qualche motivo ha superato la linea, e non era uguale al prezzo della linea, allora cosa...? Fornisci allora almeno una variabile, in cui il tick precedente è memorizzato, e se c'è un nuovo tick che attraversa la tua linea - allora fai qualche azione... Ma in questo caso non dimenticare di fornire "ammissibile" attraversamento, perché se il mercato si aprirà con un Gap grande, o solo un grande salto di prezzo, si aprirà su molte linee in una sola volta e probabilmente non lì dove si desidera. Se la traversata è più che accettabile, riceverete solo un messaggio...

Grazie per l'aiuto, l'azione avviene quando si impostano le linee manualmente e attraversando queste linee, ma per qualche motivo l'EA non vede le linee dell'indicatore e non esegue l'azione che ho specificato. Tutte le linee dell'indicatore hanno la seguente frase nel nome @Line (più la numerazione "week-4" che cambia) - può essere usata in qualche modo?

//+------------------------------------------------------------------+
void OnTick()
  {
//---
        iCustom(Symbol(), 0, "ITS-Level Gun", 0, 0);  
 
        for(int i = ObjectsTotal() - 1; i >=0; i--) {

// все что не горизонтальные линии - игнорируем

        if(ObjectType(ObjectName(i)) != OBJ_HLINE) continue; 

        double PriceLine = NormalizeDouble(ObjectGet(ObjectName(i), OBJPROP_PRICE1), Digits());
        
// измените условие Bid == PriceLine
        
             if(Bid == PriceLine)
             {
  {OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);}
        } 
  
  }
  }
//+------------------------------------------------------------------+
File:
 
Scritto erroneamente: il nome delle linee stesse non cambia, ma tutte hanno la frase comune@Line nel loro nome
 
Fib0 RU:
Scritto erroneamente: il nome delle linee stesse non cambia, ma tutte hanno la frase comune@Line nel loro nome
if(Bid == PriceLine)

Non andrà via.

leggere

Особенности работы с числами типа double в MQL4
Особенности работы с числами типа double в MQL4
  • www.mql5.com
При программировании на языке MQL4 у новичков порой возникают ситуации, когда результаты некоторых математических вычислений отличаются от ожидаемых. При этом программа компилируется и работает, но не так, как нужно. Они начинают разбираться в программе, находят новые "ошибки" в языке, реализации функций и т.п. В большинстве случаев последующий...