//приведение размера лотов Lots_1/Lots_2 к нужному соотношению LotS1/LotS2, учитывая Lot1 и Lot2
if (LotsS1<=LotsS2) { Lots_1=Lot1; //меньший по соотношению оставляем как есть Lots_2=Lot1/LotsS1*LotsS2; //больший по соотношению нормализуем } else { Lots_2=Lot2; //меньший по соотношению оставляем как есть Lots_1=Lot2*LotsS1/LotsS2; //больший по соотношению нормализуем }
//проверяем возможность торговать
if ((Lots_1<Min_Lot1)||(Lots_2<Min_Lot2)) string lotsalert=StringConcatenate("Нет средств для торговли с Risk=",Risk,"%.\n"); else lotsalert="";
Ага... Надо нормализовать размерность лота с шагом лота по инструменту... А то лот 0,1831 не тру... Щас...
Questo blocco dovrebbe essere fatto in questo modo, e il numero di lotti sarà corretto.
//приведение размера лотов Lots_1/Lots_2 к нужному соотношению LotS1/LotS2, учитывая Lot1 и Lot2
int Step; if (LotsS1<=LotsS2) { Step = MathCeil(MathAbs(MathLog(Step2)/MathLog(10))); Lots_1=Lot1; //меньший по соотношению оставляем как есть Lots_2=NormalizeDouble((Lot1/LotsS1*LotsS2),Step); //больший по соотношению нормализуем } else { Step = MathCeil(MathAbs(MathLog(Step1)/MathLog(10))); Lots_2=Lot2; //меньший по соотношению оставляем как есть Lots_1=NormalizeDouble((Lot2*LotsS1/LotsS2),Step); //больший по соотношению нормализуем }
Vorrei chiedere a tutti coloro che sono bravi a programmare.sotto esperto, trawling profitto.qualcuno può inserire un blocco per trawl il profitto effettivo su tickers e visualizzarlo nel commento.io che non funziona.grazie in anticipo
Ага... Надо нормализовать размерность лота с шагом лота по инструменту... А то лот 0,1831 не тру... Щас...
Ciao a tutti, da tempo osservatore del ramo, per il dimensionamento del lotto suggerisco un'opzione leggermente diversa:
lot2 =
lot1 *(MarketInfo( symbol_1,MODE_TICKVALUE)/MarketInfo( symbol_2,MODE_TICKVALUE))*// отношение размеров тиков в валюте депозита( Mediana( symbol_1)/ Mediana( symbol_2))*// отношение медиан движения инструментов(MarketInfo( symbol_2,MODE_TICKSIZE)/MarketInfo( symbol_1,MODE_TICKSIZE))*// отношение размерности тиков(MarketInfo( symbol_1,MODE_TICKSIZE)*MarketInfo( symbol_1,MODE_LOTSIZE))/// стоимость пункта 1-го инструмента(MarketInfo( symbol_2,MODE_TICKSIZE)*MarketInfo( symbol_2,MODE_LOTSIZE)// стоимость пункта 2-го инструмента// Медиана - это среднее значение без экстремальных// т.е. в данном случае суммируем (хай-лоу) дневных свечек за какое-то количество дней (например 30), отбрасываем пару самых больших и самых малых значений и усредняем.// по DAX-FTSE кстати соотношение лотов получается примерно 1:2.8 :)
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Ecco la funzione di calcolo del lotto dinamico per entrambi gli strumenti, utilizzando il codice neoclassico.
Da usare negli EA. Controllate, è tutto a posto?
Il parametro Rischio è la percentuale che rischiamo.
Parametri:
extern string Symbol_1 = "6EM0";
extern string Symbol_2 = "6SM0";
extern double Risk = 10;
string lotsinfo;
double Lots_1; double Lots_2;
Codice:
void CountLots()
{
//расчет соотношения лотов по инструментам
double ynax=MarketInfo(Symbol_1, MODE_TICKVALUE)/MarketInfo(Symbol_2, MODE_TICKVALUE)*
(iOpen(Symbol_1,0,0)/MarketInfo(Symbol_1, MODE_TICKSIZE))/(iOpen(Symbol_2,0,0)/MarketInfo(Symbol_2, MODE_TICKSIZE));
double minx=0, miny=0, mindelta=9999;
for (double x=0.01; x<=1; x+=0.01)
{
for (double y=0.01; y<=1; y+=0.01)
{
double delta=MathAbs(y/x-ynax);
if (delta<mindelta)
{
minx=x;
miny=y;
mindelta=delta;
}
}
}
double LotsS1=minx;
double LotsS2=miny;
//расчет динамического лота с заданным параметром Risk
string Symb1=Symbol_1;
string Symb2=Symbol_2;
double Min_Lot1=MarketInfo(Symb1,MODE_MINLOT);// Мин. размер лота
double Min_Lot2=MarketInfo(Symb2,MODE_MINLOT);// Мин. размер лота
double Step1 =MarketInfo(Symb1,MODE_LOTSTEP);//Шаг изменен лотов
double Step2 =MarketInfo(Symb2,MODE_LOTSTEP);//Шаг изменен лотов
double Free =AccountFreeMargin(); // Свободн средства
double One_Lot1=MarketInfo(Symb1,MODE_MARGINREQUIRED);//Стоим.1 лота
double One_Lot2=MarketInfo(Symb2,MODE_MARGINREQUIRED);//Стоим.1 лота
double Lot1=MathFloor(Free*Risk/100/One_Lot1/Step1)*Step1;// Лоты
double Lot2=MathFloor(Free*Risk/100/One_Lot2/Step2)*Step2;// Лоты
//приведение размера лотов Lots_1/Lots_2 к нужному соотношению LotS1/LotS2, учитывая Lot1 и Lot2
if (LotsS1<=LotsS2)
{
Lots_1=Lot1; //меньший по соотношению оставляем как есть
Lots_2=Lot1/LotsS1*LotsS2; //больший по соотношению нормализуем
}
else
{
Lots_2=Lot2; //меньший по соотношению оставляем как есть
Lots_1=Lot2*LotsS1/LotsS2; //больший по соотношению нормализуем
}
//проверяем возможность торговать
if ((Lots_1<Min_Lot1)||(Lots_2<Min_Lot2))
string lotsalert=StringConcatenate("Нет средств для торговли с Risk=",Risk,"%.\n");
else lotsalert="";
//выводим информацию в строку
lotsinfo=StringConcatenate(lotsalert,
"Risk = ",Risk,"%. Лот ",Symbol_1," = ",Lots_1,", Лот ",Symbol_2," = ",Lots_2,".\n");
//Comment(lotsinfo);
}
Inserito. Grazie!
Sembra funzionare bene!
Вставил. Благодарю!
Вроде нормально работает!
Aha... Dovremmo normalizzare la dimensione del lotto con gli incrementi di lotto dello strumento... Perché il lotto 0.1831 non funziona... Giusto...
Ага... Надо нормализовать размерность лота с шагом лота по инструменту... А то лот 0,1831 не тру... Щас...
Questo blocco dovrebbe essere fatto in questo modo, e il numero di lotti sarà corretto.
//приведение размера лотов Lots_1/Lots_2 к нужному соотношению LotS1/LotS2, учитывая Lot1 и Lot2
int Step;
if (LotsS1<=LotsS2)
{
Step = MathCeil(MathAbs(MathLog(Step2)/MathLog(10)));
Lots_1=Lot1; //меньший по соотношению оставляем как есть
Lots_2=NormalizeDouble((Lot1/LotsS1*LotsS2),Step); //больший по соотношению нормализуем
}
else
{
Step = MathCeil(MathAbs(MathLog(Step1)/MathLog(10)));
Lots_2=Lot2; //меньший по соотношению оставляем как есть
Lots_1=NormalizeDouble((Lot2*LotsS1/LotsS2),Step); //больший по соотношению нормализуем
}
Ага... Надо нормализовать размерность лота с шагом лота по инструменту... А то лот 0,1831 не тру... Щас...
Ciao a tutti, da tempo osservatore del ramo, per il dimensionamento del lotto suggerisco un'opzione leggermente diversa:
Anche l'approccio non è male. Solo che non hai mostrato - come calcolare programmaticamente
(Mediana(simbolo_1) e Mediana(simbolo_2).
A proposito, come verrebbero calcolati i lotti in tandem GCG0+UMH0 secondo il tuo algoritmo?
Кстати, как по вашему алгоритму получились бы лоты тандема GCG0+УMH0 ?
eppure il mio vecchio metodo di sincronizzazione dei lotti è più corretto
inserire il lotto di base e due strumenti nelle impostazioni, lanciare lo script sul grafico e il gioco è fatto...
Cibo per la mente: Exchange Traded Funds (ETFs)
Potrebbe essere interessante ottenere una quota di questo fondo:
MKT VCTR RUSSIA SBI