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?
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?
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)
Il compito tecnico è compreso meglio in ucraino
Non sono ancora a quel livello, la mia lingua madre è il russo :)
...ma lo capisco a livello casualeNon ho ancora quel livello, la mia prima lingua è il russo :)
Vengo dall'URSS...ho due lingue madri)
Sono dell'URSS... ho due lingue madri)
e ne abbiamo tre, ancora surzhik.
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 modoQuindi, 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.
E questo valore sl va nella formula.
Considerando che hai messo uno stop calcolato dall'indicatore ATR, è sufficiente
E questa sarà già la dimensione normalizzata del lotto.comprareprezzo di apertura
comprare stop loss
diffusione
Ora ho capito, devo solo capire quale valore devo assegnare ai prezzi di acquisto e di vendita.
In altre parole, assegno Ask al prezzo aperto di acquisto, f al prezzo aperto di vendita assegno Bid?
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?
A giudicare da questa funzione, conosci già lo stop loss... Non capisco quale sia il problema
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.
Poi ho commentato la mia normalizzazione e l'ho assegnata in questo modo
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.
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?