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

 
Aleksei Stepanenko:
Scusa, mi sono fatto prendere dalla conversazione qui, non ci ho fatto caso...

Un tema comune, e i tuoi codici sono sempre interessanti...

ha preso molto per me)

 
Iurii Tokman:
MakarFX:

.

 
Iurii Tokman:

Il compito tecnico è compreso meglio in ucraino

Non sono ancora a quel livello, la mia lingua madre è il russo :)

...ma lo capisco a livello casuale
 
Aleksei Stepanenko:

Non ho ancora quel livello, la mia prima lingua è il russo :)

Sono dell'URSS... ho due lingue madri)
 
MakarFX:
Vengo dall'URSS...ho due lingue madri)
.
 
MakarFX:
Sono dell'URSS... ho due lingue madri)

e ne abbiamo tre, ancora surzhik.

 
DanilaMactep:

Non sono molto bravo in matematica - come faccio a calcolare la distanza dall'ordine aperto allo stop nel codice, così posso sostituire sl con questo?

Anormalizzato il valore del lotto in questo modo

Quindi, resta da capire come calcolare la distanza dalla posizione aperta allo stop nel codice?

Il valore assoluto della differenza tra il prezzo aperto e il prezzo di stop deve essere diviso per il passo di prezzo.

  int sl = fabs(OrderOpenPrice()-OrderStopLoss())/_Point;

E questo valore sl va nella formula.

Considerando che hai messo uno stop calcolato dall'indicatore ATR, è sufficiente

double lot =MathFloor((Free*MaxRisk/100)/(sl/_Point*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА
E questa sarà già la dimensione normalizzata del lotto.
 
MakarFX:

comprareprezzo di apertura

comprare stop loss

diffusione

Ora ho capito, devo solo capire quale valore devo assegnare ai prezzi di acquisto e di vendita.

OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,"ДИВЕРГЕНЦИЯ НА БАЙ АО"); // ОТКРЫВАЕМ БАЙ ОРДЕР

OrderSend(Symbol(),OP_SELL,lot,Bid,slippages,Ask+sl,Ask-tp ,"ДИВЕРГЕНЦИЯ НА СЕЛ АО"); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР

In altre parole, assegno Ask al prezzo aperto di acquisto, f al prezzo aperto di vendita assegno Bid?

 
DanilaMactep:

Nel codice, apro un ordine nel modo seguente.

Vuoi dire che assegno la variabile Ask al prezzo aperto di acquisto e Bid al prezzo aperto di vendita?

OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,"ДИВЕРГЕНЦИЯ НА БАЙ АО"); // ОТКРЫВАЕМ БАЙ ОРДЕР

A giudicare da questa funzione, conosci già lo stop loss... Non capisco quale sia il problema

 
Alexey Viktorov:

Dividi il valore assoluto della differenza tra il prezzo aperto e il prezzo di stop per il passo di prezzo.

e questo valore sl andrà nella formula.

Considerando che hai messo uno stop calcolato dall'indicatore ATR, è sufficiente

E questa sarebbe la dimensione normalizzata del lotto.

L'ho fatto per codice come mi avete consigliato. All'inizio del codice ho la condizione per scegliere il tipo di stop - atp o fisso.

if(tip_sl==en_po_atr)
     { //ЕСЛИ ТИП СТОП ЛОССА СТОИТ ПО АТР ТО ВЫСЧИТЫВАЕМ ЕГО ИЗ АТР
     //Print("СТОП ПО АТР, ЕГО РАЗМЕР ");
     sl= iATR( NULL,PeriodForWork_sl,atr_sl_period,1);// ПОЛУЧЕНИЕ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      Print("СТОП ПО АТР, ЕГО РАЗМЕР "+sl);
     }
     else //ИНАЧЕ- ТО ЕСТЬ ЕСЛИ СТОП ЛОСС ФИКСИРОВАННЫЙ В ПУНКТАХ
     {
     Print("СТОП ЛОС ФИКСИРОВАННЫЙ В ПУНКТАХ");
     sl= razmer_fikc_sl*Point; // ПЕЕРМЕННОЙ СТОП ЛОССА ПРИСВАЕВАЕМ ФИКСИРОВАНОНЕ ЗНАЧЕНИЕ ПУНКТОВ И ДОМНОЖАЕМ НА ПОИНТ
     }

Poi ho commentato la mia normalizzazione e l'ho assegnata in questo modo

     sl = fabs(OrderOpenPrice()-OrderStopLoss())/_Point;// ПРИСВОИЛ ЗНАЧЕНИЕ КАК СОВЕТОВАЛИ
     //sl= NormalizeDouble(sl,Digits());// НОРМАЛИЗАЦИЯ ЗНАЧЕНИЯ СТОП ЛОССА ДЛЯ ОТКРЫТИЯ СДЕЛКИ ТО  ЧТО БЫЛО ЗАКОМЕНТИРОВАЛ

Il calcolo del profitto è il prossimo nel codice. Nessun problema lì e dopo aver calcolato il profitto ho aggiunto la formula spaventosa che mi è stata consigliata.

double lot =MathFloor((Free*MaxRisk/100)/(sl/Point*LotVal)/Step)*Step; //СТРАШНАЯ ФОРМУЛА РАСЧЁТА ОБЪЁМА ЛОТА КОТОРУЮ МНЕ СОВЕТОВАЛИ

Tutto è stato compilato senza errori. Ma quando ho eseguito il test l'errore appare nel log, è la divisione per zero per quanto ho capito e il test si ferma. Dove ho sbagliato o cosa non ho fatto bene?

ERRORE ALL'INIZIO DEL TEST

Motivazione: