Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 86

 
smart_man:

Come fare in modo che i dati di tutte le variabili globali siano salvati anche dopo la chiusura del terminale in modalità normale e anormale?

La domanda riguarda le variabili dichiarate all'inizio del codice come questa:

#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern double  VAR1 = 1;

double VAR2[1000];

Ho bisogno di non perdere i valori di VAR1 e VAR2 (l'array è riempito di dati durante il funzionamento di Expert Advisor). Finora, l'unica idea è quella di scrivere dati in un file (global.txt) ad ogni tick e poi, quando il terminale viene lanciato, leggere dal file (global.txt) e ricreare le variabili e poi scriverle di nuovo ad ogni tick. Quali altre opzioni ci sono?

O al globale del terminale, o a una risorsa.
 
Arseniy Barudkin:

Grazie per l'aiuto! L'ho lasciato così per ora, ora ho deciso di cambiare un po' le condizioni in cui viene chiamata la funzione. E in generale, mi avete aiutato molto))

Hai ragione a non ottenere una risposta. Bisogna impostare il problema, altrimenti non può essere risolto.

Diamo un'occhiata ai ToR originali:

"Arseniy Barudkin2017.05.23 19:56 RU

Saluti Signori! Non voglio prenderlo per alluvione, ma non posso fare a meno di questa caratteristica. Allora ragazzi, qualcuno può aiutarmi con una funzione che passa attraverso tutti gli ordini e rimuove due ordini simultaneamente, uno con il lotto più piccolo e profitto negativo dall'esistere sul grafico, e il secondo con il lotto più grande e profitto positivo pure dall'esistere. "

Cosa vediamo nel codice che ci hai mostrato?

1. Tutti gli ordini sono stati aperti da Expert Advisor e hanno una magia unica.

2. Il profitto totale degli ordini che stiamo cercando è positivo.

3. Gli ordini sono opposti.

4. La dimensione del lotto con un profitto positivo è strettamente più grande della dimensione del lotto con uno negativo.

Dove appare questo nel TOR presentato?

Inoltre: il codice mostra che non sai come chiudere gli ordini opposti, perdendo almeno lo spread.

 
fxtz:

Domanda Posso scrivere un programma in Metatrader 4 per aprire da 2 a 250 posizioni di mia scelta con uno stoploss impostato e un profitto impostato in un clic? Così non devo aprirne manualmente uno alla volta

Se le limitazioni del vostro broker sono così forti, il linguaggio di programmazione è progettato per scrivere automaticamente degli script.
 
Mislaid:

Hai ragione a non ottenere una risposta. Bisogna impostare il problema, altrimenti non può essere risolto.

Diamo un'occhiata ai ToR originali:

"Arseniy Barudkin2017.05.23 19:56 RU

Saluti Signori! Non voglio prenderlo per alluvione, ma non posso fare a meno di questa caratteristica. Allora ragazzi, qualcuno può aiutarmi con una funzione che passa attraverso tutti gli ordini e rimuove due ordini simultaneamente, uno con il lotto più piccolo e profitto negativo dall'esistere sul grafico, e il secondo con il lotto più grande e profitto positivo pure dall'esistere. "

Cosa vediamo nel codice che ci ha mostrato?

1. Tutti gli ordini sono stati aperti da Expert Advisor e hanno una magia unica.

2. Il profitto totale degli ordini che stiamo cercando è positivo.

3. Gli ordini sono opposti.

4. La dimensione del lotto con un profitto positivo è strettamente più grande della dimensione del lotto con uno negativo.

Dove appare questo nel TOR presentato?

Inoltre: il codice mostra che non sai come chiudere gli ordini al banco, perdendo almeno lo spread.


Non sto discutendo molti difetti! Mi sto avvicinando a questo tipo di attività. Scrivo a questo thread per avere un aiuto o per far notare gli errori! Credo che questo sia il suo scopo. Ora per il codice. 1) Forse non capisco qualcosa, ma cosa c'è di sbagliato nel fatto che tutti gli ordini nell'Expert Advisor hanno un unico Magic? 2) Questa condizione e in generale tutta questa funzione è progettata per chiudere almeno due ordini opposti in caso di un forte carico di margine e non andare in rosso, il 3° e 4° punto si riferiscono alla stessa cosa. E non so davvero come chiudere correttamente gli ordini di contatore.
 
Arseniy Barudkin:

Non sto discutendo molti difetti! Ho appena iniziato a lavorare in questo settore. E sto scrivendo in questo thread per ottenere aiuto o segnalare errori! Secondo me è a questo che serve. Ora per il codice. 1) Forse non capisco qualcosa, ma cosa c'è di sbagliato nel fatto che tutti gli ordini nell'Expert Advisor hanno un unico Magic? 2) Questa condizione e in generale tutta questa funzione è progettata per chiudere almeno due ordini opposti in caso di un forte carico di margine e non andare in rosso, il 3° e 4° punto si riferiscono alla stessa cosa. Non so come chiudere correttamente gli ordini opposti.
Se tu fossi un mio studente, ti darei un "buono" per aver presentato il codice. E, se nel processo di comunicazione, potresti mostrare che sei in grado di generare idee, allora "eccellente" Dalla tua risposta, vedo che stai pensando correttamente
 

Ciao ... EA scritto in MQL4, commercia ordini di mercato Acquista, Vendi conTrailing... Deciso di aggiungere BuyStop in sospeso, SellStop ... e ho incontrato un problema inaspettato = non appena unordine pendente appare nella finestra di MT4,Trailing smette di funzionare(SL non è impostato,Modifica non c'è)... Non capisco quale sia il problema, la funzionetrailing è standard con il backtracking dalla libreria, due pp selezionate. , ... o non si tratta della funzione? Forse qualcuno ha incontrato qualcosa di simile?

int TralFunck(int Ticket)

 {   double TralPrice=0,Punkt=0;

   chk=OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);

for(Ticket=OrdersTotal()-1; Ticket>=0; Ticket--)  

  { if (OrderProfit()<=0)       continue;

    if (OrderType()==4)		 continue;

    if (OrderType()==5) 	 continue;

   if (OrderType()==0)  {   Punkt=(Bid-OrderOpenPrice())/Point;TralPrice=NormalizeDouble((Bid-Tral*D*Point),Digits);  }

   if (OrderType()==1)  {   Punkt=(OrderOpenPrice()-Ask)/Point;TralPrice=NormalizeDouble((Ask+Tral*D*Point),Digits);   }

   if (Punkt<MarketInfo(Symbol(),MODE_STOPLEVEL))       continue;

   if(Punkt<(Tral+TP)*D)        continue;

   if(OrderType()==0 && TralPrice<=NormalizeDouble(OrderStopLoss(),Digits))     continue;

   if(OrderType()==1 && TralPrice>=NormalizeDouble(OrderStopLoss(),Digits) && OrderStopLoss()!=0)       continue;

   ModifyOrder(OrderTicket(),OrderOpenPrice(),TralPrice,OrderTakeProfit());     continue;

   }   return(0);

 }


 
Yaroslav Nykula:

Ciao ... EA scritto in MQL4, commercia ordini di mercato Acquista, Vendi conTrailing... Deciso di aggiungere BuyStop in sospeso, SellStop ... e ho incontrato un problema inaspettato = non appena unordine pendente appare nella finestra di MT4,Trailing smette di funzionare(SL non è impostato,Modifica non c'è)... Non capisco quale sia il problema, la funzionetrailing è standard con il backtracking dalla libreria, sono state aggiunte due pagine selezionate. , ... o non si tratta della funzione? Forse qualcuno ha incontrato qualcosa di simile?



Sostituite return(0); con continue; per non uscire dal ciclo. Alla fine della funzione lasciatelo così com'è.

Usa il pulsante SRC nell'editor per inserire il codice

 
Victor Nikolaev:


Sostituite return(0); con continue; per non uscire dal ciclo. Alla fine della funzione, lasciatelo così com'è.

Usa il pulsante SRC nell'editor per inserire il codice


Grazie... fissato ... Prenderò in considerazione il pulsante SRC nell'editor, scusate... Ma il problema rimane lo stesso,Trailing eModify non vogliono lavorare conordini pendenti.
 
Recentemente ho iniziato a fare trading su mt4. Ho deciso di testare la mia strategia, ma nel tester della strategia non ho nessuna funzione di visualizzazione e nessun pulsante di pausa.
 
vsmutew7:
Recentemente ho iniziato a fare trading su mt4. Ho deciso di testare la mia strategia, ma il mio tester di strategia non ha una funzione di visualizzazione o un pulsante di pausa.

Probabilmente c'è bisogno di una finestra più ampia, specialmente quella con il pulsante 'Start'.

Motivazione: