Non so nemmeno cos'altro aggiungere... Ho praticamente dato gli esempi di base. Questo è il codice. È per questo che potete chiedermi cosa c'è di poco chiaro.
Saluti! Igor un chiaro esempio di come ottenere un valore. Ho la linea Low_D1_Level che trova la barra più vicina nella storia il cui valore sarà inferiore a Low_D1_Level
Se lavoro con Structure senza array, ottengo lo stesso risultato dell'ultimo codice.
Scrivi un esempio, e se non ti dispiace una descrizione.
//+------------------------------------------------------------------+//| Dark_Level.mq4 |//| Copyright 2020, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2020, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strict
double Low_D1_Level;
struct BarData
{
datetime time; // время начала периода double open; // цена открытия double high; // наивысшая цена за период double low; // наименьшая цена за период double close; // цена закрытия long tick_volume; // тиковый объем
};
BarData Bar_data_D1[]; // обьявляем массив структуры в памяти //+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
Low_D1_Level = iLow (_Symbol,PERIOD_D1,1); // Возвращает значение минимальной цены бара D1// Bar_data_D1.low [i]; //Минимум свечи// Bar_data_D1.low [i]= iLow (_Symbol,PERIOD_D1,1);
}
One Click Close The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips. Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script. The free demo version is: ...
Se Low_D1_Level è il livello del giorno precedente, allora Min_D_Level viene cercato a partire daLow_D1_Level ed è uguale a i=1 , o mi sbaglio?
Scusa, non sono entrato nel codice, ho chiesto di assicurarmi che lo stessi facendo consapevolmente.
Puoi dirmi cosa vuoi ottenere come risultato. Qualche livello giornaliero o cosa? Guardando la prima riga, copiare costantemente un array in ArrayCopyRates e poi fare dei loop attraverso di esso non è l'opzione più economica. Si potrebbe trovare una soluzione più elegante.
Mi scuso, non ho approfondito il codice, ho chiesto di assicurarmi che lo stiate facendo consapevolmente.
Puoi dire quello che vuoi ottenere alla fine. Qualche livello giornaliero o cosa? Guardando la prima riga, copiare costantemente l'array su ArrayCopyRates e quindi scorrerlo in loop non è l'opzione più economica. Puoi trovare una soluzione più elegante.
Sono in borsa da più di 5 anni, e al momento vivo completamente ( lo fai consapevolmente ). Un anno fa, quando la comprensione del trading in borsa era già più o meno rafforzata,
Si è deciso di automatizzare le proprie conoscenze nel mestiere, di voler fare un buon fai da te.
Questo è il modo in cui MQL4 mi è venuto consapevolmente, al momento l'EA ha oltre 6000 linee.
ecco un codice di esempio per il calcolo del lotto 1 anno fa.
// Примитивно но работало //+-------------------------------------------------------------------------+// Функция расчета лота от прибыли + +//+-------------------------------------------------------------------------+// double Lots; //string lots; double FloatingLots()
{
double Lots1= 1200 ,Lots2= 2200 ,Lots3= 3200 ,Lots4= 4200 ,Lots5= 5200 ,Lots6= 6200 ,Lots7= 7200 ,Lots8= 8200 ,Lots9= 9200 ,Lots10= 10200 ;
if (AccountBalance()<=Lots1){Lots= 0.1 ;}
if (AccountBalance()>=Lots1 && AccountBalance()<=Lots2){Lots= 0.2 ;}
if (AccountBalance()>=Lots2 && AccountBalance()<=Lots3){Lots= 0.3 ;}
if (AccountBalance()>=Lots3 && AccountBalance()<=Lots4){Lots= 0.4 ;}
if (AccountBalance()>=Lots4 && AccountBalance()<=Lots5){Lots= 0.5 ;}
if (AccountBalance()>=Lots5 && AccountBalance()<=Lots6){Lots= 0.6 ;}
if (AccountBalance()>=Lots6 && AccountBalance()<=Lots7){Lots= 0.7 ;}
if (AccountBalance()>=Lots7 && AccountBalance()<=Lots8){Lots= 0.8 ;}
if (AccountBalance()>=Lots8 && AccountBalance()<=Lots9){Lots= 0.9 ;}
if (AccountBalance()>=Lots9){Lots= 1 ;}
return (Lots);
}
Ed ecco la stessa funzione dopo sei mesi
//+-------------------------------------------------------------------------+// Функция расчета лота от прибыли V 1.1 +//+-------------------------------------------------------------------------+//double Lots; // переменная для расчёта лота и вывода в кнопке double FloatingLots()
{
double S_lots = 0.1 ;
double i;
for ( i = 1000 ; i <= AccountBalance();i+= 1000 )
{
if (i > (AccountBalance())- 1000 )
{
Lots = S_lots; break ;
}
else S_lots+= 0.1 ;
}
return (S_lots);
Ecco il motivo per creare questo thread.
Ho notato puramente per caso e visivamente quando ho iniziato a eseguire il consulente per lunghi periodi, se la seconda condizione è stata rimossa nel ciclo, si è verificato un errore (fuori dall'array) e la seconda condizione ha semplicemente mascherato l'errore effettivo.
Ecco la funzione che deve essere sottoposta a debug ed è tempo di studiare Strutture, Classi.
Non giudicare rigorosamente per la scrittura del codice -:)
Mi stai chiedendo perché non funziona, e sto cercando di ottenere il succo a parole, perché potrebbe esserci una soluzione migliore al tuo problema, che è quello che sto cercando di scoprire.
Tu mi chiedi perché non funziona, e io cerco di cogliere il succo a parole, perché potrebbe esserci una soluzione migliore al tuo problema, che è quello che sto cercando di scoprire.
Sì, è così che funziona la percezione umana. Anch'io, quando sono davvero appassionato di un'idea, riesco a malapena a sentire gli argomenti dell'altra persona. Oh, bene...
C'è un livelloLow_D1_Level , allora abbiamo bisogno di ottenere il valore del prossimo livello Min_D_Level, che sarà il prossimo più basso nella storia e sarà inferiore a Low_D1_Level.
Non so come spiegare ulteriormente. Se si esegue il codice nel tester con la visualizzazione secondo me tutto è visibile.
E in generale, se venite al post, siate così gentili da leggere almeno l'essenza.
Questo è completamente fuori tema:
Qual è il "problema XY"?
È un errore che spesso fa perdere tempo sia alla persona che chiede aiuto sia a chi cerca di rispondere. È anche chiamato il "problema del martello". In breve, le persone tendono a chiedere dei loro tentativi falliti di risolvere il problema, piuttosto che del problema stesso. Finisce per fare qualcosa del genere:
Una persona vuole fare X.
Non sa come fare X, ma intuisce che fare Y può portare al successo.
Tuttavia, la persona non sa nemmeno come fare Y.
A questo punto decide di chiedere aiuto ad altre persone.
Tutti cercano di aiutare la persona con il problema Y, meravigliandosi perché non è chiaro perché qualcuno dovrebbe avere bisogno di una cosa del genere.
Dopo un sacco di domande e un sacco di tempo sprecato, diventa finalmente chiaro che la persona voleva davvero risolvere X, e che Y non può aiutarlo affatto.
Non so nemmeno cos'altro aggiungere... Ho praticamente dato gli esempi di base. Questo è il codice. È per questo che potete chiedermi cosa c'è di poco chiaro.
Saluti! Igor un chiaro esempio di come ottenere un valore. Ho la linea Low_D1_Level che trova la barra più vicina nella storia il cui valore sarà inferiore a Low_D1_Level
Se lavoro con Structure senza array, ottengo lo stesso risultato dell'ultimo codice.
Scrivi un esempio, e se non ti dispiace una descrizione.
Se Low_D1_Level è il livello del giorno precedente, allora Min_D_Level viene cercato a partire daLow_D1_Level ed è uguale a i=1 , o mi sbaglio?
Scusa, non sono entrato nel codice, ho chiesto di assicurarmi che lo stessi facendo consapevolmente.
Puoi dirmi cosa vuoi ottenere come risultato. Qualche livello giornaliero o cosa? Guardando la prima riga, copiare costantemente un array in ArrayCopyRates e poi fare dei loop attraverso di esso non è l'opzione più economica. Si potrebbe trovare una soluzione più elegante.
Mi scuso, non ho approfondito il codice, ho chiesto di assicurarmi che lo stiate facendo consapevolmente.
Puoi dire quello che vuoi ottenere alla fine. Qualche livello giornaliero o cosa? Guardando la prima riga, copiare costantemente l'array su ArrayCopyRates e quindi scorrerlo in loop non è l'opzione più economica. Puoi trovare una soluzione più elegante.
Sono in borsa da più di 5 anni, e al momento vivo completamente ( lo fai consapevolmente ). Un anno fa, quando la comprensione del trading in borsa era già più o meno rafforzata,
Si è deciso di automatizzare le proprie conoscenze nel mestiere, di voler fare un buon fai da te.
Questo è il modo in cui MQL4 mi è venuto consapevolmente, al momento l'EA ha oltre 6000 linee.
ecco un codice di esempio per il calcolo del lotto 1 anno fa.
Ed ecco la stessa funzione dopo sei mesi
Ecco il motivo per creare questo thread.
Ho notato puramente per caso e visivamente quando ho iniziato a eseguire il consulente per lunghi periodi, se la seconda condizione è stata rimossa nel ciclo, si è verificato un errore (fuori dall'array) e la seconda condizione ha semplicemente mascherato l'errore effettivo.
Ecco la funzione che deve essere sottoposta a debug ed è tempo di studiare Strutture, Classi.
Non giudicare rigorosamente per la scrittura del codice -:)
Ecco la funzione di debug.
OK, e puoi dirmi con cosa vuoi finire?
Ok, puoi dirmi con cosa vuoi finire?
Ecco la versione ridotta eseguita su AUDUSD 2020
Perché non va oltre nell'array?
Mi stai chiedendo perché non funziona, e sto cercando di ottenere il succo a parole, perché potrebbe esserci una soluzione migliore al tuo problema, che è quello che sto cercando di scoprire.
Spiegate cosa state cercando di ottenere.Tu mi chiedi perché non funziona, e io cerco di cogliere il succo a parole, perché potrebbe esserci una soluzione migliore al tuo problema, che è quello che sto cercando di scoprire.
Spiega cosa vuoi ottenere.Finora vedo _so_
Finora vedo _questo_.
Sì, è così che funziona la percezione umana. Anch'io, quando sono davvero appassionato di un'idea, riesco a malapena a sentire gli argomenti dell'altra persona. Oh, bene...
Finora vedo _ così_.
C'è un livelloLow_D1_Level , allora abbiamo bisogno di ottenere il valore del prossimo livello Min_D_Level, che sarà il prossimo più basso nella storia e sarà inferiore a Low_D1_Level.
Non so come spiegare ulteriormente. Se si esegue il codice nel tester con la visualizzazione secondo me tutto è visibile.
E in generale, se venite al post, siate così gentili da leggere almeno l'essenza.
Questo è completamente fuori tema:
Qual è il "problema XY"?
È un errore che spesso fa perdere tempo sia alla persona che chiede aiuto sia a chi cerca di rispondere. È anche chiamato il "problema del martello". In breve, le persone tendono a chiedere dei loro tentativi falliti di risolvere il problema, piuttosto che del problema stesso. Finisce per fare qualcosa del genere:
Finora vedo _così_.
Quindi immagino che tu non abbia ancora trovato le tue X e Y !!!