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

 
VIREDS #:
Buon tempo a tutti gli utenti di mql4. Abbiamo una funzione che chiude la parte dell'ordine perdente più lontano in una serie per punti percentuali a scapito delle posizioni redditizie in qualsiasi direzione. Abbiamo bisogno di aiuto per finalizzare questa funzione! Vale a dire, abbiamo bisogno di chiudere parzialmente tutti gli ordini rimanenti nella serie (a causa di posizioni redditizie di qualsiasi direzione) invece di quello più lungo. Grazie in anticipo!
Ho lottatocon questa funzione per circa 2 mesi. Ci sono così tante sfumature. Specialmente questa linea
 ProfitPer=OrderProfit()+OrderCommission()+OrderSwap();//ПРОФИТ ОДНОГО ОРДЕРА

Quando ci sono molti ordini nella griglia, dà una perdita totale quando si chiude, anche se dovrebbe chiuderli tutti a zero. Ho finito per rimuovere del tutto le commissioni e gli swap

double spreadLoss =(MarketInfo(_Symbol,MODE_TICKVALUE)* MarketInfo(_Symbol,MODE_SPREAD));
 
E poi nella funzione si può moltiplicare per lotto/lotto per ogni ordine, ma ho appena fatto un moltiplicatore
 
E prima di OrderClose() hanno dimenticato (!)
 
Buon pomeriggio. Potreste consigliarmi come pagare i servizi MQL4 a causa della situazione attuale?
 

Buon pomeriggio a tutti. Ho un indicatore che disegna una freccia sul grafico quando appare un segnale. Si scopre che tutte queste frecce sono posizionate sulla storia sul grafico e si può valutare il potenziale dei segnali.

grafico con frecce indicatrici.

Ho provato ad allegare un avviso che segnalasse il verificarsi di un segnale. Ho trovato una funzione nell'indicatore che disegna delle frecce quando appare un segnale.

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }

}


Ho aggiunto una linea alla fine di questa funzione per generare l'avviso. Ho evidenziato la linea aggiunta con il colore ;-)

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol());
}

L'allarme funziona e tutto è normale nel tester. Ma quando avvio il terminale e se c'è un indicatore sul grafico, emette tanti bip e messaggi quante erano le frecce sullo storicoJ Cosa devo fare e come posso fare in modo che Alert sia dato solo quando l'ultimo segnale è ricevuto quando il terminale è acceso, e le frecce sullo storico sono silenziose?
 
DanilaMactep #:

Buon pomeriggio a tutti. Ho un indicatore che disegna una freccia sul grafico quando appare un segnale. Si scopre che tutte queste frecce sono posizionate sulla storia sul grafico e si può valutare il potenziale dei segnali.

Ho provato ad allegare un avviso che segnalasse il verificarsi di un segnale. Ho trovato una funzione nell'indicatore che disegna delle frecce quando appare un segnale.


Ho aggiunto una linea alla fine di questa funzione per generare l'avviso. Ho evidenziato la linea aggiunta con il colore ;-)

L'allarme funziona e tutto è normale nel tester. Ma quando avvio il terminale e se c'è un indicatore sul grafico genera tanti segnali audio e messaggi quante erano le frecce sullo storicoJ Cosa devo fare e come posso fare Alert solo all'ultimo segnale quando il terminale è acceso, e le frecce sullo storico erano silenziose?
Per avvisare solo sulla prima barra o sullo zero.
 

Colleghi - questione organizzativa:

Lo spazio libero sul disco C del mio computer, dove provo e ottimizzo le esposizioni su MT4 e MT 5 è diventato scarso... come su 220 GB lasciati sul mio computer...

Ho il sospetto che lo spazio sia occupato dai log dei robot che hanno lavorato in precedenza o sono stati testati, così come la storia dei diversi simboli su diversi terminali e MT4 e MT5 - sono interessato:

Come si può cancellare la cronologia dei simboli (tick per simbolo) e i log nelle diverse cartelle in cui si trovano i terminali (non molti in totale circa 5).

Un po' come prima su MT 4 c'era un file magico clear.bat.

In generale, è necessario disporre di opzioni per liberare lo spazio sotto la storia dei personaggi (i loro tick) e i log in diverse cartelle. Tutti i collegamenti sul desktop sono per MT4 e MT5. Un po' come.

in generale per liberare spazio sul disco dai test passati (cronologia dei tick dei simboli) e dalle compravendite (i loro registri).

Almeno dove leggere come pulire e quali cartelle cancellare e MT4 e MT5 - dove si trovano...

Sps.

 

Puoi darmi un suggerimento?

L'Expert Advisor via iCustom usa un indicatore, ma ad ogni tick ci sono questi errori nel log.

Si può aggiustare senza modificare l'indicatore, e se sì, come?

 
ALEKSANDR SOKOLOV ogni tick ci sono questi errori nel log.

Si può aggiustare senza modificare l'indicatore, e se sì, come?

Se l'indicatore, eseguito separatamente dall'Expert Advisor, non produce tali record, allora controllate se i parametri dell'indicatore sono specificati correttamente quando iCustom() viene chiamato nell'Expert Advisor.

 
Roman Shiredchenko cartelle in cui si trovano i terminali (non molti in totale circa 5).

Un po' come prima su MT 4 c'era un file magico clear.bat.

In generale, è necessario disporre di opzioni per liberare lo spazio sotto la storia dei personaggi (i loro tick) e i log in diverse cartelle. Tutti i collegamenti sul desktop sono per MT4 e MT5. Un po' come.

in generale per liberare spazio sul disco dai test passati (cronologia dei tick dei simboli) e dalle compravendite (i loro registri).

Almeno dove leggere come pulire e quali cartelle cancellare e MT4 e MT5 - dove si trovano...

Grazie.

Quanti anni ha il computer e quando sono stati puliti i registri di sistema nelle cartelle locali, nelle cartelle temporanee e nelle cartelle di servizio intel o di altri produttori. Su un computer vecchio di 10 anni con solo un browser e un ufficio, ci sono voluti quasi 100 giga con il sikliner da sotto l'amministrazione. Nella mia cartella Intel ho trovato 25gb.

Zecche nella cartella delle storie. Anche lì per esempio da binans tutti i caratteri era 25 gb. E i registri nella cartella condivisa e mcl controllare. Se si abbattono i tronchi, non influisce su nulla. Ma se togliete le zecche, potreste dover aspettare che vengano caricate quelle giuste.