[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 123

 
Grazie per il tuo aiuto, ho sostituitoOrdersTotal() conOrdersHistoryTotal().Ha funzionato.
 

Per coloro che capiscono mql4 più di me, per favore aiutatemi. Ci sono 3 domande.

1.Primo sulla doppia costante. Abbiamo tutti conosciuto iMa, maschere, media mobile/ La domanda è: Mappatura errata dei valori.

Esempio:

extern string  MA1="";
extern string  MA2="";
extern string  MA3="";
string com;


double MA1 = iMA(NULL,PERIOD_M15,9,0,0,0);
double MA2 = iMA(NULL,PERIOD_M15,15,0,0,0);
double MA3 = iMA(NULL,PERIOD_M15,21,0,0,0);

if (MA1>MA2 && MA1!=MA2 && MA1>MA3 && MA1!=MA3 ) com="значение1";
if (MA1<MA2 && MA1==MA2 && MA1<MA3 && MA3!=MA3 ) com="значение2";

Quindi il valore sarà sempre = valore1. Il codice si rifiuta ostinatamente di capire != (non uguale)

2. Domanda /Apertura Ricerca Chiusura/.

Quello che voglio dal programma ma non funziona.

1.Controllare la condizione (vero; falso)

2. Se c'è un ordine del genere, non lo apriamo; se non c'è un ordine, lo apriamo. Secondo la condizioneOrderComment()

3. Controllo Se si verifica l'evento X o Y , chiudilo. X-(per esempio un altro segnale iMA1>iMA2, Y-un altro segnale iMA2>iMA3)

È così che faccio, ma non viene fuori niente.

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)
{
   for (int i=1;i<=OrdersTotal(); i++)       
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);
            else
            {
            OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);
            }
           }
       } 
}

E come chiudere non capisco dove inserire.

3. Domanda sull'offset (int shift)

Nel secondo gruppo di iMA, sposto la relativa barra corrente indietro di 3) Che cosa per, in modo che quando un segnale descritto sopra, non aprire ordini ripetuti su ogni barra. Ma lo spostamento non avviene per qualche motivo.

double MA1 = iMA(NULL,PERIOD_M15,9,0,0,0);
double MA2 = iMA(NULL,PERIOD_M15,15,0,0,0);
double MA3 = iMA(NULL,PERIOD_M15,21,0,0,0);

double MA4 = iMA(NULL,PERIOD_M15,9,0,0,3);
double MA5 = iMA(NULL,PERIOD_M15,15,0,0,3);
double MA6 = iMA(NULL,PERIOD_M15,21,0,0,3);

Per favore, aiutatemi con la conoscenza. Non so come usarlo. Non so dove in Internet ci sia un'implementazione simile.

 
dertop:

Per coloro che capiscono mql4 più di me, per favore aiutatemi. Ci sono 3 domande.

1.Primo per doppio costante.

2. come chiudere non capisco affatto dove mettere.

3. Domanda sull'offset (int shift)

1. https://www.mql5.com/ru/articles/1561

2. se (condizioni di chiusura) OrderClose(...)

3. Vedere cos'è esattamente questo cambiamento e chi lo sposta
 
ilunga:

1. https://www.mql5.com/ru/articles/1561

2. se (condizioni di chiusura) OrderClose(...)

3. Vedi cos'è esattamente questo cambiamento e chi lo sposta


Grazie mille per una risposta così rapida.

Circa 1. Sì, ho capito, scaveremo lì.

Il 2.se (condizioni di chiusura) OrderClose(...) (è chiaro senza) Ma mi sono confuso in if, what per where dove e why....

Correggere se sbagliato....

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)                                         // если true то заходим в тело цикла...
{
   for (int i=1;i<=OrdersTotal(); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);                                            // если орден найден то ничего не делаем
            else
            {
            OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);   // а вот тут проблемы кто за чем идёт и куда вставить условие закрытие отдельно за телом всего условия (ma1;ma2 и тд), или там где OrderSelect()
            }
           }
       } 
}

L'indice del valore ottenuto dal buffer dell'indicatore (spostamento relativo alla barra corrente del numero specificato di periodi indietro). da mql4 help

 
dertop:


Grazie mille per una risposta così rapida.

Per 2.se (condizioni di chiusura) OrderClose(...) (questo è comprensibile senza) Ma sono confuso in if, what per where dove e why....

Correggere se sbagliato....


if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)                                         // если true то заходим в тело цикла...
{
   for (int i=1;i<=OrdersTotal(); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);                                            // если орден найден то ничего не делаем
            else
            {
            OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);   // а вот тут пока написано следующее: для каждого из ордеров у которого мы сюда зашли мы поставим еще один ордер
            }
           }
       } 
}
 
ilunga:

Scusa, perché controllare le disuguaglianze quando la condizione è già data! Questo rallenta la lettura delle condizioni e il loro adempimento!

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)//MA1!=MA2 && и && MA2!=MA3 не нужны, т.к. в предыдущих сравнениях
                                                          //равенство ухе исключено! Так что нужно так:
if (MA1>MA2 && MA1<MA3 && MA2>MA3)
 
borilunad:

Scusa, perché controllare le disuguaglianze quando la condizione è già data! Questo rallenta la lettura delle condizioni e il loro adempimento!


C'è qualcosa di strano qui.

if (MA1>MA2 && MA1<MA3 && MA2>MA3)

MA1>MA2 e MA2>MA3 e poi MA1<MA3

Soprattutto perché è sufficiente

if (MA1>MA2 && MA2>MA3)
 
borilunad:

Scusa, perché controllare le disuguaglianze quando la condizione è già data! Questo rallenta la lettura delle condizioni e il loro adempimento!


Mi dispiace, mi sono perso un po', all'inizio non ci ho fatto caso. Questi calcoli sono fatti per 4 MA, e ci sono casi in cui MA1>MA2 e al momento MA3=MA4 (quindi il controllo è necessario perché è così che la strategia è costruita)

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2<MA3 && MA2!=MA3 && MA3<MA4 && MA3!=MA4)                                         // если true то заходим в тело цикла...
{
   for (int i=1;i<=OrdersTotal(); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);                                            // если орден найден то ничего не делаем
                else
                {
                if (OrderComment()!="значение1")                                                         // если такого ордера нету
                   {
                   OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);   // тогда открываем
                   }
                }
         if (MA1<MA2 && MA1!=MA2 && MA1>MA3 && MA1!=MA3 && MA3>MA4 && MA3!=MA4)                          // если true новый сигнал
             {
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,CLR_NONE);               // тогда закрываем
             }

           }
       } 
}

Come questo?????

 
Vinin:


C'è qualcosa di strano qui.

MA1>MA2 e MA2>MA3 e poi MA1<MA3


Sì, scusa, mi sono confuso, è la prima volta che scrivo sul forum. Prima ho copiato, poi ho deciso di scrivere a mano e mi sono confuso... ma l'esempio sopra è corretto...

MA1>MA2 e MA1<MA3 e MA3<MA4

 

Buon pomeriggio.

Per favore aiutatemi a modificare l'indicatore.

Ho un Pivot standard, vorrei avere un indicatore che calcola i livelli usando formule standard, ma usando i dati H, L, C che inserisco io stesso.

Voglio usarlo come indicatore per i miei indicatori.

Motivazione: